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· AuthAuthorization: Bearer <JWT>(fromPOST /api/auth/token/) · 📄 Download the OpenAPI spec for Postman/Insomnia/Swagger · see the API overview for pagination, filtering, and errors.
GET /api/agent-releases/Catalog of published collector-agent versions. Publishing a release
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
ordering | query | no | string | Which field to use when ordering the results. |
page | query | no | integer | A page number within the paginated result set. |
page_size | query | no | integer | Number of results to return per page. |
search | query | no | string | A 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
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | integer | A unique integer value identifying this collector release. |
Responses: 200 → CollectorRelease
PUT /api/agent-releases/{id}/Catalog of published collector-agent versions. Publishing a release
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | integer | A 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
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | integer | A 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
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | integer | A 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
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | integer | A unique integer value identifying this collector release. |
Request body (application/json): CollectorReleaseRequest
Responses: 200 → CollectorRelease
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
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string |
Responses: 200
POST /api/control-plane/break-glass/{id}/consume/Consume: break glass
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string |
Responses: 200
POST /api/control-plane/break-glass/{id}/deny/Deny: break glass
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string |
Responses: 200
GET /api/collector/v1/artifact/{artifact_id}GET /api/collector/v1/artifact/<id> — stream a collector binary. Integrity
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
artifact_id | path | yes | integer |
Responses: 200
POST /api/collector/v1/enrollPOST /api/collector/v1/enroll — spec §2.2. Public (token-authenticated,
Responses: 200
GET /api/collector/v1/manifestGET /api/collector/v1/manifest?version=&os=&arch= — a signed update
Responses: 200
GET /api/collector-releases/List collector releases
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
ordering | query | no | string | Which field to use when ordering the results. |
search | query | no | string | A 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
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | integer | A unique integer value identifying this collector release. |
Responses: 200 → CollectorRelease
PUT /api/collector-releases/{id}/Update collector release
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | integer | A unique integer value identifying this collector release. |
Request body (application/json): CollectorReleaseRequest
Responses: 200 → CollectorRelease
PATCH /api/collector-releases/{id}/Update collector release
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | integer | A unique integer value identifying this collector release. |
Request body (application/json): PatchedCollectorReleaseRequest
Responses: 200 → CollectorRelease
DELETE /api/collector-releases/{id}/Delete collector release
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | integer | A unique integer value identifying this collector release. |
Responses: 204
GET /api/collector-releases/{id}/download/Download: collector release
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | integer | A 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
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | integer | A unique integer value identifying this collector release. |
Request body (application/json): CollectorReleaseRequest
Responses: 200 → CollectorRelease
GET /api/collector-tokens/spec §10.1: POST /collector-tokens. The plaintext token is only ever
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
ordering | query | no | string | Which field to use when ordering the results. |
page | query | no | integer | A page number within the paginated result set. |
page_size | query | no | integer | Number of results to return per page. |
search | query | no | string | A 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
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | A 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
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | A 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
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | A 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
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | A 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
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | A UUID string identifying this collector enroll token. |
Request body (application/json): CollectorEnrollTokenRequest
Responses: 200 → CollectorEnrollToken
GET /api/collectors/spec §10.1: GET /collectors, GET /collectors/{id}, plus
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
ordering | query | no | string | Which field to use when ordering the results. |
page | query | no | integer | A page number within the paginated result set. |
page_size | query | no | integer | Number of results to return per page. |
search | query | no | string | A search term. |
Responses: 200 → PaginatedCollectorList
GET /api/collectors/{collector_id}/spec §10.1: GET /collectors, GET /collectors/{id}, plus
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
collector_id | path | yes | string | A 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
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
collector_id | path | yes | string | A 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.
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
collector_id | path | yes | string | A 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/
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
collector_id | path | yes | string | A 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/
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
collector_id | path | yes | string | A 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
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
collector_id | path | yes | string | A 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
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
collector_id | path | yes | string | A 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
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
collector_id | path | yes | string | A 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
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
collector_id | path | yes | string | A 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.
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
collector_id | path | yes | string | A 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
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
collector_id | path | yes | string | A unique value identifying this collector. |
Request body (application/json): CollectorRequest
Responses: 200 → Collector
GET /api/dispatches/spec §10.1: GET /dispatches — the indeterminate queue is just this
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
collector | query | no | string | |
op_class | query | no | string | * read - Read |
ordering | query | no | string | Which field to use when ordering the results. |
page | query | no | integer | A page number within the paginated result set. |
page_size | query | no | integer | Number of results to return per page. |
provider | query | no | string | |
search | query | no | string | A search term. |
state | query | no | string | * queued - Queued |
Responses: 200 → PaginatedTaskDispatchList
GET /api/dispatches/{id}/spec §10.1: GET /dispatches — the indeterminate queue is just this
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | A UUID string identifying this task dispatch. |
Responses: 200 → TaskDispatch
GET /api/control-plane/eula-acceptances/Control Plane EULA acceptance ledger (spec §8) — read-only.
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
eula_version | query | no | string | |
ordering | query | no | string | Which field to use when ordering the results. |
page | query | no | integer | A page number within the paginated result set. |
page_size | query | no | integer | Number of results to return per page. |
search | query | no | string | A search term. |
tenant | query | no | string |
Responses: 200 → PaginatedEulaAcceptanceList
GET /api/control-plane/eula-acceptances/{id}/Control Plane EULA acceptance ledger (spec §8) — read-only.
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | A UUID string identifying this eula acceptance. |
Responses: 200 → EulaAcceptance
GET /api/control-plane/requests/Control Plane inbox (spec §8) — approve triggers the provisioning
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
ordering | query | no | string | Which field to use when ordering the results. |
page | query | no | integer | A page number within the paginated result set. |
page_size | query | no | integer | Number of results to return per page. |
search | query | no | string | A search term. |
state | query | no | string | * pending - Pending |
Responses: 200 → PaginatedTenantRequestList
GET /api/control-plane/requests/{id}/Control Plane inbox (spec §8) — approve triggers the provisioning
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | A 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
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | A 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
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | A 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
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | A UUID string identifying this tenant request. |
Responses: 200 → TenantRequest
GET /api/control-plane/tenants/Control Plane tenant registry (spec §8) — no create/delete here;
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
kind | query | no | string | * admin - Admin |
ordering | query | no | string | Which field to use when ordering the results. |
page | query | no | integer | A page number within the paginated result set. |
page_size | query | no | integer | Number of results to return per page. |
search | query | no | string | A search term. |
state | query | no | string | * 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;
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | A 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).
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | A 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).
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | A 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
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | A 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;
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | A 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;
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | A 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;
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | string | A 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.