Documentation

API Reference

Complete list of all public ZopNight API endpoints with request/response documentation, grouped by domain.

Complete list of all public API endpoints. Click any endpoint to view detailed documentation with request/response examples.

Base URL: https://zopnight.com/api

Authentication

POST/auth/login

Authenticate and receive tokens

POST/auth/signup

Create a new user account

POST/auth/refresh

Refresh access token

POST/auth/logout

Invalidate session

POST/auth/email/verify

Request email verification OTP

PATCH/auth/email/otp/validate

Validate OTP code

POST/auth/password/forget

Initiate password reset

POST/auth/password/reset

Complete password reset

POST/auth/saml/initiate

Begin SAML SSO flow

POST/auth/v2/organisation

Create organization

Cloud Accounts

GET/cloud-accounts

List cloud accounts

POST/cloud-accounts

Connect cloud account

GET/cloud-accounts/{accountID}

Get cloud account

PUT/cloud-accounts/{accountID}

Update cloud account

DELETE/cloud-accounts/{accountID}

Delete cloud account

GET/connect/gcp/oauth-url

Get GCP OAuth URL

POST/connect/gcp/oauth-exchange

Exchange GCP OAuth code

POST/connect/gcp/oauth-finalize

Finalize GCP OAuth

GET/cloud-accounts/{accountID}/clusters

List clusters in a cloud account

PUT/cloud-accounts/{accountID}/clusters/{region}/{clusterName}/access

Register a cluster for kubeconfig access

DELETE/cloud-accounts/{accountID}/clusters/{region}/{clusterName}/access

Deregister a cluster

Resources

GET/resources

List resources with filtering

GET/resources/count

Count resources matching filters

GET/resources/{resourceID}

Get resource detail

GET/resources/by-ids

Get resources by IDs

GET/resources/by-uids

Get resources by cloud UIDs (query)

POST/resources/by-uids

Get resources by cloud UIDs (body)

GET/resources/discovery-summary

Per-provider discovery rollup

GET/resources/access-check

Verify cloud credentials still have list/describe access

GET/resources/last-synced

Most recent discovery timestamp per provider/account

GET/resources/filter-fields

Get available filter options

POST/resources/refresh

Trigger discovery refresh

GET/resources/refresh/status

Check refresh status

Schedules

GET/schedules

List schedules

POST/schedules

Create schedule

GET/schedules/{scheduleID}

Get schedule

PUT/schedules/{scheduleID}

Update schedule

DELETE/schedules/{scheduleID}

Delete schedule

POST/schedules/{scheduleID}/resources/{resourceID}

Attach resource

DELETE/schedules/{scheduleID}/resources/{resourceID}

Detach resource

POST/schedules/{scheduleID}/groups/{groupID}

Attach group

DELETE/schedules/{scheduleID}/groups/{groupID}

Detach group

Resource Groups

GET/resource-groups

List resource groups

POST/resource-groups

Create resource group

GET/resource-groups/{groupID}

Get resource group

PUT/resource-groups/{groupID}

Update resource group

DELETE/resource-groups/{groupID}

Delete resource group

GET/resource-groups/{groupID}/schedules

Get group schedules

POST/resource-groups/{groupID}/resources/{resourceID}

Add member

PATCH/resource-groups/{groupID}/resources/{resourceID}/sequence

Update execution order

DELETE/resource-groups/{groupID}/resources/{resourceID}

Remove member

Overrides

GET/overrides

List overrides

POST/overrides

Create override

GET/overrides/{overrideID}

Get override

DELETE/overrides/{overrideID}

Delete override

GET/resource-groups/{groupID}/overrides

List group overrides

POST/resource-groups/{groupID}/overrides

Create group override

Actions & Execution

POST/actions

Submit manual action

POST/actions/bulk

Submit bulk action

GET/actions/{actionID}

Get action status

GET/actions/bulk/{bulkActionID}

Get bulk action status

GET/actions/bulk/latest

Get the most recent bulk action

GET/state-history

Get state history

Reports & Analytics

GET/reports/summary

Dashboard summary

GET/reports/trends

Cost trends

GET/reports/cost-history

Long-range cost history

GET/reports/metrics

Aggregate utilization metrics

GET/reports/costs/resources

Resource costs

GET/reports/costs/breakdown

Cost breakdown by dimensions (Sankey)

GET/reports/providers/summary

Provider summary

GET/reports/resources/summary

Resource summary

GET/reports/resources/metrics

Per-resource utilization metrics

GET/reports/resources/activity

Per-resource activity timeline

GET/reports/snapshots

Monthly snapshots

GET/reports/anomalies

List anomaly records

POST/reports/export

Export a report as CSV/JSON

