Vault

Authorizations

Authorize third-party services and manage one-time links and return URLs.

Authorize third-party services and manage one-time links and return URLs.

Guide →

Base URL and authentication

Authorization produces a secret of kind oauth for services that support OAuth. Create an authorization and give connect_url to the end user; once they approve on the confirmation page and on the service, the secret is written to the vault and the platform keeps it refreshed. The confirmation page, the callback and the client metadata need no API Key.

Create authorization

POST /vault/v1/authorizations

Request body

FieldType / enumRequiredDescription
vault_idstringyesVault ID
template_id"linear" / "atlassian"noOAuth template ID; provide exactly one of template_id or resource_url
resource_urlstringnoResource URL to authorize
return_urlstringnoReturn URL; must be on the account allowlist

Response

HTTP 200

application/json

FieldType / enumRequiredDescription
idstringyesObject ID
type"vault_authorization"yesObject type
vault_idstringyesVault ID
status"pending" / "authorizing" / "completed" / "failed" / "expired"yesCurrent status
resourcestringyesAuthorized resource URL
secret_namestringyesAssociated secret name
connect_urlstringyesOne-time confirmation page, valid for 30 minutes
client_registration"cimd" / "dcr" / nullyescimd: Client ID Metadata Document; dcr: Dynamic Client Registration; null before registration
secret_idstring / nullyesAssociated secret ID, or null
errorobject / nullyesFailure details, or null
error.codestringyesStable error code
error.messagestringyesHuman-readable error message
expires_atdate-timeyesExpiry time, or null
created_atdate-timeyesCreation time
updated_atdate-timeyesLast update time

Error responses

A missing or invalid API Key returns 401 UNAUTHENTICATED.

CodeHTTPMeaning, trigger and actionkindrecoveryRetryable
VAULT_NOT_FOUND404Vault absent or outside this account; check the vault IDvalidation_failurenoneno
VAULT_INVALID_STATE409Writing to an archived vault or secret; use an active resourcevalidation_failurenoneno
INVALID_PARAMS400Invalid fields, names, hosts, metadata, pagination or return URL; correct the requestvalidation_failurenoneno
RATE_LIMITED429Authorization or validation minute quota exceeded; wait for the next windowrate_limitwait_then_retryyes
OAUTH_DISCOVERY_FAILED400OAuth metadata discovery failed; check the resource URLvalidation_failurecontinue_from_problemno
OAUTH_REGISTRATION_UNSUPPORTED400Provider does not accept automatic client registration; add credentials manuallyvalidation_failurecontinue_from_problemno
OAUTH_ISSUER_MISMATCH400Authorization issuer differs from the expected issuer; check the service URLprovider_upstreamretry_from_userno
curl -X POST "https://api.deepraxis.ai/vault/v1/authorizations" \
  -H "Authorization: Bearer $PRAXIS_API_KEY" \
  -H "Content-Type: application/json" \
  -d "{\"vault_id\":\"${VAULT_ID}\",\"template_id\":\"linear\"}"

Get authorization

GET /vault/v1/authorizations/{authorization_id}

ParameterLocationDescription
authorization_idpathID of the authorization in your account, returned when authorization is created.

Response

HTTP 200

application/json

FieldType / enumRequiredDescription
idstringyesObject ID
type"vault_authorization"yesObject type
vault_idstringyesVault ID
status"pending" / "authorizing" / "completed" / "failed" / "expired"yesCurrent status
resourcestringyesAuthorized resource URL
secret_namestringyesAssociated secret name
connect_urlstringyesOne-time confirmation page, valid for 30 minutes
client_registration"cimd" / "dcr" / nullyescimd: Client ID Metadata Document; dcr: Dynamic Client Registration; null before registration
secret_idstring / nullyesAssociated secret ID, or null
errorobject / nullyesFailure details, or null
error.codestringyesStable error code
error.messagestringyesHuman-readable error message
expires_atdate-timeyesExpiry time, or null
created_atdate-timeyesCreation time
updated_atdate-timeyesLast update time

Error responses

A missing or invalid API Key returns 401 UNAUTHENTICATED.

CodeHTTPMeaning, trigger and actionkindrecoveryRetryable
AUTHORIZATION_NOT_FOUND404Authorization or connect link absent; start authorization againvalidation_failurenoneno
curl "https://api.deepraxis.ai/vault/v1/authorizations/${AUTHORIZATION_ID}" \
  -H "Authorization: Bearer $PRAXIS_API_KEY"

Get return URLs

GET /vault/v1/settings/return_urls

Response

HTTP 200

application/json

FieldType / enumRequiredDescription
urlsstring[]yesAt most 10 HTTPS URLs, matched exactly

Error responses

A missing or invalid API Key returns 401 UNAUTHENTICATED. No additional domain errors.

curl "https://api.deepraxis.ai/vault/v1/settings/return_urls" \
  -H "Authorization: Bearer $PRAXIS_API_KEY"

Set return URLs

PUT /vault/v1/settings/return_urls

Request body

FieldType / enumRequiredDescription
urlsstring[]yesAt most 10 HTTPS URLs, matched exactly

Response

HTTP 200

application/json

FieldType / enumRequiredDescription
urlsstring[]yesAt most 10 HTTPS URLs, matched exactly

Error responses

A missing or invalid API Key returns 401 UNAUTHENTICATED.

