API Reference

Collector Fleet API

The collector fleet control plane — enrollment, dispatch, tokens, and releases. Auto-generated from the platform OpenAPI schema so it matches the running API.

REST API for this feature — 60 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.

Agent releases

GET /api/agent-releases/

Catalog of published collector-agent versions. Publishing a release

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 → PaginatedCollectorReleaseList

POST /api/agent-releases/

Catalog of published collector-agent versions. Publishing a release

Request body (application/json): CollectorReleaseRequest

Responses: 201 → CollectorRelease

GET /api/agent-releases/{id}/

Catalog of published collector-agent versions. Publishing a release

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this collector release.

Responses: 200 → CollectorRelease

PUT /api/agent-releases/{id}/

Catalog of published collector-agent versions. Publishing a release

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this collector release.

Request body (application/json): CollectorReleaseRequest

Responses: 200 → CollectorRelease

PATCH /api/agent-releases/{id}/

Catalog of published collector-agent versions. Publishing a release

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this collector release.

Request body (application/json): PatchedCollectorReleaseRequest

Responses: 200 → CollectorRelease

DELETE /api/agent-releases/{id}/

Catalog of published collector-agent versions. Publishing a release

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this collector release.

Responses: 204

POST /api/agent-releases/{id}/artifact/

Attach a per-OS/arch collector binary to this release. Its bytes are

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this collector release.

Request body (application/json): CollectorReleaseRequest

Responses: 200 → CollectorRelease


Break glass

GET /api/control-plane/break-glass/