Showback (Cost Attribution)

GET/reports/teams

Cost per team

GET/reports/teams/{teamID}

Team breakdown

GET/reports/teams/{teamID}/resources

Per-resource cost for a team

GET/reports/teams/trends

Team cost trends

GET/reports/tags

Tag keys with attributed cost

GET/reports/tags/{tagKey}

Tag values for a key

GET/reports/tags/{tagKey}/values/{tagValue}/resources

Resources by tag

GET/reports/tags/trends

Tag cost trends

Budgets

GET/budgets/summary

Budget summary

GET/budgets

List budgets

POST/budgets

Create budget

PUT/budgets/{budgetID}

Update budget

DELETE/budgets/{budgetID}

Delete budget

GET/events

List scheduler events

POST/events

Record scheduler event

GET/currency-exchange-rate

Current foreign-exchange rates used by reports

Billing

GET/billing/sync-status

Org-wide billing sync status

POST/billing/verify

Trigger an org-wide billing sync

POST/cloud-accounts/{accountID}/billing/verify

Start a per-account verification

GET/cloud-accounts/{accountID}/billing/verify/{verifyID}

Poll a verification job

Recommendations

GET/recommendations/resources

List resources with recommendation summaries

GET/recommendations/rules

List rules with recommendation summaries

GET/recommendations

List individual recommendations

GET/recommendations/summary

Recommendation summary

GET/recommendations/summary/providers

Provider breakdown

GET/recommendations/filter-fields

Get available filter fields

GET/recommendations/resources/{resourceUID}

Resource recommendations (deprecated)

GET/recommendations/{recID}/detail

Recommendation detail

PATCH/recommendations/{recommendationID}

Update recommendation

POST/recommendations/refresh

Refresh recommendations

Auto-Tagging

GET/autotagging

List auto-tag suggestions

GET/autotagging/count

Count auto-tag suggestions by status

PATCH/autotagging/{resourceUID}

Accept or reject a suggestion

POST/autotagging/accept

Accept auto-tag (legacy, deprecated 2026-07-01)

POST/autotagging/reject

Reject auto-tag (legacy, deprecated 2026-07-01)

VM Autoscaling

GET/autoscaler-policies

List autoscaler policies

POST/autoscaler-policies

Create policy

GET/autoscaler-policies/count

Count policies by status

GET/autoscaler-policies/filters

Distinct filter values

GET/autoscaler-policies/smart-defaults

Smart defaults for a target

GET/autoscaler-policies/required-permissions

IAM permissions to provision infra

POST/autoscaler-policies/create-infrastructure

Provision autoscaler infrastructure

GET/autoscaler-policies/infrastructure-status

Provisioning status for a cloud account

GET/autoscaler-policies/{policyID}

Get policy

PUT/autoscaler-policies/{policyID}

Update policy

DELETE/autoscaler-policies/{policyID}

Delete policy

POST/autoscaler-policies/{policyID}/apply

Apply latest recommendation

POST/autoscaler-policies/{policyID}/pause

Pause evaluation

POST/autoscaler-policies/{policyID}/resume

Resume evaluation

POST/autoscaler-policies/{policyID}/remove

Soft-delete the policy

GET/autoscaler-policies/{policyID}/events

Per-policy event log

Event Readiness

GET/event-readiness

List plans

POST/event-readiness

Create a plan

GET/event-readiness/calculate

Preview scaled capacity

GET/event-readiness/calculate-db

Preview database tier change

POST/event-readiness/preview-readiness

Preview a full plan without saving

GET/event-readiness/count

Count plans

GET/event-readiness/filters

Filter values

GET/event-readiness/{eventID}

Get a plan

PUT/event-readiness/{eventID}

Update a plan

DELETE/event-readiness/{eventID}

Delete a plan

GET/event-readiness/{eventID}/db-impact

Estimated DB impact

GET/event-readiness/{eventID}/cost-estimate

Estimated extra cost

GET/event-readiness/{eventID}/readiness-check

Re-validate the plan

POST/event-readiness/{eventID}/schedule

Dispatch the plan to executor

POST/event-readiness/{eventID}/cancel

Cancel an active plan

GET/event-readiness/{eventID}/logs

Plan audit log

Dashboards

GET/dashboards

List dashboards (system presets + user-created)

POST/dashboards

Create a dashboard

GET/dashboards/{dashboardID}

Get a dashboard

PATCH/dashboards/{dashboardID}

Update a dashboard

DELETE/dashboards/{dashboardID}

Delete a dashboard

PUT/dashboards/default

Set the org default dashboard

Notifications

GET/notifications

List notifications (legacy)

POST/notifications

Create notification (legacy)

PUT/notifications/{notificationID}