CodeHTTPMeaning, trigger and actionkindrecoveryRetryable
INVALID_PARAMS400Invalid fields, names, hosts, metadata, pagination or return URL; correct the requestvalidation_failurenoneno
curl -X PUT "https://api.deepraxis.ai/vault/v1/settings/return_urls" \
  -H "Authorization: Bearer $PRAXIS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"urls":["https://app.example.com/connected"]}'

Authorization callback

GET /vault/v1/authorizations/callback · No API Key

ParameterLocationDescription
codequeryAuthorization code from the provider
statequerySingle-use authorization state
errorqueryProvider denial code
issqueryAuthorization server issuer

Response

HTTP 200

text/html

Confirmation or result page displayed by the browser.

HTTP 302

The Location header redirects to the provider or an allowed return URL.

Error responses

CodeHTTPMeaning, trigger and actionkindrecoveryRetryable
OAUTH_STATE_INVALID400Callback state missing, invalid or replayed; start authorization againvalidation_failurenoneno
OAUTH_ISSUER_MISMATCH400Authorization issuer differs from the expected issuer; check the service URLprovider_upstreamretry_from_userno
OAUTH_EXCHANGE_FAILED502Provider rejected the authorization-code exchange; authorize againprovider_upstreamretry_from_userno
AUTHORIZATION_EXPIRED410Authorization link expired after 30 minutes or was consumed; start againvalidation_failureretry_from_userno

Returns 302 when return_url is set; otherwise returns an HTTP 200 result page.

curl "https://api.deepraxis.ai/vault/v1/authorizations/callback"

OAuth client metadata

GET /vault/v1/oauth/client.json · No API Key

Response

HTTP 200

application/json

FieldType / enumRequiredDescription
client_idstringyesClient metadata URL
client_namestringyesClient display name
redirect_urisstring[]yesAllowed OAuth callback URLs
token_endpoint_auth_method"none"yesToken endpoint authentication method
grant_types"authorization_code" / "refresh_token"[]noSupported grant types
response_types"code"[]noSupported authorization response types

Error responses

No additional domain errors.

curl "https://api.deepraxis.ai/vault/v1/oauth/client.json"

Connect page

GET /vault/v1/connect/{token} · No API Key

ParameterLocationDescription
tokenpathOne-time token from connect_url.

Response

HTTP 200

text/html

Confirmation or result page displayed by the browser.

HTTP 410

text/html

Confirmation or result page displayed by the browser.

Error responses

CodeHTTPMeaning, trigger and actionkindrecoveryRetryable
AUTHORIZATION_NOT_FOUND404Authorization or connect link absent; start authorization againvalidation_failurenoneno
AUTHORIZATION_EXPIRED410Authorization link expired after 30 minutes or was consumed; start againvalidation_failureretry_from_userno

Invalid links return 404; expired or consumed links return 410, as HTML pages.

curl "https://api.deepraxis.ai/vault/v1/connect/${TOKEN}"

Continue authorization

POST /vault/v1/connect/{token}/continue · No API Key

ParameterLocationDescription
tokenpathOne-time token from connect_url.

Response

HTTP 302

The Location header redirects to the provider or an allowed return URL.

Error responses

CodeHTTPMeaning, trigger and actionkindrecoveryRetryable
AUTHORIZATION_NOT_FOUND404Authorization or connect link absent; start authorization againvalidation_failurenoneno
AUTHORIZATION_EXPIRED410Authorization link expired after 30 minutes or was consumed; start againvalidation_failureretry_from_userno
OAUTH_DISCOVERY_FAILED400OAuth metadata discovery failed; check the resource URLvalidation_failurecontinue_from_problemno
curl -X POST "https://api.deepraxis.ai/vault/v1/connect/${TOKEN}/continue"

Deny authorization

POST /vault/v1/connect/{token}/deny · No API Key

ParameterLocationDescription
tokenpathOne-time token from connect_url.

Response

HTTP 200

text/html

Confirmation or result page displayed by the browser.

HTTP 302

The Location header redirects to the provider or an allowed return URL.

Error responses

CodeHTTPMeaning, trigger and actionkindrecoveryRetryable
AUTHORIZATION_NOT_FOUND404Authorization or connect link absent; start authorization againvalidation_failurenoneno
AUTHORIZATION_EXPIRED410Authorization link expired after 30 minutes or was consumed; start againvalidation_failureretry_from_userno

Returns 302 when return_url is set; otherwise returns an HTTP 200 result page.

curl -X POST "https://api.deepraxis.ai/vault/v1/connect/${TOKEN}/deny"

Authorization

FieldType / enumRequiredDescription
idstringyesObject ID
type"vault_authorization"yesObject type
vault_idstringyesVault ID
status"pending" / "authorizing" / "completed" / "failed" / "expired"yesCurrent status
resourcestringyesAuthorized resource URL
secret_namestringyesAssociated secret name
connect_urlstringyesOne-time confirmation page, valid for 30 minutes
client_registration"cimd" / "dcr" / nullyescimd: Client ID Metadata Document; dcr: Dynamic Client Registration; null before registration
secret_idstring / nullyesAssociated secret ID, or null
errorobject / nullyesFailure details, or null
error.codestringyesStable error code
error.messagestringyesHuman-readable error message
expires_atdate-timeyesExpiry time, or null
created_atdate-timeyesCreation time
updated_atdate-timeyesLast update time

ReturnUrls

FieldType / enumRequiredDescription
urlsstring[]yesAt most 10 HTTPS URLs, matched exactly
Export

On this page