mirror of
https://github.com/oblien/openship.git
synced 2026-10-12 04:50:02 +08:00
4110 lines
160 KiB
JSON
4110 lines
160 KiB
JSON
{
|
||
"methods": {
|
||
"deployments.create": {
|
||
"page": "deployments",
|
||
"section": "Submit",
|
||
"description": "Submit a deployment for a configured project.",
|
||
"route": "POST /api/deployments"
|
||
},
|
||
"deployments.get": {
|
||
"page": "deployments",
|
||
"section": "Observe",
|
||
"description": "Read the persisted deployment record.",
|
||
"route": "GET /api/deployments/:id"
|
||
},
|
||
"deployments.list": {
|
||
"page": "deployments",
|
||
"section": "Observe",
|
||
"description": "Read a page of deployments using project and environment filters.",
|
||
"route": "GET /api/deployments"
|
||
},
|
||
"deployments.logs": {
|
||
"page": "deployments",
|
||
"section": "Observe",
|
||
"description": "Read captured deployment logs.",
|
||
"route": "GET /api/deployments/:id/logs"
|
||
},
|
||
"deployments.buildStatus": {
|
||
"page": "deployments",
|
||
"section": "Observe",
|
||
"description": "Read persisted status, pending prompts, and cancellation state.",
|
||
"route": "GET /api/deployments/:id/build"
|
||
},
|
||
"deployments.restorePlan": {
|
||
"page": "deployments",
|
||
"section": "Observe",
|
||
"description": "Inspect whether rollback needs retained artifacts or a rebuild.",
|
||
"route": "GET /api/deployments/:id/restore-plan"
|
||
},
|
||
"deployments.cancel": {
|
||
"page": "deployments",
|
||
"section": "Control",
|
||
"description": "Request cancellation and return whether settlement is pending.",
|
||
"route": "POST /api/deployments/:id/cancel"
|
||
},
|
||
"deployments.respond": {
|
||
"page": "deployments",
|
||
"section": "Control",
|
||
"description": "Answer a pending deployment prompt with an offered action ID.",
|
||
"route": "POST /api/deployments/:id/build/respond"
|
||
},
|
||
"deployments.rollback": {
|
||
"page": "deployments",
|
||
"section": "Control",
|
||
"description": "Restore the selected deployment through the rollback workflow.",
|
||
"route": "POST /api/deployments/:id/rollback"
|
||
},
|
||
"deployments.redeploy": {
|
||
"page": "deployments",
|
||
"section": "Submit",
|
||
"description": "Submit a new deployment based on an existing release.",
|
||
"route": "POST /api/deployments/:id/redeploy"
|
||
},
|
||
"deployments.pin": {
|
||
"page": "deployments",
|
||
"section": "Control",
|
||
"description": "Pin or unpin retained rollback artifacts.",
|
||
"route": "POST /api/deployments/:id/pin"
|
||
},
|
||
"deployments.keep": {
|
||
"page": "deployments",
|
||
"section": "Control",
|
||
"description": "Accept a release waiting for a keep/reject decision.",
|
||
"route": "POST /api/deployments/:id/keep"
|
||
},
|
||
"deployments.reject": {
|
||
"page": "deployments",
|
||
"section": "Control",
|
||
"description": "Reject a held release and restore the prior deployment when possible.",
|
||
"route": "POST /api/deployments/:id/reject"
|
||
},
|
||
"deployments.remove": {
|
||
"page": "deployments",
|
||
"section": "Control",
|
||
"description": "Remove an eligible deployment and its retained resources.",
|
||
"route": "DELETE /api/deployments/:id"
|
||
},
|
||
"deployments.restart": {
|
||
"page": "deployments",
|
||
"section": "Control",
|
||
"description": "Restart the deployment’s runtime.",
|
||
"route": "POST /api/deployments/:id/restart"
|
||
},
|
||
"deployments.skipPortCheck": {
|
||
"page": "deployments",
|
||
"section": "Control",
|
||
"description": "Skip the specified advisory port check.",
|
||
"route": "POST /api/deployments/:id/skip-port-check"
|
||
},
|
||
"deployments.events": {
|
||
"page": "deployments",
|
||
"section": "Observe",
|
||
"description": "Stream deployment progress events.",
|
||
"route": "GET /api/deployments/:id/stream"
|
||
},
|
||
"deployments.containerInfo": {
|
||
"page": "deployments",
|
||
"section": "Observe",
|
||
"description": "Read runtime/container information.",
|
||
"route": "GET /api/deployments/:id/info"
|
||
},
|
||
"deployments.containerUsage": {
|
||
"page": "deployments",
|
||
"section": "Observe",
|
||
"description": "Read current CPU, memory, disk, and network usage.",
|
||
"route": "GET /api/deployments/:id/usage"
|
||
},
|
||
"deployments.pendingActions": {
|
||
"page": "deployments",
|
||
"section": "Observe",
|
||
"description": "Read unresolved actions for the deployment.",
|
||
"route": "GET /api/deployments/:id/pending"
|
||
},
|
||
"deployments.sslStatus": {
|
||
"page": "deployments",
|
||
"section": "Certificates",
|
||
"description": "Read certificate status for a domain.",
|
||
"route": "POST /api/deployments/ssl/status"
|
||
},
|
||
"deployments.renewSsl": {
|
||
"page": "deployments",
|
||
"section": "Certificates",
|
||
"description": "Request certificate renewal for a domain.",
|
||
"route": "POST /api/deployments/ssl/renew"
|
||
},
|
||
"deployments.prepare": {
|
||
"page": "deployments",
|
||
"section": "Submit",
|
||
"description": "Detect and prepare source configuration before submission.",
|
||
"route": "POST /api/deployments/prepare"
|
||
},
|
||
"deployments.buildAccess": {
|
||
"page": "deployments",
|
||
"section": "Submit",
|
||
"description": "Submit a prepared upload/build workflow.",
|
||
"route": "POST /api/deployments/build/access"
|
||
},
|
||
"deployments.start": {
|
||
"page": "deployments",
|
||
"section": "Submit",
|
||
"description": "Start an already prepared deployment.",
|
||
"route": "POST /api/deployments/:id/build"
|
||
},
|
||
"projects.getHome": {
|
||
"page": "projects",
|
||
"section": "Lifecycle",
|
||
"description": "Read the project overview and summary counts.",
|
||
"route": "GET /api/projects/home"
|
||
},
|
||
"projects.create": {
|
||
"page": "projects",
|
||
"section": "Lifecycle",
|
||
"description": "Create a project record from explicit configuration.",
|
||
"route": "POST /api/projects"
|
||
},
|
||
"projects.ensure": {
|
||
"page": "projects",
|
||
"section": "Lifecycle",
|
||
"description": "Create or select a project during source import.",
|
||
"route": "POST /api/projects/ensure"
|
||
},
|
||
"projects.list": {
|
||
"page": "projects",
|
||
"section": "Lifecycle",
|
||
"description": "Return a page of accessible projects.",
|
||
"route": "GET /api/projects"
|
||
},
|
||
"projects.get": {
|
||
"page": "projects",
|
||
"section": "Lifecycle",
|
||
"description": "Read one project and its active deployment ID.",
|
||
"route": "GET /api/projects/:id"
|
||
},
|
||
"projects.update": {
|
||
"page": "projects",
|
||
"section": "Lifecycle",
|
||
"description": "Update project configuration.",
|
||
"route": "PATCH /api/projects/:id"
|
||
},
|
||
"projects.remove": {
|
||
"page": "projects",
|
||
"section": "Lifecycle",
|
||
"description": "Tear down the project and remove its records; inspect the returned steps.",
|
||
"route": "DELETE /api/projects/:id"
|
||
},
|
||
"projects.getInfo": {
|
||
"page": "projects",
|
||
"section": "Source and deployment",
|
||
"description": "Read the project’s detailed information.",
|
||
"route": "GET /api/projects/:id/info"
|
||
},
|
||
"projects.getGitInfo": {
|
||
"page": "projects",
|
||
"section": "Source and deployment",
|
||
"description": "Read linked Git source information.",
|
||
"route": "GET /api/projects/:id/git"
|
||
},
|
||
"projects.listBranches": {
|
||
"page": "projects",
|
||
"section": "Source and deployment",
|
||
"description": "List branches available from the linked source.",
|
||
"route": "GET /api/projects/:id/branches"
|
||
},
|
||
"projects.linkRepo": {
|
||
"page": "projects",
|
||
"section": "Source and deployment",
|
||
"description": "Link a Git repository to the project.",
|
||
"route": "POST /api/projects/:id/git/link"
|
||
},
|
||
"projects.setReleaseImageSource": {
|
||
"page": "projects",
|
||
"section": "Source and deployment",
|
||
"description": "Configure a release image as the deployment source.",
|
||
"route": "PUT /api/projects/:id/release-image-source"
|
||
},
|
||
"projects.setAutoDeploy": {
|
||
"page": "projects",
|
||
"section": "Source and deployment",
|
||
"description": "Enable or disable automatic deployment triggers.",
|
||
"route": "POST /api/projects/:id/auto-deploy"
|
||
},
|
||
"projects.setWebhookDomain": {
|
||
"page": "projects",
|
||
"section": "Source and deployment",
|
||
"description": "Choose the domain used for the project webhook.",
|
||
"route": "POST /api/projects/:id/webhook-domain"
|
||
},
|
||
"projects.listDeployments": {
|
||
"page": "projects",
|
||
"section": "Source and deployment",
|
||
"description": "Read a page of the project’s deployments.",
|
||
"route": "GET /api/projects/:id/deployments"
|
||
},
|
||
"projects.deploymentSession": {
|
||
"page": "projects",
|
||
"section": "Source and deployment",
|
||
"description": "Read the project’s current deployment session.",
|
||
"route": "POST /api/projects/:id/deployment-session"
|
||
},
|
||
"projects.clearBuildCache": {
|
||
"page": "projects",
|
||
"section": "Source and deployment",
|
||
"description": "Clear authorized build cache for the project.",
|
||
"route": "POST /api/projects/:id/clear-build"
|
||
},
|
||
"projects.getClusterWorkload": {
|
||
"page": "projects",
|
||
"section": "Cluster scaling",
|
||
"description": "Read the selected cluster, active release and observed replicas.",
|
||
"route": "GET /api/projects/:id/cluster"
|
||
},
|
||
"projects.setClusterTarget": {
|
||
"page": "projects",
|
||
"section": "Cluster scaling",
|
||
"description": "Save a ready self-hosted cluster target, application configuration and optional shared-file mounts. Requires fleet administration and the current project timestamp.",
|
||
"route": "PATCH /api/projects/:id/cluster"
|
||
},
|
||
"projects.scaleClusterWorkload": {
|
||
"page": "projects",
|
||
"section": "Cluster scaling",
|
||
"description": "Apply a replica count through a deployment using the active immutable image. Requires active deployment and project timestamp preconditions.",
|
||
"route": "POST /api/projects/:id/cluster/scale"
|
||
},
|
||
"projects.listClusterDatabases": {
|
||
"page": "projects",
|
||
"section": "Cluster databases",
|
||
"description": "List the project's operator-managed databases and saved observations. Available on self-hosted OpenShip.",
|
||
"route": "GET /api/projects/:id/cluster/databases"
|
||
},
|
||
"projects.listClusterDatabaseImports": {
|
||
"page": "projects",
|
||
"section": "Cluster databases",
|
||
"description": "List eligible PostgreSQL and Redis backup imports from this project. Requires project administrator access; source backups and running services are preserved.",
|
||
"route": "GET /api/projects/:id/cluster/databases/imports"
|
||
},
|
||
"projects.getClusterDatabase": {
|
||
"page": "projects",
|
||
"section": "Cluster databases",
|
||
"description": "Read saved database progress, or refresh the operator's instances, volumes and archive status with observe. Does not start or retry setup.",
|
||
"route": "POST /api/projects/:id/cluster/databases/inspect"
|
||
},
|
||
"projects.createClusterDatabase": {
|
||
"page": "projects",
|
||
"section": "Cluster databases",
|
||
"description": "Create PostgreSQL or Redis on a ready server cluster with a stable request UUID. Recover a database archive, import an existing project backup or create an upgraded PostgreSQL copy. Requires fleet administration; the source is preserved.",
|
||
"route": "POST /api/projects/:id/cluster/databases"
|
||
},
|
||
"projects.updateClusterDatabase": {
|
||
"page": "projects",
|
||
"section": "Cluster databases",
|
||
"description": "Apply supported resource, replica or backup settings with the current sequence. Redis shard changes require explicit review and a verified backup; PostgreSQL major upgrades use a new database copy.",
|
||
"route": "PATCH /api/projects/:id/cluster/databases"
|
||
},
|
||
"projects.retryClusterDatabase": {
|
||
"page": "projects",
|
||
"section": "Cluster databases",
|
||
"description": "Resume a failed or interrupted database operation from its saved intent. The previous controller is fenced and accepted operator resources are inspected before reuse.",
|
||
"route": "POST /api/projects/:id/cluster/databases/retry"
|
||
},
|
||
"projects.backupClusterDatabase": {
|
||
"page": "projects",
|
||
"section": "Cluster databases",
|
||
"description": "Request a PostgreSQL or Redis archive at the configured S3 destination. Native controllers and Jobs own execution; retry reuses the accepted backup request.",
|
||
"route": "POST /api/projects/:id/cluster/databases/backup"
|
||
},
|
||
"projects.removeClusterDatabase": {
|
||
"page": "projects",
|
||
"section": "Cluster databases",
|
||
"description": "Stop a disconnected database with name and sequence confirmation. deleteData=false retains persistent disks; true explicitly reclaims owned storage. S3 archives are kept.",
|
||
"route": "DELETE /api/projects/:id/cluster/databases"
|
||
},
|
||
"projects.connectClusterDatabase": {
|
||
"page": "projects",
|
||
"section": "Cluster databases",
|
||
"description": "Save a private database URL in the project environment, or explicitly replace another managed database binding using both current sequences. Set envKey to null to disconnect. Redeploy to apply the reviewed change.",
|
||
"route": "POST /api/projects/:id/cluster/databases/connect"
|
||
},
|
||
"projects.streamClusterDatabaseEvents": {
|
||
"page": "projects",
|
||
"section": "Cluster databases",
|
||
"description": "Subscribe to replayable database progress snapshots over SSE. Reconnection only reads saved state and never repeats a mutation.",
|
||
"route": "GET /api/projects/:id/cluster/databases/stream"
|
||
},
|
||
"projects.listClusterVolumes": {
|
||
"page": "projects",
|
||
"section": "Shared files",
|
||
"description": "Read shared file volumes, independent copies, attachment health and backup status.",
|
||
"route": "GET /api/projects/:id/cluster/volumes"
|
||
},
|
||
"projects.listClusterVolumeBackups": {
|
||
"page": "projects",
|
||
"section": "Shared files",
|
||
"description": "List project file archives, including backups whose original volume was deleted.",
|
||
"route": "GET /api/projects/:id/cluster/volumes/backups"
|
||
},
|
||
"projects.createClusterVolume": {
|
||
"page": "projects",
|
||
"section": "Shared files",
|
||
"description": "Create a replicated shared volume or restore an archive into a new one using a stable request ID. Attach it through cluster configuration and deploy.",
|
||
"route": "POST /api/projects/:id/cluster/volumes"
|
||
},
|
||
"projects.resizeClusterVolume": {
|
||
"page": "projects",
|
||
"section": "Shared files",
|
||
"description": "Grow a shared volume using its current resourceVersion. Observe status until expansion completes; shrinking is unsupported.",
|
||
"route": "PATCH /api/projects/:id/cluster/volumes"
|
||
},
|
||
"projects.backupClusterVolume": {
|
||
"page": "projects",
|
||
"section": "Shared files",
|
||
"description": "Save a file-volume backup to the cluster's configured external destination using a stable request ID. Pause application writes when consistency requires it.",
|
||
"route": "POST /api/projects/:id/cluster/volumes/backup"
|
||
},
|
||
"projects.scheduleClusterVolumeBackups": {
|
||
"page": "projects",
|
||
"section": "Shared files",
|
||
"description": "Schedule hourly or daily file backups with a retained archive count, or choose manual to stop the schedule.",
|
||
"route": "PATCH /api/projects/:id/cluster/volumes/backups"
|
||
},
|
||
"projects.removeClusterVolumeBackup": {
|
||
"page": "projects",
|
||
"section": "Shared files",
|
||
"description": "Permanently delete a project file archive after confirming its exact backup name. The source volume is preserved.",
|
||
"route": "DELETE /api/projects/:id/cluster/volumes/backups"
|
||
},
|
||
"projects.removeClusterVolume": {
|
||
"page": "projects",
|
||
"section": "Shared files",
|
||
"description": "Delete an unmounted volume with resourceVersion, name and data-deletion confirmation. Disconnect and redeploy first; external archives are preserved.",
|
||
"route": "DELETE /api/projects/:id/cluster/volumes"
|
||
},
|
||
"projects.streamClusterVolumeEvents": {
|
||
"page": "projects",
|
||
"section": "Shared files",
|
||
"description": "Subscribe to current file-volume and archive snapshots over SSE without repeating mutations on reconnect.",
|
||
"route": "GET /api/projects/:id/cluster/volumes/stream"
|
||
},
|
||
"projects.getRollbackCapacity": {
|
||
"page": "projects",
|
||
"section": "Source and deployment",
|
||
"description": "Inspect retained rollback capacity.",
|
||
"route": "GET /api/projects/:id/rollback-capacity"
|
||
},
|
||
"projects.checkPorts": {
|
||
"page": "projects",
|
||
"section": "Source and deployment",
|
||
"description": "Check deployment port requirements.",
|
||
"route": "POST /api/projects/:id/port-check"
|
||
},
|
||
"projects.checkOutput": {
|
||
"page": "projects",
|
||
"section": "Source and deployment",
|
||
"description": "Check the configured build output.",
|
||
"route": "POST /api/projects/:id/output-check"
|
||
},
|
||
"projects.getPendingActions": {
|
||
"page": "projects",
|
||
"section": "Source and deployment",
|
||
"description": "Read actions that need a deployment or routing decision.",
|
||
"route": "GET /api/projects/:id/pending-actions"
|
||
},
|
||
"projects.getCommitStatus": {
|
||
"page": "projects",
|
||
"section": "Source and deployment",
|
||
"description": "Compare source and deployed commit status.",
|
||
"route": "GET /api/projects/:id/commit-status"
|
||
},
|
||
"projects.listEnvironments": {
|
||
"page": "projects",
|
||
"section": "Environments and settings",
|
||
"description": "List the project’s environments.",
|
||
"route": "GET /api/projects/:id/environments"
|
||
},
|
||
"projects.createEnvironment": {
|
||
"page": "projects",
|
||
"section": "Environments and settings",
|
||
"description": "Create an environment from the supplied configuration.",
|
||
"route": "POST /api/projects/:id/environments"
|
||
},
|
||
"projects.listEnvVars": {
|
||
"page": "projects",
|
||
"section": "Environments and settings",
|
||
"description": "Read environment variables with secrets masked.",
|
||
"route": "GET /api/projects/:id/env"
|
||
},
|
||
"projects.mergeEnvVars": {
|
||
"page": "projects",
|
||
"section": "Environments and settings",
|
||
"description": "Upsert and delete named environment variables.",
|
||
"route": "PATCH /api/projects/:id/env"
|
||
},
|
||
"projects.getResources": {
|
||
"page": "projects",
|
||
"section": "Environments and settings",
|
||
"description": "Read resource limits and sleep settings.",
|
||
"route": "GET /api/projects/:id/resources"
|
||
},
|
||
"projects.updateResources": {
|
||
"page": "projects",
|
||
"section": "Environments and settings",
|
||
"description": "Change resource allocations.",
|
||
"route": "PATCH /api/projects/:id/resources"
|
||
},
|
||
"projects.setSleepMode": {
|
||
"page": "projects",
|
||
"section": "Environments and settings",
|
||
"description": "Set the project’s sleep behavior.",
|
||
"route": "POST /api/projects/:id/sleep-mode"
|
||
},
|
||
"projects.setOptions": {
|
||
"page": "projects",
|
||
"section": "Environments and settings",
|
||
"description": "Change deployment options.",
|
||
"route": "POST /api/projects/:id/options"
|
||
},
|
||
"projects.setBranch": {
|
||
"page": "projects",
|
||
"section": "Source and deployment",
|
||
"description": "Select the default Git branch.",
|
||
"route": "POST /api/projects/:id/branch"
|
||
},
|
||
"projects.enable": {
|
||
"page": "projects",
|
||
"section": "Lifecycle",
|
||
"description": "Enable the project runtime.",
|
||
"route": "POST /api/projects/:id/enable"
|
||
},
|
||
"projects.disable": {
|
||
"page": "projects",
|
||
"section": "Lifecycle",
|
||
"description": "Disable the project runtime.",
|
||
"route": "POST /api/projects/:id/disable"
|
||
},
|
||
"projects.retryRouting": {
|
||
"page": "projects",
|
||
"section": "Routing and monitoring",
|
||
"description": "Repair project routing and verify pending domains and HTTPS.",
|
||
"route": "POST /api/projects/:id/routing/retry"
|
||
},
|
||
"projects.retryRoutingStream": {
|
||
"page": "projects",
|
||
"section": "Routing and monitoring",
|
||
"description": "Repair routing with live logs and a terminal success or failure event.",
|
||
"route": "POST /api/projects/:id/routing/retry/stream"
|
||
},
|
||
"projects.runtimeLogs": {
|
||
"page": "projects",
|
||
"section": "Routing and monitoring",
|
||
"description": "Read recent runtime log entries.",
|
||
"route": "GET /api/projects/:id/logs"
|
||
},
|
||
"projects.getCloneToken": {
|
||
"page": "projects",
|
||
"section": "Environments and settings",
|
||
"description": "Read whether a project clone token is configured.",
|
||
"route": "GET /api/projects/:id/clone-token"
|
||
},
|
||
"projects.updateCloneToken": {
|
||
"page": "projects",
|
||
"section": "Environments and settings",
|
||
"description": "Set, rotate, or clear the project clone token.",
|
||
"route": "PATCH /api/projects/:id/clone-token"
|
||
},
|
||
"projects.deletionPreview": {
|
||
"page": "projects",
|
||
"section": "Lifecycle",
|
||
"description": "Inspect resources that project deletion would affect.",
|
||
"route": "GET /api/projects/:id/deletion-preview"
|
||
},
|
||
"projects.listRouteRules": {
|
||
"page": "projects",
|
||
"section": "Routing and monitoring",
|
||
"description": "List the project’s edge route rules.",
|
||
"route": "GET /api/projects/:id/route-rules"
|
||
},
|
||
"projects.createRouteRule": {
|
||
"page": "projects",
|
||
"section": "Routing and monitoring",
|
||
"description": "Add an edge route rule.",
|
||
"route": "POST /api/projects/:id/route-rules"
|
||
},
|
||
"projects.updateRouteRule": {
|
||
"page": "projects",
|
||
"section": "Routing and monitoring",
|
||
"description": "Update an edge route rule using its typed input.",
|
||
"route": "PATCH /api/projects/:id/route-rules/:ruleId"
|
||
},
|
||
"projects.removeRouteRule": {
|
||
"page": "projects",
|
||
"section": "Routing and monitoring",
|
||
"description": "Remove the specified edge route rule.",
|
||
"route": "DELETE /api/projects/:id/route-rules/:ruleId"
|
||
},
|
||
"projects.getIncidents": {
|
||
"page": "projects",
|
||
"section": "Routing and monitoring",
|
||
"description": "Read open and resolved health incidents.",
|
||
"route": "GET /api/projects/:id/incidents"
|
||
},
|
||
"projects.connectDomain": {
|
||
"page": "projects",
|
||
"section": "Routing and monitoring",
|
||
"description": "Attach a domain to the project.",
|
||
"route": "POST /api/projects/:id/connect"
|
||
},
|
||
"projects.listConnections": {
|
||
"page": "projects",
|
||
"section": "Connections, storage, and apps",
|
||
"description": "List the project’s outgoing resource connections.",
|
||
"route": "GET /api/projects/:id/connections"
|
||
},
|
||
"projects.listConnectionCandidates": {
|
||
"page": "projects",
|
||
"section": "Connections, storage, and apps",
|
||
"description": "List accessible projects and apps for a service connection.",
|
||
"route": "GET /api/projects/:id/connections/candidates"
|
||
},
|
||
"projects.listConnectionConsumers": {
|
||
"page": "projects",
|
||
"section": "Connections, storage, and apps",
|
||
"description": "List projects consuming this project’s outputs.",
|
||
"route": "GET /api/projects/:id/connections/consumers"
|
||
},
|
||
"projects.createConnection": {
|
||
"page": "projects",
|
||
"section": "Connections, storage, and apps",
|
||
"description": "Connect an output to a target environment variable.",
|
||
"route": "POST /api/projects/:id/connections"
|
||
},
|
||
"projects.connectBundle": {
|
||
"page": "projects",
|
||
"section": "Connections, storage, and apps",
|
||
"description": "Apply a group of compatible resource connections.",
|
||
"route": "POST /api/projects/:id/connections/bundle"
|
||
},
|
||
"projects.removeConnection": {
|
||
"page": "projects",
|
||
"section": "Connections, storage, and apps",
|
||
"description": "Remove a resource connection.",
|
||
"route": "DELETE /api/projects/:id/connections/:linkId"
|
||
},
|
||
"projects.getStorage": {
|
||
"page": "projects",
|
||
"section": "Connections, storage, and apps",
|
||
"description": "Read the project’s object-storage binding.",
|
||
"route": "GET /api/projects/:id/storage"
|
||
},
|
||
"projects.bindStorage": {
|
||
"page": "projects",
|
||
"section": "Connections, storage, and apps",
|
||
"description": "Bind a configured storage bucket.",
|
||
"route": "POST /api/projects/:id/storage"
|
||
},
|
||
"projects.unbindStorage": {
|
||
"page": "projects",
|
||
"section": "Connections, storage, and apps",
|
||
"description": "Remove the storage binding.",
|
||
"route": "DELETE /api/projects/:id/storage"
|
||
},
|
||
"projects.getEdgeConfig": {
|
||
"page": "projects",
|
||
"section": "Routing and monitoring",
|
||
"description": "Read the project’s edge configuration.",
|
||
"route": "GET /api/projects/:id/edge-config"
|
||
},
|
||
"projects.getServerLogStreamToken": {
|
||
"page": "projects",
|
||
"section": "Routing and monitoring",
|
||
"description": "Obtain an authorized server-log stream token.",
|
||
"route": "GET /api/projects/:id/server-logs/stream-token"
|
||
},
|
||
"projects.recentServerLogs": {
|
||
"page": "projects",
|
||
"section": "Routing and monitoring",
|
||
"description": "Read recent request/server logs.",
|
||
"route": "GET /api/projects/:id/server-logs/recent"
|
||
},
|
||
"projects.transferToCloud": {
|
||
"page": "projects",
|
||
"section": "Cloud transfer",
|
||
"description": "Request a Cloud transfer; fixed scopes currently require unavailable tenant mapping.",
|
||
"route": "POST /api/projects/:id/transfer/to-cloud"
|
||
},
|
||
"projects.transferToSelfHosted": {
|
||
"page": "projects",
|
||
"section": "Cloud transfer",
|
||
"description": "Request a transfer from Cloud; fixed-scope Cloud mapping limits apply.",
|
||
"route": "POST /api/projects/:id/transfer/to-self-hosted"
|
||
},
|
||
"projects.getAppSettings": {
|
||
"page": "apps",
|
||
"section": "Connections, storage, and apps",
|
||
"description": "Read curated settings for an installed catalog app.",
|
||
"route": "GET /api/projects/:id/app-settings"
|
||
},
|
||
"projects.updateAppSettings": {
|
||
"page": "apps",
|
||
"section": "Connections, storage, and apps",
|
||
"description": "Apply curated app setting changes.",
|
||
"route": "PATCH /api/projects/:id/app-settings"
|
||
},
|
||
"projects.getAppConnection": {
|
||
"page": "apps",
|
||
"section": "Connections, storage, and apps",
|
||
"description": "Read app connection details; these may include credentials and require write access.",
|
||
"route": "GET /api/projects/:id/app-connection"
|
||
},
|
||
"projects.scanLocal": {
|
||
"page": "projects",
|
||
"section": "Source and deployment",
|
||
"description": "Scan an allowed local source directory.",
|
||
"route": "POST /api/projects/scan"
|
||
},
|
||
"projects.importLocal": {
|
||
"page": "projects",
|
||
"section": "Source and deployment",
|
||
"description": "Import an allowed local project.",
|
||
"route": "POST /api/projects/import"
|
||
},
|
||
"projects.listLocal": {
|
||
"page": "projects",
|
||
"section": "Source and deployment",
|
||
"description": "List discoverable local projects.",
|
||
"route": "GET /api/projects/local"
|
||
},
|
||
"projects.streamRuntimeLogs": {
|
||
"page": "projects",
|
||
"section": "Routing and monitoring",
|
||
"description": "Stream project runtime log events.",
|
||
"route": "GET /api/projects/:id/logs/stream"
|
||
},
|
||
"projects.streamServerLogs": {
|
||
"page": "projects",
|
||
"section": "Routing and monitoring",
|
||
"description": "Stream project request/server log events.",
|
||
"route": "GET /api/projects/:id/server-logs/stream"
|
||
},
|
||
"sources.stage": {
|
||
"page": "sources",
|
||
"section": "Operations",
|
||
"description": "Package and stage generated files or an allowed directory.",
|
||
"workflow": "/docs/api/sources#upload-a-source-folder"
|
||
},
|
||
"sources.open": {
|
||
"page": "sources",
|
||
"section": "Operations",
|
||
"description": "Open a folder upload session and return its upload instructions.",
|
||
"route": "POST /api/projects/folder/session"
|
||
},
|
||
"sources.scan": {
|
||
"page": "sources",
|
||
"section": "Operations",
|
||
"description": "Detect build configuration from a staged source session.",
|
||
"route": "POST /api/projects/folder/scan/:sessionId"
|
||
},
|
||
"sources.reveal": {
|
||
"page": "sources",
|
||
"section": "Operations",
|
||
"description": "Reveal explicitly requested source values after authorization.",
|
||
"route": "POST /api/projects/folder/scan/:sessionId/env-reveal"
|
||
},
|
||
"services.streamLogs": {
|
||
"page": "services",
|
||
"section": "Operations",
|
||
"description": "Stream log events for a service.",
|
||
"route": "GET /api/projects/:id/services/:serviceId/logs/stream"
|
||
},
|
||
"services.list": {
|
||
"page": "services",
|
||
"section": "Operations",
|
||
"description": "List services belonging to a project.",
|
||
"route": "GET /api/projects/:id/services"
|
||
},
|
||
"services.create": {
|
||
"page": "services",
|
||
"section": "Operations",
|
||
"description": "Add a service definition to a project.",
|
||
"route": "POST /api/projects/:id/services"
|
||
},
|
||
"services.sync": {
|
||
"page": "services",
|
||
"section": "Operations",
|
||
"description": "Synchronize service definitions from Compose source.",
|
||
"route": "POST /api/projects/:id/services/sync"
|
||
},
|
||
"services.activeContainers": {
|
||
"page": "services",
|
||
"section": "Operations",
|
||
"description": "List active project containers.",
|
||
"route": "GET /api/projects/:id/services/containers"
|
||
},
|
||
"services.get": {
|
||
"page": "services",
|
||
"section": "Operations",
|
||
"description": "Read one service definition and state.",
|
||
"route": "GET /api/projects/:id/services/:serviceId"
|
||
},
|
||
"services.update": {
|
||
"page": "services",
|
||
"section": "Operations",
|
||
"description": "Update service configuration.",
|
||
"route": "PATCH /api/projects/:id/services/:serviceId"
|
||
},
|
||
"services.remove": {
|
||
"page": "services",
|
||
"section": "Operations",
|
||
"description": "Remove a service and its selected resources.",
|
||
"route": "DELETE /api/projects/:id/services/:serviceId"
|
||
},
|
||
"services.acceptDrift": {
|
||
"page": "services",
|
||
"section": "Operations",
|
||
"description": "Accept a legacy source review while preserving saved environment values.",
|
||
"route": "POST /api/projects/:id/services/:serviceId/drift/accept"
|
||
},
|
||
"services.keepDrift": {
|
||
"page": "services",
|
||
"section": "Operations",
|
||
"description": "Keep the current configuration when resolving drift.",
|
||
"route": "POST /api/projects/:id/services/:serviceId/drift/keep"
|
||
},
|
||
"services.getEnvironment": {
|
||
"page": "services",
|
||
"section": "Operations",
|
||
"description": "Read the effective saved service environment and optionally compare it with Docker.",
|
||
"route": "GET /api/projects/:id/services/:serviceId/environment"
|
||
},
|
||
"services.mergeEnvVars": {
|
||
"page": "services",
|
||
"section": "Operations",
|
||
"description": "Save named service overrides without replacing unrelated values.",
|
||
"route": "PATCH /api/projects/:id/services/:serviceId/env"
|
||
},
|
||
"services.listEnvVars": {
|
||
"page": "services",
|
||
"section": "Operations",
|
||
"description": "Read service environment overrides with masked secrets.",
|
||
"route": "GET /api/projects/:id/services/:serviceId/env"
|
||
},
|
||
"services.setEnvVars": {
|
||
"page": "services",
|
||
"section": "Operations",
|
||
"description": "Apply service environment variable changes.",
|
||
"route": "PUT /api/projects/:id/services/:serviceId/env"
|
||
},
|
||
"services.revealEnv": {
|
||
"page": "services",
|
||
"section": "Operations",
|
||
"description": "Reveal authorized service environment values.",
|
||
"route": "POST /api/projects/:id/services/:serviceId/env-reveal"
|
||
},
|
||
"services.applyEnvironment": {
|
||
"page": "services",
|
||
"section": "Operations",
|
||
"description": "Apply saved runtime environment by replacing the service container using its current image, without a build.",
|
||
"route": "POST /api/projects/:id/services/:serviceId/apply-env"
|
||
},
|
||
"services.volumeSizes": {
|
||
"page": "services",
|
||
"section": "Operations",
|
||
"description": "Read persistent-volume sizes for the service.",
|
||
"route": "GET /api/projects/:id/services/:serviceId/volume-sizes"
|
||
},
|
||
"services.start": {
|
||
"page": "services",
|
||
"section": "Operations",
|
||
"description": "Start the service runtime.",
|
||
"route": "POST /api/projects/:id/services/:serviceId/start"
|
||
},
|
||
"services.stop": {
|
||
"page": "services",
|
||
"section": "Operations",
|
||
"description": "Stop the service runtime.",
|
||
"route": "POST /api/projects/:id/services/:serviceId/stop"
|
||
},
|
||
"services.restart": {
|
||
"page": "services",
|
||
"section": "Operations",
|
||
"description": "Restart the service runtime.",
|
||
"route": "POST /api/projects/:id/services/:serviceId/restart"
|
||
},
|
||
"services.runtimeLogs": {
|
||
"page": "services",
|
||
"section": "Operations",
|
||
"description": "Read recent service runtime logs.",
|
||
"route": "GET /api/projects/:id/services/:serviceId/logs"
|
||
},
|
||
"services.exec": {
|
||
"page": "services",
|
||
"section": "Operations",
|
||
"description": "Execute an authorized command in the service runtime.",
|
||
"route": "POST /api/projects/:id/services/:serviceId/exec"
|
||
},
|
||
"domains.verifyStream": {
|
||
"page": "domains",
|
||
"section": "Operations",
|
||
"description": "Stream domain verification progress.",
|
||
"route": "POST /api/domains/:id/verify/stream"
|
||
},
|
||
"domains.list": {
|
||
"page": "domains",
|
||
"section": "Operations",
|
||
"description": "List domains using the supplied filters.",
|
||
"route": "GET /api/domains"
|
||
},
|
||
"domains.create": {
|
||
"page": "domains",
|
||
"section": "Operations",
|
||
"description": "Attach a domain using the requested project and routing configuration.",
|
||
"route": "POST /api/domains"
|
||
},
|
||
"domains.get": {
|
||
"page": "domains",
|
||
"section": "Operations",
|
||
"description": "Read one domain record.",
|
||
"route": "GET /api/domains/:id"
|
||
},
|
||
"domains.remove": {
|
||
"page": "domains",
|
||
"section": "Operations",
|
||
"description": "Remove a domain and its routing binding.",
|
||
"route": "DELETE /api/domains/:id"
|
||
},
|
||
"domains.verify": {
|
||
"page": "domains",
|
||
"section": "Operations",
|
||
"description": "Run domain verification.",
|
||
"route": "POST /api/domains/:id/verify"
|
||
},
|
||
"domains.records": {
|
||
"page": "domains",
|
||
"section": "Operations",
|
||
"description": "Read DNS records required by a domain.",
|
||
"route": "GET /api/domains/:id/records"
|
||
},
|
||
"domains.dnsPlan": {
|
||
"page": "domains",
|
||
"section": "Operations",
|
||
"description": "Preview DNS changes before applying them.",
|
||
"route": "GET /api/domains/:id/dns/plan"
|
||
},
|
||
"domains.dnsApply": {
|
||
"page": "domains",
|
||
"section": "Operations",
|
||
"description": "Apply the authorized DNS plan.",
|
||
"route": "POST /api/domains/:id/dns/apply"
|
||
},
|
||
"domains.dnsChallenge": {
|
||
"page": "domains",
|
||
"section": "Operations",
|
||
"description": "Read the saved DNS certificate attempt, TXT record, deadline and logs.",
|
||
"route": "GET /api/domains/:id/dns/challenge"
|
||
},
|
||
"domains.startDnsChallenge": {
|
||
"page": "domains",
|
||
"section": "Operations",
|
||
"description": "Start automatic provider setup or a manual TXT challenge; reuse an active attempt. Self-hosted targets only.",
|
||
"route": "POST /api/domains/:id/dns/challenge"
|
||
},
|
||
"domains.checkDnsChallenge": {
|
||
"page": "domains",
|
||
"section": "Operations",
|
||
"description": "Check the saved attempt's TXT, complete ACME validation and install HTTPS on the serving host.",
|
||
"route": "POST /api/domains/:id/dns/challenge/check"
|
||
},
|
||
"domains.cancelDnsChallenge": {
|
||
"page": "domains",
|
||
"section": "Operations",
|
||
"description": "Cancel a manual DNS certificate attempt before installation starts; retain existing certificates.",
|
||
"route": "POST /api/domains/:id/dns/challenge/cancel"
|
||
},
|
||
"domains.setPrimary": {
|
||
"page": "domains",
|
||
"section": "Operations",
|
||
"description": "Select the project’s primary domain.",
|
||
"route": "POST /api/domains/:id/primary"
|
||
},
|
||
"domains.renewSsl": {
|
||
"page": "domains",
|
||
"section": "Operations",
|
||
"description": "Request certificate renewal for a domain record.",
|
||
"route": "POST /api/domains/:id/renew"
|
||
},
|
||
"domains.verifySsl": {
|
||
"page": "domains",
|
||
"section": "Operations",
|
||
"description": "Check the domain’s current certificate.",
|
||
"route": "POST /api/domains/:id/verify-ssl"
|
||
},
|
||
"domains.uploadCert": {
|
||
"page": "domains",
|
||
"section": "Operations",
|
||
"description": "Install a supplied certificate and private key.",
|
||
"route": "POST /api/domains/:id/certificate"
|
||
},
|
||
"domains.preview": {
|
||
"page": "domains",
|
||
"section": "Operations",
|
||
"description": "Preview domain connection requirements.",
|
||
"route": "POST /api/domains/preview"
|
||
},
|
||
"domains.renewAllSsl": {
|
||
"page": "domains",
|
||
"section": "Operations",
|
||
"description": "Request renewal for eligible certificates.",
|
||
"route": "POST /api/domains/renew-all"
|
||
},
|
||
"domains.verifyPending": {
|
||
"page": "domains",
|
||
"section": "Operations",
|
||
"description": "Verify pending domains visible to the caller.",
|
||
"route": "POST /api/domains/verify-pending"
|
||
},
|
||
"dns.listProviders": {
|
||
"page": "dns",
|
||
"section": "Operations",
|
||
"description": "List supported DNS providers and their credential fields.",
|
||
"route": "GET /api/dns/providers"
|
||
},
|
||
"dns.listCredentials": {
|
||
"page": "dns",
|
||
"section": "Operations",
|
||
"description": "List the organization’s DNS credentials.",
|
||
"route": "GET /api/dns/credentials"
|
||
},
|
||
"dns.getCredential": {
|
||
"page": "dns",
|
||
"section": "Operations",
|
||
"description": "Read a DNS credential with secrets masked.",
|
||
"route": "GET /api/dns/credentials/:id"
|
||
},
|
||
"dns.addCredential": {
|
||
"page": "dns",
|
||
"section": "Operations",
|
||
"description": "Store a DNS provider credential.",
|
||
"route": "POST /api/dns/credentials"
|
||
},
|
||
"dns.removeCredential": {
|
||
"page": "dns",
|
||
"section": "Operations",
|
||
"description": "Remove a DNS credential.",
|
||
"route": "DELETE /api/dns/credentials/:id"
|
||
},
|
||
"dns.verifyZone": {
|
||
"page": "dns",
|
||
"section": "Operations",
|
||
"description": "Check access to the requested DNS zone.",
|
||
"route": "POST /api/dns/verify-zone"
|
||
},
|
||
"credentials.listProviders": {
|
||
"page": "credentials",
|
||
"section": "Operations",
|
||
"description": "List provider credential types and required fields.",
|
||
"route": "GET /api/credentials/providers"
|
||
},
|
||
"credentials.list": {
|
||
"page": "credentials",
|
||
"section": "Operations",
|
||
"description": "List stored credentials with secrets masked.",
|
||
"route": "GET /api/credentials"
|
||
},
|
||
"credentials.create": {
|
||
"page": "credentials",
|
||
"section": "Operations",
|
||
"description": "Store a provider credential.",
|
||
"route": "POST /api/credentials"
|
||
},
|
||
"credentials.get": {
|
||
"page": "credentials",
|
||
"section": "Operations",
|
||
"description": "Read one masked credential.",
|
||
"route": "GET /api/credentials/:id"
|
||
},
|
||
"credentials.update": {
|
||
"page": "credentials",
|
||
"section": "Operations",
|
||
"description": "Rename, re-scope, or rotate a credential.",
|
||
"route": "PATCH /api/credentials/:id"
|
||
},
|
||
"credentials.remove": {
|
||
"page": "credentials",
|
||
"section": "Operations",
|
||
"description": "Remove a credential.",
|
||
"route": "DELETE /api/credentials/:id"
|
||
},
|
||
"credentials.verify": {
|
||
"page": "credentials",
|
||
"section": "Operations",
|
||
"description": "Check the credential against its provider and record the result.",
|
||
"route": "POST /api/credentials/:id/verify"
|
||
},
|
||
"servers.applyContainer": {
|
||
"page": "servers",
|
||
"section": "Managed containers",
|
||
"description": "Apply a managed container configuration.",
|
||
"route": "POST /api/system/servers/:id/containers/:component/apply/stream"
|
||
},
|
||
"servers.containerApplyEvents": {
|
||
"page": "servers",
|
||
"section": "Managed containers",
|
||
"description": "Stream a managed-container apply session.",
|
||
"route": "GET /api/system/servers/:id/containers/:component/apply/stream"
|
||
},
|
||
"servers.getInstallSession": {
|
||
"page": "servers",
|
||
"section": "Components and installation",
|
||
"description": "Read an installation session.",
|
||
"route": "GET /api/system/install/session"
|
||
},
|
||
"servers.respondToInstall": {
|
||
"page": "servers",
|
||
"section": "Components and installation",
|
||
"description": "Answer a pending installation prompt.",
|
||
"route": "POST /api/system/install/respond"
|
||
},
|
||
"servers.installComponents": {
|
||
"page": "servers",
|
||
"section": "Components and installation",
|
||
"description": "Submit installation of selected components.",
|
||
"route": "POST /api/system/install/stream"
|
||
},
|
||
"servers.installEvents": {
|
||
"page": "servers",
|
||
"section": "Components and installation",
|
||
"description": "Stream installation progress.",
|
||
"route": "GET /api/system/install/stream"
|
||
},
|
||
"servers.monitor": {
|
||
"page": "servers",
|
||
"section": "Server lifecycle",
|
||
"description": "Stream server monitoring data.",
|
||
"route": "GET /api/system/monitor/stream"
|
||
},
|
||
"servers.listAllContainers": {
|
||
"page": "servers",
|
||
"section": "Managed containers",
|
||
"description": "List managed containers across accessible servers.",
|
||
"route": "GET /api/system/containers"
|
||
},
|
||
"servers.scanAllContainers": {
|
||
"page": "servers",
|
||
"section": "Managed containers",
|
||
"description": "Refresh managed-container state across accessible servers.",
|
||
"route": "POST /api/system/containers/scan"
|
||
},
|
||
"servers.containersBehind": {
|
||
"page": "servers",
|
||
"section": "Managed containers",
|
||
"description": "List managed containers with available updates.",
|
||
"route": "GET /api/system/containers/behind"
|
||
},
|
||
"servers.containerIssues": {
|
||
"page": "servers",
|
||
"section": "Managed containers",
|
||
"description": "List managed-container health or configuration issues.",
|
||
"route": "GET /api/system/containers/issues"
|
||
},
|
||
"servers.applyingContainers": {
|
||
"page": "servers",
|
||
"section": "Managed containers",
|
||
"description": "Read currently active container apply sessions.",
|
||
"route": "GET /api/system/containers/applying"
|
||
},
|
||
"servers.applyAllContainers": {
|
||
"page": "servers",
|
||
"section": "Managed containers",
|
||
"description": "Apply requested managed-container changes across servers.",
|
||
"route": "POST /api/system/containers/apply-all"
|
||
},
|
||
"servers.list": {
|
||
"page": "servers",
|
||
"section": "Server lifecycle",
|
||
"description": "List accessible connected or managed servers with their supported capabilities.",
|
||
"route": "GET /api/system/servers"
|
||
},
|
||
"servers.create": {
|
||
"page": "servers",
|
||
"section": "Server lifecycle",
|
||
"description": "Register an SSH server.",
|
||
"route": "POST /api/system/servers"
|
||
},
|
||
"servers.testConnection": {
|
||
"page": "servers",
|
||
"section": "Server lifecycle",
|
||
"description": "Test the supplied SSH connection configuration.",
|
||
"route": "POST /api/system/test-connection"
|
||
},
|
||
"servers.networkCapabilities": {
|
||
"page": "servers",
|
||
"section": "Private networks",
|
||
"description": "Read infrastructure availability, provider profiles, and supported network operations.",
|
||
"route": "GET /api/system/networks/capabilities"
|
||
},
|
||
"servers.listNetworks": {
|
||
"page": "servers",
|
||
"section": "Private networks",
|
||
"description": "List organization-owned private networks and their latest verification.",
|
||
"route": "GET /api/system/networks"
|
||
},
|
||
"servers.getNetwork": {
|
||
"page": "servers",
|
||
"section": "Private networks",
|
||
"description": "Read a private network, its server attachments, and verification report.",
|
||
"route": "GET /api/system/networks/:id"
|
||
},
|
||
"servers.createNetwork": {
|
||
"page": "servers",
|
||
"section": "Private networks",
|
||
"description": "Save an existing private network using an idempotent request ID.",
|
||
"route": "POST /api/system/networks"
|
||
},
|
||
"servers.updateNetwork": {
|
||
"page": "servers",
|
||
"section": "Private networks",
|
||
"description": "Update idle native-network inventory using its current revision; invalidate earlier verification.",
|
||
"route": "PATCH /api/system/networks/:id"
|
||
},
|
||
"servers.verifyNetwork": {
|
||
"page": "servers",
|
||
"section": "Private networks",
|
||
"description": "Verify private connectivity, latency, and loss; optionally measure bounded throughput for a selected pair.",
|
||
"route": "POST /api/system/networks/:id/verify"
|
||
},
|
||
"servers.removeNetwork": {
|
||
"page": "servers",
|
||
"section": "Private networks",
|
||
"description": "Remove unused native-network inventory at the current revision, preserving servers and external networks.",
|
||
"route": "DELETE /api/system/networks/:id"
|
||
},
|
||
"servers.reviseManagedNetworkAccess": {
|
||
"page": "servers",
|
||
"section": "Private networks",
|
||
"description": "Revise the private connection policy of stopped setup using its current progress sequence and an idempotent request ID.",
|
||
"route": "PATCH /api/system/networks/preparations/:preparationId/connections"
|
||
},
|
||
"servers.listComputeClusters": {
|
||
"page": "servers",
|
||
"section": "Compute clusters",
|
||
"description": "List organization-owned compute clusters and their private networks.",
|
||
"route": "GET /api/system/compute-clusters"
|
||
},
|
||
"servers.getComputeCluster": {
|
||
"page": "servers",
|
||
"section": "Compute clusters",
|
||
"description": "Read a compute cluster, its selected servers, and private network.",
|
||
"route": "GET /api/system/compute-clusters/:id"
|
||
},
|
||
"servers.createComputeCluster": {
|
||
"page": "servers",
|
||
"section": "Compute clusters",
|
||
"description": "Group selected servers on an existing private network using an idempotent request ID.",
|
||
"route": "POST /api/system/compute-clusters"
|
||
},
|
||
"servers.updateComputeCluster": {
|
||
"page": "servers",
|
||
"section": "Compute clusters",
|
||
"description": "Update a compute cluster and its selected servers using the current revision.",
|
||
"route": "PATCH /api/system/compute-clusters/:id"
|
||
},
|
||
"servers.removeComputeCluster": {
|
||
"page": "servers",
|
||
"section": "Compute clusters",
|
||
"description": "Remove compute-cluster inventory at the current revision, retaining its servers and private network.",
|
||
"route": "DELETE /api/system/compute-clusters/:id"
|
||
},
|
||
"servers.getClusterRuntime": {
|
||
"page": "servers",
|
||
"section": "Cluster runtime",
|
||
"description": "Read saved K3s setup, verification and cleanup progress; null before setup.",
|
||
"route": "GET /api/system/compute-clusters/:id/runtime"
|
||
},
|
||
"servers.setupClusterRuntime": {
|
||
"page": "servers",
|
||
"section": "Cluster runtime",
|
||
"description": "Start automated K3s setup with the compute-cluster revision and an idempotent request ID.",
|
||
"route": "POST /api/system/compute-clusters/:id/runtime"
|
||
},
|
||
"servers.retryClusterRuntime": {
|
||
"page": "servers",
|
||
"section": "Cluster runtime",
|
||
"description": "Resume failed or interrupted setup or removal using its current progress sequence.",
|
||
"route": "POST /api/system/compute-clusters/:id/runtime/retry"
|
||
},
|
||
"servers.removeClusterRuntime": {
|
||
"page": "servers",
|
||
"section": "Cluster runtime",
|
||
"description": "Remove the owned runtime after verifying an empty cluster, retaining Docker services and networking.",
|
||
"route": "DELETE /api/system/compute-clusters/:id/runtime"
|
||
},
|
||
"servers.clusterRuntimeEvents": {
|
||
"page": "servers",
|
||
"section": "Cluster runtime",
|
||
"description": "Subscribe to saved runtime progress through read-only, replayable SSE.",
|
||
"route": "GET /api/system/compute-clusters/:id/runtime/stream"
|
||
},
|
||
"servers.getClusterStorage": {
|
||
"page": "servers",
|
||
"section": "Shared storage",
|
||
"description": "Read saved storage setup and capacity, or request current disk and volume health with observe=true.",
|
||
"route": "GET /api/system/compute-clusters/:id/storage"
|
||
},
|
||
"servers.setupClusterStorage": {
|
||
"page": "servers",
|
||
"section": "Shared storage",
|
||
"description": "Enable shared storage across reviewed cluster servers and empty directories. Installs prerequisites without formatting disks; a stable request ID avoids duplicate setup.",
|
||
"route": "POST /api/system/compute-clusters/:id/storage"
|
||
},
|
||
"servers.retryClusterStorage": {
|
||
"page": "servers",
|
||
"section": "Shared storage",
|
||
"description": "Explicitly resume failed or interrupted setup or removal using its current sequence.",
|
||
"route": "POST /api/system/compute-clusters/:id/storage/retry"
|
||
},
|
||
"servers.configureClusterStorageBackup": {
|
||
"page": "servers",
|
||
"section": "Shared storage",
|
||
"description": "Configure an external backup destination using the current storage sequence. An existing destination is preserved so its archives remain recoverable.",
|
||
"route": "PATCH /api/system/compute-clusters/:id/storage/backup"
|
||
},
|
||
"servers.removeClusterStorage": {
|
||
"page": "servers",
|
||
"section": "Shared storage",
|
||
"description": "Remove an empty storage installation using its latest sequence. Persistent or retained volumes block removal; external archives are preserved.",
|
||
"route": "DELETE /api/system/compute-clusters/:id/storage"
|
||
},
|
||
"servers.clusterStorageEvents": {
|
||
"page": "servers",
|
||
"section": "Shared storage",
|
||
"description": "Subscribe to saved storage setup and removal progress through replayable SSE.",
|
||
"route": "GET /api/system/compute-clusters/:id/storage/stream"
|
||
},
|
||
"servers.infrastructure": {
|
||
"page": "servers",
|
||
"section": "Server lifecycle",
|
||
"description": "Read the private networks and compute cluster associated with a server.",
|
||
"route": "GET /api/system/servers/:id/infrastructure"
|
||
},
|
||
"servers.clusterCapabilities": {
|
||
"page": "servers",
|
||
"section": "Legacy network methods",
|
||
"description": "Compatibility method for private-network capabilities; prefer networkCapabilities.",
|
||
"route": "GET /api/system/clusters/capabilities"
|
||
},
|
||
"servers.prepareManagedNetwork": {
|
||
"page": "servers",
|
||
"section": "Private networks",
|
||
"description": "Prepare missing networking tools on selected servers, retain per-step logs, and produce a reviewable plan. Repeat the same request to retry a failed preparation.",
|
||
"route": "POST /api/system/networks/preparations"
|
||
},
|
||
"servers.getManagedNetworkPreparation": {
|
||
"page": "servers",
|
||
"section": "Private networks",
|
||
"description": "Read saved prerequisite checks, installation logs, failures, and the resulting network operation.",
|
||
"route": "GET /api/system/networks/preparations/:preparationId"
|
||
},
|
||
"servers.discardManagedNetworkPreparation": {
|
||
"page": "servers",
|
||
"section": "Private networks",
|
||
"description": "Discard stopped setup and its unapplied plan using the current progress sequence. Installed tools and servers are retained; completed network cleanup is required once apply has started.",
|
||
"route": "DELETE /api/system/networks/preparations/:preparationId"
|
||
},
|
||
"servers.removeManagedNetworkPreparationMember": {
|
||
"page": "servers",
|
||
"section": "Private networks",
|
||
"description": "Remove one server from stopped initial setup and save a paused replacement selection. Preparation starts only on explicit retry; diagnostics, services, data, and installed tools are retained.",
|
||
"route": "DELETE /api/system/networks/preparations/:preparationId/members/:serverId"
|
||
},
|
||
"servers.removeManagedNetworkOperationMember": {
|
||
"page": "servers",
|
||
"section": "Private networks",
|
||
"description": "Remove a server from an unfinished initial network operation. Restore its changes on the original hosts and save the remaining selection, paused until preparation is explicitly retried.",
|
||
"route": "DELETE /api/system/networks/operations/:operationId/members/:serverId"
|
||
},
|
||
"servers.listManagedNetworkPreparations": {
|
||
"page": "servers",
|
||
"section": "Private networks",
|
||
"description": "List recent server preparations that still need attention or network review.",
|
||
"route": "GET /api/system/networks/preparations"
|
||
},
|
||
"servers.managedNetworkPreparationEvents": {
|
||
"page": "servers",
|
||
"section": "Private networks",
|
||
"description": "Subscribe to saved preparation snapshots and completion. Reconnecting only reads progress; it never restarts preparation.",
|
||
"route": "GET /api/system/networks/preparations/:preparationId/stream"
|
||
},
|
||
"servers.managedNetworkOperationEvents": {
|
||
"page": "servers",
|
||
"section": "Private networks",
|
||
"description": "Subscribe to durable network apply, verification, and recovery progress.",
|
||
"route": "GET /api/system/networks/operations/:operationId/stream"
|
||
},
|
||
"servers.clusterEvents": {
|
||
"page": "servers",
|
||
"section": "Private networks",
|
||
"description": "Subscribe to private-network overview and unfinished preparation snapshots.",
|
||
"route": "GET /api/system/networks/stream"
|
||
},
|
||
"servers.planManagedNetwork": {
|
||
"page": "servers",
|
||
"section": "Private networks",
|
||
"description": "Inspect servers and persist a reviewable WireGuard plan without changing host networking.",
|
||
"route": "POST /api/system/networks/plans"
|
||
},
|
||
"servers.getManagedNetworkOperation": {
|
||
"page": "servers",
|
||
"section": "Private networks",
|
||
"description": "Read a managed network plan, per-host progress, verification, and recovery state.",
|
||
"route": "GET /api/system/networks/operations/:operationId"
|
||
},
|
||
"servers.applyManagedNetwork": {
|
||
"page": "servers",
|
||
"section": "Private networks",
|
||
"description": "Apply an approved network plan, resume an interrupted operation, or restore its previous network.",
|
||
"route": "POST /api/system/networks/operations/:operationId/apply"
|
||
},
|
||
"servers.discardManagedNetworkPlan": {
|
||
"page": "servers",
|
||
"section": "Private networks",
|
||
"description": "Discard an unapplied plan and its stopped preparation atomically. Active or unresolved host changes must be recovered through the network operation.",
|
||
"route": "DELETE /api/system/networks/operations/:operationId"
|
||
},
|
||
"servers.listClusters": {
|
||
"page": "servers",
|
||
"section": "Legacy network methods",
|
||
"description": "Compatibility method for private-network inventory; prefer listNetworks.",
|
||
"route": "GET /api/system/clusters"
|
||
},
|
||
"servers.getCluster": {
|
||
"page": "servers",
|
||
"section": "Legacy network methods",
|
||
"description": "Read private-network details using the legacy clusterId input; prefer getNetwork.",
|
||
"route": "GET /api/system/clusters/:id"
|
||
},
|
||
"servers.createCluster": {
|
||
"page": "servers",
|
||
"section": "Legacy network methods",
|
||
"description": "Create private-network inventory using the legacy method; prefer createNetwork.",
|
||
"route": "POST /api/system/clusters"
|
||
},
|
||
"servers.updateCluster": {
|
||
"page": "servers",
|
||
"section": "Legacy network methods",
|
||
"description": "Update private-network inventory using the legacy clusterId input; prefer updateNetwork.",
|
||
"route": "PATCH /api/system/clusters/:id"
|
||
},
|
||
"servers.verifyCluster": {
|
||
"page": "servers",
|
||
"section": "Legacy network methods",
|
||
"description": "Verify private-network connectivity using the legacy clusterId input; prefer verifyNetwork.",
|
||
"route": "POST /api/system/clusters/:id/verify"
|
||
},
|
||
"servers.removeCluster": {
|
||
"page": "servers",
|
||
"section": "Legacy network methods",
|
||
"description": "Remove native-network inventory using the legacy clusterId input; prefer removeNetwork.",
|
||
"route": "DELETE /api/system/clusters/:id"
|
||
},
|
||
"servers.inspectNetwork": {
|
||
"page": "servers",
|
||
"section": "Private networks",
|
||
"description": "Inspect a server’s machine identity and private interfaces without changing its network.",
|
||
"route": "POST /api/system/servers/:id/network/inspect"
|
||
},
|
||
"servers.githubStatus": {
|
||
"page": "servers",
|
||
"section": "Git credentials",
|
||
"description": "Read the server’s GitHub authentication status.",
|
||
"route": "GET /api/system/servers/:id/github"
|
||
},
|
||
"servers.connectGitHub": {
|
||
"page": "servers",
|
||
"section": "Git credentials",
|
||
"description": "Start GitHub authentication for a server.",
|
||
"route": "POST /api/system/servers/:id/github/connect"
|
||
},
|
||
"servers.pollGitHubConnection": {
|
||
"page": "servers",
|
||
"section": "Git credentials",
|
||
"description": "Poll a server’s GitHub authentication flow.",
|
||
"route": "GET /api/system/servers/:id/github/connect/poll"
|
||
},
|
||
"servers.setGitHubToken": {
|
||
"page": "servers",
|
||
"section": "Git credentials",
|
||
"description": "Store a GitHub token for a server.",
|
||
"route": "PUT /api/system/servers/:id/github/token"
|
||
},
|
||
"servers.generateGitHubKey": {
|
||
"page": "servers",
|
||
"section": "Git credentials",
|
||
"description": "Generate a GitHub SSH key on the server.",
|
||
"route": "POST /api/system/servers/:id/github/ssh-key"
|
||
},
|
||
"servers.useGitHubDeployKeys": {
|
||
"page": "servers",
|
||
"section": "Git credentials",
|
||
"description": "Select repository deploy keys for server clones.",
|
||
"route": "PUT /api/system/servers/:id/github/deploy-key-mode"
|
||
},
|
||
"servers.disconnectGitHub": {
|
||
"page": "servers",
|
||
"section": "Git credentials",
|
||
"description": "Remove the server’s GitHub authentication.",
|
||
"route": "DELETE /api/system/servers/:id/github"
|
||
},
|
||
"servers.listTunnels": {
|
||
"page": "servers",
|
||
"section": "Networking",
|
||
"description": "List the server’s port-forward configurations.",
|
||
"route": "GET /api/system/servers/:id/tunnels"
|
||
},
|
||
"servers.saveTunnel": {
|
||
"page": "servers",
|
||
"section": "Networking",
|
||
"description": "Create or update a port-forward configuration.",
|
||
"route": "POST /api/system/servers/:id/tunnels"
|
||
},
|
||
"servers.startTunnel": {
|
||
"page": "servers",
|
||
"section": "Networking",
|
||
"description": "Start an authorized port forward.",
|
||
"route": "POST /api/system/servers/:id/tunnels/:tunnelId/start"
|
||
},
|
||
"servers.stopTunnel": {
|
||
"page": "servers",
|
||
"section": "Networking",
|
||
"description": "Stop a port forward.",
|
||
"route": "POST /api/system/servers/:id/tunnels/:tunnelId/stop"
|
||
},
|
||
"servers.removeTunnel": {
|
||
"page": "servers",
|
||
"section": "Networking",
|
||
"description": "Remove a port-forward configuration.",
|
||
"route": "DELETE /api/system/servers/:id/tunnels/:tunnelId"
|
||
},
|
||
"servers.listContainers": {
|
||
"page": "servers",
|
||
"section": "Managed containers",
|
||
"description": "List one server’s managed containers.",
|
||
"route": "GET /api/system/servers/:id/containers"
|
||
},
|
||
"servers.scanContainers": {
|
||
"page": "servers",
|
||
"section": "Managed containers",
|
||
"description": "Refresh one server’s managed-container state.",
|
||
"route": "POST /api/system/servers/:id/containers/scan"
|
||
},
|
||
"servers.containerApplySession": {
|
||
"page": "servers",
|
||
"section": "Managed containers",
|
||
"description": "Read a container’s active apply session.",
|
||
"route": "GET /api/system/servers/:id/containers/:component/apply/session"
|
||
},
|
||
"servers.get": {
|
||
"page": "servers",
|
||
"section": "Server lifecycle",
|
||
"description": "Read server details, managed plan, live provider state and durable operation progress.",
|
||
"route": "GET /api/system/servers/:id"
|
||
},
|
||
"servers.reachability": {
|
||
"page": "servers",
|
||
"section": "Server lifecycle",
|
||
"description": "Read server reachability.",
|
||
"route": "GET /api/system/servers/:id/reachability"
|
||
},
|
||
"servers.update": {
|
||
"page": "servers",
|
||
"section": "Server lifecycle",
|
||
"description": "Change registered server configuration.",
|
||
"route": "PATCH /api/system/servers/:id"
|
||
},
|
||
"servers.deletionPreview": {
|
||
"page": "servers",
|
||
"section": "Server lifecycle",
|
||
"description": "Inspect workloads affected by removing the server.",
|
||
"route": "GET /api/system/servers/:id/deletion-preview"
|
||
},
|
||
"servers.remove": {
|
||
"page": "servers",
|
||
"section": "Server lifecycle",
|
||
"description": "Remove a server using the requested workload cleanup policy.",
|
||
"route": "DELETE /api/system/servers/:id"
|
||
},
|
||
"servers.exec": {
|
||
"page": "servers",
|
||
"section": "Server lifecycle",
|
||
"description": "Execute an authorized command on the server.",
|
||
"route": "POST /api/system/servers/:id/exec"
|
||
},
|
||
"servers.listModules": {
|
||
"page": "servers",
|
||
"section": "Components and installation",
|
||
"description": "List the server’s managed components.",
|
||
"route": "GET /api/system/servers/:id/modules"
|
||
},
|
||
"servers.scanModules": {
|
||
"page": "servers",
|
||
"section": "Components and installation",
|
||
"description": "Refresh managed-component state.",
|
||
"route": "POST /api/system/servers/:id/modules/scan"
|
||
},
|
||
"servers.applyModule": {
|
||
"page": "servers",
|
||
"section": "Components and installation",
|
||
"description": "Apply a managed component’s configuration.",
|
||
"route": "POST /api/system/servers/:id/modules/:module/apply"
|
||
},
|
||
"servers.getRateLimit": {
|
||
"page": "servers",
|
||
"section": "Networking",
|
||
"description": "Read per-server request rate-limit configuration.",
|
||
"route": "GET /api/system/servers/:id/rate-limit"
|
||
},
|
||
"servers.updateRateLimit": {
|
||
"page": "servers",
|
||
"section": "Networking",
|
||
"description": "Update per-server request rate limits.",
|
||
"route": "PATCH /api/system/servers/:id/rate-limit"
|
||
},
|
||
"servers.check": {
|
||
"page": "servers",
|
||
"section": "Server lifecycle",
|
||
"description": "Run a server health check.",
|
||
"route": "POST /api/system/check"
|
||
},
|
||
"servers.installComponent": {
|
||
"page": "servers",
|
||
"section": "Components and installation",
|
||
"description": "Install one managed component.",
|
||
"route": "POST /api/system/install"
|
||
},
|
||
"servers.removeComponent": {
|
||
"page": "servers",
|
||
"section": "Components and installation",
|
||
"description": "Remove a managed component.",
|
||
"route": "POST /api/system/remove"
|
||
},
|
||
"servers.scanPorts": {
|
||
"page": "servers",
|
||
"section": "Server lifecycle",
|
||
"description": "Scan ports on an authorized server.",
|
||
"route": "POST /api/system/servers/:id/ports/scan"
|
||
},
|
||
"system.info": {
|
||
"page": "health",
|
||
"section": "Operations",
|
||
"description": "Read installation and deployment-mode information.",
|
||
"route": "GET /api/health/env"
|
||
},
|
||
"system.browse": {
|
||
"page": "system",
|
||
"section": "Operations",
|
||
"description": "Browse an authorized host filesystem location.",
|
||
"route": "GET /api/system/browse"
|
||
},
|
||
"system.health": {
|
||
"page": "system",
|
||
"section": "Operations",
|
||
"description": "Read database and installation health.",
|
||
"route": "GET /api/system/diagnostics"
|
||
},
|
||
"system.getSettings": {
|
||
"page": "system",
|
||
"section": "Operations",
|
||
"description": "Read instance settings.",
|
||
"route": "GET /api/system/settings"
|
||
},
|
||
"system.updateSettings": {
|
||
"page": "system",
|
||
"section": "Operations",
|
||
"description": "Change instance settings.",
|
||
"route": "PATCH /api/system/settings"
|
||
},
|
||
"system.getEmailSettings": {
|
||
"page": "system",
|
||
"section": "Operations",
|
||
"description": "Read SMTP settings with secrets masked.",
|
||
"route": "GET /api/system/settings/email"
|
||
},
|
||
"system.updateEmailSettings": {
|
||
"page": "system",
|
||
"section": "Operations",
|
||
"description": "Configure SMTP delivery for the installation.",
|
||
"route": "PUT /api/system/settings/email"
|
||
},
|
||
"system.sendTestEmail": {
|
||
"page": "system",
|
||
"section": "Operations",
|
||
"description": "Send a test message using the configured SMTP settings.",
|
||
"route": "POST /api/system/settings/email/test"
|
||
},
|
||
"system.resetSettings": {
|
||
"page": "system",
|
||
"section": "Operations",
|
||
"description": "Reset supported instance settings.",
|
||
"route": "DELETE /api/system/settings"
|
||
},
|
||
"system.listUntrackedEdgeSites": {
|
||
"page": "edge",
|
||
"section": "Operations",
|
||
"description": "List edge sites not tracked by project records.",
|
||
"route": "GET /api/system/edge/untracked"
|
||
},
|
||
"system.removeUntrackedEdgeSite": {
|
||
"page": "edge",
|
||
"section": "Operations",
|
||
"description": "Remove an authorized untracked edge site.",
|
||
"route": "POST /api/system/edge/untracked/remove"
|
||
},
|
||
"apps.listCatalog": {
|
||
"page": "apps",
|
||
"section": "Operations",
|
||
"description": "List available app templates.",
|
||
"route": "GET /api/apps/catalog"
|
||
},
|
||
"apps.listCustom": {
|
||
"page": "apps",
|
||
"section": "Operations",
|
||
"description": "List the organization’s custom app definitions.",
|
||
"route": "GET /api/apps/custom"
|
||
},
|
||
"apps.saveCustom": {
|
||
"page": "apps",
|
||
"section": "Operations",
|
||
"description": "Validate and save a custom app definition.",
|
||
"route": "POST /api/apps/custom"
|
||
},
|
||
"apps.install": {
|
||
"page": "apps",
|
||
"section": "Operations",
|
||
"description": "Create or update an installation draft and return its project.",
|
||
"route": "POST /api/apps"
|
||
},
|
||
"apps.getCatalogEntry": {
|
||
"page": "apps",
|
||
"section": "Operations",
|
||
"description": "Read a template and its accessible installation draft.",
|
||
"route": "GET /api/apps/catalog/:id"
|
||
},
|
||
"apps.hostFit": {
|
||
"page": "apps",
|
||
"section": "Operations",
|
||
"description": "Preview host recommendations or Cloud plan fit, including an optional draft's saved resources.",
|
||
"route": "GET /api/apps/catalog/:id/host-fit"
|
||
},
|
||
"apps.removeCustom": {
|
||
"page": "apps",
|
||
"section": "Operations",
|
||
"description": "Remove a custom catalog definition.",
|
||
"route": "DELETE /api/apps/custom/:appId"
|
||
},
|
||
"backupDestinations.list": {
|
||
"page": "backup-destinations",
|
||
"section": "Operations",
|
||
"description": "List backup storage destinations.",
|
||
"route": "GET /api/backup-destinations"
|
||
},
|
||
"backupDestinations.create": {
|
||
"page": "backup-destinations",
|
||
"section": "Operations",
|
||
"description": "Create a backup destination.",
|
||
"route": "POST /api/backup-destinations"
|
||
},
|
||
"backupDestinations.preflightDraft": {
|
||
"page": "backup-destinations",
|
||
"section": "Operations",
|
||
"description": "Test destination configuration before saving it.",
|
||
"route": "POST /api/backup-destinations/preflight"
|
||
},
|
||
"backupDestinations.history": {
|
||
"page": "backup-destinations",
|
||
"section": "Operations",
|
||
"description": "List backup history across storage destinations.",
|
||
"route": "GET /api/backup-destinations/history"
|
||
},
|
||
"backupDestinations.runs": {
|
||
"page": "backup-destinations",
|
||
"section": "Operations",
|
||
"description": "List backup runs stored in one destination.",
|
||
"route": "GET /api/backup-destinations/:id/runs"
|
||
},
|
||
"backupDestinations.get": {
|
||
"page": "backup-destinations",
|
||
"section": "Operations",
|
||
"description": "Read a destination with credentials protected.",
|
||
"route": "GET /api/backup-destinations/:id"
|
||
},
|
||
"backupDestinations.usage": {
|
||
"page": "backup-destinations",
|
||
"section": "Operations",
|
||
"description": "Read destination storage usage.",
|
||
"route": "GET /api/backup-destinations/:id/usage"
|
||
},
|
||
"backupDestinations.update": {
|
||
"page": "backup-destinations",
|
||
"section": "Operations",
|
||
"description": "Update destination settings.",
|
||
"route": "PATCH /api/backup-destinations/:id"
|
||
},
|
||
"backupDestinations.remove": {
|
||
"page": "backup-destinations",
|
||
"section": "Operations",
|
||
"description": "Remove an eligible destination.",
|
||
"route": "DELETE /api/backup-destinations/:id"
|
||
},
|
||
"backupDestinations.preflight": {
|
||
"page": "backup-destinations",
|
||
"section": "Operations",
|
||
"description": "Test a saved destination and record its verification state.",
|
||
"route": "POST /api/backup-destinations/:id/preflight"
|
||
},
|
||
"backups.streamRun": {
|
||
"page": "backups",
|
||
"section": "Operations",
|
||
"description": "Stream backup execution progress.",
|
||
"route": "GET /api/backup-runs/:runId/stream"
|
||
},
|
||
"backups.streamRestore": {
|
||
"page": "backups",
|
||
"section": "Operations",
|
||
"description": "Stream restore progress.",
|
||
"route": "GET /api/backup-restores/:restoreId/stream"
|
||
},
|
||
"backups.listPolicies": {
|
||
"page": "backups",
|
||
"section": "Operations",
|
||
"description": "List backup policies for the requested source.",
|
||
"route": "GET /api/projects/:projectId/backup-policies"
|
||
},
|
||
"backups.createPolicy": {
|
||
"page": "backups",
|
||
"section": "Operations",
|
||
"description": "Create a backup policy and retention configuration.",
|
||
"route": "POST /api/projects/:projectId/backup-policies"
|
||
},
|
||
"backups.listRuns": {
|
||
"page": "backups",
|
||
"section": "Operations",
|
||
"description": "List recorded backup runs using typed filters.",
|
||
"route": "GET /api/projects/:projectId/backup-runs"
|
||
},
|
||
"backups.updatePolicy": {
|
||
"page": "backups",
|
||
"section": "Operations",
|
||
"description": "Change a backup policy.",
|
||
"route": "PATCH /api/backup-policies/:policyId"
|
||
},
|
||
"backups.removePolicy": {
|
||
"page": "backups",
|
||
"section": "Operations",
|
||
"description": "Remove a backup policy.",
|
||
"route": "DELETE /api/backup-policies/:policyId"
|
||
},
|
||
"backups.run": {
|
||
"page": "backups",
|
||
"section": "Operations",
|
||
"description": "Trigger a policy’s backup now.",
|
||
"route": "POST /api/backup-policies/:policyId/run"
|
||
},
|
||
"backups.getRun": {
|
||
"page": "backups",
|
||
"section": "Operations",
|
||
"description": "Read a backup run and its result.",
|
||
"route": "GET /api/backup-runs/:runId"
|
||
},
|
||
"backups.protectRun": {
|
||
"page": "backups",
|
||
"section": "Operations",
|
||
"description": "Protect or unprotect a run from retention pruning.",
|
||
"route": "POST /api/backup-runs/:runId/protect"
|
||
},
|
||
"backups.prepareRestore": {
|
||
"page": "backups",
|
||
"section": "Operations",
|
||
"description": "Stage and validate a restore without applying it.",
|
||
"route": "POST /api/backup-runs/:runId/restore/prepare"
|
||
},
|
||
"backups.getRestore": {
|
||
"page": "backups",
|
||
"section": "Operations",
|
||
"description": "Read a restore session and its confirmation requirements.",
|
||
"route": "GET /api/backup-restores/:restoreId"
|
||
},
|
||
"backups.applyRestore": {
|
||
"page": "backups",
|
||
"section": "Operations",
|
||
"description": "Apply a prepared restore using the required confirmation.",
|
||
"route": "POST /api/backup-restores/:restoreId/apply"
|
||
},
|
||
"backups.cancelRestore": {
|
||
"page": "backups",
|
||
"section": "Operations",
|
||
"description": "Request cancellation of a restore.",
|
||
"route": "POST /api/backup-restores/:restoreId/cancel"
|
||
},
|
||
"billing.listPlans": {
|
||
"page": "billing",
|
||
"section": "Operations",
|
||
"description": "Read the plan catalog, optionally localized.",
|
||
"route": "GET /api/billing/plans"
|
||
},
|
||
"billing.getState": {
|
||
"page": "billing",
|
||
"section": "Operations",
|
||
"description": "Read current billing state.",
|
||
"route": "GET /api/billing/state"
|
||
},
|
||
"billing.getCreditAlerts": {
|
||
"page": "billing",
|
||
"section": "Operations",
|
||
"description": "Read provider credit alerts across the organization's managed servers, with unavailable subscriptions identified separately.",
|
||
"route": "GET /api/billing/credit-alerts"
|
||
},
|
||
"billing.getCheckout": {
|
||
"page": "billing",
|
||
"section": "Operations",
|
||
"description": "Verify a checkout and its credit delivery for this organization.",
|
||
"route": "GET /api/billing/checkout"
|
||
},
|
||
"billing.listCheckouts": {
|
||
"page": "billing",
|
||
"section": "Operations",
|
||
"description": "List unfinished server payments with saved offer terms and verified recovery actions. Does not start a payment or expose hosted URLs.",
|
||
"route": "GET /api/billing/checkouts"
|
||
},
|
||
"billing.resumeCheckout": {
|
||
"page": "billing",
|
||
"section": "Operations",
|
||
"description": "Resume the exact saved checkout, or report that it was submitted or expired. Browser payment authorization is still required.",
|
||
"route": "POST /api/billing/checkout/resume"
|
||
},
|
||
"billing.cancelCheckout": {
|
||
"page": "billing",
|
||
"section": "Operations",
|
||
"description": "Request provider-confirmed cancellation of an unfinished capacity checkout. Unknown outcomes remain tracked and retryable.",
|
||
"route": "POST /api/billing/checkout/cancel"
|
||
},
|
||
"billing.getResources": {
|
||
"page": "billing",
|
||
"section": "Operations",
|
||
"description": "Read compute usage, edge traffic, and bandwidth limits.",
|
||
"route": "GET /api/billing/resources"
|
||
},
|
||
"billing.getSubscription": {
|
||
"page": "billing",
|
||
"section": "Operations",
|
||
"description": "Read subscription and renewal state.",
|
||
"route": "GET /api/billing/subscription"
|
||
},
|
||
"billing.quoteCustomPlan": {
|
||
"page": "billing",
|
||
"section": "Operations",
|
||
"description": "Quote a Custom server's monthly price and usage allowance without purchasing it.",
|
||
"route": "GET /api/billing/subscription/quote"
|
||
},
|
||
"billing.createSubscription": {
|
||
"page": "billing",
|
||
"section": "Operations",
|
||
"description": "Start hosted checkout for a new or ended server subscription.",
|
||
"route": "POST /api/billing/subscription"
|
||
},
|
||
"billing.previewSubscriptionChange": {
|
||
"page": "billing",
|
||
"section": "Operations",
|
||
"description": "Save an expiring provider quote with proration, effective date and affected-project restart review; no charge.",
|
||
"route": "POST /api/billing/subscription/change/preview"
|
||
},
|
||
"billing.confirmSubscriptionChange": {
|
||
"page": "billing",
|
||
"section": "Operations",
|
||
"description": "Confirm a saved plan-change quote and restart consent. Upgrades activate after payment; downgrades wait for paid renewal.",
|
||
"route": "POST /api/billing/subscription/change"
|
||
},
|
||
"billing.getSubscriptionChange": {
|
||
"page": "billing",
|
||
"section": "Operations",
|
||
"description": "Read the selected server's provider plan-change and capacity-update status.",
|
||
"route": "GET /api/billing/subscription/change"
|
||
},
|
||
"billing.cancelSubscriptionChange": {
|
||
"page": "billing",
|
||
"section": "Operations",
|
||
"description": "Cancel a pending, cancelable change while preserving the underlying subscription.",
|
||
"route": "POST /api/billing/subscription/change/cancel"
|
||
},
|
||
"billing.cancelSubscription": {
|
||
"page": "billing",
|
||
"section": "Operations",
|
||
"description": "Stop subscription renewal at the end of the paid period.",
|
||
"route": "POST /api/billing/cancel"
|
||
},
|
||
"billing.resumeSubscription": {
|
||
"page": "billing",
|
||
"section": "Operations",
|
||
"description": "Resume a scheduled subscription renewal.",
|
||
"route": "POST /api/billing/resume"
|
||
},
|
||
"billing.createTopup": {
|
||
"page": "billing",
|
||
"section": "Operations",
|
||
"description": "Create a credit top-up checkout.",
|
||
"route": "POST /api/billing/topup"
|
||
},
|
||
"billing.listTopupPacks": {
|
||
"page": "billing",
|
||
"section": "Operations",
|
||
"description": "List available credit packs.",
|
||
"route": "GET /api/billing/topup-packs"
|
||
},
|
||
"billing.createPortal": {
|
||
"page": "billing",
|
||
"section": "Operations",
|
||
"description": "Create a billing portal session.",
|
||
"route": "POST /api/billing/portal"
|
||
},
|
||
"billing.getUsage": {
|
||
"page": "billing",
|
||
"section": "Operations",
|
||
"description": "Read billable usage for the requested period.",
|
||
"route": "GET /api/billing/usage"
|
||
},
|
||
"billing.listAllowanceDetail": {
|
||
"page": "billing",
|
||
"section": "Operations",
|
||
"description": "Read detailed allowance allocation and consumption.",
|
||
"route": "GET /api/billing/allowances"
|
||
},
|
||
"notices.list": {
|
||
"page": "notices",
|
||
"section": "Operations",
|
||
"description": "Read active public installation announcements.",
|
||
"route": "GET /api/notices"
|
||
},
|
||
"github.getStatus": {
|
||
"page": "github",
|
||
"section": "Connect",
|
||
"description": "Read GitHub connection status.",
|
||
"route": "GET /api/github/status"
|
||
},
|
||
"github.getHome": {
|
||
"page": "github",
|
||
"section": "Connect",
|
||
"description": "Read the GitHub overview for the current identity.",
|
||
"route": "GET /api/github/home"
|
||
},
|
||
"github.connect": {
|
||
"page": "github",
|
||
"section": "Connect",
|
||
"description": "Start GitHub authorization or select an accessible App installation. Repository access is separate from Cloud sign-in.",
|
||
"route": "POST /api/github/connect"
|
||
},
|
||
"github.claimInstallation": {
|
||
"page": "github",
|
||
"section": "Connect",
|
||
"description": "Claim an authorized GitHub App installation.",
|
||
"route": "POST /api/github/installations/claim"
|
||
},
|
||
"github.getLocalStatus": {
|
||
"page": "github",
|
||
"section": "Connect",
|
||
"description": "Read local Git identity availability.",
|
||
"route": "GET /api/github/local-status"
|
||
},
|
||
"github.pollConnect": {
|
||
"page": "github",
|
||
"section": "Connect",
|
||
"description": "Poll the returned state for one connection attempt, or omit state for a self-hosted device flow.",
|
||
"route": "GET /api/github/connect/poll"
|
||
},
|
||
"github.setInstanceToken": {
|
||
"page": "github",
|
||
"section": "Connect",
|
||
"description": "Configure the installation’s GitHub token.",
|
||
"route": "POST /api/github/instance-token"
|
||
},
|
||
"github.disconnect": {
|
||
"page": "github",
|
||
"section": "Connect",
|
||
"description": "Disconnect a GitHub identity or source association.",
|
||
"route": "POST /api/github/disconnect"
|
||
},
|
||
"github.listRepos": {
|
||
"page": "github",
|
||
"section": "Repositories and source",
|
||
"description": "List accessible repositories.",
|
||
"route": "GET /api/github/repos"
|
||
},
|
||
"github.listOrgRepos": {
|
||
"page": "github",
|
||
"section": "Repositories and source",
|
||
"description": "List repositories in a GitHub organization.",
|
||
"route": "GET /api/github/orgs/:org/repos"
|
||
},
|
||
"github.getRepo": {
|
||
"page": "github",
|
||
"section": "Repositories and source",
|
||
"description": "Read repository metadata.",
|
||
"route": "GET /api/github/repos/:owner/:repo"
|
||
},
|
||
"github.createRepo": {
|
||
"page": "github",
|
||
"section": "Repositories and source",
|
||
"description": "Create a repository through the configured GitHub identity.",
|
||
"route": "POST /api/github/repos"
|
||
},
|
||
"github.deleteRepo": {
|
||
"page": "github",
|
||
"section": "Repositories and source",
|
||
"description": "Delete an authorized repository.",
|
||
"route": "DELETE /api/github/repos/:owner/:repo"
|
||
},
|
||
"github.listBranches": {
|
||
"page": "github",
|
||
"section": "Repositories and source",
|
||
"description": "List repository branches.",
|
||
"route": "GET /api/github/repos/:owner/:repo/branches"
|
||
},
|
||
"github.getCloneToken": {
|
||
"page": "github",
|
||
"section": "Repositories and source",
|
||
"description": "Obtain an authorized repository clone credential.",
|
||
"route": "GET /api/github/repos/:owner/:repo/clone-token"
|
||
},
|
||
"github.detectStack": {
|
||
"page": "github",
|
||
"section": "Repositories and source",
|
||
"description": "Detect build configuration in a repository.",
|
||
"route": "GET /api/github/repos/:owner/:repo/detect"
|
||
},
|
||
"github.listFiles": {
|
||
"page": "github",
|
||
"section": "Repositories and source",
|
||
"description": "List repository files at a path.",
|
||
"route": "GET /api/github/repos/:owner/:repo/files"
|
||
},
|
||
"github.listTree": {
|
||
"page": "github",
|
||
"section": "Repositories and source",
|
||
"description": "Read a repository tree.",
|
||
"route": "GET /api/github/repos/:owner/:repo/tree"
|
||
},
|
||
"github.getFile": {
|
||
"page": "github",
|
||
"section": "Repositories and source",
|
||
"description": "Read repository file content.",
|
||
"route": "GET /api/github/repos/:owner/:repo/file"
|
||
},
|
||
"github.listWebhooks": {
|
||
"page": "github",
|
||
"section": "Webhooks",
|
||
"description": "List repository webhooks.",
|
||
"route": "GET /api/github/repos/:owner/:repo/webhooks"
|
||
},
|
||
"github.registerWebhook": {
|
||
"page": "github",
|
||
"section": "Webhooks",
|
||
"description": "Register a repository webhook for deployment events.",
|
||
"route": "POST /api/github/repos/:owner/:repo/webhooks"
|
||
},
|
||
"github.deleteWebhook": {
|
||
"page": "github",
|
||
"section": "Webhooks",
|
||
"description": "Delete a repository webhook.",
|
||
"route": "DELETE /api/github/repos/:owner/:repo/webhooks"
|
||
},
|
||
"github.listSources": {
|
||
"page": "github",
|
||
"section": "GitHub App sources",
|
||
"description": "List configured GitHub App sources.",
|
||
"route": "GET /api/github/sources"
|
||
},
|
||
"github.beginManifest": {
|
||
"page": "github",
|
||
"section": "GitHub App sources",
|
||
"description": "Start GitHub App manifest registration.",
|
||
"route": "POST /api/github/sources/manifest"
|
||
},
|
||
"github.convertManifest": {
|
||
"page": "github",
|
||
"section": "GitHub App sources",
|
||
"description": "Convert a completed GitHub App manifest.",
|
||
"route": "POST /api/github/sources/manifest/convert"
|
||
},
|
||
"github.createManualSource": {
|
||
"page": "github",
|
||
"section": "GitHub App sources",
|
||
"description": "Register an existing GitHub App source.",
|
||
"route": "POST /api/github/sources/manual"
|
||
},
|
||
"github.updateSource": {
|
||
"page": "github",
|
||
"section": "GitHub App sources",
|
||
"description": "Change a GitHub App source’s configuration.",
|
||
"route": "PATCH /api/github/sources/:id"
|
||
},
|
||
"github.verifySource": {
|
||
"page": "github",
|
||
"section": "GitHub App sources",
|
||
"description": "Verify source credentials with GitHub.",
|
||
"route": "POST /api/github/sources/:id/verify"
|
||
},
|
||
"github.setDefaultSource": {
|
||
"page": "github",
|
||
"section": "GitHub App sources",
|
||
"description": "Select the default GitHub App source.",
|
||
"route": "POST /api/github/sources/:id/default"
|
||
},
|
||
"github.createInstallUrl": {
|
||
"page": "github",
|
||
"section": "GitHub App sources",
|
||
"description": "Create an installation URL for a GitHub App source.",
|
||
"route": "POST /api/github/sources/:id/install"
|
||
},
|
||
"github.deleteSource": {
|
||
"page": "github",
|
||
"section": "GitHub App sources",
|
||
"description": "Remove a GitHub App source.",
|
||
"route": "DELETE /api/github/sources/:id"
|
||
},
|
||
"permissions.listWorkspaces": {
|
||
"page": "permissions",
|
||
"section": "Operations",
|
||
"description": "List available workspace IDs, names, roles, and credential scope.",
|
||
"route": "GET /api/permissions/workspaces"
|
||
},
|
||
"permissions.orgMeta": {
|
||
"page": "permissions",
|
||
"section": "Operations",
|
||
"description": "Read the selected organization’s permission metadata.",
|
||
"route": "GET /api/permissions/org-meta"
|
||
},
|
||
"permissions.listResources": {
|
||
"page": "permissions",
|
||
"section": "Operations",
|
||
"description": "List resources available for permission grants.",
|
||
"route": "GET /api/permissions/resources"
|
||
},
|
||
"permissions.createTeamOrg": {
|
||
"page": "permissions",
|
||
"section": "Operations",
|
||
"description": "Create a team organization with the caller as its owner.",
|
||
"route": "POST /api/permissions/create-team-org"
|
||
},
|
||
"permissions.listGrants": {
|
||
"page": "permissions",
|
||
"section": "Operations",
|
||
"description": "Read grants for the requested subject.",
|
||
"route": "GET /api/permissions/grants"
|
||
},
|
||
"permissions.upsertGrant": {
|
||
"page": "permissions",
|
||
"section": "Operations",
|
||
"description": "Create or update one resource grant.",
|
||
"route": "POST /api/permissions/grants"
|
||
},
|
||
"permissions.replaceGrants": {
|
||
"page": "permissions",
|
||
"section": "Operations",
|
||
"description": "Replace the requested subject’s grant set.",
|
||
"route": "PUT /api/permissions/grants"
|
||
},
|
||
"permissions.listInvitations": {
|
||
"page": "permissions",
|
||
"section": "Operations",
|
||
"description": "List organization invitations.",
|
||
"route": "GET /api/permissions/invitations"
|
||
},
|
||
"permissions.inviteWithGrants": {
|
||
"page": "permissions",
|
||
"section": "Operations",
|
||
"description": "Invite a member with explicit role and optional grants.",
|
||
"route": "POST /api/permissions/invite-with-grants"
|
||
},
|
||
"permissions.listMembers": {
|
||
"page": "permissions",
|
||
"section": "Operations",
|
||
"description": "List organization members.",
|
||
"route": "GET /api/permissions/members"
|
||
},
|
||
"permissions.materializeInvitation": {
|
||
"page": "permissions",
|
||
"section": "Operations",
|
||
"description": "Apply accepted invitation grants to the resulting membership.",
|
||
"route": "POST /api/permissions/invitations/:id/materialize"
|
||
},
|
||
"permissions.deleteGrant": {
|
||
"page": "permissions",
|
||
"section": "Operations",
|
||
"description": "Remove one grant.",
|
||
"route": "DELETE /api/permissions/grants/:id"
|
||
},
|
||
"permissions.acceptInvitation": {
|
||
"page": "permissions",
|
||
"section": "Operations",
|
||
"description": "Accept an authorized invitation.",
|
||
"route": "POST /api/permissions/invitations/:id/accept"
|
||
},
|
||
"permissions.rejectInvitation": {
|
||
"page": "permissions",
|
||
"section": "Operations",
|
||
"description": "Reject an invitation.",
|
||
"route": "POST /api/permissions/invitations/:id/reject"
|
||
},
|
||
"permissions.cancelInvitation": {
|
||
"page": "permissions",
|
||
"section": "Operations",
|
||
"description": "Cancel a pending invitation.",
|
||
"route": "POST /api/permissions/invitations/:id/cancel"
|
||
},
|
||
"permissions.resendInvitation": {
|
||
"page": "permissions",
|
||
"section": "Operations",
|
||
"description": "Resend an eligible invitation.",
|
||
"route": "POST /api/permissions/invitations/:id/resend"
|
||
},
|
||
"permissions.setMemberRole": {
|
||
"page": "permissions",
|
||
"section": "Operations",
|
||
"description": "Change a member’s organization role.",
|
||
"route": "PATCH /api/permissions/members/:id"
|
||
},
|
||
"permissions.removeMember": {
|
||
"page": "permissions",
|
||
"section": "Operations",
|
||
"description": "Remove a member while preserving the final owner.",
|
||
"route": "DELETE /api/permissions/members/:id"
|
||
},
|
||
"tokens.list": {
|
||
"page": "tokens",
|
||
"section": "Operations",
|
||
"description": "List your tokens without exposing their secrets.",
|
||
"route": "GET /api/tokens"
|
||
},
|
||
"tokens.create": {
|
||
"page": "tokens",
|
||
"section": "Operations",
|
||
"description": "Create a token; its secret is returned once.",
|
||
"route": "POST /api/tokens"
|
||
},
|
||
"tokens.authorizeMcpClient": {
|
||
"page": "tokens",
|
||
"section": "Operations",
|
||
"description": "Authorize or explicitly re-scope an MCP client binding.",
|
||
"route": "POST /api/tokens/mcp-authorize"
|
||
},
|
||
"tokens.listMcpClients": {
|
||
"page": "tokens",
|
||
"section": "Operations",
|
||
"description": "List your authorized MCP clients.",
|
||
"route": "GET /api/tokens/mcp-clients"
|
||
},
|
||
"tokens.revoke": {
|
||
"page": "tokens",
|
||
"section": "Operations",
|
||
"description": "Revoke a token by its token ID.",
|
||
"route": "DELETE /api/tokens/:id"
|
||
},
|
||
"tokens.getMcpClient": {
|
||
"page": "tokens",
|
||
"section": "Operations",
|
||
"description": "Read one MCP client authorization.",
|
||
"route": "GET /api/tokens/mcp-clients/:clientId"
|
||
},
|
||
"tokens.disconnectMcpClient": {
|
||
"page": "tokens",
|
||
"section": "Operations",
|
||
"description": "Revoke an MCP client authorization.",
|
||
"route": "DELETE /api/tokens/mcp-clients/:clientId"
|
||
},
|
||
"webhooks.list": {
|
||
"page": "webhooks",
|
||
"section": "Operations",
|
||
"description": "List the project’s incoming webhooks.",
|
||
"route": "GET /api/projects/:id/incoming-webhooks"
|
||
},
|
||
"webhooks.create": {
|
||
"page": "webhooks",
|
||
"section": "Operations",
|
||
"description": "Create an incoming hook with an authorized action and authentication mode.",
|
||
"route": "POST /api/projects/:id/incoming-webhooks"
|
||
},
|
||
"webhooks.deliveries": {
|
||
"page": "webhooks",
|
||
"section": "Operations",
|
||
"description": "List project webhook deliveries.",
|
||
"route": "GET /api/projects/:id/webhook-deliveries"
|
||
},
|
||
"webhooks.update": {
|
||
"page": "webhooks",
|
||
"section": "Operations",
|
||
"description": "Update a hook and reauthorize its action when requested.",
|
||
"route": "PATCH /api/projects/:id/incoming-webhooks/:hookId"
|
||
},
|
||
"webhooks.rotate": {
|
||
"page": "webhooks",
|
||
"section": "Operations",
|
||
"description": "Rotate hook credentials and reauthorize execution.",
|
||
"route": "POST /api/projects/:id/incoming-webhooks/:hookId/rotate"
|
||
},
|
||
"webhooks.remove": {
|
||
"page": "webhooks",
|
||
"section": "Operations",
|
||
"description": "Remove an incoming hook.",
|
||
"route": "DELETE /api/projects/:id/incoming-webhooks/:hookId"
|
||
},
|
||
"webhooks.hookDeliveries": {
|
||
"page": "webhooks",
|
||
"section": "Operations",
|
||
"description": "Read one hook’s delivery history.",
|
||
"route": "GET /api/projects/:id/incoming-webhooks/:hookId/deliveries"
|
||
},
|
||
"webhooks.invoke": {
|
||
"page": "webhooks",
|
||
"section": "Operations",
|
||
"description": "Invoke the hook’s saved action through the SDK.",
|
||
"route": "POST /api/projects/:id/incoming-webhooks/:hookId/invoke"
|
||
},
|
||
"webhooks.listDeliveries": {
|
||
"page": "webhooks",
|
||
"section": "Operations",
|
||
"description": "Read webhook deliveries visible in the organization.",
|
||
"route": "GET /api/settings/webhook-deliveries"
|
||
},
|
||
"updates.list": {
|
||
"page": "updates",
|
||
"section": "Operations",
|
||
"description": "List update status; behindOnly filters to available updates.",
|
||
"route": "GET /api/updates"
|
||
},
|
||
"updates.scan": {
|
||
"page": "updates",
|
||
"section": "Operations",
|
||
"description": "Refresh the organization’s update scan.",
|
||
"route": "POST /api/updates/scan"
|
||
},
|
||
"updates.apply": {
|
||
"page": "updates",
|
||
"section": "Operations",
|
||
"description": "Apply an available update to the specified project ID.",
|
||
"route": "POST /api/updates/:projectId/apply"
|
||
},
|
||
"audit.list": {
|
||
"page": "audit",
|
||
"section": "Operations",
|
||
"description": "Read filtered, paginated audit events.",
|
||
"route": "GET /api/audit"
|
||
},
|
||
"audit.facets": {
|
||
"page": "audit",
|
||
"section": "Operations",
|
||
"description": "Read available audit filter values.",
|
||
"route": "GET /api/audit/facets"
|
||
},
|
||
"audit.getSettings": {
|
||
"page": "audit",
|
||
"section": "Operations",
|
||
"description": "Read audit retention settings.",
|
||
"route": "GET /api/audit/settings"
|
||
},
|
||
"audit.updateSettings": {
|
||
"page": "audit",
|
||
"section": "Operations",
|
||
"description": "Change audit retention settings.",
|
||
"route": "PATCH /api/audit/settings"
|
||
},
|
||
"settings.get": {
|
||
"page": "settings",
|
||
"section": "Operations",
|
||
"description": "Read the current user’s preferences and defaults.",
|
||
"route": "GET /api/settings"
|
||
},
|
||
"settings.update": {
|
||
"page": "settings",
|
||
"section": "Operations",
|
||
"description": "Update user settings.",
|
||
"route": "PUT /api/settings"
|
||
},
|
||
"settings.setBuildMode": {
|
||
"page": "settings",
|
||
"section": "Operations",
|
||
"description": "Choose where builds run by default.",
|
||
"route": "PATCH /api/settings/build-mode"
|
||
},
|
||
"settings.setRouteStrategy": {
|
||
"page": "settings",
|
||
"section": "Operations",
|
||
"description": "Choose the default routing strategy.",
|
||
"route": "PATCH /api/settings/route-strategy"
|
||
},
|
||
"settings.setDeployDefaults": {
|
||
"page": "settings",
|
||
"section": "Operations",
|
||
"description": "Set the default deployment target and resources.",
|
||
"route": "PATCH /api/settings/deploy-defaults"
|
||
},
|
||
"settings.setCloneCredentials": {
|
||
"page": "settings",
|
||
"section": "Operations",
|
||
"description": "Configure credentials for source cloning.",
|
||
"route": "PATCH /api/settings/clone-credentials"
|
||
},
|
||
"settings.setCloneStrategy": {
|
||
"page": "settings",
|
||
"section": "Operations",
|
||
"description": "Choose how source is transferred to build servers.",
|
||
"route": "PATCH /api/settings/clone-strategy-preference"
|
||
},
|
||
"settings.setTransferPreferences": {
|
||
"page": "settings",
|
||
"section": "Operations",
|
||
"description": "Set source transfer preferences.",
|
||
"route": "PATCH /api/settings/transfer"
|
||
},
|
||
"settings.setGitForwarding": {
|
||
"page": "settings",
|
||
"section": "Operations",
|
||
"description": "Configure forwarding of Git identity to build servers.",
|
||
"route": "PATCH /api/settings/forward-git"
|
||
},
|
||
"notifications.categories": {
|
||
"page": "notifications",
|
||
"section": "Operations",
|
||
"description": "List supported notification categories and events.",
|
||
"route": "GET /api/notifications/categories"
|
||
},
|
||
"notifications.listChannels": {
|
||
"page": "notifications",
|
||
"section": "Operations",
|
||
"description": "List configured delivery channels.",
|
||
"route": "GET /api/notifications/channels"
|
||
},
|
||
"notifications.createChannel": {
|
||
"page": "notifications",
|
||
"section": "Operations",
|
||
"description": "Create a delivery channel.",
|
||
"route": "POST /api/notifications/channels"
|
||
},
|
||
"notifications.listSubscriptions": {
|
||
"page": "notifications",
|
||
"section": "Operations",
|
||
"description": "Read notification subscriptions.",
|
||
"route": "GET /api/notifications/subscriptions"
|
||
},
|
||
"notifications.upsertSubscription": {
|
||
"page": "notifications",
|
||
"section": "Operations",
|
||
"description": "Create or update a subscription.",
|
||
"route": "PUT /api/notifications/subscriptions"
|
||
},
|
||
"notifications.listDefaults": {
|
||
"page": "notifications",
|
||
"section": "Operations",
|
||
"description": "Read default notification routing.",
|
||
"route": "GET /api/notifications/defaults"
|
||
},
|
||
"notifications.upsertDefault": {
|
||
"page": "notifications",
|
||
"section": "Operations",
|
||
"description": "Set default notification routing for a category.",
|
||
"route": "PUT /api/notifications/defaults"
|
||
},
|
||
"notifications.listDeliveries": {
|
||
"page": "notifications",
|
||
"section": "Operations",
|
||
"description": "Read notification delivery history.",
|
||
"route": "GET /api/notifications/deliveries"
|
||
},
|
||
"notifications.unseenCount": {
|
||
"page": "notifications",
|
||
"section": "Operations",
|
||
"description": "Count notifications the user has not seen.",
|
||
"route": "GET /api/notifications/deliveries/unseen-count"
|
||
},
|
||
"notifications.updateChannel": {
|
||
"page": "notifications",
|
||
"section": "Operations",
|
||
"description": "Update channel configuration or rotate credentials.",
|
||
"route": "PATCH /api/notifications/channels/:id"
|
||
},
|
||
"notifications.testChannel": {
|
||
"page": "notifications",
|
||
"section": "Operations",
|
||
"description": "Test the channel’s delivery configuration.",
|
||
"route": "POST /api/notifications/channels/:id/test"
|
||
},
|
||
"notifications.removeChannel": {
|
||
"page": "notifications",
|
||
"section": "Operations",
|
||
"description": "Remove a delivery channel.",
|
||
"route": "DELETE /api/notifications/channels/:id"
|
||
},
|
||
"notifications.removeSubscription": {
|
||
"page": "notifications",
|
||
"section": "Operations",
|
||
"description": "Remove a subscription.",
|
||
"route": "DELETE /api/notifications/subscriptions/:id"
|
||
},
|
||
"notifications.markSeen": {
|
||
"page": "notifications",
|
||
"section": "Operations",
|
||
"description": "Mark the selected notifications seen.",
|
||
"route": "POST /api/notifications/deliveries/:id/seen"
|
||
},
|
||
"issues.list": {
|
||
"page": "issues",
|
||
"section": "Operations",
|
||
"description": "Read visible active or resolved issues and their suggested actions.",
|
||
"route": "GET /api/issues"
|
||
},
|
||
"issues.summary": {
|
||
"page": "issues",
|
||
"section": "Operations",
|
||
"description": "Read issue counts by severity.",
|
||
"route": "GET /api/issues/summary"
|
||
},
|
||
"issues.health": {
|
||
"page": "issues",
|
||
"section": "Operations",
|
||
"description": "Read cached workload health snapshots.",
|
||
"route": "GET /api/issues/health"
|
||
},
|
||
"issues.scanHealth": {
|
||
"page": "issues",
|
||
"section": "Operations",
|
||
"description": "Refresh current workload health without enabling the scheduler.",
|
||
"route": "POST /api/issues/health/scan"
|
||
},
|
||
"issues.rescan": {
|
||
"page": "issues",
|
||
"section": "Operations",
|
||
"description": "Run applicable issue checkers, or only container/server health.",
|
||
"route": "POST /api/issues/rescan"
|
||
},
|
||
"issues.rescanStatus": {
|
||
"page": "issues",
|
||
"section": "Operations",
|
||
"description": "Read the status of an issue rescan.",
|
||
"route": "GET /api/issues/rescan/status"
|
||
},
|
||
"analytics.streamUsage": {
|
||
"page": "analytics",
|
||
"section": "Operations",
|
||
"description": "Stream current resource usage.",
|
||
"route": "GET /api/analytics/usage/stream"
|
||
},
|
||
"analytics.summary": {
|
||
"page": "analytics",
|
||
"section": "Operations",
|
||
"description": "Read summary statistics for the selected scope and period.",
|
||
"route": "GET /api/analytics"
|
||
},
|
||
"analytics.periods": {
|
||
"page": "analytics",
|
||
"section": "Operations",
|
||
"description": "List supported analytics periods.",
|
||
"route": "GET /api/analytics/periods"
|
||
},
|
||
"analytics.overview": {
|
||
"page": "analytics",
|
||
"section": "Operations",
|
||
"description": "Read aggregate traffic and application analytics.",
|
||
"route": "GET /api/analytics/overview"
|
||
},
|
||
"analytics.geo": {
|
||
"page": "analytics",
|
||
"section": "Operations",
|
||
"description": "Read geographic traffic statistics.",
|
||
"route": "GET /api/analytics/geo"
|
||
},
|
||
"analytics.deploymentStats": {
|
||
"page": "analytics",
|
||
"section": "Operations",
|
||
"description": "Read deployment outcome statistics.",
|
||
"route": "GET /api/analytics/deployments"
|
||
},
|
||
"analytics.usage": {
|
||
"page": "analytics",
|
||
"section": "Operations",
|
||
"description": "Read current workload resource usage.",
|
||
"route": "GET /api/analytics/usage"
|
||
},
|
||
"analytics.containerInfo": {
|
||
"page": "analytics",
|
||
"section": "Operations",
|
||
"description": "Read analytics runtime/container information.",
|
||
"route": "GET /api/analytics/container"
|
||
},
|
||
"analytics.resources": {
|
||
"page": "analytics",
|
||
"section": "Operations",
|
||
"description": "Read configured resource allocations.",
|
||
"route": "GET /api/analytics/resources"
|
||
},
|
||
"analytics.usageHistory": {
|
||
"page": "analytics",
|
||
"section": "Operations",
|
||
"description": "Read historical resource usage.",
|
||
"route": "GET /api/analytics/usage/history"
|
||
},
|
||
"analytics.setPathsCollection": {
|
||
"page": "analytics",
|
||
"section": "Operations",
|
||
"description": "Enable or disable request-path collection.",
|
||
"route": "POST /api/analytics/paths-collection/:projectId"
|
||
},
|
||
"analytics.serverBuckets": {
|
||
"page": "analytics",
|
||
"section": "Operations",
|
||
"description": "Read server traffic buckets.",
|
||
"route": "GET /api/analytics/server/:serverId"
|
||
},
|
||
"analytics.serverGeo": {
|
||
"page": "analytics",
|
||
"section": "Operations",
|
||
"description": "Read geographic server-request statistics.",
|
||
"route": "GET /api/analytics/server/:serverId/geo"
|
||
},
|
||
"analytics.serverLive": {
|
||
"page": "analytics",
|
||
"section": "Operations",
|
||
"description": "Read current server traffic data.",
|
||
"route": "GET /api/analytics/server/:serverId/live"
|
||
},
|
||
"analytics.dashboard": {
|
||
"page": "analytics",
|
||
"section": "Operations",
|
||
"description": "Read the analytics dashboard aggregate.",
|
||
"route": "GET /api/analytics/dashboard"
|
||
},
|
||
"jobs.streamRun": {
|
||
"page": "jobs",
|
||
"section": "Operations",
|
||
"description": "Stream live output from a job run.",
|
||
"route": "GET /api/jobs/runs/:runId/stream"
|
||
},
|
||
"jobs.list": {
|
||
"page": "jobs",
|
||
"section": "Operations",
|
||
"description": "List available system and custom jobs.",
|
||
"route": "GET /api/jobs"
|
||
},
|
||
"jobs.create": {
|
||
"page": "jobs",
|
||
"section": "Operations",
|
||
"description": "Create a custom command job with schedule and target configuration.",
|
||
"route": "POST /api/jobs"
|
||
},
|
||
"jobs.triggerEvents": {
|
||
"page": "jobs",
|
||
"section": "Operations",
|
||
"description": "List events that can trigger custom jobs.",
|
||
"route": "GET /api/jobs/trigger-events"
|
||
},
|
||
"jobs.backupSchedules": {
|
||
"page": "jobs",
|
||
"section": "Operations",
|
||
"description": "Read scheduled backup policies alongside jobs.",
|
||
"route": "GET /api/jobs/backup-schedules"
|
||
},
|
||
"jobs.get": {
|
||
"page": "jobs",
|
||
"section": "Operations",
|
||
"description": "Read a job’s configuration and recent runs.",
|
||
"route": "GET /api/jobs/:key"
|
||
},
|
||
"jobs.update": {
|
||
"page": "jobs",
|
||
"section": "Operations",
|
||
"description": "Change a schedule or custom job configuration.",
|
||
"route": "PATCH /api/jobs/:key"
|
||
},
|
||
"jobs.remove": {
|
||
"page": "jobs",
|
||
"section": "Operations",
|
||
"description": "Delete a custom job; system jobs can be disabled instead.",
|
||
"route": "DELETE /api/jobs/:key"
|
||
},
|
||
"jobs.run": {
|
||
"page": "jobs",
|
||
"section": "Operations",
|
||
"description": "Trigger a job immediately.",
|
||
"route": "POST /api/jobs/:key/run"
|
||
},
|
||
"jobs.listRuns": {
|
||
"page": "jobs",
|
||
"section": "Operations",
|
||
"description": "Read a job’s run history.",
|
||
"route": "GET /api/jobs/:key/runs"
|
||
},
|
||
"jobs.getRun": {
|
||
"page": "jobs",
|
||
"section": "Operations",
|
||
"description": "Read a recorded run, result, and captured output.",
|
||
"route": "GET /api/jobs/runs/:runId"
|
||
},
|
||
"servers.createManaged": {
|
||
"page": "servers",
|
||
"section": "Managed servers",
|
||
"description": "Create a server identity without purchasing or provisioning resources.",
|
||
"route": "POST /api/system/servers/managed"
|
||
},
|
||
"servers.availableManaged": {
|
||
"page": "servers",
|
||
"section": "Managed servers",
|
||
"description": "List servers available through the connected Cloud account without creating resources or copying projects.",
|
||
"route": "GET /api/system/servers/managed/available"
|
||
},
|
||
"servers.connectManaged": {
|
||
"page": "servers",
|
||
"section": "Managed servers",
|
||
"description": "Link an existing Cloud server to this organization after verifying its administrator and account identity; return the local serverId for deployments.",
|
||
"route": "POST /api/system/servers/managed/connect"
|
||
},
|
||
"servers.usage": {
|
||
"page": "servers",
|
||
"section": "Managed servers",
|
||
"description": "Measure host usage and accessible project disk data separately from provisioned capacity.",
|
||
"route": "GET /api/system/servers/:id/usage"
|
||
},
|
||
"servers.ensure": {
|
||
"page": "servers",
|
||
"section": "Managed servers",
|
||
"description": "Queue idempotent provisioning or resume of the subscribed Docker host.",
|
||
"route": "POST /api/system/servers/:id/ensure"
|
||
},
|
||
"servers.retry": {
|
||
"page": "servers",
|
||
"section": "Managed servers",
|
||
"description": "Retry a failed server operation using its saved provider identity and recovery checkpoint.",
|
||
"route": "POST /api/system/servers/:id/retry"
|
||
},
|
||
"servers.previewResize": {
|
||
"page": "servers",
|
||
"section": "Managed servers",
|
||
"description": "Preview purchased capacity and projects that may restart, without changing the host.",
|
||
"route": "GET /api/system/servers/:id/resize"
|
||
},
|
||
"servers.resize": {
|
||
"page": "servers",
|
||
"section": "Managed servers",
|
||
"description": "Queue a reviewed resize with a revision, request key and explicit restart confirmation.",
|
||
"route": "POST /api/system/servers/:id/resize"
|
||
},
|
||
"servers.removeManaged": {
|
||
"page": "servers",
|
||
"section": "Managed servers",
|
||
"description": "Remove an empty server after its subscription ends and provider cleanup is confirmed.",
|
||
"route": "DELETE /api/system/servers/:id/managed"
|
||
},
|
||
"servers.destinations": {
|
||
"page": "servers",
|
||
"section": "Observe",
|
||
"description": "Read accessible deployment servers, including linked managed servers, with their capabilities and readiness.",
|
||
"route": "GET /api/system/servers/destinations"
|
||
},
|
||
"servers.getNetworkSettings": {
|
||
"page": "servers",
|
||
"section": "Managed servers",
|
||
"description": "Read outbound internet and route-managed ingress without starting the server; request details for egress rules, IP diagnostics and a revision.",
|
||
"route": "GET /api/system/servers/:id/network-settings"
|
||
},
|
||
"servers.updateNetworkSettings": {
|
||
"page": "servers",
|
||
"section": "Managed servers",
|
||
"description": "Change outbound internet after confirming its effect on every project; preserve ingress and private connectivity.",
|
||
"route": "PATCH /api/system/servers/:id/network-settings"
|
||
},
|
||
"servers.managedOutbound": {
|
||
"page": "servers",
|
||
"section": "Managed server controls",
|
||
"description": "Read the current outbound connection and revision without proxy credentials. Does not start the managed server.",
|
||
"route": "GET /api/system/servers/:id/managed/outbound"
|
||
},
|
||
"servers.managedOutboundOptions": {
|
||
"page": "servers",
|
||
"section": "Managed server controls",
|
||
"description": "List available managed outbound IPs and countries for this owned server, without credentials or internal pool identifiers.",
|
||
"route": "GET /api/system/servers/:id/managed/outbound/options"
|
||
},
|
||
"servers.setManagedOutbound": {
|
||
"page": "servers",
|
||
"section": "Managed server controls",
|
||
"description": "Apply a reviewed managed IP or custom public IPv4 HTTP/HTTPS proxy using expectedRevision and confirm:true. Changes outgoing connections for all projects; preserves internet policy, ingress and routes. Credentials are never returned or audited.",
|
||
"route": "PATCH /api/system/servers/:id/managed/outbound"
|
||
},
|
||
"servers.managedInfo": {
|
||
"page": "servers",
|
||
"section": "Managed server controls",
|
||
"description": "Read the selected managed server image, operating system, lifecycle and purchased allocation. Does not start the VM or return its raw configuration.",
|
||
"route": "GET /api/system/servers/:id/managed/info"
|
||
},
|
||
"servers.managedBootLogs": {
|
||
"page": "servers",
|
||
"section": "Managed server controls",
|
||
"description": "Read a bounded tail of managed server boot logs. Requires server admin; logs may contain application output.",
|
||
"route": "POST /api/system/servers/:id/managed/boot-logs"
|
||
},
|
||
"servers.managedSshStatus": {
|
||
"page": "servers",
|
||
"section": "Managed server controls",
|
||
"description": "Read SSH enablement and public connection instructions for this managed server. Never returns passwords.",
|
||
"route": "GET /api/system/servers/:id/managed/ssh"
|
||
},
|
||
"servers.setManagedSsh": {
|
||
"page": "servers",
|
||
"section": "Managed server controls",
|
||
"description": "Enable or disable SSH with explicit confirmation and expected enablement. Changes all SSH users on this server.",
|
||
"route": "PATCH /api/system/servers/:id/managed/ssh"
|
||
},
|
||
"servers.setManagedSshKey": {
|
||
"page": "servers",
|
||
"section": "Managed server controls",
|
||
"description": "Replace the root authorized public key on this server. Accepts one OpenSSH public key; never a private key. Requires confirmation.",
|
||
"route": "PUT /api/system/servers/:id/managed/ssh/key"
|
||
},
|
||
"servers.setManagedSshPassword": {
|
||
"page": "servers",
|
||
"section": "Managed server controls",
|
||
"description": "Set the root SSH password on this managed server. Requires confirmation. The password is never returned or audited.",
|
||
"route": "PUT /api/system/servers/:id/managed/ssh/password"
|
||
},
|
||
"servers.managedSshConnection": {
|
||
"page": "servers",
|
||
"section": "Managed server controls",
|
||
"description": "Issue a short-lived SSH connection for this managed server. Requires server admin and confirmation. Treat its password as a secret.",
|
||
"route": "POST /api/system/servers/:id/managed/ssh/connection"
|
||
},
|
||
"servers.managedRuntimeStatus": {
|
||
"page": "servers",
|
||
"section": "Managed server controls",
|
||
"description": "Read the managed server Runtime API status without enabling it or returning a token.",
|
||
"route": "GET /api/system/servers/:id/managed/runtime-api"
|
||
},
|
||
"servers.enableManagedRuntime": {
|
||
"page": "servers",
|
||
"section": "Managed server controls",
|
||
"description": "Enable the Runtime API used by Openship for deployments and server management. Requires server admin and active server entitlement.",
|
||
"route": "POST /api/system/servers/:id/managed/runtime-api/enable"
|
||
},
|
||
"servers.managedRuntimeCredential": {
|
||
"page": "servers",
|
||
"section": "Managed server controls",
|
||
"description": "Reveal the current workspace-only Runtime API credential. Requires server admin and confirmation. Does not enable the service or issue an account/namespace token.",
|
||
"route": "POST /api/system/servers/:id/managed/runtime-api/credential"
|
||
},
|
||
"servers.rotateManagedRuntimeCredential": {
|
||
"page": "servers",
|
||
"section": "Managed server controls",
|
||
"description": "Rotate the Runtime API credential after reviewing the current revision. Invalidates prior tokens and sessions. A stale revision cannot repeat a successful rotation.",
|
||
"route": "POST /api/system/servers/:id/managed/runtime-api/rotate"
|
||
},
|
||
"servers.managedWorkloads": {
|
||
"page": "servers",
|
||
"section": "Managed server controls",
|
||
"description": "List native managed processes with live status, capped at 100 entries. Distinguishes manual, project and system workloads; does not return environments or commands.",
|
||
"route": "GET /api/system/servers/:id/managed/workloads"
|
||
},
|
||
"servers.managedWorkloadLogs": {
|
||
"page": "servers",
|
||
"section": "Managed server controls",
|
||
"description": "Read bounded logs for a process on this managed server. Requires server admin. Process ID is scoped to the server.",
|
||
"route": "POST /api/system/servers/:id/managed/workloads/logs"
|
||
},
|
||
"servers.createManagedWorkload": {
|
||
"page": "servers",
|
||
"section": "Managed server controls",
|
||
"description": "Create a stopped manual native process on this server. Reuse the same idempotency key after an uncertain response. Commands and environment are admin-only and not audited. Start it explicitly after creation.",
|
||
"route": "POST /api/system/servers/:id/managed/workloads"
|
||
},
|
||
"servers.controlManagedWorkload": {
|
||
"page": "servers",
|
||
"section": "Managed server controls",
|
||
"description": "Start, stop or delete a manual process created by the server controls. Requires confirmation. Project and platform processes must use their own lifecycle controls.",
|
||
"route": "POST /api/system/servers/:id/managed/workloads/control"
|
||
},
|
||
"mail.getSteps": {
|
||
"page": "mail",
|
||
"description": "List all setup steps and the total count.",
|
||
"route": "GET /api/mail/steps"
|
||
},
|
||
"mail.getStatus": {
|
||
"page": "mail",
|
||
"description": "Current setup progress for a server (rendered from its on-server state file).",
|
||
"route": "GET /api/mail/status"
|
||
},
|
||
"mail.listServers": {
|
||
"page": "mail",
|
||
"description": "List every server Openship has provisioned (or is provisioning) mail on.",
|
||
"route": "GET /api/mail/servers"
|
||
},
|
||
"mail.scan": {
|
||
"page": "mail",
|
||
"description": "Probe a server for an existing iRedMail install + its on-server state (read-only).",
|
||
"route": "POST /api/mail/scan"
|
||
},
|
||
"mail.adopt": {
|
||
"page": "mail",
|
||
"description": "Re-adopt a scanned server whose orchestrator state was lost.",
|
||
"route": "POST /api/mail/adopt"
|
||
},
|
||
"mail.cancelSetup": {
|
||
"page": "mail",
|
||
"description": "Cancel the running setup.",
|
||
"route": "POST /api/mail/setup/cancel"
|
||
},
|
||
"mail.acknowledgeDns": {
|
||
"page": "mail",
|
||
"description": "Mark DNS (DKIM) records as configured, releasing the DNS gate.",
|
||
"route": "POST /api/mail/setup/dns-ack"
|
||
},
|
||
"mail.acknowledgePtr": {
|
||
"page": "mail",
|
||
"description": "Mark reverse-DNS (PTR) as configured, releasing the PTR gate.",
|
||
"route": "POST /api/mail/setup/ptr-ack"
|
||
},
|
||
"mail.resetSetup": {
|
||
"page": "mail",
|
||
"description": "Wipe the on-server state file (does not touch iRedMail).",
|
||
"route": "POST /api/mail/setup/reset"
|
||
},
|
||
"mail.setPostmasterPassword": {
|
||
"page": "mail",
|
||
"description": "Rotate the postmaster account password.",
|
||
"route": "POST /api/mail/credentials/postmaster"
|
||
},
|
||
"mail.getWebmailTargets": {
|
||
"page": "mail",
|
||
"description": "List deploy-target options (self-hosted servers / cloud).",
|
||
"route": "GET /api/mail/webmail/targets"
|
||
},
|
||
"mail.deployWebmail": {
|
||
"page": "mail",
|
||
"description": "Create a webmail project + deployment and start the build.",
|
||
"route": "POST /api/mail/webmail/deploy-project"
|
||
},
|
||
"mail.deployExternalWebmail": {
|
||
"page": "mail",
|
||
"description": "Deploy webmail for an external mail server.",
|
||
"route": "POST /api/mail/webmail/deploy-external"
|
||
},
|
||
"mail.forget": {
|
||
"page": "mail",
|
||
"description": "Stop managing a server (drops the DB row only; leaves the stack + state file intact).",
|
||
"route": "DELETE /api/mail/servers/:serverId"
|
||
},
|
||
"mail.getHealth": {
|
||
"page": "mail",
|
||
"description": "Mail daemons, outbound delivery, and cached public-port reachability (TCP 25/465/587/993).",
|
||
"route": "GET /api/mail/health/:serverId"
|
||
},
|
||
"mail.getCertificate": {
|
||
"page": "mail",
|
||
"description": "Read the mail certificate, SMTP/IMAP TLS checks and automatic renewal settings.",
|
||
"route": "GET /api/mail/admin/:serverId/certificate"
|
||
},
|
||
"mail.checkCertificate": {
|
||
"page": "mail",
|
||
"description": "Recheck the certificate on disk and served by SMTP/IMAP without issuing a certificate or sending email.",
|
||
"route": "POST /api/mail/admin/:serverId/certificate/check"
|
||
},
|
||
"mail.renewCertificate": {
|
||
"page": "mail",
|
||
"description": "Renew a due mail certificate through Openship Edge and reload Postfix/Dovecot, reusing a still-valid certificate and repairing its service configuration.",
|
||
"route": "POST /api/mail/admin/:serverId/certificate/renew"
|
||
},
|
||
"mail.updateCertificate": {
|
||
"page": "mail",
|
||
"description": "Set `autoRenew` to enable or disable automatic mail certificate renewal. Monitoring continues when renewal is disabled.",
|
||
"route": "PATCH /api/mail/admin/:serverId/certificate"
|
||
},
|
||
"mail.listDomains": {
|
||
"page": "mail",
|
||
"description": "List mail domains on the server.",
|
||
"route": "GET /api/mail/admin/:serverId/domains"
|
||
},
|
||
"mail.createDomain": {
|
||
"page": "mail",
|
||
"description": "Add a mail domain.",
|
||
"route": "POST /api/mail/admin/:serverId/domains"
|
||
},
|
||
"mail.pendingDomainDns": {
|
||
"page": "mail",
|
||
"description": "List additional domains whose DNS is still pending.",
|
||
"route": "GET /api/mail/admin/:serverId/domains-dns/pending"
|
||
},
|
||
"mail.listMailboxes": {
|
||
"page": "mail",
|
||
"description": "List mailboxes in a domain.",
|
||
"route": "GET /api/mail/admin/:serverId/mailboxes"
|
||
},
|
||
"mail.createMailbox": {
|
||
"page": "mail",
|
||
"description": "Create a mailbox.",
|
||
"route": "POST /api/mail/admin/:serverId/mailboxes"
|
||
},
|
||
"mail.rotatePlatformMailbox": {
|
||
"page": "mail",
|
||
"description": "Rotate the platform mailbox credential.",
|
||
"route": "POST /api/mail/admin/:serverId/platform-mailbox/rotate"
|
||
},
|
||
"mail.listAliases": {
|
||
"page": "mail",
|
||
"description": "List mail aliases on a server.",
|
||
"route": "GET /api/mail/admin/:serverId/aliases"
|
||
},
|
||
"mail.createAlias": {
|
||
"page": "mail",
|
||
"description": "Create a mail alias.",
|
||
"route": "POST /api/mail/admin/:serverId/aliases"
|
||
},
|
||
"mail.getStats": {
|
||
"page": "mail",
|
||
"description": "Aggregate counts (domains, mailboxes, storage).",
|
||
"route": "GET /api/mail/admin/:serverId/stats"
|
||
},
|
||
"mail.getBackupPolicy": {
|
||
"page": "mail",
|
||
"description": "The mail server's backup policy (or `null`).",
|
||
"route": "GET /api/mail/admin/:serverId/backup-policy"
|
||
},
|
||
"mail.saveBackupPolicy": {
|
||
"page": "mail",
|
||
"description": "Create or update the backup policy.",
|
||
"route": "POST /api/mail/admin/:serverId/backup-policy"
|
||
},
|
||
"mail.listBackupRuns": {
|
||
"page": "mail",
|
||
"description": "Recent backup runs for the mail server.",
|
||
"route": "GET /api/mail/admin/:serverId/backup-runs"
|
||
},
|
||
"mail.scanDns": {
|
||
"page": "mail",
|
||
"description": "Live DNS health scan (MX/SPF/DKIM/DMARC/PTR).",
|
||
"route": "GET /api/mail/admin/:serverId/dns-scan"
|
||
},
|
||
"mail.getRelay": {
|
||
"page": "mail",
|
||
"description": "Read outbound relay configuration.",
|
||
"route": "GET /api/mail/admin/:serverId/relay"
|
||
},
|
||
"mail.configureRelay": {
|
||
"page": "mail",
|
||
"description": "Configure an outbound relay.",
|
||
"route": "POST /api/mail/admin/:serverId/relay"
|
||
},
|
||
"mail.removeRelay": {
|
||
"page": "mail",
|
||
"description": "Remove outbound relay configuration.",
|
||
"route": "DELETE /api/mail/admin/:serverId/relay"
|
||
},
|
||
"mail.sendTestEmail": {
|
||
"page": "mail",
|
||
"description": "Send a test email from the server.",
|
||
"route": "POST /api/mail/admin/:serverId/test-email"
|
||
},
|
||
"mail.restartComponents": {
|
||
"page": "mail",
|
||
"description": "Restart every mail component.",
|
||
"route": "POST /api/mail/admin/:serverId/components/restart-all"
|
||
},
|
||
"mail.listInboundRules": {
|
||
"page": "mail",
|
||
"description": "List inbound mail rules.",
|
||
"route": "GET /api/mail/admin/:serverId/inbound-rules"
|
||
},
|
||
"mail.createInboundRule": {
|
||
"page": "mail",
|
||
"description": "Create an inbound mail rule.",
|
||
"route": "POST /api/mail/admin/:serverId/inbound-rules"
|
||
},
|
||
"mail.testInboundRules": {
|
||
"page": "mail",
|
||
"description": "Evaluate a message against inbound mail rules.",
|
||
"route": "POST /api/mail/admin/:serverId/inbound-rules/test"
|
||
},
|
||
"mail.getDomain": {
|
||
"page": "mail",
|
||
"description": "Get one domain's config.",
|
||
"route": "GET /api/mail/admin/:serverId/domains/:domain"
|
||
},
|
||
"mail.updateDomain": {
|
||
"page": "mail",
|
||
"description": "Update a domain (quotas, limits, active flag).",
|
||
"route": "PATCH /api/mail/admin/:serverId/domains/:domain"
|
||
},
|
||
"mail.removeDomain": {
|
||
"page": "mail",
|
||
"description": "Delete a domain (add `?cascade=true` to remove its mailboxes too).",
|
||
"route": "DELETE /api/mail/admin/:serverId/domains/:domain"
|
||
},
|
||
"mail.domainDependents": {
|
||
"page": "mail",
|
||
"description": "Count mailboxes/aliases that depend on a domain.",
|
||
"route": "GET /api/mail/admin/:serverId/domains/:domain/dependents"
|
||
},
|
||
"mail.getDomainDns": {
|
||
"page": "mail",
|
||
"description": "DNS records + publish state for an additional domain.",
|
||
"route": "GET /api/mail/admin/:serverId/domains/:domain/dns"
|
||
},
|
||
"mail.acknowledgeDomainDns": {
|
||
"page": "mail",
|
||
"description": "Confirm a domain's DNS records are published.",
|
||
"route": "POST /api/mail/admin/:serverId/domains/:domain/dns/acknowledge"
|
||
},
|
||
"mail.planDomainDns": {
|
||
"page": "mail",
|
||
"description": "Preview the mail domain's DNS records.",
|
||
"route": "GET /api/mail/admin/:serverId/domains/:domain/dns/plan"
|
||
},
|
||
"mail.applyDomainDns": {
|
||
"page": "mail",
|
||
"description": "Apply the mail domain's DNS plan through a configured provider.",
|
||
"route": "POST /api/mail/admin/:serverId/domains/:domain/dns/apply"
|
||
},
|
||
"mail.getMailbox": {
|
||
"page": "mail",
|
||
"description": "Get one mailbox.",
|
||
"route": "GET /api/mail/admin/:serverId/mailboxes/:email"
|
||
},
|
||
"mail.updateMailbox": {
|
||
"page": "mail",
|
||
"description": "Update a mailbox (name, password, quota, active).",
|
||
"route": "PATCH /api/mail/admin/:serverId/mailboxes/:email"
|
||
},
|
||
"mail.removeMailbox": {
|
||
"page": "mail",
|
||
"description": "Delete a mailbox (add `?hard=true` to purge its maildir; default is a soft delete).",
|
||
"route": "DELETE /api/mail/admin/:serverId/mailboxes/:email"
|
||
},
|
||
"mail.updateAlias": {
|
||
"page": "mail",
|
||
"description": "Update a mail alias.",
|
||
"route": "PATCH /api/mail/admin/:serverId/aliases/:id"
|
||
},
|
||
"mail.removeAlias": {
|
||
"page": "mail",
|
||
"description": "Remove a mail alias.",
|
||
"route": "DELETE /api/mail/admin/:serverId/aliases/:id"
|
||
},
|
||
"mail.updateInboundRule": {
|
||
"page": "mail",
|
||
"description": "Update an inbound mail rule.",
|
||
"route": "PATCH /api/mail/admin/:serverId/inbound-rules/:ruleId"
|
||
},
|
||
"mail.removeInboundRule": {
|
||
"page": "mail",
|
||
"description": "Remove an inbound mail rule.",
|
||
"route": "DELETE /api/mail/admin/:serverId/inbound-rules/:ruleId"
|
||
},
|
||
"mail.componentLogs": {
|
||
"page": "mail",
|
||
"description": "Tail a component's logs.",
|
||
"route": "GET /api/mail/admin/:serverId/components/:key/logs"
|
||
},
|
||
"mail.componentAction": {
|
||
"page": "mail",
|
||
"description": "Run an action (`start`/`stop`/`restart`/…) on one component.",
|
||
"route": "POST /api/mail/admin/:serverId/components/:key/:action"
|
||
},
|
||
"migrations.listSources": {
|
||
"page": "migration",
|
||
"description": "List the active organization's migration-only SSH connections.",
|
||
"route": "GET /api/migration/sources"
|
||
},
|
||
"migrations.createSource": {
|
||
"page": "migration",
|
||
"description": "Verify and save a public SSH source with encrypted credentials and a pinned host key. Does not enable external Cloud deployment destinations.",
|
||
"route": "POST /api/migration/sources"
|
||
},
|
||
"migrations.testSource": {
|
||
"page": "migration",
|
||
"description": "Test a public SSH source without saving it and return its host fingerprint.",
|
||
"route": "POST /api/migration/sources/test"
|
||
},
|
||
"migrations.scan": {
|
||
"page": "migration",
|
||
"description": "Inspect a server's Docker and return the adoptable stack — read-only, changes nothing.",
|
||
"route": "POST /api/migration/scan"
|
||
},
|
||
"migrations.revealEnv": {
|
||
"page": "migration",
|
||
"description": "Reveal explicitly requested environment values for an authorized import.",
|
||
"route": "POST /api/migration/reveal-env"
|
||
},
|
||
"migrations.repoCompose": {
|
||
"page": "migration",
|
||
"description": "Read Compose configuration from a repository for import.",
|
||
"route": "POST /api/migration/repo-compose"
|
||
},
|
||
"migrations.adopt": {
|
||
"page": "migration",
|
||
"description": "Create an Openship project from the selected discovered services.",
|
||
"route": "POST /api/migration/adopt"
|
||
},
|
||
"migrations.reimport": {
|
||
"page": "migration",
|
||
"description": "Refresh an imported project from its source.",
|
||
"route": "POST /api/migration/reimport"
|
||
},
|
||
"migrations.preview": {
|
||
"page": "migration",
|
||
"description": "Preview a migration plan.",
|
||
"route": "POST /api/migration/preview"
|
||
},
|
||
"migrations.start": {
|
||
"page": "migration",
|
||
"description": "Start a server migration from the reviewed plan.",
|
||
"route": "POST /api/migration/migrate"
|
||
},
|
||
"migrations.moveProject": {
|
||
"page": "migration",
|
||
"description": "Import a discovered project.",
|
||
"route": "POST /api/migration/project"
|
||
},
|
||
"migrations.active": {
|
||
"page": "migration",
|
||
"description": "List active server migration sessions.",
|
||
"route": "GET /api/migration/active"
|
||
},
|
||
"migrations.listRuns": {
|
||
"page": "migration",
|
||
"description": "List migration history.",
|
||
"route": "GET /api/migration/runs"
|
||
},
|
||
"migrations.removeSource": {
|
||
"page": "migration",
|
||
"description": "Disconnect an idle migration source without deleting its external server or workloads.",
|
||
"route": "DELETE /api/migration/sources/:serverId"
|
||
},
|
||
"migrations.get": {
|
||
"page": "migration",
|
||
"description": "Read migration progress and state.",
|
||
"route": "GET /api/migration/migrations/:id"
|
||
},
|
||
"migrations.cutover": {
|
||
"page": "migration",
|
||
"description": "Switch traffic to the prepared migration target.",
|
||
"route": "POST /api/migration/migrations/:id/cutover"
|
||
},
|
||
"migrations.cancel": {
|
||
"page": "migration",
|
||
"description": "Request cancellation of a migration.",
|
||
"route": "POST /api/migration/migrations/:id/cancel"
|
||
},
|
||
"migrations.respond": {
|
||
"page": "migration",
|
||
"description": "Answer a pending migration prompt, including edge takeover consent.",
|
||
"route": "POST /api/migration/migrations/:id/respond"
|
||
},
|
||
"migrations.resume": {
|
||
"page": "migration",
|
||
"description": "Resume an interrupted migration.",
|
||
"route": "POST /api/migration/migrations/:id/resume"
|
||
},
|
||
"migrations.cleanupTarget": {
|
||
"page": "migration",
|
||
"description": "Clean up resources created on the migration target.",
|
||
"route": "POST /api/migration/migrations/:id/cleanup-target"
|
||
},
|
||
"migrations.remove": {
|
||
"page": "migration",
|
||
"description": "Delete an eligible migration record.",
|
||
"route": "DELETE /api/migration/migrations/:id"
|
||
},
|
||
"instance.onboardingStatus": {
|
||
"page": "system",
|
||
"description": "First-run check — is any server configured yet?",
|
||
"route": "GET /api/system/onboarding"
|
||
},
|
||
"instance.configureOnboarding": {
|
||
"page": "system",
|
||
"description": "First-run setup; persists settings and creates the first server. Returns 403 once configured.",
|
||
"route": "POST /api/system/onboarding"
|
||
},
|
||
"instance.upgradeToAuth": {
|
||
"page": "system",
|
||
"description": "Promote a zero-auth instance to email/password login.",
|
||
"route": "POST /api/system/upgrade-to-auth"
|
||
},
|
||
"instance.preflightMigration": {
|
||
"page": "data-transfer",
|
||
"description": "Team-migration readiness check (read-only).",
|
||
"route": "POST /api/system/migration/preflight"
|
||
},
|
||
"instance.migrateToServer": {
|
||
"page": "data-transfer",
|
||
"description": "Earlier server migration (501 unavailable; use Instance location).",
|
||
"route": "POST /api/system/migration/start"
|
||
},
|
||
"instance.migrateToCloud": {
|
||
"page": "data-transfer",
|
||
"description": "Migrate → Openship Cloud.",
|
||
"route": "POST /api/system/migration/start-cloud"
|
||
},
|
||
"instance.exposeTunnel": {
|
||
"page": "data-transfer",
|
||
"description": "Expose this instance via an edge tunnel.",
|
||
"route": "POST /api/system/migration/start-tunnel"
|
||
},
|
||
"instance.switchBack": {
|
||
"page": "data-transfer",
|
||
"description": "Reverse a migration back to single-user.",
|
||
"route": "POST /api/system/migration/switch-back"
|
||
},
|
||
"instance.previewExport": {
|
||
"page": "data-transfer",
|
||
"description": "Preview a project selection and its dependencies (instance administrator).",
|
||
"route": "POST /api/system/data-transfer/preview"
|
||
},
|
||
"instance.exportData": {
|
||
"page": "data-transfer",
|
||
"description": "Export the instance or selected projects (instance administrator).",
|
||
"route": "POST /api/system/data-transfer/export"
|
||
},
|
||
"instance.importData": {
|
||
"page": "data-transfer",
|
||
"description": "Import an export file, ≤500 MB, with scope and conflict options (instance administrator).",
|
||
"route": "POST /api/system/data-transfer/import"
|
||
},
|
||
"mail.setup": {
|
||
"page": "mail",
|
||
"description": "Start or resume the install wizard — returns an SSE stream.",
|
||
"route": "POST /api/mail/setup"
|
||
},
|
||
"migrations.events": {
|
||
"page": "migration",
|
||
"description": "Stream migration progress.",
|
||
"route": "GET /api/migration/migrations/:id/stream"
|
||
},
|
||
"migrations.scanEvents": {
|
||
"page": "migration",
|
||
"description": "Stream server-discovery progress.",
|
||
"route": "GET /api/migration/scan/stream"
|
||
},
|
||
"terminal.openServer": {
|
||
"page": "terminal",
|
||
"description": "Mint a one-shot ticket for a WebSocket handshake against a server.",
|
||
"route": "POST /api/terminal/ticket"
|
||
},
|
||
"terminal.openService": {
|
||
"page": "service-terminal",
|
||
"description": "Mint a one-shot, short-lived WebSocket auth ticket for a service.",
|
||
"route": "POST /api/services/terminal/ticket"
|
||
}
|
||
},
|
||
"http": {
|
||
"POST /api/diagnostics/client-errors": {
|
||
"page": "diagnostics",
|
||
"description": "Submit bounded, untrusted dashboard error reports. Public, rate-limited intake with no read access."
|
||
},
|
||
"POST /api/cloud/servers/:id/authorize": {
|
||
"page": "cloud",
|
||
"section": "Managed server connections",
|
||
"description": "Verify the connected Cloud user's administration of a server in the exact requested organization before linking an installation."
|
||
},
|
||
"POST /api/cloud/servers/:id/connection": {
|
||
"page": "cloud",
|
||
"section": "Managed server connections",
|
||
"description": "Issue namespace-scoped server credentials after ownership checks; work admission also verifies the subscription. Credentials stay on the installation's server and must not be exposed to a browser."
|
||
},
|
||
"POST /api/cloud/servers/:id/activity": {
|
||
"page": "cloud",
|
||
"section": "Managed server connections",
|
||
"description": "Claim durable server activity for a linked installation and synchronize its project registry before execution; a disconnected claim does not expire."
|
||
},
|
||
"POST /api/cloud/servers/:id/activity/release": {
|
||
"page": "cloud",
|
||
"section": "Managed server connections",
|
||
"description": "Release the same user's exact controller and activity claim after work finishes, and update its registered projects."
|
||
},
|
||
"GET /api/cloud/server-deletions/:id": {
|
||
"page": "cloud",
|
||
"section": "Managed server connections",
|
||
"description": "Read a durable deletion receipt using billing administration, the original organization and exact operationId after the server row has been removed."
|
||
},
|
||
"POST /api/cloud/support": {
|
||
"page": "support",
|
||
"description": "Save a Cloud support ticket and queue acknowledgement and team email. Public intake returns only a receipt and deduplicates retries."
|
||
},
|
||
"GET /api/cloud/support/tickets": {
|
||
"page": "support",
|
||
"description": "List Cloud support tickets with status filtering and cursor pagination. Requires internal operator authority."
|
||
},
|
||
"GET /api/cloud/support/tickets/:id": {
|
||
"page": "support",
|
||
"description": "Read a Cloud ticket, its replies, and email delivery attempts. Requires internal operator authority."
|
||
},
|
||
"PATCH /api/cloud/support/tickets/:id": {
|
||
"page": "support",
|
||
"description": "Open or resolve a Cloud support ticket. Requires internal operator authority."
|
||
},
|
||
"POST /api/cloud/support/tickets/:id/replies": {
|
||
"page": "support",
|
||
"description": "Save and queue an idempotent support reply, optionally resolving the ticket in the same transaction. Requires internal operator authority."
|
||
},
|
||
"POST /api/cloud/support/tickets/:id/retry": {
|
||
"page": "support",
|
||
"description": "Retry undelivered support email while preserving active delivery leases and already accepted messages. Requires internal operator authority."
|
||
},
|
||
"GET /api/auth/*": {
|
||
"page": "auth",
|
||
"description": "Handle browser sessions and authentication through Better Auth."
|
||
},
|
||
"GET /api/auth/callback/github": {
|
||
"page": "auth",
|
||
"description": "Complete a browser-bound Cloud repository authorization; ordinary GitHub sign-in callbacks remain handled by Better Auth."
|
||
},
|
||
"POST /api/auth/*": {
|
||
"page": "auth",
|
||
"description": "Handle sign-in, account, and session mutations through Better Auth."
|
||
},
|
||
"GET /api/auth/cloud-callback": {
|
||
"page": "auth",
|
||
"description": "Exchange a cloud auth `code` for a local session cookie."
|
||
},
|
||
"GET /api/auth/desktop-auth-poll": {
|
||
"page": "auth",
|
||
"description": "Electron polls this by `nonce` until the cloud sign-in resolves."
|
||
},
|
||
"POST /api/auth/desktop-auth-start": {
|
||
"page": "auth",
|
||
"description": "Register a `(nonce, state, PKCE verifier)` tuple before the system browser opens."
|
||
},
|
||
"GET /api/auth/desktop-claim": {
|
||
"page": "auth",
|
||
"description": "Exchange a one-time claim `code` for a session cookie, then redirect."
|
||
},
|
||
"GET /api/auth/desktop-login": {
|
||
"page": "auth",
|
||
"description": "Mint a session for the zero-auth local admin and redirect to the dashboard."
|
||
},
|
||
"GET /api/auth/get-session": {
|
||
"page": "auth",
|
||
"description": "Return the current session; in zero-auth desktop mode, bootstrap one on first hit."
|
||
},
|
||
"GET /api/auth/invitation-preview/:id": {
|
||
"page": "auth",
|
||
"description": "Read a safe preview of a team invitation."
|
||
},
|
||
"GET /api/auth/mcp/jwks": {
|
||
"page": "auth",
|
||
"description": "Read the public keys used to verify MCP OAuth tokens."
|
||
},
|
||
"GET /api/auth/mcp/userinfo": {
|
||
"page": "auth",
|
||
"description": "Read the identity associated with an MCP OAuth token."
|
||
},
|
||
"POST /api/auth/organization/accept-invitation": {
|
||
"page": "auth",
|
||
"description": "Accept an invitation through the browser session boundary."
|
||
},
|
||
"POST /api/auth/organization/cancel-invitation": {
|
||
"page": "auth",
|
||
"description": "Cancel a pending invitation through the browser session boundary."
|
||
},
|
||
"POST /api/auth/organization/invite-member": {
|
||
"page": "auth",
|
||
"description": "Invite a member through the browser session boundary."
|
||
},
|
||
"POST /api/auth/organization/leave": {
|
||
"page": "auth",
|
||
"description": "Leave the active organization."
|
||
},
|
||
"POST /api/auth/organization/reject-invitation": {
|
||
"page": "auth",
|
||
"description": "Reject a pending invitation through the browser session boundary."
|
||
},
|
||
"POST /api/auth/organization/remove-member": {
|
||
"page": "auth",
|
||
"description": "Remove a member through the browser session boundary."
|
||
},
|
||
"POST /api/auth/organization/update-member-role": {
|
||
"page": "auth",
|
||
"description": "Update a member role through the browser session boundary."
|
||
},
|
||
"POST /api/auth/sign-up/*": {
|
||
"page": "auth",
|
||
"description": "Handle sign-up with the installation's account-creation policy."
|
||
},
|
||
"POST /api/billing/oblien-webhook": {
|
||
"page": "billing",
|
||
"description": "Receive authenticated Oblien billing events."
|
||
},
|
||
"POST /api/billing/webhook/stripe": {
|
||
"page": "billing",
|
||
"description": "Retired Stripe webhook; returns 410 without changing billing."
|
||
},
|
||
"GET /api/cloud/account": {
|
||
"page": "cloud",
|
||
"description": "The connected cloud account (name, email, avatar)."
|
||
},
|
||
"POST /api/cloud/analytics": {
|
||
"page": "cloud",
|
||
"description": "Proxy Oblien analytics for a hostname in the caller's namespace."
|
||
},
|
||
"POST /api/cloud/telemetry": {
|
||
"page": "cloud",
|
||
"description": "Capture optional hosted dashboard product events with exact-origin and verified cookie identity checks."
|
||
},
|
||
"POST /api/cloud/connect-authorize": {
|
||
"page": "cloud",
|
||
"description": "Consent page mints a one-time handoff code (cookie session checked inline)."
|
||
},
|
||
"POST /api/cloud/connect-finalize": {
|
||
"page": "cloud",
|
||
"description": "Complete the connect popup: exchange the PKCE code and store the cloud bearer."
|
||
},
|
||
"GET /api/cloud/connect-handoff": {
|
||
"page": "cloud",
|
||
"description": "Validate connect params, then 302 to the dashboard consent page."
|
||
},
|
||
"GET /api/cloud/connect-poll": {
|
||
"page": "cloud",
|
||
"description": "Poll the local Cloud connection handoff."
|
||
},
|
||
"GET /api/cloud/desktop-handoff": {
|
||
"page": "cloud",
|
||
"description": "OAuth → one-time code → redirect to the desktop app callback."
|
||
},
|
||
"POST /api/cloud/disconnect": {
|
||
"page": "cloud",
|
||
"description": "Revoke the current cloud session server-side (idempotent)."
|
||
},
|
||
"POST /api/cloud/edge-proxy": {
|
||
"page": "cloud",
|
||
"description": "Sync the managed edge proxy (bind a slug to a target)."
|
||
},
|
||
"POST /api/cloud/edge-proxy/delete": {
|
||
"page": "cloud",
|
||
"description": "Remove an authorized Cloud edge-proxy route."
|
||
},
|
||
"POST /api/cloud/edge-proxy/verify": {
|
||
"page": "cloud",
|
||
"description": "Begin verification for an edge-proxy domain."
|
||
},
|
||
"POST /api/cloud/edge-proxy/verify-check": {
|
||
"page": "cloud",
|
||
"description": "Check edge-proxy domain verification."
|
||
},
|
||
"POST /api/cloud/exchange-code": {
|
||
"page": "cloud",
|
||
"description": "Exchange a one-time code for user + session (rate-limited)."
|
||
},
|
||
"POST /api/cloud/export-subgraph": {
|
||
"page": "cloud",
|
||
"description": "Export an org- or project-scope subgraph dump (rate-limited)."
|
||
},
|
||
"GET /api/cloud/github/install-callback": {
|
||
"page": "cloud",
|
||
"description": "Select an existing GitHub installation with flow=select, or atomically claim the workspace-bound attempt after GitHub user-token and App-JWT verification."
|
||
},
|
||
"POST /api/cloud/github/install-url": {
|
||
"page": "cloud",
|
||
"description": "Build an Openship installation-selection URL with a one-time workspace state; existing installations can reconnect without another GitHub setup callback."
|
||
},
|
||
"POST /api/cloud/github/installation-token": {
|
||
"page": "cloud",
|
||
"description": "Mint a short-lived (~60min) installation access token."
|
||
},
|
||
"GET /api/cloud/github/installations": {
|
||
"page": "cloud",
|
||
"description": "List the org owner's GitHub App installations."
|
||
},
|
||
"GET /api/cloud/github/oauth-bridge": {
|
||
"page": "cloud",
|
||
"description": "Consume the bridge token and redirect the browser into GitHub OAuth."
|
||
},
|
||
"POST /api/cloud/github/oauth-handoff": {
|
||
"page": "cloud",
|
||
"description": "Start GitHub OAuth: return a one-time bridge URL."
|
||
},
|
||
"GET /api/cloud/github/oauth-success": {
|
||
"page": "cloud",
|
||
"description": "Friendly \"GitHub connected\" close-window page."
|
||
},
|
||
"GET /api/cloud/github/user-status": {
|
||
"page": "cloud",
|
||
"description": "Cloud-resolved GitHub OAuth identity (login, avatar) for the caller."
|
||
},
|
||
"POST /api/cloud/ingest-subgraph": {
|
||
"page": "cloud",
|
||
"description": "Ingest an org- or project-scope subgraph dump (rate-limited, 50MB cap)."
|
||
},
|
||
"POST /api/cloud/promote-project": {
|
||
"page": "cloud",
|
||
"description": "Import a project and its promotion receipt atomically, or acknowledge the same original import on retry (rate-limited, 50MB cap)."
|
||
},
|
||
"POST /api/cloud/pages": {
|
||
"page": "cloud",
|
||
"description": "Create a Cloud Page (proxy Oblien `pages.create`)."
|
||
},
|
||
"POST /api/cloud/pages/delete": {
|
||
"page": "cloud",
|
||
"description": "Delete a Cloud Page by slug."
|
||
},
|
||
"POST /api/cloud/pages/disable": {
|
||
"page": "cloud",
|
||
"description": "Disable a Cloud Page by slug."
|
||
},
|
||
"POST /api/cloud/pages/enable": {
|
||
"page": "cloud",
|
||
"description": "Enable a Cloud Page by slug."
|
||
},
|
||
"POST /api/cloud/preflight": {
|
||
"page": "cloud",
|
||
"description": "Cloud deployment preflight — slug / custom-domain availability."
|
||
},
|
||
"POST /api/cloud/resource-proxy": {
|
||
"page": "cloud",
|
||
"description": "Run an allowed Pages or routing action after verifying customer namespace ownership."
|
||
},
|
||
"GET /api/cloud/route-registry": {
|
||
"page": "cloud",
|
||
"description": "Read routes or certificates belonging to the caller's Cloud namespace."
|
||
},
|
||
"POST /api/cloud/send-invitation": {
|
||
"page": "cloud",
|
||
"description": "Relay an invitation email via the SaaS mail infrastructure."
|
||
},
|
||
"GET /api/cloud/status": {
|
||
"page": "cloud",
|
||
"description": "Openship Cloud connection status for this instance."
|
||
},
|
||
"POST /api/cloud/teardown-project": {
|
||
"page": "cloud",
|
||
"description": "Delete a project's rows on the SaaS (bring-home / reconcile)."
|
||
},
|
||
"POST /api/cloud/token": {
|
||
"page": "cloud",
|
||
"description": "Mint a namespace-scoped Oblien token for the caller's org."
|
||
},
|
||
"GET /api/github/connect/redirect": {
|
||
"page": "github",
|
||
"description": "GitHub OAuth callback — browser navigates here, no session yet."
|
||
},
|
||
"GET /api/health": {
|
||
"page": "health",
|
||
"description": "Liveness probe — returns `{ status, timestamp }`."
|
||
},
|
||
"GET /api/images": {
|
||
"page": "images",
|
||
"description": "List available build/service images, optionally filtered by `?search=` and `?category=`."
|
||
},
|
||
"GET /api/mcp": {
|
||
"page": "mcp",
|
||
"description": "Returns `405` — this server never pushes messages, so there is no SSE stream to open."
|
||
},
|
||
"POST /api/mcp": {
|
||
"page": "mcp",
|
||
"description": "Stateless Streamable-HTTP JSON-RPC 2.0 endpoint. Authenticates the bearer itself, then handles `initialize`, `ping`, `tools/list`, and `tools/call`."
|
||
},
|
||
"POST /api/notices": {
|
||
"page": "notices",
|
||
"description": "Publish an installation notice using operator authority.",
|
||
"sdk": "operator.notices.create(input)"
|
||
},
|
||
"DELETE /api/notices/:id": {
|
||
"page": "notices",
|
||
"description": "Deactivate an installation notice using operator authority.",
|
||
"sdk": "operator.notices.remove(id)"
|
||
},
|
||
"GET /api/notices/all": {
|
||
"page": "notices",
|
||
"description": "List all installation notices using operator authority.",
|
||
"sdk": "operator.notices.listAll()"
|
||
},
|
||
"POST /api/projects/:id/resources": {
|
||
"page": "projects",
|
||
"description": "Update resources (POST alias of the PATCH)."
|
||
},
|
||
"GET /api/projects/:id/routing/edge-status": {
|
||
"page": "projects",
|
||
"description": "Read edge readiness for the project."
|
||
},
|
||
"GET /api/projects/:id/routing/retry/stream": {
|
||
"page": "projects",
|
||
"description": "Replay and follow an existing routing repair using its sessionId; never starts a repair.",
|
||
"sdk": "projects.retryRoutingStream(id, { sessionId })"
|
||
},
|
||
"POST /api/projects/:id/routing/ensure-edge/respond": {
|
||
"page": "projects",
|
||
"description": "Answer an edge setup prompt for the project."
|
||
},
|
||
"POST /api/projects/:id/routing/ensure-edge/stream": {
|
||
"page": "projects",
|
||
"description": "Stream edge setup for the project."
|
||
},
|
||
"POST /api/projects/folder/upload/:sessionId": {
|
||
"page": "sources",
|
||
"description": "Upload the gzipped source archive (Cloud and self-hosted, 300 MB limit)."
|
||
},
|
||
"GET /api/services/terminal/ws/:serviceId": {
|
||
"page": "service-terminal",
|
||
"description": "WebSocket upgrade — auth happens inside the handshake (ticket subprotocol or session cookie).",
|
||
"sdk": "terminal.openService(id, options)"
|
||
},
|
||
"POST /api/system/bootstrap-admin": {
|
||
"page": "system",
|
||
"description": "Create the initial administrator during authorized bootstrap."
|
||
},
|
||
"POST /api/system/cli-session": {
|
||
"page": "system",
|
||
"description": "Exchange the private installation credential for a temporary local CLI admin session; requires X-Internal-Token and refuses Cloud/browser callers."
|
||
},
|
||
"POST /api/system/cloud-connect": {
|
||
"page": "system",
|
||
"description": "Begin the installation's Cloud account connection."
|
||
},
|
||
"GET /api/system/cloud-status": {
|
||
"page": "system",
|
||
"description": "Read the installation's Cloud connection status."
|
||
},
|
||
"PUT /api/system/data-transfer/direct/chunk/:sessionId/:index": {
|
||
"page": "data-transfer",
|
||
"description": "Receive one chunk of an authorized direct transfer."
|
||
},
|
||
"POST /api/system/data-transfer/direct/chunk/:sessionId/finalize/stream": {
|
||
"page": "data-transfer",
|
||
"description": "Finalize a received direct transfer and stream progress."
|
||
},
|
||
"POST /api/system/data-transfer/direct/chunk/:sessionId/heartbeat": {
|
||
"page": "data-transfer",
|
||
"description": "Keep a direct chunk-transfer session alive."
|
||
},
|
||
"POST /api/system/data-transfer/direct/chunk/init": {
|
||
"page": "data-transfer",
|
||
"description": "Open a direct chunk-transfer upload."
|
||
},
|
||
"POST /api/system/data-transfer/direct/receive": {
|
||
"page": "data-transfer",
|
||
"description": "Receive a direct instance transfer."
|
||
},
|
||
"POST /api/system/data-transfer/direct/send": {
|
||
"page": "data-transfer",
|
||
"description": "Send an instance to an authorized destination."
|
||
},
|
||
"POST /api/system/data-transfer/direct/send/stream": {
|
||
"page": "data-transfer",
|
||
"description": "Send an instance and stream transfer progress."
|
||
},
|
||
"POST /api/system/data-transfer/direct/session": {
|
||
"page": "data-transfer",
|
||
"description": "Create a direct-transfer session."
|
||
},
|
||
"POST /api/system/data-transfer/import/session": {
|
||
"page": "data-transfer",
|
||
"description": "Open a chunked file-import session."
|
||
},
|
||
"PUT /api/system/data-transfer/import/session/:sessionId/chunk/:index": {
|
||
"page": "data-transfer",
|
||
"description": "Upload one file-import chunk."
|
||
},
|
||
"POST /api/system/data-transfer/import/session/:sessionId/finalize/stream": {
|
||
"page": "data-transfer",
|
||
"description": "Apply a reviewed file import and stream progress."
|
||
},
|
||
"POST /api/system/data-transfer/import/session/:sessionId/preview": {
|
||
"page": "data-transfer",
|
||
"description": "Preview an uploaded file's selection, conflicts, and server mappings."
|
||
},
|
||
"GET /api/system/data-transfer/preview": {
|
||
"page": "data-transfer",
|
||
"description": "List exportable projects and instance row counts (instance administrator)."
|
||
},
|
||
"POST /api/system/edge/import-sites": {
|
||
"page": "edge",
|
||
"description": "Import discovered edge sites."
|
||
},
|
||
"GET /api/system/health": {
|
||
"page": "system",
|
||
"description": "Read installation health."
|
||
},
|
||
"POST /api/system/invite-signup": {
|
||
"page": "system",
|
||
"description": "Create an account from an eligible self-hosted invitation."
|
||
},
|
||
"POST /api/system/onboarding/test-connection": {
|
||
"page": "system",
|
||
"description": "Test a connection during initial onboarding."
|
||
},
|
||
"POST /api/system/reset-admin-password": {
|
||
"page": "system",
|
||
"description": "Reset the administrator password through the local recovery boundary."
|
||
},
|
||
"POST /api/system/self-edge/preflight": {
|
||
"page": "edge",
|
||
"description": "Check edge readiness for the Openship installation itself."
|
||
},
|
||
"POST /api/system/self-register": {
|
||
"page": "system",
|
||
"description": "Register the Openship installation as a managed application."
|
||
},
|
||
"GET /api/system/self-register/stream": {
|
||
"page": "system",
|
||
"description": "Stream installation registration progress."
|
||
},
|
||
"GET /api/system/setup": {
|
||
"page": "system",
|
||
"description": "Read instance config for the desktop app."
|
||
},
|
||
"POST /api/system/setup": {
|
||
"page": "system",
|
||
"description": "Push instance config from the desktop app."
|
||
},
|
||
"GET /api/terminal/ws/:serverId": {
|
||
"page": "terminal",
|
||
"description": "WebSocket upgrade that opens the remote PTY.",
|
||
"sdk": "terminal.openServer(id, options)"
|
||
},
|
||
"POST /api/webhooks/:provider": {
|
||
"page": "webhooks",
|
||
"description": "Receive a provider webhook (`github` or `stripe`), verify its signature, and dispatch it."
|
||
},
|
||
"POST /api/webhooks/backup": {
|
||
"page": "webhooks",
|
||
"description": "Trigger a backup from an inbound webhook (bearer token is the credential)."
|
||
},
|
||
"POST /api/webhooks/incoming/:id": {
|
||
"page": "webhooks",
|
||
"description": "Authenticate an incoming hook and dispatch its saved action."
|
||
},
|
||
"GET /.well-known/oauth-authorization-server": {
|
||
"page": "auth",
|
||
"description": "Discover the OAuth authorization server."
|
||
},
|
||
"GET /.well-known/oauth-authorization-server/api/mcp": {
|
||
"page": "auth",
|
||
"description": "Discover the OAuth authorization server."
|
||
},
|
||
"GET /.well-known/oauth-authorization-server/api/proxy/api/mcp": {
|
||
"page": "auth",
|
||
"description": "Discover the OAuth authorization server."
|
||
},
|
||
"GET /.well-known/oauth-protected-resource": {
|
||
"page": "auth",
|
||
"description": "Discover OAuth metadata for this protected resource."
|
||
},
|
||
"GET /.well-known/oauth-protected-resource/api/mcp": {
|
||
"page": "auth",
|
||
"description": "Discover OAuth metadata for this protected resource."
|
||
},
|
||
"GET /.well-known/oauth-protected-resource/api/proxy/api/mcp": {
|
||
"page": "auth",
|
||
"description": "Discover OAuth metadata for this protected resource."
|
||
},
|
||
"GET /auth/callback/close": {
|
||
"page": "auth",
|
||
"description": "Close a completed browser authentication handoff."
|
||
},
|
||
"GET /auth/callback/install": {
|
||
"page": "auth",
|
||
"description": "Complete the GitHub App browser handoff using installation state."
|
||
},
|
||
"POST /api/system/clusters/network-preparations": {
|
||
"page": "servers",
|
||
"section": "Legacy network URLs",
|
||
"description": "Compatibility alias for `POST /api/system/networks/preparations`."
|
||
},
|
||
"GET /api/system/clusters/network-preparations/:preparationId": {
|
||
"page": "servers",
|
||
"section": "Legacy network URLs",
|
||
"description": "Compatibility alias for `GET /api/system/networks/preparations/:preparationId`."
|
||
},
|
||
"DELETE /api/system/clusters/network-preparations/:preparationId": {
|
||
"page": "servers",
|
||
"section": "Legacy network URLs",
|
||
"description": "Compatibility alias for `DELETE /api/system/networks/preparations/:preparationId`."
|
||
},
|
||
"DELETE /api/system/clusters/network-preparations/:preparationId/members/:serverId": {
|
||
"page": "servers",
|
||
"section": "Legacy network URLs",
|
||
"description": "Compatibility alias for `DELETE /api/system/networks/preparations/:preparationId/members/:serverId`."
|
||
},
|
||
"DELETE /api/system/clusters/network-operations/:operationId/members/:serverId": {
|
||
"page": "servers",
|
||
"section": "Legacy network URLs",
|
||
"description": "Compatibility alias for `DELETE /api/system/networks/operations/:operationId/members/:serverId`."
|
||
},
|
||
"GET /api/system/clusters/network-preparations": {
|
||
"page": "servers",
|
||
"section": "Legacy network URLs",
|
||
"description": "Compatibility alias for `GET /api/system/networks/preparations`."
|
||
},
|
||
"GET /api/system/clusters/network-preparations/:preparationId/stream": {
|
||
"page": "servers",
|
||
"section": "Legacy network URLs",
|
||
"description": "Compatibility alias for `GET /api/system/networks/preparations/:preparationId/stream`."
|
||
},
|
||
"GET /api/system/clusters/network-operations/:operationId/stream": {
|
||
"page": "servers",
|
||
"section": "Legacy network URLs",
|
||
"description": "Compatibility alias for `GET /api/system/networks/operations/:operationId/stream`."
|
||
},
|
||
"GET /api/system/clusters/stream": {
|
||
"page": "servers",
|
||
"section": "Legacy network URLs",
|
||
"description": "Compatibility alias for `GET /api/system/networks/stream`."
|
||
},
|
||
"POST /api/system/clusters/network-plans": {
|
||
"page": "servers",
|
||
"section": "Legacy network URLs",
|
||
"description": "Compatibility alias for `POST /api/system/networks/plans`."
|
||
},
|
||
"GET /api/system/clusters/network-operations/:operationId": {
|
||
"page": "servers",
|
||
"section": "Legacy network URLs",
|
||
"description": "Compatibility alias for `GET /api/system/networks/operations/:operationId`."
|
||
},
|
||
"POST /api/system/clusters/network-operations/:operationId/apply": {
|
||
"page": "servers",
|
||
"section": "Legacy network URLs",
|
||
"description": "Compatibility alias for `POST /api/system/networks/operations/:operationId/apply`."
|
||
},
|
||
"DELETE /api/system/clusters/network-operations/:operationId": {
|
||
"page": "servers",
|
||
"section": "Legacy network URLs",
|
||
"description": "Compatibility alias for `DELETE /api/system/networks/operations/:operationId`."
|
||
},
|
||
"PATCH /api/system/clusters/network-preparations/:preparationId/connections": {
|
||
"page": "servers",
|
||
"section": "Legacy network URLs",
|
||
"description": "Compatibility alias for `PATCH /api/system/networks/preparations/:preparationId/connections`."
|
||
},
|
||
"GET /api/cloud/support/mine": {
|
||
"page": "support",
|
||
"description": "List the signed-in customer’s tickets with status, search and cursor pagination. Uses the personal Cloud session, including on connected local installations."
|
||
},
|
||
"GET /api/cloud/support/session": {
|
||
"page": "support",
|
||
"description": "Read the private support account and connection binding. Local installations require the caller’s own verified Cloud link; shared organization credentials never grant private ticket access."
|
||
},
|
||
"POST /api/cloud/support/mine": {
|
||
"page": "support",
|
||
"description": "Save an account-owned Cloud support ticket and queue the existing receipt and team notification."
|
||
},
|
||
"GET /api/cloud/support/mine/:id": {
|
||
"page": "support",
|
||
"description": "Read the customer’s own conversation without internal delivery metadata."
|
||
},
|
||
"POST /api/cloud/support/mine/:id/replies": {
|
||
"page": "support",
|
||
"description": "Save an idempotent customer reply, notify support and reopen the conversation."
|
||
},
|
||
"PATCH /api/cloud/support/mine/:id": {
|
||
"page": "support",
|
||
"description": "Open or resolve the signed-in customer’s own ticket."
|
||
},
|
||
"GET /": {
|
||
"page": "data-transfer",
|
||
"section": "Instance location",
|
||
"description": "Show connection instructions for an API-only instance."
|
||
},
|
||
"GET /login": {
|
||
"page": "data-transfer",
|
||
"section": "Instance location",
|
||
"description": "Show how to sign in to an API-only instance through Desktop."
|
||
},
|
||
"GET /accept-invite/:id": {
|
||
"page": "data-transfer",
|
||
"section": "Instance location",
|
||
"description": "Show the invitation address to open in Desktop; no invitation data is exposed."
|
||
},
|
||
"GET /api/system/instance": {
|
||
"page": "data-transfer",
|
||
"section": "Instance location",
|
||
"description": "Read this installation’s controller role and handoff progress (instance administrator or trusted Desktop recovery)."
|
||
},
|
||
"GET /api/system/instance/identity": {
|
||
"page": "data-transfer",
|
||
"section": "Instance location",
|
||
"description": "Read the active installation identity and protocol version without account data."
|
||
},
|
||
"POST /api/system/instance/preflight": {
|
||
"page": "data-transfer",
|
||
"section": "Instance location",
|
||
"description": "Check portable credentials and source-host bindings before moving (instance administrator, read-only)."
|
||
},
|
||
"POST /api/system/instance/offer": {
|
||
"page": "data-transfer",
|
||
"section": "Instance location",
|
||
"description": "Create a ten-minute source or receiver capability for a whole-instance handoff (instance administrator)."
|
||
},
|
||
"POST /api/system/instance/move": {
|
||
"page": "data-transfer",
|
||
"section": "Instance location",
|
||
"description": "Start a reviewed move using the other instance’s code; existing workloads stay on their hosts."
|
||
},
|
||
"POST /api/system/instance/provision": {
|
||
"page": "data-transfer",
|
||
"section": "Instance location",
|
||
"description": "Deploy API-only or API plus dashboard on a selected server through the normal deployment engine, then hand off control."
|
||
},
|
||
"POST /api/system/instance/resume": {
|
||
"page": "data-transfer",
|
||
"section": "Instance location",
|
||
"description": "Resume the saved handoff; a retired source never falls back to its stale data."
|
||
},
|
||
"POST /api/system/instance/cancel": {
|
||
"page": "data-transfer",
|
||
"section": "Instance location",
|
||
"description": "Cancel before retirement and restore the receiver only after source confirmation."
|
||
},
|
||
"POST /api/system/instance/connect": {
|
||
"page": "data-transfer",
|
||
"section": "Instance location",
|
||
"description": "Connect Desktop with a one-use device code without copying instance data."
|
||
},
|
||
"POST /api/system/instance/connect-address": {
|
||
"page": "data-transfer",
|
||
"section": "Instance location",
|
||
"description": "Connect Desktop to a confirmed API address; remote sign-in is still required."
|
||
},
|
||
"POST /api/system/instance/disconnect": {
|
||
"page": "data-transfer",
|
||
"section": "Instance location",
|
||
"description": "Resume an unrelated paused local instance; a migrated source must use a reverse handoff."
|
||
},
|
||
"POST /api/system/instance/return": {
|
||
"page": "data-transfer",
|
||
"section": "Instance location",
|
||
"description": "Pull the latest remote instance back into Desktop with remote administrator authorization."
|
||
},
|
||
"POST /api/system/instance/move-previous": {
|
||
"page": "data-transfer",
|
||
"section": "Instance location",
|
||
"description": "Move current Desktop data back to the previously paired server installation."
|
||
},
|
||
"POST /api/system/instance/pair": {
|
||
"page": "data-transfer",
|
||
"section": "Instance location",
|
||
"description": "Issue a ten-minute device code for the signed-in user’s own permissions."
|
||
},
|
||
"POST /api/system/instance/pair/claim": {
|
||
"page": "data-transfer",
|
||
"section": "Instance location",
|
||
"description": "Atomically exchange the one-use code for its issuing user’s remote device session."
|
||
},
|
||
"POST /api/system/instance/bootstrap": {
|
||
"page": "data-transfer",
|
||
"section": "Instance location",
|
||
"description": "Bind a provisioned receiver to one handoff using its installation secret; does not activate it."
|
||
},
|
||
"POST /api/system/instance/peer/:id/:action": {
|
||
"page": "data-transfer",
|
||
"section": "Instance location",
|
||
"description": "Capability-authenticated bind, freeze, stage, prepare, retire, activate, complete or abort; activation requires source retirement proof."
|
||
},
|
||
"GET /api/system/instance/peer/:id/chunks/:index": {
|
||
"page": "data-transfer",
|
||
"section": "Instance location",
|
||
"description": "Download an authenticated encrypted snapshot chunk for the bound handoff."
|
||
},
|
||
"PUT /api/system/instance/peer/:id/chunks/:index": {
|
||
"page": "data-transfer",
|
||
"section": "Instance location",
|
||
"description": "Verify and store an encrypted snapshot chunk for the bound receiver."
|
||
}
|
||
}
|
||
}
|