Update notification (legacy)

DELETE/notifications/{notificationID}

Delete notification (legacy)

GET/notifications/channels

List notification channels

POST/notifications/channels

Create notification channel

PUT/notifications/channels/{channelID}

Update notification channel

DELETE/notifications/channels/{channelID}

Delete notification channel

GET/notifications/subscriptions

List subscriptions

POST/notifications/subscriptions

Create subscription

PUT/notifications/subscriptions/{subID}

Update subscription

DELETE/notifications/subscriptions/{subID}

Delete subscription

POST/notifications/subscriptions/bulk

Bulk create/update subscriptions

GET/notifications/event-types

List event types

GET/notifications/email-preferences

Get email preferences

PUT/notifications/email-preferences/{eventKey}

Update email preference

POST/notifications/share/recommendation/{recID}

Share recommendation

POST/notifications/channels/{channelID}/test

Test channel delivery

Users & Teams

GET/users

List users

POST/users

Invite user

PATCH/users/{email}

Update user

DELETE/users/{email}

Remove user

GET/teams

List teams

POST/teams

Create team

GET/teams/{teamID}

Get team

PUT/teams/{teamID}

Update team

DELETE/teams/{teamID}

Delete team

GET/teams/{teamID}/members

List team members

POST/teams/{teamID}/members

Add team member

DELETE/teams/{teamID}/members/{email}

Remove team member

GET/teams/{teamID}/resources

List team resources

POST/teams/{teamID}/resources

Assign resource to team

DELETE/teams/{teamID}/resources/{resourceUID}

Unassign resource

Roles & Permissions

GET/roles

List roles

POST/roles

Create role

GET/roles/{roleID}

Get role

PUT/roles/{roleID}

Update role

DELETE/roles/{roleID}

Delete role

GET/policies

List policies

GET/assignments

List role assignments

POST/assignments

Create assignment

PUT/assignments/{assignmentID}

Update assignment

DELETE/assignments/{assignmentID}

Delete assignment

GET/permissions

Get current user permissions

GET/users/{email}/permissions

Get user permissions

GET/users/{email}/permissions/verify

Verify permission

Organizations

GET/organisations

List organizations

POST/organisations

Create organization

GET/organisation

Get current organization

PUT/organisation

Update organization

DELETE/organisation

Delete organization

Audit Logs

GET/audit-logs

List audit logs

POST/audit-logs/export

Export audit logs as CSV

Deployment Spaces

GET/spaces

List deployment spaces. (config)

POST/spaces

Register an existing cluster as a space. (config)

GET/spaces/{spaceID}

Get a space. (config)

PATCH/spaces/{spaceID}/status

Toggle a space active/inactive. (config)

DELETE/spaces/{spaceID}

Delete a space. (config)

GET/space-discovery/{spaceID}/namespaces

List namespaces on a space’s cluster. (deployer)

POST/space-discovery/{spaceID}/namespaces

Create a namespace on a space’s cluster. (deployer)

GET/cloud-accounts/{accountID}/clusters

List clusters discovered on a cloud account. (config)

PUT/cloud-accounts/{accountID}/clusters/{region}/{clusterName}/access

Register cluster access for kubeconfig minting. (config)

DELETE/cloud-accounts/{accountID}/clusters/{region}/{clusterName}/access

Deregister cluster access. (config)

Provisioning

POST/provisioning-jobs

Create a provisioning job. (provisioner)

GET/provisioning-jobs

List provisioning jobs. (provisioner)

GET/provisioning-jobs/{jobID}

Get a job. (provisioner)

PATCH/provisioning-jobs/{jobID}

Update lightweight job fields. (provisioner)

DELETE/provisioning-jobs/{jobID}

Delete a job. (provisioner)

POST/provisioning-jobs/{jobID}/retry

Retry a failed job. (provisioner)

POST/provisioning-jobs/{jobID}/databases

Create a database on the parent datastore. (provisioner)

GET/provisioning-jobs/{jobID}/databases

List databases. (provisioner)

GET/provisioning-jobs/{jobID}/databases/{dbID}

Get a database. (provisioner)

DELETE/provisioning-jobs/{jobID}/databases/{dbID}

Delete a database. (provisioner)

POST/provisioning-jobs/{jobID}/connections

Create a job-scoped connection. (provisioner)

GET/provisioning-jobs/{jobID}/connections

List job-scoped connections. (provisioner)

GET/provisioning-jobs/{jobID}/connections/{connID}

Get a job-scoped connection. (provisioner)

DELETE/provisioning-jobs/{jobID}/connections/{connID}

Delete a job-scoped connection. (provisioner)

POST/provisioning-jobs/{jobID}/databases/{dbID}/connections

