API Reference
Index of the main public ZopNight API endpoints, grouped by domain.
An index of the main public API endpoints, grouped by domain. Request and response examples live on each feature's page. For the machine-readable spec, see openapi.json.
Paths are relative to the base URL. Do not add /orgs/{orgId} to a path: the gateway reads the
organization from your token and adds it for you.
Base URL: https://api.zop.dev
Authentication
/auth/loginAuthenticate and receive tokens
/auth/{provider}/callbackComplete Google, GitHub or Microsoft (azure) sign-in with an authorization code (?code=)
/auth/signupCreate a new user account
/auth/refreshRefresh access token
/auth/logoutInvalidate session
/auth/email/verifyRequest email verification OTP
/auth/otp/validateValidate OTP code
/auth/password/forgetInitiate password reset
/auth/password/resetComplete password reset
/auth/saml/initiateBegin SAML SSO flow
/organisationsCreate organization
/organisationsList the organizations you belong to
Cloud Accounts
/cloud-accountsList cloud accounts
/cloud-accountsConnect cloud account
/cloud-accounts/{accountID}Get cloud account
/cloud-accounts/{accountID}Update cloud account
/cloud-accounts/{accountID}Delete cloud account
/connect/gcp/oauth-urlGet GCP OAuth URL
/connect/gcp/oauth-exchangeExchange GCP OAuth code
/connect/gcp/oauth-finalizeFinalize GCP OAuth
/cloud-accounts/{accountID}/clustersList clusters in a cloud account
/cloud-accounts/{accountID}/clusters/{region}/{clusterName}/accessRegister a cluster for kubeconfig access
/cloud-accounts/{accountID}/clusters/{region}/{clusterName}/accessDeregister a cluster
Resources
/resourcesList resources with filtering
/resources/countCount resources matching filters
/resources/{resourceID}Get resource detail
/resources/by-idsGet resources by IDs
/resources/by-uidsGet resources by cloud UIDs (query)
/resources/by-uidsGet resources by cloud UIDs (body)
/resources/discovery-summaryPer-provider discovery rollup
/resources/{id}/accessCheck IAM + network access to a managed Kubernetes cluster
/resources/last-syncedMost recent discovery timestamp per provider/account
/resources/filter-fieldsGet available filter options
/resources/refreshTrigger discovery refresh
/resources/refresh/statusCheck refresh status
Schedules
/schedulesList schedules
/schedulesCreate schedule
/schedules/{scheduleID}Get schedule
/schedules/{scheduleID}Update schedule
/schedules/{scheduleID}Delete schedule
/schedules/{scheduleID}/resources/{resourceID}Attach resource
/schedules/{scheduleID}/resources/{resourceID}Detach resource
/schedules/{scheduleID}/groups/{groupID}Attach group
/schedules/{scheduleID}/groups/{groupID}Detach group
Resource Groups
/resource-groupsList resource groups
/resource-groupsCreate resource group
/resource-groups/{groupID}Get resource group
/resource-groups/{groupID}Update resource group
/resource-groups/{groupID}Delete resource group
/resource-groups/{groupID}/schedulesGet group schedules
/resource-groups/{groupID}/resources/{resourceID}Add member
/resource-groups/{groupID}/resources/{resourceID}/sequenceUpdate execution order
/resource-groups/{groupID}/resources/{resourceID}Remove member
Overrides
/overridesList overrides
/overridesCreate override
/overrides/{overrideID}Get override
/overrides/{overrideID}Delete override
/resource-groups/{groupID}/overridesList group overrides
/resource-groups/{groupID}/overridesCreate group override
Actions & Execution
/actionsSubmit manual action
/actions/bulkSubmit bulk action
/actions/{actionID}Get action status
/actions/bulk/{bulkActionID}Get bulk action status
/actions/bulk/latestGet the most recent bulk action
/state-historyGet state history
Reports & Analytics
/reports/summaryDashboard summary
/reports/trendsCost trends
/reports/cost-historyLong-range cost history
/reports/metricsAggregate utilization metrics
/reports/costs/resourcesResource costs
/reports/costs/breakdownCost breakdown by dimensions (Sankey)
/reports/providers/summaryProvider summary
/resources/summaryResource summary
/reports/resources/metricsPer-resource utilization metrics
/resources/{resourceID}/metrics/liveLive container state of a VM: scope=vm, optional container=<name>. source is backend or exec
/resources/{resourceID}/metrics/rangeUsage history for one VM container from the attached metrics backend: scope=vm, container=<name>, range=15m|1h|6h|24h. 404 without a backend; 409 backend_host_unresolvable when the host of the stored URL does not resolve
/resources/{resourceID}/logs/rangeLog history for one VM container from the attached logs backend, newest first: scope=vm, container=<name>, range=15m|1h|6h|24h, limit (default 200, max 1000), optional q and cursor. Returns items, hasMore, nextCursor, provider. 404 without a logs backend; 409 backend_host_unresolvable when the host of the stored URL does not resolve
/resources/{resourceID}/traces/rangeTraces for one VM container from the attached traces backend (Tempo, Jaeger or Zipkin), newest first: scope=vm, container=<name>, range=15m|1h|6h|24h, limit (default 20, max 100), optional q (span name) and cursor. Returns items (traceId, rootService, rootName, startTime, durationMs, spanCount, errorCount), hasMore, nextCursor, provider. 409 traces_not_configured without a traces backend; 409 backend_host_unresolvable when the host of the stored URL does not resolve
/resources/{resourceID}/traces/{traceID}One trace's spans for one VM container from the attached traces backend: scope=vm, container=<name>. Returns traceId, provider and spans (spanId, parentSpanId, name, service, kind, startTime, durationMs, status, attributes). 404 when the trace has none of the container's spans; 409 traces_not_configured without a traces backend
/reports/resources/activityPer-resource activity timeline
/reports/snapshotsMonthly snapshots
/reports/anomaliesList anomaly records
/reports/exportExport a report as CSV/JSON
Showback (Cost Attribution)
/reports/teamsCost per team
/reports/teams/{teamID}Team breakdown
/reports/teams/{teamID}/resourcesPer-resource cost for a team
/reports/teams/trendsTeam cost trends
/reports/tagsTag keys with attributed cost
/reports/tags/{tagKey}Tag values for a key
/reports/tags/{tagKey}/values/{tagValue}/resourcesResources by tag
/reports/tags/trendsTag cost trends
Budgets
/budgets/summaryBudget summary
/budgetsList budgets
/budgetsCreate budget
/budgets/{budgetID}Update budget
/budgets/{budgetID}Delete budget
/eventsList scheduler events
/eventsRecord scheduler event
/currency-exchange-rateCurrent foreign-exchange rates used by reports
Billing
/billing/sync-statusBilling sync status for every cloud account in the org
/billing/verifyVerify billing access for one cloud account. Body: {cloudAccountId, provider}
Recommendations
/recommendations/resourcesList resources with recommendation summaries
/recommendations/rulesList rules with recommendation summaries
/recommendationsList individual recommendations
/recommendations/summaryRecommendation summary
/recommendations/summary/providersProvider breakdown
/recommendations/filter-fieldsGet available filter fields
/recommendations/resources/{resourceUID}Resource recommendations (deprecated)
/recommendations/{recID}/detailRecommendation detail
/recommendations/{recommendationID}Update recommendation
/recommendations/refreshRefresh recommendations
Smart Tags
/smart-tagsList derived/accepted virtual tags + org-wide counts
/smart-tagsAccept or revoke tags (body: resourceUid, keys, all, accepted)
/tagging/policies/catalogTagging-policy form vocabulary
/tagging/policies/validationsValidate a tagging-policy spec before create
VM Autoscaling
/autoscaler-policiesList autoscaler policies
/autoscaler-policiesCreate policy
/autoscaler-policies/countCount policies by status
/autoscaler-policies/filtersDistinct filter values
/autoscaler-policies/smart-defaultsSmart defaults for a target
/autoscaler/cloud-scaling-policiesInspect the scaling policies already configured on a target in your cloud account
/autoscaler-policies/required-permissionsIAM permissions to provision infra
/autoscaler-policies/create-infrastructureProvision autoscaler infrastructure
/autoscaler-policies/infrastructure-statusProvisioning status for a cloud account
/autoscaler-policies/{policyID}Get policy
/autoscaler-policies/{policyID}Update policy
/autoscaler-policies/{policyID}Delete policy
/autoscaler-policies/{policyID}/applyApply latest recommendation
/autoscaler-policies/{policyID}/pausePause evaluation
/autoscaler-policies/{policyID}/resumeResume evaluation
/autoscaler-policies/{policyID}/removeSoft-delete the policy
/autoscaler-policies/{policyID}/eventsPer-policy event log
Event Readiness
/event-readinessList plans
/event-readinessCreate a plan
/event-readiness/calculatePreview scaled capacity
/event-readiness/calculate-dbPreview database tier change
/event-readiness/preview-readinessPreview a full plan without saving
/event-readiness/countCount plans
/event-readiness/filtersFilter values
/event-readiness/{eventID}Get a plan
/event-readiness/{eventID}Update a plan
/event-readiness/{eventID}Delete a plan
/event-readiness/{eventID}/db-impactEstimated DB impact
/event-readiness/{eventID}/cost-estimateEstimated extra cost
/event-readiness/{eventID}/readiness-checkRe-validate the plan
/event-readiness/{eventID}/scheduleDispatch the plan to executor
/event-readiness/{eventID}/cancelCancel an active plan
/event-readiness/{eventID}/logsPlan audit log
Dashboards
/dashboardsList dashboards (system presets + user-created)
/dashboardsCreate a dashboard
/dashboards/{dashboardID}Get a dashboard
/dashboards/{dashboardID}Update a dashboard
/dashboards/{dashboardID}Delete a dashboard
/dashboards/defaultSet the org default dashboard
Notifications
/notificationsList notifications (legacy)
/notificationsCreate notification (legacy)
/notifications/{notificationID}Update notification (legacy)
/notifications/{notificationID}Delete notification (legacy)
/notifications/channelsList notification channels
/notifications/channelsCreate notification channel
/notifications/channels/{channelID}Update notification channel
/notifications/channels/{channelID}Delete notification channel
/notifications/subscriptionsList subscriptions
/notifications/subscriptionsCreate subscription
/notifications/subscriptions/{subID}Update subscription
/notifications/subscriptions/{subID}Delete subscription
/notifications/subscriptions/bulkBulk create/update subscriptions
/notifications/event-typesList event types
/notifications/email-preferencesGet email preferences
/notifications/email-preferences/{eventKey}Update email preference
/notifications/share/recommendation/{recID}Share recommendation
/notifications/channels/{channelID}/testTest channel delivery
Users & Teams
/usersList users
/usersInvite user
/users/{email}Update user
/users/{email}Remove user
/teamsList teams
/teamsCreate team
/teams/{teamID}Get team
/teams/{teamID}Update team
/teams/{teamID}Delete team
/teams/{teamID}/membersList team members
/teams/{teamID}/membersAdd team member. Body: {email, roleId}
/teams/{teamID}/members/{email}Change a member's team role. Body: {roleId}
/teams/{teamID}/members/{email}Remove team member
/teams/{teamID}/resourcesList team resources
/teams/{teamID}/resourcesAssign resource to team
/teams/{teamID}/resourcesUnassign a resource. Body: {resourceUid}
Roles & Permissions
/rolesList roles
/rolesCreate role
/roles/{roleID}Get role
/roles/{roleID}Update role
/roles/{roleID}Delete role
/roles/policiesList policies
/assignmentsList role assignments
/assignmentsCreate assignment
/assignments/{assignmentID}Update assignment
/assignments/{assignmentID}Delete assignment
/permissionsGet current user permissions
/users/{email}/permissionsGet user permissions
/users/{email}/permissions/verifyVerify permission
Organizations
/organisationsList organizations
/organisationsCreate organization
/organisationsList the organizations you belong to
/organisationGet current organization
/organisationUpdate organization
/organisationDelete organization
Audit Logs
/audit-logsList audit logs
/audit-logs/exportExport audit logs as CSV
Deployment Spaces
/spacesList deployment spaces
/spacesRegister an existing cluster as a space
/spaces/{spaceID}Get a space
/spaces/{spaceID}/statusToggle a space active/inactive
/spaces/{spaceID}Update the space config, e.g. { config: { observability: { metrics: '<integrationID>' | null, logs: '<integrationID>' | null, traces: '<integrationID>' | null } } } to attach or detach a metrics, logs or traces backend
/componentsInstall or re-apply a cluster or VM component, e.g. { spaceId, targetType: 'vm', component: 'observability-agent' }. Returns an actionId to poll
/componentsList the component catalog (?targetType=) or poll an install (?actionId=)
/spaces/{spaceID}Delete a space
/space-discovery/{spaceID}/namespacesList namespaces on a space’s cluster
/space-discovery/{spaceID}/namespacesCreate a namespace on a space’s cluster
/cloud-accounts/{accountID}/clustersList clusters discovered on a cloud account
/cloud-accounts/{accountID}/clusters/{region}/{clusterName}/accessRegister cluster access for kubeconfig minting
/cloud-accounts/{accountID}/clusters/{region}/{clusterName}/accessDeregister cluster access
Provisioning
/provisioning-jobsCreate a provisioning job
/provisioning-jobsList provisioning jobs
/provisioning-jobs/{jobID}Get a job
/provisioning-jobs/{jobID}Update lightweight job fields
/provisioning-jobs/{jobID}Delete a job
/provisioning-jobs/{jobID}/retryRetry a failed job
/provisioning-jobs/{jobID}/databasesCreate a database on the parent datastore
/provisioning-jobs/{jobID}/databasesList databases
/provisioning-jobs/{jobID}/databases/{dbID}Get a database
/provisioning-jobs/{jobID}/databases/{dbID}Delete a database
/provisioning-jobs/{jobID}/connectionsCreate a job-scoped connection
/provisioning-jobs/{jobID}/connectionsList job-scoped connections
/provisioning-jobs/{jobID}/connections/{connID}Get a job-scoped connection
/provisioning-jobs/{jobID}/connections/{connID}Delete a job-scoped connection
/provisioning-jobs/{jobID}/databases/{dbID}/connectionsCreate a database-scoped connection
/provisioning-jobs/{jobID}/databases/{dbID}/connectionsList database-scoped connections
/provisioning-jobs/{jobID}/databases/{dbID}/connections/{connID}Get a database-scoped connection
/provisioning-jobs/{jobID}/databases/{dbID}/connections/{connID}Delete a database-scoped connection
Remediation Workflows
/recommendations/{recID}/workflowPreview the remediation workflow for a recommendation
/recommendations/{recID}/workflowStart the remediation workflow for a recommendation
/workflows/pending-approvalList workflow steps waiting for approval
/workflows/pending-confirmationList workflow steps waiting for confirmation
/workflows/{jobID}Get a workflow and its steps
/workflows/{jobID}/cancelCancel a running workflow
/workflows/{jobID}/steps-by-id/{stepID}Approve, reject or advance a step. Body: {action: approve | reject | advance}
Deployments
/deploymentsList deployments
/deploymentsCreate a deployment
/deployments/{id}Get a deployment
/deployments/{id}Delete a deployment and tear down what it runs
/deployments/{id}/configsUpdate configs (creates a revision on next deploy)
/deployments/{id}/canvas-positionPersist canvas (x, y) coordinate
/deployments/{id}/analyzeRe-run deploy-readiness checks
/deployments/{id}/revisionsCreate a revision
/deployments/{id}/revisionsList revisions
/deployments/{id}/revisions/{revID}Get a revision
/deployments/{id}/rollbackRoll back to a prior revision
/deployments/{id}/eventsDeployment event timeline
/deployments/{id}/loadbalancerLoadBalancer status
/environments/{envID}/deploymentsList deployments in env
/environments/{envID}/deploymentsCreate deployment in env
Builds
/analyzeAnalyze a repo for deploy readiness (wizard pre-create)
/repositoriesList connected repositories
/branchesList branches in a repository. Connected: integrationId + repo. Public: repoUrl (github.com only)
Projects & Environments
/projectsCreate a project
/projectsList projects
/projects/statsBatch project stats (env count, status buckets)
/projects/{projectID}Get a project
/projects/{projectID}Update a project
/projects/{projectID}Delete a project
/projects/{projectID}/environmentsCreate environment
/projects/{projectID}/environmentsList environments
/projects/{projectID}/environments/{envID}Get env (nested)
/projects/{projectID}/environments/{envID}Update env
/projects/{projectID}/environments/{envID}Delete env
/environments/{envID}Get env (flat lookup)
/environments/{envID}/cluster-discoveryLive cluster discovery (ingress + cert-manager)
Integrations
/integrationsList integrations
/integrationsCreate an integration
/integrations/testObservability backends only: run the write/read connection probe against the given backend without saving it
/integrations/{id}Get an integration
/integrations/{id}Update an integration
/integrations/{id}Delete an integration
/integrations/github/installBegin GitHub App install flow. Optional ?role=read|write selects the App to install (write for IaC-CI orgs; defaults to read)
/integrations/github/callbackGitHub install/OAuth callback
Webhooks
/webhooks/githubGitHub event delivery (HMAC-signed; duplicate deliveries are ignored)
/build-callbacks/{revisionID}Build runner reports image readiness (authenticated by the callback JWT in the body)