Plain APIViews rather than a DRF router ViewSet (apps.tenants.

Responses: 200

POST /api/control-plane/break-glass/

Plain APIViews rather than a DRF router ViewSet (apps.tenants.

Responses: 200

POST /api/control-plane/break-glass/{id}/approve/

Approve: break glass

ParameterInRequiredTypeDescription
idpathyesstring

Responses: 200

POST /api/control-plane/break-glass/{id}/consume/

Consume: break glass

ParameterInRequiredTypeDescription
idpathyesstring

Responses: 200

POST /api/control-plane/break-glass/{id}/deny/

Deny: break glass

ParameterInRequiredTypeDescription
idpathyesstring

Responses: 200


Collector

GET /api/collector/v1/artifact/{artifact_id}

GET /api/collector/v1/artifact/<id> — stream a collector binary. Integrity

ParameterInRequiredTypeDescription
artifact_idpathyesinteger

Responses: 200

POST /api/collector/v1/enroll

POST /api/collector/v1/enroll — spec §2.2. Public (token-authenticated,

Responses: 200

GET /api/collector/v1/manifest

GET /api/collector/v1/manifest?version=&os=&arch= — a signed update

Responses: 200


Collector releases

GET /api/collector-releases/

List collector releases

ParameterInRequiredTypeDescription
orderingquerynostringWhich field to use when ordering the results.
searchquerynostringA search term.

Responses: 200 → CollectorRelease[]

POST /api/collector-releases/

Create collector release

Request body (application/json): CollectorReleaseRequest

Responses: 201 → CollectorRelease

GET /api/collector-releases/{id}/

Retrieve collector release

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this collector release.

Responses: 200 → CollectorRelease

PUT /api/collector-releases/{id}/

Update collector release

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this collector release.

Request body (application/json): CollectorReleaseRequest

Responses: 200 → CollectorRelease

PATCH /api/collector-releases/{id}/

Update collector release

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this collector release.

Request body (application/json): PatchedCollectorReleaseRequest

Responses: 200 → CollectorRelease

DELETE /api/collector-releases/{id}/

Delete collector release

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this collector release.

Responses: 204

GET /api/collector-releases/{id}/download/

Download: collector release

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this collector release.

Responses: 200 → CollectorRelease

POST /api/collector-releases/{id}/promote/

Promote this downloadable bundle to an auto-update release: extract the

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this collector release.

Request body (application/json): CollectorReleaseRequest

Responses: 200 → CollectorRelease


Collector tokens

GET /api/collector-tokens/

spec §10.1: POST /collector-tokens. The plaintext token is only ever

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 → PaginatedCollectorEnrollTokenList

POST /api/collector-tokens/

spec §10.1: POST /collector-tokens. The plaintext token is only ever

Request body (application/json): CollectorEnrollTokenRequest

Responses: 201 → CollectorEnrollToken

GET /api/collector-tokens/{id}/

spec §10.1: POST /collector-tokens. The plaintext token is only ever

ParameterInRequiredTypeDescription
idpathyesstringA UUID string identifying this collector enroll token.

Responses: 200 → CollectorEnrollToken

PUT /api/collector-tokens/{id}/

spec §10.1: POST /collector-tokens. The plaintext token is only ever

ParameterInRequiredTypeDescription
idpathyesstringA UUID string identifying this collector enroll token.

Request body (application/json): CollectorEnrollTokenRequest

Responses: 200 → CollectorEnrollToken

PATCH /api/collector-tokens/{id}/

spec §10.1: POST /collector-tokens. The plaintext token is only ever

ParameterInRequiredTypeDescription
idpathyesstringA UUID string identifying this collector enroll token.

Request body (application/json): PatchedCollectorEnrollTokenRequest

Responses: 200 → CollectorEnrollToken

DELETE /api/collector-tokens/{id}/

spec §10.1: POST /collector-tokens. The plaintext token is only ever

ParameterInRequiredTypeDescription
idpathyesstringA UUID string identifying this collector enroll token.

Responses: 204

POST /api/collector-tokens/{id}/revoke/

spec §10.1: POST /collector-tokens. The plaintext token is only ever

ParameterInRequiredTypeDescription
idpathyesstringA UUID string identifying this collector enroll token.

Request body (application/json): CollectorEnrollTokenRequest

Responses: 200 → CollectorEnrollToken


Collectors

GET /api/collectors/

spec §10.1: GET /collectors, GET /collectors/{id}, plus

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 → PaginatedCollectorList

GET /api/collectors/{collector_id}/

spec §10.1: GET /collectors, GET /collectors/{id}, plus

ParameterInRequiredTypeDescription
collector_idpathyesstringA unique value identifying this collector.

Responses: 200 → Collector

POST /api/collectors/{collector_id}/apply-update/

Approve an agent upgrade for this collector. Sets target_version — the

ParameterInRequiredTypeDescription
collector_idpathyesstringA unique value identifying this collector.

Request body (application/json): CollectorRequest

Responses: 200 → Collector

POST /api/collectors/{collector_id}/clear-update/

Cancel a pending/approved upgrade target for this collector.

ParameterInRequiredTypeDescription
collector_idpathyesstringA unique value identifying this collector.

Request body (application/json): CollectorRequest

Responses: 200 → Collector

POST /api/collectors/{collector_id}/delete/

Permanently remove a collector row. Cascades its liveness/sessions/

ParameterInRequiredTypeDescription
collector_idpathyesstringA unique value identifying this collector.

Request body (application/json): CollectorRequest

Responses: 200 → Collector

DELETE /api/collectors/{collector_id}/delete/

Permanently remove a collector row. Cascades its liveness/sessions/

ParameterInRequiredTypeDescription
collector_idpathyesstringA unique value identifying this collector.

Responses: 204

POST /api/collectors/{collector_id}/drain/

spec §7.4/§10.1: stop routing new tasks to this collector and

ParameterInRequiredTypeDescription
collector_idpathyesstringA unique value identifying this collector.

Request body (application/json): CollectorRequest

Responses: 200 → Collector

POST /api/collectors/{collector_id}/probe/

spec §10.1: a lightweight connectivity/health check — reports

ParameterInRequiredTypeDescription
collector_idpathyesstringA unique value identifying this collector.

Request body (application/json): CollectorRequest

Responses: 200 → Collector

POST /api/collectors/{collector_id}/revoke/

spec §10.1: GET /collectors, GET /collectors/{id}, plus

ParameterInRequiredTypeDescription
collector_idpathyesstringA unique value identifying this collector.

Request body (application/json): CollectorRequest

Responses: 200 → Collector

POST /api/collectors/{collector_id}/set-data-mask/

Toggle Data Mask mode for this collector. When enabled, the collector

ParameterInRequiredTypeDescription
collector_idpathyesstringA unique value identifying this collector.

Request body (application/json): CollectorRequest

Responses: 200 → Collector

POST /api/collectors/{collector_id}/set-vault-mode/

Changes which credential-resolution mode this collector runs.

ParameterInRequiredTypeDescription
collector_idpathyesstringA unique value identifying this collector.

Request body (application/json): CollectorRequest

Responses: 200 → Collector

POST /api/collectors/{collector_id}/undrain/

spec §10.1: GET /collectors, GET /collectors/{id}, plus

ParameterInRequiredTypeDescription
collector_idpathyesstringA unique value identifying this collector.

Request body (application/json): CollectorRequest

Responses: 200 → Collector


Dispatches

GET /api/dispatches/

spec §10.1: GET /dispatches — the indeterminate queue is just this

ParameterInRequiredTypeDescription
collectorquerynostring
op_classquerynostring* read - Read
orderingquerynostringWhich field to use when ordering the results.
pagequerynointegerA page number within the paginated result set.
page_sizequerynointegerNumber of results to return per page.
providerquerynostring
searchquerynostringA search term.
statequerynostring* queued - Queued

Responses: 200 → PaginatedTaskDispatchList

GET /api/dispatches/{id}/

spec §10.1: GET /dispatches — the indeterminate queue is just this

ParameterInRequiredTypeDescription
idpathyesstringA UUID string identifying this task dispatch.

Responses: 200 → TaskDispatch


Eula acceptances

GET /api/control-plane/eula-acceptances/

Control Plane EULA acceptance ledger (spec §8) — read-only.

ParameterInRequiredTypeDescription
eula_versionquerynostring
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.
tenantquerynostring

Responses: 200 → PaginatedEulaAcceptanceList

GET /api/control-plane/eula-acceptances/{id}/

Control Plane EULA acceptance ledger (spec §8) — read-only.

ParameterInRequiredTypeDescription
idpathyesstringA UUID string identifying this eula acceptance.

Responses: 200 → EulaAcceptance


Requests

GET /api/control-plane/requests/

Control Plane inbox (spec §8) — approve triggers the provisioning

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.
statequerynostring* pending - Pending

Responses: 200 → PaginatedTenantRequestList

GET /api/control-plane/requests/{id}/

Control Plane inbox (spec §8) — approve triggers the provisioning

ParameterInRequiredTypeDescription
idpathyesstringA UUID string identifying this tenant request.

Responses: 200 → TenantRequest

POST /api/control-plane/requests/{id}/approve/

Control Plane inbox (spec §8) — approve triggers the provisioning

ParameterInRequiredTypeDescription
idpathyesstringA UUID string identifying this tenant request.

Responses: 200 → TenantRequest

POST /api/control-plane/requests/{id}/reject/

Control Plane inbox (spec §8) — approve triggers the provisioning

ParameterInRequiredTypeDescription
idpathyesstringA UUID string identifying this tenant request.

Responses: 200 → TenantRequest

POST /api/control-plane/requests/{id}/revoke/

Deprovision an already-approved request: reverse its provisioning run

ParameterInRequiredTypeDescription
idpathyesstringA UUID string identifying this tenant request.

Responses: 200 → TenantRequest


Tenants

GET /api/control-plane/tenants/

Control Plane tenant registry (spec §8) — no create/delete here;

ParameterInRequiredTypeDescription
kindquerynostring* admin - Admin
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.
statequerynostring* provisioning - Provisioning

Responses: 200 → PaginatedTenantList

POST /api/control-plane/tenants/provision/

Direct production-tenant creation (VS-SPEC-SAAS-LICENSING-001) — no

Request body (application/json): TenantRequest

Responses: 200 → Tenant

GET /api/control-plane/tenants/{id}/

Control Plane tenant registry (spec §8) — no create/delete here;

ParameterInRequiredTypeDescription
idpathyesstringA UUID string identifying this tenant.

Responses: 200 → Tenant

GET /api/control-plane/tenants/{id}/entitlement/

GET the tenant's entitlement, or POST to set/update it (+ audit).

ParameterInRequiredTypeDescription
idpathyesstringA UUID string identifying this tenant.

Responses: 200 → Tenant

POST /api/control-plane/tenants/{id}/entitlement/

GET the tenant's entitlement, or POST to set/update it (+ audit).

ParameterInRequiredTypeDescription
idpathyesstringA UUID string identifying this tenant.

Request body (application/json): TenantRequest

Responses: 200 → Tenant

POST /api/control-plane/tenants/{id}/extend-expiry/

The safety valve ahead of the daily crypto-shred sweep

ParameterInRequiredTypeDescription
idpathyesstringA UUID string identifying this tenant.

Request body (application/json): TenantRequest

Responses: 200 → Tenant

POST /api/control-plane/tenants/{id}/resume/

Control Plane tenant registry (spec §8) — no create/delete here;

ParameterInRequiredTypeDescription
idpathyesstringA UUID string identifying this tenant.

Request body (application/json): TenantRequest

Responses: 200 → Tenant

POST /api/control-plane/tenants/{id}/rotate-kek/

Control Plane tenant registry (spec §8) — no create/delete here;

ParameterInRequiredTypeDescription
idpathyesstringA UUID string identifying this tenant.

Request body (application/json): TenantRequest

Responses: 200 → Tenant

POST /api/control-plane/tenants/{id}/suspend/

Control Plane tenant registry (spec §8) — no create/delete here;

ParameterInRequiredTypeDescription
idpathyesstringA UUID string identifying this tenant.

Request body (application/json): TenantRequest

Responses: 200 → Tenant


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