Create a database-scoped connection. (provisioner)

GET/provisioning-jobs/{jobID}/databases/{dbID}/connections

List database-scoped connections. (provisioner)

GET/provisioning-jobs/{jobID}/databases/{dbID}/connections/{connID}

Get a database-scoped connection. (provisioner)

DELETE/provisioning-jobs/{jobID}/databases/{dbID}/connections/{connID}

Delete a database-scoped connection. (provisioner)

POST/provisioning-jobs/install-component

Install a catalog component. (provisioner)

GET/catalog/components

List available catalog components. (provisioner)

Remediation Jobs

POST/remediation-jobs

Start a remediation workflow for a recommendation. (provisioner)

POST/remediation-jobs/{id}/cancel

Cancel a running remediation. (provisioner)

POST/remediation-jobs/{jobID}/steps-by-id/{stepID}/approve

Approve an approval-gated step (by stable step ID). (provisioner)

POST/remediation-jobs/{jobID}/steps-by-id/{stepID}/reject

Reject an approval-gated step (by stable step ID). (provisioner)

POST/remediation-jobs/{id}/steps/{stepName}/approve

Approve an approval-gated step (by step name, legacy). (provisioner)

POST/remediation-jobs/{id}/steps/{stepName}/reject

Reject an approval-gated step (by step name, legacy). (provisioner)

GET/remediation-jobs/{id}/audit

Step-level audit timeline. (provisioner)

Deployments

GET/deployments

List deployments. (config)

POST/deployments

Create a deployment. (config)

GET/deployments/{id}

Get a deployment. (config)

DELETE/deployments/{id}

Delete a deployment (invokes deployer Teardown gRPC before soft-delete). (config)

PATCH/deployments/{id}/configs

Update configs (creates a revision on next deploy). (config)

PATCH/deployments/{id}/canvas-position

Persist canvas (x, y) coordinate. (config)

POST/deployments/{id}/analyze

Re-run deploy-readiness checks. (deployer)

POST/deployments/{id}/revisions

Create a revision. (deployer)

GET/deployments/{id}/revisions

List revisions. (deployer)

GET/deployments/{id}/revisions/{revID}

Get a revision. (deployer)

POST/deployments/{id}/rollback

Roll back to a prior revision. (deployer)

GET/deployments/{id}/events

Deployment event timeline. (deployer)

GET/deployments/{id}/loadbalancer

LoadBalancer status. (deployer)

GET/environments/{envID}/deployments

List deployments in env. (config)

POST/environments/{envID}/deployments

Create deployment in env. (config)

Builds

POST/analyze

Analyze a repo for deploy readiness (wizard pre-create). (deployer)

GET/repositories

List connected repositories. (deployer)

GET/branches

List branches in a repository. (deployer)

Projects & Environments

POST/projects

Create a project. (config)

GET/projects

List projects. (config)

GET/projects/stats

Batch project stats (env count, status buckets). (config)

GET/projects/{projectID}

Get a project. (config)

PATCH/projects/{projectID}

Update a project. (config)

DELETE/projects/{projectID}

Delete a project. (config)

POST/projects/{projectID}/environments

Create environment. (config)

GET/projects/{projectID}/environments

List environments. (config)

GET/projects/{projectID}/environments/{envID}

Get env (nested). (config)

PATCH/projects/{projectID}/environments/{envID}

Update env. (config)

DELETE/projects/{projectID}/environments/{envID}

Delete env. (config)

GET/environments/{envID}

Get env (flat lookup). (config)

GET/environments/{envID}/stats

Env stats (live cluster query). (deployer)

GET/environments/{envID}/cluster-discovery

Live cluster discovery (ingress + cert-manager). (deployer)

Service Connections

POST/environments/{envID}/deployments/connections

Create a service connection. (deployer)

GET/environments/{envID}/deployments/connections

List service connections in env. (deployer)

GET/environments/{envID}/deployments/connections/{connectionID}

Get a service connection. (deployer)

DELETE/environments/{envID}/deployments/connections/{connectionID}

Soft-delete a service connection. (deployer)

Integrations

GET/integrations

List integrations

POST/integrations

Create an integration

GET/integrations/{id}

Get an integration

PUT/integrations/{id}

Update an integration

DELETE/integrations/{id}

Delete an integration

GET/integrations/github/install

Begin GitHub App install flow

GET/integrations/github/callback

GitHub install/OAuth callback

Webhooks

POST/webhooks/github

GitHub event delivery (HMAC-authenticated; idempotent via delivery_id UUID v5). (deployer)

POST/build-callbacks/{revisionID}

Build runner reports image readiness (JWT-authenticated in body, secret = BUILD_CALLBACK_SECRET). (deployer)