API Reference

CI/CD & Automation API

CI/CD and infrastructure automation — pipelines, Git repositories, environments, Ansible, and naming conventions. Auto-generated from the platform OpenAPI schema so it matches the running API.

REST API for this feature — 88 operations across 48 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.

Ansible files

GET /api/ansible-files/

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

ParameterInRequiredTypeDescription
device_groupquerynointeger
git_repoquerynointeger
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.
virtual_serverquerynointeger

Responses: 200 → PaginatedAnsibleFileList

POST /api/ansible-files/

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

Request body (application/json): AnsibleFileRequest

Responses: 201 → AnsibleFile

POST /api/ansible-files/save_for_vs/

Create or overwrite a file for a VS in a git repo.

Request body (application/json): AnsibleFileRequest

Responses: 200 → AnsibleFile

GET /api/ansible-files/{id}/

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

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this ansible file.

Responses: 200 → AnsibleFile

PUT /api/ansible-files/{id}/

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

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this ansible file.

Request body (application/json): AnsibleFileRequest

Responses: 200 → AnsibleFile

PATCH /api/ansible-files/{id}/

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

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this ansible file.

Request body (application/json): PatchedAnsibleFileRequest

Responses: 200 → AnsibleFile

DELETE /api/ansible-files/{id}/

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

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this ansible file.

Responses: 204

GET /api/ansible-files/{id}/content/

Return raw YML content of the file. Site-bound repos read it off the

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this ansible file.

Responses: 200 → AnsibleFile

POST /api/ansible-files/{id}/push/

Git push this file.

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this ansible file.

Request body (application/json): AnsibleFileRequest

Responses: 200 → AnsibleFile

POST /api/ansible-files/{id}/run_workflow/

Run a workflow against THIS matched file, taking it through the collector

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this ansible file.

Request body (application/json): AnsibleFileRequest

Responses: 200 → AnsibleFile

POST /api/ansible-files/{id}/save_content/

Write content (does not push). Site-bound repos write on the collector.

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this ansible file.

Request body (application/json): AnsibleFileRequest

Responses: 200 → AnsibleFile


Cicd

GET /api/cicd/apply-jobs/

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

GET /api/cicd/apply-jobs/{id}/

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

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this apply job.

Responses: 200 → ApplyJob

POST /api/cicd/apply-jobs/{id}/rollback/

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

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this apply job.

Request body (application/json): ApplyJobRequest

Responses: 200 → ApplyJob

GET /api/cicd/changesets/

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

GET /api/cicd/changesets/{id}/

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

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this change set.

Responses: 200 → ChangeSet

GET /api/cicd/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 → PaginatedCICDConnectionList

POST /api/cicd/connections/

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

Request body (application/json): CICDConnectionRequest

Responses: 201 → CICDConnection

GET /api/cicd/connections/{id}/

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

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this cicd connection.

Responses: 200 → CICDConnection

PUT /api/cicd/connections/{id}/

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

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this cicd connection.

Request body (application/json): CICDConnectionRequest

Responses: 200 → CICDConnection

PATCH /api/cicd/connections/{id}/

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

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this cicd connection.

Request body (application/json): PatchedCICDConnectionRequest

Responses: 200 → CICDConnection

DELETE /api/cicd/connections/{id}/

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

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this cicd connection.

Responses: 204

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

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

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this cicd connection.

Request body (application/json): CICDConnectionRequest

Responses: 200 → CICDConnection

GET /api/cicd/gitops-bindings/

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

POST /api/cicd/gitops-bindings/

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

Request body (application/json): GitOpsBindingRequest

Responses: 201 → GitOpsBinding

GET /api/cicd/gitops-bindings/{id}/

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

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this git ops binding.

Responses: 200 → GitOpsBinding

PUT /api/cicd/gitops-bindings/{id}/

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

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this git ops binding.

Request body (application/json): GitOpsBindingRequest

Responses: 200 → GitOpsBinding

