+
### Premium Supporters 🥇
diff --git a/apps/docs/api.json b/apps/docs/api.json
index bce590de3..074538029 100644
--- a/apps/docs/api.json
+++ b/apps/docs/api.json
@@ -3,7 +3,7 @@
"info": {
"title": "Dokploy API",
"description": "Endpoints for dokploy",
- "version": "v0.2.5"
+ "version": "v0.7.3"
},
"servers": [
{
@@ -201,6 +201,12 @@
},
"canAccessToAPI": {
"type": "boolean"
+ },
+ "canAccessToSSHKeys": {
+ "type": "boolean"
+ },
+ "canAccessToGitProviders": {
+ "type": "boolean"
}
},
"required": [
@@ -213,7 +219,9 @@
"accesedServices",
"canAccessToTraefikFiles",
"canAccessToDocker",
- "canAccessToAPI"
+ "canAccessToAPI",
+ "canAccessToSSHKeys",
+ "canAccessToGitProviders"
],
"additionalProperties": false
}
@@ -234,117 +242,6 @@
}
}
},
- "/admin.cleanGithubApp": {
- "post": {
- "operationId": "admin-cleanGithubApp",
- "tags": ["admin"],
- "security": [
- {
- "Authorization": []
- }
- ],
- "parameters": [],
- "responses": {
- "200": {
- "description": "Successful response",
- "content": {
- "application/json": {}
- }
- },
- "default": {
- "$ref": "#/components/responses/error"
- }
- }
- }
- },
- "/admin.getRepositories": {
- "get": {
- "operationId": "admin-getRepositories",
- "tags": ["admin"],
- "security": [
- {
- "Authorization": []
- }
- ],
- "parameters": [],
- "responses": {
- "200": {
- "description": "Successful response",
- "content": {
- "application/json": {}
- }
- },
- "default": {
- "$ref": "#/components/responses/error"
- }
- }
- }
- },
- "/admin.getBranches": {
- "get": {
- "operationId": "admin-getBranches",
- "tags": ["admin"],
- "security": [
- {
- "Authorization": []
- }
- ],
- "parameters": [
- {
- "name": "repo",
- "in": "query",
- "required": true,
- "schema": {
- "type": "string",
- "minLength": 1
- }
- },
- {
- "name": "owner",
- "in": "query",
- "required": true,
- "schema": {
- "type": "string",
- "minLength": 1
- }
- }
- ],
- "responses": {
- "200": {
- "description": "Successful response",
- "content": {
- "application/json": {}
- }
- },
- "default": {
- "$ref": "#/components/responses/error"
- }
- }
- }
- },
- "/admin.haveGithubConfigured": {
- "get": {
- "operationId": "admin-haveGithubConfigured",
- "tags": ["admin"],
- "security": [
- {
- "Authorization": []
- }
- ],
- "parameters": [],
- "responses": {
- "200": {
- "description": "Successful response",
- "content": {
- "application/json": {}
- }
- },
- "default": {
- "$ref": "#/components/responses/error"
- }
- }
- }
- },
"/docker.getContainers": {
"get": {
"operationId": "docker-getContainers",
@@ -411,6 +308,23 @@
}
],
"parameters": [
+ {
+ "name": "appType",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "anyOf": [
+ {
+ "type": "string",
+ "enum": ["stack"]
+ },
+ {
+ "type": "string",
+ "enum": ["docker-compose"]
+ }
+ ]
+ }
+ },
{
"name": "appName",
"in": "query",
@@ -1502,6 +1416,10 @@
"env": {
"type": "string",
"nullable": true
+ },
+ "buildArgs": {
+ "type": "string",
+ "nullable": true
}
},
"required": ["applicationId"],
@@ -1549,15 +1467,24 @@
"dockerfile",
"heroku_buildpacks",
"paketo_buildpacks",
- "nixpacks"
+ "nixpacks",
+ "static"
]
},
"dockerfile": {
"type": "string",
"nullable": true
+ },
+ "dockerContextPath": {
+ "type": "string",
+ "nullable": true
+ },
+ "publishDirectory": {
+ "type": "string",
+ "nullable": true
}
},
- "required": ["applicationId", "buildType"],
+ "required": ["applicationId", "buildType", "dockerContextPath"],
"additionalProperties": false
}
}
@@ -1611,9 +1538,157 @@
"buildPath": {
"type": "string",
"nullable": true
+ },
+ "githubId": {
+ "type": "string",
+ "nullable": true
}
},
- "required": ["applicationId", "owner"],
+ "required": ["applicationId", "owner", "githubId"],
+ "additionalProperties": false
+ }
+ }
+ }
+ },
+ "parameters": [],
+ "responses": {
+ "200": {
+ "description": "Successful response",
+ "content": {
+ "application/json": {}
+ }
+ },
+ "default": {
+ "$ref": "#/components/responses/error"
+ }
+ }
+ }
+ },
+ "/application.saveGitlabProvider": {
+ "post": {
+ "operationId": "application-saveGitlabProvider",
+ "tags": ["application"],
+ "security": [
+ {
+ "Authorization": []
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "applicationId": {
+ "type": "string"
+ },
+ "gitlabBranch": {
+ "type": "string",
+ "nullable": true
+ },
+ "gitlabBuildPath": {
+ "type": "string",
+ "nullable": true
+ },
+ "gitlabOwner": {
+ "type": "string",
+ "nullable": true
+ },
+ "gitlabRepository": {
+ "type": "string",
+ "nullable": true
+ },
+ "gitlabId": {
+ "type": "string",
+ "nullable": true
+ },
+ "gitlabProjectId": {
+ "type": "number",
+ "nullable": true
+ },
+ "gitlabPathNamespace": {
+ "type": "string",
+ "nullable": true
+ }
+ },
+ "required": [
+ "applicationId",
+ "gitlabBranch",
+ "gitlabBuildPath",
+ "gitlabOwner",
+ "gitlabRepository",
+ "gitlabId",
+ "gitlabProjectId",
+ "gitlabPathNamespace"
+ ],
+ "additionalProperties": false
+ }
+ }
+ }
+ },
+ "parameters": [],
+ "responses": {
+ "200": {
+ "description": "Successful response",
+ "content": {
+ "application/json": {}
+ }
+ },
+ "default": {
+ "$ref": "#/components/responses/error"
+ }
+ }
+ }
+ },
+ "/application.saveBitbucketProvider": {
+ "post": {
+ "operationId": "application-saveBitbucketProvider",
+ "tags": ["application"],
+ "security": [
+ {
+ "Authorization": []
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "bitbucketBranch": {
+ "type": "string",
+ "nullable": true
+ },
+ "bitbucketBuildPath": {
+ "type": "string",
+ "nullable": true
+ },
+ "bitbucketOwner": {
+ "type": "string",
+ "nullable": true
+ },
+ "bitbucketRepository": {
+ "type": "string",
+ "nullable": true
+ },
+ "bitbucketId": {
+ "type": "string",
+ "nullable": true
+ },
+ "applicationId": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "bitbucketBranch",
+ "bitbucketBuildPath",
+ "bitbucketOwner",
+ "bitbucketRepository",
+ "bitbucketId",
+ "applicationId"
+ ],
"additionalProperties": false
}
}
@@ -1715,86 +1790,10 @@
"customGitUrl": {
"type": "string",
"nullable": true
- }
- },
- "required": ["applicationId"],
- "additionalProperties": false
- }
- }
- }
- },
- "parameters": [],
- "responses": {
- "200": {
- "description": "Successful response",
- "content": {
- "application/json": {}
- }
- },
- "default": {
- "$ref": "#/components/responses/error"
- }
- }
- }
- },
- "/application.generateSSHKey": {
- "post": {
- "operationId": "application-generateSSHKey",
- "tags": ["application"],
- "security": [
- {
- "Authorization": []
- }
- ],
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "applicationId": {
- "type": "string"
- }
- },
- "required": ["applicationId"],
- "additionalProperties": false
- }
- }
- }
- },
- "parameters": [],
- "responses": {
- "200": {
- "description": "Successful response",
- "content": {
- "application/json": {}
- }
- },
- "default": {
- "$ref": "#/components/responses/error"
- }
- }
- }
- },
- "/application.removeSSHKey": {
- "post": {
- "operationId": "application-removeSSHKey",
- "tags": ["application"],
- "security": [
- {
- "Authorization": []
- }
- ],
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "applicationId": {
- "type": "string"
+ },
+ "customGitSSHKeyId": {
+ "type": "string",
+ "nullable": true
}
},
"required": ["applicationId"],
@@ -1892,6 +1891,10 @@
"type": "string",
"nullable": true
},
+ "buildArgs": {
+ "type": "string",
+ "nullable": true
+ },
"memoryReservation": {
"type": "number",
"nullable": true
@@ -1952,6 +1955,46 @@
"type": "boolean",
"nullable": true
},
+ "gitlabProjectId": {
+ "type": "number",
+ "nullable": true
+ },
+ "gitlabRepository": {
+ "type": "string",
+ "nullable": true
+ },
+ "gitlabOwner": {
+ "type": "string",
+ "nullable": true
+ },
+ "gitlabBranch": {
+ "type": "string",
+ "nullable": true
+ },
+ "gitlabBuildPath": {
+ "type": "string",
+ "nullable": true
+ },
+ "gitlabPathNamespace": {
+ "type": "string",
+ "nullable": true
+ },
+ "bitbucketRepository": {
+ "type": "string",
+ "nullable": true
+ },
+ "bitbucketOwner": {
+ "type": "string",
+ "nullable": true
+ },
+ "bitbucketBranch": {
+ "type": "string",
+ "nullable": true
+ },
+ "bitbucketBuildPath": {
+ "type": "string",
+ "nullable": true
+ },
"username": {
"type": "string",
"nullable": true
@@ -1976,7 +2019,7 @@
"type": "string",
"nullable": true
},
- "customGitSSHKey": {
+ "customGitSSHKeyId": {
"type": "string",
"nullable": true
},
@@ -1984,6 +2027,14 @@
"type": "string",
"nullable": true
},
+ "dockerContextPath": {
+ "type": "string",
+ "nullable": true
+ },
+ "dropBuildPath": {
+ "type": "string",
+ "nullable": true
+ },
"healthCheckSwarm": {
"type": "object",
"properties": {
@@ -2214,9 +2265,14 @@
"dockerfile",
"heroku_buildpacks",
"paketo_buildpacks",
- "nixpacks"
+ "nixpacks",
+ "static"
]
},
+ "publishDirectory": {
+ "type": "string",
+ "nullable": true
+ },
"createdAt": {
"type": "string"
},
@@ -2226,6 +2282,18 @@
},
"projectId": {
"type": "string"
+ },
+ "githubId": {
+ "type": "string",
+ "nullable": true
+ },
+ "gitlabId": {
+ "type": "string",
+ "nullable": true
+ },
+ "bitbucketId": {
+ "type": "string",
+ "nullable": true
}
},
"required": ["applicationId"],
@@ -5330,7 +5398,7 @@
},
"sourceType": {
"type": "string",
- "enum": ["git", "github", "raw"]
+ "enum": ["git", "github", "gitlab", "bitbucket", "raw"]
},
"composeType": {
"type": "string",
@@ -5352,6 +5420,38 @@
"type": "boolean",
"nullable": true
},
+ "gitlabProjectId": {
+ "type": "number",
+ "nullable": true
+ },
+ "gitlabRepository": {
+ "type": "string",
+ "nullable": true
+ },
+ "gitlabOwner": {
+ "type": "string",
+ "nullable": true
+ },
+ "gitlabBranch": {
+ "type": "string",
+ "nullable": true
+ },
+ "gitlabPathNamespace": {
+ "type": "string",
+ "nullable": true
+ },
+ "bitbucketRepository": {
+ "type": "string",
+ "nullable": true
+ },
+ "bitbucketOwner": {
+ "type": "string",
+ "nullable": true
+ },
+ "bitbucketBranch": {
+ "type": "string",
+ "nullable": true
+ },
"customGitUrl": {
"type": "string",
"nullable": true
@@ -5360,7 +5460,7 @@
"type": "string",
"nullable": true
},
- "customGitSSHKey": {
+ "customGitSSHKeyId": {
"type": "string",
"nullable": true
},
@@ -5380,6 +5480,18 @@
},
"createdAt": {
"type": "string"
+ },
+ "githubId": {
+ "type": "string",
+ "nullable": true
+ },
+ "gitlabId": {
+ "type": "string",
+ "nullable": true
+ },
+ "bitbucketId": {
+ "type": "string",
+ "nullable": true
}
},
"required": ["composeId"],
@@ -5484,9 +5596,9 @@
}
}
},
- "/compose.allServices": {
+ "/compose.loadServices": {
"get": {
- "operationId": "compose-allServices",
+ "operationId": "compose-loadServices",
"tags": ["compose"],
"security": [
{
@@ -5502,6 +5614,23 @@
"type": "string",
"minLength": 1
}
+ },
+ {
+ "name": "type",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "anyOf": [
+ {
+ "not": {}
+ },
+ {
+ "type": "string",
+ "enum": ["fetch", "cache"]
+ }
+ ],
+ "default": "cache"
+ }
}
],
"responses": {
@@ -5517,6 +5646,47 @@
}
}
},
+ "/compose.fetchSourceType": {
+ "post": {
+ "operationId": "compose-fetchSourceType",
+ "tags": ["compose"],
+ "security": [
+ {
+ "Authorization": []
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "composeId": {
+ "type": "string",
+ "minLength": 1
+ }
+ },
+ "required": ["composeId"],
+ "additionalProperties": false
+ }
+ }
+ }
+ },
+ "parameters": [],
+ "responses": {
+ "200": {
+ "description": "Successful response",
+ "content": {
+ "application/json": {}
+ }
+ },
+ "default": {
+ "$ref": "#/components/responses/error"
+ }
+ }
+ }
+ },
"/compose.randomizeCompose": {
"post": {
"operationId": "compose-randomizeCompose",
@@ -5561,6 +5731,39 @@
}
}
},
+ "/compose.getConvertedCompose": {
+ "get": {
+ "operationId": "compose-getConvertedCompose",
+ "tags": ["compose"],
+ "security": [
+ {
+ "Authorization": []
+ }
+ ],
+ "parameters": [
+ {
+ "name": "composeId",
+ "in": "query",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "minLength": 1
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Successful response",
+ "content": {
+ "application/json": {}
+ }
+ },
+ "default": {
+ "$ref": "#/components/responses/error"
+ }
+ }
+ }
+ },
"/compose.deploy": {
"post": {
"operationId": "compose-deploy",
@@ -5717,47 +5920,6 @@
}
}
},
- "/compose.generateSSHKey": {
- "post": {
- "operationId": "compose-generateSSHKey",
- "tags": ["compose"],
- "security": [
- {
- "Authorization": []
- }
- ],
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "composeId": {
- "type": "string",
- "minLength": 1
- }
- },
- "required": ["composeId"],
- "additionalProperties": false
- }
- }
- }
- },
- "parameters": [],
- "responses": {
- "200": {
- "description": "Successful response",
- "content": {
- "application/json": {}
- }
- },
- "default": {
- "$ref": "#/components/responses/error"
- }
- }
- }
- },
"/compose.refreshToken": {
"post": {
"operationId": "compose-refreshToken",
@@ -5799,47 +5961,6 @@
}
}
},
- "/compose.removeSSHKey": {
- "post": {
- "operationId": "compose-removeSSHKey",
- "tags": ["compose"],
- "security": [
- {
- "Authorization": []
- }
- ],
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "composeId": {
- "type": "string",
- "minLength": 1
- }
- },
- "required": ["composeId"],
- "additionalProperties": false
- }
- }
- }
- },
- "parameters": [],
- "responses": {
- "200": {
- "description": "Successful response",
- "content": {
- "application/json": {}
- }
- },
- "default": {
- "$ref": "#/components/responses/error"
- }
- }
- }
- },
"/compose.deployTemplate": {
"post": {
"operationId": "compose-deployTemplate",
@@ -5907,6 +6028,29 @@
}
}
},
+ "/compose.getTags": {
+ "get": {
+ "operationId": "compose-getTags",
+ "tags": ["compose"],
+ "security": [
+ {
+ "Authorization": []
+ }
+ ],
+ "parameters": [],
+ "responses": {
+ "200": {
+ "description": "Successful response",
+ "content": {
+ "application/json": {}
+ }
+ },
+ "default": {
+ "$ref": "#/components/responses/error"
+ }
+ }
+ }
+ },
"/user.all": {
"get": {
"operationId": "user-all",
@@ -6023,27 +6167,36 @@
},
"port": {
"type": "number",
+ "minimum": 1,
+ "maximum": 65535,
"nullable": true
},
"https": {
"type": "boolean"
},
"applicationId": {
- "type": "string"
+ "type": "string",
+ "nullable": true
},
"certificateType": {
"type": "string",
"enum": ["letsencrypt", "none"]
+ },
+ "composeId": {
+ "type": "string",
+ "nullable": true
+ },
+ "serviceName": {
+ "type": "string",
+ "nullable": true
+ },
+ "domainType": {
+ "type": "string",
+ "enum": ["compose", "application"],
+ "nullable": true
}
},
- "required": [
- "host",
- "path",
- "port",
- "https",
- "applicationId",
- "certificateType"
- ],
+ "required": ["host"],
"additionalProperties": false
}
}
@@ -6095,6 +6248,39 @@
}
}
},
+ "/domain.byComposeId": {
+ "get": {
+ "operationId": "domain-byComposeId",
+ "tags": ["domain"],
+ "security": [
+ {
+ "Authorization": []
+ }
+ ],
+ "parameters": [
+ {
+ "name": "composeId",
+ "in": "query",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "minLength": 1
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Successful response",
+ "content": {
+ "application/json": {}
+ }
+ },
+ "default": {
+ "$ref": "#/components/responses/error"
+ }
+ }
+ }
+ },
"/domain.generateDomain": {
"post": {
"operationId": "domain-generateDomain",
@@ -6111,51 +6297,12 @@
"schema": {
"type": "object",
"properties": {
- "applicationId": {
- "type": "string"
+ "appName": {
+ "type": "string",
+ "minLength": 1
}
},
- "required": ["applicationId"],
- "additionalProperties": false
- }
- }
- }
- },
- "parameters": [],
- "responses": {
- "200": {
- "description": "Successful response",
- "content": {
- "application/json": {}
- }
- },
- "default": {
- "$ref": "#/components/responses/error"
- }
- }
- }
- },
- "/domain.generateWildcard": {
- "post": {
- "operationId": "domain-generateWildcard",
- "tags": ["domain"],
- "security": [
- {
- "Authorization": []
- }
- ],
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "applicationId": {
- "type": "string"
- }
- },
- "required": ["applicationId"],
+ "required": ["appName"],
"additionalProperties": false
}
}
@@ -6191,10 +6338,6 @@
"schema": {
"type": "object",
"properties": {
- "domainId": {
- "type": "string",
- "minLength": 1
- },
"host": {
"type": "string",
"minLength": 1
@@ -6206,6 +6349,8 @@
},
"port": {
"type": "number",
+ "minimum": 1,
+ "maximum": 65535,
"nullable": true
},
"https": {
@@ -6214,16 +6359,21 @@
"certificateType": {
"type": "string",
"enum": ["letsencrypt", "none"]
+ },
+ "serviceName": {
+ "type": "string",
+ "nullable": true
+ },
+ "domainType": {
+ "type": "string",
+ "enum": ["compose", "application"],
+ "nullable": true
+ },
+ "domainId": {
+ "type": "string"
}
},
- "required": [
- "domainId",
- "host",
- "path",
- "port",
- "https",
- "certificateType"
- ],
+ "required": ["host", "domainId"],
"additionalProperties": false
}
}
@@ -6258,8 +6408,7 @@
"in": "query",
"required": true,
"schema": {
- "type": "string",
- "minLength": 1
+ "type": "string"
}
}
],
@@ -6293,8 +6442,7 @@
"type": "object",
"properties": {
"domainId": {
- "type": "string",
- "minLength": 1
+ "type": "string"
}
},
"required": ["domainId"],
@@ -7097,6 +7245,10 @@
],
"default": "application"
},
+ "filePath": {
+ "type": "string",
+ "nullable": true
+ },
"serviceId": {
"type": "string",
"minLength": 1
@@ -7226,6 +7378,10 @@
"type": "string",
"nullable": true
},
+ "filePath": {
+ "type": "string",
+ "nullable": true
+ },
"content": {
"type": "string",
"nullable": true
@@ -7498,6 +7654,45 @@
}
}
},
+ "/settings.toggleDashboard": {
+ "post": {
+ "operationId": "settings-toggleDashboard",
+ "tags": ["settings"],
+ "security": [
+ {
+ "Authorization": []
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "enableDashboard": {
+ "type": "boolean"
+ }
+ },
+ "additionalProperties": false
+ }
+ }
+ }
+ },
+ "parameters": [],
+ "responses": {
+ "200": {
+ "description": "Successful response",
+ "content": {
+ "application/json": {}
+ }
+ },
+ "default": {
+ "$ref": "#/components/responses/error"
+ }
+ }
+ }
+ },
"/settings.cleanUnusedImages": {
"post": {
"operationId": "settings-cleanUnusedImages",
@@ -8174,6 +8369,29 @@
}
}
},
+ "/settings.getIp": {
+ "get": {
+ "operationId": "settings-getIp",
+ "tags": ["settings"],
+ "security": [
+ {
+ "Authorization": []
+ }
+ ],
+ "parameters": [],
+ "responses": {
+ "200": {
+ "description": "Successful response",
+ "content": {
+ "application/json": {}
+ }
+ },
+ "default": {
+ "$ref": "#/components/responses/error"
+ }
+ }
+ }
+ },
"/settings.getOpenApiDocument": {
"get": {
"operationId": "settings-getOpenApiDocument",
@@ -8197,6 +8415,92 @@
}
}
},
+ "/settings.readTraefikEnv": {
+ "get": {
+ "operationId": "settings-readTraefikEnv",
+ "tags": ["settings"],
+ "security": [
+ {
+ "Authorization": []
+ }
+ ],
+ "parameters": [],
+ "responses": {
+ "200": {
+ "description": "Successful response",
+ "content": {
+ "application/json": {}
+ }
+ },
+ "default": {
+ "$ref": "#/components/responses/error"
+ }
+ }
+ }
+ },
+ "/settings.writeTraefikEnv": {
+ "post": {
+ "operationId": "settings-writeTraefikEnv",
+ "tags": ["settings"],
+ "security": [
+ {
+ "Authorization": []
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "env": {
+ "type": "string"
+ }
+ },
+ "required": ["env"],
+ "additionalProperties": false
+ }
+ }
+ }
+ },
+ "parameters": [],
+ "responses": {
+ "200": {
+ "description": "Successful response",
+ "content": {
+ "application/json": {}
+ }
+ },
+ "default": {
+ "$ref": "#/components/responses/error"
+ }
+ }
+ }
+ },
+ "/settings.haveTraefikDashboardPortEnabled": {
+ "get": {
+ "operationId": "settings-haveTraefikDashboardPortEnabled",
+ "tags": ["settings"],
+ "security": [
+ {
+ "Authorization": []
+ }
+ ],
+ "parameters": [],
+ "responses": {
+ "200": {
+ "description": "Successful response",
+ "content": {
+ "application/json": {}
+ }
+ },
+ "default": {
+ "$ref": "#/components/responses/error"
+ }
+ }
+ }
+ },
"/security.create": {
"post": {
"operationId": "security-create",
@@ -9187,6 +9491,2099 @@
}
}
}
+ },
+ "/notification.createSlack": {
+ "post": {
+ "operationId": "notification-createSlack",
+ "tags": ["notification"],
+ "security": [
+ {
+ "Authorization": []
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "appBuildError": {
+ "type": "boolean"
+ },
+ "databaseBackup": {
+ "type": "boolean"
+ },
+ "dokployRestart": {
+ "type": "boolean"
+ },
+ "name": {
+ "type": "string"
+ },
+ "appDeploy": {
+ "type": "boolean"
+ },
+ "dockerCleanup": {
+ "type": "boolean"
+ },
+ "webhookUrl": {
+ "type": "string",
+ "minLength": 1
+ },
+ "channel": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "appBuildError",
+ "databaseBackup",
+ "dokployRestart",
+ "name",
+ "appDeploy",
+ "dockerCleanup",
+ "webhookUrl",
+ "channel"
+ ],
+ "additionalProperties": false
+ }
+ }
+ }
+ },
+ "parameters": [],
+ "responses": {
+ "200": {
+ "description": "Successful response",
+ "content": {
+ "application/json": {}
+ }
+ },
+ "default": {
+ "$ref": "#/components/responses/error"
+ }
+ }
+ }
+ },
+ "/notification.updateSlack": {
+ "post": {
+ "operationId": "notification-updateSlack",
+ "tags": ["notification"],
+ "security": [
+ {
+ "Authorization": []
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "appBuildError": {
+ "type": "boolean"
+ },
+ "databaseBackup": {
+ "type": "boolean"
+ },
+ "dokployRestart": {
+ "type": "boolean"
+ },
+ "name": {
+ "type": "string"
+ },
+ "appDeploy": {
+ "type": "boolean"
+ },
+ "dockerCleanup": {
+ "type": "boolean"
+ },
+ "webhookUrl": {
+ "type": "string",
+ "minLength": 1
+ },
+ "channel": {
+ "type": "string"
+ },
+ "notificationId": {
+ "type": "string",
+ "minLength": 1
+ },
+ "slackId": {
+ "type": "string"
+ }
+ },
+ "required": ["notificationId", "slackId"],
+ "additionalProperties": false
+ }
+ }
+ }
+ },
+ "parameters": [],
+ "responses": {
+ "200": {
+ "description": "Successful response",
+ "content": {
+ "application/json": {}
+ }
+ },
+ "default": {
+ "$ref": "#/components/responses/error"
+ }
+ }
+ }
+ },
+ "/notification.testSlackConnection": {
+ "post": {
+ "operationId": "notification-testSlackConnection",
+ "tags": ["notification"],
+ "security": [
+ {
+ "Authorization": []
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "webhookUrl": {
+ "type": "string",
+ "minLength": 1
+ },
+ "channel": {
+ "type": "string"
+ }
+ },
+ "required": ["webhookUrl", "channel"],
+ "additionalProperties": false
+ }
+ }
+ }
+ },
+ "parameters": [],
+ "responses": {
+ "200": {
+ "description": "Successful response",
+ "content": {
+ "application/json": {}
+ }
+ },
+ "default": {
+ "$ref": "#/components/responses/error"
+ }
+ }
+ }
+ },
+ "/notification.createTelegram": {
+ "post": {
+ "operationId": "notification-createTelegram",
+ "tags": ["notification"],
+ "security": [
+ {
+ "Authorization": []
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "appBuildError": {
+ "type": "boolean"
+ },
+ "databaseBackup": {
+ "type": "boolean"
+ },
+ "dokployRestart": {
+ "type": "boolean"
+ },
+ "name": {
+ "type": "string"
+ },
+ "appDeploy": {
+ "type": "boolean"
+ },
+ "dockerCleanup": {
+ "type": "boolean"
+ },
+ "botToken": {
+ "type": "string",
+ "minLength": 1
+ },
+ "chatId": {
+ "type": "string",
+ "minLength": 1
+ }
+ },
+ "required": [
+ "appBuildError",
+ "databaseBackup",
+ "dokployRestart",
+ "name",
+ "appDeploy",
+ "dockerCleanup",
+ "botToken",
+ "chatId"
+ ],
+ "additionalProperties": false
+ }
+ }
+ }
+ },
+ "parameters": [],
+ "responses": {
+ "200": {
+ "description": "Successful response",
+ "content": {
+ "application/json": {}
+ }
+ },
+ "default": {
+ "$ref": "#/components/responses/error"
+ }
+ }
+ }
+ },
+ "/notification.updateTelegram": {
+ "post": {
+ "operationId": "notification-updateTelegram",
+ "tags": ["notification"],
+ "security": [
+ {
+ "Authorization": []
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "appBuildError": {
+ "type": "boolean"
+ },
+ "databaseBackup": {
+ "type": "boolean"
+ },
+ "dokployRestart": {
+ "type": "boolean"
+ },
+ "name": {
+ "type": "string"
+ },
+ "appDeploy": {
+ "type": "boolean"
+ },
+ "dockerCleanup": {
+ "type": "boolean"
+ },
+ "botToken": {
+ "type": "string",
+ "minLength": 1
+ },
+ "chatId": {
+ "type": "string",
+ "minLength": 1
+ },
+ "notificationId": {
+ "type": "string",
+ "minLength": 1
+ },
+ "telegramId": {
+ "type": "string",
+ "minLength": 1
+ }
+ },
+ "required": ["notificationId", "telegramId"],
+ "additionalProperties": false
+ }
+ }
+ }
+ },
+ "parameters": [],
+ "responses": {
+ "200": {
+ "description": "Successful response",
+ "content": {
+ "application/json": {}
+ }
+ },
+ "default": {
+ "$ref": "#/components/responses/error"
+ }
+ }
+ }
+ },
+ "/notification.testTelegramConnection": {
+ "post": {
+ "operationId": "notification-testTelegramConnection",
+ "tags": ["notification"],
+ "security": [
+ {
+ "Authorization": []
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "botToken": {
+ "type": "string",
+ "minLength": 1
+ },
+ "chatId": {
+ "type": "string",
+ "minLength": 1
+ }
+ },
+ "required": ["botToken", "chatId"],
+ "additionalProperties": false
+ }
+ }
+ }
+ },
+ "parameters": [],
+ "responses": {
+ "200": {
+ "description": "Successful response",
+ "content": {
+ "application/json": {}
+ }
+ },
+ "default": {
+ "$ref": "#/components/responses/error"
+ }
+ }
+ }
+ },
+ "/notification.createDiscord": {
+ "post": {
+ "operationId": "notification-createDiscord",
+ "tags": ["notification"],
+ "security": [
+ {
+ "Authorization": []
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "appBuildError": {
+ "type": "boolean"
+ },
+ "databaseBackup": {
+ "type": "boolean"
+ },
+ "dokployRestart": {
+ "type": "boolean"
+ },
+ "name": {
+ "type": "string"
+ },
+ "appDeploy": {
+ "type": "boolean"
+ },
+ "dockerCleanup": {
+ "type": "boolean"
+ },
+ "webhookUrl": {
+ "type": "string",
+ "minLength": 1
+ }
+ },
+ "required": [
+ "appBuildError",
+ "databaseBackup",
+ "dokployRestart",
+ "name",
+ "appDeploy",
+ "dockerCleanup",
+ "webhookUrl"
+ ],
+ "additionalProperties": false
+ }
+ }
+ }
+ },
+ "parameters": [],
+ "responses": {
+ "200": {
+ "description": "Successful response",
+ "content": {
+ "application/json": {}
+ }
+ },
+ "default": {
+ "$ref": "#/components/responses/error"
+ }
+ }
+ }
+ },
+ "/notification.updateDiscord": {
+ "post": {
+ "operationId": "notification-updateDiscord",
+ "tags": ["notification"],
+ "security": [
+ {
+ "Authorization": []
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "appBuildError": {
+ "type": "boolean"
+ },
+ "databaseBackup": {
+ "type": "boolean"
+ },
+ "dokployRestart": {
+ "type": "boolean"
+ },
+ "name": {
+ "type": "string"
+ },
+ "appDeploy": {
+ "type": "boolean"
+ },
+ "dockerCleanup": {
+ "type": "boolean"
+ },
+ "webhookUrl": {
+ "type": "string",
+ "minLength": 1
+ },
+ "notificationId": {
+ "type": "string",
+ "minLength": 1
+ },
+ "discordId": {
+ "type": "string",
+ "minLength": 1
+ }
+ },
+ "required": ["notificationId", "discordId"],
+ "additionalProperties": false
+ }
+ }
+ }
+ },
+ "parameters": [],
+ "responses": {
+ "200": {
+ "description": "Successful response",
+ "content": {
+ "application/json": {}
+ }
+ },
+ "default": {
+ "$ref": "#/components/responses/error"
+ }
+ }
+ }
+ },
+ "/notification.testDiscordConnection": {
+ "post": {
+ "operationId": "notification-testDiscordConnection",
+ "tags": ["notification"],
+ "security": [
+ {
+ "Authorization": []
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "webhookUrl": {
+ "type": "string",
+ "minLength": 1
+ }
+ },
+ "required": ["webhookUrl"],
+ "additionalProperties": false
+ }
+ }
+ }
+ },
+ "parameters": [],
+ "responses": {
+ "200": {
+ "description": "Successful response",
+ "content": {
+ "application/json": {}
+ }
+ },
+ "default": {
+ "$ref": "#/components/responses/error"
+ }
+ }
+ }
+ },
+ "/notification.createEmail": {
+ "post": {
+ "operationId": "notification-createEmail",
+ "tags": ["notification"],
+ "security": [
+ {
+ "Authorization": []
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "appBuildError": {
+ "type": "boolean"
+ },
+ "databaseBackup": {
+ "type": "boolean"
+ },
+ "dokployRestart": {
+ "type": "boolean"
+ },
+ "name": {
+ "type": "string"
+ },
+ "appDeploy": {
+ "type": "boolean"
+ },
+ "dockerCleanup": {
+ "type": "boolean"
+ },
+ "smtpServer": {
+ "type": "string",
+ "minLength": 1
+ },
+ "smtpPort": {
+ "type": "number",
+ "minimum": 1
+ },
+ "username": {
+ "type": "string",
+ "minLength": 1
+ },
+ "password": {
+ "type": "string",
+ "minLength": 1
+ },
+ "fromAddress": {
+ "type": "string",
+ "minLength": 1
+ },
+ "toAddresses": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "minItems": 1
+ }
+ },
+ "required": [
+ "appBuildError",
+ "databaseBackup",
+ "dokployRestart",
+ "name",
+ "appDeploy",
+ "dockerCleanup",
+ "smtpServer",
+ "smtpPort",
+ "username",
+ "password",
+ "fromAddress",
+ "toAddresses"
+ ],
+ "additionalProperties": false
+ }
+ }
+ }
+ },
+ "parameters": [],
+ "responses": {
+ "200": {
+ "description": "Successful response",
+ "content": {
+ "application/json": {}
+ }
+ },
+ "default": {
+ "$ref": "#/components/responses/error"
+ }
+ }
+ }
+ },
+ "/notification.updateEmail": {
+ "post": {
+ "operationId": "notification-updateEmail",
+ "tags": ["notification"],
+ "security": [
+ {
+ "Authorization": []
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "appBuildError": {
+ "type": "boolean"
+ },
+ "databaseBackup": {
+ "type": "boolean"
+ },
+ "dokployRestart": {
+ "type": "boolean"
+ },
+ "name": {
+ "type": "string"
+ },
+ "appDeploy": {
+ "type": "boolean"
+ },
+ "dockerCleanup": {
+ "type": "boolean"
+ },
+ "smtpServer": {
+ "type": "string",
+ "minLength": 1
+ },
+ "smtpPort": {
+ "type": "number",
+ "minimum": 1
+ },
+ "username": {
+ "type": "string",
+ "minLength": 1
+ },
+ "password": {
+ "type": "string",
+ "minLength": 1
+ },
+ "fromAddress": {
+ "type": "string",
+ "minLength": 1
+ },
+ "toAddresses": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "minItems": 1
+ },
+ "notificationId": {
+ "type": "string",
+ "minLength": 1
+ },
+ "emailId": {
+ "type": "string",
+ "minLength": 1
+ }
+ },
+ "required": ["notificationId", "emailId"],
+ "additionalProperties": false
+ }
+ }
+ }
+ },
+ "parameters": [],
+ "responses": {
+ "200": {
+ "description": "Successful response",
+ "content": {
+ "application/json": {}
+ }
+ },
+ "default": {
+ "$ref": "#/components/responses/error"
+ }
+ }
+ }
+ },
+ "/notification.testEmailConnection": {
+ "post": {
+ "operationId": "notification-testEmailConnection",
+ "tags": ["notification"],
+ "security": [
+ {
+ "Authorization": []
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "smtpServer": {
+ "type": "string",
+ "minLength": 1
+ },
+ "smtpPort": {
+ "type": "number",
+ "minimum": 1
+ },
+ "username": {
+ "type": "string",
+ "minLength": 1
+ },
+ "password": {
+ "type": "string",
+ "minLength": 1
+ },
+ "toAddresses": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "minItems": 1
+ },
+ "fromAddress": {
+ "type": "string",
+ "minLength": 1
+ }
+ },
+ "required": [
+ "smtpServer",
+ "smtpPort",
+ "username",
+ "password",
+ "toAddresses",
+ "fromAddress"
+ ],
+ "additionalProperties": false
+ }
+ }
+ }
+ },
+ "parameters": [],
+ "responses": {
+ "200": {
+ "description": "Successful response",
+ "content": {
+ "application/json": {}
+ }
+ },
+ "default": {
+ "$ref": "#/components/responses/error"
+ }
+ }
+ }
+ },
+ "/notification.remove": {
+ "post": {
+ "operationId": "notification-remove",
+ "tags": ["notification"],
+ "security": [
+ {
+ "Authorization": []
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "notificationId": {
+ "type": "string"
+ }
+ },
+ "required": ["notificationId"],
+ "additionalProperties": false
+ }
+ }
+ }
+ },
+ "parameters": [],
+ "responses": {
+ "200": {
+ "description": "Successful response",
+ "content": {
+ "application/json": {}
+ }
+ },
+ "default": {
+ "$ref": "#/components/responses/error"
+ }
+ }
+ }
+ },
+ "/notification.one": {
+ "get": {
+ "operationId": "notification-one",
+ "tags": ["notification"],
+ "security": [
+ {
+ "Authorization": []
+ }
+ ],
+ "parameters": [
+ {
+ "name": "notificationId",
+ "in": "query",
+ "required": true,
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Successful response",
+ "content": {
+ "application/json": {}
+ }
+ },
+ "default": {
+ "$ref": "#/components/responses/error"
+ }
+ }
+ }
+ },
+ "/notification.all": {
+ "get": {
+ "operationId": "notification-all",
+ "tags": ["notification"],
+ "security": [
+ {
+ "Authorization": []
+ }
+ ],
+ "parameters": [],
+ "responses": {
+ "200": {
+ "description": "Successful response",
+ "content": {
+ "application/json": {}
+ }
+ },
+ "default": {
+ "$ref": "#/components/responses/error"
+ }
+ }
+ }
+ },
+ "/sshKey.create": {
+ "post": {
+ "operationId": "sshKey-create",
+ "tags": ["sshKey"],
+ "security": [
+ {
+ "Authorization": []
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "minLength": 1
+ },
+ "description": {
+ "type": "string",
+ "nullable": true
+ },
+ "publicKey": {
+ "type": "string"
+ },
+ "privateKey": {
+ "type": "string"
+ }
+ },
+ "required": ["name", "publicKey", "privateKey"],
+ "additionalProperties": false
+ }
+ }
+ }
+ },
+ "parameters": [],
+ "responses": {
+ "200": {
+ "description": "Successful response",
+ "content": {
+ "application/json": {}
+ }
+ },
+ "default": {
+ "$ref": "#/components/responses/error"
+ }
+ }
+ }
+ },
+ "/sshKey.remove": {
+ "post": {
+ "operationId": "sshKey-remove",
+ "tags": ["sshKey"],
+ "security": [
+ {
+ "Authorization": []
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "sshKeyId": {
+ "type": "string"
+ }
+ },
+ "required": ["sshKeyId"],
+ "additionalProperties": false
+ }
+ }
+ }
+ },
+ "parameters": [],
+ "responses": {
+ "200": {
+ "description": "Successful response",
+ "content": {
+ "application/json": {}
+ }
+ },
+ "default": {
+ "$ref": "#/components/responses/error"
+ }
+ }
+ }
+ },
+ "/sshKey.one": {
+ "get": {
+ "operationId": "sshKey-one",
+ "tags": ["sshKey"],
+ "security": [
+ {
+ "Authorization": []
+ }
+ ],
+ "parameters": [
+ {
+ "name": "sshKeyId",
+ "in": "query",
+ "required": true,
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Successful response",
+ "content": {
+ "application/json": {}
+ }
+ },
+ "default": {
+ "$ref": "#/components/responses/error"
+ }
+ }
+ }
+ },
+ "/sshKey.all": {
+ "get": {
+ "operationId": "sshKey-all",
+ "tags": ["sshKey"],
+ "security": [
+ {
+ "Authorization": []
+ }
+ ],
+ "parameters": [],
+ "responses": {
+ "200": {
+ "description": "Successful response",
+ "content": {
+ "application/json": {}
+ }
+ },
+ "default": {
+ "$ref": "#/components/responses/error"
+ }
+ }
+ }
+ },
+ "/sshKey.generate": {
+ "post": {
+ "operationId": "sshKey-generate",
+ "tags": ["sshKey"],
+ "security": [
+ {
+ "Authorization": []
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "type": {
+ "type": "string",
+ "enum": ["rsa", "ed25519"]
+ }
+ },
+ "additionalProperties": false
+ }
+ }
+ }
+ },
+ "parameters": [],
+ "responses": {
+ "200": {
+ "description": "Successful response",
+ "content": {
+ "application/json": {}
+ }
+ },
+ "default": {
+ "$ref": "#/components/responses/error"
+ }
+ }
+ }
+ },
+ "/sshKey.update": {
+ "post": {
+ "operationId": "sshKey-update",
+ "tags": ["sshKey"],
+ "security": [
+ {
+ "Authorization": []
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "minLength": 1
+ },
+ "description": {
+ "type": "string",
+ "nullable": true
+ },
+ "lastUsedAt": {
+ "type": "string",
+ "nullable": true
+ },
+ "sshKeyId": {
+ "type": "string"
+ }
+ },
+ "required": ["sshKeyId"],
+ "additionalProperties": false
+ }
+ }
+ }
+ },
+ "parameters": [],
+ "responses": {
+ "200": {
+ "description": "Successful response",
+ "content": {
+ "application/json": {}
+ }
+ },
+ "default": {
+ "$ref": "#/components/responses/error"
+ }
+ }
+ }
+ },
+ "/gitProvider.getAll": {
+ "get": {
+ "operationId": "gitProvider-getAll",
+ "tags": ["gitProvider"],
+ "security": [
+ {
+ "Authorization": []
+ }
+ ],
+ "parameters": [],
+ "responses": {
+ "200": {
+ "description": "Successful response",
+ "content": {
+ "application/json": {}
+ }
+ },
+ "default": {
+ "$ref": "#/components/responses/error"
+ }
+ }
+ }
+ },
+ "/gitProvider.remove": {
+ "post": {
+ "operationId": "gitProvider-remove",
+ "tags": ["gitProvider"],
+ "security": [
+ {
+ "Authorization": []
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "gitProviderId": {
+ "type": "string",
+ "minLength": 1
+ }
+ },
+ "required": ["gitProviderId"],
+ "additionalProperties": false
+ }
+ }
+ }
+ },
+ "parameters": [],
+ "responses": {
+ "200": {
+ "description": "Successful response",
+ "content": {
+ "application/json": {}
+ }
+ },
+ "default": {
+ "$ref": "#/components/responses/error"
+ }
+ }
+ }
+ },
+ "/bitbucket.create": {
+ "post": {
+ "operationId": "bitbucket-create",
+ "tags": ["bitbucket"],
+ "security": [
+ {
+ "Authorization": []
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "bitbucketId": {
+ "type": "string"
+ },
+ "bitbucketUsername": {
+ "type": "string"
+ },
+ "appPassword": {
+ "type": "string"
+ },
+ "bitbucketWorkspaceName": {
+ "type": "string"
+ },
+ "gitProviderId": {
+ "type": "string"
+ },
+ "authId": {
+ "type": "string",
+ "minLength": 1
+ },
+ "name": {
+ "type": "string",
+ "minLength": 1
+ }
+ },
+ "required": ["authId", "name"],
+ "additionalProperties": false
+ }
+ }
+ }
+ },
+ "parameters": [],
+ "responses": {
+ "200": {
+ "description": "Successful response",
+ "content": {
+ "application/json": {}
+ }
+ },
+ "default": {
+ "$ref": "#/components/responses/error"
+ }
+ }
+ }
+ },
+ "/bitbucket.one": {
+ "get": {
+ "operationId": "bitbucket-one",
+ "tags": ["bitbucket"],
+ "security": [
+ {
+ "Authorization": []
+ }
+ ],
+ "parameters": [
+ {
+ "name": "bitbucketId",
+ "in": "query",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "minLength": 1
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Successful response",
+ "content": {
+ "application/json": {}
+ }
+ },
+ "default": {
+ "$ref": "#/components/responses/error"
+ }
+ }
+ }
+ },
+ "/bitbucket.bitbucketProviders": {
+ "get": {
+ "operationId": "bitbucket-bitbucketProviders",
+ "tags": ["bitbucket"],
+ "security": [
+ {
+ "Authorization": []
+ }
+ ],
+ "parameters": [],
+ "responses": {
+ "200": {
+ "description": "Successful response",
+ "content": {
+ "application/json": {}
+ }
+ },
+ "default": {
+ "$ref": "#/components/responses/error"
+ }
+ }
+ }
+ },
+ "/bitbucket.getBitbucketRepositories": {
+ "get": {
+ "operationId": "bitbucket-getBitbucketRepositories",
+ "tags": ["bitbucket"],
+ "security": [
+ {
+ "Authorization": []
+ }
+ ],
+ "parameters": [
+ {
+ "name": "bitbucketId",
+ "in": "query",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "minLength": 1
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Successful response",
+ "content": {
+ "application/json": {}
+ }
+ },
+ "default": {
+ "$ref": "#/components/responses/error"
+ }
+ }
+ }
+ },
+ "/bitbucket.getBitbucketBranches": {
+ "get": {
+ "operationId": "bitbucket-getBitbucketBranches",
+ "tags": ["bitbucket"],
+ "security": [
+ {
+ "Authorization": []
+ }
+ ],
+ "parameters": [
+ {
+ "name": "owner",
+ "in": "query",
+ "required": true,
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "repo",
+ "in": "query",
+ "required": true,
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "bitbucketId",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Successful response",
+ "content": {
+ "application/json": {}
+ }
+ },
+ "default": {
+ "$ref": "#/components/responses/error"
+ }
+ }
+ }
+ },
+ "/bitbucket.testConnection": {
+ "post": {
+ "operationId": "bitbucket-testConnection",
+ "tags": ["bitbucket"],
+ "security": [
+ {
+ "Authorization": []
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "bitbucketId": {
+ "type": "string",
+ "minLength": 1
+ },
+ "bitbucketUsername": {
+ "type": "string"
+ },
+ "workspaceName": {
+ "type": "string"
+ }
+ },
+ "required": ["bitbucketId"],
+ "additionalProperties": false
+ }
+ }
+ }
+ },
+ "parameters": [],
+ "responses": {
+ "200": {
+ "description": "Successful response",
+ "content": {
+ "application/json": {}
+ }
+ },
+ "default": {
+ "$ref": "#/components/responses/error"
+ }
+ }
+ }
+ },
+ "/bitbucket.update": {
+ "post": {
+ "operationId": "bitbucket-update",
+ "tags": ["bitbucket"],
+ "security": [
+ {
+ "Authorization": []
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "bitbucketId": {
+ "type": "string",
+ "minLength": 1
+ },
+ "bitbucketUsername": {
+ "type": "string"
+ },
+ "appPassword": {
+ "type": "string",
+ "nullable": true
+ },
+ "bitbucketWorkspaceName": {
+ "type": "string"
+ },
+ "gitProviderId": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string",
+ "minLength": 1
+ }
+ },
+ "required": ["bitbucketId", "gitProviderId", "name"],
+ "additionalProperties": false
+ }
+ }
+ }
+ },
+ "parameters": [],
+ "responses": {
+ "200": {
+ "description": "Successful response",
+ "content": {
+ "application/json": {}
+ }
+ },
+ "default": {
+ "$ref": "#/components/responses/error"
+ }
+ }
+ }
+ },
+ "/gitlab.create": {
+ "post": {
+ "operationId": "gitlab-create",
+ "tags": ["gitlab"],
+ "security": [
+ {
+ "Authorization": []
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "gitlabId": {
+ "type": "string"
+ },
+ "applicationId": {
+ "type": "string"
+ },
+ "redirectUri": {
+ "type": "string"
+ },
+ "secret": {
+ "type": "string"
+ },
+ "accessToken": {
+ "type": "string",
+ "nullable": true
+ },
+ "refreshToken": {
+ "type": "string",
+ "nullable": true
+ },
+ "groupName": {
+ "type": "string"
+ },
+ "expiresAt": {
+ "type": "number",
+ "nullable": true
+ },
+ "gitProviderId": {
+ "type": "string"
+ },
+ "authId": {
+ "type": "string",
+ "minLength": 1
+ },
+ "name": {
+ "type": "string",
+ "minLength": 1
+ }
+ },
+ "required": ["authId", "name"],
+ "additionalProperties": false
+ }
+ }
+ }
+ },
+ "parameters": [],
+ "responses": {
+ "200": {
+ "description": "Successful response",
+ "content": {
+ "application/json": {}
+ }
+ },
+ "default": {
+ "$ref": "#/components/responses/error"
+ }
+ }
+ }
+ },
+ "/gitlab.one": {
+ "get": {
+ "operationId": "gitlab-one",
+ "tags": ["gitlab"],
+ "security": [
+ {
+ "Authorization": []
+ }
+ ],
+ "parameters": [
+ {
+ "name": "gitlabId",
+ "in": "query",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "minLength": 1
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Successful response",
+ "content": {
+ "application/json": {}
+ }
+ },
+ "default": {
+ "$ref": "#/components/responses/error"
+ }
+ }
+ }
+ },
+ "/gitlab.gitlabProviders": {
+ "get": {
+ "operationId": "gitlab-gitlabProviders",
+ "tags": ["gitlab"],
+ "security": [
+ {
+ "Authorization": []
+ }
+ ],
+ "parameters": [],
+ "responses": {
+ "200": {
+ "description": "Successful response",
+ "content": {
+ "application/json": {}
+ }
+ },
+ "default": {
+ "$ref": "#/components/responses/error"
+ }
+ }
+ }
+ },
+ "/gitlab.getGitlabRepositories": {
+ "get": {
+ "operationId": "gitlab-getGitlabRepositories",
+ "tags": ["gitlab"],
+ "security": [
+ {
+ "Authorization": []
+ }
+ ],
+ "parameters": [
+ {
+ "name": "gitlabId",
+ "in": "query",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "minLength": 1
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Successful response",
+ "content": {
+ "application/json": {}
+ }
+ },
+ "default": {
+ "$ref": "#/components/responses/error"
+ }
+ }
+ }
+ },
+ "/gitlab.getGitlabBranches": {
+ "get": {
+ "operationId": "gitlab-getGitlabBranches",
+ "tags": ["gitlab"],
+ "security": [
+ {
+ "Authorization": []
+ }
+ ],
+ "parameters": [
+ {
+ "name": "id",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "number"
+ }
+ },
+ {
+ "name": "owner",
+ "in": "query",
+ "required": true,
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "repo",
+ "in": "query",
+ "required": true,
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "gitlabId",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Successful response",
+ "content": {
+ "application/json": {}
+ }
+ },
+ "default": {
+ "$ref": "#/components/responses/error"
+ }
+ }
+ }
+ },
+ "/gitlab.testConnection": {
+ "post": {
+ "operationId": "gitlab-testConnection",
+ "tags": ["gitlab"],
+ "security": [
+ {
+ "Authorization": []
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "gitlabId": {
+ "type": "string"
+ },
+ "groupName": {
+ "type": "string"
+ }
+ },
+ "additionalProperties": false
+ }
+ }
+ }
+ },
+ "parameters": [],
+ "responses": {
+ "200": {
+ "description": "Successful response",
+ "content": {
+ "application/json": {}
+ }
+ },
+ "default": {
+ "$ref": "#/components/responses/error"
+ }
+ }
+ }
+ },
+ "/gitlab.update": {
+ "post": {
+ "operationId": "gitlab-update",
+ "tags": ["gitlab"],
+ "security": [
+ {
+ "Authorization": []
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "gitlabId": {
+ "type": "string",
+ "minLength": 1
+ },
+ "applicationId": {
+ "type": "string"
+ },
+ "redirectUri": {
+ "type": "string"
+ },
+ "secret": {
+ "type": "string"
+ },
+ "accessToken": {
+ "type": "string",
+ "nullable": true
+ },
+ "refreshToken": {
+ "type": "string",
+ "nullable": true
+ },
+ "groupName": {
+ "type": "string"
+ },
+ "expiresAt": {
+ "type": "number",
+ "nullable": true
+ },
+ "gitProviderId": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string",
+ "minLength": 1
+ }
+ },
+ "required": ["gitlabId", "gitProviderId", "name"],
+ "additionalProperties": false
+ }
+ }
+ }
+ },
+ "parameters": [],
+ "responses": {
+ "200": {
+ "description": "Successful response",
+ "content": {
+ "application/json": {}
+ }
+ },
+ "default": {
+ "$ref": "#/components/responses/error"
+ }
+ }
+ }
+ },
+ "/github.one": {
+ "get": {
+ "operationId": "github-one",
+ "tags": ["github"],
+ "security": [
+ {
+ "Authorization": []
+ }
+ ],
+ "parameters": [
+ {
+ "name": "githubId",
+ "in": "query",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "minLength": 1
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Successful response",
+ "content": {
+ "application/json": {}
+ }
+ },
+ "default": {
+ "$ref": "#/components/responses/error"
+ }
+ }
+ }
+ },
+ "/github.getGithubRepositories": {
+ "get": {
+ "operationId": "github-getGithubRepositories",
+ "tags": ["github"],
+ "security": [
+ {
+ "Authorization": []
+ }
+ ],
+ "parameters": [
+ {
+ "name": "githubId",
+ "in": "query",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "minLength": 1
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Successful response",
+ "content": {
+ "application/json": {}
+ }
+ },
+ "default": {
+ "$ref": "#/components/responses/error"
+ }
+ }
+ }
+ },
+ "/github.getGithubBranches": {
+ "get": {
+ "operationId": "github-getGithubBranches",
+ "tags": ["github"],
+ "security": [
+ {
+ "Authorization": []
+ }
+ ],
+ "parameters": [
+ {
+ "name": "repo",
+ "in": "query",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "minLength": 1
+ }
+ },
+ {
+ "name": "owner",
+ "in": "query",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "minLength": 1
+ }
+ },
+ {
+ "name": "githubId",
+ "in": "query",
+ "required": false,
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Successful response",
+ "content": {
+ "application/json": {}
+ }
+ },
+ "default": {
+ "$ref": "#/components/responses/error"
+ }
+ }
+ }
+ },
+ "/github.githubProviders": {
+ "get": {
+ "operationId": "github-githubProviders",
+ "tags": ["github"],
+ "security": [
+ {
+ "Authorization": []
+ }
+ ],
+ "parameters": [],
+ "responses": {
+ "200": {
+ "description": "Successful response",
+ "content": {
+ "application/json": {}
+ }
+ },
+ "default": {
+ "$ref": "#/components/responses/error"
+ }
+ }
+ }
+ },
+ "/github.testConnection": {
+ "post": {
+ "operationId": "github-testConnection",
+ "tags": ["github"],
+ "security": [
+ {
+ "Authorization": []
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "githubId": {
+ "type": "string",
+ "minLength": 1
+ }
+ },
+ "required": ["githubId"],
+ "additionalProperties": false
+ }
+ }
+ }
+ },
+ "parameters": [],
+ "responses": {
+ "200": {
+ "description": "Successful response",
+ "content": {
+ "application/json": {}
+ }
+ },
+ "default": {
+ "$ref": "#/components/responses/error"
+ }
+ }
+ }
+ },
+ "/github.update": {
+ "post": {
+ "operationId": "github-update",
+ "tags": ["github"],
+ "security": [
+ {
+ "Authorization": []
+ }
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "githubId": {
+ "type": "string",
+ "minLength": 1
+ },
+ "githubAppName": {
+ "type": "string",
+ "nullable": true
+ },
+ "githubAppId": {
+ "type": "number",
+ "nullable": true
+ },
+ "githubClientId": {
+ "type": "string",
+ "nullable": true
+ },
+ "githubClientSecret": {
+ "type": "string",
+ "nullable": true
+ },
+ "githubInstallationId": {
+ "type": "string",
+ "nullable": true
+ },
+ "githubPrivateKey": {
+ "type": "string",
+ "nullable": true
+ },
+ "githubWebhookSecret": {
+ "type": "string",
+ "nullable": true
+ },
+ "gitProviderId": {
+ "type": "string",
+ "minLength": 1
+ },
+ "name": {
+ "type": "string",
+ "minLength": 1
+ }
+ },
+ "required": ["githubId", "gitProviderId", "name"],
+ "additionalProperties": false
+ }
+ }
+ }
+ },
+ "parameters": [],
+ "responses": {
+ "200": {
+ "description": "Successful response",
+ "content": {
+ "application/json": {}
+ }
+ },
+ "default": {
+ "$ref": "#/components/responses/error"
+ }
+ }
+ }
}
},
"components": {
@@ -9301,6 +11698,21 @@
},
{
"name": "mariadb"
+ },
+ {
+ "name": "sshRouter"
+ },
+ {
+ "name": "gitProvider"
+ },
+ {
+ "name": "bitbucket"
+ },
+ {
+ "name": "github"
+ },
+ {
+ "name": "gitlab"
}
],
"externalDocs": {
diff --git a/apps/docs/app/[lang]/layout.tsx b/apps/docs/app/[lang]/layout.tsx
index 2a3f63b9d..aa0d2c63b 100644
--- a/apps/docs/app/[lang]/layout.tsx
+++ b/apps/docs/app/[lang]/layout.tsx
@@ -72,14 +72,14 @@ export default function Layout({
name: "English",
},
cn: {
- name: "Chinese",
- toc: "目錄",
- search: "搜尋文檔",
- lastUpdate: "最後更新於",
- searchNoResult: "沒有結果",
- previousPage: "上一頁",
- nextPage: "下一頁",
- chooseLanguage: "選擇語言",
+ name: "中文",
+ toc: "目录",
+ search: "搜索文档",
+ lastUpdate: "最后更新于",
+ searchNoResult: "没有结果",
+ previousPage: "上一页",
+ nextPage: "下一页",
+ chooseLanguage: "选择语言",
},
}}
>
@@ -88,7 +88,7 @@ export default function Layout({
i18n
tree={pageTree[params.lang]}
nav={{
- title: params.lang === "cn" ? "目錄" : "Dokploy",
+ title: params.lang === "cn" ? "目录" : "Dokploy",
url: `/${params.lang}`,
transparentMode: "none",
}}
diff --git a/apps/docs/content/docs/api/index.cn.mdx b/apps/docs/content/docs/api/index.cn.mdx
new file mode 100644
index 000000000..13dea591e
--- /dev/null
+++ b/apps/docs/content/docs/api/index.cn.mdx
@@ -0,0 +1,99 @@
+---
+title: Dokploy API
+description: 如何与 Dokploy API 进行交互,面向管理员和用户
+---
+
+在某些情况下,您可能需要直接与 Dokploy API 进行交互。以下是管理员和用户如何做到这一点的指南。
+
+## 对于管理员
+
+1. 通过访问 `your-vps-ip:3000/swagger` 进入 Swagger UI。
+2. 使用 Swagger 界面与 API 进行交互。
+3. 默认情况下,Swagger UI 的访问受到限制,只有经过身份验证的管理员才能访问 API。
+
+## 对于用户
+
+1. 默认情况下,用户无法直接访问 API。
+2. 管理员可以授予用户以下访问权限:
+ - 生成访问令牌
+ - 访问 Swagger UI
+3. 如果您需要访问权限,请联系您的管理员。
+
+注意:API 提供了高级功能。确保您理解所执行的操作,以避免对系统造成意外更改。
+
+## 用法
+
+默认情况下,OpenApi 基础 URL 为 `http://localhost:3000/api`,您需要将其替换为 Dokploy 实例的 IP 或域名。
+
+### 身份验证
+
+API 使用 JWT 令牌进行身份验证。您可以通过访问 `/settings/profile` 页面并进入 API/CLI 部分生成令牌。
+
+以下是一个经过身份验证的请求示例:
+```bash
+curl -X 'GET' \
+ 'https://dokploy.com/api/project.all' \
+ -H 'accept: application/json' \
+ -H 'Authorization: Bearer YOUR-TOKEN'
+```
+然后您将收到类似以下内容的响应:
+
+```json
+[
+ {
+ "projectId": "klZKsyw5g-QT_jrWJ5T-w",
+ "name": "随机",
+ "description": "",
+ "createdAt": "2024-06-19T15:05:58.785Z",
+ "adminId": "_WrKZbs7iJAA3p4N2Yfyu",
+ "applications": [],
+ "mariadb": [],
+ "mongo": [],
+ "mysql": [
+ {
+ "mysqlId": "N3cudwO46TiDXzBm4SaQ1",
+ "name": "mysql",
+ "appName": "random-mysql-924715",
+ "description": "",
+ "databaseName": "mysql",
+ "databaseUser": "mysql",
+ "databasePassword": "h13BzO6y3KYSHaQg",
+ "databaseRootPassword": "mM1b7JeoPA7jArxj",
+ "dockerImage": "mysql:8",
+ "command": null,
+ "env": null,
+ "memoryReservation": null,
+ "memoryLimit": null,
+ "cpuReservation": null,
+ "cpuLimit": null,
+ "externalPort": null,
+ "applicationStatus": "完成",
+ "createdAt": "2024-06-24T01:55:40.378Z",
+ "projectId": "klZKsyw5g-QT_jrWJ5T-w"
+ }
+ ],
+ "postgres": [],
+ "redis": [
+ {
+ "redisId": "TtFK5S4QFaIjaNGOb8Ku-",
+ "name": "redis",
+ "appName": "random-redis-7eec62",
+ "description": "",
+ "databasePassword": "Yvb8gqClfomjcue8",
+ "dockerImage": "redis:7",
+ "command": null,
+ "env": null,
+ "memoryReservation": null,
+ "memoryLimit": null,
+ "cpuReservation": null,
+ "cpuLimit": null,
+ "externalPort": 6379,
+ "createdAt": "2024-06-26T06:43:20.570Z",
+ "applicationStatus": "完成",
+ "projectId": "klZKsyw5g-QT_jrWJ5T-w"
+ }
+ ],
+ "compose": []
+ }
+]
+```
\ No newline at end of file
diff --git a/apps/docs/content/docs/api/meta.cn.json b/apps/docs/content/docs/api/meta.cn.json
new file mode 100644
index 000000000..9e512b78f
--- /dev/null
+++ b/apps/docs/content/docs/api/meta.cn.json
@@ -0,0 +1,33 @@
+{
+ "title": "CLI",
+ "root": true,
+ "pages": [
+ "---入门---",
+ "index",
+ "---API---",
+ "reference-api/reference-admin",
+ "reference-api/reference-application",
+ "reference-api/reference-auth",
+ "reference-api/reference-backup",
+ "reference-api/reference-certificates",
+ "reference-api/reference-cluster",
+ "reference-api/reference-compose",
+ "reference-api/reference-deployment",
+ "reference-api/reference-destination",
+ "reference-api/reference-docker",
+ "reference-api/reference-domain",
+ "reference-api/reference-mariadb",
+ "reference-api/reference-mongo",
+ "reference-api/reference-mounts",
+ "reference-api/reference-mysql",
+ "reference-api/reference-port",
+ "reference-api/reference-postgres",
+ "reference-api/reference-project",
+ "reference-api/reference-redirects",
+ "reference-api/reference-redis",
+ "reference-api/reference-registry",
+ "reference-api/reference-security",
+ "reference-api/reference-settings",
+ "reference-api/reference-user"
+ ]
+}
diff --git a/apps/docs/content/docs/api/meta.json b/apps/docs/content/docs/api/meta.json
index 62ed8cbdd..09421f252 100644
--- a/apps/docs/content/docs/api/meta.json
+++ b/apps/docs/content/docs/api/meta.json
@@ -28,6 +28,11 @@
"reference-api/reference-registry",
"reference-api/reference-security",
"reference-api/reference-settings",
+ "reference-api/reference-sshKey",
+ "reference-api/reference-gitProvider",
+ "reference-api/reference-bitbucket",
+ "reference-api/reference-github",
+ "reference-api/reference-gitlab",
"reference-api/reference-user"
]
}
diff --git a/apps/docs/content/docs/api/reference-api/reference-admin.mdx b/apps/docs/content/docs/api/reference-api/reference-admin.mdx
index 7c5bf3016..a3514229b 100644
--- a/apps/docs/content/docs/api/reference-api/reference-admin.mdx
+++ b/apps/docs/content/docs/api/reference-api/reference-admin.mdx
@@ -116,7 +116,7 @@ In: `header`