API Reference

Secret Vault API

The Versus Secret Vault — secrets, external-vault integrations, stored credentials, and rotation. Auto-generated from the platform OpenAPI schema so it matches the running API.

REST API for this feature — 82 operations across 45 resource paths, auto-generated from the platform's live OpenAPI schema (drf-spectacular).

Base URL https://<your-versus-host>/api · Auth Authorization: Bearer <JWT> (from POST /api/auth/token/) · 📄 Download the OpenAPI spec for Postman/Insomnia/Swagger · see the API overview for pagination, filtering, and errors.

Credentials

GET /api/credentials/

Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated

ParameterInRequiredTypeDescription
orderingquerynostringWhich field to use when ordering the results.
pagequerynointegerA page number within the paginated result set.
page_sizequerynointegerNumber of results to return per page.
searchquerynostringA search term.

Responses: 200 → PaginatedCredentialList

POST /api/credentials/

Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated

Request body (application/json): CredentialRequest

Responses: 201 → Credential

GET /api/credentials/{id}/

Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this credential.

Responses: 200 → Credential

PUT /api/credentials/{id}/

Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this credential.

Request body (application/json): CredentialRequest

Responses: 200 → Credential

PATCH /api/credentials/{id}/

Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this credential.

Request body (application/json): PatchedCredentialRequest

Responses: 200 → Credential

DELETE /api/credentials/{id}/

Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this credential.

Responses: 204


Extvault

GET /api/extvault/connections/

Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated

ParameterInRequiredTypeDescription
orderingquerynostringWhich field to use when ordering the results.
pagequerynointegerA page number within the paginated result set.
page_sizequerynointegerNumber of results to return per page.
searchquerynostringA search term.

Responses: 200 → PaginatedExternalVaultConnectionList

POST /api/extvault/connections/

Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated

Request body (application/json): ExternalVaultConnectionRequest

Responses: 201 → ExternalVaultConnection

GET /api/extvault/connections/{id}/

Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated

ParameterInRequiredTypeDescription
idpathyesstringA UUID string identifying this external vault connection.

Responses: 200 → ExternalVaultConnection

PUT /api/extvault/connections/{id}/

Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated

ParameterInRequiredTypeDescription
idpathyesstringA UUID string identifying this external vault connection.

Request body (application/json): ExternalVaultConnectionRequest

Responses: 200 → ExternalVaultConnection

PATCH /api/extvault/connections/{id}/

Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated

ParameterInRequiredTypeDescription
idpathyesstringA UUID string identifying this external vault connection.

Request body (application/json): PatchedExternalVaultConnectionRequest

Responses: 200 → ExternalVaultConnection

DELETE /api/extvault/connections/{id}/

Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated

ParameterInRequiredTypeDescription
idpathyesstringA UUID string identifying this external vault connection.

Responses: 204

POST /api/extvault/connections/{id}/test/

Authenticate to the external vault + a cheap reachability check. Updates

ParameterInRequiredTypeDescription
idpathyesstringA UUID string identifying this external vault connection.

Request body (application/json): ExternalVaultConnectionRequest

Responses: 200 → ExternalVaultConnection

GET /api/extvault/secrets/

Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated

ParameterInRequiredTypeDescription
orderingquerynostringWhich field to use when ordering the results.
pagequerynointegerA page number within the paginated result set.
page_sizequerynointegerNumber of results to return per page.
searchquerynostringA search term.

Responses: 200 → PaginatedExternalSecretRefList

POST /api/extvault/secrets/

Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated

Request body (application/json): ExternalSecretRefRequest

Responses: 201 → ExternalSecretRef

GET /api/extvault/secrets/{id}/

Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated

ParameterInRequiredTypeDescription
idpathyesstringA UUID string identifying this external secret ref.

Responses: 200 → ExternalSecretRef

PUT /api/extvault/secrets/{id}/

Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated

ParameterInRequiredTypeDescription
idpathyesstringA UUID string identifying this external secret ref.

Request body (application/json): ExternalSecretRefRequest

Responses: 200 → ExternalSecretRef

PATCH /api/extvault/secrets/{id}/

Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated

ParameterInRequiredTypeDescription
idpathyesstringA UUID string identifying this external secret ref.

Request body (application/json): PatchedExternalSecretRefRequest

Responses: 200 → ExternalSecretRef

DELETE /api/extvault/secrets/{id}/

Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated

ParameterInRequiredTypeDescription
idpathyesstringA UUID string identifying this external secret ref.

Responses: 204

POST /api/extvault/secrets/{id}/test/

Resolve the secret once to confirm the path + keys are correct. Returns

ParameterInRequiredTypeDescription
idpathyesstringA UUID string identifying this external secret ref.