PATCH /api/cicd/gitops-bindings/{id}/

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

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this git ops binding.

Request body (application/json): PatchedGitOpsBindingRequest

Responses: 200 → GitOpsBinding

DELETE /api/cicd/gitops-bindings/{id}/

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

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this git ops binding.

Responses: 204

POST /api/cicd/gitops-bindings/{id}/drift_check/

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

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this git ops binding.

Request body (application/json): GitOpsBindingRequest

Responses: 200 → GitOpsBinding

POST /api/cicd/op/{verb}/

POST /api/cicd/op/<verb>/ — validate / plan / apply / backup / verify

ParameterInRequiredTypeDescription
verbpathyesstring

Responses: 200

GET /api/cicd/pipelines/

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

POST /api/cicd/pipelines/

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

Request body (application/json): CICDPipelineRequest

Responses: 201 → CICDPipeline

GET /api/cicd/pipelines/{id}/

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

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this cicd pipeline.

Responses: 200 → CICDPipeline

PUT /api/cicd/pipelines/{id}/

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

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this cicd pipeline.

Request body (application/json): CICDPipelineRequest

Responses: 200 → CICDPipeline

PATCH /api/cicd/pipelines/{id}/

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

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this cicd pipeline.

Request body (application/json): PatchedCICDPipelineRequest

Responses: 200 → CICDPipeline

DELETE /api/cicd/pipelines/{id}/

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

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this cicd pipeline.

Responses: 204

POST /api/cicd/pipelines/{id}/trigger/

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

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this cicd pipeline.

Request body (application/json): CICDPipelineRequest

Responses: 200 → CICDPipeline

GET /api/cicd/promotion-gates/

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

POST /api/cicd/promotion-gates/

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

Request body (application/json): PromotionGateRequest

Responses: 201 → PromotionGate

GET /api/cicd/promotion-gates/{id}/

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

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this promotion gate.

Responses: 200 → PromotionGate

PUT /api/cicd/promotion-gates/{id}/

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

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this promotion gate.

Request body (application/json): PromotionGateRequest

Responses: 200 → PromotionGate

PATCH /api/cicd/promotion-gates/{id}/

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

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this promotion gate.

Request body (application/json): PatchedPromotionGateRequest

Responses: 200 → PromotionGate

DELETE /api/cicd/promotion-gates/{id}/

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

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this promotion gate.

Responses: 204

POST /api/cicd/promotion-gates/{id}/approve/

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

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this promotion gate.

Request body (application/json): PromotionGateRequest

Responses: 200 → PromotionGate

POST /api/cicd/promotion-gates/{id}/waive/

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

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this promotion gate.

Request body (application/json): PromotionGateRequest

Responses: 200 → PromotionGate

GET /api/cicd/runs/

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

GET /api/cicd/runs/{id}/

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

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this cicd run.

Responses: 200 → CICDRun

POST /api/cicd/runs/{id}/cancel/

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

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this cicd run.

Request body (application/json): CICDRunRequest

Responses: 200 → CICDRun

GET /api/cicd/runs/{id}/logs/

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

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this cicd run.

Responses: 200 → CICDRun

GET /api/cicd/tokens/

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

POST /api/cicd/tokens/

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

Request body (application/json): IntegrationTokenRequest

Responses: 201 → IntegrationToken

GET /api/cicd/tokens/{id}/

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

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this integration token.

Responses: 200 → IntegrationToken

PUT /api/cicd/tokens/{id}/

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

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this integration token.

Request body (application/json): IntegrationTokenRequest

Responses: 200 → IntegrationToken

PATCH /api/cicd/tokens/{id}/

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

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this integration token.

Request body (application/json): PatchedIntegrationTokenRequest

Responses: 200 → IntegrationToken

DELETE /api/cicd/tokens/{id}/

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

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this integration token.

Responses: 204

POST /api/cicd/tokens/{id}/revoke/

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

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this integration token.

Request body (application/json): IntegrationTokenRequest

Responses: 200 → IntegrationToken

