Upsert Token
/tokensCreates a revocable credential, or replaces the complete writable label of an existing token. Replacement accepts only id and label; credential identity, purpose, scope and expiry are immutable. Raw tokens appear only in create and its authorized replay. Responses are retained privately for 24 hours.
Required scope
Any authenticated access token
Header parameters
- Idempotency-Key
stringRequired Client-chosen key that makes a non-idempotent request retry-safe, following draft-ietf-httpapi-idempotency-key-header. A committed response is stored for 24 hours and replayed for the same principal, operation, key and payload. Missing key returns 400 IDEMPOTENCY_KEY_REQUIRED, a key longer than 255 characters returns 400 IDEMPOTENCY_KEY_INVALID, the same key with a different payload returns 422, and the same key while the first request is still in flight returns 409. Requests rolled back before external provider attempts do not consume the key. Group mutations retain terminal failed responses after provider attempts together with received provider truth; their operation contract defines these replayable outcomes.
minLength: 1
maxLength: 255
- If-Match
string Required for a full replacement when the request identifies an existing resource. Send that resource's quoted strong etag from its last GET. A missing condition on a replacement returns 428 PRECONDITION_REQUIRED; a stale condition returns 412 PRECONDITION_FAILED. Omit this header when creating a new resource without an id. Wildcards are accepted only where the operation explicitly permits them.
minLength: 1
Request body
Fields
CreateTokenRequestReturns
200
Stored resource returned; authorized retries replay the same committed response for 24 hours.
Fields
CreateTokenResponseResponse headers
- ETag
string Strong entity tag matching the response body.
Errors
400 IDEMPOTENCY_KEY_REQUIREDInvalid request or missing Idempotency-Key.
Check the request fields and any validation details, then correct the payload.
401 UNAUTHORIZEDAuthentication required.
Obtain a valid access token, then retry.
403 FORBIDDENCaller lacks resource permission.
Check the linked account and its permissions for the device or resource.
404 NOT_FOUNDThe addressed resource does not exist.
Verify the target identifier and that its endpoint or plugin route still exists.
409 IDEMPOTENCY_KEY_IN_FLIGHTThe idempotency request is in flight.
Check the device’s current mode or state. Retry only after the conflict is resolved.
412 PRECONDITION_FAILEDThe resource version changed.
Inspect the returned code and family and follow the error handling guide.
422 IDEMPOTENCY_KEY_REUSEDThe same key was used for a different request.
Correct the rejected value using the constraints in the error details or request schema.
428 PRECONDITION_REQUIREDIf-Match is required for replacement or delete.
Inspect the returned code and family and follow the error handling guide.
500 INTERNALThe operation could not be committed.
Retry with backoff only when the operation is safe to repeat. Include the error code when reporting persistent failures.