TLS certificate lifecycle — certificates, certificate authorities, ACME, and TLS profiles. Auto-generated from the platform OpenAPI schema so it matches the running API.
REST API for this feature — 76 operations across 48 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/acme-server/accounts/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
ca | query | no | integer | |
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. |
status | query | no | string | * valid - Valid |
Responses: 200 → PaginatedAcmeAccountList
GET /api/acme-server/accounts/{id}/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | integer | A unique integer value identifying this acme account. |
Responses: 200 → AcmeAccount
POST /api/acme-server/accounts/{id}/deactivate/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | integer | A unique integer value identifying this acme account. |
Request body (application/json): AcmeAccountRequest
Responses: 200 → AcmeAccount
GET /api/acme-server/ca/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
| 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 → PaginatedInternalCAList
POST /api/acme-server/ca/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
Request body (application/json): InternalCARequest
Responses: 201 → InternalCA
GET /api/acme-server/ca/{id}/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | integer | A unique integer value identifying this Internal CA. |
Responses: 200 → InternalCA
PUT /api/acme-server/ca/{id}/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | integer | A unique integer value identifying this Internal CA. |
Request body (application/json): InternalCARequest
Responses: 200 → InternalCA
PATCH /api/acme-server/ca/{id}/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | integer | A unique integer value identifying this Internal CA. |
Request body (application/json): PatchedInternalCARequest
Responses: 200 → InternalCA
DELETE /api/acme-server/ca/{id}/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | integer | A unique integer value identifying this Internal CA. |
Responses: 204
GET /api/acme-server/ca/{id}/ca_cert/Download the CA certificate as PEM (for distributing to clients).
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | integer | A unique integer value identifying this Internal CA. |
Responses: 200 → InternalCA
GET /api/acme-server/ca/{id}/directory_url/Return the ACME directory URL for this CA.
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | integer | A unique integer value identifying this Internal CA. |
Responses: 200 → InternalCA
POST /api/acme-server/ca/{id}/generate_ca/Generate a new CA key and self-signed certificate for this CA config.
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | integer | A unique integer value identifying this Internal CA. |
Request body (application/json): InternalCARequest
Responses: 200 → InternalCA
GET /api/acme-server/orders/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
| 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. |
status | query | no | string | * pending - Pending |
Responses: 200 → PaginatedAcmeOrderList
GET /api/acme-server/orders/{id}/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | integer | A unique integer value identifying this acme order. |
Responses: 200 → AcmeOrder
GET /api/acme-server/orders/{id}/certificate/Download issued certificate PEM.
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | integer | A unique integer value identifying this acme order. |
Responses: 200 → AcmeOrder
GET /api/certificates/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
device | query | no | integer | |
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 → PaginatedCertificateList
POST /api/certificates/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
Request body (application/json): CertificateRequest
Responses: 201 → Certificate
GET /api/certificates/{id}/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | integer | A unique integer value identifying this certificate. |
Responses: 200 → Certificate
PUT /api/certificates/{id}/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | integer | A unique integer value identifying this certificate. |
Request body (application/json): CertificateRequest
Responses: 200 → Certificate
PATCH /api/certificates/{id}/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | integer | A unique integer value identifying this certificate. |
Request body (application/json): PatchedCertificateRequest
Responses: 200 → Certificate
DELETE /api/certificates/{id}/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | integer | A unique integer value identifying this certificate. |
Responses: 204
GET /api/certs/certificates/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
auto_renew | query | no | boolean | |
ca_account | query | no | integer | |
key_source | query | no | string | * versus - Versus-generated (key stored in Versus) |
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. |
status | query | no | string | * draft - Draft |
Responses: 200 → PaginatedManagedCertificateListList
POST /api/certs/certificates/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
Request body (application/json): ManagedCertificateRequest
Responses: 201 → ManagedCertificate
GET /api/certs/certificates/expiring_soon/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
Responses: 200 → ManagedCertificate
GET /api/certs/certificates/{id}/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | integer | A unique integer value identifying this managed certificate. |
Responses: 200 → ManagedCertificate
PUT /api/certs/certificates/{id}/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | integer | A unique integer value identifying this managed certificate. |
Request body (application/json): ManagedCertificateRequest
Responses: 200 → ManagedCertificate
PATCH /api/certs/certificates/{id}/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | integer | A unique integer value identifying this managed certificate. |
Request body (application/json): PatchedManagedCertificateRequest
Responses: 200 → ManagedCertificate
DELETE /api/certs/certificates/{id}/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | integer | A unique integer value identifying this managed certificate. |
Responses: 204
POST /api/certs/certificates/{id}/approve/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | integer | A unique integer value identifying this managed certificate. |
Request body (application/json): ManagedCertificateRequest
Responses: 200 → ManagedCertificate
GET /api/certs/certificates/{id}/chain/Return the parsed certificate chain for display.
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | integer | A unique integer value identifying this managed certificate. |
Responses: 200 → ManagedCertificate
POST /api/certs/certificates/{id}/deploy/Start the 'cert-deploy' workflow for this managed certificate: discover
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | integer | A unique integer value identifying this managed certificate. |
Request body (application/json): ManagedCertificateRequest
Responses: 200 → ManagedCertificate
POST /api/certs/certificates/{id}/discover_targets/Auto-discover the device/SSL-profile targets that currently serve this
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | integer | A unique integer value identifying this managed certificate. |
Request body (application/json): ManagedCertificateRequest
Responses: 200 → ManagedCertificate
POST /api/certs/certificates/{id}/reject/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | integer | A unique integer value identifying this managed certificate. |
Request body (application/json): ManagedCertificateRequest
Responses: 200 → ManagedCertificate
GET /api/certs/deployments/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
certificate | query | no | integer | |
device | query | no | integer | |
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. |
status | query | no | string | * deployed - Deployed |
Responses: 200 → PaginatedCertificateDeploymentList
GET /api/certs/deployments/{id}/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | integer | A unique integer value identifying this certificate deployment. |
Responses: 200 → CertificateDeployment
GET /api/clm/ca-accounts/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
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 → PaginatedCAAccountList
POST /api/clm/ca-accounts/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
Request body (application/json): CAAccountRequest
Responses: 201 → CAAccount
GET /api/clm/ca-accounts/{id}/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | integer | A unique integer value identifying this ca account. |
Responses: 200 → CAAccount
PUT /api/clm/ca-accounts/{id}/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | integer | A unique integer value identifying this ca account. |
Request body (application/json): CAAccountRequest
Responses: 200 → CAAccount
PATCH /api/clm/ca-accounts/{id}/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | integer | A unique integer value identifying this ca account. |
Request body (application/json): PatchedCAAccountRequest
Responses: 200 → CAAccount
DELETE /api/clm/ca-accounts/{id}/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | integer | A unique integer value identifying this ca account. |
Responses: 204
POST /api/clm/ca-accounts/{id}/generate_ca/Generate a self-signed CA key + certificate for a versus_ca account.
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | integer | A unique integer value identifying this ca account. |
Request body (application/json): CAAccountRequest
Responses: 200 → CAAccount
POST /api/clm/ca-accounts/{id}/register_account/Register or recover an ACME account for this CA account.
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | integer | A unique integer value identifying this ca account. |
Request body (application/json): CAAccountRequest
Responses: 200 → CAAccount
POST /api/clm/ca-accounts/{id}/test_connection/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | integer | A unique integer value identifying this ca account. |
Request body (application/json): CAAccountRequest
Responses: 200 → CAAccount
GET /api/clm/certificates/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
| 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 → PaginatedCertificateRecordListList
POST /api/clm/certificates/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
Request body (application/json): CertificateRecordListRequest
Responses: 201 → CertificateRecordList
POST /api/clm/certificates/import/Import certificates (and optionally private keys) into the CLM inventory.
Request body (application/json): CertificateRecordListRequest
Responses: 200 → CertificateRecordList
POST /api/clm/certificates/refresh_expiry/Trigger a bulk expiry lifecycle refresh.
Request body (application/json): CertificateRecordListRequest
Responses: 200 → CertificateRecordList
POST /api/clm/certificates/sync-from-devices/Bulk-import all applications.Certificate records (device-fetched certs)
Request body (application/json): CertificateRecordListRequest
Responses: 200 → CertificateRecordList
GET /api/clm/certificates/{id}/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | integer | A unique integer value identifying this certificate record. |
Responses: 200 → CertificateRecordDetail
PUT /api/clm/certificates/{id}/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | integer | A unique integer value identifying this certificate record. |
Request body (application/json): CertificateRecordListRequest
Responses: 200 → CertificateRecordList
PATCH /api/clm/certificates/{id}/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | integer | A unique integer value identifying this certificate record. |
Request body (application/json): PatchedCertificateRecordListRequest
Responses: 200 → CertificateRecordList
DELETE /api/clm/certificates/{id}/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | integer | A unique integer value identifying this certificate record. |
Responses: 204
POST /api/clm/certificates/{id}/adopt/Adopt a discovered inventory cert into operational management: create a
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | integer | A unique integer value identifying this certificate record. |
Request body (application/json): CertificateRecordListRequest
Responses: 200 → CertificateRecordList
GET /api/clm/certificates/{id}/export_pkcs12/Export a certificate + private key as PKCS#12.
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | integer | A unique integer value identifying this certificate record. |
Responses: 200 → CertificateRecordList
POST /api/clm/certificates/{id}/transition/Manually transition a certificate to a new lifecycle state.
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | integer | A unique integer value identifying this certificate record. |
Request body (application/json): CertificateRecordListRequest
Responses: 200 → CertificateRecordList
GET /api/clm/discovery-jobs/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
| 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 → PaginatedDiscoveryJobList
POST /api/clm/discovery-jobs/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
Request body (application/json): DiscoveryJobRequest
Responses: 201 → DiscoveryJob
GET /api/clm/discovery-jobs/{id}/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | integer | A unique integer value identifying this discovery job. |
Responses: 200 → DiscoveryJob
PUT /api/clm/discovery-jobs/{id}/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | integer | A unique integer value identifying this discovery job. |
Request body (application/json): DiscoveryJobRequest
Responses: 200 → DiscoveryJob
PATCH /api/clm/discovery-jobs/{id}/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | integer | A unique integer value identifying this discovery job. |
Request body (application/json): PatchedDiscoveryJobRequest
Responses: 200 → DiscoveryJob
DELETE /api/clm/discovery-jobs/{id}/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | integer | A unique integer value identifying this discovery job. |
Responses: 204
POST /api/clm/discovery-jobs/{id}/cancel/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | integer | A unique integer value identifying this discovery job. |
Request body (application/json): DiscoveryJobRequest
Responses: 200 → DiscoveryJob
POST /api/clm/discovery-jobs/{id}/run/Kick off a discovery job in a background thread.
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | integer | A unique integer value identifying this discovery job. |
Request body (application/json): DiscoveryJobRequest
Responses: 200 → DiscoveryJob
GET /api/clm/escrow-access-log/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
| 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. |
Responses: 200 → PaginatedEscrowAccessLogList
GET /api/clm/escrow-access-log/{id}/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | integer | A unique integer value identifying this escrow access log. |
Responses: 200 → EscrowAccessLog
GET /api/clm/escrow-keys/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
| 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 → PaginatedEscrowKeyList
GET /api/clm/escrow-keys/{id}/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | integer | A unique integer value identifying this escrow key. |
Responses: 200 → EscrowKey
GET /api/clm/profiles/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
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 → PaginatedCertificateProfileList
POST /api/clm/profiles/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
Request body (application/json): CertificateProfileRequest
Responses: 201 → CertificateProfile
GET /api/clm/profiles/{id}/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | integer | A unique integer value identifying this certificate profile. |
Responses: 200 → CertificateProfile
PUT /api/clm/profiles/{id}/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | integer | A unique integer value identifying this certificate profile. |
Request body (application/json): CertificateProfileRequest
Responses: 200 → CertificateProfile
PATCH /api/clm/profiles/{id}/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | integer | A unique integer value identifying this certificate profile. |
Request body (application/json): PatchedCertificateProfileRequest
Responses: 200 → CertificateProfile
DELETE /api/clm/profiles/{id}/Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | integer | A unique integer value identifying this certificate profile. |
Responses: 204
GET /api/tls-profiles/List tls profiles
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
device | query | no | integer | |
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. |
partition | query | no | string | |
search | query | no | string | A search term. |
side | query | no | string | * client - Client SSL |
Responses: 200 → PaginatedTLSProfileList
GET /api/tls-profiles/{id}/Retrieve tls profile
| Parameter | In | Required | Type | Description |
|---|---|---|---|---|
id | path | yes | integer | A unique integer value identifying this tls profile. |
Responses: 200 → TLSProfile
Auto-generated from drf-spectacular OpenAPI. Endpoint descriptions come from viewset docstrings/serializers; enriching those improves this page on the next generation.