Request body (application/json): ExternalSecretRefRequest

Responses: 200 → ExternalSecretRef


Password changes

GET /api/password-changes/

Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated

ParameterInRequiredTypeDescription
orderingquerynostringWhich field to use when ordering the results.
pagequerynointegerA page number within the paginated result set.
page_sizequerynointegerNumber of results to return per page.
searchquerynostringA search term.
statusquerynostring* pending - Pending

Responses: 200 → PaginatedPasswordChangeList

POST /api/password-changes/

Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated

Request body (application/json): PasswordChangeRequest

Responses: 201 → PasswordChange

GET /api/password-changes/{id}/

Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this password change.

Responses: 200 → PasswordChange

PUT /api/password-changes/{id}/

Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this password change.

Request body (application/json): PasswordChangeRequest

Responses: 200 → PasswordChange

PATCH /api/password-changes/{id}/

Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this password change.

Request body (application/json): PatchedPasswordChangeRequest

Responses: 200 → PasswordChange

DELETE /api/password-changes/{id}/

Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this password change.

Responses: 204


Vault

GET /api/vault/app-principals/

Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated

ParameterInRequiredTypeDescription
pagequerynointegerA page number within the paginated result set.
page_sizequerynointegerNumber of results to return per page.
searchquerynostringA search term.

Responses: 200 → PaginatedVaultAppPrincipalList

POST /api/vault/app-principals/

Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated

Request body (application/json): VaultAppPrincipalRequest

Responses: 201 → VaultAppPrincipal

GET /api/vault/app-principals/{id}/

Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this vault app principal.

Responses: 200 → VaultAppPrincipal

PUT /api/vault/app-principals/{id}/

Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this vault app principal.

Request body (application/json): VaultAppPrincipalRequest

Responses: 200 → VaultAppPrincipal

PATCH /api/vault/app-principals/{id}/

Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this vault app principal.

Request body (application/json): PatchedVaultAppPrincipalRequest

Responses: 200 → VaultAppPrincipal

DELETE /api/vault/app-principals/{id}/

Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this vault app principal.

Responses: 204

GET /api/vault/capabilities/

List capabilitys

Responses: 200

GET /api/vault/checkouts/

List checkouts

Responses: 200

POST /api/vault/checkouts/{id}/force-release/

Force release: checkout

ParameterInRequiredTypeDescription
idpathyesstring

Responses: 200

GET /api/vault/enrollments/

List enrollments

Responses: 200

POST /api/vault/enrollments/

Create enrollment

Responses: 201

GET /api/vault/enrollments/unenrolled_devices/

List unenrolled devices

Responses: 200

DELETE /api/vault/enrollments/{id}/

Delete enrollment

ParameterInRequiredTypeDescription
idpathyesstring

Responses: 204

POST /api/vault/enrollments/{id}/verify/

Verify: enrollment

ParameterInRequiredTypeDescription
idpathyesstring

Responses: 200

GET /api/vault/fetch

Machine secret fetch for service accounts. Authenticated ONLY by an app

Responses: 200

GET /api/vault/leases/

List leases

Responses: 200

POST /api/vault/leases/

Create lease

Responses: 201

POST /api/vault/leases/{id}/renew/

Renew: lease

ParameterInRequiredTypeDescription
idpathyesstring

Responses: 200

POST /api/vault/leases/{id}/revoke/

Revoke: lease

ParameterInRequiredTypeDescription
idpathyesstring

Responses: 200

GET /api/vault/mounts/

List mounts

ParameterInRequiredTypeDescription
pagequerynointegerA page number within the paginated result set.
page_sizequerynointegerNumber of results to return per page.
searchquerynostringA search term.

Responses: 200 → PaginatedVaultMountList

POST /api/vault/mounts/

Create mount

Request body (application/json): VaultMountRequest

Responses: 201 → VaultMount

GET /api/vault/mounts/{id}/

Retrieve mount

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this vault mount.

Responses: 200 → VaultMount

PUT /api/vault/mounts/{id}/

Update mount

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this vault mount.

Request body (application/json): VaultMountRequest

Responses: 200 → VaultMount

PATCH /api/vault/mounts/{id}/

Update mount

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this vault mount.

Request body (application/json): PatchedVaultMountRequest

Responses: 200 → VaultMount

DELETE /api/vault/mounts/{id}/

Delete mount

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this vault mount.

Responses: 204

POST /api/vault/mounts/{id}/test_connection/

Test connection: mount

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this vault mount.

Request body (application/json): VaultMountRequest

Responses: 200 → VaultMount

GET /api/vault/path-policies/

List path policys

ParameterInRequiredTypeDescription
pagequerynointegerA page number within the paginated result set.
page_sizequerynointegerNumber of results to return per page.
searchquerynostringA search term.

