Skip to content

Mint a Client token

Deprecated
POST
/v1/tokens
curl --request POST \
--url https://app.caprid.com/v1/tokens \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{ "path": "room/42", "subscribe": "" }'

POST /v1/namespaces/{namespace}/tokens for the API key’s only Namespace.

Media typeapplication/json
object
kid

The kid of the Signing key to sign with. You can leave it out when the Namespace has exactly one.

string
path

Where the token is rooted, relative to the Namespace. The token’s root claim is <namespace>/<path>.

string
""
publish
One of:
string
subscribe
One of:
string
expires_in

Seconds until the token expires. 0 means never.

integer
default: 3600

Examples

Watch one room for an hour

{
"path": "room/42",
"subscribe": ""
}

The signed token and what it grants.

Media typeapplication/json
object
token
required

A JWT. Give it to the Client, which passes it to the relay as ?jwt=.

string
kid
required
string
claims
required

A Client token’s payload. root is absolute and starts with your Namespace. put (publish) and get (subscribe) are prefixes relative to root.

object
root
string
put
Array<string>
get
Array<string>
exp

When the token expires. Absent for a token that never expires.

integer
iat

When the token was issued.

integer

Example

{
"claims": {
"root": "acme/room/42",
"get": [
""
]
}
}

Sent with a session, or with an API key that doesn’t reach exactly one Namespace. Use the route the message names instead. This route also returns 400 for anything that route would refuse with 400.

Media typeapplication/json
object
error
required
string

Example

{
"error": "this API key reaches 2 Namespaces, so this route can't tell which one you mean; use /v1/namespaces/{namespace}/keys"
}

No valid credential. Missing, expired and revoked credentials all get the same response, and so does an API key whose trial has lapsed. An Agent token from before a claim gets a 401 too, once the claim has made the trial a person’s, with a message saying to get a new token.

Media typeapplication/json
object
error
required
string

Example

{
"error": "the requested grants exceed the key's scope"
}
WWW-Authenticate
string
Example
Bearer realm="switchboard"

Sent with an API key limited to some Namespaces, to a Namespace outside its limit, or to a route that acts on the Organization as a whole. A limited key can never create API keys.

Media typeapplication/json
object
error
required
string

Example

{
"error": "this API key is limited to the Namespaces acme-staging, and acme isn't one of them"
}

No such thing, or not yours. Another customer’s Organization or Namespace is a 404 too, so nobody can tell which ones exist.

Media typeapplication/json
object
error
required
string

Example

{
"error": "the requested grants exceed the key's scope"
}