API Reference
Complete list of all public API endpoints. Click any endpoint to view detailed documentation with request/response examples.
Base URL:
https://zopnight.com/api| Method | Endpoint | Description |
|---|---|---|
| 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) |