Responses: 200 → PaginatedVaultPathPolicyList

POST /api/vault/path-policies/

Create path policy

Request body (application/json): VaultPathPolicyRequest

Responses: 201 → VaultPathPolicy

GET /api/vault/path-policies/{id}/

Retrieve path policy

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this vault path policy.

Responses: 200 → VaultPathPolicy

PUT /api/vault/path-policies/{id}/

Update path policy

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this vault path policy.

Request body (application/json): VaultPathPolicyRequest

Responses: 200 → VaultPathPolicy

PATCH /api/vault/path-policies/{id}/

Update path policy

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this vault path policy.

Request body (application/json): PatchedVaultPathPolicyRequest

Responses: 200 → VaultPathPolicy

DELETE /api/vault/path-policies/{id}/

Delete path policy

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this vault path policy.

Responses: 204

GET /api/vault/reveals/

List reveals

Responses: 200

POST /api/vault/reveals/{id}/approve/

Approve: reveal

ParameterInRequiredTypeDescription
idpathyesstring

Responses: 200

POST /api/vault/reveals/{id}/consume/

Consume: reveal

ParameterInRequiredTypeDescription
idpathyesstring

Responses: 200

POST /api/vault/reveals/{id}/deny/

Deny: reveal

ParameterInRequiredTypeDescription
idpathyesstring

Responses: 200

GET /api/vault/rotation-policies/

List rotation policys

ParameterInRequiredTypeDescription
orderingquerynostringWhich field to use when ordering the results.
pagequerynointegerA page number within the paginated result set.
page_sizequerynointegerNumber of results to return per page.
searchquerynostringA search term.

Responses: 200 → PaginatedVaultRotationPolicyList

POST /api/vault/rotation-policies/

Create rotation policy

Request body (application/json): VaultRotationPolicyRequest

Responses: 201 → VaultRotationPolicy

GET /api/vault/rotation-policies/{id}/

Retrieve rotation policy

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this vault rotation policy.

Responses: 200 → VaultRotationPolicy

PUT /api/vault/rotation-policies/{id}/

Update rotation policy

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this vault rotation policy.

Request body (application/json): VaultRotationPolicyRequest

Responses: 200 → VaultRotationPolicy

PATCH /api/vault/rotation-policies/{id}/

Update rotation policy

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this vault rotation policy.

Request body (application/json): PatchedVaultRotationPolicyRequest

Responses: 200 → VaultRotationPolicy

DELETE /api/vault/rotation-policies/{id}/

Delete rotation policy

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this vault rotation policy.

Responses: 204

GET /api/vault/secrets/

List secrets

Responses: 200

POST /api/vault/secrets/

Create secret

Responses: 201

GET /api/vault/secrets/{id}/

Retrieve secret

ParameterInRequiredTypeDescription
idpathyesstring

Responses: 200

DELETE /api/vault/secrets/{id}/

Delete secret

ParameterInRequiredTypeDescription
idpathyesstring

Responses: 204

POST /api/vault/secrets/{id}/checkin/

Checkin: secret

ParameterInRequiredTypeDescription
idpathyesstring

Responses: 200

POST /api/vault/secrets/{id}/checkout/

Checkout: secret

ParameterInRequiredTypeDescription
idpathyesstring

Responses: 200

POST /api/vault/secrets/{id}/hard_delete/

Hard delete: secret

ParameterInRequiredTypeDescription
idpathyesstring

Responses: 200

GET /api/vault/secrets/{id}/read_value/

Read value: secret

ParameterInRequiredTypeDescription
idpathyesstring

Responses: 200

POST /api/vault/secrets/{id}/reveal-request/

Reveal request: secret

ParameterInRequiredTypeDescription
idpathyesstring

Responses: 200

POST /api/vault/secrets/{id}/rotate/

Rotate: secret

ParameterInRequiredTypeDescription
idpathyesstring

Responses: 200

POST /api/vault/secrets/{id}/rotation-policy/

Attach (POST {"policy_id": <id>}) or detach (DELETE) a rotation

ParameterInRequiredTypeDescription
idpathyesstring

Responses: 200

DELETE /api/vault/secrets/{id}/rotation-policy/

Attach (POST {"policy_id": <id>}) or detach (DELETE) a rotation

ParameterInRequiredTypeDescription
idpathyesstring

Responses: 204

GET /api/vault/secrets/{id}/versions/

Versions: secret

ParameterInRequiredTypeDescription
idpathyesstring

Responses: 200

POST /api/vault/token

Create token

Responses: 200


Auto-generated from drf-spectacular OpenAPI. Endpoint descriptions come from viewset docstrings/serializers; enriching those improves this page on the next generation.