GET /api/cicd/webhook-events/

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

GET /api/cicd/webhook-events/{id}/

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

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this webhook event.

Responses: 200 → WebhookEvent

POST /api/cicd/webhook/{connection_id}/

Unsigned inbound endpoint: /api/cicd/webhook/<connection_id>/

ParameterInRequiredTypeDescription
connection_idpathyesinteger

Responses: 200


Environments

GET /api/environments/

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

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

Responses: 200 → Environment[]

POST /api/environments/

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

Request body (application/json): EnvironmentRequest

Responses: 201 → Environment

GET /api/environments/{id}/

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

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this environment.

Responses: 200 → Environment

PUT /api/environments/{id}/

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

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this environment.

Request body (application/json): EnvironmentRequest

Responses: 200 → Environment

PATCH /api/environments/{id}/

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

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this environment.

Request body (application/json): PatchedEnvironmentRequest

Responses: 200 → Environment

DELETE /api/environments/{id}/

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

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this environment.

Responses: 204


Git repos

GET /api/git-repos/

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

POST /api/git-repos/

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

Request body (application/json): GitRepoRequest

Responses: 201 → GitRepo

GET /api/git-repos/ansible_status/

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

Responses: 200 → GitRepo

GET /api/git-repos/{id}/

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

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this git repo.

Responses: 200 → GitRepo

PUT /api/git-repos/{id}/

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

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this git repo.

Request body (application/json): GitRepoRequest

Responses: 200 → GitRepo

PATCH /api/git-repos/{id}/

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

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this git repo.

Request body (application/json): PatchedGitRepoRequest

Responses: 200 → GitRepo

DELETE /api/git-repos/{id}/

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

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this git repo.

Responses: 204

POST /api/git-repos/{id}/pull/

Clone or pull the repo, then scan for VS files.

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this git repo.

Request body (application/json): GitRepoRequest

Responses: 200 → GitRepo

POST /api/git-repos/{id}/rematch/

Re-match playbooks to VIPs by the playbook's virtualserver

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this git repo.

Request body (application/json): GitRepoRequest

Responses: 200 → GitRepo


Naming conventions

GET /api/naming-conventions/

List naming conventions

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

POST /api/naming-conventions/

Create naming convention

Request body (application/json): NamingConventionRequest

Responses: 201 → NamingConvention

GET /api/naming-conventions/{id}/

Retrieve naming convention

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this naming convention.

Responses: 200 → NamingConvention

PUT /api/naming-conventions/{id}/

Update naming convention

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this naming convention.

Request body (application/json): NamingConventionRequest

Responses: 200 → NamingConvention

PATCH /api/naming-conventions/{id}/

Update naming convention

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this naming convention.

Request body (application/json): PatchedNamingConventionRequest

Responses: 200 → NamingConvention

DELETE /api/naming-conventions/{id}/

Delete naming convention

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this naming convention.

Responses: 204

POST /api/naming-conventions/{id}/preview/

Preview the generated name for a given source_name, environment, port.

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this naming convention.

Request body (application/json): NamingConventionRequest

Responses: 200 → NamingConvention


Naming templates

GET /api/naming-templates/

List naming templates

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.
resource_typequerynostring
searchquerynostringA search term.

Responses: 200 → PaginatedNamingTemplateList

POST /api/naming-templates/

Create naming template

Request body (application/json): NamingTemplateRequest

Responses: 201 → NamingTemplate

GET /api/naming-templates/{id}/

Retrieve naming template

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this naming template.

Responses: 200 → NamingTemplate

PUT /api/naming-templates/{id}/

Update naming template

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this naming template.

Request body (application/json): NamingTemplateRequest

Responses: 200 → NamingTemplate

PATCH /api/naming-templates/{id}/

Update naming template

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this naming template.

Request body (application/json): PatchedNamingTemplateRequest

Responses: 200 → NamingTemplate

DELETE /api/naming-templates/{id}/

Delete naming template

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this naming template.

Responses: 204


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