openapi: 3.0.1 info: title: Dokku Pro description: This describes the Dokku Pro API. Authentication is performed by exchanging basic auth credentials for an expiring Json Web Token (JWT). version: 1.2.0 externalDocs: description: Find out more about Dokku Pro at https://pro.dokku.com. url: https://pro.dokku.com servers: - url: /@api tags: - name: authentication description: exchange auth credentials for jwt tokens to use with the api - name: ssh keys description: endpoints for managing ssh keys used to push code to the dokku server - name: app description: crud actions for apps - name: builders description: crud actions for builders - name: buildpacks description: crud actions for buildpacks - name: datastores description: crud actions for interacting with datastores at a global level - name: domains description: crud actions for domains - name: environment variables description: crud actions for environment variables - name: formations description: crud actions for process type formations - name: http auth description: crud actions for http auth configuration - name: maintenance mode description: crud actions for maintenance mode configuration - name: resources description: crud actions for process type resources - name: schedulers description: crud actions for schedulers - name: queued background jobs description: endpoints for checking the status of jobs queued by various api calls - name: services description: endpoints for interacting with individual services provisioned by official datastore plugins paths: /apps/{appId}/builderSetting: get: tags: - builders summary: Find builder settings for a given app ID operationId: getBuilderSettingsForApp parameters: - name: appId in: path description: ID of app to find builder settings for example: node-js-app required: true schema: type: string responses: 200: description: Successful operation content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/BuilderSetting' 400: description: Error generating app object content: application/json: schema: type: object properties: errors: type: array items: $ref: '#/components/schemas/Error' security: - bearer_auth: [] /apps/{appId}/buildpacks: get: tags: - buildpacks summary: Find buildpacks for a given app ID operationId: getBuildpacksForApp parameters: - name: appId in: path description: ID of app to find buildpacks for example: node-js-app required: true schema: type: string responses: 200: description: Successful operation content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/Buildpack' 400: description: Error generating app object content: application/json: schema: type: object properties: errors: type: array items: $ref: '#/components/schemas/Error' security: - bearer_auth: [] /apps/{appId}/domains: get: tags: - domains summary: Find domains for a given app ID operationId: getDomainsForApp parameters: - name: appId in: path description: ID of app to find domains for example: node-js-app required: true schema: type: string responses: 200: description: Successful operation content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/Domain' 400: description: Error generating app object content: application/json: schema: type: object properties: errors: type: array items: $ref: '#/components/schemas/Error' security: - bearer_auth: [] /apps/{appId}/envs: get: tags: - environment variables summary: Find environment variables for a given app ID operationId: getEnvForApp parameters: - name: appId in: path description: ID of app to find environment variables for example: node-js-app required: true schema: type: string responses: 200: description: Successful operation content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/Env' 400: description: Error generating app object content: application/json: schema: type: object properties: errors: type: array items: $ref: '#/components/schemas/Error' security: - bearer_auth: [] /apps/{appId}/formations: get: tags: - formations summary: Find formations for a given app ID operationId: getFormationsForApp parameters: - name: appId in: path description: ID of app to find formations for example: node-js-app required: true schema: type: string responses: 200: description: Successful operation content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/Formation' 400: description: Error generating app object content: application/json: schema: type: object properties: errors: type: array items: $ref: '#/components/schemas/Error' security: - bearer_auth: [] /apps/{appId}/httpAuth: get: tags: - http auth summary: Find http auth settings for a given app ID operationId: getHTTPAuthForApp parameters: - name: appId in: path description: ID of app to find http auth settings for example: node-js-app required: true schema: type: string responses: 200: description: Successful operation content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/HTTPAuth' 400: description: Error generating app object content: application/json: schema: type: object properties: errors: type: array items: $ref: '#/components/schemas/Error' security: - bearer_auth: [] /apps/{appId}/httpAuthIPs: get: tags: - http auth summary: Find allowed ips for a given app ID operationId: getHTTPAuthIPsForApp parameters: - name: appId in: path description: ID of app to find allowed ips for example: node-js-app required: true schema: type: string responses: 200: description: Successful operation content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/HTTPAuthIP' 400: description: Error generating app object content: application/json: schema: type: object properties: errors: type: array items: $ref: '#/components/schemas/Error' security: - bearer_auth: [] /apps/{appId}/httpAuthUsers: get: tags: - http auth summary: Find allowed ips for a given app ID operationId: getHTTPAuthUsersForApp parameters: - name: appId in: path description: ID of app to find allowed ips for example: node-js-app required: true schema: type: string responses: 200: description: Successful operation content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/HTTPAuthUser' 400: description: Error generating app object content: application/json: schema: type: object properties: errors: type: array items: $ref: '#/components/schemas/Error' security: - bearer_auth: [] /apps/{appId}/maintenance: get: tags: - maintenance mode summary: Find maintenance mode settings for a given app ID operationId: getMaintenanceForApp parameters: - name: appId in: path description: ID of app to find maintenance mode settings for example: node-js-app required: true schema: type: string responses: 200: description: Successful operation content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/Maintenance' 400: description: Error generating app object content: application/json: schema: type: object properties: errors: type: array items: $ref: '#/components/schemas/Error' security: - bearer_auth: [] /apps/{appId}/relationships/services: delete: tags: - services summary: Unlink a service from an app operationId: unlinkServiceFromApp parameters: - name: appId in: path description: ID of app to unlink example: node-js-app required: true schema: type: string requestBody: description: ServiceLink object content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/ServiceLink' responses: 204: description: Successful operation 400: description: Error generating app object content: application/json: schema: type: object properties: errors: type: array items: $ref: '#/components/schemas/Error' 404: description: App not found content: application/json: schema: type: object properties: errors: type: array items: $ref: '#/components/schemas/Error' 500: description: Error removing service link content: application/json: schema: type: object properties: errors: type: array items: $ref: '#/components/schemas/Error' security: - bearer_auth: [] post: tags: - services summary: Link a service to an app operationId: linkServiceToApp parameters: - name: appId in: path description: ID of app to link example: node-js-app required: true schema: type: string requestBody: description: ServiceLink object content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/ServiceLink' responses: 204: description: Successful operation 400: description: Error generating app object content: application/json: schema: type: object properties: errors: type: array items: $ref: '#/components/schemas/Error' 404: description: App not found content: application/json: schema: type: object properties: errors: type: array items: $ref: '#/components/schemas/Error' 500: description: Error adding service link content: application/json: schema: type: object properties: errors: type: array items: $ref: '#/components/schemas/Error' security: - bearer_auth: [] /apps/{appId}/resources: get: tags: - resources summary: Find resources for a given app ID operationId: getResourcesForApp parameters: - name: appId in: path description: ID of app to find resources for example: node-js-app required: true schema: type: string responses: 200: description: Successful operation content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/Resource' 400: description: Error generating app object content: application/json: schema: type: object properties: errors: type: array items: $ref: '#/components/schemas/Error' security: - bearer_auth: [] /apps/{appId}/schedulerSetting: get: tags: - schedulers summary: Find scheduler settings for a given app ID operationId: getSchedulerSettingsForApp parameters: - name: appId in: path description: ID of app to find scheduler settings for example: node-js-app required: true schema: type: string responses: 200: description: Successful operation content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/SchedulerSetting' 400: description: Error generating app object content: application/json: schema: type: object properties: errors: type: array items: $ref: '#/components/schemas/Error' security: - bearer_auth: [] /apps/{appId}/services: get: tags: - services summary: Find services for a given app ID operationId: getServicesForApp parameters: - name: appId in: path description: ID of app to find services for example: node-js-app required: true schema: type: string - in: query name: include schema: type: array items: type: string enum: - "*" - config_dir - config_options - container_id - data_dir - dsn - exposed_ports - image - internal_ip - links - service_dir - status description: Fields to include in the attributes object - fields with an empty value will be omitted for a given record. style: form explode: false responses: 200: description: Successful operation content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/Service' 400: description: Error generating app object content: application/json: schema: type: object properties: errors: type: array items: $ref: '#/components/schemas/Error' security: - bearer_auth: [] /apps/{appId}: delete: tags: - app summary: Deletes an app operationId: deleteApp parameters: - name: appId in: path description: App id to delete example: node-js-app required: true schema: type: string responses: 204: description: App successfully deleted 400: description: Unable to delete app content: application/json: schema: type: object properties: errors: type: array items: $ref: '#/components/schemas/Error' security: - bearer_auth: [] get: tags: - app summary: Find app by ID operationId: getAppById parameters: - name: appId in: path description: ID of app to return example: node-js-app required: true schema: type: string responses: 200: description: Successful operation content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/App' 400: description: Error generating app object content: application/json: schema: type: object properties: errors: type: array items: $ref: '#/components/schemas/Error' 404: description: App not found content: application/json: schema: type: object properties: errors: type: array items: $ref: '#/components/schemas/Error' security: - bearer_auth: [] patch: tags: - app summary: Lock an app for deploys operationId: updateApp parameters: - name: appId in: path description: ID of app to modify example: node-js-app required: true schema: type: string requestBody: description: App object content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/App' required: true responses: 200: description: App successfully updated content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/App' 400: description: Unable to parse request content: application/json: schema: type: object properties: errors: type: array items: $ref: '#/components/schemas/Error' 403: description: App renaming is not supported content: application/json: schema: type: object properties: errors: type: array items: $ref: '#/components/schemas/Error' 404: description: App not found content: application/json: schema: type: object properties: errors: type: array items: $ref: '#/components/schemas/Error' 500: description: Error updating app content: application/json: schema: type: object properties: errors: type: array items: $ref: '#/components/schemas/Error' security: - bearer_auth: [] /apps: get: tags: - app summary: Find all apps operationId: getApps responses: 200: description: Successful operation content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/App' 400: description: Error generating app objects content: application/json: schema: type: object properties: errors: type: array items: $ref: '#/components/schemas/Error' security: - bearer_auth: [] post: tags: - app summary: Create an new app operationId: addApp requestBody: description: App object content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/App' required: true responses: 201: description: Successful operation content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/App' 400: description: Unable to parse request content: application/json: schema: type: object properties: errors: type: array items: $ref: '#/components/schemas/Error' security: - bearer_auth: [] /builderSettings/{appId}: patch: tags: - builders summary: Update builder settings for an app operationId: updateBuilderSettings parameters: - name: appId in: path description: ID of app to modify example: node-js-app required: true schema: type: string requestBody: description: BuilderSetting object content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/BuilderSetting' required: true responses: 200: description: Builder Settings successfully updated content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/BuilderSetting' 400: description: Unable to parse request content: application/json: schema: type: object properties: errors: type: array items: $ref: '#/components/schemas/Error' 404: description: Builder settings not found content: application/json: schema: type: object properties: errors: type: array items: $ref: '#/components/schemas/Error' 500: description: Error updating builder settings content: application/json: schema: type: object properties: errors: type: array items: $ref: '#/components/schemas/Error' security: - bearer_auth: [] /builders/{builderId}: get: tags: - builders summary: Find builder by ID operationId: getBuilderById parameters: - name: builderId in: path description: ID of builder to return example: pack required: true schema: type: string responses: 200: description: Successful operation content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/Builder' 404: description: App not found content: application/json: schema: type: object properties: errors: type: array items: $ref: '#/components/schemas/Error' security: - bearer_auth: [] /builders: get: tags: - builders summary: Find all builders operationId: getBuilders responses: 200: description: Successful operation content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/Builder' security: - bearer_auth: [] /buildpacks/{buildpackId}: delete: tags: - buildpacks summary: Removes a buildpack from an app operationId: deleteBuildpack parameters: - name: buildpackId in: path description: Composite primary key delimited by colon consisting of app name and buildpack example: node-js-app:heroku/nodejs required: true schema: type: string responses: 202: description: Buildpack successfully deleted headers: Content-Location: schema: type: string description: A link to the queued background job that rebuilds the app with the new config example: /@api/queueJobs/1 400: description: Unable to delete buildpack content: application/json: schema: type: object properties: errors: type: array items: $ref: '#/components/schemas/Error' security: - bearer_auth: [] /buildpacks: post: tags: - buildpacks summary: Add a buildpack to a given app operationId: addBuildpack requestBody: description: Buildpack object content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/Buildpack' required: true responses: 202: description: Successful operation content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/Buildpack' headers: Content-Location: schema: type: string description: A link to the queued background job that rebuilds the app with the new config example: /@api/queueJobs/1 400: description: Unable to parse request content: application/json: schema: type: object properties: errors: type: array items: $ref: '#/components/schemas/Error' security: - bearer_auth: [] /datastores: get: tags: - datastores summary: List all installed datastore plugins and related datastores operationId: getDatastores responses: 200: description: Successful operation content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/Datastore' 400: description: Error generating app objects content: application/json: schema: type: object properties: errors: type: array items: $ref: '#/components/schemas/Error' security: - bearer_auth: [] /domains/{domainId}: delete: tags: - domains summary: Removes a domain from an app operationId: deleteDomain parameters: - name: domainId in: path description: Composite primary key delimited by colon consisting of app name and domain name example: node-js-app:node-js-app.example.com required: true schema: type: string responses: 204: description: Domain successfully deleted 400: description: Unable to delete domain content: application/json: schema: type: object properties: errors: type: array items: $ref: '#/components/schemas/Error' security: - bearer_auth: [] /domains: post: tags: - domains summary: Add a domain to a given app operationId: addDomain requestBody: description: Domain object content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/Domain' required: true responses: 201: description: Successful operation content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/Domain' 400: description: Unable to parse request content: application/json: schema: type: object properties: errors: type: array items: $ref: '#/components/schemas/Error' security: - bearer_auth: [] /envs/{envId}: delete: tags: - environment variables summary: Removes an environment variable from an app operationId: deleteEnv parameters: - name: envId in: path description: Composite primary key delimited by colon consisting of app name and environment variable name example: node-js-app:KEY required: true schema: type: string responses: 202: description: Environment variable successfully deleted headers: Content-Location: schema: type: string description: A link to the queued background job that rebuilds the app with the new config example: /@api/queueJobs/1 400: description: Unable to delete environment variable content: application/json: schema: type: object properties: errors: type: array items: $ref: '#/components/schemas/Error' security: - bearer_auth: [] /envs: post: tags: - environment variables summary: Add an environment variable to a given app operationId: addEnv requestBody: description: Env object content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/Env' required: true responses: 202: description: Successful operation content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/Env' headers: Content-Location: schema: type: string description: A link to the queued background job that rebuilds the app with the new config example: /@api/queueJobs/1 400: description: Unable to parse request content: application/json: schema: type: object properties: errors: type: array items: $ref: '#/components/schemas/Error' security: - bearer_auth: [] /formations/{formationId}: delete: tags: - formations summary: Scales a process type to 0 operationId: deleteFormation parameters: - name: formationId in: path description: Composite primary key delimited by colon consisting of app name and process type example: node-js-app:web required: true schema: type: string responses: 202: description: Process type successfully scaled to 0 headers: Content-Location: schema: type: string description: A link to the queued background job that rebuilds the app with the new config example: /@api/queueJobs/1 400: description: Unable to scale process type to 0 content: application/json: schema: type: object properties: errors: type: array items: $ref: '#/components/schemas/Error' security: - bearer_auth: [] /formations: post: tags: - formations summary: Set the scale for an app's process type operationId: addFormation requestBody: description: Formation object content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/Formation' required: true responses: 202: description: Successful operation content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/Formation' headers: Content-Location: schema: type: string description: A link to the queued background job that rebuilds the app with the new config example: /@api/queueJobs/1 400: description: Unable to parse request content: application/json: schema: type: object properties: errors: type: array items: $ref: '#/components/schemas/Error' security: - bearer_auth: [] /httpAuthIPs/{httpAuthIPId}: delete: tags: - http auth summary: Removes an allowed ip from an app operationId: deleteHTTPAuthIP parameters: - name: httpAuthIPId in: path description: Composite primary key delimited by colon consisting of app name and ip address example: node-js-app:127.0.0.1 required: true schema: type: string responses: 204: description: Allowed IP Address successfully deleted 400: description: Unable to delete allowed ip address content: application/json: schema: type: object properties: errors: type: array items: $ref: '#/components/schemas/Error' security: - bearer_auth: [] /httpAuthIPs: post: tags: - http auth summary: Add an allowed ip to a given app operationId: addHTTPAuthIP requestBody: description: HTTPAuthIP object content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/HTTPAuthIP' required: true responses: 201: description: Successful operation content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/HTTPAuthIP' 400: description: Unable to parse request content: application/json: schema: type: object properties: errors: type: array items: $ref: '#/components/schemas/Error' security: - bearer_auth: [] /httpAuthUsers/{httpAuthUserId}: delete: tags: - http auth summary: Removes an allowed ip from an app operationId: deleteHTTPAuthUser parameters: - name: httpAuthUserId in: path description: Composite primary key delimited by colon consisting of app name and ip address example: node-js-app:127.0.0.1 required: true schema: type: string responses: 204: description: Allowed IP Address successfully deleted 400: description: Unable to delete allowed ip address content: application/json: schema: type: object properties: errors: type: array items: $ref: '#/components/schemas/Error' security: - bearer_auth: [] patch: tags: - http auth summary: Update the password for an allowed user operationId: updateHTTPAuthUser parameters: - name: httpAuthUserId in: path description: Composite primary key delimited by colon consisting of app name and ip address example: node-js-app:127.0.0.1 required: true schema: type: string requestBody: description: HTTPAuthUser object content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/HTTPAuthUser' required: true responses: 200: description: HTTPAuthUser successfully updated content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/HTTPAuthUser' 400: description: Unable to parse request content: application/json: schema: type: object properties: errors: type: array items: $ref: '#/components/schemas/Error' 403: description: App renaming is not supported content: application/json: schema: type: object properties: errors: type: array items: $ref: '#/components/schemas/Error' 404: description: HTTPAuthUser not found content: application/json: schema: type: object properties: errors: type: array items: $ref: '#/components/schemas/Error' 500: description: Error updating HTTPAuthUser content: application/json: schema: type: object properties: errors: type: array items: $ref: '#/components/schemas/Error' security: - bearer_auth: [] /httpAuthUsers: post: tags: - http auth summary: Add an allowed user to a given app operationId: addHTTPAuthUser requestBody: description: HTTPAuthUser object content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/HTTPAuthUser' required: true responses: 201: description: Successful operation content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/HTTPAuthUser' 400: description: Unable to parse request content: application/json: schema: type: object properties: errors: type: array items: $ref: '#/components/schemas/Error' security: - bearer_auth: [] /httpAuths/{appId}: patch: tags: - http auth summary: Update http auth settings for an app operationId: updateHTTPAuths parameters: - name: appId in: path description: ID of app to modify example: node-js-app required: true schema: type: string requestBody: description: HTTPAuth object content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/HTTPAuth' required: true responses: 200: description: HTTP Auth Settings successfully updated content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/HTTPAuth' 400: description: Unable to parse request content: application/json: schema: type: object properties: errors: type: array items: $ref: '#/components/schemas/Error' 404: description: HTTP Auth settings not found content: application/json: schema: type: object properties: errors: type: array items: $ref: '#/components/schemas/Error' 500: description: Error updating http auth settings content: application/json: schema: type: object properties: errors: type: array items: $ref: '#/components/schemas/Error' security: - bearer_auth: [] /maintenances/{appId}: patch: tags: - maintenance mode summary: Update maintenance mode settings for an app operationId: updateMaintenances parameters: - name: appId in: path description: ID of app to modify example: node-js-app required: true schema: type: string requestBody: description: Maintenance object content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/Maintenance' required: true responses: 200: description: Maintenance Settings successfully updated content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/Maintenance' 400: description: Unable to parse request content: application/json: schema: type: object properties: errors: type: array items: $ref: '#/components/schemas/Error' 404: description: Maintenance settings not found content: application/json: schema: type: object properties: errors: type: array items: $ref: '#/components/schemas/Error' 500: description: Error updating maintenance mode settings content: application/json: schema: type: object properties: errors: type: array items: $ref: '#/components/schemas/Error' security: - bearer_auth: [] /queueJobs/{queueJobId}: get: tags: - queued background jobs summary: Fetches a given job from the queue operationId: getQueueJob parameters: - name: queueJobId in: path description: A queue job id example: 7 required: true schema: type: string responses: 200: description: Successful operation content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/QueueJob' 400: description: Error generating app object content: application/json: schema: type: object properties: errors: type: array items: $ref: '#/components/schemas/Error' 404: description: App not found content: application/json: schema: type: object properties: errors: type: array items: $ref: '#/components/schemas/Error' security: - bearer_auth: [] /resources/{resourceId}: delete: tags: - resources summary: Clears the value stored at the specified resource operationId: deleteResource parameters: - name: resourceId in: path description: Composite primary key delimited by colon consisting of app name, process type, resource type, and resource name example: node-js-app:web:limit:cpu required: true schema: type: string responses: 202: description: Resource value cleared headers: Content-Location: schema: type: string description: A link to the queued background job that rebuilds the app with the new config example: /@api/queueJobs/1 400: description: Unable to scale process type to 0 content: application/json: schema: type: object properties: errors: type: array items: $ref: '#/components/schemas/Error' security: - bearer_auth: [] /resources: post: tags: - resources summary: Set the resource to the specified value operationId: addResource requestBody: description: Resource object content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/Resource' required: true responses: 202: description: Successful operation content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/Resource' headers: Content-Location: schema: type: string description: A link to the queued background job that rebuilds the app with the new config example: /@api/queueJobs/1 400: description: Unable to parse request content: application/json: schema: type: object properties: errors: type: array items: $ref: '#/components/schemas/Error' security: - bearer_auth: [] /schedulerSettings/{appId}: patch: tags: - schedulers summary: Update scheduler settings for an app operationId: updateSchedulerSettings parameters: - name: appId in: path description: ID of app to modify example: node-js-app required: true schema: type: string requestBody: description: SchedulerSetting object content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/SchedulerSetting' required: true responses: 200: description: Scheduler Settings successfully updated content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/SchedulerSetting' 400: description: Unable to parse request content: application/json: schema: type: object properties: errors: type: array items: $ref: '#/components/schemas/Error' 404: description: Scheduler settings not found content: application/json: schema: type: object properties: errors: type: array items: $ref: '#/components/schemas/Error' 500: description: Error updating scheduler settings content: application/json: schema: type: object properties: errors: type: array items: $ref: '#/components/schemas/Error' security: - bearer_auth: [] /schedulers/{schedulerId}: get: tags: - schedulers summary: Find scheduler by ID operationId: getSchedulerById parameters: - name: schedulerId in: path description: ID of scheduler to return example: docker-local required: true schema: type: string responses: 200: description: Successful operation content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/Scheduler' 404: description: App not found content: application/json: schema: type: object properties: errors: type: array items: $ref: '#/components/schemas/Error' security: - bearer_auth: [] /schedulers: get: tags: - schedulers summary: Find all schedulers operationId: getSchedulers responses: 200: description: Successful operation content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/Scheduler' security: - bearer_auth: [] /services/{serviceName}: delete: tags: - services summary: Deletes a service operationId: deleteService parameters: - name: serviceName in: path description: ID of service to delete example: lollipop required: true schema: type: string responses: 204: description: Service successfully deleted 400: description: Unable to delete service content: application/json: schema: type: object properties: errors: type: array items: $ref: '#/components/schemas/Error' security: - bearer_auth: [] get: tags: - services summary: Find service by ID operationId: getServiceById parameters: - name: serviceName in: path description: ID of service to return example: lollipop required: true schema: type: string - in: query name: fields schema: default: - "*" type: array items: type: string enum: - "*" - config_dir - config_options - container_id - data_dir - dsn - exposed_ports - image - internal_ip - links - service_dir - status description: Fields to include in the attributes object - fields with an empty value will be omitted for a given record. style: form explode: false responses: 200: description: Successful operation content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/Service' 404: description: Service not found content: application/json: schema: type: object properties: errors: type: array items: $ref: '#/components/schemas/Error' security: - bearer_auth: [] /services: get: tags: - services summary: Find all services operationId: getServices parameters: - in: query name: fields schema: type: array items: type: string enum: - "*" - config_dir - config_options - container_id - data_dir - dsn - exposed_ports - image - internal_ip - links - service_dir - status description: Fields to include in the attributes object - fields with an empty value will be omitted for a given record. style: form explode: false responses: 200: description: Successful operation content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/Service' security: - bearer_auth: [] post: tags: - services summary: Create a new service operationId: addService requestBody: description: service object content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/ServiceCreate' required: true responses: 201: description: Successful operation content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/Service' 400: description: Unable to parse request content: application/json: schema: type: object properties: errors: type: array items: $ref: '#/components/schemas/Error' security: - bearer_auth: [] /sshKeys/{sshKeyFingerprintId}: delete: tags: - ssh keys summary: Removes an ssh key from the server operationId: deleteSSHKey parameters: - name: sshKeyFingerprintId in: path description: Fingerprint ID of SSH key to remove example: SHA256:M4yxDQtHr0+r+Ugzm3gzuSsBlZeG3LxShFwoZ4bDXa0 required: true schema: type: string responses: 204: description: SSH key successfully removed 400: description: Unable to remove SSH key content: application/json: schema: type: object properties: errors: type: array items: $ref: '#/components/schemas/Error' security: - bearer_auth: [] get: tags: - ssh keys summary: Find ssh key by fingerprint ID operationId: getSSHKeyByFingerprintId parameters: - name: sshKeyFingerprintId in: path description: Fingerprint ID of SSH key to return example: SHA256:M4yxDQtHr0+r+Ugzm3gzuSsBlZeG3LxShFwoZ4bDXa0 required: true schema: type: string responses: 200: description: Successful operation content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/SSHKey' 404: description: SSH key not found content: application/json: schema: type: object properties: errors: type: array items: $ref: '#/components/schemas/Error' security: - bearer_auth: [] /sshKeys: get: tags: - ssh keys summary: Find all ssh keys operationId: getSSHkeys responses: 200: description: Successful operation content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/SSHKey' security: - bearer_auth: [] post: tags: - ssh keys summary: Add an ssh key to server operationId: addSSHKey requestBody: description: SSHKey object content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/SSHKey' required: true responses: 201: description: Successful operation content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/SSHKey' 400: description: Unable to parse request content: application/json: schema: type: object properties: errors: type: array items: $ref: '#/components/schemas/Error' security: - bearer_auth: [] /tokens/{tokenId}: delete: tags: - authentication summary: Invalidates a jwt access token for future use operationId: logout parameters: - name: tokenId in: path description: JWT Access token to invalidate required: true schema: type: string responses: 204: description: Token successfully deleted 400: description: Unable to delete access token content: application/json: schema: type: object properties: errors: type: array items: $ref: '#/components/schemas/Error' /tokens: post: tags: - authentication summary: Create an jwt access token operationId: login requestBody: description: Token object content: application/json: schema: type: object properties: data: $ref: '#/components/schemas/TokenCreate' required: true responses: 201: description: Credentials successfully exchanged for JWT Token content: application/json: schema: $ref: '#/components/schemas/Token' 400: description: Unable to parse request content: application/json: schema: type: object properties: errors: type: array items: $ref: '#/components/schemas/Error' 401: description: Provided authentication credentials were invalid content: application/json: schema: type: object properties: errors: type: array items: $ref: '#/components/schemas/Error' 404: description: Token being refreshed was not found content: application/json: schema: type: object properties: errors: type: array items: $ref: '#/components/schemas/Error' security: - basic_auth: [] - bearer_auth: [] components: schemas: App: type: object properties: id: type: string description: App name example: node-js-app type: type: string enum: - apps attributes: type: object properties: locked: type: boolean default: false description: Whether app is locked for deploys or not Builder: type: object properties: id: type: string description: Name of builder example: pack type: type: string enum: - builders attributes: type: object properties: name: type: string description: Name of builder example: pack BuilderSetting: type: object properties: id: type: string description: Name of app for which the settings pertain to example: node-js-app type: type: string enum: - builderSettings attributes: type: object properties: app_id: type: string description: App name example: node-js-app computed_build_dir: type: string description: Value of computed builder build directory example: sub-dir global_build_dir: type: string description: Value of globally selected build directory example: sub-dir build_dir: type: string description: Value of locally selected build directory example: sub-dir computed_selected: type: string description: Value of computed builder selection example: pack global_selected: type: string description: Value of globally selected builder example: pack selected: type: string description: Value of locally selected builder example: pack Buildpack: type: object properties: id: type: string description: Composite primary key delimited by colon consisting of app name and buildpack example: node-js-app:heroku/nodejs type: type: string enum: - buildpacks attributes: type: object properties: app_id: type: string description: App name example: node-js-app buildpack: type: string description: Buildpack example: heroku/nodejs position: type: integer description: Order in which buildpack is run example: 1 Datastore: type: object properties: id: type: string description: Name of datastore plugin example: postgres type: type: string enum: - datastores attributes: type: object properties: ID: type: string description: Datastore Plugin name example: postgres Domain: type: object properties: id: type: string description: Composite primary key delimited by colon consisting of app name and domain name example: node-js-app:node-js-app.example.com type: type: string enum: - domains attributes: type: object properties: app_id: type: string description: App name example: node-js-app domain: type: string description: Domain name example: node-js-app.example.com Env: type: object properties: id: type: string description: Composite primary key delimited by colon consisting of app name and environment variable name example: node-js-app:KEY type: type: string enum: - envs attributes: type: object properties: app_id: type: string description: App name example: node-js-app key: type: string description: An environment variable name example: KEY value: type: string description: The value assigned to the environment variable example: a secret value Error: type: object properties: status: type: integer description: Code mapping to error, typically an http status code example: 400 title: description: A human readable description of the error example: An error occurred during the operation Formation: type: object properties: id: type: string description: Composite primary key delimited by colon consisting of app name and process type example: node-js-app:web type: type: string enum: - formations attributes: type: object properties: app_id: type: string description: App name example: node-js-app process_type: type: string description: An process type example: web quantity: type: integer description: The current scale for the process type example: 1 limits: $ref: '#/components/schemas/ResourceSet' description: The set of limits for a process type. Cannot be updated directly. reserves: $ref: '#/components/schemas/ResourceSet' description: The set of limits for a process type. Cannot be updated directly. HTTPAuth: type: object properties: id: type: string description: Name of app for which the settings pertain to example: node-js-app type: type: string enum: - httpAuths attributes: type: object properties: app_id: type: string description: App name example: node-js-app auth_enabled: type: boolean description: Whether http authentication is enabled or not example: false HTTPAuthIP: type: object properties: id: type: string description: Composite primary key delimited by colon consisting of app name and ip address example: node-js-app:127.0.0.1 type: type: string enum: - httpAuthIPs attributes: type: object properties: app_id: type: string description: App name example: node-js-app ip_address: type: string description: An IP Address to allow access to example: 127.0.0.1 HTTPAuthUser: type: object properties: id: type: string description: Composite primary key delimited by colon consisting of app name and http auth username example: node-js-app type: type: string enum: - httpAuthUsers attributes: type: object properties: app_id: type: string description: App name example: node-js-app username: type: string description: A username to allow access to example: admin password: type: string description: A password for the specified user example: hunter2 Maintenance: type: object properties: id: type: string description: Name of app for which the settings pertain to example: node-js-app type: type: string enum: - maintenances attributes: type: object properties: app_id: type: string description: App name example: node-js-app enabled: type: boolean description: Whether maintenance is enabled or not example: false QueueJob: type: object properties: id: type: string description: A queue job id example: 7 type: type: string enum: - queueJobs attributes: type: object properties: command: type: array description: App name items: type: string example: ["dokku", "--force", "ps:rebuild", "node-js-app"] internal_id: type: string description: An internal id for the job used for logging purposes example: Cekw67uyMpBGZLRP2HFVbe request_id: type: string description: A request ID associated with the HTTP request a job was triggered from example: f47ac10b-58cc-0372-8567-0e02b2c3d479 retry_count: type: integer description: The number of times the job has been retried example: 0 state: type: string description: The job status in human readable form example: pending enum: - completed - pending - retrying - failed - unknown status_message: type: string description: Status info about what was last done with the job example: Picked up by worker.1 Resource: type: object properties: id: type: string description: Composite primary key delimited by colon consisting of app name, process type, resource type, and resource name example: node-js-app:web:limit:cpu type: type: string enum: - resources attributes: type: object properties: app_id: type: string description: App name example: node-js-app process_type: type: string description: An process type example: web resource_type: type: string description: A resource type enum: - limit - reserve example: limit name: type: string description: The name of the resource enum: - cpu - memory - memory-swap - network - network-ingress - network-egress - nvidia-gpu example: cpu value: type: string description: The value of the resource example: 7 ResourceSet: type: object properties: cpu: type: string description: Contains a resource value for CPU example: 1 memory: type: string description: Contains a resource value for Memory example: 1 memory_swap: type: string description: Contains a resource value for MemorySwap example: 1 network: type: string description: Contains a resource value for Network example: 1 network_egress: type: string description: Contains a resource value for NetworkEgress example: 1 network_ingress: type: string description: Contains a resource value for NetworkIngress example: 1 nvidia_gpu: type: string description: Contains a resource value for NvidiaGPU example: 1 SSHKey: type: object properties: id: type: string description: Fingerprint ID of SSH key example: SHA256:M4yxDQtHr0+r+Ugzm3gzuSsBlZeG3LxShFwoZ4bDXa0 type: type: string enum: - sshKeys attributes: type: object properties: username: type: string description: SSH Key username example: test-user allowed_keys: type: string description: A comma-separated list of allowed ssh key options example: no-agent-forwarding,no-user-rc,no-X11-forwarding,no-port-forwarding ssh_key: type: string description: An SSH public key example: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCzXRNrib42OxlqGFbVs2bvSVdjW1VnkGf0J14lSP9l6Tcp... Scheduler: type: object properties: id: type: string description: Name of scheduler example: docker-local type: type: string enum: - schedulers attributes: type: object properties: name: type: string description: Name of scheduler example: docker-local SchedulerSetting: type: object properties: id: type: string description: Name of app for which the settings pertain to example: node-js-app type: type: string enum: - schedulerSettings attributes: type: object properties: app_id: type: string description: App name example: node-js-app computed_selected: type: string description: Value of computed scheduler selection example: docker-local global_selected: type: string description: Value of globally selected scheduler example: docker-local selected: type: string description: Value of locally selected scheduler example: docker-local Service: type: object properties: id: type: string description: Name of service example: lollipop type: type: string enum: - services attributes: type: object properties: config_dir: type: string description: Path on disk to service config directory example: /var/lib/dokku/services/postgres/lollipop/config config_options: type: string description: List of config options for service example: "" container_id: type: string description: Container ID for service example: ffd194a4a2427cb07731ad24888966ec2cf9130d44e60104a6d5481ce649dde3 data_dir: type: string description: Path on disk to service data directory example: /var/lib/dokku/services/postgres/lollipop/data dsn: type: string description: DSN that will be used by linked apps example: postgres://username:password@dokku-postgres-lollipop:5432/lollipop exposed_ports: type: array description: A list of exposed ports example: ["5432->5432"] items: type: string image: type: string description: The image used for the service example: postgres:14.1 internal_ip: type: string description: The service container's internal IP address example: 172.17.0.2 links: type: array description: A list of linked apps example: ["paintshop"] items: type: string service_dir: type: string description: Path o disk to service directory example: /var/lib/dokku/services/postgres/lollipop service_type: type: string description: Type of the service example: postgres status: type: string description: Current state of service example: running ServiceCreate: type: object properties: id: type: string description: Name of service example: postgres:lollipop type: type: string enum: - services attributes: type: object properties: {} ServiceLink: type: object properties: id: type: string description: Name of service example: postgres:lollipop type: type: string enum: - services Token: type: object properties: id: type: string description: Bearer authentication token example: dpo_q8nwecausndfoaiudhf type: type: string enum: - tokens attributes: type: object properties: refresh_token: type: string description: A jwt refresh token default: dpr_uoelcjosertv8w4vw3 access_token_expires: type: integer description: A unix timestamp describing the access token expiration example: 1640335406 refresh_token_expires: type: integer description: A unix timestamp describing the refresh token expiration example: 1640335406 uses: type: integer description: Number of uses the access token has. When missing, the token has no limit on usage TokenCreate: type: object properties: id: type: string description: Bearer authentication token example: dpo_q8nwecausndfoaiudhf type: type: string enum: - tokens attributes: type: object properties: refresh_token: type: string description: A jwt refresh token default: dpr_uoelcjosertv8w4vw3 uses: type: integer description: Number of uses the access token has. When missing, the token has no limit on usage securitySchemes: basic_auth: type: http scheme: basic description: Used to exchange user:pass credentials for a JWT Access Token bearer_auth: type: http scheme: bearer bearerFormat: JWT