{"items":[{"type":"link","label":"Device keys","link":"/openapi/user/device-key.openapi","routeSlug":"/openapi/user/device-key.openapi","content":{"contentType":"overview","meta":{"name":"Device keys"},"children":[{"nodeType":"container","panels":[{"title":"Download OpenAPI description","titleTranslationKey":"download.description.title","children":[{"kind":"download","label":"device-key.openapi.json","url":"/_bundle/openapi/user/device-key.openapi.json?download"},{"kind":"download","label":"device-key.openapi.yaml","url":"/_bundle/openapi/user/device-key.openapi.yaml?download"}]},{"title":"Overview","titleTranslationKey":"info.title","children":[]},{"title":"Languages","titleTranslationKey":"languages.title","children":[{"kind":"languages","options":[{"key":"curl","title":"cURL","lang":"curl"},{"key":"node","title":"Node.js","lang":"Node.js"},{"key":"go","title":"Go","lang":"Go"},{"key":"javascript","title":"JavaScript","lang":"JavaScript"},{"key":"java","title":"Java","lang":"Java"},{"key":"python","title":"Python","lang":"Python"}]}]},{"title":"Servers","titleTranslationKey":"servers.title","children":[{"kind":"servers","servers":[{"url":"https://api.sbx.transmitsecurity.io/cis","description":"Sandbox environment"},{"url":"https://api.transmitsecurity.io/cis","description":"US production environment"},{"url":"https://api.eu.transmitsecurity.io/cis","description":"EU production environment"},{"url":"https://api.ca.transmitsecurity.io/cis","description":"CA production environment"},{"url":"https://api.au.transmitsecurity.io/cis","description":"AU production environment"},{"url":"https://api.gasne1-ts01.transmitsecurity.io/cis","description":"JP production environment"}],"mode":"default"}]}],"children":[{"nodeType":"overview-section-wrapper","children":[{"nodeType":"header","level":1,"label":"Device keys","showPageActions":true},{"nodeType":"overview-section-wrapper","children":[{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Device keys"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" are used to cryptographically bind devices to a user for strong device identification. This allows the device to act as a user-identifying factor, and allows elevating trust for known devices. "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","inline":true,"attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","inline":true,"attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" These APIs are used to manage and verify bound devices for a user and application. The device may correspond to either a browser (for web apps) or a mobile device (for mobile apps)."},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","inline":true,"attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","inline":true,"attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Device binding relies on a cryptographic key-pair generated by the device. The private key is securely stored on the device (typically protected by biometrics or a PIN), while the public key is stored by Transmit for a given user. When needed, the device uses the private key to sign a challenge that Transmit verifies using the public key."},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","inline":true,"attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","inline":true,"attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Note: This feature requires the client to implement the relevant cryptography APIs exposed by the browser or mobile platform (Android or iOS)."},"children":[]}]}]}]}]}],"sectionId":"/openapi/user/device-key.openapi"}],"sectionId":"/openapi/user/device-key.openapi"}]}]}},{"label":"Add device key","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/user/device-key.openapi/other/createdevicekeys","routeSlug":"/openapi/user/device-key.openapi/other/createdevicekeys","metadata":{"seo":{"title":"Add device key","description":"Registers a device key in the platform for a specific user and app. Device keys are generated by the client using the relevant cryptography APIs exposed by the browser or mobile platform (Android or iOS). Once registered, the device key cryptographically binds the device to the given user for secure device identification. Note: The key should be generated using the RSA-PSS algorithm and SHA-256 hash. Required permissions: apps:create, [appId]:create, devices:create."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"createDeviceKeys","name":"Add device key","isWebhook":false,"pointer":"/paths/~1v1~1users~1{user_id}~1device-keys/post","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Add device key","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Registers a device key in the platform for a specific user and app. Device keys are generated by the client using the relevant cryptography APIs exposed by the browser or mobile platform (Android or iOS). Once registered, the device key cryptographically binds the device to the given user for secure device identification. "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","inline":true,"attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","inline":true,"attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Note:"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" The key should be generated using the RSA-PSS algorithm and SHA-256 hash. "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","inline":true,"attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","inline":true,"attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Required permissions"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":": "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"apps:create"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"[appId]:create"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"devices:create"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"ClientAccessToken","scopes":[],"type":"oauth2","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A token generated by an end-user application using the "},"children":[]},{"$$mdtype":"Node","type":"link","inline":true,"attributes":{"href":"/openapi/token.openapi/other/getaccesstoken"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"token endpoint"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". It provides access to resources and data on the tenant level or associated with the specific application (but not other apps in the tenant)"},"children":[]}]}]}],"flows":{"clientCredentials":{"tokenUrl":"/oidc/token","scopes":{}}}}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"user_id","in":"path","schemaId":"schema_375","description":"ID of the user","required":true}],"pointer":"/paths/~1v1~1users~1{user_id}~1device-keys/post/parameters"},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/ApiDeviceKeyCreationInputDto"}},"schemaId":"components/schemas/ApiDeviceKeyCreationInputDto","pointer":"/paths/~1v1~1users~1{user_id}~1device-keys/post/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/v1/users/{user_id}/device-keys","servers":[{"url":"https://api.sbx.transmitsecurity.io/cis","description":"Sandbox environment"},{"url":"https://api.transmitsecurity.io/cis","description":"US production environment"},{"url":"https://api.eu.transmitsecurity.io/cis","description":"EU production environment"},{"url":"https://api.ca.transmitsecurity.io/cis","description":"CA production environment"},{"url":"https://api.au.transmitsecurity.io/cis","description":"AU production environment"},{"url":"https://api.gasne1-ts01.transmitsecurity.io/cis","description":"JP production environment"}],"parameters":{"path":[{"name":"user_id","in":"path","required":true,"schemaId":"schema_375"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"ClientAccessToken","type":"oauth2","flows":{"clientCredentials":{"tokenUrl":"/oidc/token","scopes":{}}}}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"components/schemas/ApiDeviceKeyCreationInputDto"}},"responseCodes":["201"],"pointer":"/v1/users/{user_id}/device-keys","href":"other/createdevicekeys","openApiOperationId":"createDeviceKeys","summary":"Add device key"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"https://api.sbx.transmitsecurity.io/cis","description":"Sandbox environment"},{"url":"https://api.transmitsecurity.io/cis","description":"US production environment"},{"url":"https://api.eu.transmitsecurity.io/cis","description":"EU production environment"},{"url":"https://api.ca.transmitsecurity.io/cis","description":"CA production environment"},{"url":"https://api.au.transmitsecurity.io/cis","description":"AU production environment"},{"url":"https://api.gasne1-ts01.transmitsecurity.io/cis","description":"JP production environment"}],"schemaId":"components/schemas/ApiDeviceKeyCreationInputDto","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/ApiDeviceKeyCreationInputDto"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"201","description":"Device key added"}],"pointer":"/paths/~1v1~1users~1{user_id}~1device-keys/post/responses"}],"panels":[]}]},"httpPath":"/v1/users/{user_id}/device-keys"},{"label":"Get all device keys","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/user/device-key.openapi/other/getdevicekeysforuser","routeSlug":"/openapi/user/device-key.openapi/other/getdevicekeysforuser","metadata":{"seo":{"title":"Get all device keys","description":"Retrieves all the device keys registered for a specific user. This can be used to display a list of the user's devices. Required permissions: apps:read, [appId]:read, devices:read, apps:list, [appId]:list, devices:list."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"getDeviceKeysForUser","name":"Get all device keys","isWebhook":false,"pointer":"/paths/~1v1~1users~1{user_id}~1device-keys/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get all device keys","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Retrieves all the device keys registered for a specific user. This can be used to display a list of the user's devices. "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","inline":true,"attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","inline":true,"attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Required permissions"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":": "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"apps:read"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"[appId]:read"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"devices:read"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"apps:list"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"[appId]:list"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"devices:list"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"ClientAccessToken","scopes":[],"type":"oauth2","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A token generated by an end-user application using the "},"children":[]},{"$$mdtype":"Node","type":"link","inline":true,"attributes":{"href":"/openapi/token.openapi/other/getaccesstoken"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"token endpoint"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". It provides access to resources and data on the tenant level or associated with the specific application (but not other apps in the tenant)"},"children":[]}]}]}],"flows":{"clientCredentials":{"tokenUrl":"/oidc/token","scopes":{}}}}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"user_id","in":"path","schemaId":"schema_375","description":"ID of the user","required":true}],"pointer":"/paths/~1v1~1users~1{user_id}~1device-keys/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/v1/users/{user_id}/device-keys","servers":[{"url":"https://api.sbx.transmitsecurity.io/cis","description":"Sandbox environment"},{"url":"https://api.transmitsecurity.io/cis","description":"US production environment"},{"url":"https://api.eu.transmitsecurity.io/cis","description":"EU production environment"},{"url":"https://api.ca.transmitsecurity.io/cis","description":"CA production environment"},{"url":"https://api.au.transmitsecurity.io/cis","description":"AU production environment"},{"url":"https://api.gasne1-ts01.transmitsecurity.io/cis","description":"JP production environment"}],"parameters":{"path":[{"name":"user_id","in":"path","required":true,"schemaId":"schema_375"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"ClientAccessToken","type":"oauth2","flows":{"clientCredentials":{"tokenUrl":"/oidc/token","scopes":{}}}}],"scopes":[]}],"responseCodes":["200"],"pointer":"/v1/users/{user_id}/device-keys","href":"other/getdevicekeysforuser","openApiOperationId":"getDeviceKeysForUser","summary":"Get all device keys"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"https://api.sbx.transmitsecurity.io/cis","description":"Sandbox environment"},{"url":"https://api.transmitsecurity.io/cis","description":"US production environment"},{"url":"https://api.eu.transmitsecurity.io/cis","description":"EU production environment"},{"url":"https://api.ca.transmitsecurity.io/cis","description":"CA production environment"},{"url":"https://api.au.transmitsecurity.io/cis","description":"AU production environment"},{"url":"https://api.gasne1-ts01.transmitsecurity.io/cis","description":"JP production environment"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_376"}},"schemaId":"schema_376"}],"pointer":"/paths/~1v1~1users~1{user_id}~1device-keys/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"schema_376","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_376"}}}],"examples":[]}]}]}]},"httpPath":"/v1/users/{user_id}/device-keys"},{"label":"Get device key","deprecated":false,"httpVerb":"get","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/user/device-key.openapi/other/getdevicekeys","routeSlug":"/openapi/user/device-key.openapi/other/getdevicekeys","metadata":{"seo":{"title":"Get device key","description":"Retrieves a specific device key. For example, this can be used to verify that the device key exists and is active. Required permissions: apps:read, [appId]:read, devices:read."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"getDeviceKeys","name":"Get device key","isWebhook":false,"pointer":"/paths/~1v1~1users~1{user_id}~1device-keys~1{key_id}/get","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Get device key","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Retrieves a specific device key. For example, this can be used to verify that the device key exists and is active. "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","inline":true,"attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","inline":true,"attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Required permissions"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":": "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"apps:read"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"[appId]:read"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"devices:read"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"ClientAccessToken","scopes":[],"type":"oauth2","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A token generated by an end-user application using the "},"children":[]},{"$$mdtype":"Node","type":"link","inline":true,"attributes":{"href":"/openapi/token.openapi/other/getaccesstoken"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"token endpoint"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". It provides access to resources and data on the tenant level or associated with the specific application (but not other apps in the tenant)"},"children":[]}]}]}],"flows":{"clientCredentials":{"tokenUrl":"/oidc/token","scopes":{}}}}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"user_id","in":"path","schemaId":"schema_375","description":"ID of the user","required":true},{"name":"key_id","in":"path","schemaId":"schema_375","description":"An identifier for the user's device","required":true}],"pointer":"/paths/~1v1~1users~1{user_id}~1device-keys~1{key_id}/get/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"GET","path":"/v1/users/{user_id}/device-keys/{key_id}","servers":[{"url":"https://api.sbx.transmitsecurity.io/cis","description":"Sandbox environment"},{"url":"https://api.transmitsecurity.io/cis","description":"US production environment"},{"url":"https://api.eu.transmitsecurity.io/cis","description":"EU production environment"},{"url":"https://api.ca.transmitsecurity.io/cis","description":"CA production environment"},{"url":"https://api.au.transmitsecurity.io/cis","description":"AU production environment"},{"url":"https://api.gasne1-ts01.transmitsecurity.io/cis","description":"JP production environment"}],"parameters":{"path":[{"name":"user_id","in":"path","required":true,"schemaId":"schema_375"},{"name":"key_id","in":"path","required":true,"schemaId":"schema_375"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"ClientAccessToken","type":"oauth2","flows":{"clientCredentials":{"tokenUrl":"/oidc/token","scopes":{}}}}],"scopes":[]}],"responseCodes":["200"],"pointer":"/v1/users/{user_id}/device-keys/{key_id}","href":"other/getdevicekeys","openApiOperationId":"getDeviceKeys","summary":"Get device key"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"https://api.sbx.transmitsecurity.io/cis","description":"Sandbox environment"},{"url":"https://api.transmitsecurity.io/cis","description":"US production environment"},{"url":"https://api.eu.transmitsecurity.io/cis","description":"EU production environment"},{"url":"https://api.ca.transmitsecurity.io/cis","description":"CA production environment"},{"url":"https://api.au.transmitsecurity.io/cis","description":"AU production environment"},{"url":"https://api.gasne1-ts01.transmitsecurity.io/cis","description":"JP production environment"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_377"}},"schemaId":"schema_377"}],"pointer":"/paths/~1v1~1users~1{user_id}~1device-keys~1{key_id}/get/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"schema_377","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"schema_377"}}}],"examples":[]}]}]}]},"httpPath":"/v1/users/{user_id}/device-keys/{key_id}"},{"label":"Update device key","deprecated":false,"httpVerb":"put","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/user/device-key.openapi/other/updatedevicekey","routeSlug":"/openapi/user/device-key.openapi/other/updatedevicekey","metadata":{"seo":{"title":"Update device key","description":"Updates the metadata of a device key, such as the friendly device name or other custom data. Required permissions: apps:edit, [appId]:edit, devices:edit."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"updateDeviceKey","name":"Update device key","isWebhook":false,"pointer":"/paths/~1v1~1users~1{user_id}~1device-keys~1{key_id}/put","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Update device key","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Updates the metadata of a device key, such as the friendly device name or other custom data. "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","inline":true,"attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","inline":true,"attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Required permissions"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":": "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"apps:edit"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"[appId]:edit"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"devices:edit"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"ClientAccessToken","scopes":[],"type":"oauth2","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A token generated by an end-user application using the "},"children":[]},{"$$mdtype":"Node","type":"link","inline":true,"attributes":{"href":"/openapi/token.openapi/other/getaccesstoken"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"token endpoint"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". It provides access to resources and data on the tenant level or associated with the specific application (but not other apps in the tenant)"},"children":[]}]}]}],"flows":{"clientCredentials":{"tokenUrl":"/oidc/token","scopes":{}}}}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"user_id","in":"path","schemaId":"schema_375","description":"ID of the user","required":true},{"name":"key_id","in":"path","schemaId":"schema_375","description":"An identifier for the user's device","required":true}],"pointer":"/paths/~1v1~1users~1{user_id}~1device-keys~1{key_id}/put/parameters"},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/ApiDeviceKeyUpdateInputDto"}},"schemaId":"components/schemas/ApiDeviceKeyUpdateInputDto","pointer":"/paths/~1v1~1users~1{user_id}~1device-keys~1{key_id}/put/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"PUT","path":"/v1/users/{user_id}/device-keys/{key_id}","servers":[{"url":"https://api.sbx.transmitsecurity.io/cis","description":"Sandbox environment"},{"url":"https://api.transmitsecurity.io/cis","description":"US production environment"},{"url":"https://api.eu.transmitsecurity.io/cis","description":"EU production environment"},{"url":"https://api.ca.transmitsecurity.io/cis","description":"CA production environment"},{"url":"https://api.au.transmitsecurity.io/cis","description":"AU production environment"},{"url":"https://api.gasne1-ts01.transmitsecurity.io/cis","description":"JP production environment"}],"parameters":{"path":[{"name":"user_id","in":"path","required":true,"schemaId":"schema_375"},{"name":"key_id","in":"path","required":true,"schemaId":"schema_375"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"ClientAccessToken","type":"oauth2","flows":{"clientCredentials":{"tokenUrl":"/oidc/token","scopes":{}}}}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"components/schemas/ApiDeviceKeyUpdateInputDto"}},"responseCodes":["200"],"pointer":"/v1/users/{user_id}/device-keys/{key_id}","href":"other/updatedevicekey","openApiOperationId":"updateDeviceKey","summary":"Update device key"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"https://api.sbx.transmitsecurity.io/cis","description":"Sandbox environment"},{"url":"https://api.transmitsecurity.io/cis","description":"US production environment"},{"url":"https://api.eu.transmitsecurity.io/cis","description":"EU production environment"},{"url":"https://api.ca.transmitsecurity.io/cis","description":"CA production environment"},{"url":"https://api.au.transmitsecurity.io/cis","description":"AU production environment"},{"url":"https://api.gasne1-ts01.transmitsecurity.io/cis","description":"JP production environment"}],"schemaId":"components/schemas/ApiDeviceKeyUpdateInputDto","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/ApiDeviceKeyUpdateInputDto"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Device key updated"}],"pointer":"/paths/~1v1~1users~1{user_id}~1device-keys~1{key_id}/put/responses"}],"panels":[]}]},"httpPath":"/v1/users/{user_id}/device-keys/{key_id}"},{"label":"Delete device key","deprecated":false,"httpVerb":"delete","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/user/device-key.openapi/other/deletedevicekeys","routeSlug":"/openapi/user/device-key.openapi/other/deletedevicekeys","metadata":{"seo":{"title":"Delete device key","description":"Unregisters the user's device. For example, it can be used in case the device is lost, stolen, or no longer in the user's possession. Required permissions: apps:delete, [appId]:delete, devices:delete."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"deleteDeviceKeys","name":"Delete device key","isWebhook":false,"pointer":"/paths/~1v1~1users~1{user_id}~1device-keys~1{key_id}/delete","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Delete device key","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Unregisters the user's device. For example, it can be used in case the device is lost, stolen, or no longer in the user's possession. "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","inline":true,"attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","inline":true,"attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Required permissions"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":": "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"apps:delete"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"[appId]:delete"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"devices:delete"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"ClientAccessToken","scopes":[],"type":"oauth2","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A token generated by an end-user application using the "},"children":[]},{"$$mdtype":"Node","type":"link","inline":true,"attributes":{"href":"/openapi/token.openapi/other/getaccesstoken"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"token endpoint"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". It provides access to resources and data on the tenant level or associated with the specific application (but not other apps in the tenant)"},"children":[]}]}]}],"flows":{"clientCredentials":{"tokenUrl":"/oidc/token","scopes":{}}}}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"user_id","in":"path","schemaId":"schema_375","description":"ID of the user","required":true},{"name":"key_id","in":"path","schemaId":"schema_375","description":"An identifier for the user's device","required":true}],"pointer":"/paths/~1v1~1users~1{user_id}~1device-keys~1{key_id}/delete/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"DELETE","path":"/v1/users/{user_id}/device-keys/{key_id}","servers":[{"url":"https://api.sbx.transmitsecurity.io/cis","description":"Sandbox environment"},{"url":"https://api.transmitsecurity.io/cis","description":"US production environment"},{"url":"https://api.eu.transmitsecurity.io/cis","description":"EU production environment"},{"url":"https://api.ca.transmitsecurity.io/cis","description":"CA production environment"},{"url":"https://api.au.transmitsecurity.io/cis","description":"AU production environment"},{"url":"https://api.gasne1-ts01.transmitsecurity.io/cis","description":"JP production environment"}],"parameters":{"path":[{"name":"user_id","in":"path","required":true,"schemaId":"schema_375"},{"name":"key_id","in":"path","required":true,"schemaId":"schema_375"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"ClientAccessToken","type":"oauth2","flows":{"clientCredentials":{"tokenUrl":"/oidc/token","scopes":{}}}}],"scopes":[]}],"responseCodes":["204"],"pointer":"/v1/users/{user_id}/device-keys/{key_id}","href":"other/deletedevicekeys","openApiOperationId":"deleteDeviceKeys","summary":"Delete device key"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"https://api.sbx.transmitsecurity.io/cis","description":"Sandbox environment"},{"url":"https://api.transmitsecurity.io/cis","description":"US production environment"},{"url":"https://api.eu.transmitsecurity.io/cis","description":"EU production environment"},{"url":"https://api.ca.transmitsecurity.io/cis","description":"CA production environment"},{"url":"https://api.au.transmitsecurity.io/cis","description":"AU production environment"},{"url":"https://api.gasne1-ts01.transmitsecurity.io/cis","description":"JP production environment"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"204","description":"Device key deleted"}],"pointer":"/paths/~1v1~1users~1{user_id}~1device-keys~1{key_id}/delete/responses"}],"panels":[]}]},"httpPath":"/v1/users/{user_id}/device-keys/{key_id}"},{"label":"Validate device key","deprecated":false,"httpVerb":"post","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/user/device-key.openapi/other/validatedevicekeys","routeSlug":"/openapi/user/device-key.openapi/other/validatedevicekeys","metadata":{"seo":{"title":"Validate device key","description":"Verifies that the user's device is in their possession. Before calling this API, the device signs a challenge using the private key stored by the device. This API is used to verify the signed challenge using the device public key. In case the device is blocked, this validation will fail.Note: The challenge should be generated by your client backend.. Required permissions: apps:execute, [appId]:execute, devices:execute."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"validateDeviceKeys","name":"Validate device key","isWebhook":false,"pointer":"/paths/~1v1~1users~1{user_id}~1device-keys~1{key_id}~1validate/post","hasSamples":true},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Validate device key","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Verifies that the user's device is in their possession. Before calling this API, the device signs a challenge using the private key stored by the device. This API is used to verify the signed challenge using the device public key. In case the device is blocked, this validation will fail."},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","inline":true,"attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","inline":true,"attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Note: The challenge should be generated by your client backend."},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","inline":true,"attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","inline":true,"attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Required permissions"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":": "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"apps:execute"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"[appId]:execute"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"devices:execute"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"ClientAccessToken","scopes":[],"type":"oauth2","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A token generated by an end-user application using the "},"children":[]},{"$$mdtype":"Node","type":"link","inline":true,"attributes":{"href":"/openapi/token.openapi/other/getaccesstoken"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"token endpoint"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". It provides access to resources and data on the tenant level or associated with the specific application (but not other apps in the tenant)"},"children":[]}]}]}],"flows":{"clientCredentials":{"tokenUrl":"/oidc/token","scopes":{}}}}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"user_id","in":"path","schemaId":"schema_375","description":"ID of the user","required":true},{"name":"key_id","in":"path","schemaId":"schema_375","description":"An identifier for the user's device","required":true}],"pointer":"/paths/~1v1~1users~1{user_id}~1device-keys~1{key_id}~1validate/post/parameters"},{"nodeType":"item-content","variant":"body","label":"Request Body","labelTranslationKey":"body","required":true,"mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/ApiDeviceKeyValidationInput"}},"schemaId":"components/schemas/ApiDeviceKeyValidationInput","pointer":"/paths/~1v1~1users~1{user_id}~1device-keys~1{key_id}~1validate/post/requestBody"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"POST","path":"/v1/users/{user_id}/device-keys/{key_id}/validate","servers":[{"url":"https://api.sbx.transmitsecurity.io/cis","description":"Sandbox environment"},{"url":"https://api.transmitsecurity.io/cis","description":"US production environment"},{"url":"https://api.eu.transmitsecurity.io/cis","description":"EU production environment"},{"url":"https://api.ca.transmitsecurity.io/cis","description":"CA production environment"},{"url":"https://api.au.transmitsecurity.io/cis","description":"AU production environment"},{"url":"https://api.gasne1-ts01.transmitsecurity.io/cis","description":"JP production environment"}],"parameters":{"path":[{"name":"user_id","in":"path","required":true,"schemaId":"schema_375"},{"name":"key_id","in":"path","required":true,"schemaId":"schema_375"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"ClientAccessToken","type":"oauth2","flows":{"clientCredentials":{"tokenUrl":"/oidc/token","scopes":{}}}}],"scopes":[]}],"requestBody":{"application/json":{"schemaId":"components/schemas/ApiDeviceKeyValidationInput"}},"responseCodes":["200"],"pointer":"/v1/users/{user_id}/device-keys/{key_id}/validate","href":"other/validatedevicekeys","openApiOperationId":"validateDeviceKeys","summary":"Validate device key"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"https://api.sbx.transmitsecurity.io/cis","description":"Sandbox environment"},{"url":"https://api.transmitsecurity.io/cis","description":"US production environment"},{"url":"https://api.eu.transmitsecurity.io/cis","description":"EU production environment"},{"url":"https://api.ca.transmitsecurity.io/cis","description":"CA production environment"},{"url":"https://api.au.transmitsecurity.io/cis","description":"AU production environment"},{"url":"https://api.gasne1-ts01.transmitsecurity.io/cis","description":"JP production environment"}],"schemaId":"components/schemas/ApiDeviceKeyValidationInput","mediaTypes":["application/json"],"mediaTypeSchemas":{"application/json":{"schemaId":"components/schemas/ApiDeviceKeyValidationInput"}},"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","mediaType":"application/json","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/ApiValidateDeviceKeyResponse"}},"schemaId":"components/schemas/ApiValidateDeviceKeyResponse"}],"pointer":"/paths/~1v1~1users~1{user_id}~1device-keys~1{key_id}~1validate/post/responses"}],"panels":[{"children":[{"kind":"response","headerTitle":"Response","responseCodes":[{"code":"200","schemaId":"components/schemas/ApiValidateDeviceKeyResponse","mediaTypes":["application/json"],"mediaTypeContent":{"application/json":{"schemaId":"components/schemas/ApiValidateDeviceKeyResponse"}}}],"examples":[]}]}]}]},"httpPath":"/v1/users/{user_id}/device-keys/{key_id}/validate"},{"label":"Block device key","deprecated":false,"httpVerb":"put","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/user/device-key.openapi/other/blockdevicekey","routeSlug":"/openapi/user/device-key.openapi/other/blockdevicekey","metadata":{"seo":{"title":"Block device key","description":"Block a user's device. Once blocked, the device status will be Blocked and device validation will fail if requested. Required permissions: apps:edit, [appId]:edit, devices:edit."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"blockDeviceKey","name":"Block device key","isWebhook":false,"pointer":"/paths/~1v1~1users~1{user_id}~1device-keys~1{key_id}~1block/put","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Block device key","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Block a user's device. Once blocked, the device status will be "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Blocked"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and device validation will fail if requested. "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","inline":true,"attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","inline":true,"attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Required permissions"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":": "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"apps:edit"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"[appId]:edit"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"devices:edit"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"ClientAccessToken","scopes":[],"type":"oauth2","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A token generated by an end-user application using the "},"children":[]},{"$$mdtype":"Node","type":"link","inline":true,"attributes":{"href":"/openapi/token.openapi/other/getaccesstoken"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"token endpoint"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". It provides access to resources and data on the tenant level or associated with the specific application (but not other apps in the tenant)"},"children":[]}]}]}],"flows":{"clientCredentials":{"tokenUrl":"/oidc/token","scopes":{}}}}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"user_id","in":"path","schemaId":"schema_375","description":"ID of the user","required":true},{"name":"key_id","in":"path","schemaId":"schema_375","description":"An identifier for the user's device","required":true}],"pointer":"/paths/~1v1~1users~1{user_id}~1device-keys~1{key_id}~1block/put/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"PUT","path":"/v1/users/{user_id}/device-keys/{key_id}/block","servers":[{"url":"https://api.sbx.transmitsecurity.io/cis","description":"Sandbox environment"},{"url":"https://api.transmitsecurity.io/cis","description":"US production environment"},{"url":"https://api.eu.transmitsecurity.io/cis","description":"EU production environment"},{"url":"https://api.ca.transmitsecurity.io/cis","description":"CA production environment"},{"url":"https://api.au.transmitsecurity.io/cis","description":"AU production environment"},{"url":"https://api.gasne1-ts01.transmitsecurity.io/cis","description":"JP production environment"}],"parameters":{"path":[{"name":"user_id","in":"path","required":true,"schemaId":"schema_375"},{"name":"key_id","in":"path","required":true,"schemaId":"schema_375"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"ClientAccessToken","type":"oauth2","flows":{"clientCredentials":{"tokenUrl":"/oidc/token","scopes":{}}}}],"scopes":[]}],"responseCodes":["200"],"pointer":"/v1/users/{user_id}/device-keys/{key_id}/block","href":"other/blockdevicekey","openApiOperationId":"blockDeviceKey","summary":"Block device key"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"https://api.sbx.transmitsecurity.io/cis","description":"Sandbox environment"},{"url":"https://api.transmitsecurity.io/cis","description":"US production environment"},{"url":"https://api.eu.transmitsecurity.io/cis","description":"EU production environment"},{"url":"https://api.ca.transmitsecurity.io/cis","description":"CA production environment"},{"url":"https://api.au.transmitsecurity.io/cis","description":"AU production environment"},{"url":"https://api.gasne1-ts01.transmitsecurity.io/cis","description":"JP production environment"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Device blocked"}],"pointer":"/paths/~1v1~1users~1{user_id}~1device-keys~1{key_id}~1block/put/responses"}],"panels":[]}]},"httpPath":"/v1/users/{user_id}/device-keys/{key_id}/block"},{"label":"Unblock device key","deprecated":false,"httpVerb":"put","isAdditionalOperation":false,"isWebhook":false,"type":"link","link":"/openapi/user/device-key.openapi/other/unblockdevicekey","routeSlug":"/openapi/user/device-key.openapi/other/unblockdevicekey","metadata":{"seo":{"title":"Unblock device key","description":"Unblocks a user's device. Once unblocked, the device status returns to Active and the device can be verified using the device key. Required permissions: apps:edit, [appId]:edit, devices:edit."}},"content":{"contentType":"item","itemVariant":"httpItem","meta":{"sourceId":"unblockDeviceKey","name":"Unblock device key","isWebhook":false,"pointer":"/paths/~1v1~1users~1{user_id}~1device-keys~1{key_id}~1unblock/put","hasSamples":false},"children":[{"nodeType":"container","children":[{"nodeType":"header","level":2,"label":"Unblock device key","isWebhook":false,"showPageActions":true}],"panels":[]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Request","labelTranslationKey":"request","deepLinkSuffix":"request"},{"nodeType":"markdoc","content":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Unblocks a user's device. Once unblocked, the device status returns to "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"Active"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":" and the device can be verified using the device key. "},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","inline":true,"attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"tag","tag":"html","inline":true,"attributes":{"name":"br","attrs":{}},"children":[]},{"$$mdtype":"Node","type":"strong","inline":true,"attributes":{"marker":"**"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"Required permissions"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":": "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"apps:edit"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"[appId]:edit"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":", "},"children":[]},{"$$mdtype":"Node","type":"code","inline":true,"attributes":{"content":"devices:edit"},"children":[]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"."},"children":[]}]}]}]},{"nodeType":"security","requirements":[{"schemes":[{"name":"ClientAccessToken","scopes":[],"type":"oauth2","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A token generated by an end-user application using the "},"children":[]},{"$$mdtype":"Node","type":"link","inline":true,"attributes":{"href":"/openapi/token.openapi/other/getaccesstoken"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"token endpoint"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". It provides access to resources and data on the tenant level or associated with the specific application (but not other apps in the tenant)"},"children":[]}]}]}],"flows":{"clientCredentials":{"tokenUrl":"/oidc/token","scopes":{}}}}]}]},{"nodeType":"item-content","variant":"path","label":"Path","labelTranslationKey":"path","parameters":[{"name":"user_id","in":"path","schemaId":"schema_375","description":"ID of the user","required":true},{"name":"key_id","in":"path","schemaId":"schema_375","description":"An identifier for the user's device","required":true}],"pointer":"/paths/~1v1~1users~1{user_id}~1device-keys~1{key_id}~1unblock/put/parameters"}],"panels":[{"children":[{"kind":"code-sample","source":{"kind":"code-sample","operationType":"http","method":"PUT","path":"/v1/users/{user_id}/device-keys/{key_id}/unblock","servers":[{"url":"https://api.sbx.transmitsecurity.io/cis","description":"Sandbox environment"},{"url":"https://api.transmitsecurity.io/cis","description":"US production environment"},{"url":"https://api.eu.transmitsecurity.io/cis","description":"EU production environment"},{"url":"https://api.ca.transmitsecurity.io/cis","description":"CA production environment"},{"url":"https://api.au.transmitsecurity.io/cis","description":"AU production environment"},{"url":"https://api.gasne1-ts01.transmitsecurity.io/cis","description":"JP production environment"}],"parameters":{"path":[{"name":"user_id","in":"path","required":true,"schemaId":"schema_375"},{"name":"key_id","in":"path","required":true,"schemaId":"schema_375"}],"query":[],"querystring":[],"header":[],"cookie":[]},"security":[{"schemes":[{"id":"ClientAccessToken","type":"oauth2","flows":{"clientCredentials":{"tokenUrl":"/oidc/token","scopes":{}}}}],"scopes":[]}],"responseCodes":["200"],"pointer":"/v1/users/{user_id}/device-keys/{key_id}/unblock","href":"other/unblockdevicekey","openApiOperationId":"unblockDeviceKey","summary":"Unblock device key"},"isWebhook":false,"hideReplay":false,"servers":[{"url":"https://api.sbx.transmitsecurity.io/cis","description":"Sandbox environment"},{"url":"https://api.transmitsecurity.io/cis","description":"US production environment"},{"url":"https://api.eu.transmitsecurity.io/cis","description":"EU production environment"},{"url":"https://api.ca.transmitsecurity.io/cis","description":"CA production environment"},{"url":"https://api.au.transmitsecurity.io/cis","description":"AU production environment"},{"url":"https://api.gasne1-ts01.transmitsecurity.io/cis","description":"JP production environment"}],"examples":[]}]}]},{"nodeType":"container","children":[{"nodeType":"header","level":4,"label":"Responses","labelTranslationKey":"responses","deepLinkSuffix":"responses"},{"nodeType":"item-content","variant":"responses","responses":[{"code":"200","description":"Device unblocked"}],"pointer":"/paths/~1v1~1users~1{user_id}~1device-keys~1{key_id}~1unblock/put/responses"}],"panels":[]}]},"httpPath":"/v1/users/{user_id}/device-keys/{key_id}/unblock"}],"store":{"schemaStore":{"components/schemas/ApiDeviceKeyCreationInputDto":{"id":"components/schemas/ApiDeviceKeyCreationInputDto","kind":"json-schema","title":"ApiDeviceKeyCreationInputDto","data":{"type":"object","properties":{"key_id":{"type":"string","description":"An identifier for the user's device"},"display_name":{"type":"string","description":"Friendly device name, used when displaying a list of the user's devices"},"custom_data":{"type":"object","description":"Custom data stored for this device, such as tags or device data obtained using other tools"},"push_config":{"description":"Device push notification configuration","allOf":[{"$ref":"#/components/schemas/DevicePushConfigDto"}]},"public_key":{"type":"string","description":"Device public key as a base-64 string. This corresponds to the cryptographic key-pair generated by the client"},"device_id":{"type":"string","description":"ID of the device to associate with this key"}},"required":["key_id","public_key"]}},"components/schemas/DeviceKeyResponseDto":{"id":"components/schemas/DeviceKeyResponseDto","kind":"json-schema","title":"DeviceKeyResponseDto","data":{"type":"object","properties":{"status":{"description":"Status of the device","$ref":"#/components/schemas/DeviceStatus"},"display_name":{"type":"string","description":"Friendly device name, used when displaying a list of the user's devices"},"custom_data":{"type":"object","description":"Custom data stored for this device, such as tags or device data obtained using other tools"},"push_config":{"description":"Device push notification configuration","allOf":[{"$ref":"#/components/schemas/DevicePushConfigDto"}]},"key_id":{"type":"string","description":"Identifier of the user's device"},"created_at":{"format":"date-time","type":"string","description":"Date the device key was added"},"updated_at":{"format":"date-time","type":"string","description":"Date the device key metadata was last updated"},"device_id":{"type":"string","description":"ID of the device associated with this key"}},"required":["status","created_at","updated_at"]}},"components/schemas/ApiDeviceKeyUpdateInputDto":{"id":"components/schemas/ApiDeviceKeyUpdateInputDto","kind":"json-schema","title":"ApiDeviceKeyUpdateInputDto","data":{"type":"object","properties":{"display_name":{"type":"string","description":"Friendly device name, used when displaying a list of the user's devices"},"custom_data":{"type":"object","description":"Custom data stored for this device, such as tags or device data obtained using other tools"},"push_config":{"description":"Device push notification configuration","allOf":[{"$ref":"#/components/schemas/DevicePushConfigDto"}]},"device_id":{"type":"string","description":"ID of the device to associate with this key"}}}},"components/schemas/ApiDeviceKeyValidationInput":{"id":"components/schemas/ApiDeviceKeyValidationInput","kind":"json-schema","title":"ApiDeviceKeyValidationInput","data":{"type":"object","properties":{"challenge":{"type":"string","description":"Raw challenge before it was signed by the device"},"signature":{"type":"string","description":"Signed challenge"}},"required":["challenge","signature"]}},"components/schemas/ApiValidateDeviceKeyResponse":{"id":"components/schemas/ApiValidateDeviceKeyResponse","kind":"json-schema","title":"ApiValidateDeviceKeyResponse","data":{"type":"object","properties":{"result":{"type":"boolean","readOnly":true,"description":"Boolean value indicating if device key validation succeeded"}},"required":["result"]}},"components/schemas/DeviceStatus":{"id":"components/schemas/DeviceStatus","kind":"json-schema","title":"DeviceStatus","data":{"type":"string","enum":["Active","Blocked","Suspended"]}},"components/schemas/DevicePushConfigDto":{"id":"components/schemas/DevicePushConfigDto","kind":"json-schema","title":"DevicePushConfigDto","data":{"type":"object","properties":{"device_token":{"type":"string","description":"Device token for push notifications (FCM registration token or APN device token)","minLength":32,"maxLength":255},"type":{"type":"string","enum":["FCM","APN"],"description":"Type of push notification"},"bundle_id":{"type":"string","description":"Bundle identifier, used for push notifications"}},"required":["device_token","type"]}},"schema_375":{"kind":"json-schema","data":{"type":"string"},"id":"schema_375"},"schema_376":{"kind":"json-schema","data":{"title":"ApiOkResponse-getDeviceKeysForUser","type":"object","required":["result"],"description":"List of user's devices","properties":{"result":{"type":"array","items":{"$ref":"#/components/schemas/DeviceKeyResponseDto"}}}},"id":"schema_376"},"schema_377":{"kind":"json-schema","data":{"title":"ApiOkResponse-getDeviceKeys","type":"object","required":["result"],"description":"Device key","properties":{"result":{"$ref":"#/components/schemas/DeviceKeyResponseDto"}}},"id":"schema_377"}},"exampleStore":{},"securitySchemeStore":{"bearer":{"id":"bearer","type":"http","scheme":"bearer","bearerFormat":"JWT"},"UserAccessToken":{"id":"UserAccessToken","type":"http","scheme":"bearer","bearerFormat":"JWT","description":"A token returned upon end-user authentication, which provides access to resources and data for the user and app for which it was generated"},"AdminAccessToken":{"id":"AdminAccessToken","type":"oauth2","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A token generated by a management application using the "},"children":[]},{"$$mdtype":"Node","type":"link","inline":true,"attributes":{"href":"/openapi/token.openapi/other/getaccesstoken"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"token endpoint"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". It provides access to all resources for the tenant and its apps"},"children":[]}]}]}],"flows":{"clientCredentials":{"tokenUrl":"/oidc/token","scopes":{}}}},"ClientAccessToken":{"id":"ClientAccessToken","type":"oauth2","description":[{"$$mdtype":"Node","type":"paragraph","attributes":{},"children":[{"$$mdtype":"Node","type":"inline","attributes":{},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"A token generated by an end-user application using the "},"children":[]},{"$$mdtype":"Node","type":"link","inline":true,"attributes":{"href":"/openapi/token.openapi/other/getaccesstoken"},"children":[{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":"token endpoint"},"children":[]}]},{"$$mdtype":"Node","type":"text","inline":true,"attributes":{"content":". It provides access to resources and data on the tenant level or associated with the specific application (but not other apps in the tenant)"},"children":[]}]}]}],"flows":{"clientCredentials":{"tokenUrl":"/oidc/token","scopes":{}}}},"OrgAdminAccessToken":{"id":"OrgAdminAccessToken","type":"oauth2","description":"A token returned upon B2B authentication for a user that has the organizationAdmin or organizationCreator role.","flows":{"clientCredentials":{"tokenUrl":"/oidc/token","scopes":{}}}}},"servers":[{"url":"https://api.sbx.transmitsecurity.io/cis","description":"Sandbox environment"},{"url":"https://api.transmitsecurity.io/cis","description":"US production environment"},{"url":"https://api.eu.transmitsecurity.io/cis","description":"EU production environment"},{"url":"https://api.ca.transmitsecurity.io/cis","description":"CA production environment"},{"url":"https://api.au.transmitsecurity.io/cis","description":"AU production environment"},{"url":"https://api.gasne1-ts01.transmitsecurity.io/cis","description":"JP production environment"}]},"options":{"corsProxyUrl":"https://cors.redoc.ly","hideSchemaTitles":true,"onlyRequiredInSamples":false,"hideDownloadButtons":false,"codeSamples":{"skipOptionalParameters":false,"languages":[{"lang":"curl","label":"cURL"},{"lang":"Node.js"},{"lang":"Go"},{"lang":"JavaScript"},{"lang":"Java"},{"lang":"Python"}]},"feedback":{"hide":true,"settings":{"label":""}},"hideSidebar":true,"mockServer":{"off":true},"disableRouter":true,"downloadUrls":[{"url":"/_bundle/openapi/user/device-key.openapi.json?download"},{"url":"/_bundle/openapi/user/device-key.openapi.yaml?download"}],"excludeFromSearch":false,"specType":"openapi","markdocOptions":{"tags":{},"nodes":{},"components":{}},"metadata":{"title":"Device keys","description":"**Device keys** are used to cryptographically bind devices to a user for strong device identification. This allows the device to act as a user-identifying factor, and allows elevating trust for known devices. <br><br> These APIs are used to manage and verify bound devices for a user and application. The device may correspond to either a browser (for web apps) or a mobile device (for mobile apps).<br><br>Device binding relies on a cryptographic key-pair generated by the device. The private key is securely stored on the device (typically protected by biometrics or a PIN), while the public key is stored by Transmit for a given user. When needed, the device uses the private key to sign a challenge that Transmit verifies using the public key.<br><br>**Note: This feature requires the client to implement the relevant cryptography APIs exposed by the browser or mobile platform (Android or iOS).**"}},"baseSlug":"/openapi/user/device-key.openapi","routesMapping":{}}