diff --git a/.scribe/endpoints.cache/00.yaml b/.scribe/endpoints.cache/00.yaml index bd252822..59776e99 100644 --- a/.scribe/endpoints.cache/00.yaml +++ b/.scribe/endpoints.cache/00.yaml @@ -1,153 +1,131 @@ ## Autogenerated by Scribe. DO NOT MODIFY. -name: cron-jobs +name: Endpoints description: '' endpoints: - - - httpMethods: - - GET - uri: 'api/projects/{project_id}/servers/{server_id}/cron-jobs' - metadata: - groupName: cron-jobs - groupDescription: '' - subgroup: '' - subgroupDescription: '' - title: list - description: 'Get all cron jobs.' - authenticated: false - custom: [] - headers: - Content-Type: application/json - Accept: application/json - urlParameters: - project_id: - name: project_id - description: 'The ID of the project.' - required: true - example: 1 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - server_id: - name: server_id - description: 'The ID of the server.' - required: true - example: 32 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - cleanUrlParameters: - project_id: 1 - server_id: 32 - queryParameters: [] - cleanQueryParameters: [] - bodyParameters: [] - cleanBodyParameters: [] - fileParameters: [] - responses: - - - status: 200 - content: '{"data":[{"id":5,"server_id":1,"command":"ls -la","user":"root","frequency":"* * * * *","status":"ready","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"},{"id":6,"server_id":1,"command":"ls -la","user":"root","frequency":"* * * * *","status":"ready","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"}],"links":{"first":"\/?page=1","last":"\/?page=1","prev":null,"next":null},"meta":{"current_page":1,"from":1,"last_page":1,"links":[{"url":null,"label":"« Previous","active":false},{"url":"\/?page=1","label":"1","active":true},{"url":null,"label":"Next »","active":false}],"path":"\/","per_page":25,"to":2,"total":2}}' - headers: [] - description: '' - custom: [] - responseFields: [] - auth: [] - controller: null - method: null - route: null - custom: [] - httpMethods: - POST - uri: 'api/projects/{project_id}/servers/{server_id}/cron-jobs' + uri: 'api/servers/{server_id}/agent/{id}' metadata: - groupName: cron-jobs + groupName: Endpoints groupDescription: '' subgroup: '' subgroupDescription: '' - title: create - description: 'Create a new cron job.' + title: '' + description: '' authenticated: false custom: [] headers: Content-Type: application/json Accept: application/json urlParameters: - project_id: - name: project_id - description: 'The ID of the project.' + server_id: + name: server_id + description: 'The ID of the server.' required: true - example: 1 + example: 6 type: integer enumValues: [] exampleWasSpecified: false nullable: false custom: [] - server_id: - name: server_id - description: 'The ID of the server.' + id: + name: id + description: 'The ID of the agent.' required: true - example: 32 - type: integer + example: architecto + type: string enumValues: [] exampleWasSpecified: false nullable: false custom: [] cleanUrlParameters: - project_id: 1 - server_id: 32 + server_id: 6 + id: architecto queryParameters: [] cleanQueryParameters: [] bodyParameters: - command: - name: command + load: + name: load description: '' required: true - example: consequatur - type: string + example: 4326.41688 + type: number enumValues: [] exampleWasSpecified: false nullable: false custom: [] - user: - name: user + memory_total: + name: memory_total description: '' required: true - example: vito - type: string - enumValues: - - root - - vito + example: 4326.41688 + type: number + enumValues: [] exampleWasSpecified: false nullable: false custom: [] - frequency: - name: frequency - description: 'Frequency of the cron job.' + memory_used: + name: memory_used + description: '' required: true - example: '* * * * *' - type: string + example: 4326.41688 + type: number + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + memory_free: + name: memory_free + description: '' + required: true + example: 4326.41688 + type: number + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + disk_total: + name: disk_total + description: '' + required: true + example: 4326.41688 + type: number + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + disk_used: + name: disk_used + description: '' + required: true + example: 4326.41688 + type: number + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + disk_free: + name: disk_free + description: '' + required: true + example: 4326.41688 + type: number enumValues: [] exampleWasSpecified: false nullable: false custom: [] cleanBodyParameters: - command: consequatur - user: vito - frequency: '* * * * *' + load: 4326.41688 + memory_total: 4326.41688 + memory_used: 4326.41688 + memory_free: 4326.41688 + disk_total: 4326.41688 + disk_used: 4326.41688 + disk_free: 4326.41688 fileParameters: [] - responses: - - - status: 200 - content: '{"id":5,"server_id":1,"command":"ls -la","user":"root","frequency":"* * * * *","status":"ready","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"}' - headers: [] - description: '' - custom: [] + responses: [] responseFields: [] auth: [] controller: null @@ -156,55 +134,27 @@ endpoints: custom: [] - httpMethods: - - GET - uri: 'api/projects/{project_id}/servers/{server_id}/cron-jobs/{cronJob_id}' + 0: GET + 2: POST + 3: PUT + 4: PATCH + 5: DELETE + 6: OPTIONS + uri: api/git-hooks metadata: - groupName: cron-jobs + groupName: Endpoints groupDescription: '' subgroup: '' subgroupDescription: '' - title: show - description: 'Get a cron job by ID.' + title: '' + description: '' authenticated: false custom: [] headers: Content-Type: application/json Accept: application/json - urlParameters: - project_id: - name: project_id - description: 'The ID of the project.' - required: true - example: 1 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - server_id: - name: server_id - description: 'The ID of the server.' - required: true - example: 32 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - cronJob_id: - name: cronJob_id - description: 'The ID of the cronJob.' - required: true - example: 17 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - cleanUrlParameters: - project_id: 1 - server_id: 32 - cronJob_id: 17 + urlParameters: [] + cleanUrlParameters: [] queryParameters: [] cleanQueryParameters: [] bodyParameters: [] @@ -212,79 +162,18 @@ endpoints: fileParameters: [] responses: - - status: 200 - content: '{"id":5,"server_id":1,"command":"ls -la","user":"root","frequency":"* * * * *","status":"ready","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"}' - headers: [] - description: '' - custom: [] - responseFields: [] - auth: [] - controller: null - method: null - route: null - custom: [] - - - httpMethods: - - DELETE - uri: 'api/projects/{project_id}/servers/{server_id}/cron-jobs/{cronJob_id}' - metadata: - groupName: cron-jobs - groupDescription: '' - subgroup: '' - subgroupDescription: '' - title: delete - description: 'Delete cron job.' - authenticated: false - custom: [] - headers: - Content-Type: application/json - Accept: application/json - urlParameters: - project_id: - name: project_id - description: 'The ID of the project.' - required: true - example: 1 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - server_id: - name: server_id - description: 'The ID of the server.' - required: true - example: 32 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - cronJob_id: - name: cronJob_id - description: 'The ID of the cronJob.' - required: true - example: 17 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - cleanUrlParameters: - project_id: 1 - server_id: 32 - cronJob_id: 17 - queryParameters: [] - cleanQueryParameters: [] - bodyParameters: [] - cleanBodyParameters: [] - fileParameters: [] - responses: - - - status: 204 - content: null - headers: [] - description: '' + status: 404 + content: |- + { + "message": "" + } + headers: + cache-control: 'no-cache, private' + content-type: application/json + x-ratelimit-limit: '60' + x-ratelimit-remaining: '57' + access-control-allow-origin: '*' + description: null custom: [] responseFields: [] auth: [] diff --git a/.scribe/endpoints.cache/01.yaml b/.scribe/endpoints.cache/01.yaml index 6db8a573..d228383a 100644 --- a/.scribe/endpoints.cache/01.yaml +++ b/.scribe/endpoints.cache/01.yaml @@ -1,19 +1,19 @@ ## Autogenerated by Scribe. DO NOT MODIFY. -name: databases +name: cron-jobs description: '' endpoints: - httpMethods: - GET - uri: 'api/projects/{project_id}/servers/{server_id}/databases' + uri: 'api/projects/{project_id}/servers/{server_id}/cron-jobs' metadata: - groupName: databases + groupName: cron-jobs groupDescription: '' subgroup: '' subgroupDescription: '' title: list - description: 'Get all databases.' + description: 'Get all cron jobs.' authenticated: false custom: [] headers: @@ -34,7 +34,7 @@ endpoints: name: server_id description: 'The ID of the server.' required: true - example: 32 + example: 6 type: integer enumValues: [] exampleWasSpecified: false @@ -42,7 +42,7 @@ endpoints: custom: [] cleanUrlParameters: project_id: 1 - server_id: 32 + server_id: 6 queryParameters: [] cleanQueryParameters: [] bodyParameters: [] @@ -51,7 +51,7 @@ endpoints: responses: - status: 200 - content: '{"data":[{"id":21,"server_id":1,"name":"carolyne.luettgen","status":"ready","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"},{"id":22,"server_id":1,"name":"orville77","status":"ready","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"}],"links":{"first":"\/?page=1","last":"\/?page=1","prev":null,"next":null},"meta":{"current_page":1,"from":1,"last_page":1,"links":[{"url":null,"label":"« Previous","active":false},{"url":"\/?page=1","label":"1","active":true},{"url":null,"label":"Next »","active":false}],"path":"\/","per_page":25,"to":2,"total":2}}' + content: '{"data":[{"id":3,"server_id":1,"command":"ls -la","user":"root","frequency":"* * * * *","status":"ready","status_color":"success","created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"},{"id":4,"server_id":1,"command":"ls -la","user":"root","frequency":"* * * * *","status":"ready","status_color":"success","created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"}],"links":{"first":"\/?page=1","last":"\/?page=1","prev":null,"next":null},"meta":{"current_page":1,"from":1,"last_page":1,"links":[{"url":null,"label":"« Previous","active":false},{"url":"\/?page=1","label":"1","active":true},{"url":null,"label":"Next »","active":false}],"path":"\/","per_page":25,"to":2,"total":2}}' headers: [] description: '' custom: [] @@ -64,14 +64,14 @@ endpoints: - httpMethods: - POST - uri: 'api/projects/{project_id}/servers/{server_id}/databases' + uri: 'api/projects/{project_id}/servers/{server_id}/cron-jobs' metadata: - groupName: databases + groupName: cron-jobs groupDescription: '' subgroup: '' subgroupDescription: '' title: create - description: 'Create a new database.' + description: 'Create a new cron job.' authenticated: false custom: [] headers: @@ -92,7 +92,7 @@ endpoints: name: server_id description: 'The ID of the server.' required: true - example: 32 + example: 6 type: integer enumValues: [] exampleWasSpecified: false @@ -100,49 +100,51 @@ endpoints: custom: [] cleanUrlParameters: project_id: 1 - server_id: 32 + server_id: 6 queryParameters: [] cleanQueryParameters: [] bodyParameters: - name: - name: name + command: + name: command description: '' required: true - example: consequatur + example: architecto type: string enumValues: [] exampleWasSpecified: false nullable: false custom: [] - charset: - name: charset + user: + name: user description: '' required: true - example: consequatur + example: vito type: string - enumValues: [] + enumValues: + - root + - vito exampleWasSpecified: false nullable: false custom: [] - collation: - name: collation - description: '' + frequency: + name: frequency + description: 'Frequency of the cron job.' required: true - example: consequatur + example: '* * * * *' type: string enumValues: [] exampleWasSpecified: false nullable: false custom: [] cleanBodyParameters: - name: consequatur - charset: consequatur - collation: consequatur + command: architecto + user: vito + frequency: '* * * * *' fileParameters: [] responses: - status: 200 - content: '{"id":21,"server_id":1,"name":"carolyne.luettgen","status":"ready","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"}' + content: '{"id":3,"server_id":1,"command":"ls -la","user":"root","frequency":"* * * * *","status":"ready","status_color":"success","created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"}' headers: [] description: '' custom: [] @@ -155,14 +157,14 @@ endpoints: - httpMethods: - GET - uri: 'api/projects/{project_id}/servers/{server_id}/databases/{id}' + uri: 'api/projects/{project_id}/servers/{server_id}/cron-jobs/{cronJob_id}' metadata: - groupName: databases + groupName: cron-jobs groupDescription: '' subgroup: '' subgroupDescription: '' title: show - description: 'Get a database by ID.' + description: 'Get a cron job by ID.' authenticated: false custom: [] headers: @@ -183,17 +185,17 @@ endpoints: name: server_id description: 'The ID of the server.' required: true - example: 32 + example: 6 type: integer enumValues: [] exampleWasSpecified: false nullable: false custom: [] - id: - name: id - description: 'The ID of the database.' + cronJob_id: + name: cronJob_id + description: 'The ID of the cronJob.' required: true - example: 17 + example: 1 type: integer enumValues: [] exampleWasSpecified: false @@ -201,8 +203,8 @@ endpoints: custom: [] cleanUrlParameters: project_id: 1 - server_id: 32 - id: 17 + server_id: 6 + cronJob_id: 1 queryParameters: [] cleanQueryParameters: [] bodyParameters: [] @@ -211,7 +213,7 @@ endpoints: responses: - status: 200 - content: '{"id":21,"server_id":1,"name":"carolyne.luettgen","status":"ready","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"}' + content: '{"id":3,"server_id":1,"command":"ls -la","user":"root","frequency":"* * * * *","status":"ready","status_color":"success","created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"}' headers: [] description: '' custom: [] @@ -224,14 +226,14 @@ endpoints: - httpMethods: - DELETE - uri: 'api/projects/{project_id}/servers/{server_id}/databases/{database_id}' + uri: 'api/projects/{project_id}/servers/{server_id}/cron-jobs/{cronJob_id}' metadata: - groupName: databases + groupName: cron-jobs groupDescription: '' subgroup: '' subgroupDescription: '' title: delete - description: 'Delete database.' + description: 'Delete cron job.' authenticated: false custom: [] headers: @@ -252,17 +254,17 @@ endpoints: name: server_id description: 'The ID of the server.' required: true - example: 32 + example: 6 type: integer enumValues: [] exampleWasSpecified: false nullable: false custom: [] - database_id: - name: database_id - description: 'The ID of the database.' + cronJob_id: + name: cronJob_id + description: 'The ID of the cronJob.' required: true - example: 17 + example: 1 type: integer enumValues: [] exampleWasSpecified: false @@ -270,8 +272,8 @@ endpoints: custom: [] cleanUrlParameters: project_id: 1 - server_id: 32 - database_id: 17 + server_id: 6 + cronJob_id: 1 queryParameters: [] cleanQueryParameters: [] bodyParameters: [] diff --git a/.scribe/endpoints.cache/02.yaml b/.scribe/endpoints.cache/02.yaml index 1987e6bf..02721c97 100644 --- a/.scribe/endpoints.cache/02.yaml +++ b/.scribe/endpoints.cache/02.yaml @@ -1,19 +1,19 @@ ## Autogenerated by Scribe. DO NOT MODIFY. -name: database-users +name: databases description: '' endpoints: - httpMethods: - GET - uri: 'api/projects/{project_id}/servers/{server_id}/database-users' + uri: 'api/projects/{project_id}/servers/{server_id}/databases' metadata: - groupName: database-users + groupName: databases groupDescription: '' subgroup: '' subgroupDescription: '' title: list - description: 'Get all database users.' + description: 'Get all databases.' authenticated: false custom: [] headers: @@ -34,7 +34,7 @@ endpoints: name: server_id description: 'The ID of the server.' required: true - example: 32 + example: 6 type: integer enumValues: [] exampleWasSpecified: false @@ -42,7 +42,7 @@ endpoints: custom: [] cleanUrlParameters: project_id: 1 - server_id: 32 + server_id: 6 queryParameters: [] cleanQueryParameters: [] bodyParameters: [] @@ -51,7 +51,7 @@ endpoints: responses: - status: 200 - content: '{"data":[{"id":19,"server_id":1,"username":"graciela37","databases":[],"host":"%","status":"creating","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"},{"id":20,"server_id":1,"username":"vconn","databases":[],"host":"%","status":"creating","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"}],"links":{"first":"\/?page=1","last":"\/?page=1","prev":null,"next":null},"meta":{"current_page":1,"from":1,"last_page":1,"links":[{"url":null,"label":"« Previous","active":false},{"url":"\/?page=1","label":"1","active":true},{"url":null,"label":"Next »","active":false}],"path":"\/","per_page":25,"to":2,"total":2}}' + content: '{"data":[{"id":9,"server_id":1,"name":"zbailey","collation":null,"charset":null,"status":"ready","status_color":"success","created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"},{"id":10,"server_id":1,"name":"rempel.chadrick","collation":null,"charset":null,"status":"ready","status_color":"success","created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"}],"links":{"first":"\/?page=1","last":"\/?page=1","prev":null,"next":null},"meta":{"current_page":1,"from":1,"last_page":1,"links":[{"url":null,"label":"« Previous","active":false},{"url":"\/?page=1","label":"1","active":true},{"url":null,"label":"Next »","active":false}],"path":"\/","per_page":25,"to":2,"total":2}}' headers: [] description: '' custom: [] @@ -64,14 +64,14 @@ endpoints: - httpMethods: - POST - uri: 'api/projects/{project_id}/servers/{server_id}/database-users' + uri: 'api/projects/{project_id}/servers/{server_id}/databases' metadata: - groupName: database-users + groupName: databases groupDescription: '' subgroup: '' subgroupDescription: '' title: create - description: 'Create a new database user.' + description: 'Create a new database.' authenticated: false custom: [] headers: @@ -92,7 +92,7 @@ endpoints: name: server_id description: 'The ID of the server.' required: true - example: 32 + example: 6 type: integer enumValues: [] exampleWasSpecified: false @@ -100,49 +100,49 @@ endpoints: custom: [] cleanUrlParameters: project_id: 1 - server_id: 32 + server_id: 6 queryParameters: [] cleanQueryParameters: [] bodyParameters: - username: - name: username + name: + name: name description: '' required: true - example: consequatur + example: architecto type: string enumValues: [] exampleWasSpecified: false nullable: false custom: [] - password: - name: password + charset: + name: charset description: '' required: true - example: 'O[2UZ5ij-e/dl4m{o,' + example: architecto type: string enumValues: [] exampleWasSpecified: false nullable: false custom: [] - host: - name: host - description: 'Host, if it is a remote user.' + collation: + name: collation + description: '' required: true - example: '%' + example: architecto type: string enumValues: [] exampleWasSpecified: false nullable: false custom: [] cleanBodyParameters: - username: consequatur - password: 'O[2UZ5ij-e/dl4m{o,' - host: '%' + name: architecto + charset: architecto + collation: architecto fileParameters: [] responses: - status: 200 - content: '{"id":19,"server_id":1,"username":"nolan.jaylan","databases":[],"host":"%","status":"creating","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"}' + content: '{"id":9,"server_id":1,"name":"zbailey","collation":null,"charset":null,"status":"ready","status_color":"success","created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"}' headers: [] description: '' custom: [] @@ -155,14 +155,14 @@ endpoints: - httpMethods: - GET - uri: 'api/projects/{project_id}/servers/{server_id}/database-users/{databaseUser_id}' + uri: 'api/projects/{project_id}/servers/{server_id}/databases/{id}' metadata: - groupName: database-users + groupName: databases groupDescription: '' subgroup: '' subgroupDescription: '' title: show - description: 'Get a database user by ID.' + description: 'Get a database by ID.' authenticated: false custom: [] headers: @@ -183,17 +183,17 @@ endpoints: name: server_id description: 'The ID of the server.' required: true - example: 32 + example: 6 type: integer enumValues: [] exampleWasSpecified: false nullable: false custom: [] - databaseUser_id: - name: databaseUser_id - description: 'The ID of the databaseUser.' + id: + name: id + description: 'The ID of the database.' required: true - example: 17 + example: 8 type: integer enumValues: [] exampleWasSpecified: false @@ -201,8 +201,8 @@ endpoints: custom: [] cleanUrlParameters: project_id: 1 - server_id: 32 - databaseUser_id: 17 + server_id: 6 + id: 8 queryParameters: [] cleanQueryParameters: [] bodyParameters: [] @@ -211,87 +211,7 @@ endpoints: responses: - status: 200 - content: '{"id":19,"server_id":1,"username":"carolyne.luettgen","databases":[],"host":"%","status":"creating","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"}' - headers: [] - description: '' - custom: [] - responseFields: [] - auth: [] - controller: null - method: null - route: null - custom: [] - - - httpMethods: - - POST - uri: 'api/projects/{project_id}/servers/{server_id}/database-users/{databaseUser_id}/link' - metadata: - groupName: database-users - groupDescription: '' - subgroup: '' - subgroupDescription: '' - title: link - description: 'Link to databases' - authenticated: false - custom: [] - headers: - Content-Type: application/json - Accept: application/json - urlParameters: - project_id: - name: project_id - description: 'The ID of the project.' - required: true - example: 1 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - server_id: - name: server_id - description: 'The ID of the server.' - required: true - example: 32 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - databaseUser_id: - name: databaseUser_id - description: 'The ID of the databaseUser.' - required: true - example: 17 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - cleanUrlParameters: - project_id: 1 - server_id: 32 - databaseUser_id: 17 - queryParameters: [] - cleanQueryParameters: [] - bodyParameters: - databases: - name: databases - description: 'Array of database names to link to the user.' - required: true - example: consequatur - type: string - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - cleanBodyParameters: - databases: consequatur - fileParameters: [] - responses: - - - status: 200 - content: '{"id":19,"server_id":1,"username":"carolyne.luettgen","databases":[],"host":"%","status":"creating","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"}' + content: '{"id":9,"server_id":1,"name":"rempel.chadrick","collation":null,"charset":null,"status":"ready","status_color":"success","created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"}' headers: [] description: '' custom: [] @@ -304,14 +224,14 @@ endpoints: - httpMethods: - DELETE - uri: 'api/projects/{project_id}/servers/{server_id}/database-users/{databaseUser_id}' + uri: 'api/projects/{project_id}/servers/{server_id}/databases/{database_id}' metadata: - groupName: database-users + groupName: databases groupDescription: '' subgroup: '' subgroupDescription: '' title: delete - description: 'Delete database user.' + description: 'Delete database.' authenticated: false custom: [] headers: @@ -332,17 +252,17 @@ endpoints: name: server_id description: 'The ID of the server.' required: true - example: 32 + example: 6 type: integer enumValues: [] exampleWasSpecified: false nullable: false custom: [] - databaseUser_id: - name: databaseUser_id - description: 'The ID of the databaseUser.' + database_id: + name: database_id + description: 'The ID of the database.' required: true - example: 17 + example: 8 type: integer enumValues: [] exampleWasSpecified: false @@ -350,8 +270,8 @@ endpoints: custom: [] cleanUrlParameters: project_id: 1 - server_id: 32 - databaseUser_id: 17 + server_id: 6 + database_id: 8 queryParameters: [] cleanQueryParameters: [] bodyParameters: [] diff --git a/.scribe/endpoints.cache/03.yaml b/.scribe/endpoints.cache/03.yaml index 5164c67c..0ef89111 100644 --- a/.scribe/endpoints.cache/03.yaml +++ b/.scribe/endpoints.cache/03.yaml @@ -1,19 +1,19 @@ ## Autogenerated by Scribe. DO NOT MODIFY. -name: firewall-rules +name: database-users description: '' endpoints: - httpMethods: - GET - uri: 'api/projects/{project_id}/servers/{server_id}/firewall-rules' + uri: 'api/projects/{project_id}/servers/{server_id}/database-users' metadata: - groupName: firewall-rules + groupName: database-users groupDescription: '' subgroup: '' subgroupDescription: '' title: list - description: 'Get all firewall rules.' + description: 'Get all database users.' authenticated: false custom: [] headers: @@ -34,7 +34,7 @@ endpoints: name: server_id description: 'The ID of the server.' required: true - example: 32 + example: 6 type: integer enumValues: [] exampleWasSpecified: false @@ -42,7 +42,7 @@ endpoints: custom: [] cleanUrlParameters: project_id: 1 - server_id: 32 + server_id: 6 queryParameters: [] cleanQueryParameters: [] bodyParameters: [] @@ -51,7 +51,7 @@ endpoints: responses: - status: 200 - content: '{"data":[{"id":97,"name":"dolores","server_id":1,"type":"allow","protocol":"tcp","port":40770,"source":"199.76.131.15","mask":"24","note":"test","status":"creating","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"},{"id":98,"name":"laborum","server_id":1,"type":"allow","protocol":"tcp","port":14235,"source":"100.14.146.200","mask":"24","note":"test","status":"creating","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"}],"links":{"first":"\/?page=1","last":"\/?page=1","prev":null,"next":null},"meta":{"current_page":1,"from":1,"last_page":1,"links":[{"url":null,"label":"« Previous","active":false},{"url":"\/?page=1","label":"1","active":true},{"url":null,"label":"Next »","active":false}],"path":"\/","per_page":25,"to":2,"total":2}}' + content: '{"data":[{"id":4,"server_id":1,"username":"cartwright.maxine","databases":[],"host":"%","status":"creating","status_color":"warning","created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"},{"id":5,"server_id":1,"username":"gusikowski.eden","databases":[],"host":"%","status":"creating","status_color":"warning","created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"}],"links":{"first":"\/?page=1","last":"\/?page=1","prev":null,"next":null},"meta":{"current_page":1,"from":1,"last_page":1,"links":[{"url":null,"label":"« Previous","active":false},{"url":"\/?page=1","label":"1","active":true},{"url":null,"label":"Next »","active":false}],"path":"\/","per_page":25,"to":2,"total":2}}' headers: [] description: '' custom: [] @@ -64,14 +64,14 @@ endpoints: - httpMethods: - POST - uri: 'api/projects/{project_id}/servers/{server_id}/firewall-rules' + uri: 'api/projects/{project_id}/servers/{server_id}/database-users' metadata: - groupName: firewall-rules + groupName: database-users groupDescription: '' subgroup: '' subgroupDescription: '' title: create - description: 'Create a new firewall rule.' + description: 'Create a new database user.' authenticated: false custom: [] headers: @@ -92,7 +92,7 @@ endpoints: name: server_id description: 'The ID of the server.' required: true - example: 32 + example: 6 type: integer enumValues: [] exampleWasSpecified: false @@ -100,225 +100,49 @@ endpoints: custom: [] cleanUrlParameters: project_id: 1 - server_id: 32 + server_id: 6 queryParameters: [] cleanQueryParameters: [] bodyParameters: - name: - name: name + username: + name: username description: '' required: true - example: consequatur + example: architecto type: string enumValues: [] exampleWasSpecified: false nullable: false custom: [] - type: - name: type + password: + name: password description: '' required: true - example: allow - type: string - enumValues: - - allow - - deny - exampleWasSpecified: false - nullable: false - custom: [] - protocol: - name: protocol - description: '' - required: true - example: tcp - type: string - enumValues: - - tcp - - udp - exampleWasSpecified: false - nullable: false - custom: [] - port: - name: port - description: '' - required: true - example: consequatur + example: '|]|{+-' type: string enumValues: [] exampleWasSpecified: false nullable: false custom: [] - source: - name: source - description: '' - required: false - example: consequatur - type: string - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - mask: - name: mask - description: 'Mask for source IP.' + host: + name: host + description: 'Host, if it is a remote user.' required: true - example: '0' + example: '%' type: string enumValues: [] exampleWasSpecified: false nullable: false custom: [] cleanBodyParameters: - name: consequatur - type: allow - protocol: tcp - port: consequatur - source: consequatur - mask: '0' + username: architecto + password: '|]|{+-' + host: '%' fileParameters: [] responses: - status: 200 - content: '{"id":97,"name":"dolores","server_id":1,"type":"allow","protocol":"tcp","port":40770,"source":"199.76.131.15","mask":"24","note":"test","status":"creating","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"}' - headers: [] - description: '' - custom: [] - responseFields: [] - auth: [] - controller: null - method: null - route: null - custom: [] - - - httpMethods: - - PUT - uri: 'api/projects/{project_id}/servers/{server_id}/firewall-rules/{firewallRule_id}' - metadata: - groupName: firewall-rules - groupDescription: '' - subgroup: '' - subgroupDescription: '' - title: edit - description: 'Update an existing firewall rule.' - authenticated: false - custom: [] - headers: - Content-Type: application/json - Accept: application/json - urlParameters: - project_id: - name: project_id - description: 'The ID of the project.' - required: true - example: 1 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - server_id: - name: server_id - description: 'The ID of the server.' - required: true - example: 32 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - firewallRule_id: - name: firewallRule_id - description: 'The ID of the firewallRule.' - required: true - example: 94 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - cleanUrlParameters: - project_id: 1 - server_id: 32 - firewallRule_id: 94 - queryParameters: [] - cleanQueryParameters: [] - bodyParameters: - name: - name: name - description: '' - required: true - example: consequatur - type: string - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - type: - name: type - description: '' - required: true - example: allow - type: string - enumValues: - - allow - - deny - exampleWasSpecified: false - nullable: false - custom: [] - protocol: - name: protocol - description: '' - required: true - example: tcp - type: string - enumValues: - - tcp - - udp - exampleWasSpecified: false - nullable: false - custom: [] - port: - name: port - description: '' - required: true - example: consequatur - type: string - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - source: - name: source - description: '' - required: false - example: consequatur - type: string - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - mask: - name: mask - description: 'Mask for source IP.' - required: true - example: '0' - type: string - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - cleanBodyParameters: - name: consequatur - type: allow - protocol: tcp - port: consequatur - source: consequatur - mask: '0' - fileParameters: [] - responses: - - - status: 200 - content: '{"id":97,"name":"dolores","server_id":1,"type":"allow","protocol":"tcp","port":40770,"source":"199.76.131.15","mask":"24","note":"test","status":"creating","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"}' + content: '{"id":4,"server_id":1,"username":"justina.gaylord","databases":[],"host":"%","status":"creating","status_color":"warning","created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"}' headers: [] description: '' custom: [] @@ -331,14 +155,14 @@ endpoints: - httpMethods: - GET - uri: 'api/projects/{project_id}/servers/{server_id}/firewall-rules/{firewallRule_id}' + uri: 'api/projects/{project_id}/servers/{server_id}/database-users/{databaseUser_id}' metadata: - groupName: firewall-rules + groupName: database-users groupDescription: '' subgroup: '' subgroupDescription: '' title: show - description: 'Get a firewall rule by ID.' + description: 'Get a database user by ID.' authenticated: false custom: [] headers: @@ -359,17 +183,17 @@ endpoints: name: server_id description: 'The ID of the server.' required: true - example: 32 + example: 6 type: integer enumValues: [] exampleWasSpecified: false nullable: false custom: [] - firewallRule_id: - name: firewallRule_id - description: 'The ID of the firewallRule.' + databaseUser_id: + name: databaseUser_id + description: 'The ID of the databaseUser.' required: true - example: 94 + example: 16 type: integer enumValues: [] exampleWasSpecified: false @@ -377,8 +201,8 @@ endpoints: custom: [] cleanUrlParameters: project_id: 1 - server_id: 32 - firewallRule_id: 94 + server_id: 6 + databaseUser_id: 16 queryParameters: [] cleanQueryParameters: [] bodyParameters: [] @@ -387,7 +211,87 @@ endpoints: responses: - status: 200 - content: '{"id":97,"name":"laborum","server_id":1,"type":"allow","protocol":"tcp","port":14235,"source":"100.14.146.200","mask":"24","note":"test","status":"creating","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"}' + content: '{"id":4,"server_id":1,"username":"zbailey","databases":[],"host":"%","status":"creating","status_color":"warning","created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"}' + headers: [] + description: '' + custom: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - POST + uri: 'api/projects/{project_id}/servers/{server_id}/database-users/{databaseUser_id}/link' + metadata: + groupName: database-users + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: link + description: 'Link to databases' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: + project_id: + name: project_id + description: 'The ID of the project.' + required: true + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + server_id: + name: server_id + description: 'The ID of the server.' + required: true + example: 6 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + databaseUser_id: + name: databaseUser_id + description: 'The ID of the databaseUser.' + required: true + example: 16 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + project_id: 1 + server_id: 6 + databaseUser_id: 16 + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: + databases: + name: databases + description: 'Array of database names to link to the user.' + required: true + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanBodyParameters: + databases: architecto + fileParameters: [] + responses: + - + status: 200 + content: '{"id":4,"server_id":1,"username":"zbailey","databases":[],"host":"%","status":"creating","status_color":"warning","created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"}' headers: [] description: '' custom: [] @@ -400,14 +304,14 @@ endpoints: - httpMethods: - DELETE - uri: 'api/projects/{project_id}/servers/{server_id}/firewall-rules/{firewallRule_id}' + uri: 'api/projects/{project_id}/servers/{server_id}/database-users/{databaseUser_id}' metadata: - groupName: firewall-rules + groupName: database-users groupDescription: '' subgroup: '' subgroupDescription: '' title: delete - description: 'Delete firewall rule.' + description: 'Delete database user.' authenticated: false custom: [] headers: @@ -428,17 +332,17 @@ endpoints: name: server_id description: 'The ID of the server.' required: true - example: 32 + example: 6 type: integer enumValues: [] exampleWasSpecified: false nullable: false custom: [] - firewallRule_id: - name: firewallRule_id - description: 'The ID of the firewallRule.' + databaseUser_id: + name: databaseUser_id + description: 'The ID of the databaseUser.' required: true - example: 94 + example: 16 type: integer enumValues: [] exampleWasSpecified: false @@ -446,8 +350,8 @@ endpoints: custom: [] cleanUrlParameters: project_id: 1 - server_id: 32 - firewallRule_id: 94 + server_id: 6 + databaseUser_id: 16 queryParameters: [] cleanQueryParameters: [] bodyParameters: [] diff --git a/.scribe/endpoints.cache/04.yaml b/.scribe/endpoints.cache/04.yaml index dc00e34f..bd744b19 100644 --- a/.scribe/endpoints.cache/04.yaml +++ b/.scribe/endpoints.cache/04.yaml @@ -1,26 +1,48 @@ ## Autogenerated by Scribe. DO NOT MODIFY. -name: general +name: firewall-rules description: '' endpoints: - httpMethods: - GET - uri: api/health + uri: 'api/projects/{project_id}/servers/{server_id}/firewall-rules' metadata: - groupName: general + groupName: firewall-rules groupDescription: '' subgroup: '' subgroupDescription: '' - title: health-check - description: '' + title: list + description: 'Get all firewall rules.' authenticated: false custom: [] headers: Content-Type: application/json Accept: application/json - urlParameters: [] - cleanUrlParameters: [] + urlParameters: + project_id: + name: project_id + description: 'The ID of the project.' + required: true + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + server_id: + name: server_id + description: 'The ID of the server.' + required: true + example: 6 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + project_id: 1 + server_id: 6 queryParameters: [] cleanQueryParameters: [] bodyParameters: [] @@ -29,14 +51,414 @@ endpoints: responses: - status: 200 - content: '{"success":true,"version":"2.5.0"}' - headers: - cache-control: 'no-cache, private' - content-type: application/json - x-ratelimit-limit: '60' - x-ratelimit-remaining: '57' - access-control-allow-origin: '*' - description: null + content: '{"data":[{"id":22,"name":"eius","server_id":1,"type":"allow","protocol":"tcp","port":9322,"source":"113.14.236.204","mask":"24","note":"test","status":"creating","status_color":"info","created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"},{"id":23,"name":"velit","server_id":1,"type":"allow","protocol":"tcp","port":2983,"source":"199.172.126.144","mask":"24","note":"test","status":"creating","status_color":"info","created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"}],"links":{"first":"\/?page=1","last":"\/?page=1","prev":null,"next":null},"meta":{"current_page":1,"from":1,"last_page":1,"links":[{"url":null,"label":"« Previous","active":false},{"url":"\/?page=1","label":"1","active":true},{"url":null,"label":"Next »","active":false}],"path":"\/","per_page":25,"to":2,"total":2}}' + headers: [] + description: '' + custom: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - POST + uri: 'api/projects/{project_id}/servers/{server_id}/firewall-rules' + metadata: + groupName: firewall-rules + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: create + description: 'Create a new firewall rule.' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: + project_id: + name: project_id + description: 'The ID of the project.' + required: true + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + server_id: + name: server_id + description: 'The ID of the server.' + required: true + example: 6 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + project_id: 1 + server_id: 6 + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: + name: + name: name + description: '' + required: true + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + type: + name: type + description: '' + required: true + example: allow + type: string + enumValues: + - allow + - deny + exampleWasSpecified: false + nullable: false + custom: [] + protocol: + name: protocol + description: '' + required: true + example: tcp + type: string + enumValues: + - tcp + - udp + exampleWasSpecified: false + nullable: false + custom: [] + port: + name: port + description: '' + required: true + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + source: + name: source + description: '' + required: false + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + mask: + name: mask + description: 'Mask for source IP.' + required: true + example: '0' + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanBodyParameters: + name: architecto + type: allow + protocol: tcp + port: architecto + source: architecto + mask: '0' + fileParameters: [] + responses: + - + status: 200 + content: '{"id":22,"name":"eius","server_id":1,"type":"allow","protocol":"tcp","port":9322,"source":"113.14.236.204","mask":"24","note":"test","status":"creating","status_color":"info","created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"}' + headers: [] + description: '' + custom: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - PUT + uri: 'api/projects/{project_id}/servers/{server_id}/firewall-rules/{firewallRule_id}' + metadata: + groupName: firewall-rules + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: edit + description: 'Update an existing firewall rule.' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: + project_id: + name: project_id + description: 'The ID of the project.' + required: true + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + server_id: + name: server_id + description: 'The ID of the server.' + required: true + example: 6 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + firewallRule_id: + name: firewallRule_id + description: 'The ID of the firewallRule.' + required: true + example: 19 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + project_id: 1 + server_id: 6 + firewallRule_id: 19 + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: + name: + name: name + description: '' + required: true + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + type: + name: type + description: '' + required: true + example: deny + type: string + enumValues: + - allow + - deny + exampleWasSpecified: false + nullable: false + custom: [] + protocol: + name: protocol + description: '' + required: true + example: udp + type: string + enumValues: + - tcp + - udp + exampleWasSpecified: false + nullable: false + custom: [] + port: + name: port + description: '' + required: true + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + source: + name: source + description: '' + required: false + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + mask: + name: mask + description: 'Mask for source IP.' + required: true + example: '0' + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanBodyParameters: + name: architecto + type: deny + protocol: udp + port: architecto + source: architecto + mask: '0' + fileParameters: [] + responses: + - + status: 200 + content: '{"id":22,"name":"eius","server_id":1,"type":"allow","protocol":"tcp","port":9322,"source":"113.14.236.204","mask":"24","note":"test","status":"creating","status_color":"info","created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"}' + headers: [] + description: '' + custom: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - GET + uri: 'api/projects/{project_id}/servers/{server_id}/firewall-rules/{firewallRule_id}' + metadata: + groupName: firewall-rules + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: show + description: 'Get a firewall rule by ID.' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: + project_id: + name: project_id + description: 'The ID of the project.' + required: true + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + server_id: + name: server_id + description: 'The ID of the server.' + required: true + example: 6 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + firewallRule_id: + name: firewallRule_id + description: 'The ID of the firewallRule.' + required: true + example: 19 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + project_id: 1 + server_id: 6 + firewallRule_id: 19 + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 200 + content: '{"id":22,"name":"velit","server_id":1,"type":"allow","protocol":"tcp","port":2983,"source":"199.172.126.144","mask":"24","note":"test","status":"creating","status_color":"info","created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"}' + headers: [] + description: '' + custom: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - DELETE + uri: 'api/projects/{project_id}/servers/{server_id}/firewall-rules/{firewallRule_id}' + metadata: + groupName: firewall-rules + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: delete + description: 'Delete firewall rule.' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: + project_id: + name: project_id + description: 'The ID of the project.' + required: true + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + server_id: + name: server_id + description: 'The ID of the server.' + required: true + example: 6 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + firewallRule_id: + name: firewallRule_id + description: 'The ID of the firewallRule.' + required: true + example: 19 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + project_id: 1 + server_id: 6 + firewallRule_id: 19 + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 204 + content: null + headers: [] + description: '' custom: [] responseFields: [] auth: [] diff --git a/.scribe/endpoints.cache/05.yaml b/.scribe/endpoints.cache/05.yaml index 5ba55c07..65a8ec67 100644 --- a/.scribe/endpoints.cache/05.yaml +++ b/.scribe/endpoints.cache/05.yaml @@ -1,19 +1,19 @@ ## Autogenerated by Scribe. DO NOT MODIFY. -name: projects +name: general description: '' endpoints: - httpMethods: - GET - uri: api/projects + uri: api/health metadata: - groupName: projects + groupName: general groupDescription: '' subgroup: '' subgroupDescription: '' - title: list - description: 'Get all projects.' + title: health-check + description: '' authenticated: false custom: [] headers: @@ -29,208 +29,14 @@ endpoints: responses: - status: 200 - content: '{"data":[{"id":3,"name":"Nash Corwin","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"},{"id":4,"name":"Patience Douglas","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"}],"links":{"first":"\/?page=1","last":"\/?page=1","prev":null,"next":null},"meta":{"current_page":1,"from":1,"last_page":1,"links":[{"url":null,"label":"« Previous","active":false},{"url":"\/?page=1","label":"1","active":true},{"url":null,"label":"Next »","active":false}],"path":"\/","per_page":25,"to":2,"total":2}}' - headers: [] - description: '' - custom: [] - responseFields: [] - auth: [] - controller: null - method: null - route: null - custom: [] - - - httpMethods: - - POST - uri: api/projects - metadata: - groupName: projects - groupDescription: '' - subgroup: '' - subgroupDescription: '' - title: create - description: 'Create a new project.' - authenticated: false - custom: [] - headers: - Content-Type: application/json - Accept: application/json - urlParameters: [] - cleanUrlParameters: [] - queryParameters: [] - cleanQueryParameters: [] - bodyParameters: - name: - name: name - description: 'The name of the project.' - required: true - example: consequatur - type: string - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - cleanBodyParameters: - name: consequatur - fileParameters: [] - responses: - - - status: 200 - content: '{"id":3,"name":"Dr. Cornelius Luettgen V","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"}' - headers: [] - description: '' - custom: [] - responseFields: [] - auth: [] - controller: null - method: null - route: null - custom: [] - - - httpMethods: - - GET - uri: 'api/projects/{id}' - metadata: - groupName: projects - groupDescription: '' - subgroup: '' - subgroupDescription: '' - title: show - description: 'Get a project by ID.' - authenticated: false - custom: [] - headers: - Content-Type: application/json - Accept: application/json - urlParameters: - id: - name: id - description: 'The ID of the project.' - required: true - example: 1 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - cleanUrlParameters: - id: 1 - queryParameters: [] - cleanQueryParameters: [] - bodyParameters: [] - cleanBodyParameters: [] - fileParameters: [] - responses: - - - status: 200 - content: '{"id":3,"name":"Orville Satterfield","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"}' - headers: [] - description: '' - custom: [] - responseFields: [] - auth: [] - controller: null - method: null - route: null - custom: [] - - - httpMethods: - - PUT - uri: 'api/projects/{id}' - metadata: - groupName: projects - groupDescription: '' - subgroup: '' - subgroupDescription: '' - title: update - description: 'Update project.' - authenticated: false - custom: [] - headers: - Content-Type: application/json - Accept: application/json - urlParameters: - id: - name: id - description: 'The ID of the project.' - required: true - example: 1 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - cleanUrlParameters: - id: 1 - queryParameters: [] - cleanQueryParameters: [] - bodyParameters: - name: - name: name - description: 'The name of the project.' - required: true - example: consequatur - type: string - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - cleanBodyParameters: - name: consequatur - fileParameters: [] - responses: - - - status: 200 - content: '{"id":3,"name":"Dr. Cornelius Luettgen V","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"}' - headers: [] - description: '' - custom: [] - responseFields: [] - auth: [] - controller: null - method: null - route: null - custom: [] - - - httpMethods: - - DELETE - uri: 'api/projects/{project_id}' - metadata: - groupName: projects - groupDescription: '' - subgroup: '' - subgroupDescription: '' - title: delete - description: 'Delete project.' - authenticated: false - custom: [] - headers: - Content-Type: application/json - Accept: application/json - urlParameters: - project_id: - name: project_id - description: 'The ID of the project.' - required: true - example: 1 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - cleanUrlParameters: - project_id: 1 - queryParameters: [] - cleanQueryParameters: [] - bodyParameters: [] - cleanBodyParameters: [] - fileParameters: [] - responses: - - - status: 204 - content: null - headers: [] - description: '' + content: '{"success":true,"version":"2.5.0"}' + headers: + cache-control: 'no-cache, private' + content-type: application/json + x-ratelimit-limit: '60' + x-ratelimit-remaining: '56' + access-control-allow-origin: '*' + description: null custom: [] responseFields: [] auth: [] diff --git a/.scribe/endpoints.cache/06.yaml b/.scribe/endpoints.cache/06.yaml index 57bcc916..7b97266d 100644 --- a/.scribe/endpoints.cache/06.yaml +++ b/.scribe/endpoints.cache/06.yaml @@ -1,59 +1,26 @@ ## Autogenerated by Scribe. DO NOT MODIFY. -name: redirects +name: projects description: '' endpoints: - httpMethods: - GET - uri: 'api/projects/{project_id}/servers/{server_id}/sites/{site_id}/redirects' + uri: api/projects metadata: - groupName: redirects + groupName: projects groupDescription: '' subgroup: '' subgroupDescription: '' - title: index - description: 'Get all redirects.' + title: list + description: 'Get all projects.' authenticated: false custom: [] headers: Content-Type: application/json Accept: application/json - urlParameters: - project_id: - name: project_id - description: 'The ID of the project.' - required: true - example: 1 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - server_id: - name: server_id - description: 'The ID of the server.' - required: true - example: 32 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - site_id: - name: site_id - description: 'The ID of the site.' - required: true - example: 17 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - cleanUrlParameters: - project_id: 1 - server_id: 32 - site_id: 17 + urlParameters: [] + cleanUrlParameters: [] queryParameters: [] cleanQueryParameters: [] bodyParameters: [] @@ -62,7 +29,7 @@ endpoints: responses: - status: 200 - content: '{"data":[{"id":11,"site_id":1,"mode":308,"from":"dolores","to":"http:\/\/dibbert.com\/eius-est-dolor-dolores-minus-voluptatem-quisquam","status":"ready","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"},{"id":12,"site_id":1,"mode":302,"from":"sed","to":"http:\/\/williamson.net\/fugit-facilis-perferendis-dolores-molestias.html","status":"ready","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"}],"links":{"first":"\/?page=1","last":"\/?page=1","prev":null,"next":null},"meta":{"current_page":1,"from":1,"last_page":1,"links":[{"url":null,"label":"« Previous","active":false},{"url":"\/?page=1","label":"1","active":true},{"url":null,"label":"Next »","active":false}],"path":"\/","per_page":25,"to":2,"total":2}}' + content: '{"data":[{"id":3,"name":"Belle Dickens","created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"},{"id":4,"name":"Mittie Considine","created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"}],"links":{"first":"\/?page=1","last":"\/?page=1","prev":null,"next":null},"meta":{"current_page":1,"from":1,"last_page":1,"links":[{"url":null,"label":"« Previous","active":false},{"url":"\/?page=1","label":"1","active":true},{"url":null,"label":"Next »","active":false}],"path":"\/","per_page":25,"to":2,"total":2}}' headers: [] description: '' custom: [] @@ -75,22 +42,69 @@ endpoints: - httpMethods: - POST - uri: 'api/projects/{project_id}/servers/{server_id}/sites/{site_id}/redirects' + uri: api/projects metadata: - groupName: redirects + groupName: projects groupDescription: '' subgroup: '' subgroupDescription: '' title: create - description: 'Create a new redirect.' + description: 'Create a new project.' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: [] + cleanUrlParameters: [] + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: + name: + name: name + description: 'The name of the project.' + required: true + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanBodyParameters: + name: architecto + fileParameters: [] + responses: + - + status: 200 + content: '{"id":3,"name":"Ms. Elisabeth Okuneva","created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"}' + headers: [] + description: '' + custom: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - GET + uri: 'api/projects/{id}' + metadata: + groupName: projects + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: show + description: 'Get a project by ID.' authenticated: false custom: [] headers: Content-Type: application/json Accept: application/json urlParameters: - project_id: - name: project_id + id: + name: id description: 'The ID of the project.' required: true example: 1 @@ -99,76 +113,75 @@ endpoints: exampleWasSpecified: false nullable: false custom: [] - server_id: - name: server_id - description: 'The ID of the server.' - required: true - example: 32 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false + cleanUrlParameters: + id: 1 + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 200 + content: '{"id":3,"name":"Aleen O''Kon","created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"}' + headers: [] + description: '' custom: [] - site_id: - name: site_id - description: 'The ID of the site.' + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - PUT + uri: 'api/projects/{id}' + metadata: + groupName: projects + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: update + description: 'Update project.' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: + id: + name: id + description: 'The ID of the project.' required: true - example: 17 + example: 1 type: integer enumValues: [] exampleWasSpecified: false nullable: false custom: [] cleanUrlParameters: - project_id: 1 - server_id: 32 - site_id: 17 + id: 1 queryParameters: [] cleanQueryParameters: [] bodyParameters: - from: - name: from - description: '' + name: + name: name + description: 'The name of the project.' required: true - example: consequatur + example: architecto type: string enumValues: [] exampleWasSpecified: false nullable: false custom: [] - to: - name: to - description: '' - required: true - example: consequatur - type: string - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - mode: - name: mode - description: '' - required: true - example: 302 - type: string - enumValues: - - 301 - - 302 - - 307 - - 308 - exampleWasSpecified: false - nullable: false - custom: [] cleanBodyParameters: - from: consequatur - to: consequatur - mode: 302 + name: architecto fileParameters: [] responses: - status: 200 - content: null + content: '{"id":3,"name":"Ms. Elisabeth Okuneva","created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"}' headers: [] description: '' custom: [] @@ -181,14 +194,14 @@ endpoints: - httpMethods: - DELETE - uri: 'api/projects/{project_id}/servers/{server_id}/sites/{site_id}/redirects/{redirect_id}' + uri: 'api/projects/{project_id}' metadata: - groupName: redirects + groupName: projects groupDescription: '' subgroup: '' subgroupDescription: '' title: delete - description: 'Delete a redirect.' + description: 'Delete project.' authenticated: false custom: [] headers: @@ -205,41 +218,8 @@ endpoints: exampleWasSpecified: false nullable: false custom: [] - server_id: - name: server_id - description: 'The ID of the server.' - required: true - example: 32 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - site_id: - name: site_id - description: 'The ID of the site.' - required: true - example: 17 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - redirect_id: - name: redirect_id - description: 'The ID of the redirect.' - required: true - example: 9 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] cleanUrlParameters: project_id: 1 - server_id: 32 - site_id: 17 - redirect_id: 9 queryParameters: [] cleanQueryParameters: [] bodyParameters: [] diff --git a/.scribe/endpoints.cache/07.yaml b/.scribe/endpoints.cache/07.yaml index a5c44477..3ad1b9e1 100644 --- a/.scribe/endpoints.cache/07.yaml +++ b/.scribe/endpoints.cache/07.yaml @@ -1,66 +1,19 @@ ## Autogenerated by Scribe. DO NOT MODIFY. -name: servers +name: redirects description: '' endpoints: - - - httpMethods: - - GET - uri: 'api/projects/{project_id}/servers' - metadata: - groupName: servers - groupDescription: '' - subgroup: '' - subgroupDescription: '' - title: list - description: 'Get all servers in a project.' - authenticated: false - custom: [] - headers: - Content-Type: application/json - Accept: application/json - urlParameters: - project_id: - name: project_id - description: 'The ID of the project.' - required: true - example: 1 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - cleanUrlParameters: - project_id: 1 - queryParameters: [] - cleanQueryParameters: [] - bodyParameters: [] - cleanBodyParameters: [] - fileParameters: [] - responses: - - - status: 200 - content: '{"data":[{"id":33,"project_id":1,"user_id":1,"provider_id":null,"name":"Maiya Connelly","ssh_user":"vito","ip":"7.83.102.177","local_ip":"130.245.181.91","port":22,"os":"ubuntu_22","type":"regular","type_data":null,"provider":"custom","provider_data":null,"public_key":"test","status":"ready","auto_update":null,"available_updates":0,"security_updates":null,"progress":100,"progress_step":null,"updates":0,"last_update_check":null,"created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"},{"id":34,"project_id":1,"user_id":1,"provider_id":null,"name":"Dr. Kyler Runolfsdottir DVM","ssh_user":"vito","ip":"106.112.51.73","local_ip":"248.246.77.93","port":22,"os":"ubuntu_22","type":"regular","type_data":null,"provider":"custom","provider_data":null,"public_key":"test","status":"ready","auto_update":null,"available_updates":0,"security_updates":null,"progress":100,"progress_step":null,"updates":0,"last_update_check":null,"created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"}],"links":{"first":"\/?page=1","last":"\/?page=1","prev":null,"next":null},"meta":{"current_page":1,"from":1,"last_page":1,"links":[{"url":null,"label":"« Previous","active":false},{"url":"\/?page=1","label":"1","active":true},{"url":null,"label":"Next »","active":false}],"path":"\/","per_page":25,"to":2,"total":2}}' - headers: [] - description: '' - custom: [] - responseFields: [] - auth: [] - controller: null - method: null - route: null - custom: [] - httpMethods: - POST - uri: 'api/projects/{project_id}/servers' + uri: 'api/projects/{project_id}/servers/{server_id}/sites/{site_id}/redirects' metadata: - groupName: servers + groupName: redirects groupDescription: '' subgroup: '' subgroupDescription: '' title: create - description: 'Create a new server.' + description: 'Create a new redirect.' authenticated: false custom: [] headers: @@ -77,338 +30,75 @@ endpoints: exampleWasSpecified: false nullable: false custom: [] + server_id: + name: server_id + description: 'The ID of the server.' + required: true + example: 6 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + site_id: + name: site_id + description: 'The ID of the site.' + required: true + example: 14 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] cleanUrlParameters: project_id: 1 + server_id: 6 + site_id: 14 queryParameters: [] cleanQueryParameters: [] bodyParameters: - provider: - name: provider - description: 'The server provider type' + from: + name: from + description: '' required: true - example: consequatur + example: architecto type: string enumValues: [] exampleWasSpecified: false nullable: false custom: [] - server_provider: - name: server_provider - description: 'If the provider is not custom, the ID of the server provider profile' + to: + name: to + description: '' required: true - example: hetzner + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + mode: + name: mode + description: '' + required: true + example: 307 type: string enumValues: - - custom - - hetzner - - digitalocean - - linode - - vultr - exampleWasSpecified: false - nullable: false - custom: [] - region: - name: region - description: 'Provider region if the provider is not custom' - required: true - example: consequatur - type: string - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - plan: - name: plan - description: 'Provider plan if the provider is not custom' - required: true - example: consequatur - type: string - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - ip: - name: ip - description: 'SSH IP address if the provider is custom' - required: true - example: consequatur - type: string - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - port: - name: port - description: 'SSH Port if the provider is custom' - required: true - example: consequatur - type: string - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - name: - name: name - description: 'The name of the server.' - required: true - example: consequatur - type: string - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - os: - name: os - description: 'The os of the server' - required: true - example: consequatur - type: string - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - webserver: - name: webserver - description: 'Web server' - required: true - example: none - type: string - enumValues: - - none - - nginx - exampleWasSpecified: false - nullable: false - custom: [] - database: - name: database - description: Database - required: true - example: mariadb104 - type: string - enumValues: - - none - - mysql57 - - mysql80 - - mariadb103 - - mariadb104 - - mariadb103 - - postgresql12 - - postgresql13 - - postgresql14 - - postgresql15 - - postgresql16 - exampleWasSpecified: false - nullable: false - custom: [] - php: - name: php - description: 'PHP version' - required: true - example: '8.0' - type: string - enumValues: - - '7.0' - - '7.1' - - '7.2' - - '7.3' - - '7.4' - - '8.0' - - '8.1' - - '8.2' - - '8.3' + - 301 + - 302 + - 307 + - 308 exampleWasSpecified: false nullable: false custom: [] cleanBodyParameters: - provider: consequatur - server_provider: hetzner - region: consequatur - plan: consequatur - ip: consequatur - port: consequatur - name: consequatur - os: consequatur - webserver: none - database: mariadb104 - php: '8.0' + from: architecto + to: architecto + mode: 307 fileParameters: [] responses: - status: 200 - content: '{"id":33,"project_id":1,"user_id":1,"provider_id":null,"name":"Dr. Cornelius Luettgen V","ssh_user":"vito","ip":"226.187.235.251","local_ip":"18.62.212.253","port":22,"os":"ubuntu_22","type":"regular","type_data":null,"provider":"custom","provider_data":null,"public_key":"test","status":"ready","auto_update":null,"available_updates":0,"security_updates":null,"progress":100,"progress_step":null,"updates":0,"last_update_check":null,"created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"}' - headers: [] - description: '' - custom: [] - responseFields: [] - auth: [] - controller: null - method: null - route: null - custom: [] - - - httpMethods: - - GET - uri: 'api/projects/{project_id}/servers/{id}' - metadata: - groupName: servers - groupDescription: '' - subgroup: '' - subgroupDescription: '' - title: show - description: 'Get a server by ID.' - authenticated: false - custom: [] - headers: - Content-Type: application/json - Accept: application/json - urlParameters: - project_id: - name: project_id - description: 'The ID of the project.' - required: true - example: 1 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - id: - name: id - description: 'The ID of the server.' - required: true - example: 32 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - cleanUrlParameters: - project_id: 1 - id: 32 - queryParameters: [] - cleanQueryParameters: [] - bodyParameters: [] - cleanBodyParameters: [] - fileParameters: [] - responses: - - - status: 200 - content: '{"id":33,"project_id":1,"user_id":1,"provider_id":null,"name":"Brandy Reichel","ssh_user":"vito","ip":"26.180.121.142","local_ip":"122.175.6.215","port":22,"os":"ubuntu_22","type":"regular","type_data":null,"provider":"custom","provider_data":null,"public_key":"test","status":"ready","auto_update":null,"available_updates":0,"security_updates":null,"progress":100,"progress_step":null,"updates":0,"last_update_check":null,"created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"}' - headers: [] - description: '' - custom: [] - responseFields: [] - auth: [] - controller: null - method: null - route: null - custom: [] - - - httpMethods: - - POST - uri: 'api/projects/{project_id}/servers/{server_id}/reboot' - metadata: - groupName: servers - groupDescription: '' - subgroup: '' - subgroupDescription: '' - title: reboot - description: 'Reboot a server.' - authenticated: false - custom: [] - headers: - Content-Type: application/json - Accept: application/json - urlParameters: - project_id: - name: project_id - description: 'The ID of the project.' - required: true - example: 1 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - server_id: - name: server_id - description: 'The ID of the server.' - required: true - example: 32 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - cleanUrlParameters: - project_id: 1 - server_id: 32 - queryParameters: [] - cleanQueryParameters: [] - bodyParameters: [] - cleanBodyParameters: [] - fileParameters: [] - responses: - - - status: 204 - content: null - headers: [] - description: '' - custom: [] - responseFields: [] - auth: [] - controller: null - method: null - route: null - custom: [] - - - httpMethods: - - POST - uri: 'api/projects/{project_id}/servers/{server_id}/upgrade' - metadata: - groupName: servers - groupDescription: '' - subgroup: '' - subgroupDescription: '' - title: upgrade - description: 'Upgrade server.' - authenticated: false - custom: [] - headers: - Content-Type: application/json - Accept: application/json - urlParameters: - project_id: - name: project_id - description: 'The ID of the project.' - required: true - example: 1 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - server_id: - name: server_id - description: 'The ID of the server.' - required: true - example: 32 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - cleanUrlParameters: - project_id: 1 - server_id: 32 - queryParameters: [] - cleanQueryParameters: [] - bodyParameters: [] - cleanBodyParameters: [] - fileParameters: [] - responses: - - - status: 204 content: null headers: [] description: '' @@ -422,14 +112,14 @@ endpoints: - httpMethods: - DELETE - uri: 'api/projects/{project_id}/servers/{server_id}' + uri: 'api/projects/{project_id}/servers/{server_id}/sites/{site_id}/redirects/{redirect_id}' metadata: - groupName: servers + groupName: redirects groupDescription: '' subgroup: '' subgroupDescription: '' title: delete - description: 'Delete server.' + description: 'Delete a redirect.' authenticated: false custom: [] headers: @@ -450,7 +140,27 @@ endpoints: name: server_id description: 'The ID of the server.' required: true - example: 32 + example: 6 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + site_id: + name: site_id + description: 'The ID of the site.' + required: true + example: 14 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + redirect_id: + name: redirect_id + description: 'The ID of the redirect.' + required: true + example: 2 type: integer enumValues: [] exampleWasSpecified: false @@ -458,7 +168,9 @@ endpoints: custom: [] cleanUrlParameters: project_id: 1 - server_id: 32 + server_id: 6 + site_id: 14 + redirect_id: 2 queryParameters: [] cleanQueryParameters: [] bodyParameters: [] diff --git a/.scribe/endpoints.cache/08.yaml b/.scribe/endpoints.cache/08.yaml index 763a8511..6197d175 100644 --- a/.scribe/endpoints.cache/08.yaml +++ b/.scribe/endpoints.cache/08.yaml @@ -1,19 +1,19 @@ ## Autogenerated by Scribe. DO NOT MODIFY. -name: server-providers +name: servers description: '' endpoints: - httpMethods: - GET - uri: 'api/projects/{project_id}/server-providers' + uri: 'api/projects/{project_id}/servers' metadata: - groupName: server-providers + groupName: servers groupDescription: '' subgroup: '' subgroupDescription: '' title: list - description: '' + description: 'Get all servers in a project.' authenticated: false custom: [] headers: @@ -40,7 +40,7 @@ endpoints: responses: - status: 200 - content: '{"data":[{"id":4,"project_id":null,"global":true,"name":"quo","provider":"custom","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"},{"id":5,"project_id":null,"global":true,"name":"sed","provider":"digitalocean","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"}],"links":{"first":"\/?page=1","last":"\/?page=1","prev":null,"next":null},"meta":{"current_page":1,"from":1,"last_page":1,"links":[{"url":null,"label":"« Previous","active":false},{"url":"\/?page=1","label":"1","active":true},{"url":null,"label":"Next »","active":false}],"path":"\/","per_page":25,"to":2,"total":2}}' + content: '{"data":[{"id":7,"project_id":1,"services":[],"user_id":1,"provider_id":null,"name":"Rhiannon Hackett","ssh_user":"vito","ssh_users":["root","vito"],"ip":"15.21.182.27","local_ip":"15.126.47.30","port":22,"os":"ubuntu_22","type":"regular","type_data":null,"provider":"custom","provider_data":null,"public_key":"test","status":"ready","auto_update":null,"available_updates":0,"security_updates":null,"progress":100,"progress_step":null,"updates":0,"last_update_check":null,"status_color":"success","created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"},{"id":8,"project_id":1,"services":[],"user_id":1,"provider_id":null,"name":"Maya Bins","ssh_user":"vito","ssh_users":["root","vito"],"ip":"88.63.32.129","local_ip":"161.58.4.234","port":22,"os":"ubuntu_22","type":"regular","type_data":null,"provider":"custom","provider_data":null,"public_key":"test","status":"ready","auto_update":null,"available_updates":0,"security_updates":null,"progress":100,"progress_step":null,"updates":0,"last_update_check":null,"status_color":"success","created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"}],"links":{"first":"\/?page=1","last":"\/?page=1","prev":null,"next":null},"meta":{"current_page":1,"from":1,"last_page":1,"links":[{"url":null,"label":"« Previous","active":false},{"url":"\/?page=1","label":"1","active":true},{"url":null,"label":"Next »","active":false}],"path":"\/","per_page":25,"to":2,"total":2}}' headers: [] description: '' custom: [] @@ -53,14 +53,14 @@ endpoints: - httpMethods: - POST - uri: 'api/projects/{project_id}/server-providers' + uri: 'api/projects/{project_id}/servers' metadata: - groupName: server-providers + groupName: servers groupDescription: '' subgroup: '' subgroupDescription: '' title: create - description: '' + description: 'Create a new server.' authenticated: false custom: [] headers: @@ -84,9 +84,64 @@ endpoints: bodyParameters: provider: name: provider - description: 'The provider (aws, linode, hetzner, digitalocean, vultr, ...)' + description: 'The server provider type' required: true - example: consequatur + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + server_provider: + name: server_provider + description: 'If the provider is not custom, the ID of the server provider profile' + required: true + example: linode + type: string + enumValues: + - custom + - hetzner + - digitalocean + - linode + - vultr + exampleWasSpecified: false + nullable: false + custom: [] + region: + name: region + description: 'Provider region if the provider is not custom' + required: true + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + plan: + name: plan + description: 'Provider plan if the provider is not custom' + required: true + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + ip: + name: ip + description: 'SSH IP address if the provider is custom' + required: true + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + port: + name: port + description: 'SSH Port if the provider is custom' + required: true + example: architecto type: string enumValues: [] exampleWasSpecified: false @@ -94,55 +149,94 @@ endpoints: custom: [] name: name: name - description: 'The name of the server provider.' + description: 'The name of the server.' required: true - example: consequatur + example: architecto type: string enumValues: [] exampleWasSpecified: false nullable: false custom: [] - token: - name: token - description: 'The token if provider requires api token' + os: + name: os + description: 'The os of the server' required: true - example: consequatur + example: architecto type: string enumValues: [] exampleWasSpecified: false nullable: false custom: [] - key: - name: key - description: 'The key if provider requires key' + webserver: + name: webserver + description: 'Web server' required: true - example: consequatur + example: none type: string - enumValues: [] + enumValues: + - none + - nginx + - caddy exampleWasSpecified: false nullable: false custom: [] - secret: - name: secret - description: 'The secret if provider requires key' + database: + name: database + description: Database required: true - example: consequatur + example: mysql80 type: string - enumValues: [] + enumValues: + - none + - mysql57 + - mysql80 + - mariadb103 + - mariadb104 + - mariadb103 + - postgresql12 + - postgresql13 + - postgresql14 + - postgresql15 + - postgresql16 + exampleWasSpecified: false + nullable: false + custom: [] + php: + name: php + description: 'PHP version' + required: true + example: '8.2' + type: string + enumValues: + - '7.0' + - '7.1' + - '7.2' + - '7.3' + - '7.4' + - '8.0' + - '8.1' + - '8.2' + - '8.3' exampleWasSpecified: false nullable: false custom: [] cleanBodyParameters: - provider: consequatur - name: consequatur - token: consequatur - key: consequatur - secret: consequatur + provider: architecto + server_provider: linode + region: architecto + plan: architecto + ip: architecto + port: architecto + name: architecto + os: architecto + webserver: none + database: mysql80 + php: '8.2' fileParameters: [] responses: - status: 200 - content: '{"id":4,"project_id":null,"global":true,"name":"dolores","provider":"digitalocean","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"}' + content: '{"id":7,"project_id":1,"services":[],"user_id":1,"provider_id":null,"name":"Ms. Elisabeth Okuneva","ssh_user":"vito","ssh_users":["root","vito"],"ip":"75.13.66.152","local_ip":"199.172.126.144","port":22,"os":"ubuntu_22","type":"regular","type_data":null,"provider":"custom","provider_data":null,"public_key":"test","status":"ready","auto_update":null,"available_updates":0,"security_updates":null,"progress":100,"progress_step":null,"updates":0,"last_update_check":null,"status_color":"success","created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"}' headers: [] description: '' custom: [] @@ -155,14 +249,14 @@ endpoints: - httpMethods: - GET - uri: 'api/projects/{project_id}/server-providers/{serverProvider_id}' + uri: 'api/projects/{project_id}/servers/{id}' metadata: - groupName: server-providers + groupName: servers groupDescription: '' subgroup: '' subgroupDescription: '' title: show - description: '' + description: 'Get a server by ID.' authenticated: false custom: [] headers: @@ -179,11 +273,11 @@ endpoints: exampleWasSpecified: false nullable: false custom: [] - serverProvider_id: - name: serverProvider_id - description: 'The ID of the serverProvider.' + id: + name: id + description: 'The ID of the server.' required: true - example: 1 + example: 6 type: integer enumValues: [] exampleWasSpecified: false @@ -191,7 +285,7 @@ endpoints: custom: [] cleanUrlParameters: project_id: 1 - serverProvider_id: 1 + id: 6 queryParameters: [] cleanQueryParameters: [] bodyParameters: [] @@ -200,7 +294,7 @@ endpoints: responses: - status: 200 - content: '{"id":4,"project_id":null,"global":true,"name":"voluptatem","provider":"vultr","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"}' + content: '{"id":7,"project_id":1,"services":[],"user_id":1,"provider_id":null,"name":"Belle Dickens","ssh_user":"vito","ssh_users":["root","vito"],"ip":"51.210.32.30","local_ip":"82.174.132.158","port":22,"os":"ubuntu_22","type":"regular","type_data":null,"provider":"custom","provider_data":null,"public_key":"test","status":"ready","auto_update":null,"available_updates":0,"security_updates":null,"progress":100,"progress_step":null,"updates":0,"last_update_check":null,"status_color":"success","created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"}' headers: [] description: '' custom: [] @@ -212,15 +306,15 @@ endpoints: custom: [] - httpMethods: - - PUT - uri: 'api/projects/{project_id}/server-providers/{serverProvider_id}' + - POST + uri: 'api/projects/{project_id}/servers/{server_id}/reboot' metadata: - groupName: server-providers + groupName: servers groupDescription: '' subgroup: '' subgroupDescription: '' - title: update - description: '' + title: reboot + description: 'Reboot a server.' authenticated: false custom: [] headers: @@ -237,11 +331,11 @@ endpoints: exampleWasSpecified: false nullable: false custom: [] - serverProvider_id: - name: serverProvider_id - description: 'The ID of the serverProvider.' + server_id: + name: server_id + description: 'The ID of the server.' required: true - example: 1 + example: 6 type: integer enumValues: [] exampleWasSpecified: false @@ -249,89 +343,123 @@ endpoints: custom: [] cleanUrlParameters: project_id: 1 - serverProvider_id: 1 - queryParameters: [] - cleanQueryParameters: [] - bodyParameters: - name: - name: name - description: 'The name of the server provider.' - required: true - example: consequatur - type: string - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - global: - name: global - description: 'Accessible in all projects' - required: true - example: false - type: string - enumValues: - - true - - false - exampleWasSpecified: false - nullable: false - custom: [] - cleanBodyParameters: - name: consequatur - global: false - fileParameters: [] - responses: - - - status: 200 - content: '{"id":4,"project_id":null,"global":true,"name":"dolores","provider":"digitalocean","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"}' - headers: [] - description: '' - custom: [] - responseFields: [] - auth: [] - controller: null - method: null - route: null - custom: [] - - - httpMethods: - - DELETE - uri: 'api/projects/{project_id}/server-providers/{serverProvider_id}' - metadata: - groupName: server-providers - groupDescription: '' - subgroup: '' - subgroupDescription: '' - title: delete - description: '' - authenticated: false - custom: [] - headers: - Content-Type: application/json - Accept: application/json - urlParameters: - project_id: - name: project_id - description: 'The ID of the project.' - required: true - example: 1 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - serverProvider_id: - name: serverProvider_id - description: 'The ID of the serverProvider.' - required: true - example: 1 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - cleanUrlParameters: - project_id: 1 - serverProvider_id: 1 + server_id: 6 + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 204 + content: null + headers: [] + description: '' + custom: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - POST + uri: 'api/projects/{project_id}/servers/{server_id}/upgrade' + metadata: + groupName: servers + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: upgrade + description: 'Upgrade server.' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: + project_id: + name: project_id + description: 'The ID of the project.' + required: true + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + server_id: + name: server_id + description: 'The ID of the server.' + required: true + example: 6 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + project_id: 1 + server_id: 6 + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 204 + content: null + headers: [] + description: '' + custom: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - DELETE + uri: 'api/projects/{project_id}/servers/{server_id}' + metadata: + groupName: servers + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: delete + description: 'Delete server.' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: + project_id: + name: project_id + description: 'The ID of the project.' + required: true + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + server_id: + name: server_id + description: 'The ID of the server.' + required: true + example: 6 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + project_id: 1 + server_id: 6 queryParameters: [] cleanQueryParameters: [] bodyParameters: [] diff --git a/.scribe/endpoints.cache/09.yaml b/.scribe/endpoints.cache/09.yaml index 5fb9f64b..2f363d09 100644 --- a/.scribe/endpoints.cache/09.yaml +++ b/.scribe/endpoints.cache/09.yaml @@ -1,19 +1,19 @@ ## Autogenerated by Scribe. DO NOT MODIFY. -name: ssh-keys +name: server-providers description: '' endpoints: - httpMethods: - GET - uri: 'api/projects/{project_id}/servers/{server_id}/ssh-keys' + uri: 'api/projects/{project_id}/server-providers' metadata: - groupName: ssh-keys + groupName: server-providers groupDescription: '' subgroup: '' subgroupDescription: '' title: list - description: 'Get all ssh keys.' + description: '' authenticated: false custom: [] headers: @@ -30,19 +30,8 @@ endpoints: exampleWasSpecified: false nullable: false custom: [] - server_id: - name: server_id - description: 'The ID of the server.' - required: true - example: 32 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] cleanUrlParameters: project_id: 1 - server_id: 32 queryParameters: [] cleanQueryParameters: [] bodyParameters: [] @@ -51,7 +40,7 @@ endpoints: responses: - status: 200 - content: '{"data":[{"id":2,"user":{"id":1,"name":"Saeed Vaziry","email":"demo@vitodeploy.com","created_at":"2024-12-19T23:19:20.000000Z","updated_at":"2025-04-19T21:24:56.000000Z"},"name":"Prof. Aurelia Buckridge MD","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"},{"id":3,"user":{"id":1,"name":"Saeed Vaziry","email":"demo@vitodeploy.com","created_at":"2024-12-19T23:19:20.000000Z","updated_at":"2025-04-19T21:24:56.000000Z"},"name":"Jaylan Lakin","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"}],"links":{"first":"\/?page=1","last":"\/?page=1","prev":null,"next":null},"meta":{"current_page":1,"from":1,"last_page":1,"links":[{"url":null,"label":"« Previous","active":false},{"url":"\/?page=1","label":"1","active":true},{"url":null,"label":"Next »","active":false}],"path":"\/","per_page":25,"to":2,"total":2}}' + content: '{"data":[{"id":4,"project_id":null,"global":true,"name":"ab","provider":"custom","created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"},{"id":5,"project_id":null,"global":true,"name":"incidunt","provider":"custom","created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"}],"links":{"first":"\/?page=1","last":"\/?page=1","prev":null,"next":null},"meta":{"current_page":1,"from":1,"last_page":1,"links":[{"url":null,"label":"« Previous","active":false},{"url":"\/?page=1","label":"1","active":true},{"url":null,"label":"Next »","active":false}],"path":"\/","per_page":25,"to":2,"total":2}}' headers: [] description: '' custom: [] @@ -64,14 +53,14 @@ endpoints: - httpMethods: - POST - uri: 'api/projects/{project_id}/servers/{server_id}/ssh-keys' + uri: 'api/projects/{project_id}/server-providers' metadata: - groupName: ssh-keys + groupName: server-providers groupDescription: '' subgroup: '' subgroupDescription: '' title: create - description: 'Deploy ssh key to server.' + description: '' authenticated: false custom: [] headers: @@ -88,27 +77,16 @@ endpoints: exampleWasSpecified: false nullable: false custom: [] - server_id: - name: server_id - description: 'The ID of the server.' - required: true - example: 32 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] cleanUrlParameters: project_id: 1 - server_id: 32 queryParameters: [] cleanQueryParameters: [] bodyParameters: - key_id: - name: key_id - description: 'The ID of the key.' + provider: + name: provider + description: 'The provider (aws, linode, hetzner, digitalocean, vultr, ...)' required: true - example: consequatur + example: architecto type: string enumValues: [] exampleWasSpecified: false @@ -116,33 +94,195 @@ endpoints: custom: [] name: name: name - description: 'Key name, required if key_id is not provided.' + description: 'The name of the server provider.' required: true - example: consequatur + example: architecto type: string enumValues: [] exampleWasSpecified: false nullable: false custom: [] - public_key: - name: public_key - description: 'Public Key, required if key_id is not provided.' + token: + name: token + description: 'The token if provider requires api token' required: true - example: consequatur + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + key: + name: key + description: 'The key if provider requires key' + required: true + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + secret: + name: secret + description: 'The secret if provider requires key' + required: true + example: architecto type: string enumValues: [] exampleWasSpecified: false nullable: false custom: [] cleanBodyParameters: - key_id: consequatur - name: consequatur - public_key: consequatur + provider: architecto + name: architecto + token: architecto + key: architecto + secret: architecto fileParameters: [] responses: - status: 200 - content: '{"id":2,"user":{"id":1,"name":"Saeed Vaziry","email":"demo@vitodeploy.com","created_at":"2024-12-19T23:19:20.000000Z","updated_at":"2025-04-19T21:24:56.000000Z"},"name":"Dr. Cornelius Luettgen V","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"}' + content: '{"id":4,"project_id":null,"global":true,"name":"eius","provider":"custom","created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"}' + headers: [] + description: '' + custom: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - GET + uri: 'api/projects/{project_id}/server-providers/{serverProvider_id}' + metadata: + groupName: server-providers + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: show + description: '' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: + project_id: + name: project_id + description: 'The ID of the project.' + required: true + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + serverProvider_id: + name: serverProvider_id + description: 'The ID of the serverProvider.' + required: true + example: 3 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + project_id: 1 + serverProvider_id: 3 + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 200 + content: '{"id":4,"project_id":null,"global":true,"name":"mollitia","provider":"vultr","created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"}' + headers: [] + description: '' + custom: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - PUT + uri: 'api/projects/{project_id}/server-providers/{serverProvider_id}' + metadata: + groupName: server-providers + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: update + description: '' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: + project_id: + name: project_id + description: 'The ID of the project.' + required: true + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + serverProvider_id: + name: serverProvider_id + description: 'The ID of the serverProvider.' + required: true + example: 3 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + project_id: 1 + serverProvider_id: 3 + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: + name: + name: name + description: 'The name of the server provider.' + required: true + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + global: + name: global + description: 'Accessible in all projects' + required: true + example: false + type: string + enumValues: + - true + - false + exampleWasSpecified: false + nullable: false + custom: [] + cleanBodyParameters: + name: architecto + global: false + fileParameters: [] + responses: + - + status: 200 + content: '{"id":4,"project_id":null,"global":true,"name":"eius","provider":"custom","created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"}' headers: [] description: '' custom: [] @@ -155,14 +295,14 @@ endpoints: - httpMethods: - DELETE - uri: 'api/projects/{project_id}/servers/{server_id}/ssh-keys/{sshKey_id}' + uri: 'api/projects/{project_id}/server-providers/{serverProvider_id}' metadata: - groupName: ssh-keys + groupName: server-providers groupDescription: '' subgroup: '' subgroupDescription: '' title: delete - description: 'Delete ssh key from server.' + description: '' authenticated: false custom: [] headers: @@ -179,21 +319,11 @@ endpoints: exampleWasSpecified: false nullable: false custom: [] - server_id: - name: server_id - description: 'The ID of the server.' + serverProvider_id: + name: serverProvider_id + description: 'The ID of the serverProvider.' required: true - example: 32 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - sshKey_id: - name: sshKey_id - description: 'The ID of the sshKey.' - required: true - example: 1 + example: 3 type: integer enumValues: [] exampleWasSpecified: false @@ -201,8 +331,7 @@ endpoints: custom: [] cleanUrlParameters: project_id: 1 - server_id: 32 - sshKey_id: 1 + serverProvider_id: 3 queryParameters: [] cleanQueryParameters: [] bodyParameters: [] diff --git a/.scribe/endpoints.cache/10.yaml b/.scribe/endpoints.cache/10.yaml index 9fc124ce..6f41ae1c 100644 --- a/.scribe/endpoints.cache/10.yaml +++ b/.scribe/endpoints.cache/10.yaml @@ -1,19 +1,19 @@ ## Autogenerated by Scribe. DO NOT MODIFY. -name: services +name: ssh-keys description: '' endpoints: - httpMethods: - GET - uri: 'api/projects/{project_id}/servers/{server_id}/services' + uri: 'api/projects/{project_id}/servers/{server_id}/ssh-keys' metadata: - groupName: services + groupName: ssh-keys groupDescription: '' subgroup: '' subgroupDescription: '' title: list - description: 'Get all services.' + description: 'Get all ssh keys.' authenticated: false custom: [] headers: @@ -34,7 +34,7 @@ endpoints: name: server_id description: 'The ID of the server.' required: true - example: 32 + example: 6 type: integer enumValues: [] exampleWasSpecified: false @@ -42,7 +42,7 @@ endpoints: custom: [] cleanUrlParameters: project_id: 1 - server_id: 32 + server_id: 6 queryParameters: [] cleanQueryParameters: [] bodyParameters: [] @@ -51,7 +51,7 @@ endpoints: responses: - status: 200 - content: '{"data":[{"id":null,"server_id":1,"type":"webserver","type_data":null,"name":"nginx","version":null,"unit":null,"status":"ready","is_default":null,"created_at":null,"updated_at":null},{"id":null,"server_id":1,"type":"webserver","type_data":null,"name":"nginx","version":null,"unit":null,"status":"ready","is_default":null,"created_at":null,"updated_at":null}],"links":{"first":"\/?page=1","last":"\/?page=1","prev":null,"next":null},"meta":{"current_page":1,"from":1,"last_page":1,"links":[{"url":null,"label":"« Previous","active":false},{"url":"\/?page=1","label":"1","active":true},{"url":null,"label":"Next »","active":false}],"path":"\/","per_page":25,"to":2,"total":2}}' + content: '{"data":[{"id":3,"name":"Haven Romaguera","created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"},{"id":4,"name":"Viva Marquardt","created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"}],"links":{"first":"\/?page=1","last":"\/?page=1","prev":null,"next":null},"meta":{"current_page":1,"from":1,"last_page":1,"links":[{"url":null,"label":"« Previous","active":false},{"url":"\/?page=1","label":"1","active":true},{"url":null,"label":"Next »","active":false}],"path":"\/","per_page":25,"to":2,"total":2}}' headers: [] description: '' custom: [] @@ -63,15 +63,15 @@ endpoints: custom: [] - httpMethods: - - GET - uri: 'api/projects/{project_id}/servers/{server_id}/services/{id}' + - POST + uri: 'api/projects/{project_id}/servers/{server_id}/ssh-keys' metadata: - groupName: services + groupName: ssh-keys groupDescription: '' subgroup: '' subgroupDescription: '' - title: show - description: 'Get a service by ID.' + title: create + description: 'Deploy ssh key to server.' authenticated: false custom: [] headers: @@ -92,17 +92,7 @@ endpoints: name: server_id description: 'The ID of the server.' required: true - example: 32 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - id: - name: id - description: 'The ID of the service.' - required: true - example: 184 + example: 6 type: integer enumValues: [] exampleWasSpecified: false @@ -110,362 +100,49 @@ endpoints: custom: [] cleanUrlParameters: project_id: 1 - server_id: 32 - id: 184 + server_id: 6 queryParameters: [] cleanQueryParameters: [] - bodyParameters: [] - cleanBodyParameters: [] + bodyParameters: + key_id: + name: key_id + description: 'The ID of the key.' + required: true + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + name: + name: name + description: 'Key name, required if key_id is not provided.' + required: true + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + public_key: + name: public_key + description: 'Public Key, required if key_id is not provided.' + required: true + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanBodyParameters: + key_id: architecto + name: architecto + public_key: architecto fileParameters: [] responses: - status: 200 - content: '{"id":null,"server_id":1,"type":"webserver","type_data":null,"name":"nginx","version":null,"unit":null,"status":"ready","is_default":null,"created_at":null,"updated_at":null}' - headers: [] - description: '' - custom: [] - responseFields: [] - auth: [] - controller: null - method: null - route: null - custom: [] - - - httpMethods: - - POST - uri: 'api/projects/{project_id}/servers/{server_id}/services/{service_id}/start' - metadata: - groupName: services - groupDescription: '' - subgroup: '' - subgroupDescription: '' - title: start - description: 'Start service.' - authenticated: false - custom: [] - headers: - Content-Type: application/json - Accept: application/json - urlParameters: - project_id: - name: project_id - description: 'The ID of the project.' - required: true - example: 1 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - server_id: - name: server_id - description: 'The ID of the server.' - required: true - example: 32 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - service_id: - name: service_id - description: 'The ID of the service.' - required: true - example: 184 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - cleanUrlParameters: - project_id: 1 - server_id: 32 - service_id: 184 - queryParameters: [] - cleanQueryParameters: [] - bodyParameters: [] - cleanBodyParameters: [] - fileParameters: [] - responses: - - - status: 204 - content: null - headers: [] - description: '' - custom: [] - responseFields: [] - auth: [] - controller: null - method: null - route: null - custom: [] - - - httpMethods: - - POST - uri: 'api/projects/{project_id}/servers/{server_id}/services/{service_id}/stop' - metadata: - groupName: services - groupDescription: '' - subgroup: '' - subgroupDescription: '' - title: stop - description: 'Stop service.' - authenticated: false - custom: [] - headers: - Content-Type: application/json - Accept: application/json - urlParameters: - project_id: - name: project_id - description: 'The ID of the project.' - required: true - example: 1 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - server_id: - name: server_id - description: 'The ID of the server.' - required: true - example: 32 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - service_id: - name: service_id - description: 'The ID of the service.' - required: true - example: 184 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - cleanUrlParameters: - project_id: 1 - server_id: 32 - service_id: 184 - queryParameters: [] - cleanQueryParameters: [] - bodyParameters: [] - cleanBodyParameters: [] - fileParameters: [] - responses: - - - status: 204 - content: null - headers: [] - description: '' - custom: [] - responseFields: [] - auth: [] - controller: null - method: null - route: null - custom: [] - - - httpMethods: - - POST - uri: 'api/projects/{project_id}/servers/{server_id}/services/{service_id}/restart' - metadata: - groupName: services - groupDescription: '' - subgroup: '' - subgroupDescription: '' - title: restart - description: 'Restart service.' - authenticated: false - custom: [] - headers: - Content-Type: application/json - Accept: application/json - urlParameters: - project_id: - name: project_id - description: 'The ID of the project.' - required: true - example: 1 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - server_id: - name: server_id - description: 'The ID of the server.' - required: true - example: 32 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - service_id: - name: service_id - description: 'The ID of the service.' - required: true - example: 184 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - cleanUrlParameters: - project_id: 1 - server_id: 32 - service_id: 184 - queryParameters: [] - cleanQueryParameters: [] - bodyParameters: [] - cleanBodyParameters: [] - fileParameters: [] - responses: - - - status: 204 - content: null - headers: [] - description: '' - custom: [] - responseFields: [] - auth: [] - controller: null - method: null - route: null - custom: [] - - - httpMethods: - - POST - uri: 'api/projects/{project_id}/servers/{server_id}/services/{service_id}/enable' - metadata: - groupName: services - groupDescription: '' - subgroup: '' - subgroupDescription: '' - title: enable - description: 'Enable service.' - authenticated: false - custom: [] - headers: - Content-Type: application/json - Accept: application/json - urlParameters: - project_id: - name: project_id - description: 'The ID of the project.' - required: true - example: 1 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - server_id: - name: server_id - description: 'The ID of the server.' - required: true - example: 32 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - service_id: - name: service_id - description: 'The ID of the service.' - required: true - example: 184 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - cleanUrlParameters: - project_id: 1 - server_id: 32 - service_id: 184 - queryParameters: [] - cleanQueryParameters: [] - bodyParameters: [] - cleanBodyParameters: [] - fileParameters: [] - responses: - - - status: 204 - content: null - headers: [] - description: '' - custom: [] - responseFields: [] - auth: [] - controller: null - method: null - route: null - custom: [] - - - httpMethods: - - POST - uri: 'api/projects/{project_id}/servers/{server_id}/services/{service_id}/disable' - metadata: - groupName: services - groupDescription: '' - subgroup: '' - subgroupDescription: '' - title: disable - description: 'Disable service.' - authenticated: false - custom: [] - headers: - Content-Type: application/json - Accept: application/json - urlParameters: - project_id: - name: project_id - description: 'The ID of the project.' - required: true - example: 1 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - server_id: - name: server_id - description: 'The ID of the server.' - required: true - example: 32 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - service_id: - name: service_id - description: 'The ID of the service.' - required: true - example: 184 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - cleanUrlParameters: - project_id: 1 - server_id: 32 - service_id: 184 - queryParameters: [] - cleanQueryParameters: [] - bodyParameters: [] - cleanBodyParameters: [] - fileParameters: [] - responses: - - - status: 204 - content: null + content: '{"id":3,"name":"Ms. Elisabeth Okuneva","created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"}' headers: [] description: '' custom: [] @@ -478,14 +155,14 @@ endpoints: - httpMethods: - DELETE - uri: 'api/projects/{project_id}/servers/{server_id}/services/{service_id}' + uri: 'api/projects/{project_id}/servers/{server_id}/ssh-keys/{sshKey_id}' metadata: - groupName: services + groupName: ssh-keys groupDescription: '' subgroup: '' subgroupDescription: '' title: delete - description: 'Delete service.' + description: 'Delete ssh key from server.' authenticated: false custom: [] headers: @@ -506,17 +183,17 @@ endpoints: name: server_id description: 'The ID of the server.' required: true - example: 32 + example: 6 type: integer enumValues: [] exampleWasSpecified: false nullable: false custom: [] - service_id: - name: service_id - description: 'The ID of the service.' + sshKey_id: + name: sshKey_id + description: 'The ID of the sshKey.' required: true - example: 184 + example: 1 type: integer enumValues: [] exampleWasSpecified: false @@ -524,8 +201,8 @@ endpoints: custom: [] cleanUrlParameters: project_id: 1 - server_id: 32 - service_id: 184 + server_id: 6 + sshKey_id: 1 queryParameters: [] cleanQueryParameters: [] bodyParameters: [] diff --git a/.scribe/endpoints.cache/11.yaml b/.scribe/endpoints.cache/11.yaml index 33405652..9422e0ac 100644 --- a/.scribe/endpoints.cache/11.yaml +++ b/.scribe/endpoints.cache/11.yaml @@ -1,19 +1,19 @@ ## Autogenerated by Scribe. DO NOT MODIFY. -name: sites +name: services description: '' endpoints: - httpMethods: - GET - uri: 'api/projects/{project_id}/servers/{server_id}/sites' + uri: 'api/projects/{project_id}/servers/{server_id}/services' metadata: - groupName: sites + groupName: services groupDescription: '' subgroup: '' subgroupDescription: '' title: list - description: 'Get all sites.' + description: 'Get all services.' authenticated: false custom: [] headers: @@ -34,7 +34,7 @@ endpoints: name: server_id description: 'The ID of the server.' required: true - example: 32 + example: 6 type: integer enumValues: [] exampleWasSpecified: false @@ -42,7 +42,7 @@ endpoints: custom: [] cleanUrlParameters: project_id: 1 - server_id: 32 + server_id: 6 queryParameters: [] cleanQueryParameters: [] bodyParameters: [] @@ -51,7 +51,76 @@ endpoints: responses: - status: 200 - content: '{"data":[{"id":50,"server_id":1,"source_control_id":null,"type":"laravel","type_data":null,"domain":"test.com","aliases":null,"web_directory":"\/","path":"\/home","php_version":"8.2","repository":null,"branch":"main","status":"ready","port":null,"user":"vito","progress":100,"created_at":"2025-04-21T18:40:20.000000Z","updated_at":"2025-04-21T18:40:20.000000Z"},{"id":51,"server_id":1,"source_control_id":null,"type":"laravel","type_data":null,"domain":"test.com","aliases":null,"web_directory":"\/","path":"\/home","php_version":"8.2","repository":null,"branch":"main","status":"ready","port":null,"user":"vito","progress":100,"created_at":"2025-04-21T18:40:20.000000Z","updated_at":"2025-04-21T18:40:20.000000Z"}],"links":{"first":"\/?page=1","last":"\/?page=1","prev":null,"next":null},"meta":{"current_page":1,"from":1,"last_page":1,"links":[{"url":null,"label":"« Previous","active":false},{"url":"\/?page=1","label":"1","active":true},{"url":null,"label":"Next »","active":false}],"path":"\/","per_page":25,"to":2,"total":2}}' + content: '{"data":[{"id":null,"server_id":1,"type":"webserver","type_data":null,"name":"nginx","version":null,"unit":null,"status":"ready","status_color":"success","icon":"","is_default":null,"created_at":null,"updated_at":null},{"id":null,"server_id":1,"type":"webserver","type_data":null,"name":"nginx","version":null,"unit":null,"status":"ready","status_color":"success","icon":"","is_default":null,"created_at":null,"updated_at":null}],"links":{"first":"\/?page=1","last":"\/?page=1","prev":null,"next":null},"meta":{"current_page":1,"from":1,"last_page":1,"links":[{"url":null,"label":"« Previous","active":false},{"url":"\/?page=1","label":"1","active":true},{"url":null,"label":"Next »","active":false}],"path":"\/","per_page":25,"to":2,"total":2}}' + headers: [] + description: '' + custom: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - GET + uri: 'api/projects/{project_id}/servers/{server_id}/services/{id}' + metadata: + groupName: services + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: show + description: 'Get a service by ID.' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: + project_id: + name: project_id + description: 'The ID of the project.' + required: true + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + server_id: + name: server_id + description: 'The ID of the server.' + required: true + example: 6 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + id: + name: id + description: 'The ID of the service.' + required: true + example: 22 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + project_id: 1 + server_id: 6 + id: 22 + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 200 + content: '{"id":null,"server_id":1,"type":"webserver","type_data":null,"name":"nginx","version":null,"unit":null,"status":"ready","status_color":"success","icon":"","is_default":null,"created_at":null,"updated_at":null}' headers: [] description: '' custom: [] @@ -64,14 +133,14 @@ endpoints: - httpMethods: - POST - uri: 'api/projects/{project_id}/servers/{server_id}/sites' + uri: 'api/projects/{project_id}/servers/{server_id}/services/{service_id}/start' metadata: - groupName: sites + groupName: services groupDescription: '' subgroup: '' subgroupDescription: '' - title: create - description: 'Create a new site.' + title: start + description: 'Start service.' authenticated: false custom: [] headers: @@ -92,7 +161,17 @@ endpoints: name: server_id description: 'The ID of the server.' required: true - example: 32 + example: 6 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + service_id: + name: service_id + description: 'The ID of the service.' + required: true + example: 22 type: integer enumValues: [] exampleWasSpecified: false @@ -100,159 +179,17 @@ endpoints: custom: [] cleanUrlParameters: project_id: 1 - server_id: 32 + server_id: 6 + service_id: 22 queryParameters: [] cleanQueryParameters: [] - bodyParameters: - type: - name: type - description: '' - required: true - example: load-balancer - type: string - enumValues: - - php - - php-blank - - phpmyadmin - - laravel - - wordpress - - load-balancer - exampleWasSpecified: false - nullable: false - custom: [] - domain: - name: domain - description: '' - required: true - example: consequatur - type: string - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - aliases: - name: aliases - description: '' - required: true - example: - - consequatur - type: 'string[]' - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - php_version: - name: php_version - description: 'One of the installed PHP Versions' - required: true - example: '7.4' - type: string - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - web_directory: - name: web_directory - description: 'Required for PHP and Laravel sites' - required: true - example: public - type: string - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - source_control: - name: source_control - description: 'Source control ID, Required for Sites which support source control' - required: true - example: consequatur - type: string - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - repository: - name: repository - description: 'Repository, Required for Sites which support source control' - required: true - example: organization/repository - type: string - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - branch: - name: branch - description: 'Branch, Required for Sites which support source control' - required: true - example: main - type: string - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - composer: - name: composer - description: 'Run composer if site supports composer' - required: true - example: true - type: boolean - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - version: - name: version - description: 'Version, if the site type requires a version like PHPMyAdmin' - required: true - example: 5.2.1 - type: string - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - user: - name: user - description: 'user, to isolate the website under a new user' - required: true - example: consequatur - type: string - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - method: - name: method - description: 'Load balancer method, Required if the site type is Load balancer' - required: true - example: ip-hash - type: string - enumValues: - - round-robin - - least-connections - - ip-hash - exampleWasSpecified: false - nullable: false - custom: [] - cleanBodyParameters: - type: load-balancer - domain: consequatur - aliases: - - consequatur - php_version: '7.4' - web_directory: public - source_control: consequatur - repository: organization/repository - branch: main - composer: true - version: 5.2.1 - user: consequatur - method: ip-hash + bodyParameters: [] + cleanBodyParameters: [] fileParameters: [] responses: - - status: 200 - content: '{"id":50,"server_id":1,"source_control_id":null,"type":"laravel","type_data":null,"domain":"test.com","aliases":null,"web_directory":"\/","path":"\/home","php_version":"8.2","repository":null,"branch":"main","status":"ready","port":null,"user":"vito","progress":100,"created_at":"2025-04-21T18:40:20.000000Z","updated_at":"2025-04-21T18:40:20.000000Z"}' + status: 204 + content: null headers: [] description: '' custom: [] @@ -264,15 +201,15 @@ endpoints: custom: [] - httpMethods: - - GET - uri: 'api/projects/{project_id}/servers/{server_id}/sites/{id}' + - POST + uri: 'api/projects/{project_id}/servers/{server_id}/services/{service_id}/stop' metadata: - groupName: sites + groupName: services groupDescription: '' subgroup: '' subgroupDescription: '' - title: show - description: 'Get a site by ID.' + title: stop + description: 'Stop service.' authenticated: false custom: [] headers: @@ -293,17 +230,17 @@ endpoints: name: server_id description: 'The ID of the server.' required: true - example: 32 + example: 6 type: integer enumValues: [] exampleWasSpecified: false nullable: false custom: [] - id: - name: id - description: 'The ID of the site.' + service_id: + name: service_id + description: 'The ID of the service.' required: true - example: 17 + example: 22 type: integer enumValues: [] exampleWasSpecified: false @@ -311,8 +248,8 @@ endpoints: custom: [] cleanUrlParameters: project_id: 1 - server_id: 32 - id: 17 + server_id: 6 + service_id: 22 queryParameters: [] cleanQueryParameters: [] bodyParameters: [] @@ -320,8 +257,215 @@ endpoints: fileParameters: [] responses: - - status: 200 - content: '{"id":50,"server_id":1,"source_control_id":null,"type":"laravel","type_data":null,"domain":"test.com","aliases":null,"web_directory":"\/","path":"\/home","php_version":"8.2","repository":null,"branch":"main","status":"ready","port":null,"user":"vito","progress":100,"created_at":"2025-04-21T18:40:20.000000Z","updated_at":"2025-04-21T18:40:20.000000Z"}' + status: 204 + content: null + headers: [] + description: '' + custom: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - POST + uri: 'api/projects/{project_id}/servers/{server_id}/services/{service_id}/restart' + metadata: + groupName: services + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: restart + description: 'Restart service.' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: + project_id: + name: project_id + description: 'The ID of the project.' + required: true + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + server_id: + name: server_id + description: 'The ID of the server.' + required: true + example: 6 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + service_id: + name: service_id + description: 'The ID of the service.' + required: true + example: 22 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + project_id: 1 + server_id: 6 + service_id: 22 + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 204 + content: null + headers: [] + description: '' + custom: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - POST + uri: 'api/projects/{project_id}/servers/{server_id}/services/{service_id}/enable' + metadata: + groupName: services + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: enable + description: 'Enable service.' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: + project_id: + name: project_id + description: 'The ID of the project.' + required: true + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + server_id: + name: server_id + description: 'The ID of the server.' + required: true + example: 6 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + service_id: + name: service_id + description: 'The ID of the service.' + required: true + example: 22 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + project_id: 1 + server_id: 6 + service_id: 22 + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 204 + content: null + headers: [] + description: '' + custom: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - POST + uri: 'api/projects/{project_id}/servers/{server_id}/services/{service_id}/disable' + metadata: + groupName: services + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: disable + description: 'Disable service.' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: + project_id: + name: project_id + description: 'The ID of the project.' + required: true + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + server_id: + name: server_id + description: 'The ID of the server.' + required: true + example: 6 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + service_id: + name: service_id + description: 'The ID of the service.' + required: true + example: 22 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + project_id: 1 + server_id: 6 + service_id: 22 + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 204 + content: null headers: [] description: '' custom: [] @@ -334,14 +478,14 @@ endpoints: - httpMethods: - DELETE - uri: 'api/projects/{project_id}/servers/{server_id}/sites/{site_id}' + uri: 'api/projects/{project_id}/servers/{server_id}/services/{service_id}' metadata: - groupName: sites + groupName: services groupDescription: '' subgroup: '' subgroupDescription: '' title: delete - description: 'Delete site.' + description: 'Delete service.' authenticated: false custom: [] headers: @@ -362,17 +506,17 @@ endpoints: name: server_id description: 'The ID of the server.' required: true - example: 32 + example: 6 type: integer enumValues: [] exampleWasSpecified: false nullable: false custom: [] - site_id: - name: site_id - description: 'The ID of the site.' + service_id: + name: service_id + description: 'The ID of the service.' required: true - example: 17 + example: 22 type: integer enumValues: [] exampleWasSpecified: false @@ -380,8 +524,8 @@ endpoints: custom: [] cleanUrlParameters: project_id: 1 - server_id: 32 - site_id: 17 + server_id: 6 + service_id: 22 queryParameters: [] cleanQueryParameters: [] bodyParameters: [] @@ -400,548 +544,3 @@ endpoints: method: null route: null custom: [] - - - httpMethods: - - POST - uri: 'api/projects/{project_id}/servers/{server_id}/sites/{site_id}/load-balancer' - metadata: - groupName: sites - groupDescription: '' - subgroup: '' - subgroupDescription: '' - title: load-balancer - description: 'Update load balancer.' - authenticated: false - custom: [] - headers: - Content-Type: application/json - Accept: application/json - urlParameters: - project_id: - name: project_id - description: 'The ID of the project.' - required: true - example: 1 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - server_id: - name: server_id - description: 'The ID of the server.' - required: true - example: 32 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - site_id: - name: site_id - description: 'The ID of the site.' - required: true - example: 17 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - cleanUrlParameters: - project_id: 1 - server_id: 32 - site_id: 17 - queryParameters: [] - cleanQueryParameters: [] - bodyParameters: - method: - name: method - description: 'Load balancer method, Required if the site type is Load balancer' - required: true - example: ip-hash - type: string - enumValues: - - round-robin - - least-connections - - ip-hash - exampleWasSpecified: false - nullable: false - custom: [] - servers: - name: servers - description: 'Array of servers including server, port, weight, backup. (server is the local IP of the server)' - required: true - example: - - consequatur - type: 'string[]' - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - cleanBodyParameters: - method: ip-hash - servers: - - consequatur - fileParameters: [] - responses: - - - status: 200 - content: null - headers: [] - description: '' - custom: [] - responseFields: [] - auth: [] - controller: null - method: null - route: null - custom: [] - - - httpMethods: - - PUT - uri: 'api/projects/{project_id}/servers/{server_id}/sites/{site_id}/aliases' - metadata: - groupName: sites - groupDescription: '' - subgroup: '' - subgroupDescription: '' - title: aliases - description: 'Update aliases.' - authenticated: false - custom: [] - headers: - Content-Type: application/json - Accept: application/json - urlParameters: - project_id: - name: project_id - description: 'The ID of the project.' - required: true - example: 1 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - server_id: - name: server_id - description: 'The ID of the server.' - required: true - example: 32 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - site_id: - name: site_id - description: 'The ID of the site.' - required: true - example: 17 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - cleanUrlParameters: - project_id: 1 - server_id: 32 - site_id: 17 - queryParameters: [] - cleanQueryParameters: [] - bodyParameters: - aliases: - name: aliases - description: 'Array of aliases' - required: true - example: - - consequatur - type: 'string[]' - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - cleanBodyParameters: - aliases: - - consequatur - fileParameters: [] - responses: - - - status: 200 - content: null - headers: [] - description: '' - custom: [] - responseFields: [] - auth: [] - controller: null - method: null - route: null - custom: [] - - - httpMethods: - - POST - uri: 'api/projects/{project_id}/servers/{server_id}/sites/{site_id}/deploy' - metadata: - groupName: sites - groupDescription: '' - subgroup: '' - subgroupDescription: '' - title: deploy - description: 'Run site deployment script' - authenticated: false - custom: [] - headers: - Content-Type: application/json - Accept: application/json - urlParameters: - project_id: - name: project_id - description: 'The ID of the project.' - required: true - example: 1 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - server_id: - name: server_id - description: 'The ID of the server.' - required: true - example: 32 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - site_id: - name: site_id - description: 'The ID of the site.' - required: true - example: 17 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - cleanUrlParameters: - project_id: 1 - server_id: 32 - site_id: 17 - queryParameters: [] - cleanQueryParameters: [] - bodyParameters: [] - cleanBodyParameters: [] - fileParameters: [] - responses: - - - status: 200 - content: null - headers: [] - description: '' - custom: [] - responseFields: [] - auth: [] - controller: null - method: null - route: null - custom: [] - - - httpMethods: - - PUT - uri: 'api/projects/{project_id}/servers/{server_id}/sites/{site_id}/deployment-script' - metadata: - groupName: sites - groupDescription: '' - subgroup: '' - subgroupDescription: '' - title: deployment-script - description: 'Update site deployment script' - authenticated: false - custom: [] - headers: - Content-Type: application/json - Accept: application/json - urlParameters: - project_id: - name: project_id - description: 'The ID of the project.' - required: true - example: 1 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - server_id: - name: server_id - description: 'The ID of the server.' - required: true - example: 32 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - site_id: - name: site_id - description: 'The ID of the site.' - required: true - example: 17 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - cleanUrlParameters: - project_id: 1 - server_id: 32 - site_id: 17 - queryParameters: [] - cleanQueryParameters: [] - bodyParameters: - script: - name: script - description: 'Content of the deployment script' - required: true - example: consequatur - type: string - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - cleanBodyParameters: - script: consequatur - fileParameters: [] - responses: - - - status: 204 - content: null - headers: [] - description: '' - custom: [] - responseFields: [] - auth: [] - controller: null - method: null - route: null - custom: [] - - - httpMethods: - - GET - uri: 'api/projects/{project_id}/servers/{server_id}/sites/{site_id}/deployment-script' - metadata: - groupName: sites - groupDescription: '' - subgroup: '' - subgroupDescription: '' - title: deployment-script - description: 'Get site deployment script content' - authenticated: false - custom: [] - headers: - Content-Type: application/json - Accept: application/json - urlParameters: - project_id: - name: project_id - description: 'The ID of the project.' - required: true - example: 1 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - server_id: - name: server_id - description: 'The ID of the server.' - required: true - example: 32 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - site_id: - name: site_id - description: 'The ID of the site.' - required: true - example: 17 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - cleanUrlParameters: - project_id: 1 - server_id: 32 - site_id: 17 - queryParameters: [] - cleanQueryParameters: [] - bodyParameters: [] - cleanBodyParameters: [] - fileParameters: [] - responses: - - - status: 200 - content: null - headers: [] - description: '' - custom: [] - responseFields: [] - auth: [] - controller: null - method: null - route: null - custom: [] - - - httpMethods: - - GET - uri: 'api/projects/{project_id}/servers/{server_id}/sites/{site_id}/env' - metadata: - groupName: sites - groupDescription: '' - subgroup: '' - subgroupDescription: '' - title: env - description: 'Get site .env file content' - authenticated: false - custom: [] - headers: - Content-Type: application/json - Accept: application/json - urlParameters: - project_id: - name: project_id - description: 'The ID of the project.' - required: true - example: 1 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - server_id: - name: server_id - description: 'The ID of the server.' - required: true - example: 32 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - site_id: - name: site_id - description: 'The ID of the site.' - required: true - example: 17 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - cleanUrlParameters: - project_id: 1 - server_id: 32 - site_id: 17 - queryParameters: [] - cleanQueryParameters: [] - bodyParameters: [] - cleanBodyParameters: [] - fileParameters: [] - responses: - - - status: 200 - content: '{"data":{"env":"APP_NAME=Laravel\\nAPP_ENV=production"}}' - headers: [] - description: '' - custom: [] - responseFields: [] - auth: [] - controller: null - method: null - route: null - custom: [] - - - httpMethods: - - PUT - uri: 'api/projects/{project_id}/servers/{server_id}/sites/{site_id}/env' - metadata: - groupName: sites - groupDescription: '' - subgroup: '' - subgroupDescription: '' - title: env - description: 'Update site .env file' - authenticated: false - custom: [] - headers: - Content-Type: application/json - Accept: application/json - urlParameters: - project_id: - name: project_id - description: 'The ID of the project.' - required: true - example: 1 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - server_id: - name: server_id - description: 'The ID of the server.' - required: true - example: 32 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - site_id: - name: site_id - description: 'The ID of the site.' - required: true - example: 17 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - cleanUrlParameters: - project_id: 1 - server_id: 32 - site_id: 17 - queryParameters: [] - cleanQueryParameters: [] - bodyParameters: - env: - name: env - description: 'Content of the .env file' - required: true - example: consequatur - type: string - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - cleanBodyParameters: - env: consequatur - fileParameters: [] - responses: - - - status: 200 - content: null - headers: [] - description: '' - custom: [] - responseFields: [] - auth: [] - controller: null - method: null - route: null - custom: [] diff --git a/.scribe/endpoints.cache/12.yaml b/.scribe/endpoints.cache/12.yaml index 918ce533..62669800 100644 --- a/.scribe/endpoints.cache/12.yaml +++ b/.scribe/endpoints.cache/12.yaml @@ -1,19 +1,19 @@ ## Autogenerated by Scribe. DO NOT MODIFY. -name: source-controls +name: sites description: '' endpoints: - httpMethods: - GET - uri: 'api/projects/{project_id}/source-controls' + uri: 'api/projects/{project_id}/servers/{server_id}/sites' metadata: - groupName: source-controls + groupName: sites groupDescription: '' subgroup: '' subgroupDescription: '' title: list - description: '' + description: 'Get all sites.' authenticated: false custom: [] headers: @@ -30,8 +30,19 @@ endpoints: exampleWasSpecified: false nullable: false custom: [] + server_id: + name: server_id + description: 'The ID of the server.' + required: true + example: 6 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] cleanUrlParameters: project_id: 1 + server_id: 6 queryParameters: [] cleanQueryParameters: [] bodyParameters: [] @@ -40,7 +51,7 @@ endpoints: responses: - status: 200 - content: '{"data":[{"id":5,"project_id":null,"global":true,"name":"Dr. Cornelius Luettgen V","provider":"github","created_at":"2025-04-21T18:40:20.000000Z","updated_at":"2025-04-21T18:40:20.000000Z"},{"id":6,"project_id":null,"global":true,"name":"Orville Satterfield","provider":"github","created_at":"2025-04-21T18:40:20.000000Z","updated_at":"2025-04-21T18:40:20.000000Z"}],"links":{"first":"\/?page=1","last":"\/?page=1","prev":null,"next":null},"meta":{"current_page":1,"from":1,"last_page":1,"links":[{"url":null,"label":"« Previous","active":false},{"url":"\/?page=1","label":"1","active":true},{"url":null,"label":"Next »","active":false}],"path":"\/","per_page":25,"to":2,"total":2}}' + content: '{"data":[{"id":15,"server_id":1,"source_control_id":null,"type":"laravel","type_data":null,"features":["deployment","commands","env","ssl","workers"],"domain":"test.com","aliases":null,"web_directory":"\/","path":"\/home","php_version":"8.2","repository":null,"branch":"main","status":"ready","status_color":"success","auto_deploy":false,"port":null,"user":"vito","url":"http:\/\/test.com","force_ssl":false,"progress":100,"created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"},{"id":16,"server_id":1,"source_control_id":null,"type":"laravel","type_data":null,"features":["deployment","commands","env","ssl","workers"],"domain":"test.com","aliases":null,"web_directory":"\/","path":"\/home","php_version":"8.2","repository":null,"branch":"main","status":"ready","status_color":"success","auto_deploy":false,"port":null,"user":"vito","url":"http:\/\/test.com","force_ssl":false,"progress":100,"created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"}],"links":{"first":"\/?page=1","last":"\/?page=1","prev":null,"next":null},"meta":{"current_page":1,"from":1,"last_page":1,"links":[{"url":null,"label":"« Previous","active":false},{"url":"\/?page=1","label":"1","active":true},{"url":null,"label":"Next »","active":false}],"path":"\/","per_page":25,"to":2,"total":2}}' headers: [] description: '' custom: [] @@ -53,14 +64,14 @@ endpoints: - httpMethods: - POST - uri: 'api/projects/{project_id}/source-controls' + uri: 'api/projects/{project_id}/servers/{server_id}/sites' metadata: - groupName: source-controls + groupName: sites groupDescription: '' subgroup: '' subgroupDescription: '' title: create - description: '' + description: 'Create a new site.' authenticated: false custom: [] headers: @@ -77,86 +88,171 @@ endpoints: exampleWasSpecified: false nullable: false custom: [] + server_id: + name: server_id + description: 'The ID of the server.' + required: true + example: 6 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] cleanUrlParameters: project_id: 1 + server_id: 6 queryParameters: [] cleanQueryParameters: [] bodyParameters: - provider: - name: provider - description: 'The provider' + type: + name: type + description: '' required: true - example: gitlab + example: php-blank type: string enumValues: - - gitlab - - github - - bitbucket + - php + - php-blank + - phpmyadmin + - laravel + - wordpress + - load-balancer exampleWasSpecified: false nullable: false custom: [] - name: - name: name - description: 'The name of the storage provider.' + domain: + name: domain + description: '' required: true - example: consequatur + example: architecto type: string enumValues: [] exampleWasSpecified: false nullable: false custom: [] - token: - name: token - description: 'The token if provider requires api token' + aliases: + name: aliases + description: '' required: true - example: consequatur + example: + - architecto + type: 'string[]' + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + php_version: + name: php_version + description: 'One of the installed PHP Versions' + required: true + example: '7.4' type: string enumValues: [] exampleWasSpecified: false nullable: false custom: [] - url: - name: url - description: 'The URL if the provider is Gitlab and it is self-hosted' + web_directory: + name: web_directory + description: 'Required for PHP and Laravel sites' required: true - example: 'http://kunze.biz/iste-laborum-eius-est-dolor.html' + example: public type: string enumValues: [] exampleWasSpecified: false nullable: false custom: [] - username: - name: username - description: 'The username if the provider is Bitbucket' + source_control: + name: source_control + description: 'Source control ID, Required for Sites which support source control' required: true - example: consequatur + example: architecto type: string enumValues: [] exampleWasSpecified: false nullable: false custom: [] - password: - name: password - description: 'The password if the provider is Bitbucket' + repository: + name: repository + description: 'Repository, Required for Sites which support source control' required: true - example: 'O[2UZ5ij-e/dl4m{o,' + example: organization/repository type: string enumValues: [] exampleWasSpecified: false nullable: false custom: [] + branch: + name: branch + description: 'Branch, Required for Sites which support source control' + required: true + example: main + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + composer: + name: composer + description: 'Run composer if site supports composer' + required: true + example: true + type: boolean + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + version: + name: version + description: 'Version, if the site type requires a version like PHPMyAdmin' + required: true + example: 5.2.1 + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + user: + name: user + description: 'user, to isolate the website under a new user' + required: true + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + method: + name: method + description: 'Load balancer method, Required if the site type is Load balancer' + required: true + example: round-robin + type: string + enumValues: + - round-robin + - least-connections + - ip-hash + exampleWasSpecified: false + nullable: false + custom: [] cleanBodyParameters: - provider: gitlab - name: consequatur - token: consequatur - url: 'http://kunze.biz/iste-laborum-eius-est-dolor.html' - username: consequatur - password: 'O[2UZ5ij-e/dl4m{o,' + type: php-blank + domain: architecto + aliases: + - architecto + php_version: '7.4' + web_directory: public + source_control: architecto + repository: organization/repository + branch: main + composer: true + version: 5.2.1 + user: architecto + method: round-robin fileParameters: [] responses: - status: 200 - content: '{"id":5,"project_id":null,"global":true,"name":"Lonny Ankunding","provider":"github","created_at":"2025-04-21T18:40:20.000000Z","updated_at":"2025-04-21T18:40:20.000000Z"}' + content: '{"id":15,"server_id":1,"source_control_id":null,"type":"laravel","type_data":null,"features":["deployment","commands","env","ssl","workers"],"domain":"test.com","aliases":null,"web_directory":"\/","path":"\/home","php_version":"8.2","repository":null,"branch":"main","status":"ready","status_color":"success","auto_deploy":false,"port":null,"user":"vito","url":"http:\/\/test.com","force_ssl":false,"progress":100,"created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"}' headers: [] description: '' custom: [] @@ -169,14 +265,14 @@ endpoints: - httpMethods: - GET - uri: 'api/projects/{project_id}/source-controls/{sourceControl_id}' + uri: 'api/projects/{project_id}/servers/{server_id}/sites/{id}' metadata: - groupName: source-controls + groupName: sites groupDescription: '' subgroup: '' subgroupDescription: '' title: show - description: '' + description: 'Get a site by ID.' authenticated: false custom: [] headers: @@ -193,11 +289,21 @@ endpoints: exampleWasSpecified: false nullable: false custom: [] - sourceControl_id: - name: sourceControl_id - description: 'The ID of the sourceControl.' + server_id: + name: server_id + description: 'The ID of the server.' required: true - example: 1 + example: 6 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + id: + name: id + description: 'The ID of the site.' + required: true + example: 14 type: integer enumValues: [] exampleWasSpecified: false @@ -205,7 +311,8 @@ endpoints: custom: [] cleanUrlParameters: project_id: 1 - sourceControl_id: 1 + server_id: 6 + id: 14 queryParameters: [] cleanQueryParameters: [] bodyParameters: [] @@ -214,133 +321,7 @@ endpoints: responses: - status: 200 - content: '{"id":5,"project_id":null,"global":true,"name":"Dr. Enoch Harber II","provider":"github","created_at":"2025-04-21T18:40:20.000000Z","updated_at":"2025-04-21T18:40:20.000000Z"}' - headers: [] - description: '' - custom: [] - responseFields: [] - auth: [] - controller: null - method: null - route: null - custom: [] - - - httpMethods: - - PUT - uri: 'api/projects/{project_id}/source-controls/{sourceControl_id}' - metadata: - groupName: source-controls - groupDescription: '' - subgroup: '' - subgroupDescription: '' - title: update - description: '' - authenticated: false - custom: [] - headers: - Content-Type: application/json - Accept: application/json - urlParameters: - project_id: - name: project_id - description: 'The ID of the project.' - required: true - example: 1 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - sourceControl_id: - name: sourceControl_id - description: 'The ID of the sourceControl.' - required: true - example: 1 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - cleanUrlParameters: - project_id: 1 - sourceControl_id: 1 - queryParameters: [] - cleanQueryParameters: [] - bodyParameters: - name: - name: name - description: 'The name of the storage provider.' - required: true - example: consequatur - type: string - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - token: - name: token - description: 'The token if provider requires api token' - required: true - example: consequatur - type: string - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - url: - name: url - description: 'The URL if the provider is Gitlab and it is self-hosted' - required: true - example: 'http://kunze.biz/iste-laborum-eius-est-dolor.html' - type: string - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - username: - name: username - description: 'The username if the provider is Bitbucket' - required: true - example: consequatur - type: string - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - password: - name: password - description: 'The password if the provider is Bitbucket' - required: true - example: 'O[2UZ5ij-e/dl4m{o,' - type: string - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - global: - name: global - description: 'Accessible in all projects' - required: true - example: false - type: string - enumValues: - - true - - false - exampleWasSpecified: false - nullable: false - custom: [] - cleanBodyParameters: - name: consequatur - token: consequatur - url: 'http://kunze.biz/iste-laborum-eius-est-dolor.html' - username: consequatur - password: 'O[2UZ5ij-e/dl4m{o,' - global: false - fileParameters: [] - responses: - - - status: 200 - content: '{"id":5,"project_id":null,"global":true,"name":"Lonny Ankunding","provider":"github","created_at":"2025-04-21T18:40:20.000000Z","updated_at":"2025-04-21T18:40:20.000000Z"}' + content: '{"id":15,"server_id":1,"source_control_id":null,"type":"laravel","type_data":null,"features":["deployment","commands","env","ssl","workers"],"domain":"test.com","aliases":null,"web_directory":"\/","path":"\/home","php_version":"8.2","repository":null,"branch":"main","status":"ready","status_color":"success","auto_deploy":false,"port":null,"user":"vito","url":"http:\/\/test.com","force_ssl":false,"progress":100,"created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"}' headers: [] description: '' custom: [] @@ -353,14 +334,14 @@ endpoints: - httpMethods: - DELETE - uri: 'api/projects/{project_id}/source-controls/{sourceControl_id}' + uri: 'api/projects/{project_id}/servers/{server_id}/sites/{site_id}' metadata: - groupName: source-controls + groupName: sites groupDescription: '' subgroup: '' subgroupDescription: '' title: delete - description: '' + description: 'Delete site.' authenticated: false custom: [] headers: @@ -377,11 +358,21 @@ endpoints: exampleWasSpecified: false nullable: false custom: [] - sourceControl_id: - name: sourceControl_id - description: 'The ID of the sourceControl.' + server_id: + name: server_id + description: 'The ID of the server.' required: true - example: 1 + example: 6 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + site_id: + name: site_id + description: 'The ID of the site.' + required: true + example: 14 type: integer enumValues: [] exampleWasSpecified: false @@ -389,7 +380,8 @@ endpoints: custom: [] cleanUrlParameters: project_id: 1 - sourceControl_id: 1 + server_id: 6 + site_id: 14 queryParameters: [] cleanQueryParameters: [] bodyParameters: [] @@ -408,3 +400,548 @@ endpoints: method: null route: null custom: [] + - + httpMethods: + - POST + uri: 'api/projects/{project_id}/servers/{server_id}/sites/{site_id}/load-balancer' + metadata: + groupName: sites + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: load-balancer + description: 'Update load balancer.' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: + project_id: + name: project_id + description: 'The ID of the project.' + required: true + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + server_id: + name: server_id + description: 'The ID of the server.' + required: true + example: 6 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + site_id: + name: site_id + description: 'The ID of the site.' + required: true + example: 14 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + project_id: 1 + server_id: 6 + site_id: 14 + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: + method: + name: method + description: 'Load balancer method, Required if the site type is Load balancer' + required: true + example: round-robin + type: string + enumValues: + - round-robin + - least-connections + - ip-hash + exampleWasSpecified: false + nullable: false + custom: [] + servers: + name: servers + description: 'Array of servers including server, port, weight, backup. (server is the local IP of the server)' + required: true + example: + - architecto + type: 'string[]' + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanBodyParameters: + method: round-robin + servers: + - architecto + fileParameters: [] + responses: + - + status: 200 + content: null + headers: [] + description: '' + custom: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - PUT + uri: 'api/projects/{project_id}/servers/{server_id}/sites/{site_id}/aliases' + metadata: + groupName: sites + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: aliases + description: 'Update aliases.' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: + project_id: + name: project_id + description: 'The ID of the project.' + required: true + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + server_id: + name: server_id + description: 'The ID of the server.' + required: true + example: 6 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + site_id: + name: site_id + description: 'The ID of the site.' + required: true + example: 14 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + project_id: 1 + server_id: 6 + site_id: 14 + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: + aliases: + name: aliases + description: 'Array of aliases' + required: true + example: + - architecto + type: 'string[]' + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanBodyParameters: + aliases: + - architecto + fileParameters: [] + responses: + - + status: 200 + content: null + headers: [] + description: '' + custom: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - POST + uri: 'api/projects/{project_id}/servers/{server_id}/sites/{site_id}/deploy' + metadata: + groupName: sites + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: deploy + description: 'Run site deployment script' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: + project_id: + name: project_id + description: 'The ID of the project.' + required: true + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + server_id: + name: server_id + description: 'The ID of the server.' + required: true + example: 6 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + site_id: + name: site_id + description: 'The ID of the site.' + required: true + example: 14 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + project_id: 1 + server_id: 6 + site_id: 14 + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 200 + content: null + headers: [] + description: '' + custom: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - PUT + uri: 'api/projects/{project_id}/servers/{server_id}/sites/{site_id}/deployment-script' + metadata: + groupName: sites + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: deployment-script + description: 'Update site deployment script' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: + project_id: + name: project_id + description: 'The ID of the project.' + required: true + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + server_id: + name: server_id + description: 'The ID of the server.' + required: true + example: 6 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + site_id: + name: site_id + description: 'The ID of the site.' + required: true + example: 14 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + project_id: 1 + server_id: 6 + site_id: 14 + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: + script: + name: script + description: 'Content of the deployment script' + required: true + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanBodyParameters: + script: architecto + fileParameters: [] + responses: + - + status: 204 + content: null + headers: [] + description: '' + custom: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - GET + uri: 'api/projects/{project_id}/servers/{server_id}/sites/{site_id}/deployment-script' + metadata: + groupName: sites + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: deployment-script + description: 'Get site deployment script content' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: + project_id: + name: project_id + description: 'The ID of the project.' + required: true + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + server_id: + name: server_id + description: 'The ID of the server.' + required: true + example: 6 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + site_id: + name: site_id + description: 'The ID of the site.' + required: true + example: 14 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + project_id: 1 + server_id: 6 + site_id: 14 + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 200 + content: null + headers: [] + description: '' + custom: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - GET + uri: 'api/projects/{project_id}/servers/{server_id}/sites/{site_id}/env' + metadata: + groupName: sites + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: env + description: 'Get site .env file content' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: + project_id: + name: project_id + description: 'The ID of the project.' + required: true + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + server_id: + name: server_id + description: 'The ID of the server.' + required: true + example: 6 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + site_id: + name: site_id + description: 'The ID of the site.' + required: true + example: 14 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + project_id: 1 + server_id: 6 + site_id: 14 + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 200 + content: '{"data":{"env":"APP_NAME=Laravel\\nAPP_ENV=production"}}' + headers: [] + description: '' + custom: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - PUT + uri: 'api/projects/{project_id}/servers/{server_id}/sites/{site_id}/env' + metadata: + groupName: sites + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: env + description: 'Update site .env file' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: + project_id: + name: project_id + description: 'The ID of the project.' + required: true + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + server_id: + name: server_id + description: 'The ID of the server.' + required: true + example: 6 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + site_id: + name: site_id + description: 'The ID of the site.' + required: true + example: 14 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + project_id: 1 + server_id: 6 + site_id: 14 + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: + env: + name: env + description: 'Content of the .env file' + required: true + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanBodyParameters: + env: architecto + fileParameters: [] + responses: + - + status: 200 + content: null + headers: [] + description: '' + custom: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] diff --git a/.scribe/endpoints.cache/13.yaml b/.scribe/endpoints.cache/13.yaml index 850650de..8c17ea81 100644 --- a/.scribe/endpoints.cache/13.yaml +++ b/.scribe/endpoints.cache/13.yaml @@ -1,14 +1,14 @@ ## Autogenerated by Scribe. DO NOT MODIFY. -name: storage-providers +name: source-controls description: '' endpoints: - httpMethods: - GET - uri: 'api/projects/{project_id}/storage-providers' + uri: 'api/projects/{project_id}/source-controls' metadata: - groupName: storage-providers + groupName: source-controls groupDescription: '' subgroup: '' subgroupDescription: '' @@ -40,7 +40,7 @@ endpoints: responses: - status: 200 - content: '{"data":[{"id":5,"project_id":null,"global":true,"name":"dolores","provider":"local","created_at":"2025-04-21T18:40:20.000000Z","updated_at":"2025-04-21T18:40:20.000000Z"},{"id":6,"project_id":null,"global":true,"name":"dignissimos","provider":"dropbox","created_at":"2025-04-21T18:40:20.000000Z","updated_at":"2025-04-21T18:40:20.000000Z"}],"links":{"first":"\/?page=1","last":"\/?page=1","prev":null,"next":null},"meta":{"current_page":1,"from":1,"last_page":1,"links":[{"url":null,"label":"« Previous","active":false},{"url":"\/?page=1","label":"1","active":true},{"url":null,"label":"Next »","active":false}],"path":"\/","per_page":25,"to":2,"total":2}}' + content: '{"data":[{"id":2,"project_id":null,"global":true,"name":"Ms. Elisabeth Okuneva","provider":"github","created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"},{"id":3,"project_id":null,"global":true,"name":"Aleen O''Kon","provider":"github","created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"}],"links":{"first":"\/?page=1","last":"\/?page=1","prev":null,"next":null},"meta":{"current_page":1,"from":1,"last_page":1,"links":[{"url":null,"label":"« Previous","active":false},{"url":"\/?page=1","label":"1","active":true},{"url":null,"label":"Next »","active":false}],"path":"\/","per_page":25,"to":2,"total":2}}' headers: [] description: '' custom: [] @@ -53,9 +53,9 @@ endpoints: - httpMethods: - POST - uri: 'api/projects/{project_id}/storage-providers' + uri: 'api/projects/{project_id}/source-controls' metadata: - groupName: storage-providers + groupName: source-controls groupDescription: '' subgroup: '' subgroupDescription: '' @@ -84,11 +84,14 @@ endpoints: bodyParameters: provider: name: provider - description: 'The provider (aws, linode, hetzner, digitalocean, vultr, ...)' + description: 'The provider' required: true - example: consequatur + example: gitlab type: string - enumValues: [] + enumValues: + - gitlab + - github + - bitbucket exampleWasSpecified: false nullable: false custom: [] @@ -96,7 +99,7 @@ endpoints: name: name description: 'The name of the storage provider.' required: true - example: consequatur + example: architecto type: string enumValues: [] exampleWasSpecified: false @@ -106,43 +109,54 @@ endpoints: name: token description: 'The token if provider requires api token' required: true - example: consequatur + example: architecto type: string enumValues: [] exampleWasSpecified: false nullable: false custom: [] - key: - name: key - description: 'The key if provider requires key' + url: + name: url + description: 'The URL if the provider is Gitlab and it is self-hosted' required: true - example: consequatur + example: 'http://www.bailey.biz/quos-velit-et-fugiat-sunt-nihil-accusantium-harum.html' type: string enumValues: [] exampleWasSpecified: false nullable: false custom: [] - secret: - name: secret - description: 'The secret if provider requires key' + username: + name: username + description: 'The username if the provider is Bitbucket' required: true - example: consequatur + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + password: + name: password + description: 'The password if the provider is Bitbucket' + required: true + example: '|]|{+-' type: string enumValues: [] exampleWasSpecified: false nullable: false custom: [] cleanBodyParameters: - provider: consequatur - name: consequatur - token: consequatur - key: consequatur - secret: consequatur + provider: gitlab + name: architecto + token: architecto + url: 'http://www.bailey.biz/quos-velit-et-fugiat-sunt-nihil-accusantium-harum.html' + username: architecto + password: '|]|{+-' fileParameters: [] responses: - status: 200 - content: '{"id":5,"project_id":null,"global":true,"name":"dolores","provider":"local","created_at":"2025-04-21T18:40:20.000000Z","updated_at":"2025-04-21T18:40:20.000000Z"}' + content: '{"id":2,"project_id":null,"global":true,"name":"Mrs. Justina Gaylord","provider":"github","created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"}' headers: [] description: '' custom: [] @@ -155,9 +169,9 @@ endpoints: - httpMethods: - GET - uri: 'api/projects/{project_id}/storage-providers/{storageProvider_id}' + uri: 'api/projects/{project_id}/source-controls/{sourceControl_id}' metadata: - groupName: storage-providers + groupName: source-controls groupDescription: '' subgroup: '' subgroupDescription: '' @@ -179,11 +193,11 @@ endpoints: exampleWasSpecified: false nullable: false custom: [] - storageProvider_id: - name: storageProvider_id - description: 'The ID of the storageProvider.' + sourceControl_id: + name: sourceControl_id + description: 'The ID of the sourceControl.' required: true - example: 3 + example: 1 type: integer enumValues: [] exampleWasSpecified: false @@ -191,7 +205,7 @@ endpoints: custom: [] cleanUrlParameters: project_id: 1 - storageProvider_id: 3 + sourceControl_id: 1 queryParameters: [] cleanQueryParameters: [] bodyParameters: [] @@ -200,7 +214,7 @@ endpoints: responses: - status: 200 - content: '{"id":5,"project_id":null,"global":true,"name":"facilis","provider":"dropbox","created_at":"2025-04-21T18:40:20.000000Z","updated_at":"2025-04-21T18:40:20.000000Z"}' + content: '{"id":2,"project_id":null,"global":true,"name":"Misael Runte","provider":"github","created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"}' headers: [] description: '' custom: [] @@ -213,9 +227,9 @@ endpoints: - httpMethods: - PUT - uri: 'api/projects/{project_id}/storage-providers/{storageProvider_id}' + uri: 'api/projects/{project_id}/source-controls/{sourceControl_id}' metadata: - groupName: storage-providers + groupName: source-controls groupDescription: '' subgroup: '' subgroupDescription: '' @@ -237,11 +251,11 @@ endpoints: exampleWasSpecified: false nullable: false custom: [] - storageProvider_id: - name: storageProvider_id - description: 'The ID of the storageProvider.' + sourceControl_id: + name: sourceControl_id + description: 'The ID of the sourceControl.' required: true - example: 3 + example: 1 type: integer enumValues: [] exampleWasSpecified: false @@ -249,7 +263,7 @@ endpoints: custom: [] cleanUrlParameters: project_id: 1 - storageProvider_id: 3 + sourceControl_id: 1 queryParameters: [] cleanQueryParameters: [] bodyParameters: @@ -257,7 +271,47 @@ endpoints: name: name description: 'The name of the storage provider.' required: true - example: consequatur + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + token: + name: token + description: 'The token if provider requires api token' + required: true + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + url: + name: url + description: 'The URL if the provider is Gitlab and it is self-hosted' + required: true + example: 'http://www.bailey.biz/quos-velit-et-fugiat-sunt-nihil-accusantium-harum.html' + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + username: + name: username + description: 'The username if the provider is Bitbucket' + required: true + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + password: + name: password + description: 'The password if the provider is Bitbucket' + required: true + example: '|]|{+-' type: string enumValues: [] exampleWasSpecified: false @@ -267,7 +321,7 @@ endpoints: name: global description: 'Accessible in all projects' required: true - example: true + example: false type: string enumValues: - true @@ -276,13 +330,17 @@ endpoints: nullable: false custom: [] cleanBodyParameters: - name: consequatur - global: true + name: architecto + token: architecto + url: 'http://www.bailey.biz/quos-velit-et-fugiat-sunt-nihil-accusantium-harum.html' + username: architecto + password: '|]|{+-' + global: false fileParameters: [] responses: - status: 200 - content: '{"id":5,"project_id":null,"global":true,"name":"dolores","provider":"local","created_at":"2025-04-21T18:40:20.000000Z","updated_at":"2025-04-21T18:40:20.000000Z"}' + content: '{"id":2,"project_id":null,"global":true,"name":"Mrs. Justina Gaylord","provider":"github","created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"}' headers: [] description: '' custom: [] @@ -295,9 +353,9 @@ endpoints: - httpMethods: - DELETE - uri: 'api/projects/{project_id}/storage-providers/{storageProvider_id}' + uri: 'api/projects/{project_id}/source-controls/{sourceControl_id}' metadata: - groupName: storage-providers + groupName: source-controls groupDescription: '' subgroup: '' subgroupDescription: '' @@ -319,11 +377,11 @@ endpoints: exampleWasSpecified: false nullable: false custom: [] - storageProvider_id: - name: storageProvider_id - description: 'The ID of the storageProvider.' + sourceControl_id: + name: sourceControl_id + description: 'The ID of the sourceControl.' required: true - example: 3 + example: 1 type: integer enumValues: [] exampleWasSpecified: false @@ -331,7 +389,7 @@ endpoints: custom: [] cleanUrlParameters: project_id: 1 - storageProvider_id: 3 + sourceControl_id: 1 queryParameters: [] cleanQueryParameters: [] bodyParameters: [] diff --git a/.scribe/endpoints.cache/14.yaml b/.scribe/endpoints.cache/14.yaml new file mode 100644 index 00000000..0ac45b4a --- /dev/null +++ b/.scribe/endpoints.cache/14.yaml @@ -0,0 +1,352 @@ +## Autogenerated by Scribe. DO NOT MODIFY. + +name: storage-providers +description: '' +endpoints: + - + httpMethods: + - GET + uri: 'api/projects/{project_id}/storage-providers' + metadata: + groupName: storage-providers + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: list + description: '' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: + project_id: + name: project_id + description: 'The ID of the project.' + required: true + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + project_id: 1 + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 200 + content: '{"data":[{"id":4,"project_id":null,"global":true,"name":"harum","provider":"local","created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"},{"id":5,"project_id":null,"global":true,"name":"commodi","provider":"local","created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"}],"links":{"first":"\/?page=1","last":"\/?page=1","prev":null,"next":null},"meta":{"current_page":1,"from":1,"last_page":1,"links":[{"url":null,"label":"« Previous","active":false},{"url":"\/?page=1","label":"1","active":true},{"url":null,"label":"Next »","active":false}],"path":"\/","per_page":25,"to":2,"total":2}}' + headers: [] + description: '' + custom: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - POST + uri: 'api/projects/{project_id}/storage-providers' + metadata: + groupName: storage-providers + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: create + description: '' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: + project_id: + name: project_id + description: 'The ID of the project.' + required: true + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + project_id: 1 + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: + provider: + name: provider + description: 'The provider (aws, linode, hetzner, digitalocean, vultr, ...)' + required: true + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + name: + name: name + description: 'The name of the storage provider.' + required: true + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + token: + name: token + description: 'The token if provider requires api token' + required: true + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + key: + name: key + description: 'The key if provider requires key' + required: true + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + secret: + name: secret + description: 'The secret if provider requires key' + required: true + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanBodyParameters: + provider: architecto + name: architecto + token: architecto + key: architecto + secret: architecto + fileParameters: [] + responses: + - + status: 200 + content: '{"id":4,"project_id":null,"global":true,"name":"eius","provider":"local","created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"}' + headers: [] + description: '' + custom: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - GET + uri: 'api/projects/{project_id}/storage-providers/{storageProvider_id}' + metadata: + groupName: storage-providers + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: show + description: '' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: + project_id: + name: project_id + description: 'The ID of the project.' + required: true + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + storageProvider_id: + name: storageProvider_id + description: 'The ID of the storageProvider.' + required: true + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + project_id: 1 + storageProvider_id: 1 + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 200 + content: '{"id":4,"project_id":null,"global":true,"name":"et","provider":"dropbox","created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"}' + headers: [] + description: '' + custom: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - PUT + uri: 'api/projects/{project_id}/storage-providers/{storageProvider_id}' + metadata: + groupName: storage-providers + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: update + description: '' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: + project_id: + name: project_id + description: 'The ID of the project.' + required: true + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + storageProvider_id: + name: storageProvider_id + description: 'The ID of the storageProvider.' + required: true + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + project_id: 1 + storageProvider_id: 1 + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: + name: + name: name + description: 'The name of the storage provider.' + required: true + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + global: + name: global + description: 'Accessible in all projects' + required: true + example: true + type: string + enumValues: + - true + - false + exampleWasSpecified: false + nullable: false + custom: [] + cleanBodyParameters: + name: architecto + global: true + fileParameters: [] + responses: + - + status: 200 + content: '{"id":4,"project_id":null,"global":true,"name":"eius","provider":"local","created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"}' + headers: [] + description: '' + custom: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - DELETE + uri: 'api/projects/{project_id}/storage-providers/{storageProvider_id}' + metadata: + groupName: storage-providers + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: delete + description: '' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: + project_id: + name: project_id + description: 'The ID of the project.' + required: true + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + storageProvider_id: + name: storageProvider_id + description: 'The ID of the storageProvider.' + required: true + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + project_id: 1 + storageProvider_id: 1 + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 204 + content: null + headers: [] + description: '' + custom: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] diff --git a/.scribe/endpoints/00.yaml b/.scribe/endpoints/00.yaml index 59bf07e7..1d0974f7 100644 --- a/.scribe/endpoints/00.yaml +++ b/.scribe/endpoints/00.yaml @@ -1,151 +1,129 @@ -name: cron-jobs +name: Endpoints description: '' endpoints: - - - httpMethods: - - GET - uri: 'api/projects/{project_id}/servers/{server_id}/cron-jobs' - metadata: - groupName: cron-jobs - groupDescription: '' - subgroup: '' - subgroupDescription: '' - title: list - description: 'Get all cron jobs.' - authenticated: false - custom: [] - headers: - Content-Type: application/json - Accept: application/json - urlParameters: - project_id: - name: project_id - description: 'The ID of the project.' - required: true - example: 1 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - server_id: - name: server_id - description: 'The ID of the server.' - required: true - example: 32 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - cleanUrlParameters: - project_id: 1 - server_id: 32 - queryParameters: [] - cleanQueryParameters: [] - bodyParameters: [] - cleanBodyParameters: [] - fileParameters: [] - responses: - - - status: 200 - content: '{"data":[{"id":5,"server_id":1,"command":"ls -la","user":"root","frequency":"* * * * *","status":"ready","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"},{"id":6,"server_id":1,"command":"ls -la","user":"root","frequency":"* * * * *","status":"ready","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"}],"links":{"first":"\/?page=1","last":"\/?page=1","prev":null,"next":null},"meta":{"current_page":1,"from":1,"last_page":1,"links":[{"url":null,"label":"« Previous","active":false},{"url":"\/?page=1","label":"1","active":true},{"url":null,"label":"Next »","active":false}],"path":"\/","per_page":25,"to":2,"total":2}}' - headers: [] - description: '' - custom: [] - responseFields: [] - auth: [] - controller: null - method: null - route: null - custom: [] - httpMethods: - POST - uri: 'api/projects/{project_id}/servers/{server_id}/cron-jobs' + uri: 'api/servers/{server_id}/agent/{id}' metadata: - groupName: cron-jobs + groupName: Endpoints groupDescription: '' subgroup: '' subgroupDescription: '' - title: create - description: 'Create a new cron job.' + title: '' + description: '' authenticated: false custom: [] headers: Content-Type: application/json Accept: application/json urlParameters: - project_id: - name: project_id - description: 'The ID of the project.' + server_id: + name: server_id + description: 'The ID of the server.' required: true - example: 1 + example: 6 type: integer enumValues: [] exampleWasSpecified: false nullable: false custom: [] - server_id: - name: server_id - description: 'The ID of the server.' + id: + name: id + description: 'The ID of the agent.' required: true - example: 32 - type: integer + example: architecto + type: string enumValues: [] exampleWasSpecified: false nullable: false custom: [] cleanUrlParameters: - project_id: 1 - server_id: 32 + server_id: 6 + id: architecto queryParameters: [] cleanQueryParameters: [] bodyParameters: - command: - name: command + load: + name: load description: '' required: true - example: consequatur - type: string + example: 4326.41688 + type: number enumValues: [] exampleWasSpecified: false nullable: false custom: [] - user: - name: user + memory_total: + name: memory_total description: '' required: true - example: vito - type: string - enumValues: - - root - - vito + example: 4326.41688 + type: number + enumValues: [] exampleWasSpecified: false nullable: false custom: [] - frequency: - name: frequency - description: 'Frequency of the cron job.' + memory_used: + name: memory_used + description: '' required: true - example: '* * * * *' - type: string + example: 4326.41688 + type: number + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + memory_free: + name: memory_free + description: '' + required: true + example: 4326.41688 + type: number + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + disk_total: + name: disk_total + description: '' + required: true + example: 4326.41688 + type: number + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + disk_used: + name: disk_used + description: '' + required: true + example: 4326.41688 + type: number + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + disk_free: + name: disk_free + description: '' + required: true + example: 4326.41688 + type: number enumValues: [] exampleWasSpecified: false nullable: false custom: [] cleanBodyParameters: - command: consequatur - user: vito - frequency: '* * * * *' + load: 4326.41688 + memory_total: 4326.41688 + memory_used: 4326.41688 + memory_free: 4326.41688 + disk_total: 4326.41688 + disk_used: 4326.41688 + disk_free: 4326.41688 fileParameters: [] - responses: - - - status: 200 - content: '{"id":5,"server_id":1,"command":"ls -la","user":"root","frequency":"* * * * *","status":"ready","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"}' - headers: [] - description: '' - custom: [] + responses: [] responseFields: [] auth: [] controller: null @@ -154,55 +132,27 @@ endpoints: custom: [] - httpMethods: - - GET - uri: 'api/projects/{project_id}/servers/{server_id}/cron-jobs/{cronJob_id}' + 0: GET + 2: POST + 3: PUT + 4: PATCH + 5: DELETE + 6: OPTIONS + uri: api/git-hooks metadata: - groupName: cron-jobs + groupName: Endpoints groupDescription: '' subgroup: '' subgroupDescription: '' - title: show - description: 'Get a cron job by ID.' + title: '' + description: '' authenticated: false custom: [] headers: Content-Type: application/json Accept: application/json - urlParameters: - project_id: - name: project_id - description: 'The ID of the project.' - required: true - example: 1 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - server_id: - name: server_id - description: 'The ID of the server.' - required: true - example: 32 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - cronJob_id: - name: cronJob_id - description: 'The ID of the cronJob.' - required: true - example: 17 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - cleanUrlParameters: - project_id: 1 - server_id: 32 - cronJob_id: 17 + urlParameters: [] + cleanUrlParameters: [] queryParameters: [] cleanQueryParameters: [] bodyParameters: [] @@ -210,79 +160,18 @@ endpoints: fileParameters: [] responses: - - status: 200 - content: '{"id":5,"server_id":1,"command":"ls -la","user":"root","frequency":"* * * * *","status":"ready","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"}' - headers: [] - description: '' - custom: [] - responseFields: [] - auth: [] - controller: null - method: null - route: null - custom: [] - - - httpMethods: - - DELETE - uri: 'api/projects/{project_id}/servers/{server_id}/cron-jobs/{cronJob_id}' - metadata: - groupName: cron-jobs - groupDescription: '' - subgroup: '' - subgroupDescription: '' - title: delete - description: 'Delete cron job.' - authenticated: false - custom: [] - headers: - Content-Type: application/json - Accept: application/json - urlParameters: - project_id: - name: project_id - description: 'The ID of the project.' - required: true - example: 1 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - server_id: - name: server_id - description: 'The ID of the server.' - required: true - example: 32 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - cronJob_id: - name: cronJob_id - description: 'The ID of the cronJob.' - required: true - example: 17 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - cleanUrlParameters: - project_id: 1 - server_id: 32 - cronJob_id: 17 - queryParameters: [] - cleanQueryParameters: [] - bodyParameters: [] - cleanBodyParameters: [] - fileParameters: [] - responses: - - - status: 204 - content: null - headers: [] - description: '' + status: 404 + content: |- + { + "message": "" + } + headers: + cache-control: 'no-cache, private' + content-type: application/json + x-ratelimit-limit: '60' + x-ratelimit-remaining: '57' + access-control-allow-origin: '*' + description: null custom: [] responseFields: [] auth: [] diff --git a/.scribe/endpoints/01.yaml b/.scribe/endpoints/01.yaml index 7df3ec2a..17238bdf 100644 --- a/.scribe/endpoints/01.yaml +++ b/.scribe/endpoints/01.yaml @@ -1,17 +1,17 @@ -name: databases +name: cron-jobs description: '' endpoints: - httpMethods: - GET - uri: 'api/projects/{project_id}/servers/{server_id}/databases' + uri: 'api/projects/{project_id}/servers/{server_id}/cron-jobs' metadata: - groupName: databases + groupName: cron-jobs groupDescription: '' subgroup: '' subgroupDescription: '' title: list - description: 'Get all databases.' + description: 'Get all cron jobs.' authenticated: false custom: [] headers: @@ -32,7 +32,7 @@ endpoints: name: server_id description: 'The ID of the server.' required: true - example: 32 + example: 6 type: integer enumValues: [] exampleWasSpecified: false @@ -40,7 +40,7 @@ endpoints: custom: [] cleanUrlParameters: project_id: 1 - server_id: 32 + server_id: 6 queryParameters: [] cleanQueryParameters: [] bodyParameters: [] @@ -49,7 +49,7 @@ endpoints: responses: - status: 200 - content: '{"data":[{"id":21,"server_id":1,"name":"carolyne.luettgen","status":"ready","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"},{"id":22,"server_id":1,"name":"orville77","status":"ready","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"}],"links":{"first":"\/?page=1","last":"\/?page=1","prev":null,"next":null},"meta":{"current_page":1,"from":1,"last_page":1,"links":[{"url":null,"label":"« Previous","active":false},{"url":"\/?page=1","label":"1","active":true},{"url":null,"label":"Next »","active":false}],"path":"\/","per_page":25,"to":2,"total":2}}' + content: '{"data":[{"id":3,"server_id":1,"command":"ls -la","user":"root","frequency":"* * * * *","status":"ready","status_color":"success","created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"},{"id":4,"server_id":1,"command":"ls -la","user":"root","frequency":"* * * * *","status":"ready","status_color":"success","created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"}],"links":{"first":"\/?page=1","last":"\/?page=1","prev":null,"next":null},"meta":{"current_page":1,"from":1,"last_page":1,"links":[{"url":null,"label":"« Previous","active":false},{"url":"\/?page=1","label":"1","active":true},{"url":null,"label":"Next »","active":false}],"path":"\/","per_page":25,"to":2,"total":2}}' headers: [] description: '' custom: [] @@ -62,14 +62,14 @@ endpoints: - httpMethods: - POST - uri: 'api/projects/{project_id}/servers/{server_id}/databases' + uri: 'api/projects/{project_id}/servers/{server_id}/cron-jobs' metadata: - groupName: databases + groupName: cron-jobs groupDescription: '' subgroup: '' subgroupDescription: '' title: create - description: 'Create a new database.' + description: 'Create a new cron job.' authenticated: false custom: [] headers: @@ -90,7 +90,7 @@ endpoints: name: server_id description: 'The ID of the server.' required: true - example: 32 + example: 6 type: integer enumValues: [] exampleWasSpecified: false @@ -98,49 +98,51 @@ endpoints: custom: [] cleanUrlParameters: project_id: 1 - server_id: 32 + server_id: 6 queryParameters: [] cleanQueryParameters: [] bodyParameters: - name: - name: name + command: + name: command description: '' required: true - example: consequatur + example: architecto type: string enumValues: [] exampleWasSpecified: false nullable: false custom: [] - charset: - name: charset + user: + name: user description: '' required: true - example: consequatur + example: vito type: string - enumValues: [] + enumValues: + - root + - vito exampleWasSpecified: false nullable: false custom: [] - collation: - name: collation - description: '' + frequency: + name: frequency + description: 'Frequency of the cron job.' required: true - example: consequatur + example: '* * * * *' type: string enumValues: [] exampleWasSpecified: false nullable: false custom: [] cleanBodyParameters: - name: consequatur - charset: consequatur - collation: consequatur + command: architecto + user: vito + frequency: '* * * * *' fileParameters: [] responses: - status: 200 - content: '{"id":21,"server_id":1,"name":"carolyne.luettgen","status":"ready","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"}' + content: '{"id":3,"server_id":1,"command":"ls -la","user":"root","frequency":"* * * * *","status":"ready","status_color":"success","created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"}' headers: [] description: '' custom: [] @@ -153,14 +155,14 @@ endpoints: - httpMethods: - GET - uri: 'api/projects/{project_id}/servers/{server_id}/databases/{id}' + uri: 'api/projects/{project_id}/servers/{server_id}/cron-jobs/{cronJob_id}' metadata: - groupName: databases + groupName: cron-jobs groupDescription: '' subgroup: '' subgroupDescription: '' title: show - description: 'Get a database by ID.' + description: 'Get a cron job by ID.' authenticated: false custom: [] headers: @@ -181,17 +183,17 @@ endpoints: name: server_id description: 'The ID of the server.' required: true - example: 32 + example: 6 type: integer enumValues: [] exampleWasSpecified: false nullable: false custom: [] - id: - name: id - description: 'The ID of the database.' + cronJob_id: + name: cronJob_id + description: 'The ID of the cronJob.' required: true - example: 17 + example: 1 type: integer enumValues: [] exampleWasSpecified: false @@ -199,8 +201,8 @@ endpoints: custom: [] cleanUrlParameters: project_id: 1 - server_id: 32 - id: 17 + server_id: 6 + cronJob_id: 1 queryParameters: [] cleanQueryParameters: [] bodyParameters: [] @@ -209,7 +211,7 @@ endpoints: responses: - status: 200 - content: '{"id":21,"server_id":1,"name":"carolyne.luettgen","status":"ready","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"}' + content: '{"id":3,"server_id":1,"command":"ls -la","user":"root","frequency":"* * * * *","status":"ready","status_color":"success","created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"}' headers: [] description: '' custom: [] @@ -222,14 +224,14 @@ endpoints: - httpMethods: - DELETE - uri: 'api/projects/{project_id}/servers/{server_id}/databases/{database_id}' + uri: 'api/projects/{project_id}/servers/{server_id}/cron-jobs/{cronJob_id}' metadata: - groupName: databases + groupName: cron-jobs groupDescription: '' subgroup: '' subgroupDescription: '' title: delete - description: 'Delete database.' + description: 'Delete cron job.' authenticated: false custom: [] headers: @@ -250,17 +252,17 @@ endpoints: name: server_id description: 'The ID of the server.' required: true - example: 32 + example: 6 type: integer enumValues: [] exampleWasSpecified: false nullable: false custom: [] - database_id: - name: database_id - description: 'The ID of the database.' + cronJob_id: + name: cronJob_id + description: 'The ID of the cronJob.' required: true - example: 17 + example: 1 type: integer enumValues: [] exampleWasSpecified: false @@ -268,8 +270,8 @@ endpoints: custom: [] cleanUrlParameters: project_id: 1 - server_id: 32 - database_id: 17 + server_id: 6 + cronJob_id: 1 queryParameters: [] cleanQueryParameters: [] bodyParameters: [] diff --git a/.scribe/endpoints/02.yaml b/.scribe/endpoints/02.yaml index cfafdcac..e3ca076c 100644 --- a/.scribe/endpoints/02.yaml +++ b/.scribe/endpoints/02.yaml @@ -1,17 +1,17 @@ -name: database-users +name: databases description: '' endpoints: - httpMethods: - GET - uri: 'api/projects/{project_id}/servers/{server_id}/database-users' + uri: 'api/projects/{project_id}/servers/{server_id}/databases' metadata: - groupName: database-users + groupName: databases groupDescription: '' subgroup: '' subgroupDescription: '' title: list - description: 'Get all database users.' + description: 'Get all databases.' authenticated: false custom: [] headers: @@ -32,7 +32,7 @@ endpoints: name: server_id description: 'The ID of the server.' required: true - example: 32 + example: 6 type: integer enumValues: [] exampleWasSpecified: false @@ -40,7 +40,7 @@ endpoints: custom: [] cleanUrlParameters: project_id: 1 - server_id: 32 + server_id: 6 queryParameters: [] cleanQueryParameters: [] bodyParameters: [] @@ -49,7 +49,7 @@ endpoints: responses: - status: 200 - content: '{"data":[{"id":19,"server_id":1,"username":"graciela37","databases":[],"host":"%","status":"creating","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"},{"id":20,"server_id":1,"username":"vconn","databases":[],"host":"%","status":"creating","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"}],"links":{"first":"\/?page=1","last":"\/?page=1","prev":null,"next":null},"meta":{"current_page":1,"from":1,"last_page":1,"links":[{"url":null,"label":"« Previous","active":false},{"url":"\/?page=1","label":"1","active":true},{"url":null,"label":"Next »","active":false}],"path":"\/","per_page":25,"to":2,"total":2}}' + content: '{"data":[{"id":9,"server_id":1,"name":"zbailey","collation":null,"charset":null,"status":"ready","status_color":"success","created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"},{"id":10,"server_id":1,"name":"rempel.chadrick","collation":null,"charset":null,"status":"ready","status_color":"success","created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"}],"links":{"first":"\/?page=1","last":"\/?page=1","prev":null,"next":null},"meta":{"current_page":1,"from":1,"last_page":1,"links":[{"url":null,"label":"« Previous","active":false},{"url":"\/?page=1","label":"1","active":true},{"url":null,"label":"Next »","active":false}],"path":"\/","per_page":25,"to":2,"total":2}}' headers: [] description: '' custom: [] @@ -62,14 +62,14 @@ endpoints: - httpMethods: - POST - uri: 'api/projects/{project_id}/servers/{server_id}/database-users' + uri: 'api/projects/{project_id}/servers/{server_id}/databases' metadata: - groupName: database-users + groupName: databases groupDescription: '' subgroup: '' subgroupDescription: '' title: create - description: 'Create a new database user.' + description: 'Create a new database.' authenticated: false custom: [] headers: @@ -90,7 +90,7 @@ endpoints: name: server_id description: 'The ID of the server.' required: true - example: 32 + example: 6 type: integer enumValues: [] exampleWasSpecified: false @@ -98,49 +98,49 @@ endpoints: custom: [] cleanUrlParameters: project_id: 1 - server_id: 32 + server_id: 6 queryParameters: [] cleanQueryParameters: [] bodyParameters: - username: - name: username + name: + name: name description: '' required: true - example: consequatur + example: architecto type: string enumValues: [] exampleWasSpecified: false nullable: false custom: [] - password: - name: password + charset: + name: charset description: '' required: true - example: 'O[2UZ5ij-e/dl4m{o,' + example: architecto type: string enumValues: [] exampleWasSpecified: false nullable: false custom: [] - host: - name: host - description: 'Host, if it is a remote user.' + collation: + name: collation + description: '' required: true - example: '%' + example: architecto type: string enumValues: [] exampleWasSpecified: false nullable: false custom: [] cleanBodyParameters: - username: consequatur - password: 'O[2UZ5ij-e/dl4m{o,' - host: '%' + name: architecto + charset: architecto + collation: architecto fileParameters: [] responses: - status: 200 - content: '{"id":19,"server_id":1,"username":"nolan.jaylan","databases":[],"host":"%","status":"creating","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"}' + content: '{"id":9,"server_id":1,"name":"zbailey","collation":null,"charset":null,"status":"ready","status_color":"success","created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"}' headers: [] description: '' custom: [] @@ -153,14 +153,14 @@ endpoints: - httpMethods: - GET - uri: 'api/projects/{project_id}/servers/{server_id}/database-users/{databaseUser_id}' + uri: 'api/projects/{project_id}/servers/{server_id}/databases/{id}' metadata: - groupName: database-users + groupName: databases groupDescription: '' subgroup: '' subgroupDescription: '' title: show - description: 'Get a database user by ID.' + description: 'Get a database by ID.' authenticated: false custom: [] headers: @@ -181,17 +181,17 @@ endpoints: name: server_id description: 'The ID of the server.' required: true - example: 32 + example: 6 type: integer enumValues: [] exampleWasSpecified: false nullable: false custom: [] - databaseUser_id: - name: databaseUser_id - description: 'The ID of the databaseUser.' + id: + name: id + description: 'The ID of the database.' required: true - example: 17 + example: 8 type: integer enumValues: [] exampleWasSpecified: false @@ -199,8 +199,8 @@ endpoints: custom: [] cleanUrlParameters: project_id: 1 - server_id: 32 - databaseUser_id: 17 + server_id: 6 + id: 8 queryParameters: [] cleanQueryParameters: [] bodyParameters: [] @@ -209,87 +209,7 @@ endpoints: responses: - status: 200 - content: '{"id":19,"server_id":1,"username":"carolyne.luettgen","databases":[],"host":"%","status":"creating","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"}' - headers: [] - description: '' - custom: [] - responseFields: [] - auth: [] - controller: null - method: null - route: null - custom: [] - - - httpMethods: - - POST - uri: 'api/projects/{project_id}/servers/{server_id}/database-users/{databaseUser_id}/link' - metadata: - groupName: database-users - groupDescription: '' - subgroup: '' - subgroupDescription: '' - title: link - description: 'Link to databases' - authenticated: false - custom: [] - headers: - Content-Type: application/json - Accept: application/json - urlParameters: - project_id: - name: project_id - description: 'The ID of the project.' - required: true - example: 1 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - server_id: - name: server_id - description: 'The ID of the server.' - required: true - example: 32 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - databaseUser_id: - name: databaseUser_id - description: 'The ID of the databaseUser.' - required: true - example: 17 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - cleanUrlParameters: - project_id: 1 - server_id: 32 - databaseUser_id: 17 - queryParameters: [] - cleanQueryParameters: [] - bodyParameters: - databases: - name: databases - description: 'Array of database names to link to the user.' - required: true - example: consequatur - type: string - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - cleanBodyParameters: - databases: consequatur - fileParameters: [] - responses: - - - status: 200 - content: '{"id":19,"server_id":1,"username":"carolyne.luettgen","databases":[],"host":"%","status":"creating","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"}' + content: '{"id":9,"server_id":1,"name":"rempel.chadrick","collation":null,"charset":null,"status":"ready","status_color":"success","created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"}' headers: [] description: '' custom: [] @@ -302,14 +222,14 @@ endpoints: - httpMethods: - DELETE - uri: 'api/projects/{project_id}/servers/{server_id}/database-users/{databaseUser_id}' + uri: 'api/projects/{project_id}/servers/{server_id}/databases/{database_id}' metadata: - groupName: database-users + groupName: databases groupDescription: '' subgroup: '' subgroupDescription: '' title: delete - description: 'Delete database user.' + description: 'Delete database.' authenticated: false custom: [] headers: @@ -330,17 +250,17 @@ endpoints: name: server_id description: 'The ID of the server.' required: true - example: 32 + example: 6 type: integer enumValues: [] exampleWasSpecified: false nullable: false custom: [] - databaseUser_id: - name: databaseUser_id - description: 'The ID of the databaseUser.' + database_id: + name: database_id + description: 'The ID of the database.' required: true - example: 17 + example: 8 type: integer enumValues: [] exampleWasSpecified: false @@ -348,8 +268,8 @@ endpoints: custom: [] cleanUrlParameters: project_id: 1 - server_id: 32 - databaseUser_id: 17 + server_id: 6 + database_id: 8 queryParameters: [] cleanQueryParameters: [] bodyParameters: [] diff --git a/.scribe/endpoints/03.yaml b/.scribe/endpoints/03.yaml index d5d6d1a0..c92a1989 100644 --- a/.scribe/endpoints/03.yaml +++ b/.scribe/endpoints/03.yaml @@ -1,17 +1,17 @@ -name: firewall-rules +name: database-users description: '' endpoints: - httpMethods: - GET - uri: 'api/projects/{project_id}/servers/{server_id}/firewall-rules' + uri: 'api/projects/{project_id}/servers/{server_id}/database-users' metadata: - groupName: firewall-rules + groupName: database-users groupDescription: '' subgroup: '' subgroupDescription: '' title: list - description: 'Get all firewall rules.' + description: 'Get all database users.' authenticated: false custom: [] headers: @@ -32,7 +32,7 @@ endpoints: name: server_id description: 'The ID of the server.' required: true - example: 32 + example: 6 type: integer enumValues: [] exampleWasSpecified: false @@ -40,7 +40,7 @@ endpoints: custom: [] cleanUrlParameters: project_id: 1 - server_id: 32 + server_id: 6 queryParameters: [] cleanQueryParameters: [] bodyParameters: [] @@ -49,7 +49,7 @@ endpoints: responses: - status: 200 - content: '{"data":[{"id":97,"name":"dolores","server_id":1,"type":"allow","protocol":"tcp","port":40770,"source":"199.76.131.15","mask":"24","note":"test","status":"creating","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"},{"id":98,"name":"laborum","server_id":1,"type":"allow","protocol":"tcp","port":14235,"source":"100.14.146.200","mask":"24","note":"test","status":"creating","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"}],"links":{"first":"\/?page=1","last":"\/?page=1","prev":null,"next":null},"meta":{"current_page":1,"from":1,"last_page":1,"links":[{"url":null,"label":"« Previous","active":false},{"url":"\/?page=1","label":"1","active":true},{"url":null,"label":"Next »","active":false}],"path":"\/","per_page":25,"to":2,"total":2}}' + content: '{"data":[{"id":4,"server_id":1,"username":"cartwright.maxine","databases":[],"host":"%","status":"creating","status_color":"warning","created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"},{"id":5,"server_id":1,"username":"gusikowski.eden","databases":[],"host":"%","status":"creating","status_color":"warning","created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"}],"links":{"first":"\/?page=1","last":"\/?page=1","prev":null,"next":null},"meta":{"current_page":1,"from":1,"last_page":1,"links":[{"url":null,"label":"« Previous","active":false},{"url":"\/?page=1","label":"1","active":true},{"url":null,"label":"Next »","active":false}],"path":"\/","per_page":25,"to":2,"total":2}}' headers: [] description: '' custom: [] @@ -62,14 +62,14 @@ endpoints: - httpMethods: - POST - uri: 'api/projects/{project_id}/servers/{server_id}/firewall-rules' + uri: 'api/projects/{project_id}/servers/{server_id}/database-users' metadata: - groupName: firewall-rules + groupName: database-users groupDescription: '' subgroup: '' subgroupDescription: '' title: create - description: 'Create a new firewall rule.' + description: 'Create a new database user.' authenticated: false custom: [] headers: @@ -90,7 +90,7 @@ endpoints: name: server_id description: 'The ID of the server.' required: true - example: 32 + example: 6 type: integer enumValues: [] exampleWasSpecified: false @@ -98,225 +98,49 @@ endpoints: custom: [] cleanUrlParameters: project_id: 1 - server_id: 32 + server_id: 6 queryParameters: [] cleanQueryParameters: [] bodyParameters: - name: - name: name + username: + name: username description: '' required: true - example: consequatur + example: architecto type: string enumValues: [] exampleWasSpecified: false nullable: false custom: [] - type: - name: type + password: + name: password description: '' required: true - example: allow - type: string - enumValues: - - allow - - deny - exampleWasSpecified: false - nullable: false - custom: [] - protocol: - name: protocol - description: '' - required: true - example: tcp - type: string - enumValues: - - tcp - - udp - exampleWasSpecified: false - nullable: false - custom: [] - port: - name: port - description: '' - required: true - example: consequatur + example: '|]|{+-' type: string enumValues: [] exampleWasSpecified: false nullable: false custom: [] - source: - name: source - description: '' - required: false - example: consequatur - type: string - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - mask: - name: mask - description: 'Mask for source IP.' + host: + name: host + description: 'Host, if it is a remote user.' required: true - example: '0' + example: '%' type: string enumValues: [] exampleWasSpecified: false nullable: false custom: [] cleanBodyParameters: - name: consequatur - type: allow - protocol: tcp - port: consequatur - source: consequatur - mask: '0' + username: architecto + password: '|]|{+-' + host: '%' fileParameters: [] responses: - status: 200 - content: '{"id":97,"name":"dolores","server_id":1,"type":"allow","protocol":"tcp","port":40770,"source":"199.76.131.15","mask":"24","note":"test","status":"creating","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"}' - headers: [] - description: '' - custom: [] - responseFields: [] - auth: [] - controller: null - method: null - route: null - custom: [] - - - httpMethods: - - PUT - uri: 'api/projects/{project_id}/servers/{server_id}/firewall-rules/{firewallRule_id}' - metadata: - groupName: firewall-rules - groupDescription: '' - subgroup: '' - subgroupDescription: '' - title: edit - description: 'Update an existing firewall rule.' - authenticated: false - custom: [] - headers: - Content-Type: application/json - Accept: application/json - urlParameters: - project_id: - name: project_id - description: 'The ID of the project.' - required: true - example: 1 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - server_id: - name: server_id - description: 'The ID of the server.' - required: true - example: 32 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - firewallRule_id: - name: firewallRule_id - description: 'The ID of the firewallRule.' - required: true - example: 94 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - cleanUrlParameters: - project_id: 1 - server_id: 32 - firewallRule_id: 94 - queryParameters: [] - cleanQueryParameters: [] - bodyParameters: - name: - name: name - description: '' - required: true - example: consequatur - type: string - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - type: - name: type - description: '' - required: true - example: allow - type: string - enumValues: - - allow - - deny - exampleWasSpecified: false - nullable: false - custom: [] - protocol: - name: protocol - description: '' - required: true - example: tcp - type: string - enumValues: - - tcp - - udp - exampleWasSpecified: false - nullable: false - custom: [] - port: - name: port - description: '' - required: true - example: consequatur - type: string - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - source: - name: source - description: '' - required: false - example: consequatur - type: string - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - mask: - name: mask - description: 'Mask for source IP.' - required: true - example: '0' - type: string - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - cleanBodyParameters: - name: consequatur - type: allow - protocol: tcp - port: consequatur - source: consequatur - mask: '0' - fileParameters: [] - responses: - - - status: 200 - content: '{"id":97,"name":"dolores","server_id":1,"type":"allow","protocol":"tcp","port":40770,"source":"199.76.131.15","mask":"24","note":"test","status":"creating","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"}' + content: '{"id":4,"server_id":1,"username":"justina.gaylord","databases":[],"host":"%","status":"creating","status_color":"warning","created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"}' headers: [] description: '' custom: [] @@ -329,14 +153,14 @@ endpoints: - httpMethods: - GET - uri: 'api/projects/{project_id}/servers/{server_id}/firewall-rules/{firewallRule_id}' + uri: 'api/projects/{project_id}/servers/{server_id}/database-users/{databaseUser_id}' metadata: - groupName: firewall-rules + groupName: database-users groupDescription: '' subgroup: '' subgroupDescription: '' title: show - description: 'Get a firewall rule by ID.' + description: 'Get a database user by ID.' authenticated: false custom: [] headers: @@ -357,17 +181,17 @@ endpoints: name: server_id description: 'The ID of the server.' required: true - example: 32 + example: 6 type: integer enumValues: [] exampleWasSpecified: false nullable: false custom: [] - firewallRule_id: - name: firewallRule_id - description: 'The ID of the firewallRule.' + databaseUser_id: + name: databaseUser_id + description: 'The ID of the databaseUser.' required: true - example: 94 + example: 16 type: integer enumValues: [] exampleWasSpecified: false @@ -375,8 +199,8 @@ endpoints: custom: [] cleanUrlParameters: project_id: 1 - server_id: 32 - firewallRule_id: 94 + server_id: 6 + databaseUser_id: 16 queryParameters: [] cleanQueryParameters: [] bodyParameters: [] @@ -385,7 +209,87 @@ endpoints: responses: - status: 200 - content: '{"id":97,"name":"laborum","server_id":1,"type":"allow","protocol":"tcp","port":14235,"source":"100.14.146.200","mask":"24","note":"test","status":"creating","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"}' + content: '{"id":4,"server_id":1,"username":"zbailey","databases":[],"host":"%","status":"creating","status_color":"warning","created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"}' + headers: [] + description: '' + custom: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - POST + uri: 'api/projects/{project_id}/servers/{server_id}/database-users/{databaseUser_id}/link' + metadata: + groupName: database-users + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: link + description: 'Link to databases' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: + project_id: + name: project_id + description: 'The ID of the project.' + required: true + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + server_id: + name: server_id + description: 'The ID of the server.' + required: true + example: 6 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + databaseUser_id: + name: databaseUser_id + description: 'The ID of the databaseUser.' + required: true + example: 16 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + project_id: 1 + server_id: 6 + databaseUser_id: 16 + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: + databases: + name: databases + description: 'Array of database names to link to the user.' + required: true + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanBodyParameters: + databases: architecto + fileParameters: [] + responses: + - + status: 200 + content: '{"id":4,"server_id":1,"username":"zbailey","databases":[],"host":"%","status":"creating","status_color":"warning","created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"}' headers: [] description: '' custom: [] @@ -398,14 +302,14 @@ endpoints: - httpMethods: - DELETE - uri: 'api/projects/{project_id}/servers/{server_id}/firewall-rules/{firewallRule_id}' + uri: 'api/projects/{project_id}/servers/{server_id}/database-users/{databaseUser_id}' metadata: - groupName: firewall-rules + groupName: database-users groupDescription: '' subgroup: '' subgroupDescription: '' title: delete - description: 'Delete firewall rule.' + description: 'Delete database user.' authenticated: false custom: [] headers: @@ -426,17 +330,17 @@ endpoints: name: server_id description: 'The ID of the server.' required: true - example: 32 + example: 6 type: integer enumValues: [] exampleWasSpecified: false nullable: false custom: [] - firewallRule_id: - name: firewallRule_id - description: 'The ID of the firewallRule.' + databaseUser_id: + name: databaseUser_id + description: 'The ID of the databaseUser.' required: true - example: 94 + example: 16 type: integer enumValues: [] exampleWasSpecified: false @@ -444,8 +348,8 @@ endpoints: custom: [] cleanUrlParameters: project_id: 1 - server_id: 32 - firewallRule_id: 94 + server_id: 6 + databaseUser_id: 16 queryParameters: [] cleanQueryParameters: [] bodyParameters: [] diff --git a/.scribe/endpoints/04.yaml b/.scribe/endpoints/04.yaml index fea54cd9..a85e5bf5 100644 --- a/.scribe/endpoints/04.yaml +++ b/.scribe/endpoints/04.yaml @@ -1,24 +1,46 @@ -name: general +name: firewall-rules description: '' endpoints: - httpMethods: - GET - uri: api/health + uri: 'api/projects/{project_id}/servers/{server_id}/firewall-rules' metadata: - groupName: general + groupName: firewall-rules groupDescription: '' subgroup: '' subgroupDescription: '' - title: health-check - description: '' + title: list + description: 'Get all firewall rules.' authenticated: false custom: [] headers: Content-Type: application/json Accept: application/json - urlParameters: [] - cleanUrlParameters: [] + urlParameters: + project_id: + name: project_id + description: 'The ID of the project.' + required: true + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + server_id: + name: server_id + description: 'The ID of the server.' + required: true + example: 6 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + project_id: 1 + server_id: 6 queryParameters: [] cleanQueryParameters: [] bodyParameters: [] @@ -27,14 +49,414 @@ endpoints: responses: - status: 200 - content: '{"success":true,"version":"2.5.0"}' - headers: - cache-control: 'no-cache, private' - content-type: application/json - x-ratelimit-limit: '60' - x-ratelimit-remaining: '57' - access-control-allow-origin: '*' - description: null + content: '{"data":[{"id":22,"name":"eius","server_id":1,"type":"allow","protocol":"tcp","port":9322,"source":"113.14.236.204","mask":"24","note":"test","status":"creating","status_color":"info","created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"},{"id":23,"name":"velit","server_id":1,"type":"allow","protocol":"tcp","port":2983,"source":"199.172.126.144","mask":"24","note":"test","status":"creating","status_color":"info","created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"}],"links":{"first":"\/?page=1","last":"\/?page=1","prev":null,"next":null},"meta":{"current_page":1,"from":1,"last_page":1,"links":[{"url":null,"label":"« Previous","active":false},{"url":"\/?page=1","label":"1","active":true},{"url":null,"label":"Next »","active":false}],"path":"\/","per_page":25,"to":2,"total":2}}' + headers: [] + description: '' + custom: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - POST + uri: 'api/projects/{project_id}/servers/{server_id}/firewall-rules' + metadata: + groupName: firewall-rules + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: create + description: 'Create a new firewall rule.' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: + project_id: + name: project_id + description: 'The ID of the project.' + required: true + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + server_id: + name: server_id + description: 'The ID of the server.' + required: true + example: 6 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + project_id: 1 + server_id: 6 + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: + name: + name: name + description: '' + required: true + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + type: + name: type + description: '' + required: true + example: allow + type: string + enumValues: + - allow + - deny + exampleWasSpecified: false + nullable: false + custom: [] + protocol: + name: protocol + description: '' + required: true + example: tcp + type: string + enumValues: + - tcp + - udp + exampleWasSpecified: false + nullable: false + custom: [] + port: + name: port + description: '' + required: true + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + source: + name: source + description: '' + required: false + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + mask: + name: mask + description: 'Mask for source IP.' + required: true + example: '0' + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanBodyParameters: + name: architecto + type: allow + protocol: tcp + port: architecto + source: architecto + mask: '0' + fileParameters: [] + responses: + - + status: 200 + content: '{"id":22,"name":"eius","server_id":1,"type":"allow","protocol":"tcp","port":9322,"source":"113.14.236.204","mask":"24","note":"test","status":"creating","status_color":"info","created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"}' + headers: [] + description: '' + custom: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - PUT + uri: 'api/projects/{project_id}/servers/{server_id}/firewall-rules/{firewallRule_id}' + metadata: + groupName: firewall-rules + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: edit + description: 'Update an existing firewall rule.' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: + project_id: + name: project_id + description: 'The ID of the project.' + required: true + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + server_id: + name: server_id + description: 'The ID of the server.' + required: true + example: 6 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + firewallRule_id: + name: firewallRule_id + description: 'The ID of the firewallRule.' + required: true + example: 19 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + project_id: 1 + server_id: 6 + firewallRule_id: 19 + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: + name: + name: name + description: '' + required: true + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + type: + name: type + description: '' + required: true + example: deny + type: string + enumValues: + - allow + - deny + exampleWasSpecified: false + nullable: false + custom: [] + protocol: + name: protocol + description: '' + required: true + example: udp + type: string + enumValues: + - tcp + - udp + exampleWasSpecified: false + nullable: false + custom: [] + port: + name: port + description: '' + required: true + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + source: + name: source + description: '' + required: false + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + mask: + name: mask + description: 'Mask for source IP.' + required: true + example: '0' + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanBodyParameters: + name: architecto + type: deny + protocol: udp + port: architecto + source: architecto + mask: '0' + fileParameters: [] + responses: + - + status: 200 + content: '{"id":22,"name":"eius","server_id":1,"type":"allow","protocol":"tcp","port":9322,"source":"113.14.236.204","mask":"24","note":"test","status":"creating","status_color":"info","created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"}' + headers: [] + description: '' + custom: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - GET + uri: 'api/projects/{project_id}/servers/{server_id}/firewall-rules/{firewallRule_id}' + metadata: + groupName: firewall-rules + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: show + description: 'Get a firewall rule by ID.' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: + project_id: + name: project_id + description: 'The ID of the project.' + required: true + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + server_id: + name: server_id + description: 'The ID of the server.' + required: true + example: 6 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + firewallRule_id: + name: firewallRule_id + description: 'The ID of the firewallRule.' + required: true + example: 19 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + project_id: 1 + server_id: 6 + firewallRule_id: 19 + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 200 + content: '{"id":22,"name":"velit","server_id":1,"type":"allow","protocol":"tcp","port":2983,"source":"199.172.126.144","mask":"24","note":"test","status":"creating","status_color":"info","created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"}' + headers: [] + description: '' + custom: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - DELETE + uri: 'api/projects/{project_id}/servers/{server_id}/firewall-rules/{firewallRule_id}' + metadata: + groupName: firewall-rules + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: delete + description: 'Delete firewall rule.' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: + project_id: + name: project_id + description: 'The ID of the project.' + required: true + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + server_id: + name: server_id + description: 'The ID of the server.' + required: true + example: 6 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + firewallRule_id: + name: firewallRule_id + description: 'The ID of the firewallRule.' + required: true + example: 19 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + project_id: 1 + server_id: 6 + firewallRule_id: 19 + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 204 + content: null + headers: [] + description: '' custom: [] responseFields: [] auth: [] diff --git a/.scribe/endpoints/05.yaml b/.scribe/endpoints/05.yaml index dd59df1c..4794ae46 100644 --- a/.scribe/endpoints/05.yaml +++ b/.scribe/endpoints/05.yaml @@ -1,17 +1,17 @@ -name: projects +name: general description: '' endpoints: - httpMethods: - GET - uri: api/projects + uri: api/health metadata: - groupName: projects + groupName: general groupDescription: '' subgroup: '' subgroupDescription: '' - title: list - description: 'Get all projects.' + title: health-check + description: '' authenticated: false custom: [] headers: @@ -27,208 +27,14 @@ endpoints: responses: - status: 200 - content: '{"data":[{"id":3,"name":"Nash Corwin","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"},{"id":4,"name":"Patience Douglas","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"}],"links":{"first":"\/?page=1","last":"\/?page=1","prev":null,"next":null},"meta":{"current_page":1,"from":1,"last_page":1,"links":[{"url":null,"label":"« Previous","active":false},{"url":"\/?page=1","label":"1","active":true},{"url":null,"label":"Next »","active":false}],"path":"\/","per_page":25,"to":2,"total":2}}' - headers: [] - description: '' - custom: [] - responseFields: [] - auth: [] - controller: null - method: null - route: null - custom: [] - - - httpMethods: - - POST - uri: api/projects - metadata: - groupName: projects - groupDescription: '' - subgroup: '' - subgroupDescription: '' - title: create - description: 'Create a new project.' - authenticated: false - custom: [] - headers: - Content-Type: application/json - Accept: application/json - urlParameters: [] - cleanUrlParameters: [] - queryParameters: [] - cleanQueryParameters: [] - bodyParameters: - name: - name: name - description: 'The name of the project.' - required: true - example: consequatur - type: string - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - cleanBodyParameters: - name: consequatur - fileParameters: [] - responses: - - - status: 200 - content: '{"id":3,"name":"Dr. Cornelius Luettgen V","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"}' - headers: [] - description: '' - custom: [] - responseFields: [] - auth: [] - controller: null - method: null - route: null - custom: [] - - - httpMethods: - - GET - uri: 'api/projects/{id}' - metadata: - groupName: projects - groupDescription: '' - subgroup: '' - subgroupDescription: '' - title: show - description: 'Get a project by ID.' - authenticated: false - custom: [] - headers: - Content-Type: application/json - Accept: application/json - urlParameters: - id: - name: id - description: 'The ID of the project.' - required: true - example: 1 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - cleanUrlParameters: - id: 1 - queryParameters: [] - cleanQueryParameters: [] - bodyParameters: [] - cleanBodyParameters: [] - fileParameters: [] - responses: - - - status: 200 - content: '{"id":3,"name":"Orville Satterfield","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"}' - headers: [] - description: '' - custom: [] - responseFields: [] - auth: [] - controller: null - method: null - route: null - custom: [] - - - httpMethods: - - PUT - uri: 'api/projects/{id}' - metadata: - groupName: projects - groupDescription: '' - subgroup: '' - subgroupDescription: '' - title: update - description: 'Update project.' - authenticated: false - custom: [] - headers: - Content-Type: application/json - Accept: application/json - urlParameters: - id: - name: id - description: 'The ID of the project.' - required: true - example: 1 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - cleanUrlParameters: - id: 1 - queryParameters: [] - cleanQueryParameters: [] - bodyParameters: - name: - name: name - description: 'The name of the project.' - required: true - example: consequatur - type: string - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - cleanBodyParameters: - name: consequatur - fileParameters: [] - responses: - - - status: 200 - content: '{"id":3,"name":"Dr. Cornelius Luettgen V","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"}' - headers: [] - description: '' - custom: [] - responseFields: [] - auth: [] - controller: null - method: null - route: null - custom: [] - - - httpMethods: - - DELETE - uri: 'api/projects/{project_id}' - metadata: - groupName: projects - groupDescription: '' - subgroup: '' - subgroupDescription: '' - title: delete - description: 'Delete project.' - authenticated: false - custom: [] - headers: - Content-Type: application/json - Accept: application/json - urlParameters: - project_id: - name: project_id - description: 'The ID of the project.' - required: true - example: 1 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - cleanUrlParameters: - project_id: 1 - queryParameters: [] - cleanQueryParameters: [] - bodyParameters: [] - cleanBodyParameters: [] - fileParameters: [] - responses: - - - status: 204 - content: null - headers: [] - description: '' + content: '{"success":true,"version":"2.5.0"}' + headers: + cache-control: 'no-cache, private' + content-type: application/json + x-ratelimit-limit: '60' + x-ratelimit-remaining: '56' + access-control-allow-origin: '*' + description: null custom: [] responseFields: [] auth: [] diff --git a/.scribe/endpoints/06.yaml b/.scribe/endpoints/06.yaml index 840dad6b..511ecbb7 100644 --- a/.scribe/endpoints/06.yaml +++ b/.scribe/endpoints/06.yaml @@ -1,57 +1,24 @@ -name: redirects +name: projects description: '' endpoints: - httpMethods: - GET - uri: 'api/projects/{project_id}/servers/{server_id}/sites/{site_id}/redirects' + uri: api/projects metadata: - groupName: redirects + groupName: projects groupDescription: '' subgroup: '' subgroupDescription: '' - title: index - description: 'Get all redirects.' + title: list + description: 'Get all projects.' authenticated: false custom: [] headers: Content-Type: application/json Accept: application/json - urlParameters: - project_id: - name: project_id - description: 'The ID of the project.' - required: true - example: 1 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - server_id: - name: server_id - description: 'The ID of the server.' - required: true - example: 32 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - site_id: - name: site_id - description: 'The ID of the site.' - required: true - example: 17 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - cleanUrlParameters: - project_id: 1 - server_id: 32 - site_id: 17 + urlParameters: [] + cleanUrlParameters: [] queryParameters: [] cleanQueryParameters: [] bodyParameters: [] @@ -60,7 +27,7 @@ endpoints: responses: - status: 200 - content: '{"data":[{"id":11,"site_id":1,"mode":308,"from":"dolores","to":"http:\/\/dibbert.com\/eius-est-dolor-dolores-minus-voluptatem-quisquam","status":"ready","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"},{"id":12,"site_id":1,"mode":302,"from":"sed","to":"http:\/\/williamson.net\/fugit-facilis-perferendis-dolores-molestias.html","status":"ready","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"}],"links":{"first":"\/?page=1","last":"\/?page=1","prev":null,"next":null},"meta":{"current_page":1,"from":1,"last_page":1,"links":[{"url":null,"label":"« Previous","active":false},{"url":"\/?page=1","label":"1","active":true},{"url":null,"label":"Next »","active":false}],"path":"\/","per_page":25,"to":2,"total":2}}' + content: '{"data":[{"id":3,"name":"Belle Dickens","created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"},{"id":4,"name":"Mittie Considine","created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"}],"links":{"first":"\/?page=1","last":"\/?page=1","prev":null,"next":null},"meta":{"current_page":1,"from":1,"last_page":1,"links":[{"url":null,"label":"« Previous","active":false},{"url":"\/?page=1","label":"1","active":true},{"url":null,"label":"Next »","active":false}],"path":"\/","per_page":25,"to":2,"total":2}}' headers: [] description: '' custom: [] @@ -73,22 +40,69 @@ endpoints: - httpMethods: - POST - uri: 'api/projects/{project_id}/servers/{server_id}/sites/{site_id}/redirects' + uri: api/projects metadata: - groupName: redirects + groupName: projects groupDescription: '' subgroup: '' subgroupDescription: '' title: create - description: 'Create a new redirect.' + description: 'Create a new project.' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: [] + cleanUrlParameters: [] + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: + name: + name: name + description: 'The name of the project.' + required: true + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanBodyParameters: + name: architecto + fileParameters: [] + responses: + - + status: 200 + content: '{"id":3,"name":"Ms. Elisabeth Okuneva","created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"}' + headers: [] + description: '' + custom: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - GET + uri: 'api/projects/{id}' + metadata: + groupName: projects + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: show + description: 'Get a project by ID.' authenticated: false custom: [] headers: Content-Type: application/json Accept: application/json urlParameters: - project_id: - name: project_id + id: + name: id description: 'The ID of the project.' required: true example: 1 @@ -97,76 +111,75 @@ endpoints: exampleWasSpecified: false nullable: false custom: [] - server_id: - name: server_id - description: 'The ID of the server.' - required: true - example: 32 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false + cleanUrlParameters: + id: 1 + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 200 + content: '{"id":3,"name":"Aleen O''Kon","created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"}' + headers: [] + description: '' custom: [] - site_id: - name: site_id - description: 'The ID of the site.' + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - PUT + uri: 'api/projects/{id}' + metadata: + groupName: projects + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: update + description: 'Update project.' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: + id: + name: id + description: 'The ID of the project.' required: true - example: 17 + example: 1 type: integer enumValues: [] exampleWasSpecified: false nullable: false custom: [] cleanUrlParameters: - project_id: 1 - server_id: 32 - site_id: 17 + id: 1 queryParameters: [] cleanQueryParameters: [] bodyParameters: - from: - name: from - description: '' + name: + name: name + description: 'The name of the project.' required: true - example: consequatur + example: architecto type: string enumValues: [] exampleWasSpecified: false nullable: false custom: [] - to: - name: to - description: '' - required: true - example: consequatur - type: string - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - mode: - name: mode - description: '' - required: true - example: 302 - type: string - enumValues: - - 301 - - 302 - - 307 - - 308 - exampleWasSpecified: false - nullable: false - custom: [] cleanBodyParameters: - from: consequatur - to: consequatur - mode: 302 + name: architecto fileParameters: [] responses: - status: 200 - content: null + content: '{"id":3,"name":"Ms. Elisabeth Okuneva","created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"}' headers: [] description: '' custom: [] @@ -179,14 +192,14 @@ endpoints: - httpMethods: - DELETE - uri: 'api/projects/{project_id}/servers/{server_id}/sites/{site_id}/redirects/{redirect_id}' + uri: 'api/projects/{project_id}' metadata: - groupName: redirects + groupName: projects groupDescription: '' subgroup: '' subgroupDescription: '' title: delete - description: 'Delete a redirect.' + description: 'Delete project.' authenticated: false custom: [] headers: @@ -203,41 +216,8 @@ endpoints: exampleWasSpecified: false nullable: false custom: [] - server_id: - name: server_id - description: 'The ID of the server.' - required: true - example: 32 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - site_id: - name: site_id - description: 'The ID of the site.' - required: true - example: 17 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - redirect_id: - name: redirect_id - description: 'The ID of the redirect.' - required: true - example: 9 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] cleanUrlParameters: project_id: 1 - server_id: 32 - site_id: 17 - redirect_id: 9 queryParameters: [] cleanQueryParameters: [] bodyParameters: [] diff --git a/.scribe/endpoints/07.yaml b/.scribe/endpoints/07.yaml index 97dd31f5..895f4c42 100644 --- a/.scribe/endpoints/07.yaml +++ b/.scribe/endpoints/07.yaml @@ -1,64 +1,17 @@ -name: servers +name: redirects description: '' endpoints: - - - httpMethods: - - GET - uri: 'api/projects/{project_id}/servers' - metadata: - groupName: servers - groupDescription: '' - subgroup: '' - subgroupDescription: '' - title: list - description: 'Get all servers in a project.' - authenticated: false - custom: [] - headers: - Content-Type: application/json - Accept: application/json - urlParameters: - project_id: - name: project_id - description: 'The ID of the project.' - required: true - example: 1 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - cleanUrlParameters: - project_id: 1 - queryParameters: [] - cleanQueryParameters: [] - bodyParameters: [] - cleanBodyParameters: [] - fileParameters: [] - responses: - - - status: 200 - content: '{"data":[{"id":33,"project_id":1,"user_id":1,"provider_id":null,"name":"Maiya Connelly","ssh_user":"vito","ip":"7.83.102.177","local_ip":"130.245.181.91","port":22,"os":"ubuntu_22","type":"regular","type_data":null,"provider":"custom","provider_data":null,"public_key":"test","status":"ready","auto_update":null,"available_updates":0,"security_updates":null,"progress":100,"progress_step":null,"updates":0,"last_update_check":null,"created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"},{"id":34,"project_id":1,"user_id":1,"provider_id":null,"name":"Dr. Kyler Runolfsdottir DVM","ssh_user":"vito","ip":"106.112.51.73","local_ip":"248.246.77.93","port":22,"os":"ubuntu_22","type":"regular","type_data":null,"provider":"custom","provider_data":null,"public_key":"test","status":"ready","auto_update":null,"available_updates":0,"security_updates":null,"progress":100,"progress_step":null,"updates":0,"last_update_check":null,"created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"}],"links":{"first":"\/?page=1","last":"\/?page=1","prev":null,"next":null},"meta":{"current_page":1,"from":1,"last_page":1,"links":[{"url":null,"label":"« Previous","active":false},{"url":"\/?page=1","label":"1","active":true},{"url":null,"label":"Next »","active":false}],"path":"\/","per_page":25,"to":2,"total":2}}' - headers: [] - description: '' - custom: [] - responseFields: [] - auth: [] - controller: null - method: null - route: null - custom: [] - httpMethods: - POST - uri: 'api/projects/{project_id}/servers' + uri: 'api/projects/{project_id}/servers/{server_id}/sites/{site_id}/redirects' metadata: - groupName: servers + groupName: redirects groupDescription: '' subgroup: '' subgroupDescription: '' title: create - description: 'Create a new server.' + description: 'Create a new redirect.' authenticated: false custom: [] headers: @@ -75,338 +28,75 @@ endpoints: exampleWasSpecified: false nullable: false custom: [] + server_id: + name: server_id + description: 'The ID of the server.' + required: true + example: 6 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + site_id: + name: site_id + description: 'The ID of the site.' + required: true + example: 14 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] cleanUrlParameters: project_id: 1 + server_id: 6 + site_id: 14 queryParameters: [] cleanQueryParameters: [] bodyParameters: - provider: - name: provider - description: 'The server provider type' + from: + name: from + description: '' required: true - example: consequatur + example: architecto type: string enumValues: [] exampleWasSpecified: false nullable: false custom: [] - server_provider: - name: server_provider - description: 'If the provider is not custom, the ID of the server provider profile' + to: + name: to + description: '' required: true - example: hetzner + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + mode: + name: mode + description: '' + required: true + example: 307 type: string enumValues: - - custom - - hetzner - - digitalocean - - linode - - vultr - exampleWasSpecified: false - nullable: false - custom: [] - region: - name: region - description: 'Provider region if the provider is not custom' - required: true - example: consequatur - type: string - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - plan: - name: plan - description: 'Provider plan if the provider is not custom' - required: true - example: consequatur - type: string - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - ip: - name: ip - description: 'SSH IP address if the provider is custom' - required: true - example: consequatur - type: string - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - port: - name: port - description: 'SSH Port if the provider is custom' - required: true - example: consequatur - type: string - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - name: - name: name - description: 'The name of the server.' - required: true - example: consequatur - type: string - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - os: - name: os - description: 'The os of the server' - required: true - example: consequatur - type: string - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - webserver: - name: webserver - description: 'Web server' - required: true - example: none - type: string - enumValues: - - none - - nginx - exampleWasSpecified: false - nullable: false - custom: [] - database: - name: database - description: Database - required: true - example: mariadb104 - type: string - enumValues: - - none - - mysql57 - - mysql80 - - mariadb103 - - mariadb104 - - mariadb103 - - postgresql12 - - postgresql13 - - postgresql14 - - postgresql15 - - postgresql16 - exampleWasSpecified: false - nullable: false - custom: [] - php: - name: php - description: 'PHP version' - required: true - example: '8.0' - type: string - enumValues: - - '7.0' - - '7.1' - - '7.2' - - '7.3' - - '7.4' - - '8.0' - - '8.1' - - '8.2' - - '8.3' + - 301 + - 302 + - 307 + - 308 exampleWasSpecified: false nullable: false custom: [] cleanBodyParameters: - provider: consequatur - server_provider: hetzner - region: consequatur - plan: consequatur - ip: consequatur - port: consequatur - name: consequatur - os: consequatur - webserver: none - database: mariadb104 - php: '8.0' + from: architecto + to: architecto + mode: 307 fileParameters: [] responses: - status: 200 - content: '{"id":33,"project_id":1,"user_id":1,"provider_id":null,"name":"Dr. Cornelius Luettgen V","ssh_user":"vito","ip":"226.187.235.251","local_ip":"18.62.212.253","port":22,"os":"ubuntu_22","type":"regular","type_data":null,"provider":"custom","provider_data":null,"public_key":"test","status":"ready","auto_update":null,"available_updates":0,"security_updates":null,"progress":100,"progress_step":null,"updates":0,"last_update_check":null,"created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"}' - headers: [] - description: '' - custom: [] - responseFields: [] - auth: [] - controller: null - method: null - route: null - custom: [] - - - httpMethods: - - GET - uri: 'api/projects/{project_id}/servers/{id}' - metadata: - groupName: servers - groupDescription: '' - subgroup: '' - subgroupDescription: '' - title: show - description: 'Get a server by ID.' - authenticated: false - custom: [] - headers: - Content-Type: application/json - Accept: application/json - urlParameters: - project_id: - name: project_id - description: 'The ID of the project.' - required: true - example: 1 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - id: - name: id - description: 'The ID of the server.' - required: true - example: 32 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - cleanUrlParameters: - project_id: 1 - id: 32 - queryParameters: [] - cleanQueryParameters: [] - bodyParameters: [] - cleanBodyParameters: [] - fileParameters: [] - responses: - - - status: 200 - content: '{"id":33,"project_id":1,"user_id":1,"provider_id":null,"name":"Brandy Reichel","ssh_user":"vito","ip":"26.180.121.142","local_ip":"122.175.6.215","port":22,"os":"ubuntu_22","type":"regular","type_data":null,"provider":"custom","provider_data":null,"public_key":"test","status":"ready","auto_update":null,"available_updates":0,"security_updates":null,"progress":100,"progress_step":null,"updates":0,"last_update_check":null,"created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"}' - headers: [] - description: '' - custom: [] - responseFields: [] - auth: [] - controller: null - method: null - route: null - custom: [] - - - httpMethods: - - POST - uri: 'api/projects/{project_id}/servers/{server_id}/reboot' - metadata: - groupName: servers - groupDescription: '' - subgroup: '' - subgroupDescription: '' - title: reboot - description: 'Reboot a server.' - authenticated: false - custom: [] - headers: - Content-Type: application/json - Accept: application/json - urlParameters: - project_id: - name: project_id - description: 'The ID of the project.' - required: true - example: 1 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - server_id: - name: server_id - description: 'The ID of the server.' - required: true - example: 32 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - cleanUrlParameters: - project_id: 1 - server_id: 32 - queryParameters: [] - cleanQueryParameters: [] - bodyParameters: [] - cleanBodyParameters: [] - fileParameters: [] - responses: - - - status: 204 - content: null - headers: [] - description: '' - custom: [] - responseFields: [] - auth: [] - controller: null - method: null - route: null - custom: [] - - - httpMethods: - - POST - uri: 'api/projects/{project_id}/servers/{server_id}/upgrade' - metadata: - groupName: servers - groupDescription: '' - subgroup: '' - subgroupDescription: '' - title: upgrade - description: 'Upgrade server.' - authenticated: false - custom: [] - headers: - Content-Type: application/json - Accept: application/json - urlParameters: - project_id: - name: project_id - description: 'The ID of the project.' - required: true - example: 1 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - server_id: - name: server_id - description: 'The ID of the server.' - required: true - example: 32 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - cleanUrlParameters: - project_id: 1 - server_id: 32 - queryParameters: [] - cleanQueryParameters: [] - bodyParameters: [] - cleanBodyParameters: [] - fileParameters: [] - responses: - - - status: 204 content: null headers: [] description: '' @@ -420,14 +110,14 @@ endpoints: - httpMethods: - DELETE - uri: 'api/projects/{project_id}/servers/{server_id}' + uri: 'api/projects/{project_id}/servers/{server_id}/sites/{site_id}/redirects/{redirect_id}' metadata: - groupName: servers + groupName: redirects groupDescription: '' subgroup: '' subgroupDescription: '' title: delete - description: 'Delete server.' + description: 'Delete a redirect.' authenticated: false custom: [] headers: @@ -448,7 +138,27 @@ endpoints: name: server_id description: 'The ID of the server.' required: true - example: 32 + example: 6 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + site_id: + name: site_id + description: 'The ID of the site.' + required: true + example: 14 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + redirect_id: + name: redirect_id + description: 'The ID of the redirect.' + required: true + example: 2 type: integer enumValues: [] exampleWasSpecified: false @@ -456,7 +166,9 @@ endpoints: custom: [] cleanUrlParameters: project_id: 1 - server_id: 32 + server_id: 6 + site_id: 14 + redirect_id: 2 queryParameters: [] cleanQueryParameters: [] bodyParameters: [] diff --git a/.scribe/endpoints/08.yaml b/.scribe/endpoints/08.yaml index 02d0c05a..6b7f6f53 100644 --- a/.scribe/endpoints/08.yaml +++ b/.scribe/endpoints/08.yaml @@ -1,17 +1,17 @@ -name: server-providers +name: servers description: '' endpoints: - httpMethods: - GET - uri: 'api/projects/{project_id}/server-providers' + uri: 'api/projects/{project_id}/servers' metadata: - groupName: server-providers + groupName: servers groupDescription: '' subgroup: '' subgroupDescription: '' title: list - description: '' + description: 'Get all servers in a project.' authenticated: false custom: [] headers: @@ -38,7 +38,7 @@ endpoints: responses: - status: 200 - content: '{"data":[{"id":4,"project_id":null,"global":true,"name":"quo","provider":"custom","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"},{"id":5,"project_id":null,"global":true,"name":"sed","provider":"digitalocean","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"}],"links":{"first":"\/?page=1","last":"\/?page=1","prev":null,"next":null},"meta":{"current_page":1,"from":1,"last_page":1,"links":[{"url":null,"label":"« Previous","active":false},{"url":"\/?page=1","label":"1","active":true},{"url":null,"label":"Next »","active":false}],"path":"\/","per_page":25,"to":2,"total":2}}' + content: '{"data":[{"id":7,"project_id":1,"services":[],"user_id":1,"provider_id":null,"name":"Rhiannon Hackett","ssh_user":"vito","ssh_users":["root","vito"],"ip":"15.21.182.27","local_ip":"15.126.47.30","port":22,"os":"ubuntu_22","type":"regular","type_data":null,"provider":"custom","provider_data":null,"public_key":"test","status":"ready","auto_update":null,"available_updates":0,"security_updates":null,"progress":100,"progress_step":null,"updates":0,"last_update_check":null,"status_color":"success","created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"},{"id":8,"project_id":1,"services":[],"user_id":1,"provider_id":null,"name":"Maya Bins","ssh_user":"vito","ssh_users":["root","vito"],"ip":"88.63.32.129","local_ip":"161.58.4.234","port":22,"os":"ubuntu_22","type":"regular","type_data":null,"provider":"custom","provider_data":null,"public_key":"test","status":"ready","auto_update":null,"available_updates":0,"security_updates":null,"progress":100,"progress_step":null,"updates":0,"last_update_check":null,"status_color":"success","created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"}],"links":{"first":"\/?page=1","last":"\/?page=1","prev":null,"next":null},"meta":{"current_page":1,"from":1,"last_page":1,"links":[{"url":null,"label":"« Previous","active":false},{"url":"\/?page=1","label":"1","active":true},{"url":null,"label":"Next »","active":false}],"path":"\/","per_page":25,"to":2,"total":2}}' headers: [] description: '' custom: [] @@ -51,14 +51,14 @@ endpoints: - httpMethods: - POST - uri: 'api/projects/{project_id}/server-providers' + uri: 'api/projects/{project_id}/servers' metadata: - groupName: server-providers + groupName: servers groupDescription: '' subgroup: '' subgroupDescription: '' title: create - description: '' + description: 'Create a new server.' authenticated: false custom: [] headers: @@ -82,9 +82,64 @@ endpoints: bodyParameters: provider: name: provider - description: 'The provider (aws, linode, hetzner, digitalocean, vultr, ...)' + description: 'The server provider type' required: true - example: consequatur + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + server_provider: + name: server_provider + description: 'If the provider is not custom, the ID of the server provider profile' + required: true + example: linode + type: string + enumValues: + - custom + - hetzner + - digitalocean + - linode + - vultr + exampleWasSpecified: false + nullable: false + custom: [] + region: + name: region + description: 'Provider region if the provider is not custom' + required: true + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + plan: + name: plan + description: 'Provider plan if the provider is not custom' + required: true + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + ip: + name: ip + description: 'SSH IP address if the provider is custom' + required: true + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + port: + name: port + description: 'SSH Port if the provider is custom' + required: true + example: architecto type: string enumValues: [] exampleWasSpecified: false @@ -92,55 +147,94 @@ endpoints: custom: [] name: name: name - description: 'The name of the server provider.' + description: 'The name of the server.' required: true - example: consequatur + example: architecto type: string enumValues: [] exampleWasSpecified: false nullable: false custom: [] - token: - name: token - description: 'The token if provider requires api token' + os: + name: os + description: 'The os of the server' required: true - example: consequatur + example: architecto type: string enumValues: [] exampleWasSpecified: false nullable: false custom: [] - key: - name: key - description: 'The key if provider requires key' + webserver: + name: webserver + description: 'Web server' required: true - example: consequatur + example: none type: string - enumValues: [] + enumValues: + - none + - nginx + - caddy exampleWasSpecified: false nullable: false custom: [] - secret: - name: secret - description: 'The secret if provider requires key' + database: + name: database + description: Database required: true - example: consequatur + example: mysql80 type: string - enumValues: [] + enumValues: + - none + - mysql57 + - mysql80 + - mariadb103 + - mariadb104 + - mariadb103 + - postgresql12 + - postgresql13 + - postgresql14 + - postgresql15 + - postgresql16 + exampleWasSpecified: false + nullable: false + custom: [] + php: + name: php + description: 'PHP version' + required: true + example: '8.2' + type: string + enumValues: + - '7.0' + - '7.1' + - '7.2' + - '7.3' + - '7.4' + - '8.0' + - '8.1' + - '8.2' + - '8.3' exampleWasSpecified: false nullable: false custom: [] cleanBodyParameters: - provider: consequatur - name: consequatur - token: consequatur - key: consequatur - secret: consequatur + provider: architecto + server_provider: linode + region: architecto + plan: architecto + ip: architecto + port: architecto + name: architecto + os: architecto + webserver: none + database: mysql80 + php: '8.2' fileParameters: [] responses: - status: 200 - content: '{"id":4,"project_id":null,"global":true,"name":"dolores","provider":"digitalocean","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"}' + content: '{"id":7,"project_id":1,"services":[],"user_id":1,"provider_id":null,"name":"Ms. Elisabeth Okuneva","ssh_user":"vito","ssh_users":["root","vito"],"ip":"75.13.66.152","local_ip":"199.172.126.144","port":22,"os":"ubuntu_22","type":"regular","type_data":null,"provider":"custom","provider_data":null,"public_key":"test","status":"ready","auto_update":null,"available_updates":0,"security_updates":null,"progress":100,"progress_step":null,"updates":0,"last_update_check":null,"status_color":"success","created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"}' headers: [] description: '' custom: [] @@ -153,14 +247,14 @@ endpoints: - httpMethods: - GET - uri: 'api/projects/{project_id}/server-providers/{serverProvider_id}' + uri: 'api/projects/{project_id}/servers/{id}' metadata: - groupName: server-providers + groupName: servers groupDescription: '' subgroup: '' subgroupDescription: '' title: show - description: '' + description: 'Get a server by ID.' authenticated: false custom: [] headers: @@ -177,11 +271,11 @@ endpoints: exampleWasSpecified: false nullable: false custom: [] - serverProvider_id: - name: serverProvider_id - description: 'The ID of the serverProvider.' + id: + name: id + description: 'The ID of the server.' required: true - example: 1 + example: 6 type: integer enumValues: [] exampleWasSpecified: false @@ -189,7 +283,7 @@ endpoints: custom: [] cleanUrlParameters: project_id: 1 - serverProvider_id: 1 + id: 6 queryParameters: [] cleanQueryParameters: [] bodyParameters: [] @@ -198,7 +292,7 @@ endpoints: responses: - status: 200 - content: '{"id":4,"project_id":null,"global":true,"name":"voluptatem","provider":"vultr","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"}' + content: '{"id":7,"project_id":1,"services":[],"user_id":1,"provider_id":null,"name":"Belle Dickens","ssh_user":"vito","ssh_users":["root","vito"],"ip":"51.210.32.30","local_ip":"82.174.132.158","port":22,"os":"ubuntu_22","type":"regular","type_data":null,"provider":"custom","provider_data":null,"public_key":"test","status":"ready","auto_update":null,"available_updates":0,"security_updates":null,"progress":100,"progress_step":null,"updates":0,"last_update_check":null,"status_color":"success","created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"}' headers: [] description: '' custom: [] @@ -210,15 +304,15 @@ endpoints: custom: [] - httpMethods: - - PUT - uri: 'api/projects/{project_id}/server-providers/{serverProvider_id}' + - POST + uri: 'api/projects/{project_id}/servers/{server_id}/reboot' metadata: - groupName: server-providers + groupName: servers groupDescription: '' subgroup: '' subgroupDescription: '' - title: update - description: '' + title: reboot + description: 'Reboot a server.' authenticated: false custom: [] headers: @@ -235,11 +329,11 @@ endpoints: exampleWasSpecified: false nullable: false custom: [] - serverProvider_id: - name: serverProvider_id - description: 'The ID of the serverProvider.' + server_id: + name: server_id + description: 'The ID of the server.' required: true - example: 1 + example: 6 type: integer enumValues: [] exampleWasSpecified: false @@ -247,89 +341,123 @@ endpoints: custom: [] cleanUrlParameters: project_id: 1 - serverProvider_id: 1 - queryParameters: [] - cleanQueryParameters: [] - bodyParameters: - name: - name: name - description: 'The name of the server provider.' - required: true - example: consequatur - type: string - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - global: - name: global - description: 'Accessible in all projects' - required: true - example: false - type: string - enumValues: - - true - - false - exampleWasSpecified: false - nullable: false - custom: [] - cleanBodyParameters: - name: consequatur - global: false - fileParameters: [] - responses: - - - status: 200 - content: '{"id":4,"project_id":null,"global":true,"name":"dolores","provider":"digitalocean","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"}' - headers: [] - description: '' - custom: [] - responseFields: [] - auth: [] - controller: null - method: null - route: null - custom: [] - - - httpMethods: - - DELETE - uri: 'api/projects/{project_id}/server-providers/{serverProvider_id}' - metadata: - groupName: server-providers - groupDescription: '' - subgroup: '' - subgroupDescription: '' - title: delete - description: '' - authenticated: false - custom: [] - headers: - Content-Type: application/json - Accept: application/json - urlParameters: - project_id: - name: project_id - description: 'The ID of the project.' - required: true - example: 1 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - serverProvider_id: - name: serverProvider_id - description: 'The ID of the serverProvider.' - required: true - example: 1 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - cleanUrlParameters: - project_id: 1 - serverProvider_id: 1 + server_id: 6 + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 204 + content: null + headers: [] + description: '' + custom: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - POST + uri: 'api/projects/{project_id}/servers/{server_id}/upgrade' + metadata: + groupName: servers + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: upgrade + description: 'Upgrade server.' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: + project_id: + name: project_id + description: 'The ID of the project.' + required: true + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + server_id: + name: server_id + description: 'The ID of the server.' + required: true + example: 6 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + project_id: 1 + server_id: 6 + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 204 + content: null + headers: [] + description: '' + custom: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - DELETE + uri: 'api/projects/{project_id}/servers/{server_id}' + metadata: + groupName: servers + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: delete + description: 'Delete server.' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: + project_id: + name: project_id + description: 'The ID of the project.' + required: true + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + server_id: + name: server_id + description: 'The ID of the server.' + required: true + example: 6 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + project_id: 1 + server_id: 6 queryParameters: [] cleanQueryParameters: [] bodyParameters: [] diff --git a/.scribe/endpoints/09.yaml b/.scribe/endpoints/09.yaml index 9f581128..de21bb6c 100644 --- a/.scribe/endpoints/09.yaml +++ b/.scribe/endpoints/09.yaml @@ -1,17 +1,17 @@ -name: ssh-keys +name: server-providers description: '' endpoints: - httpMethods: - GET - uri: 'api/projects/{project_id}/servers/{server_id}/ssh-keys' + uri: 'api/projects/{project_id}/server-providers' metadata: - groupName: ssh-keys + groupName: server-providers groupDescription: '' subgroup: '' subgroupDescription: '' title: list - description: 'Get all ssh keys.' + description: '' authenticated: false custom: [] headers: @@ -28,19 +28,8 @@ endpoints: exampleWasSpecified: false nullable: false custom: [] - server_id: - name: server_id - description: 'The ID of the server.' - required: true - example: 32 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] cleanUrlParameters: project_id: 1 - server_id: 32 queryParameters: [] cleanQueryParameters: [] bodyParameters: [] @@ -49,7 +38,7 @@ endpoints: responses: - status: 200 - content: '{"data":[{"id":2,"user":{"id":1,"name":"Saeed Vaziry","email":"demo@vitodeploy.com","created_at":"2024-12-19T23:19:20.000000Z","updated_at":"2025-04-19T21:24:56.000000Z"},"name":"Prof. Aurelia Buckridge MD","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"},{"id":3,"user":{"id":1,"name":"Saeed Vaziry","email":"demo@vitodeploy.com","created_at":"2024-12-19T23:19:20.000000Z","updated_at":"2025-04-19T21:24:56.000000Z"},"name":"Jaylan Lakin","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"}],"links":{"first":"\/?page=1","last":"\/?page=1","prev":null,"next":null},"meta":{"current_page":1,"from":1,"last_page":1,"links":[{"url":null,"label":"« Previous","active":false},{"url":"\/?page=1","label":"1","active":true},{"url":null,"label":"Next »","active":false}],"path":"\/","per_page":25,"to":2,"total":2}}' + content: '{"data":[{"id":4,"project_id":null,"global":true,"name":"ab","provider":"custom","created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"},{"id":5,"project_id":null,"global":true,"name":"incidunt","provider":"custom","created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"}],"links":{"first":"\/?page=1","last":"\/?page=1","prev":null,"next":null},"meta":{"current_page":1,"from":1,"last_page":1,"links":[{"url":null,"label":"« Previous","active":false},{"url":"\/?page=1","label":"1","active":true},{"url":null,"label":"Next »","active":false}],"path":"\/","per_page":25,"to":2,"total":2}}' headers: [] description: '' custom: [] @@ -62,14 +51,14 @@ endpoints: - httpMethods: - POST - uri: 'api/projects/{project_id}/servers/{server_id}/ssh-keys' + uri: 'api/projects/{project_id}/server-providers' metadata: - groupName: ssh-keys + groupName: server-providers groupDescription: '' subgroup: '' subgroupDescription: '' title: create - description: 'Deploy ssh key to server.' + description: '' authenticated: false custom: [] headers: @@ -86,27 +75,16 @@ endpoints: exampleWasSpecified: false nullable: false custom: [] - server_id: - name: server_id - description: 'The ID of the server.' - required: true - example: 32 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] cleanUrlParameters: project_id: 1 - server_id: 32 queryParameters: [] cleanQueryParameters: [] bodyParameters: - key_id: - name: key_id - description: 'The ID of the key.' + provider: + name: provider + description: 'The provider (aws, linode, hetzner, digitalocean, vultr, ...)' required: true - example: consequatur + example: architecto type: string enumValues: [] exampleWasSpecified: false @@ -114,33 +92,195 @@ endpoints: custom: [] name: name: name - description: 'Key name, required if key_id is not provided.' + description: 'The name of the server provider.' required: true - example: consequatur + example: architecto type: string enumValues: [] exampleWasSpecified: false nullable: false custom: [] - public_key: - name: public_key - description: 'Public Key, required if key_id is not provided.' + token: + name: token + description: 'The token if provider requires api token' required: true - example: consequatur + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + key: + name: key + description: 'The key if provider requires key' + required: true + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + secret: + name: secret + description: 'The secret if provider requires key' + required: true + example: architecto type: string enumValues: [] exampleWasSpecified: false nullable: false custom: [] cleanBodyParameters: - key_id: consequatur - name: consequatur - public_key: consequatur + provider: architecto + name: architecto + token: architecto + key: architecto + secret: architecto fileParameters: [] responses: - status: 200 - content: '{"id":2,"user":{"id":1,"name":"Saeed Vaziry","email":"demo@vitodeploy.com","created_at":"2024-12-19T23:19:20.000000Z","updated_at":"2025-04-19T21:24:56.000000Z"},"name":"Dr. Cornelius Luettgen V","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"}' + content: '{"id":4,"project_id":null,"global":true,"name":"eius","provider":"custom","created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"}' + headers: [] + description: '' + custom: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - GET + uri: 'api/projects/{project_id}/server-providers/{serverProvider_id}' + metadata: + groupName: server-providers + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: show + description: '' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: + project_id: + name: project_id + description: 'The ID of the project.' + required: true + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + serverProvider_id: + name: serverProvider_id + description: 'The ID of the serverProvider.' + required: true + example: 3 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + project_id: 1 + serverProvider_id: 3 + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 200 + content: '{"id":4,"project_id":null,"global":true,"name":"mollitia","provider":"vultr","created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"}' + headers: [] + description: '' + custom: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - PUT + uri: 'api/projects/{project_id}/server-providers/{serverProvider_id}' + metadata: + groupName: server-providers + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: update + description: '' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: + project_id: + name: project_id + description: 'The ID of the project.' + required: true + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + serverProvider_id: + name: serverProvider_id + description: 'The ID of the serverProvider.' + required: true + example: 3 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + project_id: 1 + serverProvider_id: 3 + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: + name: + name: name + description: 'The name of the server provider.' + required: true + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + global: + name: global + description: 'Accessible in all projects' + required: true + example: false + type: string + enumValues: + - true + - false + exampleWasSpecified: false + nullable: false + custom: [] + cleanBodyParameters: + name: architecto + global: false + fileParameters: [] + responses: + - + status: 200 + content: '{"id":4,"project_id":null,"global":true,"name":"eius","provider":"custom","created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"}' headers: [] description: '' custom: [] @@ -153,14 +293,14 @@ endpoints: - httpMethods: - DELETE - uri: 'api/projects/{project_id}/servers/{server_id}/ssh-keys/{sshKey_id}' + uri: 'api/projects/{project_id}/server-providers/{serverProvider_id}' metadata: - groupName: ssh-keys + groupName: server-providers groupDescription: '' subgroup: '' subgroupDescription: '' title: delete - description: 'Delete ssh key from server.' + description: '' authenticated: false custom: [] headers: @@ -177,21 +317,11 @@ endpoints: exampleWasSpecified: false nullable: false custom: [] - server_id: - name: server_id - description: 'The ID of the server.' + serverProvider_id: + name: serverProvider_id + description: 'The ID of the serverProvider.' required: true - example: 32 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - sshKey_id: - name: sshKey_id - description: 'The ID of the sshKey.' - required: true - example: 1 + example: 3 type: integer enumValues: [] exampleWasSpecified: false @@ -199,8 +329,7 @@ endpoints: custom: [] cleanUrlParameters: project_id: 1 - server_id: 32 - sshKey_id: 1 + serverProvider_id: 3 queryParameters: [] cleanQueryParameters: [] bodyParameters: [] diff --git a/.scribe/endpoints/10.yaml b/.scribe/endpoints/10.yaml index bd3d03dd..3d60a854 100644 --- a/.scribe/endpoints/10.yaml +++ b/.scribe/endpoints/10.yaml @@ -1,17 +1,17 @@ -name: services +name: ssh-keys description: '' endpoints: - httpMethods: - GET - uri: 'api/projects/{project_id}/servers/{server_id}/services' + uri: 'api/projects/{project_id}/servers/{server_id}/ssh-keys' metadata: - groupName: services + groupName: ssh-keys groupDescription: '' subgroup: '' subgroupDescription: '' title: list - description: 'Get all services.' + description: 'Get all ssh keys.' authenticated: false custom: [] headers: @@ -32,7 +32,7 @@ endpoints: name: server_id description: 'The ID of the server.' required: true - example: 32 + example: 6 type: integer enumValues: [] exampleWasSpecified: false @@ -40,7 +40,7 @@ endpoints: custom: [] cleanUrlParameters: project_id: 1 - server_id: 32 + server_id: 6 queryParameters: [] cleanQueryParameters: [] bodyParameters: [] @@ -49,7 +49,7 @@ endpoints: responses: - status: 200 - content: '{"data":[{"id":null,"server_id":1,"type":"webserver","type_data":null,"name":"nginx","version":null,"unit":null,"status":"ready","is_default":null,"created_at":null,"updated_at":null},{"id":null,"server_id":1,"type":"webserver","type_data":null,"name":"nginx","version":null,"unit":null,"status":"ready","is_default":null,"created_at":null,"updated_at":null}],"links":{"first":"\/?page=1","last":"\/?page=1","prev":null,"next":null},"meta":{"current_page":1,"from":1,"last_page":1,"links":[{"url":null,"label":"« Previous","active":false},{"url":"\/?page=1","label":"1","active":true},{"url":null,"label":"Next »","active":false}],"path":"\/","per_page":25,"to":2,"total":2}}' + content: '{"data":[{"id":3,"name":"Haven Romaguera","created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"},{"id":4,"name":"Viva Marquardt","created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"}],"links":{"first":"\/?page=1","last":"\/?page=1","prev":null,"next":null},"meta":{"current_page":1,"from":1,"last_page":1,"links":[{"url":null,"label":"« Previous","active":false},{"url":"\/?page=1","label":"1","active":true},{"url":null,"label":"Next »","active":false}],"path":"\/","per_page":25,"to":2,"total":2}}' headers: [] description: '' custom: [] @@ -61,15 +61,15 @@ endpoints: custom: [] - httpMethods: - - GET - uri: 'api/projects/{project_id}/servers/{server_id}/services/{id}' + - POST + uri: 'api/projects/{project_id}/servers/{server_id}/ssh-keys' metadata: - groupName: services + groupName: ssh-keys groupDescription: '' subgroup: '' subgroupDescription: '' - title: show - description: 'Get a service by ID.' + title: create + description: 'Deploy ssh key to server.' authenticated: false custom: [] headers: @@ -90,17 +90,7 @@ endpoints: name: server_id description: 'The ID of the server.' required: true - example: 32 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - id: - name: id - description: 'The ID of the service.' - required: true - example: 184 + example: 6 type: integer enumValues: [] exampleWasSpecified: false @@ -108,362 +98,49 @@ endpoints: custom: [] cleanUrlParameters: project_id: 1 - server_id: 32 - id: 184 + server_id: 6 queryParameters: [] cleanQueryParameters: [] - bodyParameters: [] - cleanBodyParameters: [] + bodyParameters: + key_id: + name: key_id + description: 'The ID of the key.' + required: true + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + name: + name: name + description: 'Key name, required if key_id is not provided.' + required: true + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + public_key: + name: public_key + description: 'Public Key, required if key_id is not provided.' + required: true + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanBodyParameters: + key_id: architecto + name: architecto + public_key: architecto fileParameters: [] responses: - status: 200 - content: '{"id":null,"server_id":1,"type":"webserver","type_data":null,"name":"nginx","version":null,"unit":null,"status":"ready","is_default":null,"created_at":null,"updated_at":null}' - headers: [] - description: '' - custom: [] - responseFields: [] - auth: [] - controller: null - method: null - route: null - custom: [] - - - httpMethods: - - POST - uri: 'api/projects/{project_id}/servers/{server_id}/services/{service_id}/start' - metadata: - groupName: services - groupDescription: '' - subgroup: '' - subgroupDescription: '' - title: start - description: 'Start service.' - authenticated: false - custom: [] - headers: - Content-Type: application/json - Accept: application/json - urlParameters: - project_id: - name: project_id - description: 'The ID of the project.' - required: true - example: 1 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - server_id: - name: server_id - description: 'The ID of the server.' - required: true - example: 32 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - service_id: - name: service_id - description: 'The ID of the service.' - required: true - example: 184 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - cleanUrlParameters: - project_id: 1 - server_id: 32 - service_id: 184 - queryParameters: [] - cleanQueryParameters: [] - bodyParameters: [] - cleanBodyParameters: [] - fileParameters: [] - responses: - - - status: 204 - content: null - headers: [] - description: '' - custom: [] - responseFields: [] - auth: [] - controller: null - method: null - route: null - custom: [] - - - httpMethods: - - POST - uri: 'api/projects/{project_id}/servers/{server_id}/services/{service_id}/stop' - metadata: - groupName: services - groupDescription: '' - subgroup: '' - subgroupDescription: '' - title: stop - description: 'Stop service.' - authenticated: false - custom: [] - headers: - Content-Type: application/json - Accept: application/json - urlParameters: - project_id: - name: project_id - description: 'The ID of the project.' - required: true - example: 1 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - server_id: - name: server_id - description: 'The ID of the server.' - required: true - example: 32 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - service_id: - name: service_id - description: 'The ID of the service.' - required: true - example: 184 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - cleanUrlParameters: - project_id: 1 - server_id: 32 - service_id: 184 - queryParameters: [] - cleanQueryParameters: [] - bodyParameters: [] - cleanBodyParameters: [] - fileParameters: [] - responses: - - - status: 204 - content: null - headers: [] - description: '' - custom: [] - responseFields: [] - auth: [] - controller: null - method: null - route: null - custom: [] - - - httpMethods: - - POST - uri: 'api/projects/{project_id}/servers/{server_id}/services/{service_id}/restart' - metadata: - groupName: services - groupDescription: '' - subgroup: '' - subgroupDescription: '' - title: restart - description: 'Restart service.' - authenticated: false - custom: [] - headers: - Content-Type: application/json - Accept: application/json - urlParameters: - project_id: - name: project_id - description: 'The ID of the project.' - required: true - example: 1 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - server_id: - name: server_id - description: 'The ID of the server.' - required: true - example: 32 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - service_id: - name: service_id - description: 'The ID of the service.' - required: true - example: 184 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - cleanUrlParameters: - project_id: 1 - server_id: 32 - service_id: 184 - queryParameters: [] - cleanQueryParameters: [] - bodyParameters: [] - cleanBodyParameters: [] - fileParameters: [] - responses: - - - status: 204 - content: null - headers: [] - description: '' - custom: [] - responseFields: [] - auth: [] - controller: null - method: null - route: null - custom: [] - - - httpMethods: - - POST - uri: 'api/projects/{project_id}/servers/{server_id}/services/{service_id}/enable' - metadata: - groupName: services - groupDescription: '' - subgroup: '' - subgroupDescription: '' - title: enable - description: 'Enable service.' - authenticated: false - custom: [] - headers: - Content-Type: application/json - Accept: application/json - urlParameters: - project_id: - name: project_id - description: 'The ID of the project.' - required: true - example: 1 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - server_id: - name: server_id - description: 'The ID of the server.' - required: true - example: 32 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - service_id: - name: service_id - description: 'The ID of the service.' - required: true - example: 184 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - cleanUrlParameters: - project_id: 1 - server_id: 32 - service_id: 184 - queryParameters: [] - cleanQueryParameters: [] - bodyParameters: [] - cleanBodyParameters: [] - fileParameters: [] - responses: - - - status: 204 - content: null - headers: [] - description: '' - custom: [] - responseFields: [] - auth: [] - controller: null - method: null - route: null - custom: [] - - - httpMethods: - - POST - uri: 'api/projects/{project_id}/servers/{server_id}/services/{service_id}/disable' - metadata: - groupName: services - groupDescription: '' - subgroup: '' - subgroupDescription: '' - title: disable - description: 'Disable service.' - authenticated: false - custom: [] - headers: - Content-Type: application/json - Accept: application/json - urlParameters: - project_id: - name: project_id - description: 'The ID of the project.' - required: true - example: 1 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - server_id: - name: server_id - description: 'The ID of the server.' - required: true - example: 32 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - service_id: - name: service_id - description: 'The ID of the service.' - required: true - example: 184 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - cleanUrlParameters: - project_id: 1 - server_id: 32 - service_id: 184 - queryParameters: [] - cleanQueryParameters: [] - bodyParameters: [] - cleanBodyParameters: [] - fileParameters: [] - responses: - - - status: 204 - content: null + content: '{"id":3,"name":"Ms. Elisabeth Okuneva","created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"}' headers: [] description: '' custom: [] @@ -476,14 +153,14 @@ endpoints: - httpMethods: - DELETE - uri: 'api/projects/{project_id}/servers/{server_id}/services/{service_id}' + uri: 'api/projects/{project_id}/servers/{server_id}/ssh-keys/{sshKey_id}' metadata: - groupName: services + groupName: ssh-keys groupDescription: '' subgroup: '' subgroupDescription: '' title: delete - description: 'Delete service.' + description: 'Delete ssh key from server.' authenticated: false custom: [] headers: @@ -504,17 +181,17 @@ endpoints: name: server_id description: 'The ID of the server.' required: true - example: 32 + example: 6 type: integer enumValues: [] exampleWasSpecified: false nullable: false custom: [] - service_id: - name: service_id - description: 'The ID of the service.' + sshKey_id: + name: sshKey_id + description: 'The ID of the sshKey.' required: true - example: 184 + example: 1 type: integer enumValues: [] exampleWasSpecified: false @@ -522,8 +199,8 @@ endpoints: custom: [] cleanUrlParameters: project_id: 1 - server_id: 32 - service_id: 184 + server_id: 6 + sshKey_id: 1 queryParameters: [] cleanQueryParameters: [] bodyParameters: [] diff --git a/.scribe/endpoints/11.yaml b/.scribe/endpoints/11.yaml index 9001ea6f..b617cc25 100644 --- a/.scribe/endpoints/11.yaml +++ b/.scribe/endpoints/11.yaml @@ -1,17 +1,17 @@ -name: sites +name: services description: '' endpoints: - httpMethods: - GET - uri: 'api/projects/{project_id}/servers/{server_id}/sites' + uri: 'api/projects/{project_id}/servers/{server_id}/services' metadata: - groupName: sites + groupName: services groupDescription: '' subgroup: '' subgroupDescription: '' title: list - description: 'Get all sites.' + description: 'Get all services.' authenticated: false custom: [] headers: @@ -32,7 +32,7 @@ endpoints: name: server_id description: 'The ID of the server.' required: true - example: 32 + example: 6 type: integer enumValues: [] exampleWasSpecified: false @@ -40,7 +40,7 @@ endpoints: custom: [] cleanUrlParameters: project_id: 1 - server_id: 32 + server_id: 6 queryParameters: [] cleanQueryParameters: [] bodyParameters: [] @@ -49,7 +49,76 @@ endpoints: responses: - status: 200 - content: '{"data":[{"id":50,"server_id":1,"source_control_id":null,"type":"laravel","type_data":null,"domain":"test.com","aliases":null,"web_directory":"\/","path":"\/home","php_version":"8.2","repository":null,"branch":"main","status":"ready","port":null,"user":"vito","progress":100,"created_at":"2025-04-21T18:40:20.000000Z","updated_at":"2025-04-21T18:40:20.000000Z"},{"id":51,"server_id":1,"source_control_id":null,"type":"laravel","type_data":null,"domain":"test.com","aliases":null,"web_directory":"\/","path":"\/home","php_version":"8.2","repository":null,"branch":"main","status":"ready","port":null,"user":"vito","progress":100,"created_at":"2025-04-21T18:40:20.000000Z","updated_at":"2025-04-21T18:40:20.000000Z"}],"links":{"first":"\/?page=1","last":"\/?page=1","prev":null,"next":null},"meta":{"current_page":1,"from":1,"last_page":1,"links":[{"url":null,"label":"« Previous","active":false},{"url":"\/?page=1","label":"1","active":true},{"url":null,"label":"Next »","active":false}],"path":"\/","per_page":25,"to":2,"total":2}}' + content: '{"data":[{"id":null,"server_id":1,"type":"webserver","type_data":null,"name":"nginx","version":null,"unit":null,"status":"ready","status_color":"success","icon":"","is_default":null,"created_at":null,"updated_at":null},{"id":null,"server_id":1,"type":"webserver","type_data":null,"name":"nginx","version":null,"unit":null,"status":"ready","status_color":"success","icon":"","is_default":null,"created_at":null,"updated_at":null}],"links":{"first":"\/?page=1","last":"\/?page=1","prev":null,"next":null},"meta":{"current_page":1,"from":1,"last_page":1,"links":[{"url":null,"label":"« Previous","active":false},{"url":"\/?page=1","label":"1","active":true},{"url":null,"label":"Next »","active":false}],"path":"\/","per_page":25,"to":2,"total":2}}' + headers: [] + description: '' + custom: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - GET + uri: 'api/projects/{project_id}/servers/{server_id}/services/{id}' + metadata: + groupName: services + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: show + description: 'Get a service by ID.' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: + project_id: + name: project_id + description: 'The ID of the project.' + required: true + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + server_id: + name: server_id + description: 'The ID of the server.' + required: true + example: 6 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + id: + name: id + description: 'The ID of the service.' + required: true + example: 22 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + project_id: 1 + server_id: 6 + id: 22 + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 200 + content: '{"id":null,"server_id":1,"type":"webserver","type_data":null,"name":"nginx","version":null,"unit":null,"status":"ready","status_color":"success","icon":"","is_default":null,"created_at":null,"updated_at":null}' headers: [] description: '' custom: [] @@ -62,14 +131,14 @@ endpoints: - httpMethods: - POST - uri: 'api/projects/{project_id}/servers/{server_id}/sites' + uri: 'api/projects/{project_id}/servers/{server_id}/services/{service_id}/start' metadata: - groupName: sites + groupName: services groupDescription: '' subgroup: '' subgroupDescription: '' - title: create - description: 'Create a new site.' + title: start + description: 'Start service.' authenticated: false custom: [] headers: @@ -90,7 +159,17 @@ endpoints: name: server_id description: 'The ID of the server.' required: true - example: 32 + example: 6 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + service_id: + name: service_id + description: 'The ID of the service.' + required: true + example: 22 type: integer enumValues: [] exampleWasSpecified: false @@ -98,159 +177,17 @@ endpoints: custom: [] cleanUrlParameters: project_id: 1 - server_id: 32 + server_id: 6 + service_id: 22 queryParameters: [] cleanQueryParameters: [] - bodyParameters: - type: - name: type - description: '' - required: true - example: load-balancer - type: string - enumValues: - - php - - php-blank - - phpmyadmin - - laravel - - wordpress - - load-balancer - exampleWasSpecified: false - nullable: false - custom: [] - domain: - name: domain - description: '' - required: true - example: consequatur - type: string - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - aliases: - name: aliases - description: '' - required: true - example: - - consequatur - type: 'string[]' - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - php_version: - name: php_version - description: 'One of the installed PHP Versions' - required: true - example: '7.4' - type: string - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - web_directory: - name: web_directory - description: 'Required for PHP and Laravel sites' - required: true - example: public - type: string - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - source_control: - name: source_control - description: 'Source control ID, Required for Sites which support source control' - required: true - example: consequatur - type: string - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - repository: - name: repository - description: 'Repository, Required for Sites which support source control' - required: true - example: organization/repository - type: string - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - branch: - name: branch - description: 'Branch, Required for Sites which support source control' - required: true - example: main - type: string - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - composer: - name: composer - description: 'Run composer if site supports composer' - required: true - example: true - type: boolean - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - version: - name: version - description: 'Version, if the site type requires a version like PHPMyAdmin' - required: true - example: 5.2.1 - type: string - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - user: - name: user - description: 'user, to isolate the website under a new user' - required: true - example: consequatur - type: string - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - method: - name: method - description: 'Load balancer method, Required if the site type is Load balancer' - required: true - example: ip-hash - type: string - enumValues: - - round-robin - - least-connections - - ip-hash - exampleWasSpecified: false - nullable: false - custom: [] - cleanBodyParameters: - type: load-balancer - domain: consequatur - aliases: - - consequatur - php_version: '7.4' - web_directory: public - source_control: consequatur - repository: organization/repository - branch: main - composer: true - version: 5.2.1 - user: consequatur - method: ip-hash + bodyParameters: [] + cleanBodyParameters: [] fileParameters: [] responses: - - status: 200 - content: '{"id":50,"server_id":1,"source_control_id":null,"type":"laravel","type_data":null,"domain":"test.com","aliases":null,"web_directory":"\/","path":"\/home","php_version":"8.2","repository":null,"branch":"main","status":"ready","port":null,"user":"vito","progress":100,"created_at":"2025-04-21T18:40:20.000000Z","updated_at":"2025-04-21T18:40:20.000000Z"}' + status: 204 + content: null headers: [] description: '' custom: [] @@ -262,15 +199,15 @@ endpoints: custom: [] - httpMethods: - - GET - uri: 'api/projects/{project_id}/servers/{server_id}/sites/{id}' + - POST + uri: 'api/projects/{project_id}/servers/{server_id}/services/{service_id}/stop' metadata: - groupName: sites + groupName: services groupDescription: '' subgroup: '' subgroupDescription: '' - title: show - description: 'Get a site by ID.' + title: stop + description: 'Stop service.' authenticated: false custom: [] headers: @@ -291,17 +228,17 @@ endpoints: name: server_id description: 'The ID of the server.' required: true - example: 32 + example: 6 type: integer enumValues: [] exampleWasSpecified: false nullable: false custom: [] - id: - name: id - description: 'The ID of the site.' + service_id: + name: service_id + description: 'The ID of the service.' required: true - example: 17 + example: 22 type: integer enumValues: [] exampleWasSpecified: false @@ -309,8 +246,8 @@ endpoints: custom: [] cleanUrlParameters: project_id: 1 - server_id: 32 - id: 17 + server_id: 6 + service_id: 22 queryParameters: [] cleanQueryParameters: [] bodyParameters: [] @@ -318,8 +255,215 @@ endpoints: fileParameters: [] responses: - - status: 200 - content: '{"id":50,"server_id":1,"source_control_id":null,"type":"laravel","type_data":null,"domain":"test.com","aliases":null,"web_directory":"\/","path":"\/home","php_version":"8.2","repository":null,"branch":"main","status":"ready","port":null,"user":"vito","progress":100,"created_at":"2025-04-21T18:40:20.000000Z","updated_at":"2025-04-21T18:40:20.000000Z"}' + status: 204 + content: null + headers: [] + description: '' + custom: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - POST + uri: 'api/projects/{project_id}/servers/{server_id}/services/{service_id}/restart' + metadata: + groupName: services + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: restart + description: 'Restart service.' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: + project_id: + name: project_id + description: 'The ID of the project.' + required: true + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + server_id: + name: server_id + description: 'The ID of the server.' + required: true + example: 6 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + service_id: + name: service_id + description: 'The ID of the service.' + required: true + example: 22 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + project_id: 1 + server_id: 6 + service_id: 22 + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 204 + content: null + headers: [] + description: '' + custom: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - POST + uri: 'api/projects/{project_id}/servers/{server_id}/services/{service_id}/enable' + metadata: + groupName: services + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: enable + description: 'Enable service.' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: + project_id: + name: project_id + description: 'The ID of the project.' + required: true + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + server_id: + name: server_id + description: 'The ID of the server.' + required: true + example: 6 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + service_id: + name: service_id + description: 'The ID of the service.' + required: true + example: 22 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + project_id: 1 + server_id: 6 + service_id: 22 + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 204 + content: null + headers: [] + description: '' + custom: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - POST + uri: 'api/projects/{project_id}/servers/{server_id}/services/{service_id}/disable' + metadata: + groupName: services + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: disable + description: 'Disable service.' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: + project_id: + name: project_id + description: 'The ID of the project.' + required: true + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + server_id: + name: server_id + description: 'The ID of the server.' + required: true + example: 6 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + service_id: + name: service_id + description: 'The ID of the service.' + required: true + example: 22 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + project_id: 1 + server_id: 6 + service_id: 22 + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 204 + content: null headers: [] description: '' custom: [] @@ -332,14 +476,14 @@ endpoints: - httpMethods: - DELETE - uri: 'api/projects/{project_id}/servers/{server_id}/sites/{site_id}' + uri: 'api/projects/{project_id}/servers/{server_id}/services/{service_id}' metadata: - groupName: sites + groupName: services groupDescription: '' subgroup: '' subgroupDescription: '' title: delete - description: 'Delete site.' + description: 'Delete service.' authenticated: false custom: [] headers: @@ -360,17 +504,17 @@ endpoints: name: server_id description: 'The ID of the server.' required: true - example: 32 + example: 6 type: integer enumValues: [] exampleWasSpecified: false nullable: false custom: [] - site_id: - name: site_id - description: 'The ID of the site.' + service_id: + name: service_id + description: 'The ID of the service.' required: true - example: 17 + example: 22 type: integer enumValues: [] exampleWasSpecified: false @@ -378,8 +522,8 @@ endpoints: custom: [] cleanUrlParameters: project_id: 1 - server_id: 32 - site_id: 17 + server_id: 6 + service_id: 22 queryParameters: [] cleanQueryParameters: [] bodyParameters: [] @@ -398,548 +542,3 @@ endpoints: method: null route: null custom: [] - - - httpMethods: - - POST - uri: 'api/projects/{project_id}/servers/{server_id}/sites/{site_id}/load-balancer' - metadata: - groupName: sites - groupDescription: '' - subgroup: '' - subgroupDescription: '' - title: load-balancer - description: 'Update load balancer.' - authenticated: false - custom: [] - headers: - Content-Type: application/json - Accept: application/json - urlParameters: - project_id: - name: project_id - description: 'The ID of the project.' - required: true - example: 1 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - server_id: - name: server_id - description: 'The ID of the server.' - required: true - example: 32 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - site_id: - name: site_id - description: 'The ID of the site.' - required: true - example: 17 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - cleanUrlParameters: - project_id: 1 - server_id: 32 - site_id: 17 - queryParameters: [] - cleanQueryParameters: [] - bodyParameters: - method: - name: method - description: 'Load balancer method, Required if the site type is Load balancer' - required: true - example: ip-hash - type: string - enumValues: - - round-robin - - least-connections - - ip-hash - exampleWasSpecified: false - nullable: false - custom: [] - servers: - name: servers - description: 'Array of servers including server, port, weight, backup. (server is the local IP of the server)' - required: true - example: - - consequatur - type: 'string[]' - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - cleanBodyParameters: - method: ip-hash - servers: - - consequatur - fileParameters: [] - responses: - - - status: 200 - content: null - headers: [] - description: '' - custom: [] - responseFields: [] - auth: [] - controller: null - method: null - route: null - custom: [] - - - httpMethods: - - PUT - uri: 'api/projects/{project_id}/servers/{server_id}/sites/{site_id}/aliases' - metadata: - groupName: sites - groupDescription: '' - subgroup: '' - subgroupDescription: '' - title: aliases - description: 'Update aliases.' - authenticated: false - custom: [] - headers: - Content-Type: application/json - Accept: application/json - urlParameters: - project_id: - name: project_id - description: 'The ID of the project.' - required: true - example: 1 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - server_id: - name: server_id - description: 'The ID of the server.' - required: true - example: 32 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - site_id: - name: site_id - description: 'The ID of the site.' - required: true - example: 17 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - cleanUrlParameters: - project_id: 1 - server_id: 32 - site_id: 17 - queryParameters: [] - cleanQueryParameters: [] - bodyParameters: - aliases: - name: aliases - description: 'Array of aliases' - required: true - example: - - consequatur - type: 'string[]' - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - cleanBodyParameters: - aliases: - - consequatur - fileParameters: [] - responses: - - - status: 200 - content: null - headers: [] - description: '' - custom: [] - responseFields: [] - auth: [] - controller: null - method: null - route: null - custom: [] - - - httpMethods: - - POST - uri: 'api/projects/{project_id}/servers/{server_id}/sites/{site_id}/deploy' - metadata: - groupName: sites - groupDescription: '' - subgroup: '' - subgroupDescription: '' - title: deploy - description: 'Run site deployment script' - authenticated: false - custom: [] - headers: - Content-Type: application/json - Accept: application/json - urlParameters: - project_id: - name: project_id - description: 'The ID of the project.' - required: true - example: 1 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - server_id: - name: server_id - description: 'The ID of the server.' - required: true - example: 32 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - site_id: - name: site_id - description: 'The ID of the site.' - required: true - example: 17 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - cleanUrlParameters: - project_id: 1 - server_id: 32 - site_id: 17 - queryParameters: [] - cleanQueryParameters: [] - bodyParameters: [] - cleanBodyParameters: [] - fileParameters: [] - responses: - - - status: 200 - content: null - headers: [] - description: '' - custom: [] - responseFields: [] - auth: [] - controller: null - method: null - route: null - custom: [] - - - httpMethods: - - PUT - uri: 'api/projects/{project_id}/servers/{server_id}/sites/{site_id}/deployment-script' - metadata: - groupName: sites - groupDescription: '' - subgroup: '' - subgroupDescription: '' - title: deployment-script - description: 'Update site deployment script' - authenticated: false - custom: [] - headers: - Content-Type: application/json - Accept: application/json - urlParameters: - project_id: - name: project_id - description: 'The ID of the project.' - required: true - example: 1 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - server_id: - name: server_id - description: 'The ID of the server.' - required: true - example: 32 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - site_id: - name: site_id - description: 'The ID of the site.' - required: true - example: 17 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - cleanUrlParameters: - project_id: 1 - server_id: 32 - site_id: 17 - queryParameters: [] - cleanQueryParameters: [] - bodyParameters: - script: - name: script - description: 'Content of the deployment script' - required: true - example: consequatur - type: string - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - cleanBodyParameters: - script: consequatur - fileParameters: [] - responses: - - - status: 204 - content: null - headers: [] - description: '' - custom: [] - responseFields: [] - auth: [] - controller: null - method: null - route: null - custom: [] - - - httpMethods: - - GET - uri: 'api/projects/{project_id}/servers/{server_id}/sites/{site_id}/deployment-script' - metadata: - groupName: sites - groupDescription: '' - subgroup: '' - subgroupDescription: '' - title: deployment-script - description: 'Get site deployment script content' - authenticated: false - custom: [] - headers: - Content-Type: application/json - Accept: application/json - urlParameters: - project_id: - name: project_id - description: 'The ID of the project.' - required: true - example: 1 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - server_id: - name: server_id - description: 'The ID of the server.' - required: true - example: 32 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - site_id: - name: site_id - description: 'The ID of the site.' - required: true - example: 17 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - cleanUrlParameters: - project_id: 1 - server_id: 32 - site_id: 17 - queryParameters: [] - cleanQueryParameters: [] - bodyParameters: [] - cleanBodyParameters: [] - fileParameters: [] - responses: - - - status: 200 - content: null - headers: [] - description: '' - custom: [] - responseFields: [] - auth: [] - controller: null - method: null - route: null - custom: [] - - - httpMethods: - - GET - uri: 'api/projects/{project_id}/servers/{server_id}/sites/{site_id}/env' - metadata: - groupName: sites - groupDescription: '' - subgroup: '' - subgroupDescription: '' - title: env - description: 'Get site .env file content' - authenticated: false - custom: [] - headers: - Content-Type: application/json - Accept: application/json - urlParameters: - project_id: - name: project_id - description: 'The ID of the project.' - required: true - example: 1 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - server_id: - name: server_id - description: 'The ID of the server.' - required: true - example: 32 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - site_id: - name: site_id - description: 'The ID of the site.' - required: true - example: 17 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - cleanUrlParameters: - project_id: 1 - server_id: 32 - site_id: 17 - queryParameters: [] - cleanQueryParameters: [] - bodyParameters: [] - cleanBodyParameters: [] - fileParameters: [] - responses: - - - status: 200 - content: '{"data":{"env":"APP_NAME=Laravel\\nAPP_ENV=production"}}' - headers: [] - description: '' - custom: [] - responseFields: [] - auth: [] - controller: null - method: null - route: null - custom: [] - - - httpMethods: - - PUT - uri: 'api/projects/{project_id}/servers/{server_id}/sites/{site_id}/env' - metadata: - groupName: sites - groupDescription: '' - subgroup: '' - subgroupDescription: '' - title: env - description: 'Update site .env file' - authenticated: false - custom: [] - headers: - Content-Type: application/json - Accept: application/json - urlParameters: - project_id: - name: project_id - description: 'The ID of the project.' - required: true - example: 1 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - server_id: - name: server_id - description: 'The ID of the server.' - required: true - example: 32 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - site_id: - name: site_id - description: 'The ID of the site.' - required: true - example: 17 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - cleanUrlParameters: - project_id: 1 - server_id: 32 - site_id: 17 - queryParameters: [] - cleanQueryParameters: [] - bodyParameters: - env: - name: env - description: 'Content of the .env file' - required: true - example: consequatur - type: string - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - cleanBodyParameters: - env: consequatur - fileParameters: [] - responses: - - - status: 200 - content: null - headers: [] - description: '' - custom: [] - responseFields: [] - auth: [] - controller: null - method: null - route: null - custom: [] diff --git a/.scribe/endpoints/12.yaml b/.scribe/endpoints/12.yaml index 536ffcba..b7290831 100644 --- a/.scribe/endpoints/12.yaml +++ b/.scribe/endpoints/12.yaml @@ -1,17 +1,17 @@ -name: source-controls +name: sites description: '' endpoints: - httpMethods: - GET - uri: 'api/projects/{project_id}/source-controls' + uri: 'api/projects/{project_id}/servers/{server_id}/sites' metadata: - groupName: source-controls + groupName: sites groupDescription: '' subgroup: '' subgroupDescription: '' title: list - description: '' + description: 'Get all sites.' authenticated: false custom: [] headers: @@ -28,8 +28,19 @@ endpoints: exampleWasSpecified: false nullable: false custom: [] + server_id: + name: server_id + description: 'The ID of the server.' + required: true + example: 6 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] cleanUrlParameters: project_id: 1 + server_id: 6 queryParameters: [] cleanQueryParameters: [] bodyParameters: [] @@ -38,7 +49,7 @@ endpoints: responses: - status: 200 - content: '{"data":[{"id":5,"project_id":null,"global":true,"name":"Dr. Cornelius Luettgen V","provider":"github","created_at":"2025-04-21T18:40:20.000000Z","updated_at":"2025-04-21T18:40:20.000000Z"},{"id":6,"project_id":null,"global":true,"name":"Orville Satterfield","provider":"github","created_at":"2025-04-21T18:40:20.000000Z","updated_at":"2025-04-21T18:40:20.000000Z"}],"links":{"first":"\/?page=1","last":"\/?page=1","prev":null,"next":null},"meta":{"current_page":1,"from":1,"last_page":1,"links":[{"url":null,"label":"« Previous","active":false},{"url":"\/?page=1","label":"1","active":true},{"url":null,"label":"Next »","active":false}],"path":"\/","per_page":25,"to":2,"total":2}}' + content: '{"data":[{"id":15,"server_id":1,"source_control_id":null,"type":"laravel","type_data":null,"features":["deployment","commands","env","ssl","workers"],"domain":"test.com","aliases":null,"web_directory":"\/","path":"\/home","php_version":"8.2","repository":null,"branch":"main","status":"ready","status_color":"success","auto_deploy":false,"port":null,"user":"vito","url":"http:\/\/test.com","force_ssl":false,"progress":100,"created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"},{"id":16,"server_id":1,"source_control_id":null,"type":"laravel","type_data":null,"features":["deployment","commands","env","ssl","workers"],"domain":"test.com","aliases":null,"web_directory":"\/","path":"\/home","php_version":"8.2","repository":null,"branch":"main","status":"ready","status_color":"success","auto_deploy":false,"port":null,"user":"vito","url":"http:\/\/test.com","force_ssl":false,"progress":100,"created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"}],"links":{"first":"\/?page=1","last":"\/?page=1","prev":null,"next":null},"meta":{"current_page":1,"from":1,"last_page":1,"links":[{"url":null,"label":"« Previous","active":false},{"url":"\/?page=1","label":"1","active":true},{"url":null,"label":"Next »","active":false}],"path":"\/","per_page":25,"to":2,"total":2}}' headers: [] description: '' custom: [] @@ -51,14 +62,14 @@ endpoints: - httpMethods: - POST - uri: 'api/projects/{project_id}/source-controls' + uri: 'api/projects/{project_id}/servers/{server_id}/sites' metadata: - groupName: source-controls + groupName: sites groupDescription: '' subgroup: '' subgroupDescription: '' title: create - description: '' + description: 'Create a new site.' authenticated: false custom: [] headers: @@ -75,86 +86,171 @@ endpoints: exampleWasSpecified: false nullable: false custom: [] + server_id: + name: server_id + description: 'The ID of the server.' + required: true + example: 6 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] cleanUrlParameters: project_id: 1 + server_id: 6 queryParameters: [] cleanQueryParameters: [] bodyParameters: - provider: - name: provider - description: 'The provider' + type: + name: type + description: '' required: true - example: gitlab + example: php-blank type: string enumValues: - - gitlab - - github - - bitbucket + - php + - php-blank + - phpmyadmin + - laravel + - wordpress + - load-balancer exampleWasSpecified: false nullable: false custom: [] - name: - name: name - description: 'The name of the storage provider.' + domain: + name: domain + description: '' required: true - example: consequatur + example: architecto type: string enumValues: [] exampleWasSpecified: false nullable: false custom: [] - token: - name: token - description: 'The token if provider requires api token' + aliases: + name: aliases + description: '' required: true - example: consequatur + example: + - architecto + type: 'string[]' + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + php_version: + name: php_version + description: 'One of the installed PHP Versions' + required: true + example: '7.4' type: string enumValues: [] exampleWasSpecified: false nullable: false custom: [] - url: - name: url - description: 'The URL if the provider is Gitlab and it is self-hosted' + web_directory: + name: web_directory + description: 'Required for PHP and Laravel sites' required: true - example: 'http://kunze.biz/iste-laborum-eius-est-dolor.html' + example: public type: string enumValues: [] exampleWasSpecified: false nullable: false custom: [] - username: - name: username - description: 'The username if the provider is Bitbucket' + source_control: + name: source_control + description: 'Source control ID, Required for Sites which support source control' required: true - example: consequatur + example: architecto type: string enumValues: [] exampleWasSpecified: false nullable: false custom: [] - password: - name: password - description: 'The password if the provider is Bitbucket' + repository: + name: repository + description: 'Repository, Required for Sites which support source control' required: true - example: 'O[2UZ5ij-e/dl4m{o,' + example: organization/repository type: string enumValues: [] exampleWasSpecified: false nullable: false custom: [] + branch: + name: branch + description: 'Branch, Required for Sites which support source control' + required: true + example: main + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + composer: + name: composer + description: 'Run composer if site supports composer' + required: true + example: true + type: boolean + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + version: + name: version + description: 'Version, if the site type requires a version like PHPMyAdmin' + required: true + example: 5.2.1 + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + user: + name: user + description: 'user, to isolate the website under a new user' + required: true + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + method: + name: method + description: 'Load balancer method, Required if the site type is Load balancer' + required: true + example: round-robin + type: string + enumValues: + - round-robin + - least-connections + - ip-hash + exampleWasSpecified: false + nullable: false + custom: [] cleanBodyParameters: - provider: gitlab - name: consequatur - token: consequatur - url: 'http://kunze.biz/iste-laborum-eius-est-dolor.html' - username: consequatur - password: 'O[2UZ5ij-e/dl4m{o,' + type: php-blank + domain: architecto + aliases: + - architecto + php_version: '7.4' + web_directory: public + source_control: architecto + repository: organization/repository + branch: main + composer: true + version: 5.2.1 + user: architecto + method: round-robin fileParameters: [] responses: - status: 200 - content: '{"id":5,"project_id":null,"global":true,"name":"Lonny Ankunding","provider":"github","created_at":"2025-04-21T18:40:20.000000Z","updated_at":"2025-04-21T18:40:20.000000Z"}' + content: '{"id":15,"server_id":1,"source_control_id":null,"type":"laravel","type_data":null,"features":["deployment","commands","env","ssl","workers"],"domain":"test.com","aliases":null,"web_directory":"\/","path":"\/home","php_version":"8.2","repository":null,"branch":"main","status":"ready","status_color":"success","auto_deploy":false,"port":null,"user":"vito","url":"http:\/\/test.com","force_ssl":false,"progress":100,"created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"}' headers: [] description: '' custom: [] @@ -167,14 +263,14 @@ endpoints: - httpMethods: - GET - uri: 'api/projects/{project_id}/source-controls/{sourceControl_id}' + uri: 'api/projects/{project_id}/servers/{server_id}/sites/{id}' metadata: - groupName: source-controls + groupName: sites groupDescription: '' subgroup: '' subgroupDescription: '' title: show - description: '' + description: 'Get a site by ID.' authenticated: false custom: [] headers: @@ -191,11 +287,21 @@ endpoints: exampleWasSpecified: false nullable: false custom: [] - sourceControl_id: - name: sourceControl_id - description: 'The ID of the sourceControl.' + server_id: + name: server_id + description: 'The ID of the server.' required: true - example: 1 + example: 6 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + id: + name: id + description: 'The ID of the site.' + required: true + example: 14 type: integer enumValues: [] exampleWasSpecified: false @@ -203,7 +309,8 @@ endpoints: custom: [] cleanUrlParameters: project_id: 1 - sourceControl_id: 1 + server_id: 6 + id: 14 queryParameters: [] cleanQueryParameters: [] bodyParameters: [] @@ -212,133 +319,7 @@ endpoints: responses: - status: 200 - content: '{"id":5,"project_id":null,"global":true,"name":"Dr. Enoch Harber II","provider":"github","created_at":"2025-04-21T18:40:20.000000Z","updated_at":"2025-04-21T18:40:20.000000Z"}' - headers: [] - description: '' - custom: [] - responseFields: [] - auth: [] - controller: null - method: null - route: null - custom: [] - - - httpMethods: - - PUT - uri: 'api/projects/{project_id}/source-controls/{sourceControl_id}' - metadata: - groupName: source-controls - groupDescription: '' - subgroup: '' - subgroupDescription: '' - title: update - description: '' - authenticated: false - custom: [] - headers: - Content-Type: application/json - Accept: application/json - urlParameters: - project_id: - name: project_id - description: 'The ID of the project.' - required: true - example: 1 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - sourceControl_id: - name: sourceControl_id - description: 'The ID of the sourceControl.' - required: true - example: 1 - type: integer - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - cleanUrlParameters: - project_id: 1 - sourceControl_id: 1 - queryParameters: [] - cleanQueryParameters: [] - bodyParameters: - name: - name: name - description: 'The name of the storage provider.' - required: true - example: consequatur - type: string - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - token: - name: token - description: 'The token if provider requires api token' - required: true - example: consequatur - type: string - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - url: - name: url - description: 'The URL if the provider is Gitlab and it is self-hosted' - required: true - example: 'http://kunze.biz/iste-laborum-eius-est-dolor.html' - type: string - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - username: - name: username - description: 'The username if the provider is Bitbucket' - required: true - example: consequatur - type: string - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - password: - name: password - description: 'The password if the provider is Bitbucket' - required: true - example: 'O[2UZ5ij-e/dl4m{o,' - type: string - enumValues: [] - exampleWasSpecified: false - nullable: false - custom: [] - global: - name: global - description: 'Accessible in all projects' - required: true - example: false - type: string - enumValues: - - true - - false - exampleWasSpecified: false - nullable: false - custom: [] - cleanBodyParameters: - name: consequatur - token: consequatur - url: 'http://kunze.biz/iste-laborum-eius-est-dolor.html' - username: consequatur - password: 'O[2UZ5ij-e/dl4m{o,' - global: false - fileParameters: [] - responses: - - - status: 200 - content: '{"id":5,"project_id":null,"global":true,"name":"Lonny Ankunding","provider":"github","created_at":"2025-04-21T18:40:20.000000Z","updated_at":"2025-04-21T18:40:20.000000Z"}' + content: '{"id":15,"server_id":1,"source_control_id":null,"type":"laravel","type_data":null,"features":["deployment","commands","env","ssl","workers"],"domain":"test.com","aliases":null,"web_directory":"\/","path":"\/home","php_version":"8.2","repository":null,"branch":"main","status":"ready","status_color":"success","auto_deploy":false,"port":null,"user":"vito","url":"http:\/\/test.com","force_ssl":false,"progress":100,"created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"}' headers: [] description: '' custom: [] @@ -351,14 +332,14 @@ endpoints: - httpMethods: - DELETE - uri: 'api/projects/{project_id}/source-controls/{sourceControl_id}' + uri: 'api/projects/{project_id}/servers/{server_id}/sites/{site_id}' metadata: - groupName: source-controls + groupName: sites groupDescription: '' subgroup: '' subgroupDescription: '' title: delete - description: '' + description: 'Delete site.' authenticated: false custom: [] headers: @@ -375,11 +356,21 @@ endpoints: exampleWasSpecified: false nullable: false custom: [] - sourceControl_id: - name: sourceControl_id - description: 'The ID of the sourceControl.' + server_id: + name: server_id + description: 'The ID of the server.' required: true - example: 1 + example: 6 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + site_id: + name: site_id + description: 'The ID of the site.' + required: true + example: 14 type: integer enumValues: [] exampleWasSpecified: false @@ -387,7 +378,8 @@ endpoints: custom: [] cleanUrlParameters: project_id: 1 - sourceControl_id: 1 + server_id: 6 + site_id: 14 queryParameters: [] cleanQueryParameters: [] bodyParameters: [] @@ -406,3 +398,548 @@ endpoints: method: null route: null custom: [] + - + httpMethods: + - POST + uri: 'api/projects/{project_id}/servers/{server_id}/sites/{site_id}/load-balancer' + metadata: + groupName: sites + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: load-balancer + description: 'Update load balancer.' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: + project_id: + name: project_id + description: 'The ID of the project.' + required: true + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + server_id: + name: server_id + description: 'The ID of the server.' + required: true + example: 6 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + site_id: + name: site_id + description: 'The ID of the site.' + required: true + example: 14 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + project_id: 1 + server_id: 6 + site_id: 14 + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: + method: + name: method + description: 'Load balancer method, Required if the site type is Load balancer' + required: true + example: round-robin + type: string + enumValues: + - round-robin + - least-connections + - ip-hash + exampleWasSpecified: false + nullable: false + custom: [] + servers: + name: servers + description: 'Array of servers including server, port, weight, backup. (server is the local IP of the server)' + required: true + example: + - architecto + type: 'string[]' + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanBodyParameters: + method: round-robin + servers: + - architecto + fileParameters: [] + responses: + - + status: 200 + content: null + headers: [] + description: '' + custom: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - PUT + uri: 'api/projects/{project_id}/servers/{server_id}/sites/{site_id}/aliases' + metadata: + groupName: sites + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: aliases + description: 'Update aliases.' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: + project_id: + name: project_id + description: 'The ID of the project.' + required: true + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + server_id: + name: server_id + description: 'The ID of the server.' + required: true + example: 6 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + site_id: + name: site_id + description: 'The ID of the site.' + required: true + example: 14 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + project_id: 1 + server_id: 6 + site_id: 14 + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: + aliases: + name: aliases + description: 'Array of aliases' + required: true + example: + - architecto + type: 'string[]' + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanBodyParameters: + aliases: + - architecto + fileParameters: [] + responses: + - + status: 200 + content: null + headers: [] + description: '' + custom: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - POST + uri: 'api/projects/{project_id}/servers/{server_id}/sites/{site_id}/deploy' + metadata: + groupName: sites + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: deploy + description: 'Run site deployment script' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: + project_id: + name: project_id + description: 'The ID of the project.' + required: true + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + server_id: + name: server_id + description: 'The ID of the server.' + required: true + example: 6 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + site_id: + name: site_id + description: 'The ID of the site.' + required: true + example: 14 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + project_id: 1 + server_id: 6 + site_id: 14 + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 200 + content: null + headers: [] + description: '' + custom: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - PUT + uri: 'api/projects/{project_id}/servers/{server_id}/sites/{site_id}/deployment-script' + metadata: + groupName: sites + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: deployment-script + description: 'Update site deployment script' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: + project_id: + name: project_id + description: 'The ID of the project.' + required: true + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + server_id: + name: server_id + description: 'The ID of the server.' + required: true + example: 6 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + site_id: + name: site_id + description: 'The ID of the site.' + required: true + example: 14 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + project_id: 1 + server_id: 6 + site_id: 14 + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: + script: + name: script + description: 'Content of the deployment script' + required: true + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanBodyParameters: + script: architecto + fileParameters: [] + responses: + - + status: 204 + content: null + headers: [] + description: '' + custom: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - GET + uri: 'api/projects/{project_id}/servers/{server_id}/sites/{site_id}/deployment-script' + metadata: + groupName: sites + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: deployment-script + description: 'Get site deployment script content' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: + project_id: + name: project_id + description: 'The ID of the project.' + required: true + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + server_id: + name: server_id + description: 'The ID of the server.' + required: true + example: 6 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + site_id: + name: site_id + description: 'The ID of the site.' + required: true + example: 14 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + project_id: 1 + server_id: 6 + site_id: 14 + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 200 + content: null + headers: [] + description: '' + custom: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - GET + uri: 'api/projects/{project_id}/servers/{server_id}/sites/{site_id}/env' + metadata: + groupName: sites + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: env + description: 'Get site .env file content' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: + project_id: + name: project_id + description: 'The ID of the project.' + required: true + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + server_id: + name: server_id + description: 'The ID of the server.' + required: true + example: 6 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + site_id: + name: site_id + description: 'The ID of the site.' + required: true + example: 14 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + project_id: 1 + server_id: 6 + site_id: 14 + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 200 + content: '{"data":{"env":"APP_NAME=Laravel\\nAPP_ENV=production"}}' + headers: [] + description: '' + custom: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - PUT + uri: 'api/projects/{project_id}/servers/{server_id}/sites/{site_id}/env' + metadata: + groupName: sites + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: env + description: 'Update site .env file' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: + project_id: + name: project_id + description: 'The ID of the project.' + required: true + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + server_id: + name: server_id + description: 'The ID of the server.' + required: true + example: 6 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + site_id: + name: site_id + description: 'The ID of the site.' + required: true + example: 14 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + project_id: 1 + server_id: 6 + site_id: 14 + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: + env: + name: env + description: 'Content of the .env file' + required: true + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanBodyParameters: + env: architecto + fileParameters: [] + responses: + - + status: 200 + content: null + headers: [] + description: '' + custom: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] diff --git a/.scribe/endpoints/13.yaml b/.scribe/endpoints/13.yaml index 9856b91f..6988fc14 100644 --- a/.scribe/endpoints/13.yaml +++ b/.scribe/endpoints/13.yaml @@ -1,12 +1,12 @@ -name: storage-providers +name: source-controls description: '' endpoints: - httpMethods: - GET - uri: 'api/projects/{project_id}/storage-providers' + uri: 'api/projects/{project_id}/source-controls' metadata: - groupName: storage-providers + groupName: source-controls groupDescription: '' subgroup: '' subgroupDescription: '' @@ -38,7 +38,7 @@ endpoints: responses: - status: 200 - content: '{"data":[{"id":5,"project_id":null,"global":true,"name":"dolores","provider":"local","created_at":"2025-04-21T18:40:20.000000Z","updated_at":"2025-04-21T18:40:20.000000Z"},{"id":6,"project_id":null,"global":true,"name":"dignissimos","provider":"dropbox","created_at":"2025-04-21T18:40:20.000000Z","updated_at":"2025-04-21T18:40:20.000000Z"}],"links":{"first":"\/?page=1","last":"\/?page=1","prev":null,"next":null},"meta":{"current_page":1,"from":1,"last_page":1,"links":[{"url":null,"label":"« Previous","active":false},{"url":"\/?page=1","label":"1","active":true},{"url":null,"label":"Next »","active":false}],"path":"\/","per_page":25,"to":2,"total":2}}' + content: '{"data":[{"id":2,"project_id":null,"global":true,"name":"Ms. Elisabeth Okuneva","provider":"github","created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"},{"id":3,"project_id":null,"global":true,"name":"Aleen O''Kon","provider":"github","created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"}],"links":{"first":"\/?page=1","last":"\/?page=1","prev":null,"next":null},"meta":{"current_page":1,"from":1,"last_page":1,"links":[{"url":null,"label":"« Previous","active":false},{"url":"\/?page=1","label":"1","active":true},{"url":null,"label":"Next »","active":false}],"path":"\/","per_page":25,"to":2,"total":2}}' headers: [] description: '' custom: [] @@ -51,9 +51,9 @@ endpoints: - httpMethods: - POST - uri: 'api/projects/{project_id}/storage-providers' + uri: 'api/projects/{project_id}/source-controls' metadata: - groupName: storage-providers + groupName: source-controls groupDescription: '' subgroup: '' subgroupDescription: '' @@ -82,11 +82,14 @@ endpoints: bodyParameters: provider: name: provider - description: 'The provider (aws, linode, hetzner, digitalocean, vultr, ...)' + description: 'The provider' required: true - example: consequatur + example: gitlab type: string - enumValues: [] + enumValues: + - gitlab + - github + - bitbucket exampleWasSpecified: false nullable: false custom: [] @@ -94,7 +97,7 @@ endpoints: name: name description: 'The name of the storage provider.' required: true - example: consequatur + example: architecto type: string enumValues: [] exampleWasSpecified: false @@ -104,43 +107,54 @@ endpoints: name: token description: 'The token if provider requires api token' required: true - example: consequatur + example: architecto type: string enumValues: [] exampleWasSpecified: false nullable: false custom: [] - key: - name: key - description: 'The key if provider requires key' + url: + name: url + description: 'The URL if the provider is Gitlab and it is self-hosted' required: true - example: consequatur + example: 'http://www.bailey.biz/quos-velit-et-fugiat-sunt-nihil-accusantium-harum.html' type: string enumValues: [] exampleWasSpecified: false nullable: false custom: [] - secret: - name: secret - description: 'The secret if provider requires key' + username: + name: username + description: 'The username if the provider is Bitbucket' required: true - example: consequatur + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + password: + name: password + description: 'The password if the provider is Bitbucket' + required: true + example: '|]|{+-' type: string enumValues: [] exampleWasSpecified: false nullable: false custom: [] cleanBodyParameters: - provider: consequatur - name: consequatur - token: consequatur - key: consequatur - secret: consequatur + provider: gitlab + name: architecto + token: architecto + url: 'http://www.bailey.biz/quos-velit-et-fugiat-sunt-nihil-accusantium-harum.html' + username: architecto + password: '|]|{+-' fileParameters: [] responses: - status: 200 - content: '{"id":5,"project_id":null,"global":true,"name":"dolores","provider":"local","created_at":"2025-04-21T18:40:20.000000Z","updated_at":"2025-04-21T18:40:20.000000Z"}' + content: '{"id":2,"project_id":null,"global":true,"name":"Mrs. Justina Gaylord","provider":"github","created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"}' headers: [] description: '' custom: [] @@ -153,9 +167,9 @@ endpoints: - httpMethods: - GET - uri: 'api/projects/{project_id}/storage-providers/{storageProvider_id}' + uri: 'api/projects/{project_id}/source-controls/{sourceControl_id}' metadata: - groupName: storage-providers + groupName: source-controls groupDescription: '' subgroup: '' subgroupDescription: '' @@ -177,11 +191,11 @@ endpoints: exampleWasSpecified: false nullable: false custom: [] - storageProvider_id: - name: storageProvider_id - description: 'The ID of the storageProvider.' + sourceControl_id: + name: sourceControl_id + description: 'The ID of the sourceControl.' required: true - example: 3 + example: 1 type: integer enumValues: [] exampleWasSpecified: false @@ -189,7 +203,7 @@ endpoints: custom: [] cleanUrlParameters: project_id: 1 - storageProvider_id: 3 + sourceControl_id: 1 queryParameters: [] cleanQueryParameters: [] bodyParameters: [] @@ -198,7 +212,7 @@ endpoints: responses: - status: 200 - content: '{"id":5,"project_id":null,"global":true,"name":"facilis","provider":"dropbox","created_at":"2025-04-21T18:40:20.000000Z","updated_at":"2025-04-21T18:40:20.000000Z"}' + content: '{"id":2,"project_id":null,"global":true,"name":"Misael Runte","provider":"github","created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"}' headers: [] description: '' custom: [] @@ -211,9 +225,9 @@ endpoints: - httpMethods: - PUT - uri: 'api/projects/{project_id}/storage-providers/{storageProvider_id}' + uri: 'api/projects/{project_id}/source-controls/{sourceControl_id}' metadata: - groupName: storage-providers + groupName: source-controls groupDescription: '' subgroup: '' subgroupDescription: '' @@ -235,11 +249,11 @@ endpoints: exampleWasSpecified: false nullable: false custom: [] - storageProvider_id: - name: storageProvider_id - description: 'The ID of the storageProvider.' + sourceControl_id: + name: sourceControl_id + description: 'The ID of the sourceControl.' required: true - example: 3 + example: 1 type: integer enumValues: [] exampleWasSpecified: false @@ -247,7 +261,7 @@ endpoints: custom: [] cleanUrlParameters: project_id: 1 - storageProvider_id: 3 + sourceControl_id: 1 queryParameters: [] cleanQueryParameters: [] bodyParameters: @@ -255,7 +269,47 @@ endpoints: name: name description: 'The name of the storage provider.' required: true - example: consequatur + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + token: + name: token + description: 'The token if provider requires api token' + required: true + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + url: + name: url + description: 'The URL if the provider is Gitlab and it is self-hosted' + required: true + example: 'http://www.bailey.biz/quos-velit-et-fugiat-sunt-nihil-accusantium-harum.html' + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + username: + name: username + description: 'The username if the provider is Bitbucket' + required: true + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + password: + name: password + description: 'The password if the provider is Bitbucket' + required: true + example: '|]|{+-' type: string enumValues: [] exampleWasSpecified: false @@ -265,7 +319,7 @@ endpoints: name: global description: 'Accessible in all projects' required: true - example: true + example: false type: string enumValues: - true @@ -274,13 +328,17 @@ endpoints: nullable: false custom: [] cleanBodyParameters: - name: consequatur - global: true + name: architecto + token: architecto + url: 'http://www.bailey.biz/quos-velit-et-fugiat-sunt-nihil-accusantium-harum.html' + username: architecto + password: '|]|{+-' + global: false fileParameters: [] responses: - status: 200 - content: '{"id":5,"project_id":null,"global":true,"name":"dolores","provider":"local","created_at":"2025-04-21T18:40:20.000000Z","updated_at":"2025-04-21T18:40:20.000000Z"}' + content: '{"id":2,"project_id":null,"global":true,"name":"Mrs. Justina Gaylord","provider":"github","created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"}' headers: [] description: '' custom: [] @@ -293,9 +351,9 @@ endpoints: - httpMethods: - DELETE - uri: 'api/projects/{project_id}/storage-providers/{storageProvider_id}' + uri: 'api/projects/{project_id}/source-controls/{sourceControl_id}' metadata: - groupName: storage-providers + groupName: source-controls groupDescription: '' subgroup: '' subgroupDescription: '' @@ -317,11 +375,11 @@ endpoints: exampleWasSpecified: false nullable: false custom: [] - storageProvider_id: - name: storageProvider_id - description: 'The ID of the storageProvider.' + sourceControl_id: + name: sourceControl_id + description: 'The ID of the sourceControl.' required: true - example: 3 + example: 1 type: integer enumValues: [] exampleWasSpecified: false @@ -329,7 +387,7 @@ endpoints: custom: [] cleanUrlParameters: project_id: 1 - storageProvider_id: 3 + sourceControl_id: 1 queryParameters: [] cleanQueryParameters: [] bodyParameters: [] diff --git a/.scribe/endpoints/14.yaml b/.scribe/endpoints/14.yaml new file mode 100644 index 00000000..5f874df4 --- /dev/null +++ b/.scribe/endpoints/14.yaml @@ -0,0 +1,350 @@ +name: storage-providers +description: '' +endpoints: + - + httpMethods: + - GET + uri: 'api/projects/{project_id}/storage-providers' + metadata: + groupName: storage-providers + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: list + description: '' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: + project_id: + name: project_id + description: 'The ID of the project.' + required: true + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + project_id: 1 + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 200 + content: '{"data":[{"id":4,"project_id":null,"global":true,"name":"harum","provider":"local","created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"},{"id":5,"project_id":null,"global":true,"name":"commodi","provider":"local","created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"}],"links":{"first":"\/?page=1","last":"\/?page=1","prev":null,"next":null},"meta":{"current_page":1,"from":1,"last_page":1,"links":[{"url":null,"label":"« Previous","active":false},{"url":"\/?page=1","label":"1","active":true},{"url":null,"label":"Next »","active":false}],"path":"\/","per_page":25,"to":2,"total":2}}' + headers: [] + description: '' + custom: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - POST + uri: 'api/projects/{project_id}/storage-providers' + metadata: + groupName: storage-providers + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: create + description: '' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: + project_id: + name: project_id + description: 'The ID of the project.' + required: true + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + project_id: 1 + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: + provider: + name: provider + description: 'The provider (aws, linode, hetzner, digitalocean, vultr, ...)' + required: true + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + name: + name: name + description: 'The name of the storage provider.' + required: true + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + token: + name: token + description: 'The token if provider requires api token' + required: true + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + key: + name: key + description: 'The key if provider requires key' + required: true + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + secret: + name: secret + description: 'The secret if provider requires key' + required: true + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanBodyParameters: + provider: architecto + name: architecto + token: architecto + key: architecto + secret: architecto + fileParameters: [] + responses: + - + status: 200 + content: '{"id":4,"project_id":null,"global":true,"name":"eius","provider":"local","created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"}' + headers: [] + description: '' + custom: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - GET + uri: 'api/projects/{project_id}/storage-providers/{storageProvider_id}' + metadata: + groupName: storage-providers + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: show + description: '' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: + project_id: + name: project_id + description: 'The ID of the project.' + required: true + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + storageProvider_id: + name: storageProvider_id + description: 'The ID of the storageProvider.' + required: true + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + project_id: 1 + storageProvider_id: 1 + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 200 + content: '{"id":4,"project_id":null,"global":true,"name":"et","provider":"dropbox","created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"}' + headers: [] + description: '' + custom: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - PUT + uri: 'api/projects/{project_id}/storage-providers/{storageProvider_id}' + metadata: + groupName: storage-providers + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: update + description: '' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: + project_id: + name: project_id + description: 'The ID of the project.' + required: true + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + storageProvider_id: + name: storageProvider_id + description: 'The ID of the storageProvider.' + required: true + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + project_id: 1 + storageProvider_id: 1 + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: + name: + name: name + description: 'The name of the storage provider.' + required: true + example: architecto + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + global: + name: global + description: 'Accessible in all projects' + required: true + example: true + type: string + enumValues: + - true + - false + exampleWasSpecified: false + nullable: false + custom: [] + cleanBodyParameters: + name: architecto + global: true + fileParameters: [] + responses: + - + status: 200 + content: '{"id":4,"project_id":null,"global":true,"name":"eius","provider":"local","created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"}' + headers: [] + description: '' + custom: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - DELETE + uri: 'api/projects/{project_id}/storage-providers/{storageProvider_id}' + metadata: + groupName: storage-providers + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: delete + description: '' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: + project_id: + name: project_id + description: 'The ID of the project.' + required: true + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + storageProvider_id: + name: storageProvider_id + description: 'The ID of the storageProvider.' + required: true + example: 1 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + project_id: 1 + storageProvider_id: 1 + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 204 + content: null + headers: [] + description: '' + custom: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] diff --git a/README.md b/README.md index 1321ec26..c35e453f 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,7 @@ ## About Vito ## Quick Start ```sh -bash <(curl -Ls https://raw.githubusercontent.com/vitodeploy/vito/2.x/scripts/install.sh) +bash <(curl -Ls https://raw.githubusercontent.com/vitodeploy/vito/3.x/scripts/install.sh) ``` ## Features @@ -45,6 +45,8 @@ ## Useful Links ## Credits - Laravel +- InertiaJS +- Shadcn UI - PHPSecLib - PHPUnit - Tailwindcss diff --git a/config/scribe.php b/config/scribe.php index e2c3df70..4d0d13e7 100644 --- a/config/scribe.php +++ b/config/scribe.php @@ -1,12 +1,5 @@ config('app.url'), - // Routes to include in the docs - 'routes' => [ - [ - 'match' => [ - // Match only routes whose paths match this pattern (use * as a wildcard to match any characters). Example: 'users/*'. - 'prefixes' => ['api/*'], - - // Match only routes whose domains match this pattern (use * as a wildcard to match any characters). Example: 'api.*'. - 'domains' => ['*'], - ], - - // Include these routes even if they did not match the rules above. - 'include' => [ - // 'users.index', 'POST /new', '/auth/*' - ], - - // Exclude these routes even if they matched the rules above. - 'exclude' => [ - 'api.git-hooks', - 'api.servers.agent', - ], - ], - ], - // The type of documentation output to generate. // - "static" will generate a static HTMl page in the /public/docs folder, // - "laravel" will generate the documentation as a Blade view, so you can add routing and authentication. // - "external_static" and "external_laravel" do the same as above, but pass the OpenAPI spec as a URL to an external UI template - 'type' => 'laravel', + 'type' => 'static', // See https://scribe.knuckles.wtf/laravel/reference/config#theme for supported options 'theme' => 'default', @@ -59,198 +28,4 @@ 'output_path' => 'public/api-docs', 'url' => '/api-docs/index.html', ], - - 'laravel' => [ - // Whether to automatically create a docs route for you to view your generated docs. You can still set up routing manually. - 'add_routes' => true, - - // URL path to use for the docs endpoint (if `add_routes` is true). - // By default, `/docs` opens the HTML page, `/docs.postman` opens the Postman collection, and `/docs.openapi` the OpenAPI spec. - 'docs_url' => '/api-docs', - - // Directory within `public` in which to store CSS and JS assets. - // By default, assets are stored in `public/vendor/scribe`. - // If set, assets will be stored in `public/{{assets_directory}}` - 'assets_directory' => null, - - // Middleware to attach to the docs endpoint (if `add_routes` is true). - 'middleware' => [], - ], - - 'external' => [ - 'html_attributes' => [], - ], - - 'try_it_out' => [ - // Add a Try It Out button to your endpoints so consumers can test endpoints right from their browser. - // Don't forget to enable CORS headers for your endpoints. - 'enabled' => true, - - // The base URL to use in the API tester. Leave as null to be the same as the displayed URL (`scribe.base_url`). - 'base_url' => null, - - // [Laravel Sanctum] Fetch a CSRF token before each request, and add it as an X-XSRF-TOKEN header. - 'use_csrf' => false, - - // The URL to fetch the CSRF token from (if `use_csrf` is true). - 'csrf_url' => '/sanctum/csrf-cookie', - ], - - // How is your API authenticated? This information will be used in the displayed docs, generated examples and response calls. - 'auth' => [ - // Set this to true if ANY endpoints in your API use authentication. - 'enabled' => false, - - // Set this to true if your API should be authenticated by default. If so, you must also set `enabled` (above) to true. - // You can then use @unauthenticated or @authenticated on individual endpoints to change their status from the default. - 'default' => false, - - // Where is the auth value meant to be sent in a request? - 'in' => AuthIn::BEARER->value, - - // The name of the auth parameter (e.g. token, key, apiKey) or header (e.g. Authorization, Api-Key). - 'name' => 'key', - - // The value of the parameter to be used by Scribe to authenticate response calls. - // This will NOT be included in the generated documentation. If empty, Scribe will use a random value. - 'use_value' => env('SCRIBE_AUTH_KEY'), - - // Placeholder your users will see for the auth parameter in the example requests. - // Set this to null if you want Scribe to use a random value as placeholder instead. - 'placeholder' => '{YOUR_AUTH_KEY}', - - // Any extra authentication-related info for your users. Markdown and HTML are supported. - 'extra_info' => 'You can retrieve your token by visiting your dashboard and clicking Generate API token.', - ], - - // Text to place in the "Introduction" section, right after the `description`. Markdown and HTML are supported. - 'intro_text' => <<<'INTRO' - This documentation aims to provide all the information you need to work with our API. - - - INTRO, - - // Example requests for each endpoint will be shown in each of these languages. - // Supported options are: bash, javascript, php, python - // To add a language of your own, see https://scribe.knuckles.wtf/laravel/advanced/example-requests - // Note: does not work for `external` docs types - 'example_languages' => [ - 'bash', - 'javascript', - ], - - // Generate a Postman collection (v2.1.0) in addition to HTML docs. - // For 'static' docs, the collection will be generated to public/docs/collection.json. - // For 'laravel' docs, it will be generated to storage/app/scribe/collection.json. - // Setting `laravel.add_routes` to true (above) will also add a route for the collection. - 'postman' => [ - 'enabled' => true, - - 'overrides' => [ - // 'info.version' => '2.0.0', - ], - ], - - // Generate an OpenAPI spec (v3.0.1) in addition to docs webpage. - // For 'static' docs, the collection will be generated to public/docs/openapi.yaml. - // For 'laravel' docs, it will be generated to storage/app/scribe/openapi.yaml. - // Setting `laravel.add_routes` to true (above) will also add a route for the spec. - 'openapi' => [ - 'enabled' => true, - - 'overrides' => [ - // 'info.version' => '2.0.0', - ], - - // Additional generators to use when generating the OpenAPI spec. - // Should extend `Knuckles\Scribe\Writing\OpenApiSpecGenerators\OpenApiGenerator`. - 'generators' => [], - ], - - 'groups' => [ - // Endpoints which don't have a @group will be placed in this default group. - 'default' => 'Endpoints', - - // By default, Scribe will sort groups alphabetically, and endpoints in the order their routes are defined. - // You can override this by listing the groups, subgroups and endpoints here in the order you want them. - // See https://scribe.knuckles.wtf/blog/laravel-v4#easier-sorting and https://scribe.knuckles.wtf/laravel/reference/config#order for details - // Note: does not work for `external` docs types - 'order' => [], - ], - - // Custom logo path. This will be used as the value of the src attribute for the tag, - // so make sure it points to an accessible URL or path. Set to false to not use a logo. - // For example, if your logo is in public/img: - // - 'logo' => '../img/logo.png' // for `static` type (output folder is public/docs) - // - 'logo' => 'img/logo.png' // for `laravel` type - 'logo' => false, - - // Customize the "Last updated" value displayed in the docs by specifying tokens and formats. - // Examples: - // - {date:F j Y} => March 28, 2022 - // - {git:short} => Short hash of the last Git commit - // Available tokens are `{date:}` and `{git:}`. - // The format you pass to `date` will be passed to PHP's `date()` function. - // The format you pass to `git` can be either "short" or "long". - // Note: does not work for `external` docs types - 'last_updated' => 'Last updated: {date:F j, Y}', - - 'examples' => [ - // Set this to any number to generate the same example values for parameters on each run, - 'faker_seed' => 1234, - - // With API resources and transformers, Scribe tries to generate example models to use in your API responses. - // By default, Scribe will try the model's factory, and if that fails, try fetching the first from the database. - // You can reorder or remove strategies here. - 'models_source' => ['factoryCreate', 'factoryMake', 'databaseFirst'], - ], - - // The strategies Scribe will use to extract information about your routes at each stage. - // Use configureStrategy() to specify settings for a strategy in the list. - // Use removeStrategies() to remove an included strategy. - 'strategies' => [ - 'metadata' => [ - ...Defaults::METADATA_STRATEGIES, - ], - 'headers' => [ - ...Defaults::HEADERS_STRATEGIES, - Strategies\StaticData::withSettings(data: [ - 'Content-Type' => 'application/json', - 'Accept' => 'application/json', - ]), - ], - 'urlParameters' => [ - ...Defaults::URL_PARAMETERS_STRATEGIES, - ], - 'queryParameters' => [ - ...Defaults::QUERY_PARAMETERS_STRATEGIES, - ], - 'bodyParameters' => [ - ...Defaults::BODY_PARAMETERS_STRATEGIES, - ], - 'responses' => configureStrategy( - Defaults::RESPONSES_STRATEGIES, - Strategies\Responses\ResponseCalls::withSettings( - only: ['GET *'], - // Recommended: disable debug mode in response calls to avoid error stack traces in responses - config: [ - 'app.debug' => false, - ] - ) - ), - 'responseFields' => [ - ...Defaults::RESPONSE_FIELDS_STRATEGIES, - ], - ], - - // For response calls, API resource responses and transformer responses, - // Scribe will try to start database transactions, so no changes are persisted to your database. - // Tell Scribe which connections should be transacted here. If you only use one db connection, you can leave this as is. - 'database_connections_to_transact' => [config('database.default')], - - 'fractal' => [ - // If you are using a custom serializer with league/fractal, you can specify it here. - 'serializer' => null, - ], ]; diff --git a/docker/Dockerfile b/docker/Dockerfile index 8e5037e8..38395deb 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -16,6 +16,10 @@ RUN apt-get install -y software-properties-common curl zip unzip gcc nginx \ && apt-get install -y php8.4 php8.4-fpm php8.4-mbstring php8.4-mcrypt php8.4-gd php8.4-xml \ php8.4-curl php8.4-gettext php8.4-zip php8.4-bcmath php8.4-soap php8.4-redis php8.4-sqlite3 php8.4-intl +# nodejs +RUN curl -sL https://deb.nodesource.com/setup_20.x | bash - \ + && apt-get install -y nodejs + # php COPY docker/php.ini /etc/php/8.4/cli/conf.d/99-vito.ini @@ -26,7 +30,9 @@ RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local RUN rm -rf /var/www/html COPY . /var/www/html RUN rm -rf /var/www/html/.git /var/www/html/vendor /var/www/html/node_modules -RUN composer install --no-dev --prefer-dist +RUN npm install --force +RUN npm run build +RUN composer install --no-dev RUN chown -R www-data:www-data /var/www/html \ && chmod -R 755 /var/www/html/storage /var/www/html/bootstrap/cache diff --git a/public/api-docs/collection.json b/public/api-docs/collection.json new file mode 100644 index 00000000..b283227b --- /dev/null +++ b/public/api-docs/collection.json @@ -0,0 +1,3753 @@ +{ + "variable": [ + { + "id": "baseUrl", + "key": "baseUrl", + "type": "string", + "name": "string", + "value": "https:\/\/vito.test" + } + ], + "info": { + "name": "API Documentation", + "_postman_id": "9dd8cf1c-f615-4407-91d9-1a341f0e0721", + "description": "VitoDeploy's API documentation.", + "schema": "https:\/\/schema.getpostman.com\/json\/collection\/v2.1.0\/collection.json" + }, + "item": [ + { + "name": "Endpoints", + "description": "", + "item": [ + { + "name": "POST api\/servers\/{server_id}\/agent\/{id}", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/servers\/:server_id\/agent\/:id", + "query": [], + "raw": "{{baseUrl}}\/api\/servers\/:server_id\/agent\/:id", + "variable": [ + { + "id": "server_id", + "key": "server_id", + "value": "6", + "description": "The ID of the server." + }, + { + "id": "id", + "key": "id", + "value": "architecto", + "description": "The ID of the agent." + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\"load\":4326.41688,\"memory_total\":4326.41688,\"memory_used\":4326.41688,\"memory_free\":4326.41688,\"disk_total\":4326.41688,\"disk_used\":4326.41688,\"disk_free\":4326.41688}" + }, + "description": "", + "auth": { + "type": "noauth" + } + }, + "response": [] + }, + { + "name": "GET api\/git-hooks", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/git-hooks", + "query": [], + "raw": "{{baseUrl}}\/api\/git-hooks" + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "", + "auth": { + "type": "noauth" + } + }, + "response": [ + { + "header": [ + { + "key": "cache-control", + "value": "no-cache, private" + }, + { + "key": "content-type", + "value": "application\/json" + }, + { + "key": "x-ratelimit-limit", + "value": "60" + }, + { + "key": "x-ratelimit-remaining", + "value": "57" + }, + { + "key": "access-control-allow-origin", + "value": "*" + } + ], + "code": 404, + "body": "{\n \"message\": \"\"\n}", + "name": "" + } + ] + } + ] + }, + { + "name": "cron-jobs", + "description": "", + "item": [ + { + "name": "list", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/projects\/:project_id\/servers\/:server_id\/cron-jobs", + "query": [], + "raw": "{{baseUrl}}\/api\/projects\/:project_id\/servers\/:server_id\/cron-jobs", + "variable": [ + { + "id": "project_id", + "key": "project_id", + "value": "1", + "description": "The ID of the project." + }, + { + "id": "server_id", + "key": "server_id", + "value": "6", + "description": "The ID of the server." + } + ] + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "Get all cron jobs.", + "auth": { + "type": "noauth" + } + }, + "response": [ + { + "header": [], + "code": 200, + "body": "{\"data\":[{\"id\":3,\"server_id\":1,\"command\":\"ls -la\",\"user\":\"root\",\"frequency\":\"* * * * *\",\"status\":\"ready\",\"status_color\":\"success\",\"created_at\":\"2025-06-10T10:21:56.000000Z\",\"updated_at\":\"2025-06-10T10:21:56.000000Z\"},{\"id\":4,\"server_id\":1,\"command\":\"ls -la\",\"user\":\"root\",\"frequency\":\"* * * * *\",\"status\":\"ready\",\"status_color\":\"success\",\"created_at\":\"2025-06-10T10:21:56.000000Z\",\"updated_at\":\"2025-06-10T10:21:56.000000Z\"}],\"links\":{\"first\":\"\\\/?page=1\",\"last\":\"\\\/?page=1\",\"prev\":null,\"next\":null},\"meta\":{\"current_page\":1,\"from\":1,\"last_page\":1,\"links\":[{\"url\":null,\"label\":\"« Previous\",\"active\":false},{\"url\":\"\\\/?page=1\",\"label\":\"1\",\"active\":true},{\"url\":null,\"label\":\"Next »\",\"active\":false}],\"path\":\"\\\/\",\"per_page\":25,\"to\":2,\"total\":2}}", + "name": "" + } + ] + }, + { + "name": "create", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/projects\/:project_id\/servers\/:server_id\/cron-jobs", + "query": [], + "raw": "{{baseUrl}}\/api\/projects\/:project_id\/servers\/:server_id\/cron-jobs", + "variable": [ + { + "id": "project_id", + "key": "project_id", + "value": "1", + "description": "The ID of the project." + }, + { + "id": "server_id", + "key": "server_id", + "value": "6", + "description": "The ID of the server." + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\"command\":\"architecto\",\"user\":\"vito\",\"frequency\":\"* * * * *\"}" + }, + "description": "Create a new cron job.", + "auth": { + "type": "noauth" + } + }, + "response": [ + { + "header": [], + "code": 200, + "body": "{\"id\":3,\"server_id\":1,\"command\":\"ls -la\",\"user\":\"root\",\"frequency\":\"* * * * *\",\"status\":\"ready\",\"status_color\":\"success\",\"created_at\":\"2025-06-10T10:21:56.000000Z\",\"updated_at\":\"2025-06-10T10:21:56.000000Z\"}", + "name": "" + } + ] + }, + { + "name": "show", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/projects\/:project_id\/servers\/:server_id\/cron-jobs\/:cronJob_id", + "query": [], + "raw": "{{baseUrl}}\/api\/projects\/:project_id\/servers\/:server_id\/cron-jobs\/:cronJob_id", + "variable": [ + { + "id": "project_id", + "key": "project_id", + "value": "1", + "description": "The ID of the project." + }, + { + "id": "server_id", + "key": "server_id", + "value": "6", + "description": "The ID of the server." + }, + { + "id": "cronJob_id", + "key": "cronJob_id", + "value": "1", + "description": "The ID of the cronJob." + } + ] + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "Get a cron job by ID.", + "auth": { + "type": "noauth" + } + }, + "response": [ + { + "header": [], + "code": 200, + "body": "{\"id\":3,\"server_id\":1,\"command\":\"ls -la\",\"user\":\"root\",\"frequency\":\"* * * * *\",\"status\":\"ready\",\"status_color\":\"success\",\"created_at\":\"2025-06-10T10:21:56.000000Z\",\"updated_at\":\"2025-06-10T10:21:56.000000Z\"}", + "name": "" + } + ] + }, + { + "name": "delete", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/projects\/:project_id\/servers\/:server_id\/cron-jobs\/:cronJob_id", + "query": [], + "raw": "{{baseUrl}}\/api\/projects\/:project_id\/servers\/:server_id\/cron-jobs\/:cronJob_id", + "variable": [ + { + "id": "project_id", + "key": "project_id", + "value": "1", + "description": "The ID of the project." + }, + { + "id": "server_id", + "key": "server_id", + "value": "6", + "description": "The ID of the server." + }, + { + "id": "cronJob_id", + "key": "cronJob_id", + "value": "1", + "description": "The ID of the cronJob." + } + ] + }, + "method": "DELETE", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "Delete cron job.", + "auth": { + "type": "noauth" + } + }, + "response": [ + { + "header": [], + "code": 204, + "body": null, + "name": "" + } + ] + } + ] + }, + { + "name": "database-users", + "description": "", + "item": [ + { + "name": "list", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/projects\/:project_id\/servers\/:server_id\/database-users", + "query": [], + "raw": "{{baseUrl}}\/api\/projects\/:project_id\/servers\/:server_id\/database-users", + "variable": [ + { + "id": "project_id", + "key": "project_id", + "value": "1", + "description": "The ID of the project." + }, + { + "id": "server_id", + "key": "server_id", + "value": "6", + "description": "The ID of the server." + } + ] + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "Get all database users.", + "auth": { + "type": "noauth" + } + }, + "response": [ + { + "header": [], + "code": 200, + "body": "{\"data\":[{\"id\":4,\"server_id\":1,\"username\":\"cartwright.maxine\",\"databases\":[],\"host\":\"%\",\"status\":\"creating\",\"status_color\":\"warning\",\"created_at\":\"2025-06-10T10:21:56.000000Z\",\"updated_at\":\"2025-06-10T10:21:56.000000Z\"},{\"id\":5,\"server_id\":1,\"username\":\"gusikowski.eden\",\"databases\":[],\"host\":\"%\",\"status\":\"creating\",\"status_color\":\"warning\",\"created_at\":\"2025-06-10T10:21:56.000000Z\",\"updated_at\":\"2025-06-10T10:21:56.000000Z\"}],\"links\":{\"first\":\"\\\/?page=1\",\"last\":\"\\\/?page=1\",\"prev\":null,\"next\":null},\"meta\":{\"current_page\":1,\"from\":1,\"last_page\":1,\"links\":[{\"url\":null,\"label\":\"« Previous\",\"active\":false},{\"url\":\"\\\/?page=1\",\"label\":\"1\",\"active\":true},{\"url\":null,\"label\":\"Next »\",\"active\":false}],\"path\":\"\\\/\",\"per_page\":25,\"to\":2,\"total\":2}}", + "name": "" + } + ] + }, + { + "name": "create", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/projects\/:project_id\/servers\/:server_id\/database-users", + "query": [], + "raw": "{{baseUrl}}\/api\/projects\/:project_id\/servers\/:server_id\/database-users", + "variable": [ + { + "id": "project_id", + "key": "project_id", + "value": "1", + "description": "The ID of the project." + }, + { + "id": "server_id", + "key": "server_id", + "value": "6", + "description": "The ID of the server." + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\"username\":\"architecto\",\"password\":\"|]|{+-\",\"host\":\"%\"}" + }, + "description": "Create a new database user.", + "auth": { + "type": "noauth" + } + }, + "response": [ + { + "header": [], + "code": 200, + "body": "{\"id\":4,\"server_id\":1,\"username\":\"justina.gaylord\",\"databases\":[],\"host\":\"%\",\"status\":\"creating\",\"status_color\":\"warning\",\"created_at\":\"2025-06-10T10:21:56.000000Z\",\"updated_at\":\"2025-06-10T10:21:56.000000Z\"}", + "name": "" + } + ] + }, + { + "name": "show", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/projects\/:project_id\/servers\/:server_id\/database-users\/:databaseUser_id", + "query": [], + "raw": "{{baseUrl}}\/api\/projects\/:project_id\/servers\/:server_id\/database-users\/:databaseUser_id", + "variable": [ + { + "id": "project_id", + "key": "project_id", + "value": "1", + "description": "The ID of the project." + }, + { + "id": "server_id", + "key": "server_id", + "value": "6", + "description": "The ID of the server." + }, + { + "id": "databaseUser_id", + "key": "databaseUser_id", + "value": "16", + "description": "The ID of the databaseUser." + } + ] + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "Get a database user by ID.", + "auth": { + "type": "noauth" + } + }, + "response": [ + { + "header": [], + "code": 200, + "body": "{\"id\":4,\"server_id\":1,\"username\":\"zbailey\",\"databases\":[],\"host\":\"%\",\"status\":\"creating\",\"status_color\":\"warning\",\"created_at\":\"2025-06-10T10:21:56.000000Z\",\"updated_at\":\"2025-06-10T10:21:56.000000Z\"}", + "name": "" + } + ] + }, + { + "name": "link", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/projects\/:project_id\/servers\/:server_id\/database-users\/:databaseUser_id\/link", + "query": [], + "raw": "{{baseUrl}}\/api\/projects\/:project_id\/servers\/:server_id\/database-users\/:databaseUser_id\/link", + "variable": [ + { + "id": "project_id", + "key": "project_id", + "value": "1", + "description": "The ID of the project." + }, + { + "id": "server_id", + "key": "server_id", + "value": "6", + "description": "The ID of the server." + }, + { + "id": "databaseUser_id", + "key": "databaseUser_id", + "value": "16", + "description": "The ID of the databaseUser." + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\"databases\":\"architecto\"}" + }, + "description": "Link to databases", + "auth": { + "type": "noauth" + } + }, + "response": [ + { + "header": [], + "code": 200, + "body": "{\"id\":4,\"server_id\":1,\"username\":\"zbailey\",\"databases\":[],\"host\":\"%\",\"status\":\"creating\",\"status_color\":\"warning\",\"created_at\":\"2025-06-10T10:21:56.000000Z\",\"updated_at\":\"2025-06-10T10:21:56.000000Z\"}", + "name": "" + } + ] + }, + { + "name": "delete", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/projects\/:project_id\/servers\/:server_id\/database-users\/:databaseUser_id", + "query": [], + "raw": "{{baseUrl}}\/api\/projects\/:project_id\/servers\/:server_id\/database-users\/:databaseUser_id", + "variable": [ + { + "id": "project_id", + "key": "project_id", + "value": "1", + "description": "The ID of the project." + }, + { + "id": "server_id", + "key": "server_id", + "value": "6", + "description": "The ID of the server." + }, + { + "id": "databaseUser_id", + "key": "databaseUser_id", + "value": "16", + "description": "The ID of the databaseUser." + } + ] + }, + "method": "DELETE", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "Delete database user.", + "auth": { + "type": "noauth" + } + }, + "response": [ + { + "header": [], + "code": 204, + "body": null, + "name": "" + } + ] + } + ] + }, + { + "name": "databases", + "description": "", + "item": [ + { + "name": "list", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/projects\/:project_id\/servers\/:server_id\/databases", + "query": [], + "raw": "{{baseUrl}}\/api\/projects\/:project_id\/servers\/:server_id\/databases", + "variable": [ + { + "id": "project_id", + "key": "project_id", + "value": "1", + "description": "The ID of the project." + }, + { + "id": "server_id", + "key": "server_id", + "value": "6", + "description": "The ID of the server." + } + ] + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "Get all databases.", + "auth": { + "type": "noauth" + } + }, + "response": [ + { + "header": [], + "code": 200, + "body": "{\"data\":[{\"id\":9,\"server_id\":1,\"name\":\"zbailey\",\"collation\":null,\"charset\":null,\"status\":\"ready\",\"status_color\":\"success\",\"created_at\":\"2025-06-10T10:21:56.000000Z\",\"updated_at\":\"2025-06-10T10:21:56.000000Z\"},{\"id\":10,\"server_id\":1,\"name\":\"rempel.chadrick\",\"collation\":null,\"charset\":null,\"status\":\"ready\",\"status_color\":\"success\",\"created_at\":\"2025-06-10T10:21:56.000000Z\",\"updated_at\":\"2025-06-10T10:21:56.000000Z\"}],\"links\":{\"first\":\"\\\/?page=1\",\"last\":\"\\\/?page=1\",\"prev\":null,\"next\":null},\"meta\":{\"current_page\":1,\"from\":1,\"last_page\":1,\"links\":[{\"url\":null,\"label\":\"« Previous\",\"active\":false},{\"url\":\"\\\/?page=1\",\"label\":\"1\",\"active\":true},{\"url\":null,\"label\":\"Next »\",\"active\":false}],\"path\":\"\\\/\",\"per_page\":25,\"to\":2,\"total\":2}}", + "name": "" + } + ] + }, + { + "name": "create", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/projects\/:project_id\/servers\/:server_id\/databases", + "query": [], + "raw": "{{baseUrl}}\/api\/projects\/:project_id\/servers\/:server_id\/databases", + "variable": [ + { + "id": "project_id", + "key": "project_id", + "value": "1", + "description": "The ID of the project." + }, + { + "id": "server_id", + "key": "server_id", + "value": "6", + "description": "The ID of the server." + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\"name\":\"architecto\",\"charset\":\"architecto\",\"collation\":\"architecto\"}" + }, + "description": "Create a new database.", + "auth": { + "type": "noauth" + } + }, + "response": [ + { + "header": [], + "code": 200, + "body": "{\"id\":9,\"server_id\":1,\"name\":\"zbailey\",\"collation\":null,\"charset\":null,\"status\":\"ready\",\"status_color\":\"success\",\"created_at\":\"2025-06-10T10:21:56.000000Z\",\"updated_at\":\"2025-06-10T10:21:56.000000Z\"}", + "name": "" + } + ] + }, + { + "name": "show", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/projects\/:project_id\/servers\/:server_id\/databases\/:id", + "query": [], + "raw": "{{baseUrl}}\/api\/projects\/:project_id\/servers\/:server_id\/databases\/:id", + "variable": [ + { + "id": "project_id", + "key": "project_id", + "value": "1", + "description": "The ID of the project." + }, + { + "id": "server_id", + "key": "server_id", + "value": "6", + "description": "The ID of the server." + }, + { + "id": "id", + "key": "id", + "value": "8", + "description": "The ID of the database." + } + ] + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "Get a database by ID.", + "auth": { + "type": "noauth" + } + }, + "response": [ + { + "header": [], + "code": 200, + "body": "{\"id\":9,\"server_id\":1,\"name\":\"rempel.chadrick\",\"collation\":null,\"charset\":null,\"status\":\"ready\",\"status_color\":\"success\",\"created_at\":\"2025-06-10T10:21:56.000000Z\",\"updated_at\":\"2025-06-10T10:21:56.000000Z\"}", + "name": "" + } + ] + }, + { + "name": "delete", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/projects\/:project_id\/servers\/:server_id\/databases\/:database_id", + "query": [], + "raw": "{{baseUrl}}\/api\/projects\/:project_id\/servers\/:server_id\/databases\/:database_id", + "variable": [ + { + "id": "project_id", + "key": "project_id", + "value": "1", + "description": "The ID of the project." + }, + { + "id": "server_id", + "key": "server_id", + "value": "6", + "description": "The ID of the server." + }, + { + "id": "database_id", + "key": "database_id", + "value": "8", + "description": "The ID of the database." + } + ] + }, + "method": "DELETE", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "Delete database.", + "auth": { + "type": "noauth" + } + }, + "response": [ + { + "header": [], + "code": 204, + "body": null, + "name": "" + } + ] + } + ] + }, + { + "name": "firewall-rules", + "description": "", + "item": [ + { + "name": "list", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/projects\/:project_id\/servers\/:server_id\/firewall-rules", + "query": [], + "raw": "{{baseUrl}}\/api\/projects\/:project_id\/servers\/:server_id\/firewall-rules", + "variable": [ + { + "id": "project_id", + "key": "project_id", + "value": "1", + "description": "The ID of the project." + }, + { + "id": "server_id", + "key": "server_id", + "value": "6", + "description": "The ID of the server." + } + ] + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "Get all firewall rules.", + "auth": { + "type": "noauth" + } + }, + "response": [ + { + "header": [], + "code": 200, + "body": "{\"data\":[{\"id\":22,\"name\":\"eius\",\"server_id\":1,\"type\":\"allow\",\"protocol\":\"tcp\",\"port\":9322,\"source\":\"113.14.236.204\",\"mask\":\"24\",\"note\":\"test\",\"status\":\"creating\",\"status_color\":\"info\",\"created_at\":\"2025-06-10T10:21:56.000000Z\",\"updated_at\":\"2025-06-10T10:21:56.000000Z\"},{\"id\":23,\"name\":\"velit\",\"server_id\":1,\"type\":\"allow\",\"protocol\":\"tcp\",\"port\":2983,\"source\":\"199.172.126.144\",\"mask\":\"24\",\"note\":\"test\",\"status\":\"creating\",\"status_color\":\"info\",\"created_at\":\"2025-06-10T10:21:56.000000Z\",\"updated_at\":\"2025-06-10T10:21:56.000000Z\"}],\"links\":{\"first\":\"\\\/?page=1\",\"last\":\"\\\/?page=1\",\"prev\":null,\"next\":null},\"meta\":{\"current_page\":1,\"from\":1,\"last_page\":1,\"links\":[{\"url\":null,\"label\":\"« Previous\",\"active\":false},{\"url\":\"\\\/?page=1\",\"label\":\"1\",\"active\":true},{\"url\":null,\"label\":\"Next »\",\"active\":false}],\"path\":\"\\\/\",\"per_page\":25,\"to\":2,\"total\":2}}", + "name": "" + } + ] + }, + { + "name": "create", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/projects\/:project_id\/servers\/:server_id\/firewall-rules", + "query": [], + "raw": "{{baseUrl}}\/api\/projects\/:project_id\/servers\/:server_id\/firewall-rules", + "variable": [ + { + "id": "project_id", + "key": "project_id", + "value": "1", + "description": "The ID of the project." + }, + { + "id": "server_id", + "key": "server_id", + "value": "6", + "description": "The ID of the server." + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\"name\":\"architecto\",\"type\":\"allow\",\"protocol\":\"tcp\",\"port\":\"architecto\",\"source\":\"architecto\",\"mask\":\"0\"}" + }, + "description": "Create a new firewall rule.", + "auth": { + "type": "noauth" + } + }, + "response": [ + { + "header": [], + "code": 200, + "body": "{\"id\":22,\"name\":\"eius\",\"server_id\":1,\"type\":\"allow\",\"protocol\":\"tcp\",\"port\":9322,\"source\":\"113.14.236.204\",\"mask\":\"24\",\"note\":\"test\",\"status\":\"creating\",\"status_color\":\"info\",\"created_at\":\"2025-06-10T10:21:56.000000Z\",\"updated_at\":\"2025-06-10T10:21:56.000000Z\"}", + "name": "" + } + ] + }, + { + "name": "edit", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/projects\/:project_id\/servers\/:server_id\/firewall-rules\/:firewallRule_id", + "query": [], + "raw": "{{baseUrl}}\/api\/projects\/:project_id\/servers\/:server_id\/firewall-rules\/:firewallRule_id", + "variable": [ + { + "id": "project_id", + "key": "project_id", + "value": "1", + "description": "The ID of the project." + }, + { + "id": "server_id", + "key": "server_id", + "value": "6", + "description": "The ID of the server." + }, + { + "id": "firewallRule_id", + "key": "firewallRule_id", + "value": "19", + "description": "The ID of the firewallRule." + } + ] + }, + "method": "PUT", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\"name\":\"architecto\",\"type\":\"deny\",\"protocol\":\"udp\",\"port\":\"architecto\",\"source\":\"architecto\",\"mask\":\"0\"}" + }, + "description": "Update an existing firewall rule.", + "auth": { + "type": "noauth" + } + }, + "response": [ + { + "header": [], + "code": 200, + "body": "{\"id\":22,\"name\":\"eius\",\"server_id\":1,\"type\":\"allow\",\"protocol\":\"tcp\",\"port\":9322,\"source\":\"113.14.236.204\",\"mask\":\"24\",\"note\":\"test\",\"status\":\"creating\",\"status_color\":\"info\",\"created_at\":\"2025-06-10T10:21:56.000000Z\",\"updated_at\":\"2025-06-10T10:21:56.000000Z\"}", + "name": "" + } + ] + }, + { + "name": "show", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/projects\/:project_id\/servers\/:server_id\/firewall-rules\/:firewallRule_id", + "query": [], + "raw": "{{baseUrl}}\/api\/projects\/:project_id\/servers\/:server_id\/firewall-rules\/:firewallRule_id", + "variable": [ + { + "id": "project_id", + "key": "project_id", + "value": "1", + "description": "The ID of the project." + }, + { + "id": "server_id", + "key": "server_id", + "value": "6", + "description": "The ID of the server." + }, + { + "id": "firewallRule_id", + "key": "firewallRule_id", + "value": "19", + "description": "The ID of the firewallRule." + } + ] + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "Get a firewall rule by ID.", + "auth": { + "type": "noauth" + } + }, + "response": [ + { + "header": [], + "code": 200, + "body": "{\"id\":22,\"name\":\"velit\",\"server_id\":1,\"type\":\"allow\",\"protocol\":\"tcp\",\"port\":2983,\"source\":\"199.172.126.144\",\"mask\":\"24\",\"note\":\"test\",\"status\":\"creating\",\"status_color\":\"info\",\"created_at\":\"2025-06-10T10:21:56.000000Z\",\"updated_at\":\"2025-06-10T10:21:56.000000Z\"}", + "name": "" + } + ] + }, + { + "name": "delete", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/projects\/:project_id\/servers\/:server_id\/firewall-rules\/:firewallRule_id", + "query": [], + "raw": "{{baseUrl}}\/api\/projects\/:project_id\/servers\/:server_id\/firewall-rules\/:firewallRule_id", + "variable": [ + { + "id": "project_id", + "key": "project_id", + "value": "1", + "description": "The ID of the project." + }, + { + "id": "server_id", + "key": "server_id", + "value": "6", + "description": "The ID of the server." + }, + { + "id": "firewallRule_id", + "key": "firewallRule_id", + "value": "19", + "description": "The ID of the firewallRule." + } + ] + }, + "method": "DELETE", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "Delete firewall rule.", + "auth": { + "type": "noauth" + } + }, + "response": [ + { + "header": [], + "code": 204, + "body": null, + "name": "" + } + ] + } + ] + }, + { + "name": "general", + "description": "", + "item": [ + { + "name": "health-check", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/health", + "query": [], + "raw": "{{baseUrl}}\/api\/health" + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "", + "auth": { + "type": "noauth" + } + }, + "response": [ + { + "header": [ + { + "key": "cache-control", + "value": "no-cache, private" + }, + { + "key": "content-type", + "value": "application\/json" + }, + { + "key": "x-ratelimit-limit", + "value": "60" + }, + { + "key": "x-ratelimit-remaining", + "value": "56" + }, + { + "key": "access-control-allow-origin", + "value": "*" + } + ], + "code": 200, + "body": "{\"success\":true,\"version\":\"2.5.0\"}", + "name": "" + } + ] + } + ] + }, + { + "name": "projects", + "description": "", + "item": [ + { + "name": "list", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/projects", + "query": [], + "raw": "{{baseUrl}}\/api\/projects" + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "Get all projects.", + "auth": { + "type": "noauth" + } + }, + "response": [ + { + "header": [], + "code": 200, + "body": "{\"data\":[{\"id\":3,\"name\":\"Belle Dickens\",\"created_at\":\"2025-06-10T10:21:56.000000Z\",\"updated_at\":\"2025-06-10T10:21:56.000000Z\"},{\"id\":4,\"name\":\"Mittie Considine\",\"created_at\":\"2025-06-10T10:21:56.000000Z\",\"updated_at\":\"2025-06-10T10:21:56.000000Z\"}],\"links\":{\"first\":\"\\\/?page=1\",\"last\":\"\\\/?page=1\",\"prev\":null,\"next\":null},\"meta\":{\"current_page\":1,\"from\":1,\"last_page\":1,\"links\":[{\"url\":null,\"label\":\"« Previous\",\"active\":false},{\"url\":\"\\\/?page=1\",\"label\":\"1\",\"active\":true},{\"url\":null,\"label\":\"Next »\",\"active\":false}],\"path\":\"\\\/\",\"per_page\":25,\"to\":2,\"total\":2}}", + "name": "" + } + ] + }, + { + "name": "create", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/projects", + "query": [], + "raw": "{{baseUrl}}\/api\/projects" + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\"name\":\"architecto\"}" + }, + "description": "Create a new project.", + "auth": { + "type": "noauth" + } + }, + "response": [ + { + "header": [], + "code": 200, + "body": "{\"id\":3,\"name\":\"Ms. Elisabeth Okuneva\",\"created_at\":\"2025-06-10T10:21:56.000000Z\",\"updated_at\":\"2025-06-10T10:21:56.000000Z\"}", + "name": "" + } + ] + }, + { + "name": "show", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/projects\/:id", + "query": [], + "raw": "{{baseUrl}}\/api\/projects\/:id", + "variable": [ + { + "id": "id", + "key": "id", + "value": "1", + "description": "The ID of the project." + } + ] + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "Get a project by ID.", + "auth": { + "type": "noauth" + } + }, + "response": [ + { + "header": [], + "code": 200, + "body": "{\"id\":3,\"name\":\"Aleen O'Kon\",\"created_at\":\"2025-06-10T10:21:56.000000Z\",\"updated_at\":\"2025-06-10T10:21:56.000000Z\"}", + "name": "" + } + ] + }, + { + "name": "update", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/projects\/:id", + "query": [], + "raw": "{{baseUrl}}\/api\/projects\/:id", + "variable": [ + { + "id": "id", + "key": "id", + "value": "1", + "description": "The ID of the project." + } + ] + }, + "method": "PUT", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\"name\":\"architecto\"}" + }, + "description": "Update project.", + "auth": { + "type": "noauth" + } + }, + "response": [ + { + "header": [], + "code": 200, + "body": "{\"id\":3,\"name\":\"Ms. Elisabeth Okuneva\",\"created_at\":\"2025-06-10T10:21:56.000000Z\",\"updated_at\":\"2025-06-10T10:21:56.000000Z\"}", + "name": "" + } + ] + }, + { + "name": "delete", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/projects\/:project_id", + "query": [], + "raw": "{{baseUrl}}\/api\/projects\/:project_id", + "variable": [ + { + "id": "project_id", + "key": "project_id", + "value": "1", + "description": "The ID of the project." + } + ] + }, + "method": "DELETE", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "Delete project.", + "auth": { + "type": "noauth" + } + }, + "response": [ + { + "header": [], + "code": 204, + "body": null, + "name": "" + } + ] + } + ] + }, + { + "name": "redirects", + "description": "", + "item": [ + { + "name": "create", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/projects\/:project_id\/servers\/:server_id\/sites\/:site_id\/redirects", + "query": [], + "raw": "{{baseUrl}}\/api\/projects\/:project_id\/servers\/:server_id\/sites\/:site_id\/redirects", + "variable": [ + { + "id": "project_id", + "key": "project_id", + "value": "1", + "description": "The ID of the project." + }, + { + "id": "server_id", + "key": "server_id", + "value": "6", + "description": "The ID of the server." + }, + { + "id": "site_id", + "key": "site_id", + "value": "14", + "description": "The ID of the site." + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\"from\":\"architecto\",\"to\":\"architecto\",\"mode\":307}" + }, + "description": "Create a new redirect.", + "auth": { + "type": "noauth" + } + }, + "response": [ + { + "header": [], + "code": 200, + "body": null, + "name": "" + } + ] + }, + { + "name": "delete", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/projects\/:project_id\/servers\/:server_id\/sites\/:site_id\/redirects\/:redirect_id", + "query": [], + "raw": "{{baseUrl}}\/api\/projects\/:project_id\/servers\/:server_id\/sites\/:site_id\/redirects\/:redirect_id", + "variable": [ + { + "id": "project_id", + "key": "project_id", + "value": "1", + "description": "The ID of the project." + }, + { + "id": "server_id", + "key": "server_id", + "value": "6", + "description": "The ID of the server." + }, + { + "id": "site_id", + "key": "site_id", + "value": "14", + "description": "The ID of the site." + }, + { + "id": "redirect_id", + "key": "redirect_id", + "value": "2", + "description": "The ID of the redirect." + } + ] + }, + "method": "DELETE", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "Delete a redirect.", + "auth": { + "type": "noauth" + } + }, + "response": [ + { + "header": [], + "code": 204, + "body": null, + "name": "" + } + ] + } + ] + }, + { + "name": "server-providers", + "description": "", + "item": [ + { + "name": "list", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/projects\/:project_id\/server-providers", + "query": [], + "raw": "{{baseUrl}}\/api\/projects\/:project_id\/server-providers", + "variable": [ + { + "id": "project_id", + "key": "project_id", + "value": "1", + "description": "The ID of the project." + } + ] + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "", + "auth": { + "type": "noauth" + } + }, + "response": [ + { + "header": [], + "code": 200, + "body": "{\"data\":[{\"id\":4,\"project_id\":null,\"global\":true,\"name\":\"ab\",\"provider\":\"custom\",\"created_at\":\"2025-06-10T10:21:56.000000Z\",\"updated_at\":\"2025-06-10T10:21:56.000000Z\"},{\"id\":5,\"project_id\":null,\"global\":true,\"name\":\"incidunt\",\"provider\":\"custom\",\"created_at\":\"2025-06-10T10:21:56.000000Z\",\"updated_at\":\"2025-06-10T10:21:56.000000Z\"}],\"links\":{\"first\":\"\\\/?page=1\",\"last\":\"\\\/?page=1\",\"prev\":null,\"next\":null},\"meta\":{\"current_page\":1,\"from\":1,\"last_page\":1,\"links\":[{\"url\":null,\"label\":\"« Previous\",\"active\":false},{\"url\":\"\\\/?page=1\",\"label\":\"1\",\"active\":true},{\"url\":null,\"label\":\"Next »\",\"active\":false}],\"path\":\"\\\/\",\"per_page\":25,\"to\":2,\"total\":2}}", + "name": "" + } + ] + }, + { + "name": "create", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/projects\/:project_id\/server-providers", + "query": [], + "raw": "{{baseUrl}}\/api\/projects\/:project_id\/server-providers", + "variable": [ + { + "id": "project_id", + "key": "project_id", + "value": "1", + "description": "The ID of the project." + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\"provider\":\"architecto\",\"name\":\"architecto\",\"token\":\"architecto\",\"key\":\"architecto\",\"secret\":\"architecto\"}" + }, + "description": "", + "auth": { + "type": "noauth" + } + }, + "response": [ + { + "header": [], + "code": 200, + "body": "{\"id\":4,\"project_id\":null,\"global\":true,\"name\":\"eius\",\"provider\":\"custom\",\"created_at\":\"2025-06-10T10:21:56.000000Z\",\"updated_at\":\"2025-06-10T10:21:56.000000Z\"}", + "name": "" + } + ] + }, + { + "name": "show", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/projects\/:project_id\/server-providers\/:serverProvider_id", + "query": [], + "raw": "{{baseUrl}}\/api\/projects\/:project_id\/server-providers\/:serverProvider_id", + "variable": [ + { + "id": "project_id", + "key": "project_id", + "value": "1", + "description": "The ID of the project." + }, + { + "id": "serverProvider_id", + "key": "serverProvider_id", + "value": "3", + "description": "The ID of the serverProvider." + } + ] + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "", + "auth": { + "type": "noauth" + } + }, + "response": [ + { + "header": [], + "code": 200, + "body": "{\"id\":4,\"project_id\":null,\"global\":true,\"name\":\"mollitia\",\"provider\":\"vultr\",\"created_at\":\"2025-06-10T10:21:56.000000Z\",\"updated_at\":\"2025-06-10T10:21:56.000000Z\"}", + "name": "" + } + ] + }, + { + "name": "update", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/projects\/:project_id\/server-providers\/:serverProvider_id", + "query": [], + "raw": "{{baseUrl}}\/api\/projects\/:project_id\/server-providers\/:serverProvider_id", + "variable": [ + { + "id": "project_id", + "key": "project_id", + "value": "1", + "description": "The ID of the project." + }, + { + "id": "serverProvider_id", + "key": "serverProvider_id", + "value": "3", + "description": "The ID of the serverProvider." + } + ] + }, + "method": "PUT", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\"name\":\"architecto\",\"global\":false}" + }, + "description": "", + "auth": { + "type": "noauth" + } + }, + "response": [ + { + "header": [], + "code": 200, + "body": "{\"id\":4,\"project_id\":null,\"global\":true,\"name\":\"eius\",\"provider\":\"custom\",\"created_at\":\"2025-06-10T10:21:56.000000Z\",\"updated_at\":\"2025-06-10T10:21:56.000000Z\"}", + "name": "" + } + ] + }, + { + "name": "delete", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/projects\/:project_id\/server-providers\/:serverProvider_id", + "query": [], + "raw": "{{baseUrl}}\/api\/projects\/:project_id\/server-providers\/:serverProvider_id", + "variable": [ + { + "id": "project_id", + "key": "project_id", + "value": "1", + "description": "The ID of the project." + }, + { + "id": "serverProvider_id", + "key": "serverProvider_id", + "value": "3", + "description": "The ID of the serverProvider." + } + ] + }, + "method": "DELETE", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "", + "auth": { + "type": "noauth" + } + }, + "response": [ + { + "header": [], + "code": 204, + "body": null, + "name": "" + } + ] + } + ] + }, + { + "name": "servers", + "description": "", + "item": [ + { + "name": "list", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/projects\/:project_id\/servers", + "query": [], + "raw": "{{baseUrl}}\/api\/projects\/:project_id\/servers", + "variable": [ + { + "id": "project_id", + "key": "project_id", + "value": "1", + "description": "The ID of the project." + } + ] + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "Get all servers in a project.", + "auth": { + "type": "noauth" + } + }, + "response": [ + { + "header": [], + "code": 200, + "body": "{\"data\":[{\"id\":7,\"project_id\":1,\"services\":[],\"user_id\":1,\"provider_id\":null,\"name\":\"Rhiannon Hackett\",\"ssh_user\":\"vito\",\"ssh_users\":[\"root\",\"vito\"],\"ip\":\"15.21.182.27\",\"local_ip\":\"15.126.47.30\",\"port\":22,\"os\":\"ubuntu_22\",\"type\":\"regular\",\"type_data\":null,\"provider\":\"custom\",\"provider_data\":null,\"public_key\":\"test\",\"status\":\"ready\",\"auto_update\":null,\"available_updates\":0,\"security_updates\":null,\"progress\":100,\"progress_step\":null,\"updates\":0,\"last_update_check\":null,\"status_color\":\"success\",\"created_at\":\"2025-06-10T10:21:56.000000Z\",\"updated_at\":\"2025-06-10T10:21:56.000000Z\"},{\"id\":8,\"project_id\":1,\"services\":[],\"user_id\":1,\"provider_id\":null,\"name\":\"Maya Bins\",\"ssh_user\":\"vito\",\"ssh_users\":[\"root\",\"vito\"],\"ip\":\"88.63.32.129\",\"local_ip\":\"161.58.4.234\",\"port\":22,\"os\":\"ubuntu_22\",\"type\":\"regular\",\"type_data\":null,\"provider\":\"custom\",\"provider_data\":null,\"public_key\":\"test\",\"status\":\"ready\",\"auto_update\":null,\"available_updates\":0,\"security_updates\":null,\"progress\":100,\"progress_step\":null,\"updates\":0,\"last_update_check\":null,\"status_color\":\"success\",\"created_at\":\"2025-06-10T10:21:56.000000Z\",\"updated_at\":\"2025-06-10T10:21:56.000000Z\"}],\"links\":{\"first\":\"\\\/?page=1\",\"last\":\"\\\/?page=1\",\"prev\":null,\"next\":null},\"meta\":{\"current_page\":1,\"from\":1,\"last_page\":1,\"links\":[{\"url\":null,\"label\":\"« Previous\",\"active\":false},{\"url\":\"\\\/?page=1\",\"label\":\"1\",\"active\":true},{\"url\":null,\"label\":\"Next »\",\"active\":false}],\"path\":\"\\\/\",\"per_page\":25,\"to\":2,\"total\":2}}", + "name": "" + } + ] + }, + { + "name": "create", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/projects\/:project_id\/servers", + "query": [], + "raw": "{{baseUrl}}\/api\/projects\/:project_id\/servers", + "variable": [ + { + "id": "project_id", + "key": "project_id", + "value": "1", + "description": "The ID of the project." + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\"provider\":\"architecto\",\"server_provider\":\"linode\",\"region\":\"architecto\",\"plan\":\"architecto\",\"ip\":\"architecto\",\"port\":\"architecto\",\"name\":\"architecto\",\"os\":\"architecto\",\"webserver\":\"none\",\"database\":\"mysql80\",\"php\":\"8.2\"}" + }, + "description": "Create a new server.", + "auth": { + "type": "noauth" + } + }, + "response": [ + { + "header": [], + "code": 200, + "body": "{\"id\":7,\"project_id\":1,\"services\":[],\"user_id\":1,\"provider_id\":null,\"name\":\"Ms. Elisabeth Okuneva\",\"ssh_user\":\"vito\",\"ssh_users\":[\"root\",\"vito\"],\"ip\":\"75.13.66.152\",\"local_ip\":\"199.172.126.144\",\"port\":22,\"os\":\"ubuntu_22\",\"type\":\"regular\",\"type_data\":null,\"provider\":\"custom\",\"provider_data\":null,\"public_key\":\"test\",\"status\":\"ready\",\"auto_update\":null,\"available_updates\":0,\"security_updates\":null,\"progress\":100,\"progress_step\":null,\"updates\":0,\"last_update_check\":null,\"status_color\":\"success\",\"created_at\":\"2025-06-10T10:21:56.000000Z\",\"updated_at\":\"2025-06-10T10:21:56.000000Z\"}", + "name": "" + } + ] + }, + { + "name": "show", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/projects\/:project_id\/servers\/:id", + "query": [], + "raw": "{{baseUrl}}\/api\/projects\/:project_id\/servers\/:id", + "variable": [ + { + "id": "project_id", + "key": "project_id", + "value": "1", + "description": "The ID of the project." + }, + { + "id": "id", + "key": "id", + "value": "6", + "description": "The ID of the server." + } + ] + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "Get a server by ID.", + "auth": { + "type": "noauth" + } + }, + "response": [ + { + "header": [], + "code": 200, + "body": "{\"id\":7,\"project_id\":1,\"services\":[],\"user_id\":1,\"provider_id\":null,\"name\":\"Belle Dickens\",\"ssh_user\":\"vito\",\"ssh_users\":[\"root\",\"vito\"],\"ip\":\"51.210.32.30\",\"local_ip\":\"82.174.132.158\",\"port\":22,\"os\":\"ubuntu_22\",\"type\":\"regular\",\"type_data\":null,\"provider\":\"custom\",\"provider_data\":null,\"public_key\":\"test\",\"status\":\"ready\",\"auto_update\":null,\"available_updates\":0,\"security_updates\":null,\"progress\":100,\"progress_step\":null,\"updates\":0,\"last_update_check\":null,\"status_color\":\"success\",\"created_at\":\"2025-06-10T10:21:56.000000Z\",\"updated_at\":\"2025-06-10T10:21:56.000000Z\"}", + "name": "" + } + ] + }, + { + "name": "reboot", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/projects\/:project_id\/servers\/:server_id\/reboot", + "query": [], + "raw": "{{baseUrl}}\/api\/projects\/:project_id\/servers\/:server_id\/reboot", + "variable": [ + { + "id": "project_id", + "key": "project_id", + "value": "1", + "description": "The ID of the project." + }, + { + "id": "server_id", + "key": "server_id", + "value": "6", + "description": "The ID of the server." + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "Reboot a server.", + "auth": { + "type": "noauth" + } + }, + "response": [ + { + "header": [], + "code": 204, + "body": null, + "name": "" + } + ] + }, + { + "name": "upgrade", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/projects\/:project_id\/servers\/:server_id\/upgrade", + "query": [], + "raw": "{{baseUrl}}\/api\/projects\/:project_id\/servers\/:server_id\/upgrade", + "variable": [ + { + "id": "project_id", + "key": "project_id", + "value": "1", + "description": "The ID of the project." + }, + { + "id": "server_id", + "key": "server_id", + "value": "6", + "description": "The ID of the server." + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "Upgrade server.", + "auth": { + "type": "noauth" + } + }, + "response": [ + { + "header": [], + "code": 204, + "body": null, + "name": "" + } + ] + }, + { + "name": "delete", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/projects\/:project_id\/servers\/:server_id", + "query": [], + "raw": "{{baseUrl}}\/api\/projects\/:project_id\/servers\/:server_id", + "variable": [ + { + "id": "project_id", + "key": "project_id", + "value": "1", + "description": "The ID of the project." + }, + { + "id": "server_id", + "key": "server_id", + "value": "6", + "description": "The ID of the server." + } + ] + }, + "method": "DELETE", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "Delete server.", + "auth": { + "type": "noauth" + } + }, + "response": [ + { + "header": [], + "code": 204, + "body": null, + "name": "" + } + ] + } + ] + }, + { + "name": "services", + "description": "", + "item": [ + { + "name": "list", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/projects\/:project_id\/servers\/:server_id\/services", + "query": [], + "raw": "{{baseUrl}}\/api\/projects\/:project_id\/servers\/:server_id\/services", + "variable": [ + { + "id": "project_id", + "key": "project_id", + "value": "1", + "description": "The ID of the project." + }, + { + "id": "server_id", + "key": "server_id", + "value": "6", + "description": "The ID of the server." + } + ] + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "Get all services.", + "auth": { + "type": "noauth" + } + }, + "response": [ + { + "header": [], + "code": 200, + "body": "{\"data\":[{\"id\":null,\"server_id\":1,\"type\":\"webserver\",\"type_data\":null,\"name\":\"nginx\",\"version\":null,\"unit\":null,\"status\":\"ready\",\"status_color\":\"success\",\"icon\":\"\",\"is_default\":null,\"created_at\":null,\"updated_at\":null},{\"id\":null,\"server_id\":1,\"type\":\"webserver\",\"type_data\":null,\"name\":\"nginx\",\"version\":null,\"unit\":null,\"status\":\"ready\",\"status_color\":\"success\",\"icon\":\"\",\"is_default\":null,\"created_at\":null,\"updated_at\":null}],\"links\":{\"first\":\"\\\/?page=1\",\"last\":\"\\\/?page=1\",\"prev\":null,\"next\":null},\"meta\":{\"current_page\":1,\"from\":1,\"last_page\":1,\"links\":[{\"url\":null,\"label\":\"« Previous\",\"active\":false},{\"url\":\"\\\/?page=1\",\"label\":\"1\",\"active\":true},{\"url\":null,\"label\":\"Next »\",\"active\":false}],\"path\":\"\\\/\",\"per_page\":25,\"to\":2,\"total\":2}}", + "name": "" + } + ] + }, + { + "name": "show", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/projects\/:project_id\/servers\/:server_id\/services\/:id", + "query": [], + "raw": "{{baseUrl}}\/api\/projects\/:project_id\/servers\/:server_id\/services\/:id", + "variable": [ + { + "id": "project_id", + "key": "project_id", + "value": "1", + "description": "The ID of the project." + }, + { + "id": "server_id", + "key": "server_id", + "value": "6", + "description": "The ID of the server." + }, + { + "id": "id", + "key": "id", + "value": "22", + "description": "The ID of the service." + } + ] + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "Get a service by ID.", + "auth": { + "type": "noauth" + } + }, + "response": [ + { + "header": [], + "code": 200, + "body": "{\"id\":null,\"server_id\":1,\"type\":\"webserver\",\"type_data\":null,\"name\":\"nginx\",\"version\":null,\"unit\":null,\"status\":\"ready\",\"status_color\":\"success\",\"icon\":\"\",\"is_default\":null,\"created_at\":null,\"updated_at\":null}", + "name": "" + } + ] + }, + { + "name": "start", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/projects\/:project_id\/servers\/:server_id\/services\/:service_id\/start", + "query": [], + "raw": "{{baseUrl}}\/api\/projects\/:project_id\/servers\/:server_id\/services\/:service_id\/start", + "variable": [ + { + "id": "project_id", + "key": "project_id", + "value": "1", + "description": "The ID of the project." + }, + { + "id": "server_id", + "key": "server_id", + "value": "6", + "description": "The ID of the server." + }, + { + "id": "service_id", + "key": "service_id", + "value": "22", + "description": "The ID of the service." + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "Start service.", + "auth": { + "type": "noauth" + } + }, + "response": [ + { + "header": [], + "code": 204, + "body": null, + "name": "" + } + ] + }, + { + "name": "stop", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/projects\/:project_id\/servers\/:server_id\/services\/:service_id\/stop", + "query": [], + "raw": "{{baseUrl}}\/api\/projects\/:project_id\/servers\/:server_id\/services\/:service_id\/stop", + "variable": [ + { + "id": "project_id", + "key": "project_id", + "value": "1", + "description": "The ID of the project." + }, + { + "id": "server_id", + "key": "server_id", + "value": "6", + "description": "The ID of the server." + }, + { + "id": "service_id", + "key": "service_id", + "value": "22", + "description": "The ID of the service." + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "Stop service.", + "auth": { + "type": "noauth" + } + }, + "response": [ + { + "header": [], + "code": 204, + "body": null, + "name": "" + } + ] + }, + { + "name": "restart", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/projects\/:project_id\/servers\/:server_id\/services\/:service_id\/restart", + "query": [], + "raw": "{{baseUrl}}\/api\/projects\/:project_id\/servers\/:server_id\/services\/:service_id\/restart", + "variable": [ + { + "id": "project_id", + "key": "project_id", + "value": "1", + "description": "The ID of the project." + }, + { + "id": "server_id", + "key": "server_id", + "value": "6", + "description": "The ID of the server." + }, + { + "id": "service_id", + "key": "service_id", + "value": "22", + "description": "The ID of the service." + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "Restart service.", + "auth": { + "type": "noauth" + } + }, + "response": [ + { + "header": [], + "code": 204, + "body": null, + "name": "" + } + ] + }, + { + "name": "enable", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/projects\/:project_id\/servers\/:server_id\/services\/:service_id\/enable", + "query": [], + "raw": "{{baseUrl}}\/api\/projects\/:project_id\/servers\/:server_id\/services\/:service_id\/enable", + "variable": [ + { + "id": "project_id", + "key": "project_id", + "value": "1", + "description": "The ID of the project." + }, + { + "id": "server_id", + "key": "server_id", + "value": "6", + "description": "The ID of the server." + }, + { + "id": "service_id", + "key": "service_id", + "value": "22", + "description": "The ID of the service." + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "Enable service.", + "auth": { + "type": "noauth" + } + }, + "response": [ + { + "header": [], + "code": 204, + "body": null, + "name": "" + } + ] + }, + { + "name": "disable", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/projects\/:project_id\/servers\/:server_id\/services\/:service_id\/disable", + "query": [], + "raw": "{{baseUrl}}\/api\/projects\/:project_id\/servers\/:server_id\/services\/:service_id\/disable", + "variable": [ + { + "id": "project_id", + "key": "project_id", + "value": "1", + "description": "The ID of the project." + }, + { + "id": "server_id", + "key": "server_id", + "value": "6", + "description": "The ID of the server." + }, + { + "id": "service_id", + "key": "service_id", + "value": "22", + "description": "The ID of the service." + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "Disable service.", + "auth": { + "type": "noauth" + } + }, + "response": [ + { + "header": [], + "code": 204, + "body": null, + "name": "" + } + ] + }, + { + "name": "delete", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/projects\/:project_id\/servers\/:server_id\/services\/:service_id", + "query": [], + "raw": "{{baseUrl}}\/api\/projects\/:project_id\/servers\/:server_id\/services\/:service_id", + "variable": [ + { + "id": "project_id", + "key": "project_id", + "value": "1", + "description": "The ID of the project." + }, + { + "id": "server_id", + "key": "server_id", + "value": "6", + "description": "The ID of the server." + }, + { + "id": "service_id", + "key": "service_id", + "value": "22", + "description": "The ID of the service." + } + ] + }, + "method": "DELETE", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "Delete service.", + "auth": { + "type": "noauth" + } + }, + "response": [ + { + "header": [], + "code": 204, + "body": null, + "name": "" + } + ] + } + ] + }, + { + "name": "sites", + "description": "", + "item": [ + { + "name": "list", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/projects\/:project_id\/servers\/:server_id\/sites", + "query": [], + "raw": "{{baseUrl}}\/api\/projects\/:project_id\/servers\/:server_id\/sites", + "variable": [ + { + "id": "project_id", + "key": "project_id", + "value": "1", + "description": "The ID of the project." + }, + { + "id": "server_id", + "key": "server_id", + "value": "6", + "description": "The ID of the server." + } + ] + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "Get all sites.", + "auth": { + "type": "noauth" + } + }, + "response": [ + { + "header": [], + "code": 200, + "body": "{\"data\":[{\"id\":15,\"server_id\":1,\"source_control_id\":null,\"type\":\"laravel\",\"type_data\":null,\"features\":[\"deployment\",\"commands\",\"env\",\"ssl\",\"workers\"],\"domain\":\"test.com\",\"aliases\":null,\"web_directory\":\"\\\/\",\"path\":\"\\\/home\",\"php_version\":\"8.2\",\"repository\":null,\"branch\":\"main\",\"status\":\"ready\",\"status_color\":\"success\",\"auto_deploy\":false,\"port\":null,\"user\":\"vito\",\"url\":\"http:\\\/\\\/test.com\",\"force_ssl\":false,\"progress\":100,\"created_at\":\"2025-06-10T10:21:56.000000Z\",\"updated_at\":\"2025-06-10T10:21:56.000000Z\"},{\"id\":16,\"server_id\":1,\"source_control_id\":null,\"type\":\"laravel\",\"type_data\":null,\"features\":[\"deployment\",\"commands\",\"env\",\"ssl\",\"workers\"],\"domain\":\"test.com\",\"aliases\":null,\"web_directory\":\"\\\/\",\"path\":\"\\\/home\",\"php_version\":\"8.2\",\"repository\":null,\"branch\":\"main\",\"status\":\"ready\",\"status_color\":\"success\",\"auto_deploy\":false,\"port\":null,\"user\":\"vito\",\"url\":\"http:\\\/\\\/test.com\",\"force_ssl\":false,\"progress\":100,\"created_at\":\"2025-06-10T10:21:56.000000Z\",\"updated_at\":\"2025-06-10T10:21:56.000000Z\"}],\"links\":{\"first\":\"\\\/?page=1\",\"last\":\"\\\/?page=1\",\"prev\":null,\"next\":null},\"meta\":{\"current_page\":1,\"from\":1,\"last_page\":1,\"links\":[{\"url\":null,\"label\":\"« Previous\",\"active\":false},{\"url\":\"\\\/?page=1\",\"label\":\"1\",\"active\":true},{\"url\":null,\"label\":\"Next »\",\"active\":false}],\"path\":\"\\\/\",\"per_page\":25,\"to\":2,\"total\":2}}", + "name": "" + } + ] + }, + { + "name": "create", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/projects\/:project_id\/servers\/:server_id\/sites", + "query": [], + "raw": "{{baseUrl}}\/api\/projects\/:project_id\/servers\/:server_id\/sites", + "variable": [ + { + "id": "project_id", + "key": "project_id", + "value": "1", + "description": "The ID of the project." + }, + { + "id": "server_id", + "key": "server_id", + "value": "6", + "description": "The ID of the server." + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\"type\":\"php-blank\",\"domain\":\"architecto\",\"aliases\":[\"architecto\"],\"php_version\":\"7.4\",\"web_directory\":\"public\",\"source_control\":\"architecto\",\"repository\":\"organization\\\/repository\",\"branch\":\"main\",\"composer\":true,\"version\":\"5.2.1\",\"user\":\"architecto\",\"method\":\"round-robin\"}" + }, + "description": "Create a new site.", + "auth": { + "type": "noauth" + } + }, + "response": [ + { + "header": [], + "code": 200, + "body": "{\"id\":15,\"server_id\":1,\"source_control_id\":null,\"type\":\"laravel\",\"type_data\":null,\"features\":[\"deployment\",\"commands\",\"env\",\"ssl\",\"workers\"],\"domain\":\"test.com\",\"aliases\":null,\"web_directory\":\"\\\/\",\"path\":\"\\\/home\",\"php_version\":\"8.2\",\"repository\":null,\"branch\":\"main\",\"status\":\"ready\",\"status_color\":\"success\",\"auto_deploy\":false,\"port\":null,\"user\":\"vito\",\"url\":\"http:\\\/\\\/test.com\",\"force_ssl\":false,\"progress\":100,\"created_at\":\"2025-06-10T10:21:56.000000Z\",\"updated_at\":\"2025-06-10T10:21:56.000000Z\"}", + "name": "" + } + ] + }, + { + "name": "show", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/projects\/:project_id\/servers\/:server_id\/sites\/:id", + "query": [], + "raw": "{{baseUrl}}\/api\/projects\/:project_id\/servers\/:server_id\/sites\/:id", + "variable": [ + { + "id": "project_id", + "key": "project_id", + "value": "1", + "description": "The ID of the project." + }, + { + "id": "server_id", + "key": "server_id", + "value": "6", + "description": "The ID of the server." + }, + { + "id": "id", + "key": "id", + "value": "14", + "description": "The ID of the site." + } + ] + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "Get a site by ID.", + "auth": { + "type": "noauth" + } + }, + "response": [ + { + "header": [], + "code": 200, + "body": "{\"id\":15,\"server_id\":1,\"source_control_id\":null,\"type\":\"laravel\",\"type_data\":null,\"features\":[\"deployment\",\"commands\",\"env\",\"ssl\",\"workers\"],\"domain\":\"test.com\",\"aliases\":null,\"web_directory\":\"\\\/\",\"path\":\"\\\/home\",\"php_version\":\"8.2\",\"repository\":null,\"branch\":\"main\",\"status\":\"ready\",\"status_color\":\"success\",\"auto_deploy\":false,\"port\":null,\"user\":\"vito\",\"url\":\"http:\\\/\\\/test.com\",\"force_ssl\":false,\"progress\":100,\"created_at\":\"2025-06-10T10:21:56.000000Z\",\"updated_at\":\"2025-06-10T10:21:56.000000Z\"}", + "name": "" + } + ] + }, + { + "name": "delete", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/projects\/:project_id\/servers\/:server_id\/sites\/:site_id", + "query": [], + "raw": "{{baseUrl}}\/api\/projects\/:project_id\/servers\/:server_id\/sites\/:site_id", + "variable": [ + { + "id": "project_id", + "key": "project_id", + "value": "1", + "description": "The ID of the project." + }, + { + "id": "server_id", + "key": "server_id", + "value": "6", + "description": "The ID of the server." + }, + { + "id": "site_id", + "key": "site_id", + "value": "14", + "description": "The ID of the site." + } + ] + }, + "method": "DELETE", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "Delete site.", + "auth": { + "type": "noauth" + } + }, + "response": [ + { + "header": [], + "code": 204, + "body": null, + "name": "" + } + ] + }, + { + "name": "load-balancer", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/projects\/:project_id\/servers\/:server_id\/sites\/:site_id\/load-balancer", + "query": [], + "raw": "{{baseUrl}}\/api\/projects\/:project_id\/servers\/:server_id\/sites\/:site_id\/load-balancer", + "variable": [ + { + "id": "project_id", + "key": "project_id", + "value": "1", + "description": "The ID of the project." + }, + { + "id": "server_id", + "key": "server_id", + "value": "6", + "description": "The ID of the server." + }, + { + "id": "site_id", + "key": "site_id", + "value": "14", + "description": "The ID of the site." + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\"method\":\"round-robin\",\"servers\":[\"architecto\"]}" + }, + "description": "Update load balancer.", + "auth": { + "type": "noauth" + } + }, + "response": [ + { + "header": [], + "code": 200, + "body": null, + "name": "" + } + ] + }, + { + "name": "aliases", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/projects\/:project_id\/servers\/:server_id\/sites\/:site_id\/aliases", + "query": [], + "raw": "{{baseUrl}}\/api\/projects\/:project_id\/servers\/:server_id\/sites\/:site_id\/aliases", + "variable": [ + { + "id": "project_id", + "key": "project_id", + "value": "1", + "description": "The ID of the project." + }, + { + "id": "server_id", + "key": "server_id", + "value": "6", + "description": "The ID of the server." + }, + { + "id": "site_id", + "key": "site_id", + "value": "14", + "description": "The ID of the site." + } + ] + }, + "method": "PUT", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\"aliases\":[\"architecto\"]}" + }, + "description": "Update aliases.", + "auth": { + "type": "noauth" + } + }, + "response": [ + { + "header": [], + "code": 200, + "body": null, + "name": "" + } + ] + }, + { + "name": "deploy", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/projects\/:project_id\/servers\/:server_id\/sites\/:site_id\/deploy", + "query": [], + "raw": "{{baseUrl}}\/api\/projects\/:project_id\/servers\/:server_id\/sites\/:site_id\/deploy", + "variable": [ + { + "id": "project_id", + "key": "project_id", + "value": "1", + "description": "The ID of the project." + }, + { + "id": "server_id", + "key": "server_id", + "value": "6", + "description": "The ID of the server." + }, + { + "id": "site_id", + "key": "site_id", + "value": "14", + "description": "The ID of the site." + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "Run site deployment script", + "auth": { + "type": "noauth" + } + }, + "response": [ + { + "header": [], + "code": 200, + "body": null, + "name": "" + } + ] + }, + { + "name": "deployment-script", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/projects\/:project_id\/servers\/:server_id\/sites\/:site_id\/deployment-script", + "query": [], + "raw": "{{baseUrl}}\/api\/projects\/:project_id\/servers\/:server_id\/sites\/:site_id\/deployment-script", + "variable": [ + { + "id": "project_id", + "key": "project_id", + "value": "1", + "description": "The ID of the project." + }, + { + "id": "server_id", + "key": "server_id", + "value": "6", + "description": "The ID of the server." + }, + { + "id": "site_id", + "key": "site_id", + "value": "14", + "description": "The ID of the site." + } + ] + }, + "method": "PUT", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\"script\":\"architecto\"}" + }, + "description": "Update site deployment script", + "auth": { + "type": "noauth" + } + }, + "response": [ + { + "header": [], + "code": 204, + "body": null, + "name": "" + } + ] + }, + { + "name": "deployment-script", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/projects\/:project_id\/servers\/:server_id\/sites\/:site_id\/deployment-script", + "query": [], + "raw": "{{baseUrl}}\/api\/projects\/:project_id\/servers\/:server_id\/sites\/:site_id\/deployment-script", + "variable": [ + { + "id": "project_id", + "key": "project_id", + "value": "1", + "description": "The ID of the project." + }, + { + "id": "server_id", + "key": "server_id", + "value": "6", + "description": "The ID of the server." + }, + { + "id": "site_id", + "key": "site_id", + "value": "14", + "description": "The ID of the site." + } + ] + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "Get site deployment script content", + "auth": { + "type": "noauth" + } + }, + "response": [ + { + "header": [], + "code": 200, + "body": null, + "name": "" + } + ] + }, + { + "name": "env", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/projects\/:project_id\/servers\/:server_id\/sites\/:site_id\/env", + "query": [], + "raw": "{{baseUrl}}\/api\/projects\/:project_id\/servers\/:server_id\/sites\/:site_id\/env", + "variable": [ + { + "id": "project_id", + "key": "project_id", + "value": "1", + "description": "The ID of the project." + }, + { + "id": "server_id", + "key": "server_id", + "value": "6", + "description": "The ID of the server." + }, + { + "id": "site_id", + "key": "site_id", + "value": "14", + "description": "The ID of the site." + } + ] + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "Get site .env file content", + "auth": { + "type": "noauth" + } + }, + "response": [ + { + "header": [], + "code": 200, + "body": "{\"data\":{\"env\":\"APP_NAME=Laravel\\\\nAPP_ENV=production\"}}", + "name": "" + } + ] + }, + { + "name": "env", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/projects\/:project_id\/servers\/:server_id\/sites\/:site_id\/env", + "query": [], + "raw": "{{baseUrl}}\/api\/projects\/:project_id\/servers\/:server_id\/sites\/:site_id\/env", + "variable": [ + { + "id": "project_id", + "key": "project_id", + "value": "1", + "description": "The ID of the project." + }, + { + "id": "server_id", + "key": "server_id", + "value": "6", + "description": "The ID of the server." + }, + { + "id": "site_id", + "key": "site_id", + "value": "14", + "description": "The ID of the site." + } + ] + }, + "method": "PUT", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\"env\":\"architecto\"}" + }, + "description": "Update site .env file", + "auth": { + "type": "noauth" + } + }, + "response": [ + { + "header": [], + "code": 200, + "body": null, + "name": "" + } + ] + } + ] + }, + { + "name": "source-controls", + "description": "", + "item": [ + { + "name": "list", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/projects\/:project_id\/source-controls", + "query": [], + "raw": "{{baseUrl}}\/api\/projects\/:project_id\/source-controls", + "variable": [ + { + "id": "project_id", + "key": "project_id", + "value": "1", + "description": "The ID of the project." + } + ] + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "", + "auth": { + "type": "noauth" + } + }, + "response": [ + { + "header": [], + "code": 200, + "body": "{\"data\":[{\"id\":2,\"project_id\":null,\"global\":true,\"name\":\"Ms. Elisabeth Okuneva\",\"provider\":\"github\",\"created_at\":\"2025-06-10T10:21:56.000000Z\",\"updated_at\":\"2025-06-10T10:21:56.000000Z\"},{\"id\":3,\"project_id\":null,\"global\":true,\"name\":\"Aleen O'Kon\",\"provider\":\"github\",\"created_at\":\"2025-06-10T10:21:56.000000Z\",\"updated_at\":\"2025-06-10T10:21:56.000000Z\"}],\"links\":{\"first\":\"\\\/?page=1\",\"last\":\"\\\/?page=1\",\"prev\":null,\"next\":null},\"meta\":{\"current_page\":1,\"from\":1,\"last_page\":1,\"links\":[{\"url\":null,\"label\":\"« Previous\",\"active\":false},{\"url\":\"\\\/?page=1\",\"label\":\"1\",\"active\":true},{\"url\":null,\"label\":\"Next »\",\"active\":false}],\"path\":\"\\\/\",\"per_page\":25,\"to\":2,\"total\":2}}", + "name": "" + } + ] + }, + { + "name": "create", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/projects\/:project_id\/source-controls", + "query": [], + "raw": "{{baseUrl}}\/api\/projects\/:project_id\/source-controls", + "variable": [ + { + "id": "project_id", + "key": "project_id", + "value": "1", + "description": "The ID of the project." + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\"provider\":\"gitlab\",\"name\":\"architecto\",\"token\":\"architecto\",\"url\":\"http:\\\/\\\/www.bailey.biz\\\/quos-velit-et-fugiat-sunt-nihil-accusantium-harum.html\",\"username\":\"architecto\",\"password\":\"|]|{+-\"}" + }, + "description": "", + "auth": { + "type": "noauth" + } + }, + "response": [ + { + "header": [], + "code": 200, + "body": "{\"id\":2,\"project_id\":null,\"global\":true,\"name\":\"Mrs. Justina Gaylord\",\"provider\":\"github\",\"created_at\":\"2025-06-10T10:21:56.000000Z\",\"updated_at\":\"2025-06-10T10:21:56.000000Z\"}", + "name": "" + } + ] + }, + { + "name": "show", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/projects\/:project_id\/source-controls\/:sourceControl_id", + "query": [], + "raw": "{{baseUrl}}\/api\/projects\/:project_id\/source-controls\/:sourceControl_id", + "variable": [ + { + "id": "project_id", + "key": "project_id", + "value": "1", + "description": "The ID of the project." + }, + { + "id": "sourceControl_id", + "key": "sourceControl_id", + "value": "1", + "description": "The ID of the sourceControl." + } + ] + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "", + "auth": { + "type": "noauth" + } + }, + "response": [ + { + "header": [], + "code": 200, + "body": "{\"id\":2,\"project_id\":null,\"global\":true,\"name\":\"Misael Runte\",\"provider\":\"github\",\"created_at\":\"2025-06-10T10:21:56.000000Z\",\"updated_at\":\"2025-06-10T10:21:56.000000Z\"}", + "name": "" + } + ] + }, + { + "name": "update", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/projects\/:project_id\/source-controls\/:sourceControl_id", + "query": [], + "raw": "{{baseUrl}}\/api\/projects\/:project_id\/source-controls\/:sourceControl_id", + "variable": [ + { + "id": "project_id", + "key": "project_id", + "value": "1", + "description": "The ID of the project." + }, + { + "id": "sourceControl_id", + "key": "sourceControl_id", + "value": "1", + "description": "The ID of the sourceControl." + } + ] + }, + "method": "PUT", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\"name\":\"architecto\",\"token\":\"architecto\",\"url\":\"http:\\\/\\\/www.bailey.biz\\\/quos-velit-et-fugiat-sunt-nihil-accusantium-harum.html\",\"username\":\"architecto\",\"password\":\"|]|{+-\",\"global\":false}" + }, + "description": "", + "auth": { + "type": "noauth" + } + }, + "response": [ + { + "header": [], + "code": 200, + "body": "{\"id\":2,\"project_id\":null,\"global\":true,\"name\":\"Mrs. Justina Gaylord\",\"provider\":\"github\",\"created_at\":\"2025-06-10T10:21:56.000000Z\",\"updated_at\":\"2025-06-10T10:21:56.000000Z\"}", + "name": "" + } + ] + }, + { + "name": "delete", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/projects\/:project_id\/source-controls\/:sourceControl_id", + "query": [], + "raw": "{{baseUrl}}\/api\/projects\/:project_id\/source-controls\/:sourceControl_id", + "variable": [ + { + "id": "project_id", + "key": "project_id", + "value": "1", + "description": "The ID of the project." + }, + { + "id": "sourceControl_id", + "key": "sourceControl_id", + "value": "1", + "description": "The ID of the sourceControl." + } + ] + }, + "method": "DELETE", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "", + "auth": { + "type": "noauth" + } + }, + "response": [ + { + "header": [], + "code": 204, + "body": null, + "name": "" + } + ] + } + ] + }, + { + "name": "ssh-keys", + "description": "", + "item": [ + { + "name": "list", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/projects\/:project_id\/servers\/:server_id\/ssh-keys", + "query": [], + "raw": "{{baseUrl}}\/api\/projects\/:project_id\/servers\/:server_id\/ssh-keys", + "variable": [ + { + "id": "project_id", + "key": "project_id", + "value": "1", + "description": "The ID of the project." + }, + { + "id": "server_id", + "key": "server_id", + "value": "6", + "description": "The ID of the server." + } + ] + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "Get all ssh keys.", + "auth": { + "type": "noauth" + } + }, + "response": [ + { + "header": [], + "code": 200, + "body": "{\"data\":[{\"id\":3,\"name\":\"Haven Romaguera\",\"created_at\":\"2025-06-10T10:21:56.000000Z\",\"updated_at\":\"2025-06-10T10:21:56.000000Z\"},{\"id\":4,\"name\":\"Viva Marquardt\",\"created_at\":\"2025-06-10T10:21:56.000000Z\",\"updated_at\":\"2025-06-10T10:21:56.000000Z\"}],\"links\":{\"first\":\"\\\/?page=1\",\"last\":\"\\\/?page=1\",\"prev\":null,\"next\":null},\"meta\":{\"current_page\":1,\"from\":1,\"last_page\":1,\"links\":[{\"url\":null,\"label\":\"« Previous\",\"active\":false},{\"url\":\"\\\/?page=1\",\"label\":\"1\",\"active\":true},{\"url\":null,\"label\":\"Next »\",\"active\":false}],\"path\":\"\\\/\",\"per_page\":25,\"to\":2,\"total\":2}}", + "name": "" + } + ] + }, + { + "name": "create", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/projects\/:project_id\/servers\/:server_id\/ssh-keys", + "query": [], + "raw": "{{baseUrl}}\/api\/projects\/:project_id\/servers\/:server_id\/ssh-keys", + "variable": [ + { + "id": "project_id", + "key": "project_id", + "value": "1", + "description": "The ID of the project." + }, + { + "id": "server_id", + "key": "server_id", + "value": "6", + "description": "The ID of the server." + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\"key_id\":\"architecto\",\"name\":\"architecto\",\"public_key\":\"architecto\"}" + }, + "description": "Deploy ssh key to server.", + "auth": { + "type": "noauth" + } + }, + "response": [ + { + "header": [], + "code": 200, + "body": "{\"id\":3,\"name\":\"Ms. Elisabeth Okuneva\",\"created_at\":\"2025-06-10T10:21:56.000000Z\",\"updated_at\":\"2025-06-10T10:21:56.000000Z\"}", + "name": "" + } + ] + }, + { + "name": "delete", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/projects\/:project_id\/servers\/:server_id\/ssh-keys\/:sshKey_id", + "query": [], + "raw": "{{baseUrl}}\/api\/projects\/:project_id\/servers\/:server_id\/ssh-keys\/:sshKey_id", + "variable": [ + { + "id": "project_id", + "key": "project_id", + "value": "1", + "description": "The ID of the project." + }, + { + "id": "server_id", + "key": "server_id", + "value": "6", + "description": "The ID of the server." + }, + { + "id": "sshKey_id", + "key": "sshKey_id", + "value": "1", + "description": "The ID of the sshKey." + } + ] + }, + "method": "DELETE", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "Delete ssh key from server.", + "auth": { + "type": "noauth" + } + }, + "response": [ + { + "header": [], + "code": 204, + "body": null, + "name": "" + } + ] + } + ] + }, + { + "name": "storage-providers", + "description": "", + "item": [ + { + "name": "list", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/projects\/:project_id\/storage-providers", + "query": [], + "raw": "{{baseUrl}}\/api\/projects\/:project_id\/storage-providers", + "variable": [ + { + "id": "project_id", + "key": "project_id", + "value": "1", + "description": "The ID of the project." + } + ] + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "", + "auth": { + "type": "noauth" + } + }, + "response": [ + { + "header": [], + "code": 200, + "body": "{\"data\":[{\"id\":4,\"project_id\":null,\"global\":true,\"name\":\"harum\",\"provider\":\"local\",\"created_at\":\"2025-06-10T10:21:56.000000Z\",\"updated_at\":\"2025-06-10T10:21:56.000000Z\"},{\"id\":5,\"project_id\":null,\"global\":true,\"name\":\"commodi\",\"provider\":\"local\",\"created_at\":\"2025-06-10T10:21:56.000000Z\",\"updated_at\":\"2025-06-10T10:21:56.000000Z\"}],\"links\":{\"first\":\"\\\/?page=1\",\"last\":\"\\\/?page=1\",\"prev\":null,\"next\":null},\"meta\":{\"current_page\":1,\"from\":1,\"last_page\":1,\"links\":[{\"url\":null,\"label\":\"« Previous\",\"active\":false},{\"url\":\"\\\/?page=1\",\"label\":\"1\",\"active\":true},{\"url\":null,\"label\":\"Next »\",\"active\":false}],\"path\":\"\\\/\",\"per_page\":25,\"to\":2,\"total\":2}}", + "name": "" + } + ] + }, + { + "name": "create", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/projects\/:project_id\/storage-providers", + "query": [], + "raw": "{{baseUrl}}\/api\/projects\/:project_id\/storage-providers", + "variable": [ + { + "id": "project_id", + "key": "project_id", + "value": "1", + "description": "The ID of the project." + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\"provider\":\"architecto\",\"name\":\"architecto\",\"token\":\"architecto\",\"key\":\"architecto\",\"secret\":\"architecto\"}" + }, + "description": "", + "auth": { + "type": "noauth" + } + }, + "response": [ + { + "header": [], + "code": 200, + "body": "{\"id\":4,\"project_id\":null,\"global\":true,\"name\":\"eius\",\"provider\":\"local\",\"created_at\":\"2025-06-10T10:21:56.000000Z\",\"updated_at\":\"2025-06-10T10:21:56.000000Z\"}", + "name": "" + } + ] + }, + { + "name": "show", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/projects\/:project_id\/storage-providers\/:storageProvider_id", + "query": [], + "raw": "{{baseUrl}}\/api\/projects\/:project_id\/storage-providers\/:storageProvider_id", + "variable": [ + { + "id": "project_id", + "key": "project_id", + "value": "1", + "description": "The ID of the project." + }, + { + "id": "storageProvider_id", + "key": "storageProvider_id", + "value": "1", + "description": "The ID of the storageProvider." + } + ] + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "", + "auth": { + "type": "noauth" + } + }, + "response": [ + { + "header": [], + "code": 200, + "body": "{\"id\":4,\"project_id\":null,\"global\":true,\"name\":\"et\",\"provider\":\"dropbox\",\"created_at\":\"2025-06-10T10:21:56.000000Z\",\"updated_at\":\"2025-06-10T10:21:56.000000Z\"}", + "name": "" + } + ] + }, + { + "name": "update", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/projects\/:project_id\/storage-providers\/:storageProvider_id", + "query": [], + "raw": "{{baseUrl}}\/api\/projects\/:project_id\/storage-providers\/:storageProvider_id", + "variable": [ + { + "id": "project_id", + "key": "project_id", + "value": "1", + "description": "The ID of the project." + }, + { + "id": "storageProvider_id", + "key": "storageProvider_id", + "value": "1", + "description": "The ID of the storageProvider." + } + ] + }, + "method": "PUT", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\"name\":\"architecto\",\"global\":true}" + }, + "description": "", + "auth": { + "type": "noauth" + } + }, + "response": [ + { + "header": [], + "code": 200, + "body": "{\"id\":4,\"project_id\":null,\"global\":true,\"name\":\"eius\",\"provider\":\"local\",\"created_at\":\"2025-06-10T10:21:56.000000Z\",\"updated_at\":\"2025-06-10T10:21:56.000000Z\"}", + "name": "" + } + ] + }, + { + "name": "delete", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/projects\/:project_id\/storage-providers\/:storageProvider_id", + "query": [], + "raw": "{{baseUrl}}\/api\/projects\/:project_id\/storage-providers\/:storageProvider_id", + "variable": [ + { + "id": "project_id", + "key": "project_id", + "value": "1", + "description": "The ID of the project." + }, + { + "id": "storageProvider_id", + "key": "storageProvider_id", + "value": "1", + "description": "The ID of the storageProvider." + } + ] + }, + "method": "DELETE", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "", + "auth": { + "type": "noauth" + } + }, + "response": [ + { + "header": [], + "code": 204, + "body": null, + "name": "" + } + ] + } + ] + } + ], + "auth": { + "type": "noauth" + } +} \ No newline at end of file diff --git a/public/api-docs/css/theme-default.print.css b/public/api-docs/css/theme-default.print.css new file mode 100644 index 00000000..18ab760e --- /dev/null +++ b/public/api-docs/css/theme-default.print.css @@ -0,0 +1,393 @@ +/* Copied from https://github.com/slatedocs/slate/blob/c4b4c0b8f83e891ca9fab6bbe9a1a88d5fe41292/stylesheets/print.css and unminified */ +/*! normalize.css v3.0.2 | MIT License | git.io/normalize */ + +html { + font-family: sans-serif; + -ms-text-size-adjust: 100%; + -webkit-text-size-adjust: 100% +} + +body { + margin: 0 +} + +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +main, +menu, +nav, +section, +summary { + display: block +} + +audio, +canvas, +progress, +video { + display: inline-block; + vertical-align: baseline +} + +audio:not([controls]) { + display: none; + height: 0 +} + +[hidden], +template { + display: none +} + +a { + background-color: transparent +} + +a:active, +a:hover { + outline: 0 +} + +abbr[title] { + border-bottom: 1px dotted +} + +b, +strong { + font-weight: bold +} + +dfn { + font-style: italic +} + +h1 { + font-size: 2em; + margin: 0.67em 0 +} + +mark { + background: #ff0; + color: #000 +} + +small { + font-size: 80% +} + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline +} + +sup { + top: -0.5em +} + +sub { + bottom: -0.25em +} + +img { + border: 0 +} + +svg:not(:root) { + overflow: hidden +} + +figure { + margin: 1em 40px +} + +hr { + box-sizing: content-box; + height: 0 +} + +pre { + overflow: auto +} + +code, +kbd, +pre, +samp { + font-family: monospace, monospace; + font-size: 1em +} + +button, +input, +optgroup, +select, +textarea { + color: inherit; + font: inherit; + margin: 0 +} + +button { + overflow: visible +} + +button, +select { + text-transform: none +} + +button, +html input[type="button"], +input[type="reset"], +input[type="submit"] { + -webkit-appearance: button; + cursor: pointer +} + +button[disabled], +html input[disabled] { + cursor: default +} + +button::-moz-focus-inner, +input::-moz-focus-inner { + border: 0; + padding: 0 +} + +input { + line-height: normal +} + +input[type="checkbox"], +input[type="radio"] { + box-sizing: border-box; + padding: 0 +} + +input[type="number"]::-webkit-inner-spin-button, +input[type="number"]::-webkit-outer-spin-button { + height: auto +} + +input[type="search"] { + -webkit-appearance: textfield; + box-sizing: content-box +} + +input[type="search"]::-webkit-search-cancel-button, +input[type="search"]::-webkit-search-decoration { + -webkit-appearance: none +} + +fieldset { + border: 1px solid #c0c0c0; + margin: 0 2px; + padding: 0.35em 0.625em 0.75em +} + +legend { + border: 0; + padding: 0 +} + +textarea { + overflow: auto +} + +optgroup { + font-weight: bold +} + +table { + border-collapse: collapse; + border-spacing: 0 +} + +td, +th { + padding: 0 +} + +.content h1, +.content h2, +.content h3, +.content h4, +body { + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; + font-size: 14px +} + +.content h1, +.content h2, +.content h3, +.content h4 { + font-weight: bold +} + +.content pre, +.content code { + font-family: Consolas, Menlo, Monaco, "Lucida Console", "Liberation Mono", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Courier New", monospace, serif; + font-size: 12px; + line-height: 1.5 +} + +.content pre, +.content code { + word-break: break-all; + -webkit-hyphens: auto; + -ms-hyphens: auto; + hyphens: auto +} + +@font-face { + font-family: 'slate'; + src: url(../fonts/slate.eot?-syv14m); + src: url(../fonts/slate.eot?#iefix-syv14m) format("embedded-opentype"), url(../fonts/slate.woff2?-syv14m) format("woff2"), url(../fonts/slate.woff?-syv14m) format("woff"), url(../fonts/slate.ttf?-syv14m) format("truetype"), url(../fonts/slate.svg?-syv14m#slate) format("svg"); + font-weight: normal; + font-style: normal +} + +.content aside.warning:before, +.content aside.notice:before, +.content aside.success:before { + font-family: 'slate'; + speak: none; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + line-height: 1 +} + +.content aside.warning:before { + content: "\e600" +} + +.content aside.notice:before { + content: "\e602" +} + +.content aside.success:before { + content: "\e606" +} + +.tocify, +.toc-footer, +.lang-selector, +.search, +#nav-button { + display: none +} + +.tocify-wrapper>img { + margin: 0 auto; + display: block +} + +.content { + font-size: 12px +} + +.content pre, +.content code { + border: 1px solid #999; + border-radius: 5px; + font-size: 0.8em +} + +.content pre code { + border: 0 +} + +.content pre { + padding: 1.3em +} + +.content code { + padding: 0.2em +} + +.content table { + border: 1px solid #999 +} + +.content table tr { + border-bottom: 1px solid #999 +} + +.content table td, +.content table th { + padding: 0.7em +} + +.content p { + line-height: 1.5 +} + +.content a { + text-decoration: none; + color: #000 +} + +.content h1 { + font-size: 2.5em; + padding-top: 0.5em; + padding-bottom: 0.5em; + margin-top: 1em; + margin-bottom: 21px; + border: 2px solid #ccc; + border-width: 2px 0; + text-align: center +} + +.content h2 { + font-size: 1.8em; + margin-top: 2em; + border-top: 2px solid #ccc; + padding-top: 0.8em +} + +.content h1+h2, +.content h1+div+h2 { + border-top: none; + padding-top: 0; + margin-top: 0 +} + +.content h3, +.content h4 { + font-size: 0.8em; + margin-top: 1.5em; + margin-bottom: 0.8em; + text-transform: uppercase +} + +.content h5, +.content h6 { + text-transform: uppercase +} + +.content aside { + padding: 1em; + border: 1px solid #ccc; + border-radius: 5px; + margin-top: 1.5em; + margin-bottom: 1.5em; + line-height: 1.6 +} + +.content aside:before { + vertical-align: middle; + padding-right: 0.5em; + font-size: 14px +} diff --git a/public/api-docs/css/theme-default.style.css b/public/api-docs/css/theme-default.style.css new file mode 100644 index 00000000..9a4741c1 --- /dev/null +++ b/public/api-docs/css/theme-default.style.css @@ -0,0 +1,1090 @@ +/*! normalize.css v3.0.2 | MIT License | git.io/normalize */ + +html { + font-family: 'Open Sans', sans-serif; + font-size: 1.2em; + -ms-text-size-adjust: 100%; + -webkit-text-size-adjust: 100% +} + +body { + margin: 0 +} + +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +main, +menu, +nav, +section { + display: block +} + +summary { + cursor: pointer; +} + +audio, +canvas, +progress, +video { + display: inline-block; + vertical-align: baseline +} + +audio:not([controls]) { + display: none; + height: 0 +} + +[hidden], +template { + display: none +} + +a { + background-color: transparent +} + +a:active, +a:hover { + outline: 0 +} + +abbr[title] { + border-bottom: 1px dotted +} + +b, +strong { + font-weight: 700 +} + +dfn { + font-style: italic +} + +h1 { + font-size: 2em; + margin: .67em 0 +} + +mark { + background: #ff0; + color: #000 +} + +small { + font-size: 80% +} + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline +} + +sup { + top: -.5em +} + +sub { + bottom: -.25em +} + +img { + border: 0 +} + +svg:not(:root) { + overflow: hidden +} + +figure { + margin: 1em 40px +} + +hr { + box-sizing: content-box; + height: 0 +} + +pre { + overflow: auto +} + +code, +kbd, +pre, +samp { + font-family: monospace, monospace; + font-size: 1em +} + +button, +input, +optgroup, +select, +textarea { + color: inherit; + font: inherit; + margin: 0 +} + +button { + overflow: visible +} + +button, +select { + text-transform: none +} + +button, +html input[type=button], +input[type=reset], +input[type=submit] { + -webkit-appearance: button; + cursor: pointer +} + +button[disabled], +html input[disabled] { + cursor: default +} + +button::-moz-focus-inner, +input::-moz-focus-inner { + border: 0; + padding: 0 +} + +input { + line-height: normal +} + +input[type=checkbox], +input[type=radio] { + box-sizing: border-box; + padding: 0 +} + +input[type=number]::-webkit-inner-spin-button, +input[type=number]::-webkit-outer-spin-button { + height: auto +} + +input[type=search] { + -webkit-appearance: textfield; + box-sizing: content-box +} + +input[type=search]::-webkit-search-cancel-button, +input[type=search]::-webkit-search-decoration { + -webkit-appearance: none +} + +fieldset { + border: 1px solid silver; + margin: 0 2px; + padding: .35em .625em .75em +} + +legend { + border: 0; + padding: 0 +} + +textarea { + overflow: auto +} + +optgroup { + font-weight: 700 +} + +table { + border-collapse: collapse; + border-spacing: 0 +} + +td, +th { + padding: 0 +} + +body, +html { + font-family: 'Open Sans', Helvetica Neue, Helvetica, Arial, Microsoft Yahei, 微软雅黑, STXihei, 华文细黑, sans-serif; + font-size: 16px; +} + +.content h1, +.content h2, +.content h3, +.content h4, +.content h5, +.content h6 { + font-family: 'Open Sans', Helvetica Neue, Helvetica, Arial, Microsoft Yahei, 微软雅黑, STXihei, 华文细黑, sans-serif; +} + +.content h1, +.content h2, +.content h3, +.content h4, +.content h5, +.content h6 { + font-weight: 700 +} + +.content code, +.content pre { + font-family: Consolas, Menlo, Monaco, Lucida Console, Liberation Mono, DejaVu Sans Mono, Bitstream Vera Sans Mono, Courier New, monospace, serif; + font-size: 14px; + line-height: 1.5 +} + +.content code { + word-break: break-all; + word-break: break-word; + -webkit-hyphens: auto; + -ms-hyphens: auto; + hyphens: auto +} + +.content aside.notice:before, +.content aside.success:before, +.content aside.warning:before, +.tocify-wrapper>.search:before { + font-family: 'Open Sans', sans-serif; + speak: none; + font-style: normal; + font-variant: normal; + text-transform: none; + line-height: 1 +} + +.content aside.warning:before { + content: "✋" +} + +.content aside.notice:before { + content: "ℹ" +} + +.content aside.success:before { + content: "✅" +} + +.tocify-wrapper>.search:before { + content: "🔎" +} + +.highlight .c, +.highlight .c1, +.highlight .cm, +.highlight .cs { + color: #909090 +} + +.highlight, +.highlight .w { + background-color: #292929 +} + +.hljs { + display: block; + overflow-x: auto; + padding: .5em; + background: #23241f +} + +.hljs, +.hljs-subst, +.hljs-tag { + color: #f8f8f2 +} + +.hljs-emphasis, +.hljs-strong { + color: #a8a8a2 +} + +.hljs-bullet, +.hljs-link, +.hljs-literal, +.hljs-number, +.hljs-quote, +.hljs-regexp { + color: #ae81ff +} + +.hljs-code, +.hljs-section, +.hljs-selector-class, +.hljs-title { + color: #a6e22e +} + +.hljs-strong { + font-weight: 700 +} + +.hljs-emphasis { + font-style: italic +} + +.hljs-attr, +.hljs-keyword, +.hljs-name, +.hljs-selector-tag { + color: #f92672 +} + +.hljs-attribute, +.hljs-symbol { + color: #66d9ef +} + +.hljs-class .hljs-title, +.hljs-params { + color: #f8f8f2 +} + +.hljs-addition, +.hljs-built_in, +.hljs-builtin-name, +.hljs-selector-attr, +.hljs-selector-id, +.hljs-selector-pseudo, +.hljs-string, +.hljs-template-variable, +.hljs-type, +.hljs-variable { + color: #e6db74 +} + +.hljs-comment, +.hljs-deletion, +.hljs-meta { + color: #75715e +} + +body, +html { + color: #333; + padding: 0; + margin: 0; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + background-color: whitesmoke; + height: 100%; + -webkit-text-size-adjust: none +} + +#toc>ul>li>a>span { + float: right; + background-color: #2484ff; + border-radius: 40px; + width: 20px +} + +.tocify-wrapper { + transition: left .3s ease-in-out; + overflow-y: auto; + overflow-x: hidden; + position: fixed; + z-index: 30; + top: 0; + left: 0; + bottom: 0; + width: 230px; + background-color: #393939; + font-size: 13px; + font-weight: 700 +} + +.tocify-wrapper .lang-selector { + display: none +} + +.tocify-wrapper .lang-selector a { + padding-top: .5em; + padding-bottom: .5em +} + +.tocify-wrapper>img { + display: block +} + +.tocify-wrapper>.search { + position: relative +} + +.tocify-wrapper>.search input { + background: #393939; + border-width: 0 0 1px; + border-color: #666; + padding: 6px 0 6px 20px; + box-sizing: border-box; + margin: 10px 15px; + width: 200px; + outline: none; + color: #fff; + border-radius: 0 +} + +.tocify-wrapper>.search:before { + position: absolute; + top: 17px; + left: 15px; + color: #fff +} + +.tocify-wrapper img+.tocify { + margin-top: 20px +} + +.tocify-wrapper .search-results { + margin-top: 0; + box-sizing: border-box; + height: 0; + overflow-y: auto; + overflow-x: hidden; + transition-property: height, margin; + transition-duration: .18s; + transition-timing-function: ease-in-out; + background: linear-gradient(180deg, rgba(0, 0, 0, .2), transparent 8px), linear-gradient(0deg, rgba(0, 0, 0, .2), transparent 8px), linear-gradient(180deg, #000, transparent 1.5px), linear-gradient(0deg, #939393, hsla(0, 0%, 58%, 0) 1.5px), #262626 +} + +.tocify-wrapper .search-results.visible { + height: 30%; + margin-bottom: 1em +} + +.tocify-wrapper .search-results li { + margin: 1em 15px; + line-height: 1 +} + +.tocify-wrapper a { + color: #fff; + text-decoration: none +} + +.tocify-wrapper .search-results a:hover { + text-decoration: underline +} + +.tocify-wrapper .toc-footer li, +.tocify-wrapper .tocify-item>a { + padding: 0 15px; + display: block; + overflow-x: hidden; + white-space: nowrap; + text-overflow: ellipsis +} +.tocify-wrapper .tocify-item.level-3>a { + padding: 0 25px; +} + +.tocify-wrapper li, +.tocify-wrapper ul { + list-style: none; + margin: 0; + padding: 0; + line-height: 28px +} + +.tocify-wrapper li { + color: #fff; + transition-property: background; + transition-timing-function: linear; + transition-duration: .23s +} + +.tocify-wrapper .tocify-focus { + box-shadow: 0 1px 0 #000; + background-color: #2467af; + color: #fff; + font-weight: bold; +} + +.tocify-wrapper .tocify-subheader { + display: none; + background-color: #262626; + font-weight: 500; + background: linear-gradient(180deg, rgba(0, 0, 0, .2), transparent 8px), linear-gradient(0deg, rgba(0, 0, 0, .2), transparent 8px), linear-gradient(180deg, #000, transparent 1.5px), linear-gradient(0deg, #939393, hsla(0, 0%, 58%, 0) 1.5px), #262626 +} + +.tocify-wrapper .jets-searching .tocify-subheader, +.tocify-wrapper .tocify-subheader.visible { + display: block; +} + +.tocify-wrapper .tocify-subheader .tocify-item>a { + padding-left: 25px; + font-size: 12px +} + +.tocify-wrapper .tocify-subheader .tocify-item.level-3>a { + padding-left: 35px; +} + +.tocify-wrapper .tocify-subheader>li:last-child { + box-shadow: none +} + +.tocify-wrapper .toc-footer { + padding: 1em 0; + margin-top: 1em; + border-top: 1px dashed #666 +} + +.tocify-wrapper .toc-footer a, +.tocify-wrapper .toc-footer li { + color: #fff; + text-decoration: none +} + +.tocify-wrapper .toc-footer a:hover { + text-decoration: underline +} + +.tocify-wrapper .toc-footer li { + font-size: .8em; + line-height: 1.7; + text-decoration: none +} + +#nav-button { + padding: 0 1.5em 5em 0; + display: none; + position: fixed; + top: 0; + left: 0; + z-index: 100; + color: #000; + text-decoration: none; + font-weight: 700; + opacity: .7; + line-height: 16px; + transition: left .3s ease-in-out +} + +#nav-button span { + display: block; + padding: 6px; + background-color: rgba(234, 242, 246, .7); + -webkit-transform-origin: 0 0; + transform-origin: 0 0; + -webkit-transform: rotate(-90deg) translate(-100%); + transform: rotate(-90deg) translate(-100%); + border-radius: 0 0 0 5px +} + +#nav-button img { + height: 16px; + vertical-align: bottom +} + +#nav-button:hover { + opacity: 1 +} + +#nav-button.open { + left: 230px +} + +.page-wrapper { + margin-left: 230px; + position: relative; + z-index: 10; + background-color: #eaf2f6; + min-height: 100%; + padding-bottom: 1px +} + +.page-wrapper .dark-box { + width: 50%; + background-color: #393939; + position: absolute; + right: 0; + top: 0; + bottom: 0 +} + +.page-wrapper .lang-selector { + position: fixed; + z-index: 50; + border-bottom: 5px solid #393939 +} + +.lang-selector { + background-color: #222; + width: 100%; + font-weight: 700 +} + +.lang-selector button { + display: block; + float: left; + color: #fff; + text-decoration: none; + padding: 0 10px; + line-height: 30px; + outline: 0; + background: transparent; + border: none; +} + +.lang-selector button:active, +.lang-selector button:hover, +.lang-selector button:focus { + background-color: #111; + color: #fff +} + +.lang-selector button.active { + background-color: #393939; + color: #fff +} + +.lang-selector:after { + content: ''; + clear: both; + display: block +} + +.content { + position: relative; + z-index: 30 +} + +.content:after { + content: ''; + display: block; + clear: both +} + +.content>aside, +.content>details, +.content>dl, +.content>h1, +.content>h2, +.content>h3, +.content>h4, +.content>h5, +.content>h6, +.content>ol, +.content>p, +.content>table, +.content>ul, +.content>div, +.content>form>aside, +.content>form>details, +.content>form>h1, +.content>form>h2, +.content>form>h3, +.content>form>h4, +.content>form>h5, +.content>form>h6, +.content>form>p, +.content>form>table, +.content>form>ul, +.content>form>div { + margin-right: 50%; + padding: 0 28px; + box-sizing: border-box; + display: block; + text-shadow: 0 1px 0 #fff +} + +.content>ol, +.content>ul { + padding-left: 43px +} + +.content>div, +.content>h1, +.content>h2 { + clear: both +} + +.content h1 { + font-size: 30px; + padding-top: .5em; + padding-bottom: .5em; + border-bottom: 1px solid #ccc; + margin-bottom: 21px; + margin-top: 2em; + border-top: 1px solid #ddd; + background-image: linear-gradient(180deg, #fff, #f9f9f9) +} + +.content div:first-child+h1, +.content h1:first-child { + border-top-width: 0; + margin-top: 0 +} + +.content h2 { + font-size: 20px; + margin-top: 4em; + margin-bottom: 0; + border-top: 1px solid #ccc; + padding-top: 1.2em; + padding-bottom: 1.2em; + background-image: linear-gradient(180deg, hsla(0, 0%, 100%, .4), hsla(0, 0%, 100%, 0)) +} + +.content h1+div+h2, +.content h1+h2 { + margin-top: -21px; + border-top: none +} + +.content h3, +.content h4, +.content h5, +.content h6 { + font-size: 15px; + margin-top: 2.5em; + margin-bottom: .8em +} + +.content h4, +.content h5, +.content h6 { + font-size: 10px +} + +.content hr { + margin: 2em 0; + border-top: 2px solid #393939; + border-bottom: 2px solid #eaf2f6 +} + +.content table { + margin-bottom: 1em; + overflow: auto +} + +.content table td, +.content table th { + text-align: left; + vertical-align: top; + line-height: 1.6 +} + +.content table th { + padding: 5px 10px; + border-bottom: 1px solid #ccc; + vertical-align: bottom +} + +.content table td { + padding: 10px +} + +.content table tr:last-child { + border-bottom: 1px solid #ccc +} + +.content table tr:nth-child(odd)>td { + background-color: #ebf3f6 +} + +.content table tr:nth-child(even)>td { + background-color: #ebf2f6 +} + +.content dt { + font-weight: 700 +} + +.content dd { + margin-left: 15px +} + +.content dd, +.content dt, +.content li, +.content p { + line-height: 1.6; + margin-top: 0 +} + +.content img { + max-width: 100% +} + +.content code { + padding: 3px; + border-radius: 3px +} + +.content pre>code { + background-color: transparent; + padding: 0 +} + +.content aside { + padding-top: 1em; + padding-bottom: 1em; + margin-top: 1.5em; + margin-bottom: 1.5em; + background: #292929; + line-height: 1.6; + color: #c8c8c8; + text-shadow: none; +} + +.content aside.info { + background: #8fbcd4; + text-shadow: 0 1px 0 #a0c6da; + color: initial; +} + +.content aside.warning { + background-color: #c97a7e; + text-shadow: 0 1px 0 #d18e91; + color: initial; +} + +.content aside.success { + background-color: #6ac174; + text-shadow: 0 1px 0 #80ca89; + color: initial; +} + +.content aside:before { + vertical-align: middle; + padding-right: .5em; + font-size: 14px +} + +.content .search-highlight { + padding: 2px; + margin: -2px; + border-radius: 4px; + border: 1px solid #f7e633; + text-shadow: 1px 1px 0 #666; + background: linear-gradient(to top left, #f7e633, #f1d32f) +} + +.content blockquote, +.content pre { + background-color: #292929; + color: #fff; + padding: 1.5em 28px; + margin: 0; + width: 50%; + float: right; + clear: right; + box-sizing: border-box; + text-shadow: 0 1px 2px rgba(0, 0, 0, .4) +} + +.content blockquote pre.sf-dump, +.content pre pre.sf-dump { + width: 100%; +} + +.content .annotation { + background-color: #292929; + color: #fff; + padding: 0 28px; + margin: 0; + width: 50%; + float: right; + clear: right; + box-sizing: border-box; + text-shadow: 0 1px 2px rgba(0, 0, 0, .4) +} + +.content .annotation pre { + padding: 0 0; + width: 100%; + float: none; +} + +.content blockquote>p, +.content pre>p { + margin: 0 +} + +.content blockquote a, +.content pre a { + color: #fff; + text-decoration: none; + border-bottom: 1px dashed #ccc +} + +.content blockquote>p { + background-color: #1c1c1c; + border-radius: 5px; + padding: 13px; + color: #ccc; + border-top: 1px solid #000; + border-bottom: 1px solid #404040 +} + +@media (max-width:930px) { + .tocify-wrapper { + left: -230px + } + .tocify-wrapper.open { + left: 0 + } + .page-wrapper { + margin-left: 0 + } + #nav-button { + display: block + } + .tocify-wrapper .tocify-item>a { + padding-top: .3em; + padding-bottom: .3em + } +} + +@media (max-width:700px) { + .dark-box { + display: none + } + .tocify-wrapper .lang-selector { + display: block + } + .page-wrapper .lang-selector { + display: none + } + .content>aside, + .content>details, + .content>dl, + .content>h1, + .content>h2, + .content>h3, + .content>h4, + .content>h5, + .content>h6, + .content>ol, + .content>p, + .content>table, + .content>ul, + .content>div, + .content>form>aside, + .content>form>details, + .content>form>h1, + .content>form>h2, + .content>form>h3, + .content>form>h4, + .content>form>h5, + .content>form>h6, + .content>form>p, + .content>form>table, + .content>form>ul, + .content>form>div { + margin-right: 0; + } + .content blockquote, + .content pre { + float: none; + width: auto + } + .content .annotation { + float: none; + width: auto + } +} + +.badge { + padding: 1px 9px 2px; + white-space: nowrap; + -webkit-border-radius: 9px; + -moz-border-radius: 9px; + border-radius: 9px; + color: #ffffff; + text-shadow: none !important; + font-weight: bold; +} + +.badge.badge-darkred { + background-color: darkred; +} + +.badge.badge-red { + background-color: red; +} + +.badge.badge-blue { + background-color: blue; +} + +.badge.badge-darkblue { + background-color: darkblue; +} + +.badge.badge-green { + background-color: green; +} + +.badge.badge-darkgreen { + background-color: darkgreen; +} + +.badge.badge-purple { + background-color: purple; +} + +.badge.badge-black { + background-color: black; +} + +.badge.badge-grey { + background-color: grey; +} + +.fancy-heading-panel { + background-color: lightgrey; + border-radius: 5px; + padding-left: 5px !important; + padding-top: 5px !important; + padding-bottom: 5px !important; + margin-left: 25px; + margin-right: 10px; + width: 47%; +} + +@media screen and (max-width: 700px) { + .fancy-heading-panel { + width: 95%; + } + +} + +button { + border: none; +} + +* { + /* Foreground, Background */ + scrollbar-color: #3c4c67 transparent; +} +*::-webkit-scrollbar { /* Background */ + width: 10px; + height: 10px; + background: transparent; +} + +*::-webkit-scrollbar-thumb { /* Foreground */ + background: #626161; +} diff --git a/public/api-docs/images/navbar.png b/public/api-docs/images/navbar.png new file mode 100644 index 00000000..df38e90d Binary files /dev/null and b/public/api-docs/images/navbar.png differ diff --git a/public/api-docs/index.html b/public/api-docs/index.html new file mode 100644 index 00000000..349eaf5b --- /dev/null +++ b/public/api-docs/index.html @@ -0,0 +1,12945 @@ + + + + + + + API Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + MENU + navbar-image + + +
+ +
+ + +
+ + + +
+ + + + + + + + + + + + + + + + + +
+ + + + +
+ +
+
+
+

Introduction

+

VitoDeploy's API documentation.

+ +
This documentation aims to provide all the information you need to work with our API.
+
+<aside>As you scroll, you'll see code examples for working with the API in different programming languages in the dark area to the right (or as part of the content on mobile).
+You can switch the language used with the tabs at the top right (or from the nav menu at the top left on mobile).</aside>
+ +

Authenticating requests

+

This API is not authenticated.

+ +

Endpoints

+ + + +

POST api/servers/{server_id}/agent/{id}

+ +

+

+ + + + +
Example request:
+ + +
+
curl --request POST \
+    "https://vito.test/api/servers/6/agent/architecto" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json" \
+    --data "{
+    \"load\": 4326.41688,
+    \"memory_total\": 4326.41688,
+    \"memory_used\": 4326.41688,
+    \"memory_free\": 4326.41688,
+    \"disk_total\": 4326.41688,
+    \"disk_used\": 4326.41688,
+    \"disk_free\": 4326.41688
+}"
+
+ + +
+
const url = new URL(
+    "https://vito.test/api/servers/6/agent/architecto"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+let body = {
+    "load": 4326.41688,
+    "memory_total": 4326.41688,
+    "memory_used": 4326.41688,
+    "memory_free": 4326.41688,
+    "disk_total": 4326.41688,
+    "disk_used": 4326.41688,
+    "disk_free": 4326.41688
+};
+
+fetch(url, {
+    method: "POST",
+    headers,
+    body: JSON.stringify(body),
+}).then(response => response.json());
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ POST + api/servers/{server_id}/agent/{id} +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ server_id   +integer  +   + +
+

The ID of the server. Example: 6

+
+
+ id   +string  +   + +
+

The ID of the agent. Example: architecto

+
+

Body Parameters

+
+ load   +number  +   + +
+

Example: 4326.41688

+
+
+ memory_total   +number  +   + +
+

Example: 4326.41688

+
+
+ memory_used   +number  +   + +
+

Example: 4326.41688

+
+
+ memory_free   +number  +   + +
+

Example: 4326.41688

+
+
+ disk_total   +number  +   + +
+

Example: 4326.41688

+
+
+ disk_used   +number  +   + +
+

Example: 4326.41688

+
+
+ disk_free   +number  +   + +
+

Example: 4326.41688

+
+
+ +

GET api/git-hooks

+ +

+

+ + + + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://vito.test/api/git-hooks" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://vito.test/api/git-hooks"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ +
+ + +
+

Example response (404):

+
+
+ + Show headers + +
cache-control: no-cache, private
+content-type: application/json
+x-ratelimit-limit: 60
+x-ratelimit-remaining: 57
+access-control-allow-origin: *
+ 
+
+{
+    "message": ""
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/git-hooks +

+

+ POST + api/git-hooks +

+

+ PUT + api/git-hooks +

+

+ PATCH + api/git-hooks +

+

+ DELETE + api/git-hooks +

+

+ OPTIONS + api/git-hooks +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+
+ +

cron-jobs

+ + + +

list

+ +

+

+ +

Get all cron jobs.

+ + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://vito.test/api/projects/1/servers/6/cron-jobs" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://vito.test/api/projects/1/servers/6/cron-jobs"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ +
+ + +
+

Example response (200):

+
+
+
+{
+    "data": [
+        {
+            "id": 3,
+            "server_id": 1,
+            "command": "ls -la",
+            "user": "root",
+            "frequency": "* * * * *",
+            "status": "ready",
+            "status_color": "success",
+            "created_at": "2025-06-10T10:21:56.000000Z",
+            "updated_at": "2025-06-10T10:21:56.000000Z"
+        },
+        {
+            "id": 4,
+            "server_id": 1,
+            "command": "ls -la",
+            "user": "root",
+            "frequency": "* * * * *",
+            "status": "ready",
+            "status_color": "success",
+            "created_at": "2025-06-10T10:21:56.000000Z",
+            "updated_at": "2025-06-10T10:21:56.000000Z"
+        }
+    ],
+    "links": {
+        "first": "/?page=1",
+        "last": "/?page=1",
+        "prev": null,
+        "next": null
+    },
+    "meta": {
+        "current_page": 1,
+        "from": 1,
+        "last_page": 1,
+        "links": [
+            {
+                "url": null,
+                "label": "&laquo; Previous",
+                "active": false
+            },
+            {
+                "url": "/?page=1",
+                "label": "1",
+                "active": true
+            },
+            {
+                "url": null,
+                "label": "Next &raquo;",
+                "active": false
+            }
+        ],
+        "path": "/",
+        "per_page": 25,
+        "to": 2,
+        "total": 2
+    }
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/projects/{project_id}/servers/{server_id}/cron-jobs +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ project_id   +integer  +   + +
+

The ID of the project. Example: 1

+
+
+ server_id   +integer  +   + +
+

The ID of the server. Example: 6

+
+
+ +

create

+ +

+

+ +

Create a new cron job.

+ + +
Example request:
+ + +
+
curl --request POST \
+    "https://vito.test/api/projects/1/servers/6/cron-jobs" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json" \
+    --data "{
+    \"command\": \"architecto\",
+    \"user\": \"vito\",
+    \"frequency\": \"* * * * *\"
+}"
+
+ + +
+
const url = new URL(
+    "https://vito.test/api/projects/1/servers/6/cron-jobs"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+let body = {
+    "command": "architecto",
+    "user": "vito",
+    "frequency": "* * * * *"
+};
+
+fetch(url, {
+    method: "POST",
+    headers,
+    body: JSON.stringify(body),
+}).then(response => response.json());
+ +
+ + +
+

Example response (200):

+
+
+
+{
+    "id": 3,
+    "server_id": 1,
+    "command": "ls -la",
+    "user": "root",
+    "frequency": "* * * * *",
+    "status": "ready",
+    "status_color": "success",
+    "created_at": "2025-06-10T10:21:56.000000Z",
+    "updated_at": "2025-06-10T10:21:56.000000Z"
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ POST + api/projects/{project_id}/servers/{server_id}/cron-jobs +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ project_id   +integer  +   + +
+

The ID of the project. Example: 1

+
+
+ server_id   +integer  +   + +
+

The ID of the server. Example: 6

+
+

Body Parameters

+
+ command   +string  +   + +
+

Example: architecto

+
+
+ user   +string  +   + +
+

Example: vito

+Must be one of: +
  • root
  • vito
+
+
+ frequency   +string  +   + +
+

Frequency of the cron job. Example: * * * * *

+
+
+ +

show

+ +

+

+ +

Get a cron job by ID.

+ + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://vito.test/api/projects/1/servers/6/cron-jobs/1" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://vito.test/api/projects/1/servers/6/cron-jobs/1"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ +
+ + +
+

Example response (200):

+
+
+
+{
+    "id": 3,
+    "server_id": 1,
+    "command": "ls -la",
+    "user": "root",
+    "frequency": "* * * * *",
+    "status": "ready",
+    "status_color": "success",
+    "created_at": "2025-06-10T10:21:56.000000Z",
+    "updated_at": "2025-06-10T10:21:56.000000Z"
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/projects/{project_id}/servers/{server_id}/cron-jobs/{cronJob_id} +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ project_id   +integer  +   + +
+

The ID of the project. Example: 1

+
+
+ server_id   +integer  +   + +
+

The ID of the server. Example: 6

+
+
+ cronJob_id   +integer  +   + +
+

The ID of the cronJob. Example: 1

+
+
+ +

delete

+ +

+

+ +

Delete cron job.

+ + +
Example request:
+ + +
+
curl --request DELETE \
+    "https://vito.test/api/projects/1/servers/6/cron-jobs/1" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://vito.test/api/projects/1/servers/6/cron-jobs/1"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "DELETE",
+    headers,
+}).then(response => response.json());
+ +
+ + +
+

Example response (204):

+
+
+Empty response
+ 
+
+ + +
+

+ Request    + +    + +

+

+ DELETE + api/projects/{project_id}/servers/{server_id}/cron-jobs/{cronJob_id} +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ project_id   +integer  +   + +
+

The ID of the project. Example: 1

+
+
+ server_id   +integer  +   + +
+

The ID of the server. Example: 6

+
+
+ cronJob_id   +integer  +   + +
+

The ID of the cronJob. Example: 1

+
+
+ +

database-users

+ + + +

list

+ +

+

+ +

Get all database users.

+ + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://vito.test/api/projects/1/servers/6/database-users" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://vito.test/api/projects/1/servers/6/database-users"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ +
+ + +
+

Example response (200):

+
+
+
+{
+    "data": [
+        {
+            "id": 4,
+            "server_id": 1,
+            "username": "cartwright.maxine",
+            "databases": [],
+            "host": "%",
+            "status": "creating",
+            "status_color": "warning",
+            "created_at": "2025-06-10T10:21:56.000000Z",
+            "updated_at": "2025-06-10T10:21:56.000000Z"
+        },
+        {
+            "id": 5,
+            "server_id": 1,
+            "username": "gusikowski.eden",
+            "databases": [],
+            "host": "%",
+            "status": "creating",
+            "status_color": "warning",
+            "created_at": "2025-06-10T10:21:56.000000Z",
+            "updated_at": "2025-06-10T10:21:56.000000Z"
+        }
+    ],
+    "links": {
+        "first": "/?page=1",
+        "last": "/?page=1",
+        "prev": null,
+        "next": null
+    },
+    "meta": {
+        "current_page": 1,
+        "from": 1,
+        "last_page": 1,
+        "links": [
+            {
+                "url": null,
+                "label": "&laquo; Previous",
+                "active": false
+            },
+            {
+                "url": "/?page=1",
+                "label": "1",
+                "active": true
+            },
+            {
+                "url": null,
+                "label": "Next &raquo;",
+                "active": false
+            }
+        ],
+        "path": "/",
+        "per_page": 25,
+        "to": 2,
+        "total": 2
+    }
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/projects/{project_id}/servers/{server_id}/database-users +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ project_id   +integer  +   + +
+

The ID of the project. Example: 1

+
+
+ server_id   +integer  +   + +
+

The ID of the server. Example: 6

+
+
+ +

create

+ +

+

+ +

Create a new database user.

+ + +
Example request:
+ + +
+
curl --request POST \
+    "https://vito.test/api/projects/1/servers/6/database-users" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json" \
+    --data "{
+    \"username\": \"architecto\",
+    \"password\": \"|]|{+-\",
+    \"host\": \"%\"
+}"
+
+ + +
+
const url = new URL(
+    "https://vito.test/api/projects/1/servers/6/database-users"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+let body = {
+    "username": "architecto",
+    "password": "|]|{+-",
+    "host": "%"
+};
+
+fetch(url, {
+    method: "POST",
+    headers,
+    body: JSON.stringify(body),
+}).then(response => response.json());
+ +
+ + +
+

Example response (200):

+
+
+
+{
+    "id": 4,
+    "server_id": 1,
+    "username": "justina.gaylord",
+    "databases": [],
+    "host": "%",
+    "status": "creating",
+    "status_color": "warning",
+    "created_at": "2025-06-10T10:21:56.000000Z",
+    "updated_at": "2025-06-10T10:21:56.000000Z"
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ POST + api/projects/{project_id}/servers/{server_id}/database-users +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ project_id   +integer  +   + +
+

The ID of the project. Example: 1

+
+
+ server_id   +integer  +   + +
+

The ID of the server. Example: 6

+
+

Body Parameters

+
+ username   +string  +   + +
+

Example: architecto

+
+
+ password   +string  +   + +
+

Example: |]|{+-

+
+
+ host   +string  +   + +
+

Host, if it is a remote user. Example: %

+
+
+ +

show

+ +

+

+ +

Get a database user by ID.

+ + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://vito.test/api/projects/1/servers/6/database-users/16" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://vito.test/api/projects/1/servers/6/database-users/16"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ +
+ + +
+

Example response (200):

+
+
+
+{
+    "id": 4,
+    "server_id": 1,
+    "username": "zbailey",
+    "databases": [],
+    "host": "%",
+    "status": "creating",
+    "status_color": "warning",
+    "created_at": "2025-06-10T10:21:56.000000Z",
+    "updated_at": "2025-06-10T10:21:56.000000Z"
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/projects/{project_id}/servers/{server_id}/database-users/{databaseUser_id} +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ project_id   +integer  +   + +
+

The ID of the project. Example: 1

+
+
+ server_id   +integer  +   + +
+

The ID of the server. Example: 6

+
+
+ databaseUser_id   +integer  +   + +
+

The ID of the databaseUser. Example: 16

+
+
+ + + +

+

+ +

Link to databases

+ + +
Example request:
+ + +
+
curl --request POST \
+    "https://vito.test/api/projects/1/servers/6/database-users/16/link" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json" \
+    --data "{
+    \"databases\": \"architecto\"
+}"
+
+ + +
+
const url = new URL(
+    "https://vito.test/api/projects/1/servers/6/database-users/16/link"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+let body = {
+    "databases": "architecto"
+};
+
+fetch(url, {
+    method: "POST",
+    headers,
+    body: JSON.stringify(body),
+}).then(response => response.json());
+ +
+ + +
+

Example response (200):

+
+
+
+{
+    "id": 4,
+    "server_id": 1,
+    "username": "zbailey",
+    "databases": [],
+    "host": "%",
+    "status": "creating",
+    "status_color": "warning",
+    "created_at": "2025-06-10T10:21:56.000000Z",
+    "updated_at": "2025-06-10T10:21:56.000000Z"
+}
+ 
+
+ + + + +

delete

+ +

+

+ +

Delete database user.

+ + +
Example request:
+ + +
+
curl --request DELETE \
+    "https://vito.test/api/projects/1/servers/6/database-users/16" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://vito.test/api/projects/1/servers/6/database-users/16"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "DELETE",
+    headers,
+}).then(response => response.json());
+ +
+ + +
+

Example response (204):

+
+
+Empty response
+ 
+
+ + +
+

+ Request    + +    + +

+

+ DELETE + api/projects/{project_id}/servers/{server_id}/database-users/{databaseUser_id} +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ project_id   +integer  +   + +
+

The ID of the project. Example: 1

+
+
+ server_id   +integer  +   + +
+

The ID of the server. Example: 6

+
+
+ databaseUser_id   +integer  +   + +
+

The ID of the databaseUser. Example: 16

+
+
+ +

databases

+ + + +

list

+ +

+

+ +

Get all databases.

+ + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://vito.test/api/projects/1/servers/6/databases" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://vito.test/api/projects/1/servers/6/databases"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ +
+ + +
+

Example response (200):

+
+
+
+{
+    "data": [
+        {
+            "id": 9,
+            "server_id": 1,
+            "name": "zbailey",
+            "collation": null,
+            "charset": null,
+            "status": "ready",
+            "status_color": "success",
+            "created_at": "2025-06-10T10:21:56.000000Z",
+            "updated_at": "2025-06-10T10:21:56.000000Z"
+        },
+        {
+            "id": 10,
+            "server_id": 1,
+            "name": "rempel.chadrick",
+            "collation": null,
+            "charset": null,
+            "status": "ready",
+            "status_color": "success",
+            "created_at": "2025-06-10T10:21:56.000000Z",
+            "updated_at": "2025-06-10T10:21:56.000000Z"
+        }
+    ],
+    "links": {
+        "first": "/?page=1",
+        "last": "/?page=1",
+        "prev": null,
+        "next": null
+    },
+    "meta": {
+        "current_page": 1,
+        "from": 1,
+        "last_page": 1,
+        "links": [
+            {
+                "url": null,
+                "label": "&laquo; Previous",
+                "active": false
+            },
+            {
+                "url": "/?page=1",
+                "label": "1",
+                "active": true
+            },
+            {
+                "url": null,
+                "label": "Next &raquo;",
+                "active": false
+            }
+        ],
+        "path": "/",
+        "per_page": 25,
+        "to": 2,
+        "total": 2
+    }
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/projects/{project_id}/servers/{server_id}/databases +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ project_id   +integer  +   + +
+

The ID of the project. Example: 1

+
+
+ server_id   +integer  +   + +
+

The ID of the server. Example: 6

+
+
+ +

create

+ +

+

+ +

Create a new database.

+ + +
Example request:
+ + +
+
curl --request POST \
+    "https://vito.test/api/projects/1/servers/6/databases" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json" \
+    --data "{
+    \"name\": \"architecto\",
+    \"charset\": \"architecto\",
+    \"collation\": \"architecto\"
+}"
+
+ + +
+
const url = new URL(
+    "https://vito.test/api/projects/1/servers/6/databases"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+let body = {
+    "name": "architecto",
+    "charset": "architecto",
+    "collation": "architecto"
+};
+
+fetch(url, {
+    method: "POST",
+    headers,
+    body: JSON.stringify(body),
+}).then(response => response.json());
+ +
+ + +
+

Example response (200):

+
+
+
+{
+    "id": 9,
+    "server_id": 1,
+    "name": "zbailey",
+    "collation": null,
+    "charset": null,
+    "status": "ready",
+    "status_color": "success",
+    "created_at": "2025-06-10T10:21:56.000000Z",
+    "updated_at": "2025-06-10T10:21:56.000000Z"
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ POST + api/projects/{project_id}/servers/{server_id}/databases +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ project_id   +integer  +   + +
+

The ID of the project. Example: 1

+
+
+ server_id   +integer  +   + +
+

The ID of the server. Example: 6

+
+

Body Parameters

+
+ name   +string  +   + +
+

Example: architecto

+
+
+ charset   +string  +   + +
+

Example: architecto

+
+
+ collation   +string  +   + +
+

Example: architecto

+
+
+ +

show

+ +

+

+ +

Get a database by ID.

+ + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://vito.test/api/projects/1/servers/6/databases/8" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://vito.test/api/projects/1/servers/6/databases/8"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ +
+ + +
+

Example response (200):

+
+
+
+{
+    "id": 9,
+    "server_id": 1,
+    "name": "rempel.chadrick",
+    "collation": null,
+    "charset": null,
+    "status": "ready",
+    "status_color": "success",
+    "created_at": "2025-06-10T10:21:56.000000Z",
+    "updated_at": "2025-06-10T10:21:56.000000Z"
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/projects/{project_id}/servers/{server_id}/databases/{id} +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ project_id   +integer  +   + +
+

The ID of the project. Example: 1

+
+
+ server_id   +integer  +   + +
+

The ID of the server. Example: 6

+
+
+ id   +integer  +   + +
+

The ID of the database. Example: 8

+
+
+ +

delete

+ +

+

+ +

Delete database.

+ + +
Example request:
+ + +
+
curl --request DELETE \
+    "https://vito.test/api/projects/1/servers/6/databases/8" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://vito.test/api/projects/1/servers/6/databases/8"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "DELETE",
+    headers,
+}).then(response => response.json());
+ +
+ + +
+

Example response (204):

+
+
+Empty response
+ 
+
+ + +
+

+ Request    + +    + +

+

+ DELETE + api/projects/{project_id}/servers/{server_id}/databases/{database_id} +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ project_id   +integer  +   + +
+

The ID of the project. Example: 1

+
+
+ server_id   +integer  +   + +
+

The ID of the server. Example: 6

+
+
+ database_id   +integer  +   + +
+

The ID of the database. Example: 8

+
+
+ +

firewall-rules

+ + + +

list

+ +

+

+ +

Get all firewall rules.

+ + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://vito.test/api/projects/1/servers/6/firewall-rules" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://vito.test/api/projects/1/servers/6/firewall-rules"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ +
+ + +
+

Example response (200):

+
+
+
+{
+    "data": [
+        {
+            "id": 22,
+            "name": "eius",
+            "server_id": 1,
+            "type": "allow",
+            "protocol": "tcp",
+            "port": 9322,
+            "source": "113.14.236.204",
+            "mask": "24",
+            "note": "test",
+            "status": "creating",
+            "status_color": "info",
+            "created_at": "2025-06-10T10:21:56.000000Z",
+            "updated_at": "2025-06-10T10:21:56.000000Z"
+        },
+        {
+            "id": 23,
+            "name": "velit",
+            "server_id": 1,
+            "type": "allow",
+            "protocol": "tcp",
+            "port": 2983,
+            "source": "199.172.126.144",
+            "mask": "24",
+            "note": "test",
+            "status": "creating",
+            "status_color": "info",
+            "created_at": "2025-06-10T10:21:56.000000Z",
+            "updated_at": "2025-06-10T10:21:56.000000Z"
+        }
+    ],
+    "links": {
+        "first": "/?page=1",
+        "last": "/?page=1",
+        "prev": null,
+        "next": null
+    },
+    "meta": {
+        "current_page": 1,
+        "from": 1,
+        "last_page": 1,
+        "links": [
+            {
+                "url": null,
+                "label": "&laquo; Previous",
+                "active": false
+            },
+            {
+                "url": "/?page=1",
+                "label": "1",
+                "active": true
+            },
+            {
+                "url": null,
+                "label": "Next &raquo;",
+                "active": false
+            }
+        ],
+        "path": "/",
+        "per_page": 25,
+        "to": 2,
+        "total": 2
+    }
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/projects/{project_id}/servers/{server_id}/firewall-rules +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ project_id   +integer  +   + +
+

The ID of the project. Example: 1

+
+
+ server_id   +integer  +   + +
+

The ID of the server. Example: 6

+
+
+ +

create

+ +

+

+ +

Create a new firewall rule.

+ + +
Example request:
+ + +
+
curl --request POST \
+    "https://vito.test/api/projects/1/servers/6/firewall-rules" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json" \
+    --data "{
+    \"name\": \"architecto\",
+    \"type\": \"allow\",
+    \"protocol\": \"tcp\",
+    \"port\": \"architecto\",
+    \"source\": \"architecto\",
+    \"mask\": \"0\"
+}"
+
+ + +
+
const url = new URL(
+    "https://vito.test/api/projects/1/servers/6/firewall-rules"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+let body = {
+    "name": "architecto",
+    "type": "allow",
+    "protocol": "tcp",
+    "port": "architecto",
+    "source": "architecto",
+    "mask": "0"
+};
+
+fetch(url, {
+    method: "POST",
+    headers,
+    body: JSON.stringify(body),
+}).then(response => response.json());
+ +
+ + +
+

Example response (200):

+
+
+
+{
+    "id": 22,
+    "name": "eius",
+    "server_id": 1,
+    "type": "allow",
+    "protocol": "tcp",
+    "port": 9322,
+    "source": "113.14.236.204",
+    "mask": "24",
+    "note": "test",
+    "status": "creating",
+    "status_color": "info",
+    "created_at": "2025-06-10T10:21:56.000000Z",
+    "updated_at": "2025-06-10T10:21:56.000000Z"
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ POST + api/projects/{project_id}/servers/{server_id}/firewall-rules +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ project_id   +integer  +   + +
+

The ID of the project. Example: 1

+
+
+ server_id   +integer  +   + +
+

The ID of the server. Example: 6

+
+

Body Parameters

+
+ name   +string  +   + +
+

Example: architecto

+
+
+ type   +string  +   + +
+

Example: allow

+Must be one of: +
  • allow
  • deny
+
+
+ protocol   +string  +   + +
+

Example: tcp

+Must be one of: +
  • tcp
  • udp
+
+
+ port   +string  +   + +
+

Example: architecto

+
+
+ source   +string  +optional   + +
+

Example: architecto

+
+
+ mask   +string  +   + +
+

Mask for source IP. Example: 0

+
+
+ +

edit

+ +

+

+ +

Update an existing firewall rule.

+ + +
Example request:
+ + +
+
curl --request PUT \
+    "https://vito.test/api/projects/1/servers/6/firewall-rules/19" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json" \
+    --data "{
+    \"name\": \"architecto\",
+    \"type\": \"deny\",
+    \"protocol\": \"udp\",
+    \"port\": \"architecto\",
+    \"source\": \"architecto\",
+    \"mask\": \"0\"
+}"
+
+ + +
+
const url = new URL(
+    "https://vito.test/api/projects/1/servers/6/firewall-rules/19"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+let body = {
+    "name": "architecto",
+    "type": "deny",
+    "protocol": "udp",
+    "port": "architecto",
+    "source": "architecto",
+    "mask": "0"
+};
+
+fetch(url, {
+    method: "PUT",
+    headers,
+    body: JSON.stringify(body),
+}).then(response => response.json());
+ +
+ + +
+

Example response (200):

+
+
+
+{
+    "id": 22,
+    "name": "eius",
+    "server_id": 1,
+    "type": "allow",
+    "protocol": "tcp",
+    "port": 9322,
+    "source": "113.14.236.204",
+    "mask": "24",
+    "note": "test",
+    "status": "creating",
+    "status_color": "info",
+    "created_at": "2025-06-10T10:21:56.000000Z",
+    "updated_at": "2025-06-10T10:21:56.000000Z"
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ PUT + api/projects/{project_id}/servers/{server_id}/firewall-rules/{firewallRule_id} +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ project_id   +integer  +   + +
+

The ID of the project. Example: 1

+
+
+ server_id   +integer  +   + +
+

The ID of the server. Example: 6

+
+
+ firewallRule_id   +integer  +   + +
+

The ID of the firewallRule. Example: 19

+
+

Body Parameters

+
+ name   +string  +   + +
+

Example: architecto

+
+
+ type   +string  +   + +
+

Example: deny

+Must be one of: +
  • allow
  • deny
+
+
+ protocol   +string  +   + +
+

Example: udp

+Must be one of: +
  • tcp
  • udp
+
+
+ port   +string  +   + +
+

Example: architecto

+
+
+ source   +string  +optional   + +
+

Example: architecto

+
+
+ mask   +string  +   + +
+

Mask for source IP. Example: 0

+
+
+ +

show

+ +

+

+ +

Get a firewall rule by ID.

+ + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://vito.test/api/projects/1/servers/6/firewall-rules/19" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://vito.test/api/projects/1/servers/6/firewall-rules/19"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ +
+ + +
+

Example response (200):

+
+
+
+{
+    "id": 22,
+    "name": "velit",
+    "server_id": 1,
+    "type": "allow",
+    "protocol": "tcp",
+    "port": 2983,
+    "source": "199.172.126.144",
+    "mask": "24",
+    "note": "test",
+    "status": "creating",
+    "status_color": "info",
+    "created_at": "2025-06-10T10:21:56.000000Z",
+    "updated_at": "2025-06-10T10:21:56.000000Z"
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/projects/{project_id}/servers/{server_id}/firewall-rules/{firewallRule_id} +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ project_id   +integer  +   + +
+

The ID of the project. Example: 1

+
+
+ server_id   +integer  +   + +
+

The ID of the server. Example: 6

+
+
+ firewallRule_id   +integer  +   + +
+

The ID of the firewallRule. Example: 19

+
+
+ +

delete

+ +

+

+ +

Delete firewall rule.

+ + +
Example request:
+ + +
+
curl --request DELETE \
+    "https://vito.test/api/projects/1/servers/6/firewall-rules/19" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://vito.test/api/projects/1/servers/6/firewall-rules/19"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "DELETE",
+    headers,
+}).then(response => response.json());
+ +
+ + +
+

Example response (204):

+
+
+Empty response
+ 
+
+ + +
+

+ Request    + +    + +

+

+ DELETE + api/projects/{project_id}/servers/{server_id}/firewall-rules/{firewallRule_id} +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ project_id   +integer  +   + +
+

The ID of the project. Example: 1

+
+
+ server_id   +integer  +   + +
+

The ID of the server. Example: 6

+
+
+ firewallRule_id   +integer  +   + +
+

The ID of the firewallRule. Example: 19

+
+
+ +

general

+ + + +

health-check

+ +

+

+ + + + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://vito.test/api/health" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://vito.test/api/health"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ +
+ + +
+

Example response (200):

+
+
+ + Show headers + +
cache-control: no-cache, private
+content-type: application/json
+x-ratelimit-limit: 60
+x-ratelimit-remaining: 56
+access-control-allow-origin: *
+ 
+
+{
+    "success": true,
+    "version": "2.5.0"
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/health +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+
+ +

projects

+ + + +

list

+ +

+

+ +

Get all projects.

+ + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://vito.test/api/projects" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://vito.test/api/projects"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ +
+ + +
+

Example response (200):

+
+
+
+{
+    "data": [
+        {
+            "id": 3,
+            "name": "Belle Dickens",
+            "created_at": "2025-06-10T10:21:56.000000Z",
+            "updated_at": "2025-06-10T10:21:56.000000Z"
+        },
+        {
+            "id": 4,
+            "name": "Mittie Considine",
+            "created_at": "2025-06-10T10:21:56.000000Z",
+            "updated_at": "2025-06-10T10:21:56.000000Z"
+        }
+    ],
+    "links": {
+        "first": "/?page=1",
+        "last": "/?page=1",
+        "prev": null,
+        "next": null
+    },
+    "meta": {
+        "current_page": 1,
+        "from": 1,
+        "last_page": 1,
+        "links": [
+            {
+                "url": null,
+                "label": "&laquo; Previous",
+                "active": false
+            },
+            {
+                "url": "/?page=1",
+                "label": "1",
+                "active": true
+            },
+            {
+                "url": null,
+                "label": "Next &raquo;",
+                "active": false
+            }
+        ],
+        "path": "/",
+        "per_page": 25,
+        "to": 2,
+        "total": 2
+    }
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/projects +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+
+ +

create

+ +

+

+ +

Create a new project.

+ + +
Example request:
+ + +
+
curl --request POST \
+    "https://vito.test/api/projects" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json" \
+    --data "{
+    \"name\": \"architecto\"
+}"
+
+ + +
+
const url = new URL(
+    "https://vito.test/api/projects"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+let body = {
+    "name": "architecto"
+};
+
+fetch(url, {
+    method: "POST",
+    headers,
+    body: JSON.stringify(body),
+}).then(response => response.json());
+ +
+ + +
+

Example response (200):

+
+
+
+{
+    "id": 3,
+    "name": "Ms. Elisabeth Okuneva",
+    "created_at": "2025-06-10T10:21:56.000000Z",
+    "updated_at": "2025-06-10T10:21:56.000000Z"
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ POST + api/projects +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

Body Parameters

+
+ name   +string  +   + +
+

The name of the project. Example: architecto

+
+
+ +

show

+ +

+

+ +

Get a project by ID.

+ + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://vito.test/api/projects/1" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://vito.test/api/projects/1"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ +
+ + +
+

Example response (200):

+
+
+
+{
+    "id": 3,
+    "name": "Aleen O'Kon",
+    "created_at": "2025-06-10T10:21:56.000000Z",
+    "updated_at": "2025-06-10T10:21:56.000000Z"
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/projects/{id} +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ id   +integer  +   + +
+

The ID of the project. Example: 1

+
+
+ +

update

+ +

+

+ +

Update project.

+ + +
Example request:
+ + +
+
curl --request PUT \
+    "https://vito.test/api/projects/1" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json" \
+    --data "{
+    \"name\": \"architecto\"
+}"
+
+ + +
+
const url = new URL(
+    "https://vito.test/api/projects/1"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+let body = {
+    "name": "architecto"
+};
+
+fetch(url, {
+    method: "PUT",
+    headers,
+    body: JSON.stringify(body),
+}).then(response => response.json());
+ +
+ + +
+

Example response (200):

+
+
+
+{
+    "id": 3,
+    "name": "Ms. Elisabeth Okuneva",
+    "created_at": "2025-06-10T10:21:56.000000Z",
+    "updated_at": "2025-06-10T10:21:56.000000Z"
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ PUT + api/projects/{id} +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ id   +integer  +   + +
+

The ID of the project. Example: 1

+
+

Body Parameters

+
+ name   +string  +   + +
+

The name of the project. Example: architecto

+
+
+ +

delete

+ +

+

+ +

Delete project.

+ + +
Example request:
+ + +
+
curl --request DELETE \
+    "https://vito.test/api/projects/1" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://vito.test/api/projects/1"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "DELETE",
+    headers,
+}).then(response => response.json());
+ +
+ + +
+

Example response (204):

+
+
+Empty response
+ 
+
+ + +
+

+ Request    + +    + +

+

+ DELETE + api/projects/{project_id} +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ project_id   +integer  +   + +
+

The ID of the project. Example: 1

+
+
+ +

redirects

+ + + +

create

+ +

+

+ +

Create a new redirect.

+ + +
Example request:
+ + +
+
curl --request POST \
+    "https://vito.test/api/projects/1/servers/6/sites/14/redirects" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json" \
+    --data "{
+    \"from\": \"architecto\",
+    \"to\": \"architecto\",
+    \"mode\": 307
+}"
+
+ + +
+
const url = new URL(
+    "https://vito.test/api/projects/1/servers/6/sites/14/redirects"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+let body = {
+    "from": "architecto",
+    "to": "architecto",
+    "mode": 307
+};
+
+fetch(url, {
+    method: "POST",
+    headers,
+    body: JSON.stringify(body),
+}).then(response => response.json());
+ +
+ + +
+

Example response (200):

+
+
+
+
+ 
+
+ + +
+

+ Request    + +    + +

+

+ POST + api/projects/{project_id}/servers/{server_id}/sites/{site_id}/redirects +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ project_id   +integer  +   + +
+

The ID of the project. Example: 1

+
+
+ server_id   +integer  +   + +
+

The ID of the server. Example: 6

+
+
+ site_id   +integer  +   + +
+

The ID of the site. Example: 14

+
+

Body Parameters

+
+ from   +string  +   + +
+

Example: architecto

+
+
+ to   +string  +   + +
+

Example: architecto

+
+
+ mode   +string  +   + +
+

Example: 307

+Must be one of: +
  • 301
  • 302
  • 307
  • 308
+
+
+ +

delete

+ +

+

+ +

Delete a redirect.

+ + +
Example request:
+ + +
+
curl --request DELETE \
+    "https://vito.test/api/projects/1/servers/6/sites/14/redirects/2" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://vito.test/api/projects/1/servers/6/sites/14/redirects/2"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "DELETE",
+    headers,
+}).then(response => response.json());
+ +
+ + +
+

Example response (204):

+
+
+Empty response
+ 
+
+ + +
+

+ Request    + +    + +

+

+ DELETE + api/projects/{project_id}/servers/{server_id}/sites/{site_id}/redirects/{redirect_id} +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ project_id   +integer  +   + +
+

The ID of the project. Example: 1

+
+
+ server_id   +integer  +   + +
+

The ID of the server. Example: 6

+
+
+ site_id   +integer  +   + +
+

The ID of the site. Example: 14

+
+
+ redirect_id   +integer  +   + +
+

The ID of the redirect. Example: 2

+
+
+ +

server-providers

+ + + +

list

+ +

+

+ + + + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://vito.test/api/projects/1/server-providers" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://vito.test/api/projects/1/server-providers"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ +
+ + +
+

Example response (200):

+
+
+
+{
+    "data": [
+        {
+            "id": 4,
+            "project_id": null,
+            "global": true,
+            "name": "ab",
+            "provider": "custom",
+            "created_at": "2025-06-10T10:21:56.000000Z",
+            "updated_at": "2025-06-10T10:21:56.000000Z"
+        },
+        {
+            "id": 5,
+            "project_id": null,
+            "global": true,
+            "name": "incidunt",
+            "provider": "custom",
+            "created_at": "2025-06-10T10:21:56.000000Z",
+            "updated_at": "2025-06-10T10:21:56.000000Z"
+        }
+    ],
+    "links": {
+        "first": "/?page=1",
+        "last": "/?page=1",
+        "prev": null,
+        "next": null
+    },
+    "meta": {
+        "current_page": 1,
+        "from": 1,
+        "last_page": 1,
+        "links": [
+            {
+                "url": null,
+                "label": "&laquo; Previous",
+                "active": false
+            },
+            {
+                "url": "/?page=1",
+                "label": "1",
+                "active": true
+            },
+            {
+                "url": null,
+                "label": "Next &raquo;",
+                "active": false
+            }
+        ],
+        "path": "/",
+        "per_page": 25,
+        "to": 2,
+        "total": 2
+    }
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/projects/{project_id}/server-providers +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ project_id   +integer  +   + +
+

The ID of the project. Example: 1

+
+
+ +

create

+ +

+

+ + + + +
Example request:
+ + +
+
curl --request POST \
+    "https://vito.test/api/projects/1/server-providers" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json" \
+    --data "{
+    \"provider\": \"architecto\",
+    \"name\": \"architecto\",
+    \"token\": \"architecto\",
+    \"key\": \"architecto\",
+    \"secret\": \"architecto\"
+}"
+
+ + +
+
const url = new URL(
+    "https://vito.test/api/projects/1/server-providers"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+let body = {
+    "provider": "architecto",
+    "name": "architecto",
+    "token": "architecto",
+    "key": "architecto",
+    "secret": "architecto"
+};
+
+fetch(url, {
+    method: "POST",
+    headers,
+    body: JSON.stringify(body),
+}).then(response => response.json());
+ +
+ + +
+

Example response (200):

+
+
+
+{
+    "id": 4,
+    "project_id": null,
+    "global": true,
+    "name": "eius",
+    "provider": "custom",
+    "created_at": "2025-06-10T10:21:56.000000Z",
+    "updated_at": "2025-06-10T10:21:56.000000Z"
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ POST + api/projects/{project_id}/server-providers +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ project_id   +integer  +   + +
+

The ID of the project. Example: 1

+
+

Body Parameters

+
+ provider   +string  +   + +
+

The provider (aws, linode, hetzner, digitalocean, vultr, ...) Example: architecto

+
+
+ name   +string  +   + +
+

The name of the server provider. Example: architecto

+
+
+ token   +string  +   + +
+

The token if provider requires api token Example: architecto

+
+
+ key   +string  +   + +
+

The key if provider requires key Example: architecto

+
+
+ secret   +string  +   + +
+

The secret if provider requires key Example: architecto

+
+
+ +

show

+ +

+

+ + + + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://vito.test/api/projects/1/server-providers/3" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://vito.test/api/projects/1/server-providers/3"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ +
+ + +
+

Example response (200):

+
+
+
+{
+    "id": 4,
+    "project_id": null,
+    "global": true,
+    "name": "mollitia",
+    "provider": "vultr",
+    "created_at": "2025-06-10T10:21:56.000000Z",
+    "updated_at": "2025-06-10T10:21:56.000000Z"
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/projects/{project_id}/server-providers/{serverProvider_id} +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ project_id   +integer  +   + +
+

The ID of the project. Example: 1

+
+
+ serverProvider_id   +integer  +   + +
+

The ID of the serverProvider. Example: 3

+
+
+ +

update

+ +

+

+ + + + +
Example request:
+ + +
+
curl --request PUT \
+    "https://vito.test/api/projects/1/server-providers/3" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json" \
+    --data "{
+    \"name\": \"architecto\",
+    \"global\": false
+}"
+
+ + +
+
const url = new URL(
+    "https://vito.test/api/projects/1/server-providers/3"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+let body = {
+    "name": "architecto",
+    "global": false
+};
+
+fetch(url, {
+    method: "PUT",
+    headers,
+    body: JSON.stringify(body),
+}).then(response => response.json());
+ +
+ + +
+

Example response (200):

+
+
+
+{
+    "id": 4,
+    "project_id": null,
+    "global": true,
+    "name": "eius",
+    "provider": "custom",
+    "created_at": "2025-06-10T10:21:56.000000Z",
+    "updated_at": "2025-06-10T10:21:56.000000Z"
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ PUT + api/projects/{project_id}/server-providers/{serverProvider_id} +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ project_id   +integer  +   + +
+

The ID of the project. Example: 1

+
+
+ serverProvider_id   +integer  +   + +
+

The ID of the serverProvider. Example: 3

+
+

Body Parameters

+
+ name   +string  +   + +
+

The name of the server provider. Example: architecto

+
+
+ global   +string  +   + +
+

Accessible in all projects Example: false

+Must be one of: +
  • 1
+
+
+ +

delete

+ +

+

+ + + + +
Example request:
+ + +
+
curl --request DELETE \
+    "https://vito.test/api/projects/1/server-providers/3" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://vito.test/api/projects/1/server-providers/3"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "DELETE",
+    headers,
+}).then(response => response.json());
+ +
+ + +
+

Example response (204):

+
+
+Empty response
+ 
+
+ + +
+

+ Request    + +    + +

+

+ DELETE + api/projects/{project_id}/server-providers/{serverProvider_id} +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ project_id   +integer  +   + +
+

The ID of the project. Example: 1

+
+
+ serverProvider_id   +integer  +   + +
+

The ID of the serverProvider. Example: 3

+
+
+ +

servers

+ + + +

list

+ +

+

+ +

Get all servers in a project.

+ + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://vito.test/api/projects/1/servers" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://vito.test/api/projects/1/servers"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ +
+ + +
+

Example response (200):

+
+
+
+{
+    "data": [
+        {
+            "id": 7,
+            "project_id": 1,
+            "services": [],
+            "user_id": 1,
+            "provider_id": null,
+            "name": "Rhiannon Hackett",
+            "ssh_user": "vito",
+            "ssh_users": [
+                "root",
+                "vito"
+            ],
+            "ip": "15.21.182.27",
+            "local_ip": "15.126.47.30",
+            "port": 22,
+            "os": "ubuntu_22",
+            "type": "regular",
+            "type_data": null,
+            "provider": "custom",
+            "provider_data": null,
+            "public_key": "test",
+            "status": "ready",
+            "auto_update": null,
+            "available_updates": 0,
+            "security_updates": null,
+            "progress": 100,
+            "progress_step": null,
+            "updates": 0,
+            "last_update_check": null,
+            "status_color": "success",
+            "created_at": "2025-06-10T10:21:56.000000Z",
+            "updated_at": "2025-06-10T10:21:56.000000Z"
+        },
+        {
+            "id": 8,
+            "project_id": 1,
+            "services": [],
+            "user_id": 1,
+            "provider_id": null,
+            "name": "Maya Bins",
+            "ssh_user": "vito",
+            "ssh_users": [
+                "root",
+                "vito"
+            ],
+            "ip": "88.63.32.129",
+            "local_ip": "161.58.4.234",
+            "port": 22,
+            "os": "ubuntu_22",
+            "type": "regular",
+            "type_data": null,
+            "provider": "custom",
+            "provider_data": null,
+            "public_key": "test",
+            "status": "ready",
+            "auto_update": null,
+            "available_updates": 0,
+            "security_updates": null,
+            "progress": 100,
+            "progress_step": null,
+            "updates": 0,
+            "last_update_check": null,
+            "status_color": "success",
+            "created_at": "2025-06-10T10:21:56.000000Z",
+            "updated_at": "2025-06-10T10:21:56.000000Z"
+        }
+    ],
+    "links": {
+        "first": "/?page=1",
+        "last": "/?page=1",
+        "prev": null,
+        "next": null
+    },
+    "meta": {
+        "current_page": 1,
+        "from": 1,
+        "last_page": 1,
+        "links": [
+            {
+                "url": null,
+                "label": "&laquo; Previous",
+                "active": false
+            },
+            {
+                "url": "/?page=1",
+                "label": "1",
+                "active": true
+            },
+            {
+                "url": null,
+                "label": "Next &raquo;",
+                "active": false
+            }
+        ],
+        "path": "/",
+        "per_page": 25,
+        "to": 2,
+        "total": 2
+    }
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/projects/{project_id}/servers +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ project_id   +integer  +   + +
+

The ID of the project. Example: 1

+
+
+ +

create

+ +

+

+ +

Create a new server.

+ + +
Example request:
+ + +
+
curl --request POST \
+    "https://vito.test/api/projects/1/servers" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json" \
+    --data "{
+    \"provider\": \"architecto\",
+    \"server_provider\": \"linode\",
+    \"region\": \"architecto\",
+    \"plan\": \"architecto\",
+    \"ip\": \"architecto\",
+    \"port\": \"architecto\",
+    \"name\": \"architecto\",
+    \"os\": \"architecto\",
+    \"webserver\": \"none\",
+    \"database\": \"mysql80\",
+    \"php\": \"8.2\"
+}"
+
+ + +
+
const url = new URL(
+    "https://vito.test/api/projects/1/servers"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+let body = {
+    "provider": "architecto",
+    "server_provider": "linode",
+    "region": "architecto",
+    "plan": "architecto",
+    "ip": "architecto",
+    "port": "architecto",
+    "name": "architecto",
+    "os": "architecto",
+    "webserver": "none",
+    "database": "mysql80",
+    "php": "8.2"
+};
+
+fetch(url, {
+    method: "POST",
+    headers,
+    body: JSON.stringify(body),
+}).then(response => response.json());
+ +
+ + +
+

Example response (200):

+
+
+
+{
+    "id": 7,
+    "project_id": 1,
+    "services": [],
+    "user_id": 1,
+    "provider_id": null,
+    "name": "Ms. Elisabeth Okuneva",
+    "ssh_user": "vito",
+    "ssh_users": [
+        "root",
+        "vito"
+    ],
+    "ip": "75.13.66.152",
+    "local_ip": "199.172.126.144",
+    "port": 22,
+    "os": "ubuntu_22",
+    "type": "regular",
+    "type_data": null,
+    "provider": "custom",
+    "provider_data": null,
+    "public_key": "test",
+    "status": "ready",
+    "auto_update": null,
+    "available_updates": 0,
+    "security_updates": null,
+    "progress": 100,
+    "progress_step": null,
+    "updates": 0,
+    "last_update_check": null,
+    "status_color": "success",
+    "created_at": "2025-06-10T10:21:56.000000Z",
+    "updated_at": "2025-06-10T10:21:56.000000Z"
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ POST + api/projects/{project_id}/servers +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ project_id   +integer  +   + +
+

The ID of the project. Example: 1

+
+

Body Parameters

+
+ provider   +string  +   + +
+

The server provider type Example: architecto

+
+
+ server_provider   +string  +   + +
+

If the provider is not custom, the ID of the server provider profile Example: linode

+Must be one of: +
  • custom
  • hetzner
  • digitalocean
  • linode
  • vultr
+
+
+ region   +string  +   + +
+

Provider region if the provider is not custom Example: architecto

+
+
+ plan   +string  +   + +
+

Provider plan if the provider is not custom Example: architecto

+
+
+ ip   +string  +   + +
+

SSH IP address if the provider is custom Example: architecto

+
+
+ port   +string  +   + +
+

SSH Port if the provider is custom Example: architecto

+
+
+ name   +string  +   + +
+

The name of the server. Example: architecto

+
+
+ os   +string  +   + +
+

The os of the server Example: architecto

+
+
+ webserver   +string  +   + +
+

Web server Example: none

+Must be one of: +
  • none
  • nginx
  • caddy
+
+
+ database   +string  +   + +
+

Database Example: mysql80

+Must be one of: +
  • none
  • mysql57
  • mysql80
  • mariadb103
  • mariadb104
  • mariadb103
  • postgresql12
  • postgresql13
  • postgresql14
  • postgresql15
  • postgresql16
+
+
+ php   +string  +   + +
+

PHP version Example: 8.2

+Must be one of: +
  • 7.0
  • 7.1
  • 7.2
  • 7.3
  • 7.4
  • 8.0
  • 8.1
  • 8.2
  • 8.3
+
+
+ +

show

+ +

+

+ +

Get a server by ID.

+ + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://vito.test/api/projects/1/servers/6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://vito.test/api/projects/1/servers/6"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ +
+ + +
+

Example response (200):

+
+
+
+{
+    "id": 7,
+    "project_id": 1,
+    "services": [],
+    "user_id": 1,
+    "provider_id": null,
+    "name": "Belle Dickens",
+    "ssh_user": "vito",
+    "ssh_users": [
+        "root",
+        "vito"
+    ],
+    "ip": "51.210.32.30",
+    "local_ip": "82.174.132.158",
+    "port": 22,
+    "os": "ubuntu_22",
+    "type": "regular",
+    "type_data": null,
+    "provider": "custom",
+    "provider_data": null,
+    "public_key": "test",
+    "status": "ready",
+    "auto_update": null,
+    "available_updates": 0,
+    "security_updates": null,
+    "progress": 100,
+    "progress_step": null,
+    "updates": 0,
+    "last_update_check": null,
+    "status_color": "success",
+    "created_at": "2025-06-10T10:21:56.000000Z",
+    "updated_at": "2025-06-10T10:21:56.000000Z"
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/projects/{project_id}/servers/{id} +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ project_id   +integer  +   + +
+

The ID of the project. Example: 1

+
+
+ id   +integer  +   + +
+

The ID of the server. Example: 6

+
+
+ +

reboot

+ +

+

+ +

Reboot a server.

+ + +
Example request:
+ + +
+
curl --request POST \
+    "https://vito.test/api/projects/1/servers/6/reboot" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://vito.test/api/projects/1/servers/6/reboot"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "POST",
+    headers,
+}).then(response => response.json());
+ +
+ + +
+

Example response (204):

+
+
+Empty response
+ 
+
+ + +
+

+ Request    + +    + +

+

+ POST + api/projects/{project_id}/servers/{server_id}/reboot +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ project_id   +integer  +   + +
+

The ID of the project. Example: 1

+
+
+ server_id   +integer  +   + +
+

The ID of the server. Example: 6

+
+
+ +

upgrade

+ +

+

+ +

Upgrade server.

+ + +
Example request:
+ + +
+
curl --request POST \
+    "https://vito.test/api/projects/1/servers/6/upgrade" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://vito.test/api/projects/1/servers/6/upgrade"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "POST",
+    headers,
+}).then(response => response.json());
+ +
+ + +
+

Example response (204):

+
+
+Empty response
+ 
+
+ + +
+

+ Request    + +    + +

+

+ POST + api/projects/{project_id}/servers/{server_id}/upgrade +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ project_id   +integer  +   + +
+

The ID of the project. Example: 1

+
+
+ server_id   +integer  +   + +
+

The ID of the server. Example: 6

+
+
+ +

delete

+ +

+

+ +

Delete server.

+ + +
Example request:
+ + +
+
curl --request DELETE \
+    "https://vito.test/api/projects/1/servers/6" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://vito.test/api/projects/1/servers/6"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "DELETE",
+    headers,
+}).then(response => response.json());
+ +
+ + +
+

Example response (204):

+
+
+Empty response
+ 
+
+ + +
+

+ Request    + +    + +

+

+ DELETE + api/projects/{project_id}/servers/{server_id} +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ project_id   +integer  +   + +
+

The ID of the project. Example: 1

+
+
+ server_id   +integer  +   + +
+

The ID of the server. Example: 6

+
+
+ +

services

+ + + +

list

+ +

+

+ +

Get all services.

+ + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://vito.test/api/projects/1/servers/6/services" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://vito.test/api/projects/1/servers/6/services"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ +
+ + +
+

Example response (200):

+
+
+
+{
+    "data": [
+        {
+            "id": null,
+            "server_id": 1,
+            "type": "webserver",
+            "type_data": null,
+            "name": "nginx",
+            "version": null,
+            "unit": null,
+            "status": "ready",
+            "status_color": "success",
+            "icon": "",
+            "is_default": null,
+            "created_at": null,
+            "updated_at": null
+        },
+        {
+            "id": null,
+            "server_id": 1,
+            "type": "webserver",
+            "type_data": null,
+            "name": "nginx",
+            "version": null,
+            "unit": null,
+            "status": "ready",
+            "status_color": "success",
+            "icon": "",
+            "is_default": null,
+            "created_at": null,
+            "updated_at": null
+        }
+    ],
+    "links": {
+        "first": "/?page=1",
+        "last": "/?page=1",
+        "prev": null,
+        "next": null
+    },
+    "meta": {
+        "current_page": 1,
+        "from": 1,
+        "last_page": 1,
+        "links": [
+            {
+                "url": null,
+                "label": "&laquo; Previous",
+                "active": false
+            },
+            {
+                "url": "/?page=1",
+                "label": "1",
+                "active": true
+            },
+            {
+                "url": null,
+                "label": "Next &raquo;",
+                "active": false
+            }
+        ],
+        "path": "/",
+        "per_page": 25,
+        "to": 2,
+        "total": 2
+    }
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/projects/{project_id}/servers/{server_id}/services +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ project_id   +integer  +   + +
+

The ID of the project. Example: 1

+
+
+ server_id   +integer  +   + +
+

The ID of the server. Example: 6

+
+
+ +

show

+ +

+

+ +

Get a service by ID.

+ + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://vito.test/api/projects/1/servers/6/services/22" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://vito.test/api/projects/1/servers/6/services/22"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ +
+ + +
+

Example response (200):

+
+
+
+{
+    "id": null,
+    "server_id": 1,
+    "type": "webserver",
+    "type_data": null,
+    "name": "nginx",
+    "version": null,
+    "unit": null,
+    "status": "ready",
+    "status_color": "success",
+    "icon": "",
+    "is_default": null,
+    "created_at": null,
+    "updated_at": null
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/projects/{project_id}/servers/{server_id}/services/{id} +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ project_id   +integer  +   + +
+

The ID of the project. Example: 1

+
+
+ server_id   +integer  +   + +
+

The ID of the server. Example: 6

+
+
+ id   +integer  +   + +
+

The ID of the service. Example: 22

+
+
+ +

start

+ +

+

+ +

Start service.

+ + +
Example request:
+ + +
+
curl --request POST \
+    "https://vito.test/api/projects/1/servers/6/services/22/start" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://vito.test/api/projects/1/servers/6/services/22/start"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "POST",
+    headers,
+}).then(response => response.json());
+ +
+ + +
+

Example response (204):

+
+
+Empty response
+ 
+
+ + +
+

+ Request    + +    + +

+

+ POST + api/projects/{project_id}/servers/{server_id}/services/{service_id}/start +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ project_id   +integer  +   + +
+

The ID of the project. Example: 1

+
+
+ server_id   +integer  +   + +
+

The ID of the server. Example: 6

+
+
+ service_id   +integer  +   + +
+

The ID of the service. Example: 22

+
+
+ +

stop

+ +

+

+ +

Stop service.

+ + +
Example request:
+ + +
+
curl --request POST \
+    "https://vito.test/api/projects/1/servers/6/services/22/stop" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://vito.test/api/projects/1/servers/6/services/22/stop"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "POST",
+    headers,
+}).then(response => response.json());
+ +
+ + +
+

Example response (204):

+
+
+Empty response
+ 
+
+ + +
+

+ Request    + +    + +

+

+ POST + api/projects/{project_id}/servers/{server_id}/services/{service_id}/stop +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ project_id   +integer  +   + +
+

The ID of the project. Example: 1

+
+
+ server_id   +integer  +   + +
+

The ID of the server. Example: 6

+
+
+ service_id   +integer  +   + +
+

The ID of the service. Example: 22

+
+
+ +

restart

+ +

+

+ +

Restart service.

+ + +
Example request:
+ + +
+
curl --request POST \
+    "https://vito.test/api/projects/1/servers/6/services/22/restart" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://vito.test/api/projects/1/servers/6/services/22/restart"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "POST",
+    headers,
+}).then(response => response.json());
+ +
+ + +
+

Example response (204):

+
+
+Empty response
+ 
+
+ + +
+

+ Request    + +    + +

+

+ POST + api/projects/{project_id}/servers/{server_id}/services/{service_id}/restart +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ project_id   +integer  +   + +
+

The ID of the project. Example: 1

+
+
+ server_id   +integer  +   + +
+

The ID of the server. Example: 6

+
+
+ service_id   +integer  +   + +
+

The ID of the service. Example: 22

+
+
+ +

enable

+ +

+

+ +

Enable service.

+ + +
Example request:
+ + +
+
curl --request POST \
+    "https://vito.test/api/projects/1/servers/6/services/22/enable" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://vito.test/api/projects/1/servers/6/services/22/enable"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "POST",
+    headers,
+}).then(response => response.json());
+ +
+ + +
+

Example response (204):

+
+
+Empty response
+ 
+
+ + +
+

+ Request    + +    + +

+

+ POST + api/projects/{project_id}/servers/{server_id}/services/{service_id}/enable +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ project_id   +integer  +   + +
+

The ID of the project. Example: 1

+
+
+ server_id   +integer  +   + +
+

The ID of the server. Example: 6

+
+
+ service_id   +integer  +   + +
+

The ID of the service. Example: 22

+
+
+ +

disable

+ +

+

+ +

Disable service.

+ + +
Example request:
+ + +
+
curl --request POST \
+    "https://vito.test/api/projects/1/servers/6/services/22/disable" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://vito.test/api/projects/1/servers/6/services/22/disable"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "POST",
+    headers,
+}).then(response => response.json());
+ +
+ + +
+

Example response (204):

+
+
+Empty response
+ 
+
+ + +
+

+ Request    + +    + +

+

+ POST + api/projects/{project_id}/servers/{server_id}/services/{service_id}/disable +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ project_id   +integer  +   + +
+

The ID of the project. Example: 1

+
+
+ server_id   +integer  +   + +
+

The ID of the server. Example: 6

+
+
+ service_id   +integer  +   + +
+

The ID of the service. Example: 22

+
+
+ +

delete

+ +

+

+ +

Delete service.

+ + +
Example request:
+ + +
+
curl --request DELETE \
+    "https://vito.test/api/projects/1/servers/6/services/22" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://vito.test/api/projects/1/servers/6/services/22"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "DELETE",
+    headers,
+}).then(response => response.json());
+ +
+ + +
+

Example response (204):

+
+
+Empty response
+ 
+
+ + +
+

+ Request    + +    + +

+

+ DELETE + api/projects/{project_id}/servers/{server_id}/services/{service_id} +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ project_id   +integer  +   + +
+

The ID of the project. Example: 1

+
+
+ server_id   +integer  +   + +
+

The ID of the server. Example: 6

+
+
+ service_id   +integer  +   + +
+

The ID of the service. Example: 22

+
+
+ +

sites

+ + + +

list

+ +

+

+ +

Get all sites.

+ + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://vito.test/api/projects/1/servers/6/sites" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://vito.test/api/projects/1/servers/6/sites"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ +
+ + +
+

Example response (200):

+
+
+
+{
+    "data": [
+        {
+            "id": 15,
+            "server_id": 1,
+            "source_control_id": null,
+            "type": "laravel",
+            "type_data": null,
+            "features": [
+                "deployment",
+                "commands",
+                "env",
+                "ssl",
+                "workers"
+            ],
+            "domain": "test.com",
+            "aliases": null,
+            "web_directory": "/",
+            "path": "/home",
+            "php_version": "8.2",
+            "repository": null,
+            "branch": "main",
+            "status": "ready",
+            "status_color": "success",
+            "auto_deploy": false,
+            "port": null,
+            "user": "vito",
+            "url": "http://test.com",
+            "force_ssl": false,
+            "progress": 100,
+            "created_at": "2025-06-10T10:21:56.000000Z",
+            "updated_at": "2025-06-10T10:21:56.000000Z"
+        },
+        {
+            "id": 16,
+            "server_id": 1,
+            "source_control_id": null,
+            "type": "laravel",
+            "type_data": null,
+            "features": [
+                "deployment",
+                "commands",
+                "env",
+                "ssl",
+                "workers"
+            ],
+            "domain": "test.com",
+            "aliases": null,
+            "web_directory": "/",
+            "path": "/home",
+            "php_version": "8.2",
+            "repository": null,
+            "branch": "main",
+            "status": "ready",
+            "status_color": "success",
+            "auto_deploy": false,
+            "port": null,
+            "user": "vito",
+            "url": "http://test.com",
+            "force_ssl": false,
+            "progress": 100,
+            "created_at": "2025-06-10T10:21:56.000000Z",
+            "updated_at": "2025-06-10T10:21:56.000000Z"
+        }
+    ],
+    "links": {
+        "first": "/?page=1",
+        "last": "/?page=1",
+        "prev": null,
+        "next": null
+    },
+    "meta": {
+        "current_page": 1,
+        "from": 1,
+        "last_page": 1,
+        "links": [
+            {
+                "url": null,
+                "label": "&laquo; Previous",
+                "active": false
+            },
+            {
+                "url": "/?page=1",
+                "label": "1",
+                "active": true
+            },
+            {
+                "url": null,
+                "label": "Next &raquo;",
+                "active": false
+            }
+        ],
+        "path": "/",
+        "per_page": 25,
+        "to": 2,
+        "total": 2
+    }
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/projects/{project_id}/servers/{server_id}/sites +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ project_id   +integer  +   + +
+

The ID of the project. Example: 1

+
+
+ server_id   +integer  +   + +
+

The ID of the server. Example: 6

+
+
+ +

create

+ +

+

+ +

Create a new site.

+ + +
Example request:
+ + +
+
curl --request POST \
+    "https://vito.test/api/projects/1/servers/6/sites" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json" \
+    --data "{
+    \"type\": \"php-blank\",
+    \"domain\": \"architecto\",
+    \"aliases\": [
+        \"architecto\"
+    ],
+    \"php_version\": \"7.4\",
+    \"web_directory\": \"public\",
+    \"source_control\": \"architecto\",
+    \"repository\": \"organization\\/repository\",
+    \"branch\": \"main\",
+    \"composer\": true,
+    \"version\": \"5.2.1\",
+    \"user\": \"architecto\",
+    \"method\": \"round-robin\"
+}"
+
+ + +
+
const url = new URL(
+    "https://vito.test/api/projects/1/servers/6/sites"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+let body = {
+    "type": "php-blank",
+    "domain": "architecto",
+    "aliases": [
+        "architecto"
+    ],
+    "php_version": "7.4",
+    "web_directory": "public",
+    "source_control": "architecto",
+    "repository": "organization\/repository",
+    "branch": "main",
+    "composer": true,
+    "version": "5.2.1",
+    "user": "architecto",
+    "method": "round-robin"
+};
+
+fetch(url, {
+    method: "POST",
+    headers,
+    body: JSON.stringify(body),
+}).then(response => response.json());
+ +
+ + +
+

Example response (200):

+
+
+
+{
+    "id": 15,
+    "server_id": 1,
+    "source_control_id": null,
+    "type": "laravel",
+    "type_data": null,
+    "features": [
+        "deployment",
+        "commands",
+        "env",
+        "ssl",
+        "workers"
+    ],
+    "domain": "test.com",
+    "aliases": null,
+    "web_directory": "/",
+    "path": "/home",
+    "php_version": "8.2",
+    "repository": null,
+    "branch": "main",
+    "status": "ready",
+    "status_color": "success",
+    "auto_deploy": false,
+    "port": null,
+    "user": "vito",
+    "url": "http://test.com",
+    "force_ssl": false,
+    "progress": 100,
+    "created_at": "2025-06-10T10:21:56.000000Z",
+    "updated_at": "2025-06-10T10:21:56.000000Z"
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ POST + api/projects/{project_id}/servers/{server_id}/sites +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ project_id   +integer  +   + +
+

The ID of the project. Example: 1

+
+
+ server_id   +integer  +   + +
+

The ID of the server. Example: 6

+
+

Body Parameters

+
+ type   +string  +   + +
+

Example: php-blank

+Must be one of: +
  • php
  • php-blank
  • phpmyadmin
  • laravel
  • wordpress
  • load-balancer
+
+
+ domain   +string  +   + +
+

Example: architecto

+
+
+ aliases   +string[]  +   + + +
+ +
+
+ php_version   +string  +   + +
+

One of the installed PHP Versions Example: 7.4

+
+
+ web_directory   +string  +   + +
+

Required for PHP and Laravel sites Example: public

+
+
+ source_control   +string  +   + +
+

Source control ID, Required for Sites which support source control Example: architecto

+
+
+ repository   +string  +   + +
+

Repository, Required for Sites which support source control Example: organization/repository

+
+
+ branch   +string  +   + +
+

Branch, Required for Sites which support source control Example: main

+
+
+ composer   +boolean  +   + + +
+

Run composer if site supports composer Example: true

+
+
+ version   +string  +   + +
+

Version, if the site type requires a version like PHPMyAdmin Example: 5.2.1

+
+
+ user   +string  +   + +
+

user, to isolate the website under a new user Example: architecto

+
+
+ method   +string  +   + +
+

Load balancer method, Required if the site type is Load balancer Example: round-robin

+Must be one of: +
  • round-robin
  • least-connections
  • ip-hash
+
+
+ +

show

+ +

+

+ +

Get a site by ID.

+ + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://vito.test/api/projects/1/servers/6/sites/14" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://vito.test/api/projects/1/servers/6/sites/14"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ +
+ + +
+

Example response (200):

+
+
+
+{
+    "id": 15,
+    "server_id": 1,
+    "source_control_id": null,
+    "type": "laravel",
+    "type_data": null,
+    "features": [
+        "deployment",
+        "commands",
+        "env",
+        "ssl",
+        "workers"
+    ],
+    "domain": "test.com",
+    "aliases": null,
+    "web_directory": "/",
+    "path": "/home",
+    "php_version": "8.2",
+    "repository": null,
+    "branch": "main",
+    "status": "ready",
+    "status_color": "success",
+    "auto_deploy": false,
+    "port": null,
+    "user": "vito",
+    "url": "http://test.com",
+    "force_ssl": false,
+    "progress": 100,
+    "created_at": "2025-06-10T10:21:56.000000Z",
+    "updated_at": "2025-06-10T10:21:56.000000Z"
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/projects/{project_id}/servers/{server_id}/sites/{id} +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ project_id   +integer  +   + +
+

The ID of the project. Example: 1

+
+
+ server_id   +integer  +   + +
+

The ID of the server. Example: 6

+
+
+ id   +integer  +   + +
+

The ID of the site. Example: 14

+
+
+ +

delete

+ +

+

+ +

Delete site.

+ + +
Example request:
+ + +
+
curl --request DELETE \
+    "https://vito.test/api/projects/1/servers/6/sites/14" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://vito.test/api/projects/1/servers/6/sites/14"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "DELETE",
+    headers,
+}).then(response => response.json());
+ +
+ + +
+

Example response (204):

+
+
+Empty response
+ 
+
+ + +
+

+ Request    + +    + +

+

+ DELETE + api/projects/{project_id}/servers/{server_id}/sites/{site_id} +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ project_id   +integer  +   + +
+

The ID of the project. Example: 1

+
+
+ server_id   +integer  +   + +
+

The ID of the server. Example: 6

+
+
+ site_id   +integer  +   + +
+

The ID of the site. Example: 14

+
+
+ +

load-balancer

+ +

+

+ +

Update load balancer.

+ + +
Example request:
+ + +
+
curl --request POST \
+    "https://vito.test/api/projects/1/servers/6/sites/14/load-balancer" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json" \
+    --data "{
+    \"method\": \"round-robin\",
+    \"servers\": [
+        \"architecto\"
+    ]
+}"
+
+ + +
+
const url = new URL(
+    "https://vito.test/api/projects/1/servers/6/sites/14/load-balancer"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+let body = {
+    "method": "round-robin",
+    "servers": [
+        "architecto"
+    ]
+};
+
+fetch(url, {
+    method: "POST",
+    headers,
+    body: JSON.stringify(body),
+}).then(response => response.json());
+ +
+ + +
+

Example response (200):

+
+
+
+
+ 
+
+ + +
+

+ Request    + +    + +

+

+ POST + api/projects/{project_id}/servers/{server_id}/sites/{site_id}/load-balancer +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ project_id   +integer  +   + +
+

The ID of the project. Example: 1

+
+
+ server_id   +integer  +   + +
+

The ID of the server. Example: 6

+
+
+ site_id   +integer  +   + +
+

The ID of the site. Example: 14

+
+

Body Parameters

+
+ method   +string  +   + +
+

Load balancer method, Required if the site type is Load balancer Example: round-robin

+Must be one of: +
  • round-robin
  • least-connections
  • ip-hash
+
+
+ servers   +string[]  +   + + +
+

Array of servers including server, port, weight, backup. (server is the local IP of the server)

+
+
+ +

aliases

+ +

+

+ +

Update aliases.

+ + +
Example request:
+ + +
+
curl --request PUT \
+    "https://vito.test/api/projects/1/servers/6/sites/14/aliases" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json" \
+    --data "{
+    \"aliases\": [
+        \"architecto\"
+    ]
+}"
+
+ + +
+
const url = new URL(
+    "https://vito.test/api/projects/1/servers/6/sites/14/aliases"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+let body = {
+    "aliases": [
+        "architecto"
+    ]
+};
+
+fetch(url, {
+    method: "PUT",
+    headers,
+    body: JSON.stringify(body),
+}).then(response => response.json());
+ +
+ + +
+

Example response (200):

+
+
+
+
+ 
+
+ + +
+

+ Request    + +    + +

+

+ PUT + api/projects/{project_id}/servers/{server_id}/sites/{site_id}/aliases +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ project_id   +integer  +   + +
+

The ID of the project. Example: 1

+
+
+ server_id   +integer  +   + +
+

The ID of the server. Example: 6

+
+
+ site_id   +integer  +   + +
+

The ID of the site. Example: 14

+
+

Body Parameters

+
+ aliases   +string[]  +   + + +
+

Array of aliases

+
+
+ +

deploy

+ +

+

+ +

Run site deployment script

+ + +
Example request:
+ + +
+
curl --request POST \
+    "https://vito.test/api/projects/1/servers/6/sites/14/deploy" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://vito.test/api/projects/1/servers/6/sites/14/deploy"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "POST",
+    headers,
+}).then(response => response.json());
+ +
+ + +
+

Example response (200):

+
+
+
+
+ 
+
+ + +
+

+ Request    + +    + +

+

+ POST + api/projects/{project_id}/servers/{server_id}/sites/{site_id}/deploy +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ project_id   +integer  +   + +
+

The ID of the project. Example: 1

+
+
+ server_id   +integer  +   + +
+

The ID of the server. Example: 6

+
+
+ site_id   +integer  +   + +
+

The ID of the site. Example: 14

+
+
+ +

deployment-script

+ +

+

+ +

Update site deployment script

+ + +
Example request:
+ + +
+
curl --request PUT \
+    "https://vito.test/api/projects/1/servers/6/sites/14/deployment-script" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json" \
+    --data "{
+    \"script\": \"architecto\"
+}"
+
+ + +
+
const url = new URL(
+    "https://vito.test/api/projects/1/servers/6/sites/14/deployment-script"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+let body = {
+    "script": "architecto"
+};
+
+fetch(url, {
+    method: "PUT",
+    headers,
+    body: JSON.stringify(body),
+}).then(response => response.json());
+ +
+ + +
+

Example response (204):

+
+
+Empty response
+ 
+
+ + +
+

+ Request    + +    + +

+

+ PUT + api/projects/{project_id}/servers/{server_id}/sites/{site_id}/deployment-script +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ project_id   +integer  +   + +
+

The ID of the project. Example: 1

+
+
+ server_id   +integer  +   + +
+

The ID of the server. Example: 6

+
+
+ site_id   +integer  +   + +
+

The ID of the site. Example: 14

+
+

Body Parameters

+
+ script   +string  +   + +
+

Content of the deployment script Example: architecto

+
+
+ +

deployment-script

+ +

+

+ +

Get site deployment script content

+ + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://vito.test/api/projects/1/servers/6/sites/14/deployment-script" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://vito.test/api/projects/1/servers/6/sites/14/deployment-script"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ +
+ + +
+

Example response (200):

+
+
+
+
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/projects/{project_id}/servers/{server_id}/sites/{site_id}/deployment-script +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ project_id   +integer  +   + +
+

The ID of the project. Example: 1

+
+
+ server_id   +integer  +   + +
+

The ID of the server. Example: 6

+
+
+ site_id   +integer  +   + +
+

The ID of the site. Example: 14

+
+
+ +

env

+ +

+

+ +

Get site .env file content

+ + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://vito.test/api/projects/1/servers/6/sites/14/env" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://vito.test/api/projects/1/servers/6/sites/14/env"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ +
+ + +
+

Example response (200):

+
+
+
+{
+    "data": {
+        "env": "APP_NAME=Laravel\\nAPP_ENV=production"
+    }
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/projects/{project_id}/servers/{server_id}/sites/{site_id}/env +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ project_id   +integer  +   + +
+

The ID of the project. Example: 1

+
+
+ server_id   +integer  +   + +
+

The ID of the server. Example: 6

+
+
+ site_id   +integer  +   + +
+

The ID of the site. Example: 14

+
+
+ +

env

+ +

+

+ +

Update site .env file

+ + +
Example request:
+ + +
+
curl --request PUT \
+    "https://vito.test/api/projects/1/servers/6/sites/14/env" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json" \
+    --data "{
+    \"env\": \"architecto\"
+}"
+
+ + +
+
const url = new URL(
+    "https://vito.test/api/projects/1/servers/6/sites/14/env"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+let body = {
+    "env": "architecto"
+};
+
+fetch(url, {
+    method: "PUT",
+    headers,
+    body: JSON.stringify(body),
+}).then(response => response.json());
+ +
+ + +
+

Example response (200):

+
+
+
+
+ 
+
+ + +
+

+ Request    + +    + +

+

+ PUT + api/projects/{project_id}/servers/{server_id}/sites/{site_id}/env +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ project_id   +integer  +   + +
+

The ID of the project. Example: 1

+
+
+ server_id   +integer  +   + +
+

The ID of the server. Example: 6

+
+
+ site_id   +integer  +   + +
+

The ID of the site. Example: 14

+
+

Body Parameters

+
+ env   +string  +   + +
+

Content of the .env file Example: architecto

+
+
+ +

source-controls

+ + + +

list

+ +

+

+ + + + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://vito.test/api/projects/1/source-controls" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://vito.test/api/projects/1/source-controls"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ +
+ + +
+

Example response (200):

+
+
+
+{
+    "data": [
+        {
+            "id": 2,
+            "project_id": null,
+            "global": true,
+            "name": "Ms. Elisabeth Okuneva",
+            "provider": "github",
+            "created_at": "2025-06-10T10:21:56.000000Z",
+            "updated_at": "2025-06-10T10:21:56.000000Z"
+        },
+        {
+            "id": 3,
+            "project_id": null,
+            "global": true,
+            "name": "Aleen O'Kon",
+            "provider": "github",
+            "created_at": "2025-06-10T10:21:56.000000Z",
+            "updated_at": "2025-06-10T10:21:56.000000Z"
+        }
+    ],
+    "links": {
+        "first": "/?page=1",
+        "last": "/?page=1",
+        "prev": null,
+        "next": null
+    },
+    "meta": {
+        "current_page": 1,
+        "from": 1,
+        "last_page": 1,
+        "links": [
+            {
+                "url": null,
+                "label": "&laquo; Previous",
+                "active": false
+            },
+            {
+                "url": "/?page=1",
+                "label": "1",
+                "active": true
+            },
+            {
+                "url": null,
+                "label": "Next &raquo;",
+                "active": false
+            }
+        ],
+        "path": "/",
+        "per_page": 25,
+        "to": 2,
+        "total": 2
+    }
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/projects/{project_id}/source-controls +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ project_id   +integer  +   + +
+

The ID of the project. Example: 1

+
+
+ +

create

+ +

+

+ + + + +
Example request:
+ + +
+
curl --request POST \
+    "https://vito.test/api/projects/1/source-controls" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json" \
+    --data "{
+    \"provider\": \"gitlab\",
+    \"name\": \"architecto\",
+    \"token\": \"architecto\",
+    \"url\": \"http:\\/\\/www.bailey.biz\\/quos-velit-et-fugiat-sunt-nihil-accusantium-harum.html\",
+    \"username\": \"architecto\",
+    \"password\": \"|]|{+-\"
+}"
+
+ + +
+
const url = new URL(
+    "https://vito.test/api/projects/1/source-controls"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+let body = {
+    "provider": "gitlab",
+    "name": "architecto",
+    "token": "architecto",
+    "url": "http:\/\/www.bailey.biz\/quos-velit-et-fugiat-sunt-nihil-accusantium-harum.html",
+    "username": "architecto",
+    "password": "|]|{+-"
+};
+
+fetch(url, {
+    method: "POST",
+    headers,
+    body: JSON.stringify(body),
+}).then(response => response.json());
+ +
+ + +
+

Example response (200):

+
+
+
+{
+    "id": 2,
+    "project_id": null,
+    "global": true,
+    "name": "Mrs. Justina Gaylord",
+    "provider": "github",
+    "created_at": "2025-06-10T10:21:56.000000Z",
+    "updated_at": "2025-06-10T10:21:56.000000Z"
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ POST + api/projects/{project_id}/source-controls +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ project_id   +integer  +   + +
+

The ID of the project. Example: 1

+
+

Body Parameters

+
+ provider   +string  +   + +
+

The provider Example: gitlab

+Must be one of: +
  • gitlab
  • github
  • bitbucket
+
+
+ name   +string  +   + +
+

The name of the storage provider. Example: architecto

+
+
+ token   +string  +   + +
+

The token if provider requires api token Example: architecto

+
+
+ url   +string  +   + +
+

The URL if the provider is Gitlab and it is self-hosted Example: http://www.bailey.biz/quos-velit-et-fugiat-sunt-nihil-accusantium-harum.html

+
+
+ username   +string  +   + +
+

The username if the provider is Bitbucket Example: architecto

+
+
+ password   +string  +   + +
+

The password if the provider is Bitbucket Example: |]|{+-

+
+
+ +

show

+ +

+

+ + + + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://vito.test/api/projects/1/source-controls/1" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://vito.test/api/projects/1/source-controls/1"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ +
+ + +
+

Example response (200):

+
+
+
+{
+    "id": 2,
+    "project_id": null,
+    "global": true,
+    "name": "Misael Runte",
+    "provider": "github",
+    "created_at": "2025-06-10T10:21:56.000000Z",
+    "updated_at": "2025-06-10T10:21:56.000000Z"
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/projects/{project_id}/source-controls/{sourceControl_id} +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ project_id   +integer  +   + +
+

The ID of the project. Example: 1

+
+
+ sourceControl_id   +integer  +   + +
+

The ID of the sourceControl. Example: 1

+
+
+ +

update

+ +

+

+ + + + +
Example request:
+ + +
+
curl --request PUT \
+    "https://vito.test/api/projects/1/source-controls/1" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json" \
+    --data "{
+    \"name\": \"architecto\",
+    \"token\": \"architecto\",
+    \"url\": \"http:\\/\\/www.bailey.biz\\/quos-velit-et-fugiat-sunt-nihil-accusantium-harum.html\",
+    \"username\": \"architecto\",
+    \"password\": \"|]|{+-\",
+    \"global\": false
+}"
+
+ + +
+
const url = new URL(
+    "https://vito.test/api/projects/1/source-controls/1"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+let body = {
+    "name": "architecto",
+    "token": "architecto",
+    "url": "http:\/\/www.bailey.biz\/quos-velit-et-fugiat-sunt-nihil-accusantium-harum.html",
+    "username": "architecto",
+    "password": "|]|{+-",
+    "global": false
+};
+
+fetch(url, {
+    method: "PUT",
+    headers,
+    body: JSON.stringify(body),
+}).then(response => response.json());
+ +
+ + +
+

Example response (200):

+
+
+
+{
+    "id": 2,
+    "project_id": null,
+    "global": true,
+    "name": "Mrs. Justina Gaylord",
+    "provider": "github",
+    "created_at": "2025-06-10T10:21:56.000000Z",
+    "updated_at": "2025-06-10T10:21:56.000000Z"
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ PUT + api/projects/{project_id}/source-controls/{sourceControl_id} +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ project_id   +integer  +   + +
+

The ID of the project. Example: 1

+
+
+ sourceControl_id   +integer  +   + +
+

The ID of the sourceControl. Example: 1

+
+

Body Parameters

+
+ name   +string  +   + +
+

The name of the storage provider. Example: architecto

+
+
+ token   +string  +   + +
+

The token if provider requires api token Example: architecto

+
+
+ url   +string  +   + +
+

The URL if the provider is Gitlab and it is self-hosted Example: http://www.bailey.biz/quos-velit-et-fugiat-sunt-nihil-accusantium-harum.html

+
+
+ username   +string  +   + +
+

The username if the provider is Bitbucket Example: architecto

+
+
+ password   +string  +   + +
+

The password if the provider is Bitbucket Example: |]|{+-

+
+
+ global   +string  +   + +
+

Accessible in all projects Example: false

+Must be one of: +
  • 1
+
+
+ +

delete

+ +

+

+ + + + +
Example request:
+ + +
+
curl --request DELETE \
+    "https://vito.test/api/projects/1/source-controls/1" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://vito.test/api/projects/1/source-controls/1"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "DELETE",
+    headers,
+}).then(response => response.json());
+ +
+ + +
+

Example response (204):

+
+
+Empty response
+ 
+
+ + +
+

+ Request    + +    + +

+

+ DELETE + api/projects/{project_id}/source-controls/{sourceControl_id} +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ project_id   +integer  +   + +
+

The ID of the project. Example: 1

+
+
+ sourceControl_id   +integer  +   + +
+

The ID of the sourceControl. Example: 1

+
+
+ +

ssh-keys

+ + + +

list

+ +

+

+ +

Get all ssh keys.

+ + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://vito.test/api/projects/1/servers/6/ssh-keys" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://vito.test/api/projects/1/servers/6/ssh-keys"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ +
+ + +
+

Example response (200):

+
+
+
+{
+    "data": [
+        {
+            "id": 3,
+            "name": "Haven Romaguera",
+            "created_at": "2025-06-10T10:21:56.000000Z",
+            "updated_at": "2025-06-10T10:21:56.000000Z"
+        },
+        {
+            "id": 4,
+            "name": "Viva Marquardt",
+            "created_at": "2025-06-10T10:21:56.000000Z",
+            "updated_at": "2025-06-10T10:21:56.000000Z"
+        }
+    ],
+    "links": {
+        "first": "/?page=1",
+        "last": "/?page=1",
+        "prev": null,
+        "next": null
+    },
+    "meta": {
+        "current_page": 1,
+        "from": 1,
+        "last_page": 1,
+        "links": [
+            {
+                "url": null,
+                "label": "&laquo; Previous",
+                "active": false
+            },
+            {
+                "url": "/?page=1",
+                "label": "1",
+                "active": true
+            },
+            {
+                "url": null,
+                "label": "Next &raquo;",
+                "active": false
+            }
+        ],
+        "path": "/",
+        "per_page": 25,
+        "to": 2,
+        "total": 2
+    }
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/projects/{project_id}/servers/{server_id}/ssh-keys +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ project_id   +integer  +   + +
+

The ID of the project. Example: 1

+
+
+ server_id   +integer  +   + +
+

The ID of the server. Example: 6

+
+
+ +

create

+ +

+

+ +

Deploy ssh key to server.

+ + +
Example request:
+ + +
+
curl --request POST \
+    "https://vito.test/api/projects/1/servers/6/ssh-keys" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json" \
+    --data "{
+    \"key_id\": \"architecto\",
+    \"name\": \"architecto\",
+    \"public_key\": \"architecto\"
+}"
+
+ + +
+
const url = new URL(
+    "https://vito.test/api/projects/1/servers/6/ssh-keys"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+let body = {
+    "key_id": "architecto",
+    "name": "architecto",
+    "public_key": "architecto"
+};
+
+fetch(url, {
+    method: "POST",
+    headers,
+    body: JSON.stringify(body),
+}).then(response => response.json());
+ +
+ + +
+

Example response (200):

+
+
+
+{
+    "id": 3,
+    "name": "Ms. Elisabeth Okuneva",
+    "created_at": "2025-06-10T10:21:56.000000Z",
+    "updated_at": "2025-06-10T10:21:56.000000Z"
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ POST + api/projects/{project_id}/servers/{server_id}/ssh-keys +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ project_id   +integer  +   + +
+

The ID of the project. Example: 1

+
+
+ server_id   +integer  +   + +
+

The ID of the server. Example: 6

+
+

Body Parameters

+
+ key_id   +string  +   + +
+

The ID of the key. Example: architecto

+
+
+ name   +string  +   + +
+

Key name, required if key_id is not provided. Example: architecto

+
+
+ public_key   +string  +   + +
+

Public Key, required if key_id is not provided. Example: architecto

+
+
+ +

delete

+ +

+

+ +

Delete ssh key from server.

+ + +
Example request:
+ + +
+
curl --request DELETE \
+    "https://vito.test/api/projects/1/servers/6/ssh-keys/1" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://vito.test/api/projects/1/servers/6/ssh-keys/1"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "DELETE",
+    headers,
+}).then(response => response.json());
+ +
+ + +
+

Example response (204):

+
+
+Empty response
+ 
+
+ + +
+

+ Request    + +    + +

+

+ DELETE + api/projects/{project_id}/servers/{server_id}/ssh-keys/{sshKey_id} +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ project_id   +integer  +   + +
+

The ID of the project. Example: 1

+
+
+ server_id   +integer  +   + +
+

The ID of the server. Example: 6

+
+
+ sshKey_id   +integer  +   + +
+

The ID of the sshKey. Example: 1

+
+
+ +

storage-providers

+ + + +

list

+ +

+

+ + + + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://vito.test/api/projects/1/storage-providers" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://vito.test/api/projects/1/storage-providers"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ +
+ + +
+

Example response (200):

+
+
+
+{
+    "data": [
+        {
+            "id": 4,
+            "project_id": null,
+            "global": true,
+            "name": "harum",
+            "provider": "local",
+            "created_at": "2025-06-10T10:21:56.000000Z",
+            "updated_at": "2025-06-10T10:21:56.000000Z"
+        },
+        {
+            "id": 5,
+            "project_id": null,
+            "global": true,
+            "name": "commodi",
+            "provider": "local",
+            "created_at": "2025-06-10T10:21:56.000000Z",
+            "updated_at": "2025-06-10T10:21:56.000000Z"
+        }
+    ],
+    "links": {
+        "first": "/?page=1",
+        "last": "/?page=1",
+        "prev": null,
+        "next": null
+    },
+    "meta": {
+        "current_page": 1,
+        "from": 1,
+        "last_page": 1,
+        "links": [
+            {
+                "url": null,
+                "label": "&laquo; Previous",
+                "active": false
+            },
+            {
+                "url": "/?page=1",
+                "label": "1",
+                "active": true
+            },
+            {
+                "url": null,
+                "label": "Next &raquo;",
+                "active": false
+            }
+        ],
+        "path": "/",
+        "per_page": 25,
+        "to": 2,
+        "total": 2
+    }
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/projects/{project_id}/storage-providers +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ project_id   +integer  +   + +
+

The ID of the project. Example: 1

+
+
+ +

create

+ +

+

+ + + + +
Example request:
+ + +
+
curl --request POST \
+    "https://vito.test/api/projects/1/storage-providers" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json" \
+    --data "{
+    \"provider\": \"architecto\",
+    \"name\": \"architecto\",
+    \"token\": \"architecto\",
+    \"key\": \"architecto\",
+    \"secret\": \"architecto\"
+}"
+
+ + +
+
const url = new URL(
+    "https://vito.test/api/projects/1/storage-providers"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+let body = {
+    "provider": "architecto",
+    "name": "architecto",
+    "token": "architecto",
+    "key": "architecto",
+    "secret": "architecto"
+};
+
+fetch(url, {
+    method: "POST",
+    headers,
+    body: JSON.stringify(body),
+}).then(response => response.json());
+ +
+ + +
+

Example response (200):

+
+
+
+{
+    "id": 4,
+    "project_id": null,
+    "global": true,
+    "name": "eius",
+    "provider": "local",
+    "created_at": "2025-06-10T10:21:56.000000Z",
+    "updated_at": "2025-06-10T10:21:56.000000Z"
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ POST + api/projects/{project_id}/storage-providers +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ project_id   +integer  +   + +
+

The ID of the project. Example: 1

+
+

Body Parameters

+
+ provider   +string  +   + +
+

The provider (aws, linode, hetzner, digitalocean, vultr, ...) Example: architecto

+
+
+ name   +string  +   + +
+

The name of the storage provider. Example: architecto

+
+
+ token   +string  +   + +
+

The token if provider requires api token Example: architecto

+
+
+ key   +string  +   + +
+

The key if provider requires key Example: architecto

+
+
+ secret   +string  +   + +
+

The secret if provider requires key Example: architecto

+
+
+ +

show

+ +

+

+ + + + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://vito.test/api/projects/1/storage-providers/1" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://vito.test/api/projects/1/storage-providers/1"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ +
+ + +
+

Example response (200):

+
+
+
+{
+    "id": 4,
+    "project_id": null,
+    "global": true,
+    "name": "et",
+    "provider": "dropbox",
+    "created_at": "2025-06-10T10:21:56.000000Z",
+    "updated_at": "2025-06-10T10:21:56.000000Z"
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/projects/{project_id}/storage-providers/{storageProvider_id} +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ project_id   +integer  +   + +
+

The ID of the project. Example: 1

+
+
+ storageProvider_id   +integer  +   + +
+

The ID of the storageProvider. Example: 1

+
+
+ +

update

+ +

+

+ + + + +
Example request:
+ + +
+
curl --request PUT \
+    "https://vito.test/api/projects/1/storage-providers/1" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json" \
+    --data "{
+    \"name\": \"architecto\",
+    \"global\": true
+}"
+
+ + +
+
const url = new URL(
+    "https://vito.test/api/projects/1/storage-providers/1"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+let body = {
+    "name": "architecto",
+    "global": true
+};
+
+fetch(url, {
+    method: "PUT",
+    headers,
+    body: JSON.stringify(body),
+}).then(response => response.json());
+ +
+ + +
+

Example response (200):

+
+
+
+{
+    "id": 4,
+    "project_id": null,
+    "global": true,
+    "name": "eius",
+    "provider": "local",
+    "created_at": "2025-06-10T10:21:56.000000Z",
+    "updated_at": "2025-06-10T10:21:56.000000Z"
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ PUT + api/projects/{project_id}/storage-providers/{storageProvider_id} +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ project_id   +integer  +   + +
+

The ID of the project. Example: 1

+
+
+ storageProvider_id   +integer  +   + +
+

The ID of the storageProvider. Example: 1

+
+

Body Parameters

+
+ name   +string  +   + +
+

The name of the storage provider. Example: architecto

+
+
+ global   +string  +   + +
+

Accessible in all projects Example: true

+Must be one of: +
  • 1
+
+
+ +

delete

+ +

+

+ + + + +
Example request:
+ + +
+
curl --request DELETE \
+    "https://vito.test/api/projects/1/storage-providers/1" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://vito.test/api/projects/1/storage-providers/1"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "DELETE",
+    headers,
+}).then(response => response.json());
+ +
+ + +
+

Example response (204):

+
+
+Empty response
+ 
+
+ + +
+

+ Request    + +    + +

+

+ DELETE + api/projects/{project_id}/storage-providers/{storageProvider_id} +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ project_id   +integer  +   + +
+

The ID of the project. Example: 1

+
+
+ storageProvider_id   +integer  +   + +
+

The ID of the storageProvider. Example: 1

+
+
+ + + + +
+
+
+ + +
+
+
+ + diff --git a/public/api-docs/js/theme-default-5.2.1.js b/public/api-docs/js/theme-default-5.2.1.js new file mode 100644 index 00000000..31c84514 --- /dev/null +++ b/public/api-docs/js/theme-default-5.2.1.js @@ -0,0 +1,149 @@ +document.addEventListener('DOMContentLoaded', function() { + const updateHash = function (id) { + window.location.hash = `#${id}`; + }; + + const navButton = document.getElementById('nav-button'); + const menuWrapper = document.querySelector('.tocify-wrapper'); + function toggleSidebar(event) { + event.preventDefault(); + if (menuWrapper) { + menuWrapper.classList.toggle('open'); + navButton.classList.toggle('open'); + } + } + function closeSidebar() { + if (menuWrapper) { + menuWrapper.classList.remove('open'); + navButton.classList.remove('open'); + } + } + navButton.addEventListener('click', toggleSidebar); + + window.hljs.highlightAll(); + + const wrapper = document.getElementById('toc'); + // https://jets.js.org/ + window.jets = new window.Jets({ + // *OR - Selects elements whose values contains at least one part of search substring + searchSelector: '*OR', + searchTag: '#input-search', + contentTag: '#toc li', + didSearch: function(term) { + wrapper.classList.toggle('jets-searching', String(term).length > 0) + }, + // map these accent keys to plain values + diacriticsMap: { + a: 'ÀÁÂÃÄÅàáâãäåĀāąĄ', + c: 'ÇçćĆčČ', + d: 'đĐďĎ', + e: 'ÈÉÊËèéêëěĚĒēęĘ', + i: 'ÌÍÎÏìíîïĪī', + l: 'łŁ', + n: 'ÑñňŇńŃ', + o: 'ÒÓÔÕÕÖØòóôõöøŌō', + r: 'řŘ', + s: 'ŠšśŚ', + t: 'ťŤ', + u: 'ÙÚÛÜùúûüůŮŪū', + y: 'ŸÿýÝ', + z: 'ŽžżŻźŹ' + } + }); + + function hashChange() { + const currentItems = document.querySelectorAll('.tocify-subheader.visible, .tocify-item.tocify-focus'); + Array.from(currentItems).forEach((elem) => { + elem.classList.remove('visible', 'tocify-focus'); + }); + + const currentTag = document.querySelector(`a[href="${window.location.hash}"]`); + if (currentTag) { + const parent = currentTag.closest('.tocify-subheader'); + if (parent) { + parent.classList.add('visible'); + } + + const siblings = currentTag.closest('.tocify-header'); + if (siblings) { + Array.from(siblings.querySelectorAll('.tocify-subheader')).forEach((elem) => { + elem.classList.add('visible'); + }); + } + + currentTag.parentElement.classList.add('tocify-focus'); + + // wait for dom changes to be done + setTimeout(() => { + currentTag.scrollIntoView({ behavior: 'smooth', block: 'center', inline: 'center' }); + // only close the sidebar on level-2 events + if (currentTag.parentElement.classList.contains('level-2')) { + closeSidebar(); + } + }, 1500); + } + } + + let languages = JSON.parse(document.body.getAttribute('data-languages')); + // Support a key => value object where the key is the name, or an array of strings where the value is the name + if (!Array.isArray(languages)) { + languages = Object.values(languages); + } + // if there is no language use the first one + const currentLanguage = window.localStorage.getItem('language') || languages[0]; + const languageStyle = document.getElementById('language-style'); + const langSelector = document.querySelectorAll('.lang-selector button.lang-button'); + + function setActiveLanguage(newLanguage) { + window.localStorage.setItem('language', newLanguage); + if (!languageStyle) { + return; + } + + const newStyle = languages.map((language) => { + return language === newLanguage + // the current one should be visible + ? `body .content .${language}-example pre { display: block; }` + // the inactive one should be hidden + : `body .content .${language}-example pre { display: none; }`; + }).join(`\n`); + + Array.from(langSelector).forEach((elem) => { + elem.classList.toggle('active', elem.getAttribute('data-language-name') === newLanguage); + }); + + const activeHash = window.location.hash.slice(1); + + languageStyle.innerHTML = newStyle; + + setTimeout(() => { + updateHash(activeHash); + }, 200); + } + + setActiveLanguage(currentLanguage); + + Array.from(langSelector).forEach((elem) => { + elem.addEventListener('click', () => { + const newLanguage = elem.getAttribute('data-language-name'); + setActiveLanguage(newLanguage); + }); + }); + + window.addEventListener('hashchange', hashChange, false); + + const divs = document.querySelectorAll('.content h1[id], .content h2[id]'); + + document.addEventListener('scroll', () => { + divs.forEach(item => { + const rect = item.getBoundingClientRect(); + if (rect.top > 0 && rect.top < 150) { + const location = window.location.toString().split('#')[0]; + history.replaceState(null, null, location + '#' + item.id); + hashChange(); + } + }); + }); + + hashChange(); +}); diff --git a/public/api-docs/js/tryitout-5.2.1.js b/public/api-docs/js/tryitout-5.2.1.js new file mode 100644 index 00000000..2a1d2b8a --- /dev/null +++ b/public/api-docs/js/tryitout-5.2.1.js @@ -0,0 +1,289 @@ +window.abortControllers = {}; + +function cacheAuthValue() { + // Whenever the auth header is set for one endpoint, cache it for the others + window.lastAuthValue = ''; + let authInputs = document.querySelectorAll(`.auth-value`) + authInputs.forEach(el => { + el.addEventListener('input', (event) => { + window.lastAuthValue = event.target.value; + authInputs.forEach(otherInput => { + if (otherInput === el) return; + // Don't block the main thread + setTimeout(() => { + otherInput.value = window.lastAuthValue; + }, 0); + }); + }); + }); +} + +window.addEventListener('DOMContentLoaded', cacheAuthValue); + +function getCookie(name) { + if (!document.cookie) { + return null; + } + + const cookies = document.cookie.split(';') + .map(c => c.trim()) + .filter(c => c.startsWith(name + '=')); + + if (cookies.length === 0) { + return null; + } + + return decodeURIComponent(cookies[0].split('=')[1]); +} + +function tryItOut(endpointId) { + document.querySelector(`#btn-tryout-${endpointId}`).hidden = true; + document.querySelector(`#btn-canceltryout-${endpointId}`).hidden = false; + const executeBtn = document.querySelector(`#btn-executetryout-${endpointId}`).hidden = false; + executeBtn.disabled = false; + + // Show all input fields + document.querySelectorAll(`input[data-endpoint=${endpointId}],label[data-endpoint=${endpointId}]`) + .forEach(el => el.style.display = 'block'); + + if (document.querySelector(`#form-${endpointId}`).dataset.authed === "1") { + const authElement = document.querySelector(`#auth-${endpointId}`); + authElement && (authElement.hidden = false); + } + // Expand all nested fields + document.querySelectorAll(`#form-${endpointId} details`) + .forEach(el => el.open = true); +} + +function cancelTryOut(endpointId) { + if (window.abortControllers[endpointId]) { + window.abortControllers[endpointId].abort(); + delete window.abortControllers[endpointId]; + } + + document.querySelector(`#btn-tryout-${endpointId}`).hidden = false; + const executeBtn = document.querySelector(`#btn-executetryout-${endpointId}`); + executeBtn.hidden = true; + executeBtn.textContent = executeBtn.dataset.initialText; + document.querySelector(`#btn-canceltryout-${endpointId}`).hidden = true; + // Hide inputs + document.querySelectorAll(`input[data-endpoint=${endpointId}],label[data-endpoint=${endpointId}]`) + .forEach(el => el.style.display = 'none'); + document.querySelectorAll(`#form-${endpointId} details`) + .forEach(el => el.open = false); + const authElement = document.querySelector(`#auth-${endpointId}`); + authElement && (authElement.hidden = true); + + document.querySelector('#execution-results-' + endpointId).hidden = true; + document.querySelector('#execution-error-' + endpointId).hidden = true; + + // Revert to sample code blocks + document.querySelector('#example-requests-' + endpointId).hidden = false; + document.querySelector('#example-responses-' + endpointId).hidden = false; +} + +function makeAPICall(method, path, body = {}, query = {}, headers = {}, endpointId = null) { + console.log({endpointId, path, body, query, headers}); + + if (!(body instanceof FormData) && typeof body !== "string") { + body = JSON.stringify(body) + } + + const url = new URL(window.tryItOutBaseUrl + '/' + path.replace(/^\//, '')); + + // We need this function because if you try to set an array or object directly to a URLSearchParams object, + // you'll get [object Object] or the array.toString() + function addItemToSearchParamsObject(key, value, searchParams) { + if (Array.isArray(value)) { + value.forEach((v, i) => { + // Append {filters: [first, second]} as filters[0]=first&filters[1]second + addItemToSearchParamsObject(key + '[' + i + ']', v, searchParams); + }) + } else if (typeof value === 'object' && value !== null) { + Object.keys(value).forEach((i) => { + // Append {filters: {name: first}} as filters[name]=first + addItemToSearchParamsObject(key + '[' + i + ']', value[i], searchParams); + }); + } else { + searchParams.append(key, value); + } + } + + Object.keys(query) + .forEach(key => addItemToSearchParamsObject(key, query[key], url.searchParams)); + + window.abortControllers[endpointId] = new AbortController(); + + return fetch(url, { + method, + headers, + body: method === 'GET' ? undefined : body, + signal: window.abortControllers[endpointId].signal, + referrer: window.tryItOutBaseUrl, + mode: 'cors', + credentials: 'same-origin', + }) + .then(response => Promise.all([response.status, response.statusText, response.text(), response.headers])); +} + +function hideCodeSamples(endpointId) { + document.querySelector('#example-requests-' + endpointId).hidden = true; + document.querySelector('#example-responses-' + endpointId).hidden = true; +} + +function handleResponse(endpointId, response, status, headers) { + hideCodeSamples(endpointId); + + // Hide error views + document.querySelector('#execution-error-' + endpointId).hidden = true; + + const responseContentEl = document.querySelector('#execution-response-content-' + endpointId); + + // Check if the response contains Laravel's dd() default dump output + const isLaravelDump = response.includes('Sfdump'); + + // If it's a Laravel dd() dump, use innerHTML to render it safely + if (isLaravelDump) { + responseContentEl.innerHTML = response === '' ? responseContentEl.dataset.emptyResponseText : response; + } else { + // Otherwise, stick to textContent for regular responses + responseContentEl.textContent = response === '' ? responseContentEl.dataset.emptyResponseText : response; + } + + // Prettify it if it's JSON + let isJson = false; + try { + const jsonParsed = JSON.parse(response); + if (jsonParsed !== null) { + isJson = true; + response = JSON.stringify(jsonParsed, null, 4); + responseContentEl.textContent = response; + } + } catch (e) { + + } + + isJson && window.hljs.highlightElement(responseContentEl); + const statusEl = document.querySelector('#execution-response-status-' + endpointId); + statusEl.textContent = ` (${status})`; + document.querySelector('#execution-results-' + endpointId).hidden = false; + statusEl.scrollIntoView({behavior: "smooth", block: "center"}); +} + +function handleError(endpointId, err) { + hideCodeSamples(endpointId); + // Hide response views + document.querySelector('#execution-results-' + endpointId).hidden = true; + + // Show error views + let errorMessage = err.message || err; + const $errorMessageEl = document.querySelector('#execution-error-message-' + endpointId); + $errorMessageEl.textContent = errorMessage + $errorMessageEl.textContent; + const errorEl = document.querySelector('#execution-error-' + endpointId); + errorEl.hidden = false; + errorEl.scrollIntoView({behavior: "smooth", block: "center"}); + +} + +async function executeTryOut(endpointId, form) { + const executeBtn = document.querySelector(`#btn-executetryout-${endpointId}`); + executeBtn.textContent = executeBtn.dataset.loadingText; + executeBtn.disabled = true; + executeBtn.scrollIntoView({behavior: "smooth", block: "center"}); + + let body; + let setter; + if (form.dataset.hasfiles === "1") { + body = new FormData(); + setter = (name, value) => body.append(name, value); + } else if (form.dataset.isarraybody === "1") { + body = []; + setter = (name, value) => _.set(body, name, value); + } else { + body = {}; + setter = (name, value) => _.set(body, name, value); + } + const bodyParameters = form.querySelectorAll('input[data-component=body]'); + bodyParameters.forEach(el => { + let value = el.value; + + if (el.type === 'number' && typeof value === 'string') { + value = parseFloat(value); + } + + if (el.type === 'file' && el.files[0]) { + setter(el.name, el.files[0]); + return; + } + + if (el.type !== 'radio') { + if (value === "" && el.required === false) { + // Don't include empty optional values in the request + return; + } + setter(el.name, value); + return; + } + + if (el.checked) { + value = (value === 'false') ? false : true; + setter(el.name, value); + } + }); + + const query = {}; + const queryParameters = form.querySelectorAll('input[data-component=query]'); + queryParameters.forEach(el => { + if (el.type !== 'radio' || (el.type === 'radio' && el.checked)) { + if (el.value === '') { + // Don't include empty values in the request + return; + } + + _.set(query, el.name, el.value); + } + }); + + let path = form.dataset.path; + const urlParameters = form.querySelectorAll('input[data-component=url]'); + urlParameters.forEach(el => (path = path.replace(new RegExp(`\\{${el.name}\\??}`), el.value))); + + const headers = Object.fromEntries(Array.from(form.querySelectorAll('input[data-component=header]')) + .map(el => [el.name, el.value])); + + // When using FormData, the browser sets the correct content-type + boundary + let method = form.dataset.method; + if (body instanceof FormData) { + delete headers['Content-Type']; + + // When using FormData with PUT or PATCH, use method spoofing so PHP can access the post body + if (['PUT', 'PATCH'].includes(form.dataset.method)) { + method = 'POST'; + setter('_method', form.dataset.method); + } + } + + let preflightPromise = Promise.resolve(); + if (window.useCsrf && window.csrfUrl) { + preflightPromise = makeAPICall('GET', window.csrfUrl).then(() => { + headers['X-XSRF-TOKEN'] = getCookie('XSRF-TOKEN'); + }); + } + + return preflightPromise.then(() => makeAPICall(method, path, body, query, headers, endpointId)) + .then(([responseStatus, statusText, responseContent, responseHeaders]) => { + handleResponse(endpointId, responseContent, responseStatus, responseHeaders) + }) + .catch(err => { + if (err.name === "AbortError") { + console.log("Request cancelled"); + return; + } + console.log("Error while making request: ", err); + handleError(endpointId, err); + }) + .finally(() => { + executeBtn.disabled = false; + executeBtn.textContent = executeBtn.dataset.initialText; + }); +} diff --git a/public/api-docs/openapi.yaml b/public/api-docs/openapi.yaml new file mode 100644 index 00000000..e2267416 --- /dev/null +++ b/public/api-docs/openapi.yaml @@ -0,0 +1,6321 @@ +openapi: 3.0.3 +info: + title: 'API Documentation' + description: "VitoDeploy's API documentation." + version: 1.0.0 +servers: + - + url: 'https://vito.test' +tags: + - + name: Endpoints + description: '' + - + name: cron-jobs + description: '' + - + name: database-users + description: '' + - + name: databases + description: '' + - + name: firewall-rules + description: '' + - + name: general + description: '' + - + name: projects + description: '' + - + name: redirects + description: '' + - + name: server-providers + description: '' + - + name: servers + description: '' + - + name: services + description: '' + - + name: sites + description: '' + - + name: source-controls + description: '' + - + name: ssh-keys + description: '' + - + name: storage-providers + description: '' +paths: + '/api/servers/{server_id}/agent/{id}': + post: + summary: '' + operationId: postApiServersServer_idAgentId + description: '' + parameters: [] + responses: { } + tags: + - Endpoints + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + load: + type: number + description: '' + example: 4326.41688 + nullable: false + memory_total: + type: number + description: '' + example: 4326.41688 + nullable: false + memory_used: + type: number + description: '' + example: 4326.41688 + nullable: false + memory_free: + type: number + description: '' + example: 4326.41688 + nullable: false + disk_total: + type: number + description: '' + example: 4326.41688 + nullable: false + disk_used: + type: number + description: '' + example: 4326.41688 + nullable: false + disk_free: + type: number + description: '' + example: 4326.41688 + nullable: false + required: + - load + - memory_total + - memory_used + - memory_free + - disk_total + - disk_used + - disk_free + security: [] + parameters: + - + in: path + name: server_id + description: 'The ID of the server.' + example: 6 + required: true + schema: + type: integer + - + in: path + name: id + description: 'The ID of the agent.' + example: architecto + required: true + schema: + type: string + /api/git-hooks: + get: + summary: '' + operationId: getApiGitHooks + description: '' + parameters: [] + responses: + 404: + description: '' + content: + application/json: + schema: + type: object + example: + message: '' + properties: + message: + type: string + example: '' + tags: + - Endpoints + security: [] + '/api/projects/{project_id}/servers/{server_id}/cron-jobs': + get: + summary: list + operationId: list + description: 'Get all cron jobs.' + parameters: [] + responses: + 200: + description: '' + content: + application/json: + schema: + type: object + example: + data: + - + id: 3 + server_id: 1 + command: 'ls -la' + user: root + frequency: '* * * * *' + status: ready + status_color: success + created_at: '2025-06-10T10:21:56.000000Z' + updated_at: '2025-06-10T10:21:56.000000Z' + - + id: 4 + server_id: 1 + command: 'ls -la' + user: root + frequency: '* * * * *' + status: ready + status_color: success + created_at: '2025-06-10T10:21:56.000000Z' + updated_at: '2025-06-10T10:21:56.000000Z' + links: + first: '/?page=1' + last: '/?page=1' + prev: null + next: null + meta: + current_page: 1 + from: 1 + last_page: 1 + links: + - + url: null + label: '« Previous' + active: false + - + url: '/?page=1' + label: '1' + active: true + - + url: null + label: 'Next »' + active: false + path: / + per_page: 25 + to: 2 + total: 2 + properties: + data: + type: array + example: + - + id: 3 + server_id: 1 + command: 'ls -la' + user: root + frequency: '* * * * *' + status: ready + status_color: success + created_at: '2025-06-10T10:21:56.000000Z' + updated_at: '2025-06-10T10:21:56.000000Z' + - + id: 4 + server_id: 1 + command: 'ls -la' + user: root + frequency: '* * * * *' + status: ready + status_color: success + created_at: '2025-06-10T10:21:56.000000Z' + updated_at: '2025-06-10T10:21:56.000000Z' + items: + type: object + properties: + id: + type: integer + example: 3 + server_id: + type: integer + example: 1 + command: + type: string + example: 'ls -la' + user: + type: string + example: root + frequency: + type: string + example: '* * * * *' + status: + type: string + example: ready + status_color: + type: string + example: success + created_at: + type: string + example: '2025-06-10T10:21:56.000000Z' + updated_at: + type: string + example: '2025-06-10T10:21:56.000000Z' + links: + type: object + properties: + first: + type: string + example: '/?page=1' + last: + type: string + example: '/?page=1' + prev: + type: string + example: null + next: + type: string + example: null + meta: + type: object + properties: + current_page: + type: integer + example: 1 + from: + type: integer + example: 1 + last_page: + type: integer + example: 1 + links: + type: array + example: + - + url: null + label: '« Previous' + active: false + - + url: '/?page=1' + label: '1' + active: true + - + url: null + label: 'Next »' + active: false + items: + type: object + properties: + url: + type: string + example: null + label: + type: string + example: '« Previous' + active: + type: boolean + example: false + path: + type: string + example: / + per_page: + type: integer + example: 25 + to: + type: integer + example: 2 + total: + type: integer + example: 2 + tags: + - cron-jobs + security: [] + post: + summary: create + operationId: create + description: 'Create a new cron job.' + parameters: [] + responses: + 200: + description: '' + content: + application/json: + schema: + type: object + example: + id: 3 + server_id: 1 + command: 'ls -la' + user: root + frequency: '* * * * *' + status: ready + status_color: success + created_at: '2025-06-10T10:21:56.000000Z' + updated_at: '2025-06-10T10:21:56.000000Z' + properties: + id: + type: integer + example: 3 + server_id: + type: integer + example: 1 + command: + type: string + example: 'ls -la' + user: + type: string + example: root + frequency: + type: string + example: '* * * * *' + status: + type: string + example: ready + status_color: + type: string + example: success + created_at: + type: string + example: '2025-06-10T10:21:56.000000Z' + updated_at: + type: string + example: '2025-06-10T10:21:56.000000Z' + tags: + - cron-jobs + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + command: + type: string + description: '' + example: architecto + nullable: false + user: + type: string + description: '' + example: vito + nullable: false + enum: + - root + - vito + frequency: + type: string + description: 'Frequency of the cron job.' + example: '* * * * *' + nullable: false + required: + - command + - user + - frequency + security: [] + parameters: + - + in: path + name: project_id + description: 'The ID of the project.' + example: 1 + required: true + schema: + type: integer + - + in: path + name: server_id + description: 'The ID of the server.' + example: 6 + required: true + schema: + type: integer + '/api/projects/{project_id}/servers/{server_id}/cron-jobs/{cronJob_id}': + get: + summary: show + operationId: show + description: 'Get a cron job by ID.' + parameters: [] + responses: + 200: + description: '' + content: + application/json: + schema: + type: object + example: + id: 3 + server_id: 1 + command: 'ls -la' + user: root + frequency: '* * * * *' + status: ready + status_color: success + created_at: '2025-06-10T10:21:56.000000Z' + updated_at: '2025-06-10T10:21:56.000000Z' + properties: + id: + type: integer + example: 3 + server_id: + type: integer + example: 1 + command: + type: string + example: 'ls -la' + user: + type: string + example: root + frequency: + type: string + example: '* * * * *' + status: + type: string + example: ready + status_color: + type: string + example: success + created_at: + type: string + example: '2025-06-10T10:21:56.000000Z' + updated_at: + type: string + example: '2025-06-10T10:21:56.000000Z' + tags: + - cron-jobs + security: [] + delete: + summary: delete + operationId: delete + description: 'Delete cron job.' + parameters: [] + responses: + 204: + description: '' + tags: + - cron-jobs + security: [] + parameters: + - + in: path + name: project_id + description: 'The ID of the project.' + example: 1 + required: true + schema: + type: integer + - + in: path + name: server_id + description: 'The ID of the server.' + example: 6 + required: true + schema: + type: integer + - + in: path + name: cronJob_id + description: 'The ID of the cronJob.' + example: 1 + required: true + schema: + type: integer + '/api/projects/{project_id}/servers/{server_id}/database-users': + get: + summary: list + operationId: list + description: 'Get all database users.' + parameters: [] + responses: + 200: + description: '' + content: + application/json: + schema: + type: object + example: + data: + - + id: 4 + server_id: 1 + username: cartwright.maxine + databases: [] + host: '%' + status: creating + status_color: warning + created_at: '2025-06-10T10:21:56.000000Z' + updated_at: '2025-06-10T10:21:56.000000Z' + - + id: 5 + server_id: 1 + username: gusikowski.eden + databases: [] + host: '%' + status: creating + status_color: warning + created_at: '2025-06-10T10:21:56.000000Z' + updated_at: '2025-06-10T10:21:56.000000Z' + links: + first: '/?page=1' + last: '/?page=1' + prev: null + next: null + meta: + current_page: 1 + from: 1 + last_page: 1 + links: + - + url: null + label: '« Previous' + active: false + - + url: '/?page=1' + label: '1' + active: true + - + url: null + label: 'Next »' + active: false + path: / + per_page: 25 + to: 2 + total: 2 + properties: + data: + type: array + example: + - + id: 4 + server_id: 1 + username: cartwright.maxine + databases: [] + host: '%' + status: creating + status_color: warning + created_at: '2025-06-10T10:21:56.000000Z' + updated_at: '2025-06-10T10:21:56.000000Z' + - + id: 5 + server_id: 1 + username: gusikowski.eden + databases: [] + host: '%' + status: creating + status_color: warning + created_at: '2025-06-10T10:21:56.000000Z' + updated_at: '2025-06-10T10:21:56.000000Z' + items: + type: object + properties: + id: + type: integer + example: 4 + server_id: + type: integer + example: 1 + username: + type: string + example: cartwright.maxine + databases: + type: array + example: [] + host: + type: string + example: '%' + status: + type: string + example: creating + status_color: + type: string + example: warning + created_at: + type: string + example: '2025-06-10T10:21:56.000000Z' + updated_at: + type: string + example: '2025-06-10T10:21:56.000000Z' + links: + type: object + properties: + first: + type: string + example: '/?page=1' + last: + type: string + example: '/?page=1' + prev: + type: string + example: null + next: + type: string + example: null + meta: + type: object + properties: + current_page: + type: integer + example: 1 + from: + type: integer + example: 1 + last_page: + type: integer + example: 1 + links: + type: array + example: + - + url: null + label: '« Previous' + active: false + - + url: '/?page=1' + label: '1' + active: true + - + url: null + label: 'Next »' + active: false + items: + type: object + properties: + url: + type: string + example: null + label: + type: string + example: '« Previous' + active: + type: boolean + example: false + path: + type: string + example: / + per_page: + type: integer + example: 25 + to: + type: integer + example: 2 + total: + type: integer + example: 2 + tags: + - database-users + security: [] + post: + summary: create + operationId: create + description: 'Create a new database user.' + parameters: [] + responses: + 200: + description: '' + content: + application/json: + schema: + type: object + example: + id: 4 + server_id: 1 + username: justina.gaylord + databases: [] + host: '%' + status: creating + status_color: warning + created_at: '2025-06-10T10:21:56.000000Z' + updated_at: '2025-06-10T10:21:56.000000Z' + properties: + id: + type: integer + example: 4 + server_id: + type: integer + example: 1 + username: + type: string + example: justina.gaylord + databases: + type: array + example: [] + host: + type: string + example: '%' + status: + type: string + example: creating + status_color: + type: string + example: warning + created_at: + type: string + example: '2025-06-10T10:21:56.000000Z' + updated_at: + type: string + example: '2025-06-10T10:21:56.000000Z' + tags: + - database-users + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + username: + type: string + description: '' + example: architecto + nullable: false + password: + type: string + description: '' + example: '|]|{+-' + nullable: false + host: + type: string + description: 'Host, if it is a remote user.' + example: '%' + nullable: false + required: + - username + - password + - host + security: [] + parameters: + - + in: path + name: project_id + description: 'The ID of the project.' + example: 1 + required: true + schema: + type: integer + - + in: path + name: server_id + description: 'The ID of the server.' + example: 6 + required: true + schema: + type: integer + '/api/projects/{project_id}/servers/{server_id}/database-users/{databaseUser_id}': + get: + summary: show + operationId: show + description: 'Get a database user by ID.' + parameters: [] + responses: + 200: + description: '' + content: + application/json: + schema: + type: object + example: + id: 4 + server_id: 1 + username: zbailey + databases: [] + host: '%' + status: creating + status_color: warning + created_at: '2025-06-10T10:21:56.000000Z' + updated_at: '2025-06-10T10:21:56.000000Z' + properties: + id: + type: integer + example: 4 + server_id: + type: integer + example: 1 + username: + type: string + example: zbailey + databases: + type: array + example: [] + host: + type: string + example: '%' + status: + type: string + example: creating + status_color: + type: string + example: warning + created_at: + type: string + example: '2025-06-10T10:21:56.000000Z' + updated_at: + type: string + example: '2025-06-10T10:21:56.000000Z' + tags: + - database-users + security: [] + delete: + summary: delete + operationId: delete + description: 'Delete database user.' + parameters: [] + responses: + 204: + description: '' + tags: + - database-users + security: [] + parameters: + - + in: path + name: project_id + description: 'The ID of the project.' + example: 1 + required: true + schema: + type: integer + - + in: path + name: server_id + description: 'The ID of the server.' + example: 6 + required: true + schema: + type: integer + - + in: path + name: databaseUser_id + description: 'The ID of the databaseUser.' + example: 16 + required: true + schema: + type: integer + '/api/projects/{project_id}/servers/{server_id}/database-users/{databaseUser_id}/link': + post: + summary: link + operationId: link + description: 'Link to databases' + parameters: [] + responses: + 200: + description: '' + content: + application/json: + schema: + type: object + example: + id: 4 + server_id: 1 + username: zbailey + databases: [] + host: '%' + status: creating + status_color: warning + created_at: '2025-06-10T10:21:56.000000Z' + updated_at: '2025-06-10T10:21:56.000000Z' + properties: + id: + type: integer + example: 4 + server_id: + type: integer + example: 1 + username: + type: string + example: zbailey + databases: + type: array + example: [] + host: + type: string + example: '%' + status: + type: string + example: creating + status_color: + type: string + example: warning + created_at: + type: string + example: '2025-06-10T10:21:56.000000Z' + updated_at: + type: string + example: '2025-06-10T10:21:56.000000Z' + tags: + - database-users + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + databases: + type: string + description: 'Array of database names to link to the user.' + example: architecto + nullable: false + required: + - databases + security: [] + parameters: + - + in: path + name: project_id + description: 'The ID of the project.' + example: 1 + required: true + schema: + type: integer + - + in: path + name: server_id + description: 'The ID of the server.' + example: 6 + required: true + schema: + type: integer + - + in: path + name: databaseUser_id + description: 'The ID of the databaseUser.' + example: 16 + required: true + schema: + type: integer + '/api/projects/{project_id}/servers/{server_id}/databases': + get: + summary: list + operationId: list + description: 'Get all databases.' + parameters: [] + responses: + 200: + description: '' + content: + application/json: + schema: + type: object + example: + data: + - + id: 9 + server_id: 1 + name: zbailey + collation: null + charset: null + status: ready + status_color: success + created_at: '2025-06-10T10:21:56.000000Z' + updated_at: '2025-06-10T10:21:56.000000Z' + - + id: 10 + server_id: 1 + name: rempel.chadrick + collation: null + charset: null + status: ready + status_color: success + created_at: '2025-06-10T10:21:56.000000Z' + updated_at: '2025-06-10T10:21:56.000000Z' + links: + first: '/?page=1' + last: '/?page=1' + prev: null + next: null + meta: + current_page: 1 + from: 1 + last_page: 1 + links: + - + url: null + label: '« Previous' + active: false + - + url: '/?page=1' + label: '1' + active: true + - + url: null + label: 'Next »' + active: false + path: / + per_page: 25 + to: 2 + total: 2 + properties: + data: + type: array + example: + - + id: 9 + server_id: 1 + name: zbailey + collation: null + charset: null + status: ready + status_color: success + created_at: '2025-06-10T10:21:56.000000Z' + updated_at: '2025-06-10T10:21:56.000000Z' + - + id: 10 + server_id: 1 + name: rempel.chadrick + collation: null + charset: null + status: ready + status_color: success + created_at: '2025-06-10T10:21:56.000000Z' + updated_at: '2025-06-10T10:21:56.000000Z' + items: + type: object + properties: + id: + type: integer + example: 9 + server_id: + type: integer + example: 1 + name: + type: string + example: zbailey + collation: + type: string + example: null + charset: + type: string + example: null + status: + type: string + example: ready + status_color: + type: string + example: success + created_at: + type: string + example: '2025-06-10T10:21:56.000000Z' + updated_at: + type: string + example: '2025-06-10T10:21:56.000000Z' + links: + type: object + properties: + first: + type: string + example: '/?page=1' + last: + type: string + example: '/?page=1' + prev: + type: string + example: null + next: + type: string + example: null + meta: + type: object + properties: + current_page: + type: integer + example: 1 + from: + type: integer + example: 1 + last_page: + type: integer + example: 1 + links: + type: array + example: + - + url: null + label: '« Previous' + active: false + - + url: '/?page=1' + label: '1' + active: true + - + url: null + label: 'Next »' + active: false + items: + type: object + properties: + url: + type: string + example: null + label: + type: string + example: '« Previous' + active: + type: boolean + example: false + path: + type: string + example: / + per_page: + type: integer + example: 25 + to: + type: integer + example: 2 + total: + type: integer + example: 2 + tags: + - databases + security: [] + post: + summary: create + operationId: create + description: 'Create a new database.' + parameters: [] + responses: + 200: + description: '' + content: + application/json: + schema: + type: object + example: + id: 9 + server_id: 1 + name: zbailey + collation: null + charset: null + status: ready + status_color: success + created_at: '2025-06-10T10:21:56.000000Z' + updated_at: '2025-06-10T10:21:56.000000Z' + properties: + id: + type: integer + example: 9 + server_id: + type: integer + example: 1 + name: + type: string + example: zbailey + collation: + type: string + example: null + charset: + type: string + example: null + status: + type: string + example: ready + status_color: + type: string + example: success + created_at: + type: string + example: '2025-06-10T10:21:56.000000Z' + updated_at: + type: string + example: '2025-06-10T10:21:56.000000Z' + tags: + - databases + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + name: + type: string + description: '' + example: architecto + nullable: false + charset: + type: string + description: '' + example: architecto + nullable: false + collation: + type: string + description: '' + example: architecto + nullable: false + required: + - name + - charset + - collation + security: [] + parameters: + - + in: path + name: project_id + description: 'The ID of the project.' + example: 1 + required: true + schema: + type: integer + - + in: path + name: server_id + description: 'The ID of the server.' + example: 6 + required: true + schema: + type: integer + '/api/projects/{project_id}/servers/{server_id}/databases/{id}': + get: + summary: show + operationId: show + description: 'Get a database by ID.' + parameters: [] + responses: + 200: + description: '' + content: + application/json: + schema: + type: object + example: + id: 9 + server_id: 1 + name: rempel.chadrick + collation: null + charset: null + status: ready + status_color: success + created_at: '2025-06-10T10:21:56.000000Z' + updated_at: '2025-06-10T10:21:56.000000Z' + properties: + id: + type: integer + example: 9 + server_id: + type: integer + example: 1 + name: + type: string + example: rempel.chadrick + collation: + type: string + example: null + charset: + type: string + example: null + status: + type: string + example: ready + status_color: + type: string + example: success + created_at: + type: string + example: '2025-06-10T10:21:56.000000Z' + updated_at: + type: string + example: '2025-06-10T10:21:56.000000Z' + tags: + - databases + security: [] + parameters: + - + in: path + name: project_id + description: 'The ID of the project.' + example: 1 + required: true + schema: + type: integer + - + in: path + name: server_id + description: 'The ID of the server.' + example: 6 + required: true + schema: + type: integer + - + in: path + name: id + description: 'The ID of the database.' + example: 8 + required: true + schema: + type: integer + '/api/projects/{project_id}/servers/{server_id}/databases/{database_id}': + delete: + summary: delete + operationId: delete + description: 'Delete database.' + parameters: [] + responses: + 204: + description: '' + tags: + - databases + security: [] + parameters: + - + in: path + name: project_id + description: 'The ID of the project.' + example: 1 + required: true + schema: + type: integer + - + in: path + name: server_id + description: 'The ID of the server.' + example: 6 + required: true + schema: + type: integer + - + in: path + name: database_id + description: 'The ID of the database.' + example: 8 + required: true + schema: + type: integer + '/api/projects/{project_id}/servers/{server_id}/firewall-rules': + get: + summary: list + operationId: list + description: 'Get all firewall rules.' + parameters: [] + responses: + 200: + description: '' + content: + application/json: + schema: + type: object + example: + data: + - + id: 22 + name: eius + server_id: 1 + type: allow + protocol: tcp + port: 9322 + source: 113.14.236.204 + mask: '24' + note: test + status: creating + status_color: info + created_at: '2025-06-10T10:21:56.000000Z' + updated_at: '2025-06-10T10:21:56.000000Z' + - + id: 23 + name: velit + server_id: 1 + type: allow + protocol: tcp + port: 2983 + source: 199.172.126.144 + mask: '24' + note: test + status: creating + status_color: info + created_at: '2025-06-10T10:21:56.000000Z' + updated_at: '2025-06-10T10:21:56.000000Z' + links: + first: '/?page=1' + last: '/?page=1' + prev: null + next: null + meta: + current_page: 1 + from: 1 + last_page: 1 + links: + - + url: null + label: '« Previous' + active: false + - + url: '/?page=1' + label: '1' + active: true + - + url: null + label: 'Next »' + active: false + path: / + per_page: 25 + to: 2 + total: 2 + properties: + data: + type: array + example: + - + id: 22 + name: eius + server_id: 1 + type: allow + protocol: tcp + port: 9322 + source: 113.14.236.204 + mask: '24' + note: test + status: creating + status_color: info + created_at: '2025-06-10T10:21:56.000000Z' + updated_at: '2025-06-10T10:21:56.000000Z' + - + id: 23 + name: velit + server_id: 1 + type: allow + protocol: tcp + port: 2983 + source: 199.172.126.144 + mask: '24' + note: test + status: creating + status_color: info + created_at: '2025-06-10T10:21:56.000000Z' + updated_at: '2025-06-10T10:21:56.000000Z' + items: + type: object + properties: + id: + type: integer + example: 22 + name: + type: string + example: eius + server_id: + type: integer + example: 1 + type: + type: string + example: allow + protocol: + type: string + example: tcp + port: + type: integer + example: 9322 + source: + type: string + example: 113.14.236.204 + mask: + type: string + example: '24' + note: + type: string + example: test + status: + type: string + example: creating + status_color: + type: string + example: info + created_at: + type: string + example: '2025-06-10T10:21:56.000000Z' + updated_at: + type: string + example: '2025-06-10T10:21:56.000000Z' + links: + type: object + properties: + first: + type: string + example: '/?page=1' + last: + type: string + example: '/?page=1' + prev: + type: string + example: null + next: + type: string + example: null + meta: + type: object + properties: + current_page: + type: integer + example: 1 + from: + type: integer + example: 1 + last_page: + type: integer + example: 1 + links: + type: array + example: + - + url: null + label: '« Previous' + active: false + - + url: '/?page=1' + label: '1' + active: true + - + url: null + label: 'Next »' + active: false + items: + type: object + properties: + url: + type: string + example: null + label: + type: string + example: '« Previous' + active: + type: boolean + example: false + path: + type: string + example: / + per_page: + type: integer + example: 25 + to: + type: integer + example: 2 + total: + type: integer + example: 2 + tags: + - firewall-rules + security: [] + post: + summary: create + operationId: create + description: 'Create a new firewall rule.' + parameters: [] + responses: + 200: + description: '' + content: + application/json: + schema: + type: object + example: + id: 22 + name: eius + server_id: 1 + type: allow + protocol: tcp + port: 9322 + source: 113.14.236.204 + mask: '24' + note: test + status: creating + status_color: info + created_at: '2025-06-10T10:21:56.000000Z' + updated_at: '2025-06-10T10:21:56.000000Z' + properties: + id: + type: integer + example: 22 + name: + type: string + example: eius + server_id: + type: integer + example: 1 + type: + type: string + example: allow + protocol: + type: string + example: tcp + port: + type: integer + example: 9322 + source: + type: string + example: 113.14.236.204 + mask: + type: string + example: '24' + note: + type: string + example: test + status: + type: string + example: creating + status_color: + type: string + example: info + created_at: + type: string + example: '2025-06-10T10:21:56.000000Z' + updated_at: + type: string + example: '2025-06-10T10:21:56.000000Z' + tags: + - firewall-rules + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + name: + type: string + description: '' + example: architecto + nullable: false + type: + type: string + description: '' + example: allow + nullable: false + enum: + - allow + - deny + protocol: + type: string + description: '' + example: tcp + nullable: false + enum: + - tcp + - udp + port: + type: string + description: '' + example: architecto + nullable: false + source: + type: string + description: '' + example: architecto + nullable: false + mask: + type: string + description: 'Mask for source IP.' + example: '0' + nullable: false + required: + - name + - type + - protocol + - port + - mask + security: [] + parameters: + - + in: path + name: project_id + description: 'The ID of the project.' + example: 1 + required: true + schema: + type: integer + - + in: path + name: server_id + description: 'The ID of the server.' + example: 6 + required: true + schema: + type: integer + '/api/projects/{project_id}/servers/{server_id}/firewall-rules/{firewallRule_id}': + put: + summary: edit + operationId: edit + description: 'Update an existing firewall rule.' + parameters: [] + responses: + 200: + description: '' + content: + application/json: + schema: + type: object + example: + id: 22 + name: eius + server_id: 1 + type: allow + protocol: tcp + port: 9322 + source: 113.14.236.204 + mask: '24' + note: test + status: creating + status_color: info + created_at: '2025-06-10T10:21:56.000000Z' + updated_at: '2025-06-10T10:21:56.000000Z' + properties: + id: + type: integer + example: 22 + name: + type: string + example: eius + server_id: + type: integer + example: 1 + type: + type: string + example: allow + protocol: + type: string + example: tcp + port: + type: integer + example: 9322 + source: + type: string + example: 113.14.236.204 + mask: + type: string + example: '24' + note: + type: string + example: test + status: + type: string + example: creating + status_color: + type: string + example: info + created_at: + type: string + example: '2025-06-10T10:21:56.000000Z' + updated_at: + type: string + example: '2025-06-10T10:21:56.000000Z' + tags: + - firewall-rules + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + name: + type: string + description: '' + example: architecto + nullable: false + type: + type: string + description: '' + example: deny + nullable: false + enum: + - allow + - deny + protocol: + type: string + description: '' + example: udp + nullable: false + enum: + - tcp + - udp + port: + type: string + description: '' + example: architecto + nullable: false + source: + type: string + description: '' + example: architecto + nullable: false + mask: + type: string + description: 'Mask for source IP.' + example: '0' + nullable: false + required: + - name + - type + - protocol + - port + - mask + security: [] + get: + summary: show + operationId: show + description: 'Get a firewall rule by ID.' + parameters: [] + responses: + 200: + description: '' + content: + application/json: + schema: + type: object + example: + id: 22 + name: velit + server_id: 1 + type: allow + protocol: tcp + port: 2983 + source: 199.172.126.144 + mask: '24' + note: test + status: creating + status_color: info + created_at: '2025-06-10T10:21:56.000000Z' + updated_at: '2025-06-10T10:21:56.000000Z' + properties: + id: + type: integer + example: 22 + name: + type: string + example: velit + server_id: + type: integer + example: 1 + type: + type: string + example: allow + protocol: + type: string + example: tcp + port: + type: integer + example: 2983 + source: + type: string + example: 199.172.126.144 + mask: + type: string + example: '24' + note: + type: string + example: test + status: + type: string + example: creating + status_color: + type: string + example: info + created_at: + type: string + example: '2025-06-10T10:21:56.000000Z' + updated_at: + type: string + example: '2025-06-10T10:21:56.000000Z' + tags: + - firewall-rules + security: [] + delete: + summary: delete + operationId: delete + description: 'Delete firewall rule.' + parameters: [] + responses: + 204: + description: '' + tags: + - firewall-rules + security: [] + parameters: + - + in: path + name: project_id + description: 'The ID of the project.' + example: 1 + required: true + schema: + type: integer + - + in: path + name: server_id + description: 'The ID of the server.' + example: 6 + required: true + schema: + type: integer + - + in: path + name: firewallRule_id + description: 'The ID of the firewallRule.' + example: 19 + required: true + schema: + type: integer + /api/health: + get: + summary: health-check + operationId: healthCheck + description: '' + parameters: [] + responses: + 200: + description: '' + content: + application/json: + schema: + type: object + example: + success: true + version: 2.5.0 + properties: + success: + type: boolean + example: true + version: + type: string + example: 2.5.0 + tags: + - general + security: [] + /api/projects: + get: + summary: list + operationId: list + description: 'Get all projects.' + parameters: [] + responses: + 200: + description: '' + content: + application/json: + schema: + type: object + example: + data: + - + id: 3 + name: 'Belle Dickens' + created_at: '2025-06-10T10:21:56.000000Z' + updated_at: '2025-06-10T10:21:56.000000Z' + - + id: 4 + name: 'Mittie Considine' + created_at: '2025-06-10T10:21:56.000000Z' + updated_at: '2025-06-10T10:21:56.000000Z' + links: + first: '/?page=1' + last: '/?page=1' + prev: null + next: null + meta: + current_page: 1 + from: 1 + last_page: 1 + links: + - + url: null + label: '« Previous' + active: false + - + url: '/?page=1' + label: '1' + active: true + - + url: null + label: 'Next »' + active: false + path: / + per_page: 25 + to: 2 + total: 2 + properties: + data: + type: array + example: + - + id: 3 + name: 'Belle Dickens' + created_at: '2025-06-10T10:21:56.000000Z' + updated_at: '2025-06-10T10:21:56.000000Z' + - + id: 4 + name: 'Mittie Considine' + created_at: '2025-06-10T10:21:56.000000Z' + updated_at: '2025-06-10T10:21:56.000000Z' + items: + type: object + properties: + id: + type: integer + example: 3 + name: + type: string + example: 'Belle Dickens' + created_at: + type: string + example: '2025-06-10T10:21:56.000000Z' + updated_at: + type: string + example: '2025-06-10T10:21:56.000000Z' + links: + type: object + properties: + first: + type: string + example: '/?page=1' + last: + type: string + example: '/?page=1' + prev: + type: string + example: null + next: + type: string + example: null + meta: + type: object + properties: + current_page: + type: integer + example: 1 + from: + type: integer + example: 1 + last_page: + type: integer + example: 1 + links: + type: array + example: + - + url: null + label: '« Previous' + active: false + - + url: '/?page=1' + label: '1' + active: true + - + url: null + label: 'Next »' + active: false + items: + type: object + properties: + url: + type: string + example: null + label: + type: string + example: '« Previous' + active: + type: boolean + example: false + path: + type: string + example: / + per_page: + type: integer + example: 25 + to: + type: integer + example: 2 + total: + type: integer + example: 2 + tags: + - projects + security: [] + post: + summary: create + operationId: create + description: 'Create a new project.' + parameters: [] + responses: + 200: + description: '' + content: + application/json: + schema: + type: object + example: + id: 3 + name: 'Ms. Elisabeth Okuneva' + created_at: '2025-06-10T10:21:56.000000Z' + updated_at: '2025-06-10T10:21:56.000000Z' + properties: + id: + type: integer + example: 3 + name: + type: string + example: 'Ms. Elisabeth Okuneva' + created_at: + type: string + example: '2025-06-10T10:21:56.000000Z' + updated_at: + type: string + example: '2025-06-10T10:21:56.000000Z' + tags: + - projects + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + name: + type: string + description: 'The name of the project.' + example: architecto + nullable: false + required: + - name + security: [] + '/api/projects/{id}': + get: + summary: show + operationId: show + description: 'Get a project by ID.' + parameters: [] + responses: + 200: + description: '' + content: + application/json: + schema: + type: object + example: + id: 3 + name: "Aleen O'Kon" + created_at: '2025-06-10T10:21:56.000000Z' + updated_at: '2025-06-10T10:21:56.000000Z' + properties: + id: + type: integer + example: 3 + name: + type: string + example: "Aleen O'Kon" + created_at: + type: string + example: '2025-06-10T10:21:56.000000Z' + updated_at: + type: string + example: '2025-06-10T10:21:56.000000Z' + tags: + - projects + security: [] + put: + summary: update + operationId: update + description: 'Update project.' + parameters: [] + responses: + 200: + description: '' + content: + application/json: + schema: + type: object + example: + id: 3 + name: 'Ms. Elisabeth Okuneva' + created_at: '2025-06-10T10:21:56.000000Z' + updated_at: '2025-06-10T10:21:56.000000Z' + properties: + id: + type: integer + example: 3 + name: + type: string + example: 'Ms. Elisabeth Okuneva' + created_at: + type: string + example: '2025-06-10T10:21:56.000000Z' + updated_at: + type: string + example: '2025-06-10T10:21:56.000000Z' + tags: + - projects + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + name: + type: string + description: 'The name of the project.' + example: architecto + nullable: false + required: + - name + security: [] + parameters: + - + in: path + name: id + description: 'The ID of the project.' + example: 1 + required: true + schema: + type: integer + '/api/projects/{project_id}': + delete: + summary: delete + operationId: delete + description: 'Delete project.' + parameters: [] + responses: + 204: + description: '' + tags: + - projects + security: [] + parameters: + - + in: path + name: project_id + description: 'The ID of the project.' + example: 1 + required: true + schema: + type: integer + '/api/projects/{project_id}/servers/{server_id}/sites/{site_id}/redirects': + post: + summary: create + operationId: create + description: 'Create a new redirect.' + parameters: [] + responses: + 200: + description: '' + content: + application/json: + schema: + type: object + nullable: true + tags: + - redirects + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + from: + type: string + description: '' + example: architecto + nullable: false + to: + type: string + description: '' + example: architecto + nullable: false + mode: + type: string + description: '' + example: 307 + nullable: false + enum: + - 301 + - 302 + - 307 + - 308 + required: + - from + - to + - mode + security: [] + parameters: + - + in: path + name: project_id + description: 'The ID of the project.' + example: 1 + required: true + schema: + type: integer + - + in: path + name: server_id + description: 'The ID of the server.' + example: 6 + required: true + schema: + type: integer + - + in: path + name: site_id + description: 'The ID of the site.' + example: 14 + required: true + schema: + type: integer + '/api/projects/{project_id}/servers/{server_id}/sites/{site_id}/redirects/{redirect_id}': + delete: + summary: delete + operationId: delete + description: 'Delete a redirect.' + parameters: [] + responses: + 204: + description: '' + tags: + - redirects + security: [] + parameters: + - + in: path + name: project_id + description: 'The ID of the project.' + example: 1 + required: true + schema: + type: integer + - + in: path + name: server_id + description: 'The ID of the server.' + example: 6 + required: true + schema: + type: integer + - + in: path + name: site_id + description: 'The ID of the site.' + example: 14 + required: true + schema: + type: integer + - + in: path + name: redirect_id + description: 'The ID of the redirect.' + example: 2 + required: true + schema: + type: integer + '/api/projects/{project_id}/server-providers': + get: + summary: list + operationId: list + description: '' + parameters: [] + responses: + 200: + description: '' + content: + application/json: + schema: + type: object + example: + data: + - + id: 4 + project_id: null + global: true + name: ab + provider: custom + created_at: '2025-06-10T10:21:56.000000Z' + updated_at: '2025-06-10T10:21:56.000000Z' + - + id: 5 + project_id: null + global: true + name: incidunt + provider: custom + created_at: '2025-06-10T10:21:56.000000Z' + updated_at: '2025-06-10T10:21:56.000000Z' + links: + first: '/?page=1' + last: '/?page=1' + prev: null + next: null + meta: + current_page: 1 + from: 1 + last_page: 1 + links: + - + url: null + label: '« Previous' + active: false + - + url: '/?page=1' + label: '1' + active: true + - + url: null + label: 'Next »' + active: false + path: / + per_page: 25 + to: 2 + total: 2 + properties: + data: + type: array + example: + - + id: 4 + project_id: null + global: true + name: ab + provider: custom + created_at: '2025-06-10T10:21:56.000000Z' + updated_at: '2025-06-10T10:21:56.000000Z' + - + id: 5 + project_id: null + global: true + name: incidunt + provider: custom + created_at: '2025-06-10T10:21:56.000000Z' + updated_at: '2025-06-10T10:21:56.000000Z' + items: + type: object + properties: + id: + type: integer + example: 4 + project_id: + type: string + example: null + global: + type: boolean + example: true + name: + type: string + example: ab + provider: + type: string + example: custom + created_at: + type: string + example: '2025-06-10T10:21:56.000000Z' + updated_at: + type: string + example: '2025-06-10T10:21:56.000000Z' + links: + type: object + properties: + first: + type: string + example: '/?page=1' + last: + type: string + example: '/?page=1' + prev: + type: string + example: null + next: + type: string + example: null + meta: + type: object + properties: + current_page: + type: integer + example: 1 + from: + type: integer + example: 1 + last_page: + type: integer + example: 1 + links: + type: array + example: + - + url: null + label: '« Previous' + active: false + - + url: '/?page=1' + label: '1' + active: true + - + url: null + label: 'Next »' + active: false + items: + type: object + properties: + url: + type: string + example: null + label: + type: string + example: '« Previous' + active: + type: boolean + example: false + path: + type: string + example: / + per_page: + type: integer + example: 25 + to: + type: integer + example: 2 + total: + type: integer + example: 2 + tags: + - server-providers + security: [] + post: + summary: create + operationId: create + description: '' + parameters: [] + responses: + 200: + description: '' + content: + application/json: + schema: + type: object + example: + id: 4 + project_id: null + global: true + name: eius + provider: custom + created_at: '2025-06-10T10:21:56.000000Z' + updated_at: '2025-06-10T10:21:56.000000Z' + properties: + id: + type: integer + example: 4 + project_id: + type: string + example: null + global: + type: boolean + example: true + name: + type: string + example: eius + provider: + type: string + example: custom + created_at: + type: string + example: '2025-06-10T10:21:56.000000Z' + updated_at: + type: string + example: '2025-06-10T10:21:56.000000Z' + tags: + - server-providers + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + provider: + type: string + description: 'The provider (aws, linode, hetzner, digitalocean, vultr, ...)' + example: architecto + nullable: false + name: + type: string + description: 'The name of the server provider.' + example: architecto + nullable: false + token: + type: string + description: 'The token if provider requires api token' + example: architecto + nullable: false + key: + type: string + description: 'The key if provider requires key' + example: architecto + nullable: false + secret: + type: string + description: 'The secret if provider requires key' + example: architecto + nullable: false + required: + - provider + - name + - token + - key + - secret + security: [] + parameters: + - + in: path + name: project_id + description: 'The ID of the project.' + example: 1 + required: true + schema: + type: integer + '/api/projects/{project_id}/server-providers/{serverProvider_id}': + get: + summary: show + operationId: show + description: '' + parameters: [] + responses: + 200: + description: '' + content: + application/json: + schema: + type: object + example: + id: 4 + project_id: null + global: true + name: mollitia + provider: vultr + created_at: '2025-06-10T10:21:56.000000Z' + updated_at: '2025-06-10T10:21:56.000000Z' + properties: + id: + type: integer + example: 4 + project_id: + type: string + example: null + global: + type: boolean + example: true + name: + type: string + example: mollitia + provider: + type: string + example: vultr + created_at: + type: string + example: '2025-06-10T10:21:56.000000Z' + updated_at: + type: string + example: '2025-06-10T10:21:56.000000Z' + tags: + - server-providers + security: [] + put: + summary: update + operationId: update + description: '' + parameters: [] + responses: + 200: + description: '' + content: + application/json: + schema: + type: object + example: + id: 4 + project_id: null + global: true + name: eius + provider: custom + created_at: '2025-06-10T10:21:56.000000Z' + updated_at: '2025-06-10T10:21:56.000000Z' + properties: + id: + type: integer + example: 4 + project_id: + type: string + example: null + global: + type: boolean + example: true + name: + type: string + example: eius + provider: + type: string + example: custom + created_at: + type: string + example: '2025-06-10T10:21:56.000000Z' + updated_at: + type: string + example: '2025-06-10T10:21:56.000000Z' + tags: + - server-providers + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + name: + type: string + description: 'The name of the server provider.' + example: architecto + nullable: false + global: + type: string + description: 'Accessible in all projects' + example: false + nullable: false + enum: + - true + - false + required: + - name + - global + security: [] + delete: + summary: delete + operationId: delete + description: '' + parameters: [] + responses: + 204: + description: '' + tags: + - server-providers + security: [] + parameters: + - + in: path + name: project_id + description: 'The ID of the project.' + example: 1 + required: true + schema: + type: integer + - + in: path + name: serverProvider_id + description: 'The ID of the serverProvider.' + example: 3 + required: true + schema: + type: integer + '/api/projects/{project_id}/servers': + get: + summary: list + operationId: list + description: 'Get all servers in a project.' + parameters: [] + responses: + 200: + description: '' + content: + application/json: + schema: + type: object + example: + data: + - + id: 7 + project_id: 1 + services: [] + user_id: 1 + provider_id: null + name: 'Rhiannon Hackett' + ssh_user: vito + ssh_users: + - root + - vito + ip: 15.21.182.27 + local_ip: 15.126.47.30 + port: 22 + os: ubuntu_22 + type: regular + type_data: null + provider: custom + provider_data: null + public_key: test + status: ready + auto_update: null + available_updates: 0 + security_updates: null + progress: 100 + progress_step: null + updates: 0 + last_update_check: null + status_color: success + created_at: '2025-06-10T10:21:56.000000Z' + updated_at: '2025-06-10T10:21:56.000000Z' + - + id: 8 + project_id: 1 + services: [] + user_id: 1 + provider_id: null + name: 'Maya Bins' + ssh_user: vito + ssh_users: + - root + - vito + ip: 88.63.32.129 + local_ip: 161.58.4.234 + port: 22 + os: ubuntu_22 + type: regular + type_data: null + provider: custom + provider_data: null + public_key: test + status: ready + auto_update: null + available_updates: 0 + security_updates: null + progress: 100 + progress_step: null + updates: 0 + last_update_check: null + status_color: success + created_at: '2025-06-10T10:21:56.000000Z' + updated_at: '2025-06-10T10:21:56.000000Z' + links: + first: '/?page=1' + last: '/?page=1' + prev: null + next: null + meta: + current_page: 1 + from: 1 + last_page: 1 + links: + - + url: null + label: '« Previous' + active: false + - + url: '/?page=1' + label: '1' + active: true + - + url: null + label: 'Next »' + active: false + path: / + per_page: 25 + to: 2 + total: 2 + properties: + data: + type: array + example: + - + id: 7 + project_id: 1 + services: [] + user_id: 1 + provider_id: null + name: 'Rhiannon Hackett' + ssh_user: vito + ssh_users: + - root + - vito + ip: 15.21.182.27 + local_ip: 15.126.47.30 + port: 22 + os: ubuntu_22 + type: regular + type_data: null + provider: custom + provider_data: null + public_key: test + status: ready + auto_update: null + available_updates: 0 + security_updates: null + progress: 100 + progress_step: null + updates: 0 + last_update_check: null + status_color: success + created_at: '2025-06-10T10:21:56.000000Z' + updated_at: '2025-06-10T10:21:56.000000Z' + - + id: 8 + project_id: 1 + services: [] + user_id: 1 + provider_id: null + name: 'Maya Bins' + ssh_user: vito + ssh_users: + - root + - vito + ip: 88.63.32.129 + local_ip: 161.58.4.234 + port: 22 + os: ubuntu_22 + type: regular + type_data: null + provider: custom + provider_data: null + public_key: test + status: ready + auto_update: null + available_updates: 0 + security_updates: null + progress: 100 + progress_step: null + updates: 0 + last_update_check: null + status_color: success + created_at: '2025-06-10T10:21:56.000000Z' + updated_at: '2025-06-10T10:21:56.000000Z' + items: + type: object + properties: + id: + type: integer + example: 7 + project_id: + type: integer + example: 1 + services: + type: array + example: [] + user_id: + type: integer + example: 1 + provider_id: + type: string + example: null + name: + type: string + example: 'Rhiannon Hackett' + ssh_user: + type: string + example: vito + ssh_users: + type: array + example: + - root + - vito + items: + type: string + ip: + type: string + example: 15.21.182.27 + local_ip: + type: string + example: 15.126.47.30 + port: + type: integer + example: 22 + os: + type: string + example: ubuntu_22 + type: + type: string + example: regular + type_data: + type: string + example: null + provider: + type: string + example: custom + provider_data: + type: string + example: null + public_key: + type: string + example: test + status: + type: string + example: ready + auto_update: + type: string + example: null + available_updates: + type: integer + example: 0 + security_updates: + type: string + example: null + progress: + type: integer + example: 100 + progress_step: + type: string + example: null + updates: + type: integer + example: 0 + last_update_check: + type: string + example: null + status_color: + type: string + example: success + created_at: + type: string + example: '2025-06-10T10:21:56.000000Z' + updated_at: + type: string + example: '2025-06-10T10:21:56.000000Z' + links: + type: object + properties: + first: + type: string + example: '/?page=1' + last: + type: string + example: '/?page=1' + prev: + type: string + example: null + next: + type: string + example: null + meta: + type: object + properties: + current_page: + type: integer + example: 1 + from: + type: integer + example: 1 + last_page: + type: integer + example: 1 + links: + type: array + example: + - + url: null + label: '« Previous' + active: false + - + url: '/?page=1' + label: '1' + active: true + - + url: null + label: 'Next »' + active: false + items: + type: object + properties: + url: + type: string + example: null + label: + type: string + example: '« Previous' + active: + type: boolean + example: false + path: + type: string + example: / + per_page: + type: integer + example: 25 + to: + type: integer + example: 2 + total: + type: integer + example: 2 + tags: + - servers + security: [] + post: + summary: create + operationId: create + description: 'Create a new server.' + parameters: [] + responses: + 200: + description: '' + content: + application/json: + schema: + type: object + example: + id: 7 + project_id: 1 + services: [] + user_id: 1 + provider_id: null + name: 'Ms. Elisabeth Okuneva' + ssh_user: vito + ssh_users: + - root + - vito + ip: 75.13.66.152 + local_ip: 199.172.126.144 + port: 22 + os: ubuntu_22 + type: regular + type_data: null + provider: custom + provider_data: null + public_key: test + status: ready + auto_update: null + available_updates: 0 + security_updates: null + progress: 100 + progress_step: null + updates: 0 + last_update_check: null + status_color: success + created_at: '2025-06-10T10:21:56.000000Z' + updated_at: '2025-06-10T10:21:56.000000Z' + properties: + id: + type: integer + example: 7 + project_id: + type: integer + example: 1 + services: + type: array + example: [] + user_id: + type: integer + example: 1 + provider_id: + type: string + example: null + name: + type: string + example: 'Ms. Elisabeth Okuneva' + ssh_user: + type: string + example: vito + ssh_users: + type: array + example: + - root + - vito + items: + type: string + ip: + type: string + example: 75.13.66.152 + local_ip: + type: string + example: 199.172.126.144 + port: + type: integer + example: 22 + os: + type: string + example: ubuntu_22 + type: + type: string + example: regular + type_data: + type: string + example: null + provider: + type: string + example: custom + provider_data: + type: string + example: null + public_key: + type: string + example: test + status: + type: string + example: ready + auto_update: + type: string + example: null + available_updates: + type: integer + example: 0 + security_updates: + type: string + example: null + progress: + type: integer + example: 100 + progress_step: + type: string + example: null + updates: + type: integer + example: 0 + last_update_check: + type: string + example: null + status_color: + type: string + example: success + created_at: + type: string + example: '2025-06-10T10:21:56.000000Z' + updated_at: + type: string + example: '2025-06-10T10:21:56.000000Z' + tags: + - servers + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + provider: + type: string + description: 'The server provider type' + example: architecto + nullable: false + server_provider: + type: string + description: 'If the provider is not custom, the ID of the server provider profile' + example: linode + nullable: false + enum: + - custom + - hetzner + - digitalocean + - linode + - vultr + region: + type: string + description: 'Provider region if the provider is not custom' + example: architecto + nullable: false + plan: + type: string + description: 'Provider plan if the provider is not custom' + example: architecto + nullable: false + ip: + type: string + description: 'SSH IP address if the provider is custom' + example: architecto + nullable: false + port: + type: string + description: 'SSH Port if the provider is custom' + example: architecto + nullable: false + name: + type: string + description: 'The name of the server.' + example: architecto + nullable: false + os: + type: string + description: 'The os of the server' + example: architecto + nullable: false + webserver: + type: string + description: 'Web server' + example: none + nullable: false + enum: + - none + - nginx + - caddy + database: + type: string + description: Database + example: mysql80 + nullable: false + enum: + - none + - mysql57 + - mysql80 + - mariadb103 + - mariadb104 + - mariadb103 + - postgresql12 + - postgresql13 + - postgresql14 + - postgresql15 + - postgresql16 + php: + type: string + description: 'PHP version' + example: '8.2' + nullable: false + enum: + - '7.0' + - '7.1' + - '7.2' + - '7.3' + - '7.4' + - '8.0' + - '8.1' + - '8.2' + - '8.3' + required: + - provider + - server_provider + - region + - plan + - ip + - port + - name + - os + - webserver + - database + - php + security: [] + parameters: + - + in: path + name: project_id + description: 'The ID of the project.' + example: 1 + required: true + schema: + type: integer + '/api/projects/{project_id}/servers/{id}': + get: + summary: show + operationId: show + description: 'Get a server by ID.' + parameters: [] + responses: + 200: + description: '' + content: + application/json: + schema: + type: object + example: + id: 7 + project_id: 1 + services: [] + user_id: 1 + provider_id: null + name: 'Belle Dickens' + ssh_user: vito + ssh_users: + - root + - vito + ip: 51.210.32.30 + local_ip: 82.174.132.158 + port: 22 + os: ubuntu_22 + type: regular + type_data: null + provider: custom + provider_data: null + public_key: test + status: ready + auto_update: null + available_updates: 0 + security_updates: null + progress: 100 + progress_step: null + updates: 0 + last_update_check: null + status_color: success + created_at: '2025-06-10T10:21:56.000000Z' + updated_at: '2025-06-10T10:21:56.000000Z' + properties: + id: + type: integer + example: 7 + project_id: + type: integer + example: 1 + services: + type: array + example: [] + user_id: + type: integer + example: 1 + provider_id: + type: string + example: null + name: + type: string + example: 'Belle Dickens' + ssh_user: + type: string + example: vito + ssh_users: + type: array + example: + - root + - vito + items: + type: string + ip: + type: string + example: 51.210.32.30 + local_ip: + type: string + example: 82.174.132.158 + port: + type: integer + example: 22 + os: + type: string + example: ubuntu_22 + type: + type: string + example: regular + type_data: + type: string + example: null + provider: + type: string + example: custom + provider_data: + type: string + example: null + public_key: + type: string + example: test + status: + type: string + example: ready + auto_update: + type: string + example: null + available_updates: + type: integer + example: 0 + security_updates: + type: string + example: null + progress: + type: integer + example: 100 + progress_step: + type: string + example: null + updates: + type: integer + example: 0 + last_update_check: + type: string + example: null + status_color: + type: string + example: success + created_at: + type: string + example: '2025-06-10T10:21:56.000000Z' + updated_at: + type: string + example: '2025-06-10T10:21:56.000000Z' + tags: + - servers + security: [] + parameters: + - + in: path + name: project_id + description: 'The ID of the project.' + example: 1 + required: true + schema: + type: integer + - + in: path + name: id + description: 'The ID of the server.' + example: 6 + required: true + schema: + type: integer + '/api/projects/{project_id}/servers/{server_id}/reboot': + post: + summary: reboot + operationId: reboot + description: 'Reboot a server.' + parameters: [] + responses: + 204: + description: '' + tags: + - servers + security: [] + parameters: + - + in: path + name: project_id + description: 'The ID of the project.' + example: 1 + required: true + schema: + type: integer + - + in: path + name: server_id + description: 'The ID of the server.' + example: 6 + required: true + schema: + type: integer + '/api/projects/{project_id}/servers/{server_id}/upgrade': + post: + summary: upgrade + operationId: upgrade + description: 'Upgrade server.' + parameters: [] + responses: + 204: + description: '' + tags: + - servers + security: [] + parameters: + - + in: path + name: project_id + description: 'The ID of the project.' + example: 1 + required: true + schema: + type: integer + - + in: path + name: server_id + description: 'The ID of the server.' + example: 6 + required: true + schema: + type: integer + '/api/projects/{project_id}/servers/{server_id}': + delete: + summary: delete + operationId: delete + description: 'Delete server.' + parameters: [] + responses: + 204: + description: '' + tags: + - servers + security: [] + parameters: + - + in: path + name: project_id + description: 'The ID of the project.' + example: 1 + required: true + schema: + type: integer + - + in: path + name: server_id + description: 'The ID of the server.' + example: 6 + required: true + schema: + type: integer + '/api/projects/{project_id}/servers/{server_id}/services': + get: + summary: list + operationId: list + description: 'Get all services.' + parameters: [] + responses: + 200: + description: '' + content: + application/json: + schema: + type: object + example: + data: + - + id: null + server_id: 1 + type: webserver + type_data: null + name: nginx + version: null + unit: null + status: ready + status_color: success + icon: '' + is_default: null + created_at: null + updated_at: null + - + id: null + server_id: 1 + type: webserver + type_data: null + name: nginx + version: null + unit: null + status: ready + status_color: success + icon: '' + is_default: null + created_at: null + updated_at: null + links: + first: '/?page=1' + last: '/?page=1' + prev: null + next: null + meta: + current_page: 1 + from: 1 + last_page: 1 + links: + - + url: null + label: '« Previous' + active: false + - + url: '/?page=1' + label: '1' + active: true + - + url: null + label: 'Next »' + active: false + path: / + per_page: 25 + to: 2 + total: 2 + properties: + data: + type: array + example: + - + id: null + server_id: 1 + type: webserver + type_data: null + name: nginx + version: null + unit: null + status: ready + status_color: success + icon: '' + is_default: null + created_at: null + updated_at: null + - + id: null + server_id: 1 + type: webserver + type_data: null + name: nginx + version: null + unit: null + status: ready + status_color: success + icon: '' + is_default: null + created_at: null + updated_at: null + items: + type: object + properties: + id: + type: string + example: null + server_id: + type: integer + example: 1 + type: + type: string + example: webserver + type_data: + type: string + example: null + name: + type: string + example: nginx + version: + type: string + example: null + unit: + type: string + example: null + status: + type: string + example: ready + status_color: + type: string + example: success + icon: + type: string + example: '' + is_default: + type: string + example: null + created_at: + type: string + example: null + updated_at: + type: string + example: null + links: + type: object + properties: + first: + type: string + example: '/?page=1' + last: + type: string + example: '/?page=1' + prev: + type: string + example: null + next: + type: string + example: null + meta: + type: object + properties: + current_page: + type: integer + example: 1 + from: + type: integer + example: 1 + last_page: + type: integer + example: 1 + links: + type: array + example: + - + url: null + label: '« Previous' + active: false + - + url: '/?page=1' + label: '1' + active: true + - + url: null + label: 'Next »' + active: false + items: + type: object + properties: + url: + type: string + example: null + label: + type: string + example: '« Previous' + active: + type: boolean + example: false + path: + type: string + example: / + per_page: + type: integer + example: 25 + to: + type: integer + example: 2 + total: + type: integer + example: 2 + tags: + - services + security: [] + parameters: + - + in: path + name: project_id + description: 'The ID of the project.' + example: 1 + required: true + schema: + type: integer + - + in: path + name: server_id + description: 'The ID of the server.' + example: 6 + required: true + schema: + type: integer + '/api/projects/{project_id}/servers/{server_id}/services/{id}': + get: + summary: show + operationId: show + description: 'Get a service by ID.' + parameters: [] + responses: + 200: + description: '' + content: + application/json: + schema: + type: object + example: + id: null + server_id: 1 + type: webserver + type_data: null + name: nginx + version: null + unit: null + status: ready + status_color: success + icon: '' + is_default: null + created_at: null + updated_at: null + properties: + id: + type: string + example: null + server_id: + type: integer + example: 1 + type: + type: string + example: webserver + type_data: + type: string + example: null + name: + type: string + example: nginx + version: + type: string + example: null + unit: + type: string + example: null + status: + type: string + example: ready + status_color: + type: string + example: success + icon: + type: string + example: '' + is_default: + type: string + example: null + created_at: + type: string + example: null + updated_at: + type: string + example: null + tags: + - services + security: [] + parameters: + - + in: path + name: project_id + description: 'The ID of the project.' + example: 1 + required: true + schema: + type: integer + - + in: path + name: server_id + description: 'The ID of the server.' + example: 6 + required: true + schema: + type: integer + - + in: path + name: id + description: 'The ID of the service.' + example: 22 + required: true + schema: + type: integer + '/api/projects/{project_id}/servers/{server_id}/services/{service_id}/start': + post: + summary: start + operationId: start + description: 'Start service.' + parameters: [] + responses: + 204: + description: '' + tags: + - services + security: [] + parameters: + - + in: path + name: project_id + description: 'The ID of the project.' + example: 1 + required: true + schema: + type: integer + - + in: path + name: server_id + description: 'The ID of the server.' + example: 6 + required: true + schema: + type: integer + - + in: path + name: service_id + description: 'The ID of the service.' + example: 22 + required: true + schema: + type: integer + '/api/projects/{project_id}/servers/{server_id}/services/{service_id}/stop': + post: + summary: stop + operationId: stop + description: 'Stop service.' + parameters: [] + responses: + 204: + description: '' + tags: + - services + security: [] + parameters: + - + in: path + name: project_id + description: 'The ID of the project.' + example: 1 + required: true + schema: + type: integer + - + in: path + name: server_id + description: 'The ID of the server.' + example: 6 + required: true + schema: + type: integer + - + in: path + name: service_id + description: 'The ID of the service.' + example: 22 + required: true + schema: + type: integer + '/api/projects/{project_id}/servers/{server_id}/services/{service_id}/restart': + post: + summary: restart + operationId: restart + description: 'Restart service.' + parameters: [] + responses: + 204: + description: '' + tags: + - services + security: [] + parameters: + - + in: path + name: project_id + description: 'The ID of the project.' + example: 1 + required: true + schema: + type: integer + - + in: path + name: server_id + description: 'The ID of the server.' + example: 6 + required: true + schema: + type: integer + - + in: path + name: service_id + description: 'The ID of the service.' + example: 22 + required: true + schema: + type: integer + '/api/projects/{project_id}/servers/{server_id}/services/{service_id}/enable': + post: + summary: enable + operationId: enable + description: 'Enable service.' + parameters: [] + responses: + 204: + description: '' + tags: + - services + security: [] + parameters: + - + in: path + name: project_id + description: 'The ID of the project.' + example: 1 + required: true + schema: + type: integer + - + in: path + name: server_id + description: 'The ID of the server.' + example: 6 + required: true + schema: + type: integer + - + in: path + name: service_id + description: 'The ID of the service.' + example: 22 + required: true + schema: + type: integer + '/api/projects/{project_id}/servers/{server_id}/services/{service_id}/disable': + post: + summary: disable + operationId: disable + description: 'Disable service.' + parameters: [] + responses: + 204: + description: '' + tags: + - services + security: [] + parameters: + - + in: path + name: project_id + description: 'The ID of the project.' + example: 1 + required: true + schema: + type: integer + - + in: path + name: server_id + description: 'The ID of the server.' + example: 6 + required: true + schema: + type: integer + - + in: path + name: service_id + description: 'The ID of the service.' + example: 22 + required: true + schema: + type: integer + '/api/projects/{project_id}/servers/{server_id}/services/{service_id}': + delete: + summary: delete + operationId: delete + description: 'Delete service.' + parameters: [] + responses: + 204: + description: '' + tags: + - services + security: [] + parameters: + - + in: path + name: project_id + description: 'The ID of the project.' + example: 1 + required: true + schema: + type: integer + - + in: path + name: server_id + description: 'The ID of the server.' + example: 6 + required: true + schema: + type: integer + - + in: path + name: service_id + description: 'The ID of the service.' + example: 22 + required: true + schema: + type: integer + '/api/projects/{project_id}/servers/{server_id}/sites': + get: + summary: list + operationId: list + description: 'Get all sites.' + parameters: [] + responses: + 200: + description: '' + content: + application/json: + schema: + type: object + example: + data: + - + id: 15 + server_id: 1 + source_control_id: null + type: laravel + type_data: null + features: + - deployment + - commands + - env + - ssl + - workers + domain: test.com + aliases: null + web_directory: / + path: /home + php_version: '8.2' + repository: null + branch: main + status: ready + status_color: success + auto_deploy: false + port: null + user: vito + url: 'http://test.com' + force_ssl: false + progress: 100 + created_at: '2025-06-10T10:21:56.000000Z' + updated_at: '2025-06-10T10:21:56.000000Z' + - + id: 16 + server_id: 1 + source_control_id: null + type: laravel + type_data: null + features: + - deployment + - commands + - env + - ssl + - workers + domain: test.com + aliases: null + web_directory: / + path: /home + php_version: '8.2' + repository: null + branch: main + status: ready + status_color: success + auto_deploy: false + port: null + user: vito + url: 'http://test.com' + force_ssl: false + progress: 100 + created_at: '2025-06-10T10:21:56.000000Z' + updated_at: '2025-06-10T10:21:56.000000Z' + links: + first: '/?page=1' + last: '/?page=1' + prev: null + next: null + meta: + current_page: 1 + from: 1 + last_page: 1 + links: + - + url: null + label: '« Previous' + active: false + - + url: '/?page=1' + label: '1' + active: true + - + url: null + label: 'Next »' + active: false + path: / + per_page: 25 + to: 2 + total: 2 + properties: + data: + type: array + example: + - + id: 15 + server_id: 1 + source_control_id: null + type: laravel + type_data: null + features: + - deployment + - commands + - env + - ssl + - workers + domain: test.com + aliases: null + web_directory: / + path: /home + php_version: '8.2' + repository: null + branch: main + status: ready + status_color: success + auto_deploy: false + port: null + user: vito + url: 'http://test.com' + force_ssl: false + progress: 100 + created_at: '2025-06-10T10:21:56.000000Z' + updated_at: '2025-06-10T10:21:56.000000Z' + - + id: 16 + server_id: 1 + source_control_id: null + type: laravel + type_data: null + features: + - deployment + - commands + - env + - ssl + - workers + domain: test.com + aliases: null + web_directory: / + path: /home + php_version: '8.2' + repository: null + branch: main + status: ready + status_color: success + auto_deploy: false + port: null + user: vito + url: 'http://test.com' + force_ssl: false + progress: 100 + created_at: '2025-06-10T10:21:56.000000Z' + updated_at: '2025-06-10T10:21:56.000000Z' + items: + type: object + properties: + id: + type: integer + example: 15 + server_id: + type: integer + example: 1 + source_control_id: + type: string + example: null + type: + type: string + example: laravel + type_data: + type: string + example: null + features: + type: array + example: + - deployment + - commands + - env + - ssl + - workers + items: + type: string + domain: + type: string + example: test.com + aliases: + type: string + example: null + web_directory: + type: string + example: / + path: + type: string + example: /home + php_version: + type: string + example: '8.2' + repository: + type: string + example: null + branch: + type: string + example: main + status: + type: string + example: ready + status_color: + type: string + example: success + auto_deploy: + type: boolean + example: false + port: + type: string + example: null + user: + type: string + example: vito + url: + type: string + example: 'http://test.com' + force_ssl: + type: boolean + example: false + progress: + type: integer + example: 100 + created_at: + type: string + example: '2025-06-10T10:21:56.000000Z' + updated_at: + type: string + example: '2025-06-10T10:21:56.000000Z' + links: + type: object + properties: + first: + type: string + example: '/?page=1' + last: + type: string + example: '/?page=1' + prev: + type: string + example: null + next: + type: string + example: null + meta: + type: object + properties: + current_page: + type: integer + example: 1 + from: + type: integer + example: 1 + last_page: + type: integer + example: 1 + links: + type: array + example: + - + url: null + label: '« Previous' + active: false + - + url: '/?page=1' + label: '1' + active: true + - + url: null + label: 'Next »' + active: false + items: + type: object + properties: + url: + type: string + example: null + label: + type: string + example: '« Previous' + active: + type: boolean + example: false + path: + type: string + example: / + per_page: + type: integer + example: 25 + to: + type: integer + example: 2 + total: + type: integer + example: 2 + tags: + - sites + security: [] + post: + summary: create + operationId: create + description: 'Create a new site.' + parameters: [] + responses: + 200: + description: '' + content: + application/json: + schema: + type: object + example: + id: 15 + server_id: 1 + source_control_id: null + type: laravel + type_data: null + features: + - deployment + - commands + - env + - ssl + - workers + domain: test.com + aliases: null + web_directory: / + path: /home + php_version: '8.2' + repository: null + branch: main + status: ready + status_color: success + auto_deploy: false + port: null + user: vito + url: 'http://test.com' + force_ssl: false + progress: 100 + created_at: '2025-06-10T10:21:56.000000Z' + updated_at: '2025-06-10T10:21:56.000000Z' + properties: + id: + type: integer + example: 15 + server_id: + type: integer + example: 1 + source_control_id: + type: string + example: null + type: + type: string + example: laravel + type_data: + type: string + example: null + features: + type: array + example: + - deployment + - commands + - env + - ssl + - workers + items: + type: string + domain: + type: string + example: test.com + aliases: + type: string + example: null + web_directory: + type: string + example: / + path: + type: string + example: /home + php_version: + type: string + example: '8.2' + repository: + type: string + example: null + branch: + type: string + example: main + status: + type: string + example: ready + status_color: + type: string + example: success + auto_deploy: + type: boolean + example: false + port: + type: string + example: null + user: + type: string + example: vito + url: + type: string + example: 'http://test.com' + force_ssl: + type: boolean + example: false + progress: + type: integer + example: 100 + created_at: + type: string + example: '2025-06-10T10:21:56.000000Z' + updated_at: + type: string + example: '2025-06-10T10:21:56.000000Z' + tags: + - sites + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + type: + type: string + description: '' + example: php-blank + nullable: false + enum: + - php + - php-blank + - phpmyadmin + - laravel + - wordpress + - load-balancer + domain: + type: string + description: '' + example: architecto + nullable: false + aliases: + type: array + description: '' + example: + - architecto + items: + type: string + php_version: + type: string + description: 'One of the installed PHP Versions' + example: '7.4' + nullable: false + web_directory: + type: string + description: 'Required for PHP and Laravel sites' + example: public + nullable: false + source_control: + type: string + description: 'Source control ID, Required for Sites which support source control' + example: architecto + nullable: false + repository: + type: string + description: 'Repository, Required for Sites which support source control' + example: organization/repository + nullable: false + branch: + type: string + description: 'Branch, Required for Sites which support source control' + example: main + nullable: false + composer: + type: boolean + description: 'Run composer if site supports composer' + example: true + nullable: false + version: + type: string + description: 'Version, if the site type requires a version like PHPMyAdmin' + example: 5.2.1 + nullable: false + user: + type: string + description: 'user, to isolate the website under a new user' + example: architecto + nullable: false + method: + type: string + description: 'Load balancer method, Required if the site type is Load balancer' + example: round-robin + nullable: false + enum: + - round-robin + - least-connections + - ip-hash + required: + - type + - domain + - aliases + - php_version + - web_directory + - source_control + - repository + - branch + - composer + - version + - user + - method + security: [] + parameters: + - + in: path + name: project_id + description: 'The ID of the project.' + example: 1 + required: true + schema: + type: integer + - + in: path + name: server_id + description: 'The ID of the server.' + example: 6 + required: true + schema: + type: integer + '/api/projects/{project_id}/servers/{server_id}/sites/{id}': + get: + summary: show + operationId: show + description: 'Get a site by ID.' + parameters: [] + responses: + 200: + description: '' + content: + application/json: + schema: + type: object + example: + id: 15 + server_id: 1 + source_control_id: null + type: laravel + type_data: null + features: + - deployment + - commands + - env + - ssl + - workers + domain: test.com + aliases: null + web_directory: / + path: /home + php_version: '8.2' + repository: null + branch: main + status: ready + status_color: success + auto_deploy: false + port: null + user: vito + url: 'http://test.com' + force_ssl: false + progress: 100 + created_at: '2025-06-10T10:21:56.000000Z' + updated_at: '2025-06-10T10:21:56.000000Z' + properties: + id: + type: integer + example: 15 + server_id: + type: integer + example: 1 + source_control_id: + type: string + example: null + type: + type: string + example: laravel + type_data: + type: string + example: null + features: + type: array + example: + - deployment + - commands + - env + - ssl + - workers + items: + type: string + domain: + type: string + example: test.com + aliases: + type: string + example: null + web_directory: + type: string + example: / + path: + type: string + example: /home + php_version: + type: string + example: '8.2' + repository: + type: string + example: null + branch: + type: string + example: main + status: + type: string + example: ready + status_color: + type: string + example: success + auto_deploy: + type: boolean + example: false + port: + type: string + example: null + user: + type: string + example: vito + url: + type: string + example: 'http://test.com' + force_ssl: + type: boolean + example: false + progress: + type: integer + example: 100 + created_at: + type: string + example: '2025-06-10T10:21:56.000000Z' + updated_at: + type: string + example: '2025-06-10T10:21:56.000000Z' + tags: + - sites + security: [] + parameters: + - + in: path + name: project_id + description: 'The ID of the project.' + example: 1 + required: true + schema: + type: integer + - + in: path + name: server_id + description: 'The ID of the server.' + example: 6 + required: true + schema: + type: integer + - + in: path + name: id + description: 'The ID of the site.' + example: 14 + required: true + schema: + type: integer + '/api/projects/{project_id}/servers/{server_id}/sites/{site_id}': + delete: + summary: delete + operationId: delete + description: 'Delete site.' + parameters: [] + responses: + 204: + description: '' + tags: + - sites + security: [] + parameters: + - + in: path + name: project_id + description: 'The ID of the project.' + example: 1 + required: true + schema: + type: integer + - + in: path + name: server_id + description: 'The ID of the server.' + example: 6 + required: true + schema: + type: integer + - + in: path + name: site_id + description: 'The ID of the site.' + example: 14 + required: true + schema: + type: integer + '/api/projects/{project_id}/servers/{server_id}/sites/{site_id}/load-balancer': + post: + summary: load-balancer + operationId: loadBalancer + description: 'Update load balancer.' + parameters: [] + responses: + 200: + description: '' + content: + application/json: + schema: + type: object + nullable: true + tags: + - sites + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + method: + type: string + description: 'Load balancer method, Required if the site type is Load balancer' + example: round-robin + nullable: false + enum: + - round-robin + - least-connections + - ip-hash + servers: + type: array + description: 'Array of servers including server, port, weight, backup. (server is the local IP of the server)' + example: + - architecto + items: + type: string + required: + - method + - servers + security: [] + parameters: + - + in: path + name: project_id + description: 'The ID of the project.' + example: 1 + required: true + schema: + type: integer + - + in: path + name: server_id + description: 'The ID of the server.' + example: 6 + required: true + schema: + type: integer + - + in: path + name: site_id + description: 'The ID of the site.' + example: 14 + required: true + schema: + type: integer + '/api/projects/{project_id}/servers/{server_id}/sites/{site_id}/aliases': + put: + summary: aliases + operationId: aliases + description: 'Update aliases.' + parameters: [] + responses: + 200: + description: '' + content: + application/json: + schema: + type: object + nullable: true + tags: + - sites + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + aliases: + type: array + description: 'Array of aliases' + example: + - architecto + items: + type: string + required: + - aliases + security: [] + parameters: + - + in: path + name: project_id + description: 'The ID of the project.' + example: 1 + required: true + schema: + type: integer + - + in: path + name: server_id + description: 'The ID of the server.' + example: 6 + required: true + schema: + type: integer + - + in: path + name: site_id + description: 'The ID of the site.' + example: 14 + required: true + schema: + type: integer + '/api/projects/{project_id}/servers/{server_id}/sites/{site_id}/deploy': + post: + summary: deploy + operationId: deploy + description: 'Run site deployment script' + parameters: [] + responses: + 200: + description: '' + content: + application/json: + schema: + type: object + nullable: true + tags: + - sites + security: [] + parameters: + - + in: path + name: project_id + description: 'The ID of the project.' + example: 1 + required: true + schema: + type: integer + - + in: path + name: server_id + description: 'The ID of the server.' + example: 6 + required: true + schema: + type: integer + - + in: path + name: site_id + description: 'The ID of the site.' + example: 14 + required: true + schema: + type: integer + '/api/projects/{project_id}/servers/{server_id}/sites/{site_id}/deployment-script': + put: + summary: deployment-script + operationId: deploymentScript + description: 'Update site deployment script' + parameters: [] + responses: + 204: + description: '' + tags: + - sites + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + script: + type: string + description: 'Content of the deployment script' + example: architecto + nullable: false + required: + - script + security: [] + get: + summary: deployment-script + operationId: deploymentScript + description: 'Get site deployment script content' + parameters: [] + responses: + 200: + description: '' + content: + application/json: + schema: + type: object + nullable: true + tags: + - sites + security: [] + parameters: + - + in: path + name: project_id + description: 'The ID of the project.' + example: 1 + required: true + schema: + type: integer + - + in: path + name: server_id + description: 'The ID of the server.' + example: 6 + required: true + schema: + type: integer + - + in: path + name: site_id + description: 'The ID of the site.' + example: 14 + required: true + schema: + type: integer + '/api/projects/{project_id}/servers/{server_id}/sites/{site_id}/env': + get: + summary: env + operationId: env + description: 'Get site .env file content' + parameters: [] + responses: + 200: + description: '' + content: + application/json: + schema: + type: object + example: + data: + env: APP_NAME=Laravel\nAPP_ENV=production + properties: + data: + type: object + properties: + env: + type: string + example: APP_NAME=Laravel\nAPP_ENV=production + tags: + - sites + security: [] + put: + summary: env + operationId: env + description: 'Update site .env file' + parameters: [] + responses: + 200: + description: '' + content: + application/json: + schema: + type: object + nullable: true + tags: + - sites + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + env: + type: string + description: 'Content of the .env file' + example: architecto + nullable: false + required: + - env + security: [] + parameters: + - + in: path + name: project_id + description: 'The ID of the project.' + example: 1 + required: true + schema: + type: integer + - + in: path + name: server_id + description: 'The ID of the server.' + example: 6 + required: true + schema: + type: integer + - + in: path + name: site_id + description: 'The ID of the site.' + example: 14 + required: true + schema: + type: integer + '/api/projects/{project_id}/source-controls': + get: + summary: list + operationId: list + description: '' + parameters: [] + responses: + 200: + description: '' + content: + application/json: + schema: + type: object + example: + data: + - + id: 2 + project_id: null + global: true + name: 'Ms. Elisabeth Okuneva' + provider: github + created_at: '2025-06-10T10:21:56.000000Z' + updated_at: '2025-06-10T10:21:56.000000Z' + - + id: 3 + project_id: null + global: true + name: "Aleen O'Kon" + provider: github + created_at: '2025-06-10T10:21:56.000000Z' + updated_at: '2025-06-10T10:21:56.000000Z' + links: + first: '/?page=1' + last: '/?page=1' + prev: null + next: null + meta: + current_page: 1 + from: 1 + last_page: 1 + links: + - + url: null + label: '« Previous' + active: false + - + url: '/?page=1' + label: '1' + active: true + - + url: null + label: 'Next »' + active: false + path: / + per_page: 25 + to: 2 + total: 2 + properties: + data: + type: array + example: + - + id: 2 + project_id: null + global: true + name: 'Ms. Elisabeth Okuneva' + provider: github + created_at: '2025-06-10T10:21:56.000000Z' + updated_at: '2025-06-10T10:21:56.000000Z' + - + id: 3 + project_id: null + global: true + name: "Aleen O'Kon" + provider: github + created_at: '2025-06-10T10:21:56.000000Z' + updated_at: '2025-06-10T10:21:56.000000Z' + items: + type: object + properties: + id: + type: integer + example: 2 + project_id: + type: string + example: null + global: + type: boolean + example: true + name: + type: string + example: 'Ms. Elisabeth Okuneva' + provider: + type: string + example: github + created_at: + type: string + example: '2025-06-10T10:21:56.000000Z' + updated_at: + type: string + example: '2025-06-10T10:21:56.000000Z' + links: + type: object + properties: + first: + type: string + example: '/?page=1' + last: + type: string + example: '/?page=1' + prev: + type: string + example: null + next: + type: string + example: null + meta: + type: object + properties: + current_page: + type: integer + example: 1 + from: + type: integer + example: 1 + last_page: + type: integer + example: 1 + links: + type: array + example: + - + url: null + label: '« Previous' + active: false + - + url: '/?page=1' + label: '1' + active: true + - + url: null + label: 'Next »' + active: false + items: + type: object + properties: + url: + type: string + example: null + label: + type: string + example: '« Previous' + active: + type: boolean + example: false + path: + type: string + example: / + per_page: + type: integer + example: 25 + to: + type: integer + example: 2 + total: + type: integer + example: 2 + tags: + - source-controls + security: [] + post: + summary: create + operationId: create + description: '' + parameters: [] + responses: + 200: + description: '' + content: + application/json: + schema: + type: object + example: + id: 2 + project_id: null + global: true + name: 'Mrs. Justina Gaylord' + provider: github + created_at: '2025-06-10T10:21:56.000000Z' + updated_at: '2025-06-10T10:21:56.000000Z' + properties: + id: + type: integer + example: 2 + project_id: + type: string + example: null + global: + type: boolean + example: true + name: + type: string + example: 'Mrs. Justina Gaylord' + provider: + type: string + example: github + created_at: + type: string + example: '2025-06-10T10:21:56.000000Z' + updated_at: + type: string + example: '2025-06-10T10:21:56.000000Z' + tags: + - source-controls + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + provider: + type: string + description: 'The provider' + example: gitlab + nullable: false + enum: + - gitlab + - github + - bitbucket + name: + type: string + description: 'The name of the storage provider.' + example: architecto + nullable: false + token: + type: string + description: 'The token if provider requires api token' + example: architecto + nullable: false + url: + type: string + description: 'The URL if the provider is Gitlab and it is self-hosted' + example: 'http://www.bailey.biz/quos-velit-et-fugiat-sunt-nihil-accusantium-harum.html' + nullable: false + username: + type: string + description: 'The username if the provider is Bitbucket' + example: architecto + nullable: false + password: + type: string + description: 'The password if the provider is Bitbucket' + example: '|]|{+-' + nullable: false + required: + - provider + - name + - token + - url + - username + - password + security: [] + parameters: + - + in: path + name: project_id + description: 'The ID of the project.' + example: 1 + required: true + schema: + type: integer + '/api/projects/{project_id}/source-controls/{sourceControl_id}': + get: + summary: show + operationId: show + description: '' + parameters: [] + responses: + 200: + description: '' + content: + application/json: + schema: + type: object + example: + id: 2 + project_id: null + global: true + name: 'Misael Runte' + provider: github + created_at: '2025-06-10T10:21:56.000000Z' + updated_at: '2025-06-10T10:21:56.000000Z' + properties: + id: + type: integer + example: 2 + project_id: + type: string + example: null + global: + type: boolean + example: true + name: + type: string + example: 'Misael Runte' + provider: + type: string + example: github + created_at: + type: string + example: '2025-06-10T10:21:56.000000Z' + updated_at: + type: string + example: '2025-06-10T10:21:56.000000Z' + tags: + - source-controls + security: [] + put: + summary: update + operationId: update + description: '' + parameters: [] + responses: + 200: + description: '' + content: + application/json: + schema: + type: object + example: + id: 2 + project_id: null + global: true + name: 'Mrs. Justina Gaylord' + provider: github + created_at: '2025-06-10T10:21:56.000000Z' + updated_at: '2025-06-10T10:21:56.000000Z' + properties: + id: + type: integer + example: 2 + project_id: + type: string + example: null + global: + type: boolean + example: true + name: + type: string + example: 'Mrs. Justina Gaylord' + provider: + type: string + example: github + created_at: + type: string + example: '2025-06-10T10:21:56.000000Z' + updated_at: + type: string + example: '2025-06-10T10:21:56.000000Z' + tags: + - source-controls + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + name: + type: string + description: 'The name of the storage provider.' + example: architecto + nullable: false + token: + type: string + description: 'The token if provider requires api token' + example: architecto + nullable: false + url: + type: string + description: 'The URL if the provider is Gitlab and it is self-hosted' + example: 'http://www.bailey.biz/quos-velit-et-fugiat-sunt-nihil-accusantium-harum.html' + nullable: false + username: + type: string + description: 'The username if the provider is Bitbucket' + example: architecto + nullable: false + password: + type: string + description: 'The password if the provider is Bitbucket' + example: '|]|{+-' + nullable: false + global: + type: string + description: 'Accessible in all projects' + example: false + nullable: false + enum: + - true + - false + required: + - name + - token + - url + - username + - password + - global + security: [] + delete: + summary: delete + operationId: delete + description: '' + parameters: [] + responses: + 204: + description: '' + tags: + - source-controls + security: [] + parameters: + - + in: path + name: project_id + description: 'The ID of the project.' + example: 1 + required: true + schema: + type: integer + - + in: path + name: sourceControl_id + description: 'The ID of the sourceControl.' + example: 1 + required: true + schema: + type: integer + '/api/projects/{project_id}/servers/{server_id}/ssh-keys': + get: + summary: list + operationId: list + description: 'Get all ssh keys.' + parameters: [] + responses: + 200: + description: '' + content: + application/json: + schema: + type: object + example: + data: + - + id: 3 + name: 'Haven Romaguera' + created_at: '2025-06-10T10:21:56.000000Z' + updated_at: '2025-06-10T10:21:56.000000Z' + - + id: 4 + name: 'Viva Marquardt' + created_at: '2025-06-10T10:21:56.000000Z' + updated_at: '2025-06-10T10:21:56.000000Z' + links: + first: '/?page=1' + last: '/?page=1' + prev: null + next: null + meta: + current_page: 1 + from: 1 + last_page: 1 + links: + - + url: null + label: '« Previous' + active: false + - + url: '/?page=1' + label: '1' + active: true + - + url: null + label: 'Next »' + active: false + path: / + per_page: 25 + to: 2 + total: 2 + properties: + data: + type: array + example: + - + id: 3 + name: 'Haven Romaguera' + created_at: '2025-06-10T10:21:56.000000Z' + updated_at: '2025-06-10T10:21:56.000000Z' + - + id: 4 + name: 'Viva Marquardt' + created_at: '2025-06-10T10:21:56.000000Z' + updated_at: '2025-06-10T10:21:56.000000Z' + items: + type: object + properties: + id: + type: integer + example: 3 + name: + type: string + example: 'Haven Romaguera' + created_at: + type: string + example: '2025-06-10T10:21:56.000000Z' + updated_at: + type: string + example: '2025-06-10T10:21:56.000000Z' + links: + type: object + properties: + first: + type: string + example: '/?page=1' + last: + type: string + example: '/?page=1' + prev: + type: string + example: null + next: + type: string + example: null + meta: + type: object + properties: + current_page: + type: integer + example: 1 + from: + type: integer + example: 1 + last_page: + type: integer + example: 1 + links: + type: array + example: + - + url: null + label: '« Previous' + active: false + - + url: '/?page=1' + label: '1' + active: true + - + url: null + label: 'Next »' + active: false + items: + type: object + properties: + url: + type: string + example: null + label: + type: string + example: '« Previous' + active: + type: boolean + example: false + path: + type: string + example: / + per_page: + type: integer + example: 25 + to: + type: integer + example: 2 + total: + type: integer + example: 2 + tags: + - ssh-keys + security: [] + post: + summary: create + operationId: create + description: 'Deploy ssh key to server.' + parameters: [] + responses: + 200: + description: '' + content: + application/json: + schema: + type: object + example: + id: 3 + name: 'Ms. Elisabeth Okuneva' + created_at: '2025-06-10T10:21:56.000000Z' + updated_at: '2025-06-10T10:21:56.000000Z' + properties: + id: + type: integer + example: 3 + name: + type: string + example: 'Ms. Elisabeth Okuneva' + created_at: + type: string + example: '2025-06-10T10:21:56.000000Z' + updated_at: + type: string + example: '2025-06-10T10:21:56.000000Z' + tags: + - ssh-keys + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + key_id: + type: string + description: 'The ID of the key.' + example: architecto + nullable: false + name: + type: string + description: 'Key name, required if key_id is not provided.' + example: architecto + nullable: false + public_key: + type: string + description: 'Public Key, required if key_id is not provided.' + example: architecto + nullable: false + required: + - key_id + - name + - public_key + security: [] + parameters: + - + in: path + name: project_id + description: 'The ID of the project.' + example: 1 + required: true + schema: + type: integer + - + in: path + name: server_id + description: 'The ID of the server.' + example: 6 + required: true + schema: + type: integer + '/api/projects/{project_id}/servers/{server_id}/ssh-keys/{sshKey_id}': + delete: + summary: delete + operationId: delete + description: 'Delete ssh key from server.' + parameters: [] + responses: + 204: + description: '' + tags: + - ssh-keys + security: [] + parameters: + - + in: path + name: project_id + description: 'The ID of the project.' + example: 1 + required: true + schema: + type: integer + - + in: path + name: server_id + description: 'The ID of the server.' + example: 6 + required: true + schema: + type: integer + - + in: path + name: sshKey_id + description: 'The ID of the sshKey.' + example: 1 + required: true + schema: + type: integer + '/api/projects/{project_id}/storage-providers': + get: + summary: list + operationId: list + description: '' + parameters: [] + responses: + 200: + description: '' + content: + application/json: + schema: + type: object + example: + data: + - + id: 4 + project_id: null + global: true + name: harum + provider: local + created_at: '2025-06-10T10:21:56.000000Z' + updated_at: '2025-06-10T10:21:56.000000Z' + - + id: 5 + project_id: null + global: true + name: commodi + provider: local + created_at: '2025-06-10T10:21:56.000000Z' + updated_at: '2025-06-10T10:21:56.000000Z' + links: + first: '/?page=1' + last: '/?page=1' + prev: null + next: null + meta: + current_page: 1 + from: 1 + last_page: 1 + links: + - + url: null + label: '« Previous' + active: false + - + url: '/?page=1' + label: '1' + active: true + - + url: null + label: 'Next »' + active: false + path: / + per_page: 25 + to: 2 + total: 2 + properties: + data: + type: array + example: + - + id: 4 + project_id: null + global: true + name: harum + provider: local + created_at: '2025-06-10T10:21:56.000000Z' + updated_at: '2025-06-10T10:21:56.000000Z' + - + id: 5 + project_id: null + global: true + name: commodi + provider: local + created_at: '2025-06-10T10:21:56.000000Z' + updated_at: '2025-06-10T10:21:56.000000Z' + items: + type: object + properties: + id: + type: integer + example: 4 + project_id: + type: string + example: null + global: + type: boolean + example: true + name: + type: string + example: harum + provider: + type: string + example: local + created_at: + type: string + example: '2025-06-10T10:21:56.000000Z' + updated_at: + type: string + example: '2025-06-10T10:21:56.000000Z' + links: + type: object + properties: + first: + type: string + example: '/?page=1' + last: + type: string + example: '/?page=1' + prev: + type: string + example: null + next: + type: string + example: null + meta: + type: object + properties: + current_page: + type: integer + example: 1 + from: + type: integer + example: 1 + last_page: + type: integer + example: 1 + links: + type: array + example: + - + url: null + label: '« Previous' + active: false + - + url: '/?page=1' + label: '1' + active: true + - + url: null + label: 'Next »' + active: false + items: + type: object + properties: + url: + type: string + example: null + label: + type: string + example: '« Previous' + active: + type: boolean + example: false + path: + type: string + example: / + per_page: + type: integer + example: 25 + to: + type: integer + example: 2 + total: + type: integer + example: 2 + tags: + - storage-providers + security: [] + post: + summary: create + operationId: create + description: '' + parameters: [] + responses: + 200: + description: '' + content: + application/json: + schema: + type: object + example: + id: 4 + project_id: null + global: true + name: eius + provider: local + created_at: '2025-06-10T10:21:56.000000Z' + updated_at: '2025-06-10T10:21:56.000000Z' + properties: + id: + type: integer + example: 4 + project_id: + type: string + example: null + global: + type: boolean + example: true + name: + type: string + example: eius + provider: + type: string + example: local + created_at: + type: string + example: '2025-06-10T10:21:56.000000Z' + updated_at: + type: string + example: '2025-06-10T10:21:56.000000Z' + tags: + - storage-providers + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + provider: + type: string + description: 'The provider (aws, linode, hetzner, digitalocean, vultr, ...)' + example: architecto + nullable: false + name: + type: string + description: 'The name of the storage provider.' + example: architecto + nullable: false + token: + type: string + description: 'The token if provider requires api token' + example: architecto + nullable: false + key: + type: string + description: 'The key if provider requires key' + example: architecto + nullable: false + secret: + type: string + description: 'The secret if provider requires key' + example: architecto + nullable: false + required: + - provider + - name + - token + - key + - secret + security: [] + parameters: + - + in: path + name: project_id + description: 'The ID of the project.' + example: 1 + required: true + schema: + type: integer + '/api/projects/{project_id}/storage-providers/{storageProvider_id}': + get: + summary: show + operationId: show + description: '' + parameters: [] + responses: + 200: + description: '' + content: + application/json: + schema: + type: object + example: + id: 4 + project_id: null + global: true + name: et + provider: dropbox + created_at: '2025-06-10T10:21:56.000000Z' + updated_at: '2025-06-10T10:21:56.000000Z' + properties: + id: + type: integer + example: 4 + project_id: + type: string + example: null + global: + type: boolean + example: true + name: + type: string + example: et + provider: + type: string + example: dropbox + created_at: + type: string + example: '2025-06-10T10:21:56.000000Z' + updated_at: + type: string + example: '2025-06-10T10:21:56.000000Z' + tags: + - storage-providers + security: [] + put: + summary: update + operationId: update + description: '' + parameters: [] + responses: + 200: + description: '' + content: + application/json: + schema: + type: object + example: + id: 4 + project_id: null + global: true + name: eius + provider: local + created_at: '2025-06-10T10:21:56.000000Z' + updated_at: '2025-06-10T10:21:56.000000Z' + properties: + id: + type: integer + example: 4 + project_id: + type: string + example: null + global: + type: boolean + example: true + name: + type: string + example: eius + provider: + type: string + example: local + created_at: + type: string + example: '2025-06-10T10:21:56.000000Z' + updated_at: + type: string + example: '2025-06-10T10:21:56.000000Z' + tags: + - storage-providers + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + name: + type: string + description: 'The name of the storage provider.' + example: architecto + nullable: false + global: + type: string + description: 'Accessible in all projects' + example: true + nullable: false + enum: + - true + - false + required: + - name + - global + security: [] + delete: + summary: delete + operationId: delete + description: '' + parameters: [] + responses: + 204: + description: '' + tags: + - storage-providers + security: [] + parameters: + - + in: path + name: project_id + description: 'The ID of the project.' + example: 1 + required: true + schema: + type: integer + - + in: path + name: storageProvider_id + description: 'The ID of the storageProvider.' + example: 1 + required: true + schema: + type: integer diff --git a/resources/js/pages/api-keys/index.tsx b/resources/js/pages/api-keys/index.tsx index 32002343..470450ac 100644 --- a/resources/js/pages/api-keys/index.tsx +++ b/resources/js/pages/api-keys/index.tsx @@ -21,7 +21,7 @@ export default function ApiKeys() {
- + diff --git a/resources/views/scribe/index.blade.php b/resources/views/scribe/index.blade.php deleted file mode 100644 index 658418b9..00000000 --- a/resources/views/scribe/index.blade.php +++ /dev/null @@ -1,17450 +0,0 @@ - - - - - - - API Documentation - - - - - - - - - - - - - - - - - - - - - - - - - MENU - navbar-image - - -
-
- - -
- - - -
- - - - - - - - - - - - - - - - -
- - - - -
- -
-
-
-

Introduction

-

VitoDeploy's API documentation.

- -
This documentation aims to provide all the information you need to work with our API.
-
-<aside>As you scroll, you'll see code examples for working with the API in different programming languages in the dark area to the right (or as part of the content on mobile).
-You can switch the language used with the tabs at the top right (or from the nav menu at the top left on mobile).</aside>
- -

Authenticating requests

-

This API is not authenticated.

- -

cron-jobs

- -

list

- -

- -

Get all cron jobs.

- - -
Example request:
- -
-
curl --request GET \
-    --get "https://vito.test/api/projects/1/servers/32/cron-jobs" \
-    --header "Content-Type: application/json" \
-    --header "Accept: application/json"
-
- -
-
const url = new URL(
-    "https://vito.test/api/projects/1/servers/32/cron-jobs"
-);
-
-const headers = {
-    "Content-Type": "application/json",
-    "Accept": "application/json",
-};
-
-fetch(url, {
-    method: "GET",
-    headers,
-}).then(response => response.json());
-
-
- - -
-

Example response (200):

-
-
-
-{
-    "data": [
-        {
-            "id": 5,
-            "server_id": 1,
-            "command": "ls -la",
-            "user": "root",
-            "frequency": "* * * * *",
-            "status": "ready",
-            "created_at": "2025-04-21T18:40:19.000000Z",
-            "updated_at": "2025-04-21T18:40:19.000000Z"
-        },
-        {
-            "id": 6,
-            "server_id": 1,
-            "command": "ls -la",
-            "user": "root",
-            "frequency": "* * * * *",
-            "status": "ready",
-            "created_at": "2025-04-21T18:40:19.000000Z",
-            "updated_at": "2025-04-21T18:40:19.000000Z"
-        }
-    ],
-    "links": {
-        "first": "/?page=1",
-        "last": "/?page=1",
-        "prev": null,
-        "next": null
-    },
-    "meta": {
-        "current_page": 1,
-        "from": 1,
-        "last_page": 1,
-        "links": [
-            {
-                "url": null,
-                "label": "&laquo; Previous",
-                "active": false
-            },
-            {
-                "url": "/?page=1",
-                "label": "1",
-                "active": true
-            },
-            {
-                "url": null,
-                "label": "Next &raquo;",
-                "active": false
-            }
-        ],
-        "path": "/",
-        "per_page": 25,
-        "to": 2,
-        "total": 2
-    }
-}
- 
-
- - -
-

- Request    - - -    - -

-

- GET - api/projects/{project_id}/servers/{server_id}/cron-jobs -

-

Headers

-
- Content-Type -        - -
-

- Example: - application/json -

-
-
- Accept -        - -
-

- Example: - application/json -

-
-

URL Parameters

-
- project_id -    - integer -     - -
-

- The ID of the project. Example: - 1 -

-
-
- server_id -    - integer -     - -
-

- The ID of the server. Example: - 32 -

-
-
- -

create

- -

- -

Create a new cron job.

- - -
Example request:
- -
-
curl --request POST \
-    "https://vito.test/api/projects/1/servers/32/cron-jobs" \
-    --header "Content-Type: application/json" \
-    --header "Accept: application/json" \
-    --data "{
-    \"command\": \"consequatur\",
-    \"user\": \"vito\",
-    \"frequency\": \"* * * * *\"
-}"
-
-
- -
-
const url = new URL(
-    "https://vito.test/api/projects/1/servers/32/cron-jobs"
-);
-
-const headers = {
-    "Content-Type": "application/json",
-    "Accept": "application/json",
-};
-
-let body = {
-    "command": "consequatur",
-    "user": "vito",
-    "frequency": "* * * * *"
-};
-
-fetch(url, {
-    method: "POST",
-    headers,
-    body: JSON.stringify(body),
-}).then(response => response.json());
-
-
- - -
-

Example response (200):

-
-
-
-{
-    "id": 5,
-    "server_id": 1,
-    "command": "ls -la",
-    "user": "root",
-    "frequency": "* * * * *",
-    "status": "ready",
-    "created_at": "2025-04-21T18:40:19.000000Z",
-    "updated_at": "2025-04-21T18:40:19.000000Z"
-}
- 
-
- - -
-

- Request    - - -    - -

-

- POST - api/projects/{project_id}/servers/{server_id}/cron-jobs -

-

Headers

-
- Content-Type -        - -
-

- Example: - application/json -

-
-
- Accept -        - -
-

- Example: - application/json -

-
-

URL Parameters

-
- project_id -    - integer -     - -
-

- The ID of the project. Example: - 1 -

-
-
- server_id -    - integer -     - -
-

- The ID of the server. Example: - 32 -

-
-

Body Parameters

-
- command -    - string -     - -
-

- Example: - consequatur -

-
-
- user -    - string -     - -
-

- Example: - vito -

- Must be one of: -
    -
  • root
  • -
  • vito
  • -
-
-
- frequency -    - string -     - -
-

- Frequency of the cron job. Example: - * * * * * -

-
-
- -

show

- -

- -

Get a cron job by ID.

- - -
Example request:
- -
-
curl --request GET \
-    --get "https://vito.test/api/projects/1/servers/32/cron-jobs/17" \
-    --header "Content-Type: application/json" \
-    --header "Accept: application/json"
-
- -
-
const url = new URL(
-    "https://vito.test/api/projects/1/servers/32/cron-jobs/17"
-);
-
-const headers = {
-    "Content-Type": "application/json",
-    "Accept": "application/json",
-};
-
-fetch(url, {
-    method: "GET",
-    headers,
-}).then(response => response.json());
-
-
- - -
-

Example response (200):

-
-
-
-{
-    "id": 5,
-    "server_id": 1,
-    "command": "ls -la",
-    "user": "root",
-    "frequency": "* * * * *",
-    "status": "ready",
-    "created_at": "2025-04-21T18:40:19.000000Z",
-    "updated_at": "2025-04-21T18:40:19.000000Z"
-}
- 
-
- - -
-

- Request    - - -    - -

-

- GET - api/projects/{project_id}/servers/{server_id}/cron-jobs/{cronJob_id} -

-

Headers

-
- Content-Type -        - -
-

- Example: - application/json -

-
-
- Accept -        - -
-

- Example: - application/json -

-
-

URL Parameters

-
- project_id -    - integer -     - -
-

- The ID of the project. Example: - 1 -

-
-
- server_id -    - integer -     - -
-

- The ID of the server. Example: - 32 -

-
-
- cronJob_id -    - integer -     - -
-

- The ID of the cronJob. Example: - 17 -

-
-
- -

- delete -

- -

- -

Delete cron job.

- - -
Example request:
- -
-
curl --request DELETE \
-    "https://vito.test/api/projects/1/servers/32/cron-jobs/17" \
-    --header "Content-Type: application/json" \
-    --header "Accept: application/json"
-
- -
-
const url = new URL(
-    "https://vito.test/api/projects/1/servers/32/cron-jobs/17"
-);
-
-const headers = {
-    "Content-Type": "application/json",
-    "Accept": "application/json",
-};
-
-fetch(url, {
-    method: "DELETE",
-    headers,
-}).then(response => response.json());
-
-
- - -
-

Example response (204):

-
-
-Empty response
- 
-
- - -
-

- Request    - - -    - -

-

- DELETE - api/projects/{project_id}/servers/{server_id}/cron-jobs/{cronJob_id} -

-

Headers

-
- Content-Type -        - -
-

- Example: - application/json -

-
-
- Accept -        - -
-

- Example: - application/json -

-
-

URL Parameters

-
- project_id -    - integer -     - -
-

- The ID of the project. Example: - 1 -

-
-
- server_id -    - integer -     - -
-

- The ID of the server. Example: - 32 -

-
-
- cronJob_id -    - integer -     - -
-

- The ID of the cronJob. Example: - 17 -

-
-
- -

database-users

- -

list

- -

- -

Get all database users.

- - -
Example request:
- -
-
curl --request GET \
-    --get "https://vito.test/api/projects/1/servers/32/database-users" \
-    --header "Content-Type: application/json" \
-    --header "Accept: application/json"
-
- -
-
const url = new URL(
-    "https://vito.test/api/projects/1/servers/32/database-users"
-);
-
-const headers = {
-    "Content-Type": "application/json",
-    "Accept": "application/json",
-};
-
-fetch(url, {
-    method: "GET",
-    headers,
-}).then(response => response.json());
-
-
- - -
-

Example response (200):

-
-
-
-{
-    "data": [
-        {
-            "id": 19,
-            "server_id": 1,
-            "username": "graciela37",
-            "databases": [],
-            "host": "%",
-            "status": "creating",
-            "created_at": "2025-04-21T18:40:19.000000Z",
-            "updated_at": "2025-04-21T18:40:19.000000Z"
-        },
-        {
-            "id": 20,
-            "server_id": 1,
-            "username": "vconn",
-            "databases": [],
-            "host": "%",
-            "status": "creating",
-            "created_at": "2025-04-21T18:40:19.000000Z",
-            "updated_at": "2025-04-21T18:40:19.000000Z"
-        }
-    ],
-    "links": {
-        "first": "/?page=1",
-        "last": "/?page=1",
-        "prev": null,
-        "next": null
-    },
-    "meta": {
-        "current_page": 1,
-        "from": 1,
-        "last_page": 1,
-        "links": [
-            {
-                "url": null,
-                "label": "&laquo; Previous",
-                "active": false
-            },
-            {
-                "url": "/?page=1",
-                "label": "1",
-                "active": true
-            },
-            {
-                "url": null,
-                "label": "Next &raquo;",
-                "active": false
-            }
-        ],
-        "path": "/",
-        "per_page": 25,
-        "to": 2,
-        "total": 2
-    }
-}
- 
-
- - -
-

- Request    - - -    - -

-

- GET - api/projects/{project_id}/servers/{server_id}/database-users -

-

Headers

-
- Content-Type -        - -
-

- Example: - application/json -

-
-
- Accept -        - -
-

- Example: - application/json -

-
-

URL Parameters

-
- project_id -    - integer -     - -
-

- The ID of the project. Example: - 1 -

-
-
- server_id -    - integer -     - -
-

- The ID of the server. Example: - 32 -

-
-
- -

create

- -

- -

Create a new database user.

- - -
Example request:
- -
-
curl --request POST \
-    "https://vito.test/api/projects/1/servers/32/database-users" \
-    --header "Content-Type: application/json" \
-    --header "Accept: application/json" \
-    --data "{
-    \"username\": \"consequatur\",
-    \"password\": \"O[2UZ5ij-e\\/dl4m{o,\",
-    \"host\": \"%\"
-}"
-
-
- -
-
const url = new URL(
-    "https://vito.test/api/projects/1/servers/32/database-users"
-);
-
-const headers = {
-    "Content-Type": "application/json",
-    "Accept": "application/json",
-};
-
-let body = {
-    "username": "consequatur",
-    "password": "O[2UZ5ij-e\/dl4m{o,",
-    "host": "%"
-};
-
-fetch(url, {
-    method: "POST",
-    headers,
-    body: JSON.stringify(body),
-}).then(response => response.json());
-
-
- - -
-

Example response (200):

-
-
-
-{
-    "id": 19,
-    "server_id": 1,
-    "username": "nolan.jaylan",
-    "databases": [],
-    "host": "%",
-    "status": "creating",
-    "created_at": "2025-04-21T18:40:19.000000Z",
-    "updated_at": "2025-04-21T18:40:19.000000Z"
-}
- 
-
- - -
-

- Request    - - -    - -

-

- POST - api/projects/{project_id}/servers/{server_id}/database-users -

-

Headers

-
- Content-Type -        - -
-

- Example: - application/json -

-
-
- Accept -        - -
-

- Example: - application/json -

-
-

URL Parameters

-
- project_id -    - integer -     - -
-

- The ID of the project. Example: - 1 -

-
-
- server_id -    - integer -     - -
-

- The ID of the server. Example: - 32 -

-
-

Body Parameters

-
- username -    - string -     - -
-

- Example: - consequatur -

-
-
- password -    - string -     - -
-

- Example: - O[2UZ5ij-e/dl4m{o, -

-
-
- host -    - string -     - -
-

- Host, if it is a remote user. Example: - % -

-
-
- -

- show -

- -

- -

Get a database user by ID.

- - -
Example request:
- -
-
curl --request GET \
-    --get "https://vito.test/api/projects/1/servers/32/database-users/17" \
-    --header "Content-Type: application/json" \
-    --header "Accept: application/json"
-
- -
-
const url = new URL(
-    "https://vito.test/api/projects/1/servers/32/database-users/17"
-);
-
-const headers = {
-    "Content-Type": "application/json",
-    "Accept": "application/json",
-};
-
-fetch(url, {
-    method: "GET",
-    headers,
-}).then(response => response.json());
-
-
- - -
-

Example response (200):

-
-
-
-{
-    "id": 19,
-    "server_id": 1,
-    "username": "carolyne.luettgen",
-    "databases": [],
-    "host": "%",
-    "status": "creating",
-    "created_at": "2025-04-21T18:40:19.000000Z",
-    "updated_at": "2025-04-21T18:40:19.000000Z"
-}
- 
-
- - -
-

- Request    - - -    - -

-

- GET - - api/projects/{project_id}/servers/{server_id}/database-users/{databaseUser_id} - -

-

Headers

-
- Content-Type -        - -
-

- Example: - application/json -

-
-
- Accept -        - -
-

- Example: - application/json -

-
-

URL Parameters

-
- project_id -    - integer -     - -
-

- The ID of the project. Example: - 1 -

-
-
- server_id -    - integer -     - -
-

- The ID of the server. Example: - 32 -

-
-
- databaseUser_id -    - integer -     - -
-

- The ID of the databaseUser. Example: - 17 -

-
-
- - - -

- -

Link to databases

- - -
Example request:
- -
-
curl --request POST \
-    "https://vito.test/api/projects/1/servers/32/database-users/17/link" \
-    --header "Content-Type: application/json" \
-    --header "Accept: application/json" \
-    --data "{
-    \"databases\": \"consequatur\"
-}"
-
-
- -
-
const url = new URL(
-    "https://vito.test/api/projects/1/servers/32/database-users/17/link"
-);
-
-const headers = {
-    "Content-Type": "application/json",
-    "Accept": "application/json",
-};
-
-let body = {
-    "databases": "consequatur"
-};
-
-fetch(url, {
-    method: "POST",
-    headers,
-    body: JSON.stringify(body),
-}).then(response => response.json());
-
-
- - -
-

Example response (200):

-
-
-
-{
-    "id": 19,
-    "server_id": 1,
-    "username": "carolyne.luettgen",
-    "databases": [],
-    "host": "%",
-    "status": "creating",
-    "created_at": "2025-04-21T18:40:19.000000Z",
-    "updated_at": "2025-04-21T18:40:19.000000Z"
-}
- 
-
- - - - -

- delete -

- -

- -

Delete database user.

- - -
Example request:
- -
-
curl --request DELETE \
-    "https://vito.test/api/projects/1/servers/32/database-users/17" \
-    --header "Content-Type: application/json" \
-    --header "Accept: application/json"
-
- -
-
const url = new URL(
-    "https://vito.test/api/projects/1/servers/32/database-users/17"
-);
-
-const headers = {
-    "Content-Type": "application/json",
-    "Accept": "application/json",
-};
-
-fetch(url, {
-    method: "DELETE",
-    headers,
-}).then(response => response.json());
-
-
- - -
-

Example response (204):

-
-
-Empty response
- 
-
- - -
-

- Request    - - -    - -

-

- DELETE - - api/projects/{project_id}/servers/{server_id}/database-users/{databaseUser_id} - -

-

Headers

-
- Content-Type -        - -
-

- Example: - application/json -

-
-
- Accept -        - -
-

- Example: - application/json -

-
-

URL Parameters

-
- project_id -    - integer -     - -
-

- The ID of the project. Example: - 1 -

-
-
- server_id -    - integer -     - -
-

- The ID of the server. Example: - 32 -

-
-
- databaseUser_id -    - integer -     - -
-

- The ID of the databaseUser. Example: - 17 -

-
-
- -

databases

- -

list

- -

- -

Get all databases.

- - -
Example request:
- -
-
curl --request GET \
-    --get "https://vito.test/api/projects/1/servers/32/databases" \
-    --header "Content-Type: application/json" \
-    --header "Accept: application/json"
-
- -
-
const url = new URL(
-    "https://vito.test/api/projects/1/servers/32/databases"
-);
-
-const headers = {
-    "Content-Type": "application/json",
-    "Accept": "application/json",
-};
-
-fetch(url, {
-    method: "GET",
-    headers,
-}).then(response => response.json());
-
-
- - -
-

Example response (200):

-
-
-
-{
-    "data": [
-        {
-            "id": 21,
-            "server_id": 1,
-            "name": "carolyne.luettgen",
-            "status": "ready",
-            "created_at": "2025-04-21T18:40:19.000000Z",
-            "updated_at": "2025-04-21T18:40:19.000000Z"
-        },
-        {
-            "id": 22,
-            "server_id": 1,
-            "name": "orville77",
-            "status": "ready",
-            "created_at": "2025-04-21T18:40:19.000000Z",
-            "updated_at": "2025-04-21T18:40:19.000000Z"
-        }
-    ],
-    "links": {
-        "first": "/?page=1",
-        "last": "/?page=1",
-        "prev": null,
-        "next": null
-    },
-    "meta": {
-        "current_page": 1,
-        "from": 1,
-        "last_page": 1,
-        "links": [
-            {
-                "url": null,
-                "label": "&laquo; Previous",
-                "active": false
-            },
-            {
-                "url": "/?page=1",
-                "label": "1",
-                "active": true
-            },
-            {
-                "url": null,
-                "label": "Next &raquo;",
-                "active": false
-            }
-        ],
-        "path": "/",
-        "per_page": 25,
-        "to": 2,
-        "total": 2
-    }
-}
- 
-
- - -
-

- Request    - - -    - -

-

- GET - api/projects/{project_id}/servers/{server_id}/databases -

-

Headers

-
- Content-Type -        - -
-

- Example: - application/json -

-
-
- Accept -        - -
-

- Example: - application/json -

-
-

URL Parameters

-
- project_id -    - integer -     - -
-

- The ID of the project. Example: - 1 -

-
-
- server_id -    - integer -     - -
-

- The ID of the server. Example: - 32 -

-
-
- -

create

- -

- -

Create a new database.

- - -
Example request:
- -
-
curl --request POST \
-    "https://vito.test/api/projects/1/servers/32/databases" \
-    --header "Content-Type: application/json" \
-    --header "Accept: application/json" \
-    --data "{
-    \"name\": \"consequatur\",
-    \"charset\": \"consequatur\",
-    \"collation\": \"consequatur\"
-}"
-
-
- -
-
const url = new URL(
-    "https://vito.test/api/projects/1/servers/32/databases"
-);
-
-const headers = {
-    "Content-Type": "application/json",
-    "Accept": "application/json",
-};
-
-let body = {
-    "name": "consequatur",
-    "charset": "consequatur",
-    "collation": "consequatur"
-};
-
-fetch(url, {
-    method: "POST",
-    headers,
-    body: JSON.stringify(body),
-}).then(response => response.json());
-
-
- - -
-

Example response (200):

-
-
-
-{
-    "id": 21,
-    "server_id": 1,
-    "name": "carolyne.luettgen",
-    "status": "ready",
-    "created_at": "2025-04-21T18:40:19.000000Z",
-    "updated_at": "2025-04-21T18:40:19.000000Z"
-}
- 
-
- - -
-

- Request    - - -    - -

-

- POST - api/projects/{project_id}/servers/{server_id}/databases -

-

Headers

-
- Content-Type -        - -
-

- Example: - application/json -

-
-
- Accept -        - -
-

- Example: - application/json -

-
-

URL Parameters

-
- project_id -    - integer -     - -
-

- The ID of the project. Example: - 1 -

-
-
- server_id -    - integer -     - -
-

- The ID of the server. Example: - 32 -

-
-

Body Parameters

-
- name -    - string -     - -
-

- Example: - consequatur -

-
-
- charset -    - string -     - -
-

- Example: - consequatur -

-
-
- collation -    - string -     - -
-

- Example: - consequatur -

-
-
- -

show

- -

- -

Get a database by ID.

- - -
Example request:
- -
-
curl --request GET \
-    --get "https://vito.test/api/projects/1/servers/32/databases/17" \
-    --header "Content-Type: application/json" \
-    --header "Accept: application/json"
-
- -
-
const url = new URL(
-    "https://vito.test/api/projects/1/servers/32/databases/17"
-);
-
-const headers = {
-    "Content-Type": "application/json",
-    "Accept": "application/json",
-};
-
-fetch(url, {
-    method: "GET",
-    headers,
-}).then(response => response.json());
-
-
- - -
-

Example response (200):

-
-
-
-{
-    "id": 21,
-    "server_id": 1,
-    "name": "carolyne.luettgen",
-    "status": "ready",
-    "created_at": "2025-04-21T18:40:19.000000Z",
-    "updated_at": "2025-04-21T18:40:19.000000Z"
-}
- 
-
- - -
-

- Request    - - -    - -

-

- GET - api/projects/{project_id}/servers/{server_id}/databases/{id} -

-

Headers

-
- Content-Type -        - -
-

- Example: - application/json -

-
-
- Accept -        - -
-

- Example: - application/json -

-
-

URL Parameters

-
- project_id -    - integer -     - -
-

- The ID of the project. Example: - 1 -

-
-
- server_id -    - integer -     - -
-

- The ID of the server. Example: - 32 -

-
-
- id -    - integer -     - -
-

- The ID of the database. Example: - 17 -

-
-
- -

- delete -

- -

- -

Delete database.

- - -
Example request:
- -
-
curl --request DELETE \
-    "https://vito.test/api/projects/1/servers/32/databases/17" \
-    --header "Content-Type: application/json" \
-    --header "Accept: application/json"
-
- -
-
const url = new URL(
-    "https://vito.test/api/projects/1/servers/32/databases/17"
-);
-
-const headers = {
-    "Content-Type": "application/json",
-    "Accept": "application/json",
-};
-
-fetch(url, {
-    method: "DELETE",
-    headers,
-}).then(response => response.json());
-
-
- - -
-

Example response (204):

-
-
-Empty response
- 
-
- - -
-

- Request    - - -    - -

-

- DELETE - api/projects/{project_id}/servers/{server_id}/databases/{database_id} -

-

Headers

-
- Content-Type -        - -
-

- Example: - application/json -

-
-
- Accept -        - -
-

- Example: - application/json -

-
-

URL Parameters

-
- project_id -    - integer -     - -
-

- The ID of the project. Example: - 1 -

-
-
- server_id -    - integer -     - -
-

- The ID of the server. Example: - 32 -

-
-
- database_id -    - integer -     - -
-

- The ID of the database. Example: - 17 -

-
-
- -

firewall-rules

- -

list

- -

- -

Get all firewall rules.

- - -
Example request:
- -
-
curl --request GET \
-    --get "https://vito.test/api/projects/1/servers/32/firewall-rules" \
-    --header "Content-Type: application/json" \
-    --header "Accept: application/json"
-
- -
-
const url = new URL(
-    "https://vito.test/api/projects/1/servers/32/firewall-rules"
-);
-
-const headers = {
-    "Content-Type": "application/json",
-    "Accept": "application/json",
-};
-
-fetch(url, {
-    method: "GET",
-    headers,
-}).then(response => response.json());
-
-
- - -
-

Example response (200):

-
-
-
-{
-    "data": [
-        {
-            "id": 97,
-            "name": "dolores",
-            "server_id": 1,
-            "type": "allow",
-            "protocol": "tcp",
-            "port": 40770,
-            "source": "199.76.131.15",
-            "mask": "24",
-            "note": "test",
-            "status": "creating",
-            "created_at": "2025-04-21T18:40:19.000000Z",
-            "updated_at": "2025-04-21T18:40:19.000000Z"
-        },
-        {
-            "id": 98,
-            "name": "laborum",
-            "server_id": 1,
-            "type": "allow",
-            "protocol": "tcp",
-            "port": 14235,
-            "source": "100.14.146.200",
-            "mask": "24",
-            "note": "test",
-            "status": "creating",
-            "created_at": "2025-04-21T18:40:19.000000Z",
-            "updated_at": "2025-04-21T18:40:19.000000Z"
-        }
-    ],
-    "links": {
-        "first": "/?page=1",
-        "last": "/?page=1",
-        "prev": null,
-        "next": null
-    },
-    "meta": {
-        "current_page": 1,
-        "from": 1,
-        "last_page": 1,
-        "links": [
-            {
-                "url": null,
-                "label": "&laquo; Previous",
-                "active": false
-            },
-            {
-                "url": "/?page=1",
-                "label": "1",
-                "active": true
-            },
-            {
-                "url": null,
-                "label": "Next &raquo;",
-                "active": false
-            }
-        ],
-        "path": "/",
-        "per_page": 25,
-        "to": 2,
-        "total": 2
-    }
-}
- 
-
- - -
-

- Request    - - -    - -

-

- GET - api/projects/{project_id}/servers/{server_id}/firewall-rules -

-

Headers

-
- Content-Type -        - -
-

- Example: - application/json -

-
-
- Accept -        - -
-

- Example: - application/json -

-
-

URL Parameters

-
- project_id -    - integer -     - -
-

- The ID of the project. Example: - 1 -

-
-
- server_id -    - integer -     - -
-

- The ID of the server. Example: - 32 -

-
-
- -

create

- -

- -

Create a new firewall rule.

- - -
Example request:
- -
-
curl --request POST \
-    "https://vito.test/api/projects/1/servers/32/firewall-rules" \
-    --header "Content-Type: application/json" \
-    --header "Accept: application/json" \
-    --data "{
-    \"name\": \"consequatur\",
-    \"type\": \"allow\",
-    \"protocol\": \"tcp\",
-    \"port\": \"consequatur\",
-    \"source\": \"consequatur\",
-    \"mask\": \"0\"
-}"
-
-
- -
-
const url = new URL(
-    "https://vito.test/api/projects/1/servers/32/firewall-rules"
-);
-
-const headers = {
-    "Content-Type": "application/json",
-    "Accept": "application/json",
-};
-
-let body = {
-    "name": "consequatur",
-    "type": "allow",
-    "protocol": "tcp",
-    "port": "consequatur",
-    "source": "consequatur",
-    "mask": "0"
-};
-
-fetch(url, {
-    method: "POST",
-    headers,
-    body: JSON.stringify(body),
-}).then(response => response.json());
-
-
- - -
-

Example response (200):

-
-
-
-{
-    "id": 97,
-    "name": "dolores",
-    "server_id": 1,
-    "type": "allow",
-    "protocol": "tcp",
-    "port": 40770,
-    "source": "199.76.131.15",
-    "mask": "24",
-    "note": "test",
-    "status": "creating",
-    "created_at": "2025-04-21T18:40:19.000000Z",
-    "updated_at": "2025-04-21T18:40:19.000000Z"
-}
- 
-
- - -
-

- Request    - - -    - -

-

- POST - api/projects/{project_id}/servers/{server_id}/firewall-rules -

-

Headers

-
- Content-Type -        - -
-

- Example: - application/json -

-
-
- Accept -        - -
-

- Example: - application/json -

-
-

URL Parameters

-
- project_id -    - integer -     - -
-

- The ID of the project. Example: - 1 -

-
-
- server_id -    - integer -     - -
-

- The ID of the server. Example: - 32 -

-
-

Body Parameters

-
- name -    - string -     - -
-

- Example: - consequatur -

-
-
- type -    - string -     - -
-

- Example: - allow -

- Must be one of: -
    -
  • allow
  • -
  • deny
  • -
-
-
- protocol -    - string -     - -
-

- Example: - tcp -

- Must be one of: -
    -
  • tcp
  • -
  • udp
  • -
-
-
- port -    - string -     - -
-

- Example: - consequatur -

-
-
- source -    - string -   - optional -   - -
-

- Example: - consequatur -

-
-
- mask -    - string -     - -
-

- Mask for source IP. Example: - 0 -

-
-
- -

- edit -

- -

- -

Update an existing firewall rule.

- - -
Example request:
- -
-
curl --request PUT \
-    "https://vito.test/api/projects/1/servers/32/firewall-rules/94" \
-    --header "Content-Type: application/json" \
-    --header "Accept: application/json" \
-    --data "{
-    \"name\": \"consequatur\",
-    \"type\": \"allow\",
-    \"protocol\": \"tcp\",
-    \"port\": \"consequatur\",
-    \"source\": \"consequatur\",
-    \"mask\": \"0\"
-}"
-
-
- -
-
const url = new URL(
-    "https://vito.test/api/projects/1/servers/32/firewall-rules/94"
-);
-
-const headers = {
-    "Content-Type": "application/json",
-    "Accept": "application/json",
-};
-
-let body = {
-    "name": "consequatur",
-    "type": "allow",
-    "protocol": "tcp",
-    "port": "consequatur",
-    "source": "consequatur",
-    "mask": "0"
-};
-
-fetch(url, {
-    method: "PUT",
-    headers,
-    body: JSON.stringify(body),
-}).then(response => response.json());
-
-
- - -
-

Example response (200):

-
-
-
-{
-    "id": 97,
-    "name": "dolores",
-    "server_id": 1,
-    "type": "allow",
-    "protocol": "tcp",
-    "port": 40770,
-    "source": "199.76.131.15",
-    "mask": "24",
-    "note": "test",
-    "status": "creating",
-    "created_at": "2025-04-21T18:40:19.000000Z",
-    "updated_at": "2025-04-21T18:40:19.000000Z"
-}
- 
-
- - -
-

- Request    - - -    - -

-

- PUT - - api/projects/{project_id}/servers/{server_id}/firewall-rules/{firewallRule_id} - -

-

Headers

-
- Content-Type -        - -
-

- Example: - application/json -

-
-
- Accept -        - -
-

- Example: - application/json -

-
-

URL Parameters

-
- project_id -    - integer -     - -
-

- The ID of the project. Example: - 1 -

-
-
- server_id -    - integer -     - -
-

- The ID of the server. Example: - 32 -

-
-
- firewallRule_id -    - integer -     - -
-

- The ID of the firewallRule. Example: - 94 -

-
-

Body Parameters

-
- name -    - string -     - -
-

- Example: - consequatur -

-
-
- type -    - string -     - -
-

- Example: - allow -

- Must be one of: -
    -
  • allow
  • -
  • deny
  • -
-
-
- protocol -    - string -     - -
-

- Example: - tcp -

- Must be one of: -
    -
  • tcp
  • -
  • udp
  • -
-
-
- port -    - string -     - -
-

- Example: - consequatur -

-
-
- source -    - string -   - optional -   - -
-

- Example: - consequatur -

-
-
- mask -    - string -     - -
-

- Mask for source IP. Example: - 0 -

-
-
- -

- show -

- -

- -

Get a firewall rule by ID.

- - -
Example request:
- -
-
curl --request GET \
-    --get "https://vito.test/api/projects/1/servers/32/firewall-rules/94" \
-    --header "Content-Type: application/json" \
-    --header "Accept: application/json"
-
- -
-
const url = new URL(
-    "https://vito.test/api/projects/1/servers/32/firewall-rules/94"
-);
-
-const headers = {
-    "Content-Type": "application/json",
-    "Accept": "application/json",
-};
-
-fetch(url, {
-    method: "GET",
-    headers,
-}).then(response => response.json());
-
-
- - -
-

Example response (200):

-
-
-
-{
-    "id": 97,
-    "name": "laborum",
-    "server_id": 1,
-    "type": "allow",
-    "protocol": "tcp",
-    "port": 14235,
-    "source": "100.14.146.200",
-    "mask": "24",
-    "note": "test",
-    "status": "creating",
-    "created_at": "2025-04-21T18:40:19.000000Z",
-    "updated_at": "2025-04-21T18:40:19.000000Z"
-}
- 
-
- - -
-

- Request    - - -    - -

-

- GET - - api/projects/{project_id}/servers/{server_id}/firewall-rules/{firewallRule_id} - -

-

Headers

-
- Content-Type -        - -
-

- Example: - application/json -

-
-
- Accept -        - -
-

- Example: - application/json -

-
-

URL Parameters

-
- project_id -    - integer -     - -
-

- The ID of the project. Example: - 1 -

-
-
- server_id -    - integer -     - -
-

- The ID of the server. Example: - 32 -

-
-
- firewallRule_id -    - integer -     - -
-

- The ID of the firewallRule. Example: - 94 -

-
-
- -

- delete -

- -

- -

Delete firewall rule.

- - -
Example request:
- -
-
curl --request DELETE \
-    "https://vito.test/api/projects/1/servers/32/firewall-rules/94" \
-    --header "Content-Type: application/json" \
-    --header "Accept: application/json"
-
- -
-
const url = new URL(
-    "https://vito.test/api/projects/1/servers/32/firewall-rules/94"
-);
-
-const headers = {
-    "Content-Type": "application/json",
-    "Accept": "application/json",
-};
-
-fetch(url, {
-    method: "DELETE",
-    headers,
-}).then(response => response.json());
-
-
- - -
-

Example response (204):

-
-
-Empty response
- 
-
- - -
-

- Request    - - -    - -

-

- DELETE - - api/projects/{project_id}/servers/{server_id}/firewall-rules/{firewallRule_id} - -

-

Headers

-
- Content-Type -        - -
-

- Example: - application/json -

-
-
- Accept -        - -
-

- Example: - application/json -

-
-

URL Parameters

-
- project_id -    - integer -     - -
-

- The ID of the project. Example: - 1 -

-
-
- server_id -    - integer -     - -
-

- The ID of the server. Example: - 32 -

-
-
- firewallRule_id -    - integer -     - -
-

- The ID of the firewallRule. Example: - 94 -

-
-
- -

general

- -

health-check

- -

- - -
Example request:
- -
-
curl --request GET \
-    --get "https://vito.test/api/health" \
-    --header "Content-Type: application/json" \
-    --header "Accept: application/json"
-
- -
-
const url = new URL(
-    "https://vito.test/api/health"
-);
-
-const headers = {
-    "Content-Type": "application/json",
-    "Accept": "application/json",
-};
-
-fetch(url, {
-    method: "GET",
-    headers,
-}).then(response => response.json());
-
-
- - -
-

Example response (200):

-
-
- - - Show headers - - -
cache-control: no-cache, private
-content-type: application/json
-x-ratelimit-limit: 60
-x-ratelimit-remaining: 57
-access-control-allow-origin: *
- 
-
-
-
-{
-    "success": true,
-    "version": "2.5.0"
-}
- 
-
- - -
-

- Request    - - -    - -

-

- GET - api/health -

-

Headers

-
- Content-Type -        - -
-

- Example: - application/json -

-
-
- Accept -        - -
-

- Example: - application/json -

-
-
- -

projects

- -

list

- -

- -

Get all projects.

- - -
Example request:
- -
-
curl --request GET \
-    --get "https://vito.test/api/projects" \
-    --header "Content-Type: application/json" \
-    --header "Accept: application/json"
-
- -
-
const url = new URL(
-    "https://vito.test/api/projects"
-);
-
-const headers = {
-    "Content-Type": "application/json",
-    "Accept": "application/json",
-};
-
-fetch(url, {
-    method: "GET",
-    headers,
-}).then(response => response.json());
-
-
- - -
-

Example response (200):

-
-
-
-{
-    "data": [
-        {
-            "id": 3,
-            "name": "Nash Corwin",
-            "created_at": "2025-04-21T18:40:19.000000Z",
-            "updated_at": "2025-04-21T18:40:19.000000Z"
-        },
-        {
-            "id": 4,
-            "name": "Patience Douglas",
-            "created_at": "2025-04-21T18:40:19.000000Z",
-            "updated_at": "2025-04-21T18:40:19.000000Z"
-        }
-    ],
-    "links": {
-        "first": "/?page=1",
-        "last": "/?page=1",
-        "prev": null,
-        "next": null
-    },
-    "meta": {
-        "current_page": 1,
-        "from": 1,
-        "last_page": 1,
-        "links": [
-            {
-                "url": null,
-                "label": "&laquo; Previous",
-                "active": false
-            },
-            {
-                "url": "/?page=1",
-                "label": "1",
-                "active": true
-            },
-            {
-                "url": null,
-                "label": "Next &raquo;",
-                "active": false
-            }
-        ],
-        "path": "/",
-        "per_page": 25,
-        "to": 2,
-        "total": 2
-    }
-}
- 
-
- - -
-

- Request    - - -    - -

-

- GET - api/projects -

-

Headers

-
- Content-Type -        - -
-

- Example: - application/json -

-
-
- Accept -        - -
-

- Example: - application/json -

-
-
- -

create

- -

- -

Create a new project.

- - -
Example request:
- -
-
curl --request POST \
-    "https://vito.test/api/projects" \
-    --header "Content-Type: application/json" \
-    --header "Accept: application/json" \
-    --data "{
-    \"name\": \"consequatur\"
-}"
-
-
- -
-
const url = new URL(
-    "https://vito.test/api/projects"
-);
-
-const headers = {
-    "Content-Type": "application/json",
-    "Accept": "application/json",
-};
-
-let body = {
-    "name": "consequatur"
-};
-
-fetch(url, {
-    method: "POST",
-    headers,
-    body: JSON.stringify(body),
-}).then(response => response.json());
-
-
- - -
-

Example response (200):

-
-
-
-{
-    "id": 3,
-    "name": "Dr. Cornelius Luettgen V",
-    "created_at": "2025-04-21T18:40:19.000000Z",
-    "updated_at": "2025-04-21T18:40:19.000000Z"
-}
- 
-
- - -
-

- Request    - - -    - -

-

- POST - api/projects -

-

Headers

-
- Content-Type -        - -
-

- Example: - application/json -

-
-
- Accept -        - -
-

- Example: - application/json -

-
-

Body Parameters

-
- name -    - string -     - -
-

- The name of the project. Example: - consequatur -

-
-
- -

show

- -

- -

Get a project by ID.

- - -
Example request:
- -
-
curl --request GET \
-    --get "https://vito.test/api/projects/1" \
-    --header "Content-Type: application/json" \
-    --header "Accept: application/json"
-
- -
-
const url = new URL(
-    "https://vito.test/api/projects/1"
-);
-
-const headers = {
-    "Content-Type": "application/json",
-    "Accept": "application/json",
-};
-
-fetch(url, {
-    method: "GET",
-    headers,
-}).then(response => response.json());
-
-
- - -
-

Example response (200):

-
-
-
-{
-    "id": 3,
-    "name": "Orville Satterfield",
-    "created_at": "2025-04-21T18:40:19.000000Z",
-    "updated_at": "2025-04-21T18:40:19.000000Z"
-}
- 
-
- - -
-

- Request    - - -    - -

-

- GET - api/projects/{id} -

-

Headers

-
- Content-Type -        - -
-

- Example: - application/json -

-
-
- Accept -        - -
-

- Example: - application/json -

-
-

URL Parameters

-
- id -    - integer -     - -
-

- The ID of the project. Example: - 1 -

-
-
- -

update

- -

- -

Update project.

- - -
Example request:
- -
-
curl --request PUT \
-    "https://vito.test/api/projects/1" \
-    --header "Content-Type: application/json" \
-    --header "Accept: application/json" \
-    --data "{
-    \"name\": \"consequatur\"
-}"
-
-
- -
-
const url = new URL(
-    "https://vito.test/api/projects/1"
-);
-
-const headers = {
-    "Content-Type": "application/json",
-    "Accept": "application/json",
-};
-
-let body = {
-    "name": "consequatur"
-};
-
-fetch(url, {
-    method: "PUT",
-    headers,
-    body: JSON.stringify(body),
-}).then(response => response.json());
-
-
- - -
-

Example response (200):

-
-
-
-{
-    "id": 3,
-    "name": "Dr. Cornelius Luettgen V",
-    "created_at": "2025-04-21T18:40:19.000000Z",
-    "updated_at": "2025-04-21T18:40:19.000000Z"
-}
- 
-
- - -
-

- Request    - - -    - -

-

- PUT - api/projects/{id} -

-

Headers

-
- Content-Type -        - -
-

- Example: - application/json -

-
-
- Accept -        - -
-

- Example: - application/json -

-
-

URL Parameters

-
- id -    - integer -     - -
-

- The ID of the project. Example: - 1 -

-
-

Body Parameters

-
- name -    - string -     - -
-

- The name of the project. Example: - consequatur -

-
-
- -

delete

- -

- -

Delete project.

- - -
Example request:
- -
-
curl --request DELETE \
-    "https://vito.test/api/projects/1" \
-    --header "Content-Type: application/json" \
-    --header "Accept: application/json"
-
- -
-
const url = new URL(
-    "https://vito.test/api/projects/1"
-);
-
-const headers = {
-    "Content-Type": "application/json",
-    "Accept": "application/json",
-};
-
-fetch(url, {
-    method: "DELETE",
-    headers,
-}).then(response => response.json());
-
-
- - -
-

Example response (204):

-
-
-Empty response
- 
-
- - -
-

- Request    - - -    - -

-

- DELETE - api/projects/{project_id} -

-

Headers

-
- Content-Type -        - -
-

- Example: - application/json -

-
-
- Accept -        - -
-

- Example: - application/json -

-
-

URL Parameters

-
- project_id -    - integer -     - -
-

- The ID of the project. Example: - 1 -

-
-
- -

redirects

- -

index

- -

- -

Get all redirects.

- - -
Example request:
- -
-
curl --request GET \
-    --get "https://vito.test/api/projects/1/servers/32/sites/17/redirects" \
-    --header "Content-Type: application/json" \
-    --header "Accept: application/json"
-
- -
-
const url = new URL(
-    "https://vito.test/api/projects/1/servers/32/sites/17/redirects"
-);
-
-const headers = {
-    "Content-Type": "application/json",
-    "Accept": "application/json",
-};
-
-fetch(url, {
-    method: "GET",
-    headers,
-}).then(response => response.json());
-
-
- - -
-

Example response (200):

-
-
-
-{
-    "data": [
-        {
-            "id": 11,
-            "site_id": 1,
-            "mode": 308,
-            "from": "dolores",
-            "to": "http://dibbert.com/eius-est-dolor-dolores-minus-voluptatem-quisquam",
-            "status": "ready",
-            "created_at": "2025-04-21T18:40:19.000000Z",
-            "updated_at": "2025-04-21T18:40:19.000000Z"
-        },
-        {
-            "id": 12,
-            "site_id": 1,
-            "mode": 302,
-            "from": "sed",
-            "to": "http://williamson.net/fugit-facilis-perferendis-dolores-molestias.html",
-            "status": "ready",
-            "created_at": "2025-04-21T18:40:19.000000Z",
-            "updated_at": "2025-04-21T18:40:19.000000Z"
-        }
-    ],
-    "links": {
-        "first": "/?page=1",
-        "last": "/?page=1",
-        "prev": null,
-        "next": null
-    },
-    "meta": {
-        "current_page": 1,
-        "from": 1,
-        "last_page": 1,
-        "links": [
-            {
-                "url": null,
-                "label": "&laquo; Previous",
-                "active": false
-            },
-            {
-                "url": "/?page=1",
-                "label": "1",
-                "active": true
-            },
-            {
-                "url": null,
-                "label": "Next &raquo;",
-                "active": false
-            }
-        ],
-        "path": "/",
-        "per_page": 25,
-        "to": 2,
-        "total": 2
-    }
-}
- 
-
- - -
-

- Request    - - -    - -

-

- GET - api/projects/{project_id}/servers/{server_id}/sites/{site_id}/redirects -

-

Headers

-
- Content-Type -        - -
-

- Example: - application/json -

-
-
- Accept -        - -
-

- Example: - application/json -

-
-

URL Parameters

-
- project_id -    - integer -     - -
-

- The ID of the project. Example: - 1 -

-
-
- server_id -    - integer -     - -
-

- The ID of the server. Example: - 32 -

-
-
- site_id -    - integer -     - -
-

- The ID of the site. Example: - 17 -

-
-
- -

- create -

- -

- -

Create a new redirect.

- - -
Example request:
- -
-
curl --request POST \
-    "https://vito.test/api/projects/1/servers/32/sites/17/redirects" \
-    --header "Content-Type: application/json" \
-    --header "Accept: application/json" \
-    --data "{
-    \"from\": \"consequatur\",
-    \"to\": \"consequatur\",
-    \"mode\": 302
-}"
-
-
- -
-
const url = new URL(
-    "https://vito.test/api/projects/1/servers/32/sites/17/redirects"
-);
-
-const headers = {
-    "Content-Type": "application/json",
-    "Accept": "application/json",
-};
-
-let body = {
-    "from": "consequatur",
-    "to": "consequatur",
-    "mode": 302
-};
-
-fetch(url, {
-    method: "POST",
-    headers,
-    body: JSON.stringify(body),
-}).then(response => response.json());
-
-
- - -
-

Example response (200):

-
-
-
-
- 
-
- - -
-

- Request    - - -    - -

-

- POST - api/projects/{project_id}/servers/{server_id}/sites/{site_id}/redirects -

-

Headers

-
- Content-Type -        - -
-

- Example: - application/json -

-
-
- Accept -        - -
-

- Example: - application/json -

-
-

URL Parameters

-
- project_id -    - integer -     - -
-

- The ID of the project. Example: - 1 -

-
-
- server_id -    - integer -     - -
-

- The ID of the server. Example: - 32 -

-
-
- site_id -    - integer -     - -
-

- The ID of the site. Example: - 17 -

-
-

Body Parameters

-
- from -    - string -     - -
-

- Example: - consequatur -

-
-
- to -    - string -     - -
-

- Example: - consequatur -

-
-
- mode -    - string -     - -
-

- Example: - 302 -

- Must be one of: -
    -
  • 301
  • -
  • 302
  • -
  • 307
  • -
  • 308
  • -
-
-
- -

- delete -

- -

- -

Delete a redirect.

- - -
Example request:
- -
-
curl --request DELETE \
-    "https://vito.test/api/projects/1/servers/32/sites/17/redirects/9" \
-    --header "Content-Type: application/json" \
-    --header "Accept: application/json"
-
- -
-
const url = new URL(
-    "https://vito.test/api/projects/1/servers/32/sites/17/redirects/9"
-);
-
-const headers = {
-    "Content-Type": "application/json",
-    "Accept": "application/json",
-};
-
-fetch(url, {
-    method: "DELETE",
-    headers,
-}).then(response => response.json());
-
-
- - -
-

Example response (204):

-
-
-Empty response
- 
-
- - -
-

- Request    - - -    - -

-

- DELETE - - - api/projects/{project_id}/servers/{server_id}/sites/{site_id}/redirects/{redirect_id} - - -

-

Headers

-
- Content-Type -        - -
-

- Example: - application/json -

-
-
- Accept -        - -
-

- Example: - application/json -

-
-

URL Parameters

-
- project_id -    - integer -     - -
-

- The ID of the project. Example: - 1 -

-
-
- server_id -    - integer -     - -
-

- The ID of the server. Example: - 32 -

-
-
- site_id -    - integer -     - -
-

- The ID of the site. Example: - 17 -

-
-
- redirect_id -    - integer -     - -
-

- The ID of the redirect. Example: - 9 -

-
-
- -

server-providers

- -

list

- -

- - -
Example request:
- -
-
curl --request GET \
-    --get "https://vito.test/api/projects/1/server-providers" \
-    --header "Content-Type: application/json" \
-    --header "Accept: application/json"
-
- -
-
const url = new URL(
-    "https://vito.test/api/projects/1/server-providers"
-);
-
-const headers = {
-    "Content-Type": "application/json",
-    "Accept": "application/json",
-};
-
-fetch(url, {
-    method: "GET",
-    headers,
-}).then(response => response.json());
-
-
- - -
-

Example response (200):

-
-
-
-{
-    "data": [
-        {
-            "id": 4,
-            "project_id": null,
-            "global": true,
-            "name": "quo",
-            "provider": "custom",
-            "created_at": "2025-04-21T18:40:19.000000Z",
-            "updated_at": "2025-04-21T18:40:19.000000Z"
-        },
-        {
-            "id": 5,
-            "project_id": null,
-            "global": true,
-            "name": "sed",
-            "provider": "digitalocean",
-            "created_at": "2025-04-21T18:40:19.000000Z",
-            "updated_at": "2025-04-21T18:40:19.000000Z"
-        }
-    ],
-    "links": {
-        "first": "/?page=1",
-        "last": "/?page=1",
-        "prev": null,
-        "next": null
-    },
-    "meta": {
-        "current_page": 1,
-        "from": 1,
-        "last_page": 1,
-        "links": [
-            {
-                "url": null,
-                "label": "&laquo; Previous",
-                "active": false
-            },
-            {
-                "url": "/?page=1",
-                "label": "1",
-                "active": true
-            },
-            {
-                "url": null,
-                "label": "Next &raquo;",
-                "active": false
-            }
-        ],
-        "path": "/",
-        "per_page": 25,
-        "to": 2,
-        "total": 2
-    }
-}
- 
-
- - -
-

- Request    - - -    - -

-

- GET - api/projects/{project_id}/server-providers -

-

Headers

-
- Content-Type -        - -
-

- Example: - application/json -

-
-
- Accept -        - -
-

- Example: - application/json -

-
-

URL Parameters

-
- project_id -    - integer -     - -
-

- The ID of the project. Example: - 1 -

-
-
- -

create

- -

- - -
Example request:
- -
-
curl --request POST \
-    "https://vito.test/api/projects/1/server-providers" \
-    --header "Content-Type: application/json" \
-    --header "Accept: application/json" \
-    --data "{
-    \"provider\": \"consequatur\",
-    \"name\": \"consequatur\",
-    \"token\": \"consequatur\",
-    \"key\": \"consequatur\",
-    \"secret\": \"consequatur\"
-}"
-
-
- -
-
const url = new URL(
-    "https://vito.test/api/projects/1/server-providers"
-);
-
-const headers = {
-    "Content-Type": "application/json",
-    "Accept": "application/json",
-};
-
-let body = {
-    "provider": "consequatur",
-    "name": "consequatur",
-    "token": "consequatur",
-    "key": "consequatur",
-    "secret": "consequatur"
-};
-
-fetch(url, {
-    method: "POST",
-    headers,
-    body: JSON.stringify(body),
-}).then(response => response.json());
-
-
- - -
-

Example response (200):

-
-
-
-{
-    "id": 4,
-    "project_id": null,
-    "global": true,
-    "name": "dolores",
-    "provider": "digitalocean",
-    "created_at": "2025-04-21T18:40:19.000000Z",
-    "updated_at": "2025-04-21T18:40:19.000000Z"
-}
- 
-
- - -
-

- Request    - - -    - -

-

- POST - api/projects/{project_id}/server-providers -

-

Headers

-
- Content-Type -        - -
-

- Example: - application/json -

-
-
- Accept -        - -
-

- Example: - application/json -

-
-

URL Parameters

-
- project_id -    - integer -     - -
-

- The ID of the project. Example: - 1 -

-
-

Body Parameters

-
- provider -    - string -     - -
-

- The provider (aws, linode, hetzner, digitalocean, vultr, ...) Example: - consequatur -

-
-
- name -    - string -     - -
-

- The name of the server provider. Example: - consequatur -

-
-
- token -    - string -     - -
-

- The token if provider requires api token Example: - consequatur -

-
-
- key -    - string -     - -
-

- The key if provider requires key Example: - consequatur -

-
-
- secret -    - string -     - -
-

- The secret if provider requires key Example: - consequatur -

-
-
- -

show

- -

- - -
Example request:
- -
-
curl --request GET \
-    --get "https://vito.test/api/projects/1/server-providers/1" \
-    --header "Content-Type: application/json" \
-    --header "Accept: application/json"
-
- -
-
const url = new URL(
-    "https://vito.test/api/projects/1/server-providers/1"
-);
-
-const headers = {
-    "Content-Type": "application/json",
-    "Accept": "application/json",
-};
-
-fetch(url, {
-    method: "GET",
-    headers,
-}).then(response => response.json());
-
-
- - -
-

Example response (200):

-
-
-
-{
-    "id": 4,
-    "project_id": null,
-    "global": true,
-    "name": "voluptatem",
-    "provider": "vultr",
-    "created_at": "2025-04-21T18:40:19.000000Z",
-    "updated_at": "2025-04-21T18:40:19.000000Z"
-}
- 
-
- - -
-

- Request    - - -    - -

-

- GET - api/projects/{project_id}/server-providers/{serverProvider_id} -

-

Headers

-
- Content-Type -        - -
-

- Example: - application/json -

-
-
- Accept -        - -
-

- Example: - application/json -

-
-

URL Parameters

-
- project_id -    - integer -     - -
-

- The ID of the project. Example: - 1 -

-
-
- serverProvider_id -    - integer -     - -
-

- The ID of the serverProvider. Example: - 1 -

-
-
- -

update

- -

- - -
Example request:
- -
-
curl --request PUT \
-    "https://vito.test/api/projects/1/server-providers/1" \
-    --header "Content-Type: application/json" \
-    --header "Accept: application/json" \
-    --data "{
-    \"name\": \"consequatur\",
-    \"global\": false
-}"
-
-
- -
-
const url = new URL(
-    "https://vito.test/api/projects/1/server-providers/1"
-);
-
-const headers = {
-    "Content-Type": "application/json",
-    "Accept": "application/json",
-};
-
-let body = {
-    "name": "consequatur",
-    "global": false
-};
-
-fetch(url, {
-    method: "PUT",
-    headers,
-    body: JSON.stringify(body),
-}).then(response => response.json());
-
-
- - -
-

Example response (200):

-
-
-
-{
-    "id": 4,
-    "project_id": null,
-    "global": true,
-    "name": "dolores",
-    "provider": "digitalocean",
-    "created_at": "2025-04-21T18:40:19.000000Z",
-    "updated_at": "2025-04-21T18:40:19.000000Z"
-}
- 
-
- - -
-

- Request    - - -    - -

-

- PUT - api/projects/{project_id}/server-providers/{serverProvider_id} -

-

Headers

-
- Content-Type -        - -
-

- Example: - application/json -

-
-
- Accept -        - -
-

- Example: - application/json -

-
-

URL Parameters

-
- project_id -    - integer -     - -
-

- The ID of the project. Example: - 1 -

-
-
- serverProvider_id -    - integer -     - -
-

- The ID of the serverProvider. Example: - 1 -

-
-

Body Parameters

-
- name -    - string -     - -
-

- The name of the server provider. Example: - consequatur -

-
-
- global -    - string -     - -
-

- Accessible in all projects Example: - false -

- Must be one of: -
    -
  • 1
  • -
  • -
-
-
- -

- delete -

- -

- - -
Example request:
- -
-
curl --request DELETE \
-    "https://vito.test/api/projects/1/server-providers/1" \
-    --header "Content-Type: application/json" \
-    --header "Accept: application/json"
-
- -
-
const url = new URL(
-    "https://vito.test/api/projects/1/server-providers/1"
-);
-
-const headers = {
-    "Content-Type": "application/json",
-    "Accept": "application/json",
-};
-
-fetch(url, {
-    method: "DELETE",
-    headers,
-}).then(response => response.json());
-
-
- - -
-

Example response (204):

-
-
-Empty response
- 
-
- - -
-

- Request    - - -    - -

-

- DELETE - api/projects/{project_id}/server-providers/{serverProvider_id} -

-

Headers

-
- Content-Type -        - -
-

- Example: - application/json -

-
-
- Accept -        - -
-

- Example: - application/json -

-
-

URL Parameters

-
- project_id -    - integer -     - -
-

- The ID of the project. Example: - 1 -

-
-
- serverProvider_id -    - integer -     - -
-

- The ID of the serverProvider. Example: - 1 -

-
-
- -

servers

- -

list

- -

- -

Get all servers in a project.

- - -
Example request:
- -
-
curl --request GET \
-    --get "https://vito.test/api/projects/1/servers" \
-    --header "Content-Type: application/json" \
-    --header "Accept: application/json"
-
- -
-
const url = new URL(
-    "https://vito.test/api/projects/1/servers"
-);
-
-const headers = {
-    "Content-Type": "application/json",
-    "Accept": "application/json",
-};
-
-fetch(url, {
-    method: "GET",
-    headers,
-}).then(response => response.json());
-
-
- - -
-

Example response (200):

-
-
-
-{
-    "data": [
-        {
-            "id": 33,
-            "project_id": 1,
-            "user_id": 1,
-            "provider_id": null,
-            "name": "Maiya Connelly",
-            "ssh_user": "vito",
-            "ip": "7.83.102.177",
-            "local_ip": "130.245.181.91",
-            "port": 22,
-            "os": "ubuntu_22",
-            "type": "regular",
-            "type_data": null,
-            "provider": "custom",
-            "provider_data": null,
-            "public_key": "test",
-            "status": "ready",
-            "auto_update": null,
-            "available_updates": 0,
-            "security_updates": null,
-            "progress": 100,
-            "progress_step": null,
-            "updates": 0,
-            "last_update_check": null,
-            "created_at": "2025-04-21T18:40:19.000000Z",
-            "updated_at": "2025-04-21T18:40:19.000000Z"
-        },
-        {
-            "id": 34,
-            "project_id": 1,
-            "user_id": 1,
-            "provider_id": null,
-            "name": "Dr. Kyler Runolfsdottir DVM",
-            "ssh_user": "vito",
-            "ip": "106.112.51.73",
-            "local_ip": "248.246.77.93",
-            "port": 22,
-            "os": "ubuntu_22",
-            "type": "regular",
-            "type_data": null,
-            "provider": "custom",
-            "provider_data": null,
-            "public_key": "test",
-            "status": "ready",
-            "auto_update": null,
-            "available_updates": 0,
-            "security_updates": null,
-            "progress": 100,
-            "progress_step": null,
-            "updates": 0,
-            "last_update_check": null,
-            "created_at": "2025-04-21T18:40:19.000000Z",
-            "updated_at": "2025-04-21T18:40:19.000000Z"
-        }
-    ],
-    "links": {
-        "first": "/?page=1",
-        "last": "/?page=1",
-        "prev": null,
-        "next": null
-    },
-    "meta": {
-        "current_page": 1,
-        "from": 1,
-        "last_page": 1,
-        "links": [
-            {
-                "url": null,
-                "label": "&laquo; Previous",
-                "active": false
-            },
-            {
-                "url": "/?page=1",
-                "label": "1",
-                "active": true
-            },
-            {
-                "url": null,
-                "label": "Next &raquo;",
-                "active": false
-            }
-        ],
-        "path": "/",
-        "per_page": 25,
-        "to": 2,
-        "total": 2
-    }
-}
- 
-
- - -
-

- Request    - - -    - -

-

- GET - api/projects/{project_id}/servers -

-

Headers

-
- Content-Type -        - -
-

- Example: - application/json -

-
-
- Accept -        - -
-

- Example: - application/json -

-
-

URL Parameters

-
- project_id -    - integer -     - -
-

- The ID of the project. Example: - 1 -

-
-
- -

create

- -

- -

Create a new server.

- - -
Example request:
- -
-
curl --request POST \
-    "https://vito.test/api/projects/1/servers" \
-    --header "Content-Type: application/json" \
-    --header "Accept: application/json" \
-    --data "{
-    \"provider\": \"consequatur\",
-    \"server_provider\": \"hetzner\",
-    \"region\": \"consequatur\",
-    \"plan\": \"consequatur\",
-    \"ip\": \"consequatur\",
-    \"port\": \"consequatur\",
-    \"name\": \"consequatur\",
-    \"os\": \"consequatur\",
-    \"webserver\": \"none\",
-    \"database\": \"mariadb104\",
-    \"php\": \"8.0\"
-}"
-
-
- -
-
const url = new URL(
-    "https://vito.test/api/projects/1/servers"
-);
-
-const headers = {
-    "Content-Type": "application/json",
-    "Accept": "application/json",
-};
-
-let body = {
-    "provider": "consequatur",
-    "server_provider": "hetzner",
-    "region": "consequatur",
-    "plan": "consequatur",
-    "ip": "consequatur",
-    "port": "consequatur",
-    "name": "consequatur",
-    "os": "consequatur",
-    "webserver": "none",
-    "database": "mariadb104",
-    "php": "8.0"
-};
-
-fetch(url, {
-    method: "POST",
-    headers,
-    body: JSON.stringify(body),
-}).then(response => response.json());
-
-
- - -
-

Example response (200):

-
-
-
-{
-    "id": 33,
-    "project_id": 1,
-    "user_id": 1,
-    "provider_id": null,
-    "name": "Dr. Cornelius Luettgen V",
-    "ssh_user": "vito",
-    "ip": "226.187.235.251",
-    "local_ip": "18.62.212.253",
-    "port": 22,
-    "os": "ubuntu_22",
-    "type": "regular",
-    "type_data": null,
-    "provider": "custom",
-    "provider_data": null,
-    "public_key": "test",
-    "status": "ready",
-    "auto_update": null,
-    "available_updates": 0,
-    "security_updates": null,
-    "progress": 100,
-    "progress_step": null,
-    "updates": 0,
-    "last_update_check": null,
-    "created_at": "2025-04-21T18:40:19.000000Z",
-    "updated_at": "2025-04-21T18:40:19.000000Z"
-}
- 
-
- - -
-

- Request    - - -    - -

-

- POST - api/projects/{project_id}/servers -

-

Headers

-
- Content-Type -        - -
-

- Example: - application/json -

-
-
- Accept -        - -
-

- Example: - application/json -

-
-

URL Parameters

-
- project_id -    - integer -     - -
-

- The ID of the project. Example: - 1 -

-
-

Body Parameters

-
- provider -    - string -     - -
-

- The server provider type Example: - consequatur -

-
-
- server_provider -    - string -     - -
-

- If the provider is not custom, the ID of the server provider profile Example: - hetzner -

- Must be one of: -
    -
  • custom
  • -
  • hetzner
  • -
  • digitalocean
  • -
  • linode
  • -
  • vultr
  • -
-
-
- region -    - string -     - -
-

- Provider region if the provider is not custom Example: - consequatur -

-
-
- plan -    - string -     - -
-

- Provider plan if the provider is not custom Example: - consequatur -

-
-
- ip -    - string -     - -
-

- SSH IP address if the provider is custom Example: - consequatur -

-
-
- port -    - string -     - -
-

- SSH Port if the provider is custom Example: - consequatur -

-
-
- name -    - string -     - -
-

- The name of the server. Example: - consequatur -

-
-
- os -    - string -     - -
-

- The os of the server Example: - consequatur -

-
-
- webserver -    - string -     - -
-

- Web server Example: - none -

- Must be one of: -
    -
  • none
  • -
  • nginx
  • -
-
-
- database -    - string -     - -
-

- Database Example: - mariadb104 -

- Must be one of: -
    -
  • none
  • -
  • mysql57
  • -
  • mysql80
  • -
  • mariadb103
  • -
  • mariadb104
  • -
  • mariadb103
  • -
  • postgresql12
  • -
  • postgresql13
  • -
  • postgresql14
  • -
  • postgresql15
  • -
  • postgresql16
  • -
-
-
- php -    - string -     - -
-

- PHP version Example: - 8.0 -

- Must be one of: -
    -
  • 7.0
  • -
  • 7.1
  • -
  • 7.2
  • -
  • 7.3
  • -
  • 7.4
  • -
  • 8.0
  • -
  • 8.1
  • -
  • 8.2
  • -
  • 8.3
  • -
-
-
- -

show

- -

- -

Get a server by ID.

- - -
Example request:
- -
-
curl --request GET \
-    --get "https://vito.test/api/projects/1/servers/32" \
-    --header "Content-Type: application/json" \
-    --header "Accept: application/json"
-
- -
-
const url = new URL(
-    "https://vito.test/api/projects/1/servers/32"
-);
-
-const headers = {
-    "Content-Type": "application/json",
-    "Accept": "application/json",
-};
-
-fetch(url, {
-    method: "GET",
-    headers,
-}).then(response => response.json());
-
-
- - -
-

Example response (200):

-
-
-
-{
-    "id": 33,
-    "project_id": 1,
-    "user_id": 1,
-    "provider_id": null,
-    "name": "Brandy Reichel",
-    "ssh_user": "vito",
-    "ip": "26.180.121.142",
-    "local_ip": "122.175.6.215",
-    "port": 22,
-    "os": "ubuntu_22",
-    "type": "regular",
-    "type_data": null,
-    "provider": "custom",
-    "provider_data": null,
-    "public_key": "test",
-    "status": "ready",
-    "auto_update": null,
-    "available_updates": 0,
-    "security_updates": null,
-    "progress": 100,
-    "progress_step": null,
-    "updates": 0,
-    "last_update_check": null,
-    "created_at": "2025-04-21T18:40:19.000000Z",
-    "updated_at": "2025-04-21T18:40:19.000000Z"
-}
- 
-
- - -
-

- Request    - - -    - -

-

- GET - api/projects/{project_id}/servers/{id} -

-

Headers

-
- Content-Type -        - -
-

- Example: - application/json -

-
-
- Accept -        - -
-

- Example: - application/json -

-
-

URL Parameters

-
- project_id -    - integer -     - -
-

- The ID of the project. Example: - 1 -

-
-
- id -    - integer -     - -
-

- The ID of the server. Example: - 32 -

-
-
- -

reboot

- -

- -

Reboot a server.

- - -
Example request:
- -
-
curl --request POST \
-    "https://vito.test/api/projects/1/servers/32/reboot" \
-    --header "Content-Type: application/json" \
-    --header "Accept: application/json"
-
- -
-
const url = new URL(
-    "https://vito.test/api/projects/1/servers/32/reboot"
-);
-
-const headers = {
-    "Content-Type": "application/json",
-    "Accept": "application/json",
-};
-
-fetch(url, {
-    method: "POST",
-    headers,
-}).then(response => response.json());
-
-
- - -
-

Example response (204):

-
-
-Empty response
- 
-
- - -
-

- Request    - - -    - -

-

- POST - api/projects/{project_id}/servers/{server_id}/reboot -

-

Headers

-
- Content-Type -        - -
-

- Example: - application/json -

-
-
- Accept -        - -
-

- Example: - application/json -

-
-

URL Parameters

-
- project_id -    - integer -     - -
-

- The ID of the project. Example: - 1 -

-
-
- server_id -    - integer -     - -
-

- The ID of the server. Example: - 32 -

-
-
- -

upgrade

- -

- -

Upgrade server.

- - -
Example request:
- -
-
curl --request POST \
-    "https://vito.test/api/projects/1/servers/32/upgrade" \
-    --header "Content-Type: application/json" \
-    --header "Accept: application/json"
-
- -
-
const url = new URL(
-    "https://vito.test/api/projects/1/servers/32/upgrade"
-);
-
-const headers = {
-    "Content-Type": "application/json",
-    "Accept": "application/json",
-};
-
-fetch(url, {
-    method: "POST",
-    headers,
-}).then(response => response.json());
-
-
- - -
-

Example response (204):

-
-
-Empty response
- 
-
- - -
-

- Request    - - -    - -

-

- POST - api/projects/{project_id}/servers/{server_id}/upgrade -

-

Headers

-
- Content-Type -        - -
-

- Example: - application/json -

-
-
- Accept -        - -
-

- Example: - application/json -

-
-

URL Parameters

-
- project_id -    - integer -     - -
-

- The ID of the project. Example: - 1 -

-
-
- server_id -    - integer -     - -
-

- The ID of the server. Example: - 32 -

-
-
- -

delete

- -

- -

Delete server.

- - -
Example request:
- -
-
curl --request DELETE \
-    "https://vito.test/api/projects/1/servers/32" \
-    --header "Content-Type: application/json" \
-    --header "Accept: application/json"
-
- -
-
const url = new URL(
-    "https://vito.test/api/projects/1/servers/32"
-);
-
-const headers = {
-    "Content-Type": "application/json",
-    "Accept": "application/json",
-};
-
-fetch(url, {
-    method: "DELETE",
-    headers,
-}).then(response => response.json());
-
-
- - -
-

Example response (204):

-
-
-Empty response
- 
-
- - -
-

- Request    - - -    - -

-

- DELETE - api/projects/{project_id}/servers/{server_id} -

-

Headers

-
- Content-Type -        - -
-

- Example: - application/json -

-
-
- Accept -        - -
-

- Example: - application/json -

-
-

URL Parameters

-
- project_id -    - integer -     - -
-

- The ID of the project. Example: - 1 -

-
-
- server_id -    - integer -     - -
-

- The ID of the server. Example: - 32 -

-
-
- -

services

- -

list

- -

- -

Get all services.

- - -
Example request:
- -
-
curl --request GET \
-    --get "https://vito.test/api/projects/1/servers/32/services" \
-    --header "Content-Type: application/json" \
-    --header "Accept: application/json"
-
- -
-
const url = new URL(
-    "https://vito.test/api/projects/1/servers/32/services"
-);
-
-const headers = {
-    "Content-Type": "application/json",
-    "Accept": "application/json",
-};
-
-fetch(url, {
-    method: "GET",
-    headers,
-}).then(response => response.json());
-
-
- - -
-

Example response (200):

-
-
-
-{
-    "data": [
-        {
-            "id": null,
-            "server_id": 1,
-            "type": "webserver",
-            "type_data": null,
-            "name": "nginx",
-            "version": null,
-            "unit": null,
-            "status": "ready",
-            "is_default": null,
-            "created_at": null,
-            "updated_at": null
-        },
-        {
-            "id": null,
-            "server_id": 1,
-            "type": "webserver",
-            "type_data": null,
-            "name": "nginx",
-            "version": null,
-            "unit": null,
-            "status": "ready",
-            "is_default": null,
-            "created_at": null,
-            "updated_at": null
-        }
-    ],
-    "links": {
-        "first": "/?page=1",
-        "last": "/?page=1",
-        "prev": null,
-        "next": null
-    },
-    "meta": {
-        "current_page": 1,
-        "from": 1,
-        "last_page": 1,
-        "links": [
-            {
-                "url": null,
-                "label": "&laquo; Previous",
-                "active": false
-            },
-            {
-                "url": "/?page=1",
-                "label": "1",
-                "active": true
-            },
-            {
-                "url": null,
-                "label": "Next &raquo;",
-                "active": false
-            }
-        ],
-        "path": "/",
-        "per_page": 25,
-        "to": 2,
-        "total": 2
-    }
-}
- 
-
- - -
-

- Request    - - -    - -

-

- GET - api/projects/{project_id}/servers/{server_id}/services -

-

Headers

-
- Content-Type -        - -
-

- Example: - application/json -

-
-
- Accept -        - -
-

- Example: - application/json -

-
-

URL Parameters

-
- project_id -    - integer -     - -
-

- The ID of the project. Example: - 1 -

-
-
- server_id -    - integer -     - -
-

- The ID of the server. Example: - 32 -

-
-
- -

show

- -

- -

Get a service by ID.

- - -
Example request:
- -
-
curl --request GET \
-    --get "https://vito.test/api/projects/1/servers/32/services/184" \
-    --header "Content-Type: application/json" \
-    --header "Accept: application/json"
-
- -
-
const url = new URL(
-    "https://vito.test/api/projects/1/servers/32/services/184"
-);
-
-const headers = {
-    "Content-Type": "application/json",
-    "Accept": "application/json",
-};
-
-fetch(url, {
-    method: "GET",
-    headers,
-}).then(response => response.json());
-
-
- - -
-

Example response (200):

-
-
-
-{
-    "id": null,
-    "server_id": 1,
-    "type": "webserver",
-    "type_data": null,
-    "name": "nginx",
-    "version": null,
-    "unit": null,
-    "status": "ready",
-    "is_default": null,
-    "created_at": null,
-    "updated_at": null
-}
- 
-
- - -
-

- Request    - - -    - -

-

- GET - api/projects/{project_id}/servers/{server_id}/services/{id} -

-

Headers

-
- Content-Type -        - -
-

- Example: - application/json -

-
-
- Accept -        - -
-

- Example: - application/json -

-
-

URL Parameters

-
- project_id -    - integer -     - -
-

- The ID of the project. Example: - 1 -

-
-
- server_id -    - integer -     - -
-

- The ID of the server. Example: - 32 -

-
-
- id -    - integer -     - -
-

- The ID of the service. Example: - 184 -

-
-
- -

- start -

- -

- -

Start service.

- - -
Example request:
- -
-
curl --request POST \
-    "https://vito.test/api/projects/1/servers/32/services/184/start" \
-    --header "Content-Type: application/json" \
-    --header "Accept: application/json"
-
- -
-
const url = new URL(
-    "https://vito.test/api/projects/1/servers/32/services/184/start"
-);
-
-const headers = {
-    "Content-Type": "application/json",
-    "Accept": "application/json",
-};
-
-fetch(url, {
-    method: "POST",
-    headers,
-}).then(response => response.json());
-
-
- - -
-

Example response (204):

-
-
-Empty response
- 
-
- - -
-

- Request    - - -    - -

-

- POST - api/projects/{project_id}/servers/{server_id}/services/{service_id}/start -

-

Headers

-
- Content-Type -        - -
-

- Example: - application/json -

-
-
- Accept -        - -
-

- Example: - application/json -

-
-

URL Parameters

-
- project_id -    - integer -     - -
-

- The ID of the project. Example: - 1 -

-
-
- server_id -    - integer -     - -
-

- The ID of the server. Example: - 32 -

-
-
- service_id -    - integer -     - -
-

- The ID of the service. Example: - 184 -

-
-
- -

stop

- -

- -

Stop service.

- - -
Example request:
- -
-
curl --request POST \
-    "https://vito.test/api/projects/1/servers/32/services/184/stop" \
-    --header "Content-Type: application/json" \
-    --header "Accept: application/json"
-
- -
-
const url = new URL(
-    "https://vito.test/api/projects/1/servers/32/services/184/stop"
-);
-
-const headers = {
-    "Content-Type": "application/json",
-    "Accept": "application/json",
-};
-
-fetch(url, {
-    method: "POST",
-    headers,
-}).then(response => response.json());
-
-
- - -
-

Example response (204):

-
-
-Empty response
- 
-
- - -
-

- Request    - - -    - -

-

- POST - api/projects/{project_id}/servers/{server_id}/services/{service_id}/stop -

-

Headers

-
- Content-Type -        - -
-

- Example: - application/json -

-
-
- Accept -        - -
-

- Example: - application/json -

-
-

URL Parameters

-
- project_id -    - integer -     - -
-

- The ID of the project. Example: - 1 -

-
-
- server_id -    - integer -     - -
-

- The ID of the server. Example: - 32 -

-
-
- service_id -    - integer -     - -
-

- The ID of the service. Example: - 184 -

-
-
- -

- restart -

- -

- -

Restart service.

- - -
Example request:
- -
-
curl --request POST \
-    "https://vito.test/api/projects/1/servers/32/services/184/restart" \
-    --header "Content-Type: application/json" \
-    --header "Accept: application/json"
-
- -
-
const url = new URL(
-    "https://vito.test/api/projects/1/servers/32/services/184/restart"
-);
-
-const headers = {
-    "Content-Type": "application/json",
-    "Accept": "application/json",
-};
-
-fetch(url, {
-    method: "POST",
-    headers,
-}).then(response => response.json());
-
-
- - -
-

Example response (204):

-
-
-Empty response
- 
-
- - -
-

- Request    - - -    - -

-

- POST - api/projects/{project_id}/servers/{server_id}/services/{service_id}/restart -

-

Headers

-
- Content-Type -        - -
-

- Example: - application/json -

-
-
- Accept -        - -
-

- Example: - application/json -

-
-

URL Parameters

-
- project_id -    - integer -     - -
-

- The ID of the project. Example: - 1 -

-
-
- server_id -    - integer -     - -
-

- The ID of the server. Example: - 32 -

-
-
- service_id -    - integer -     - -
-

- The ID of the service. Example: - 184 -

-
-
- -

- enable -

- -

- -

Enable service.

- - -
Example request:
- -
-
curl --request POST \
-    "https://vito.test/api/projects/1/servers/32/services/184/enable" \
-    --header "Content-Type: application/json" \
-    --header "Accept: application/json"
-
- -
-
const url = new URL(
-    "https://vito.test/api/projects/1/servers/32/services/184/enable"
-);
-
-const headers = {
-    "Content-Type": "application/json",
-    "Accept": "application/json",
-};
-
-fetch(url, {
-    method: "POST",
-    headers,
-}).then(response => response.json());
-
-
- - -
-

Example response (204):

-
-
-Empty response
- 
-
- - -
-

- Request    - - -    - -

-

- POST - api/projects/{project_id}/servers/{server_id}/services/{service_id}/enable -

-

Headers

-
- Content-Type -        - -
-

- Example: - application/json -

-
-
- Accept -        - -
-

- Example: - application/json -

-
-

URL Parameters

-
- project_id -    - integer -     - -
-

- The ID of the project. Example: - 1 -

-
-
- server_id -    - integer -     - -
-

- The ID of the server. Example: - 32 -

-
-
- service_id -    - integer -     - -
-

- The ID of the service. Example: - 184 -

-
-
- -

- disable -

- -

- -

Disable service.

- - -
Example request:
- -
-
curl --request POST \
-    "https://vito.test/api/projects/1/servers/32/services/184/disable" \
-    --header "Content-Type: application/json" \
-    --header "Accept: application/json"
-
- -
-
const url = new URL(
-    "https://vito.test/api/projects/1/servers/32/services/184/disable"
-);
-
-const headers = {
-    "Content-Type": "application/json",
-    "Accept": "application/json",
-};
-
-fetch(url, {
-    method: "POST",
-    headers,
-}).then(response => response.json());
-
-
- - -
-

Example response (204):

-
-
-Empty response
- 
-
- - -
-

- Request    - - -    - -

-

- POST - api/projects/{project_id}/servers/{server_id}/services/{service_id}/disable -

-

Headers

-
- Content-Type -        - -
-

- Example: - application/json -

-
-
- Accept -        - -
-

- Example: - application/json -

-
-

URL Parameters

-
- project_id -    - integer -     - -
-

- The ID of the project. Example: - 1 -

-
-
- server_id -    - integer -     - -
-

- The ID of the server. Example: - 32 -

-
-
- service_id -    - integer -     - -
-

- The ID of the service. Example: - 184 -

-
-
- -

delete

- -

- -

Delete service.

- - -
Example request:
- -
-
curl --request DELETE \
-    "https://vito.test/api/projects/1/servers/32/services/184" \
-    --header "Content-Type: application/json" \
-    --header "Accept: application/json"
-
- -
-
const url = new URL(
-    "https://vito.test/api/projects/1/servers/32/services/184"
-);
-
-const headers = {
-    "Content-Type": "application/json",
-    "Accept": "application/json",
-};
-
-fetch(url, {
-    method: "DELETE",
-    headers,
-}).then(response => response.json());
-
-
- - -
-

Example response (204):

-
-
-Empty response
- 
-
- - -
-

- Request    - - -    - -

-

- DELETE - api/projects/{project_id}/servers/{server_id}/services/{service_id} -

-

Headers

-
- Content-Type -        - -
-

- Example: - application/json -

-
-
- Accept -        - -
-

- Example: - application/json -

-
-

URL Parameters

-
- project_id -    - integer -     - -
-

- The ID of the project. Example: - 1 -

-
-
- server_id -    - integer -     - -
-

- The ID of the server. Example: - 32 -

-
-
- service_id -    - integer -     - -
-

- The ID of the service. Example: - 184 -

-
-
- -

sites

- -

list

- -

- -

Get all sites.

- - -
Example request:
- -
-
curl --request GET \
-    --get "https://vito.test/api/projects/1/servers/32/sites" \
-    --header "Content-Type: application/json" \
-    --header "Accept: application/json"
-
- -
-
const url = new URL(
-    "https://vito.test/api/projects/1/servers/32/sites"
-);
-
-const headers = {
-    "Content-Type": "application/json",
-    "Accept": "application/json",
-};
-
-fetch(url, {
-    method: "GET",
-    headers,
-}).then(response => response.json());
-
-
- - -
-

Example response (200):

-
-
-
-{
-    "data": [
-        {
-            "id": 50,
-            "server_id": 1,
-            "source_control_id": null,
-            "type": "laravel",
-            "type_data": null,
-            "domain": "test.com",
-            "aliases": null,
-            "web_directory": "/",
-            "path": "/home",
-            "php_version": "8.2",
-            "repository": null,
-            "branch": "main",
-            "status": "ready",
-            "port": null,
-            "user": "vito",
-            "progress": 100,
-            "created_at": "2025-04-21T18:40:20.000000Z",
-            "updated_at": "2025-04-21T18:40:20.000000Z"
-        },
-        {
-            "id": 51,
-            "server_id": 1,
-            "source_control_id": null,
-            "type": "laravel",
-            "type_data": null,
-            "domain": "test.com",
-            "aliases": null,
-            "web_directory": "/",
-            "path": "/home",
-            "php_version": "8.2",
-            "repository": null,
-            "branch": "main",
-            "status": "ready",
-            "port": null,
-            "user": "vito",
-            "progress": 100,
-            "created_at": "2025-04-21T18:40:20.000000Z",
-            "updated_at": "2025-04-21T18:40:20.000000Z"
-        }
-    ],
-    "links": {
-        "first": "/?page=1",
-        "last": "/?page=1",
-        "prev": null,
-        "next": null
-    },
-    "meta": {
-        "current_page": 1,
-        "from": 1,
-        "last_page": 1,
-        "links": [
-            {
-                "url": null,
-                "label": "&laquo; Previous",
-                "active": false
-            },
-            {
-                "url": "/?page=1",
-                "label": "1",
-                "active": true
-            },
-            {
-                "url": null,
-                "label": "Next &raquo;",
-                "active": false
-            }
-        ],
-        "path": "/",
-        "per_page": 25,
-        "to": 2,
-        "total": 2
-    }
-}
- 
-
- - -
-

- Request    - - -    - -

-

- GET - api/projects/{project_id}/servers/{server_id}/sites -

-

Headers

-
- Content-Type -        - -
-

- Example: - application/json -

-
-
- Accept -        - -
-

- Example: - application/json -

-
-

URL Parameters

-
- project_id -    - integer -     - -
-

- The ID of the project. Example: - 1 -

-
-
- server_id -    - integer -     - -
-

- The ID of the server. Example: - 32 -

-
-
- -

create

- -

- -

Create a new site.

- - -
Example request:
- -
-
curl --request POST \
-    "https://vito.test/api/projects/1/servers/32/sites" \
-    --header "Content-Type: application/json" \
-    --header "Accept: application/json" \
-    --data "{
-    \"type\": \"load-balancer\",
-    \"domain\": \"consequatur\",
-    \"aliases\": [
-        \"consequatur\"
-    ],
-    \"php_version\": \"7.4\",
-    \"web_directory\": \"public\",
-    \"source_control\": \"consequatur\",
-    \"repository\": \"organization\\/repository\",
-    \"branch\": \"main\",
-    \"composer\": true,
-    \"version\": \"5.2.1\",
-    \"user\": \"consequatur\",
-    \"method\": \"ip-hash\"
-}"
-
-
- -
-
const url = new URL(
-    "https://vito.test/api/projects/1/servers/32/sites"
-);
-
-const headers = {
-    "Content-Type": "application/json",
-    "Accept": "application/json",
-};
-
-let body = {
-    "type": "load-balancer",
-    "domain": "consequatur",
-    "aliases": [
-        "consequatur"
-    ],
-    "php_version": "7.4",
-    "web_directory": "public",
-    "source_control": "consequatur",
-    "repository": "organization\/repository",
-    "branch": "main",
-    "composer": true,
-    "version": "5.2.1",
-    "user": "consequatur",
-    "method": "ip-hash"
-};
-
-fetch(url, {
-    method: "POST",
-    headers,
-    body: JSON.stringify(body),
-}).then(response => response.json());
-
-
- - -
-

Example response (200):

-
-
-
-{
-    "id": 50,
-    "server_id": 1,
-    "source_control_id": null,
-    "type": "laravel",
-    "type_data": null,
-    "domain": "test.com",
-    "aliases": null,
-    "web_directory": "/",
-    "path": "/home",
-    "php_version": "8.2",
-    "repository": null,
-    "branch": "main",
-    "status": "ready",
-    "port": null,
-    "user": "vito",
-    "progress": 100,
-    "created_at": "2025-04-21T18:40:20.000000Z",
-    "updated_at": "2025-04-21T18:40:20.000000Z"
-}
- 
-
- - -
-

- Request    - - -    - -

-

- POST - api/projects/{project_id}/servers/{server_id}/sites -

-

Headers

-
- Content-Type -        - -
-

- Example: - application/json -

-
-
- Accept -        - -
-

- Example: - application/json -

-
-

URL Parameters

-
- project_id -    - integer -     - -
-

- The ID of the project. Example: - 1 -

-
-
- server_id -    - integer -     - -
-

- The ID of the server. Example: - 32 -

-
-

Body Parameters

-
- type -    - string -     - -
-

- Example: - load-balancer -

- Must be one of: -
    -
  • php
  • -
  • php-blank
  • -
  • phpmyadmin
  • -
  • laravel
  • -
  • wordpress
  • -
  • load-balancer
  • -
-
-
- domain -    - string -     - -
-

- Example: - consequatur -

-
-
- aliases -    - string[] -     - - -
-
-
- php_version -    - string -     - -
-

- One of the installed PHP Versions Example: - 7.4 -

-
-
- web_directory -    - string -     - -
-

- Required for PHP and Laravel sites Example: - public -

-
-
- source_control -    - string -     - -
-

- Source control ID, Required for Sites which support source control Example: - consequatur -

-
-
- repository -    - string -     - -
-

- Repository, Required for Sites which support source control Example: - organization/repository -

-
-
- branch -    - string -     - -
-

- Branch, Required for Sites which support source control Example: - main -

-
-
- composer -    - boolean -     - - -
-

- Run composer if site supports composer Example: - true -

-
-
- version -    - string -     - -
-

- Version, if the site type requires a version like PHPMyAdmin Example: - 5.2.1 -

-
-
- user -    - string -     - -
-

- user, to isolate the website under a new user Example: - consequatur -

-
-
- method -    - string -     - -
-

- Load balancer method, Required if the site type is Load balancer Example: - ip-hash -

- Must be one of: -
    -
  • round-robin
  • -
  • least-connections
  • -
  • ip-hash
  • -
-
-
- -

show

- -

- -

Get a site by ID.

- - -
Example request:
- -
-
curl --request GET \
-    --get "https://vito.test/api/projects/1/servers/32/sites/17" \
-    --header "Content-Type: application/json" \
-    --header "Accept: application/json"
-
- -
-
const url = new URL(
-    "https://vito.test/api/projects/1/servers/32/sites/17"
-);
-
-const headers = {
-    "Content-Type": "application/json",
-    "Accept": "application/json",
-};
-
-fetch(url, {
-    method: "GET",
-    headers,
-}).then(response => response.json());
-
-
- - -
-

Example response (200):

-
-
-
-{
-    "id": 50,
-    "server_id": 1,
-    "source_control_id": null,
-    "type": "laravel",
-    "type_data": null,
-    "domain": "test.com",
-    "aliases": null,
-    "web_directory": "/",
-    "path": "/home",
-    "php_version": "8.2",
-    "repository": null,
-    "branch": "main",
-    "status": "ready",
-    "port": null,
-    "user": "vito",
-    "progress": 100,
-    "created_at": "2025-04-21T18:40:20.000000Z",
-    "updated_at": "2025-04-21T18:40:20.000000Z"
-}
- 
-
- - -
-

- Request    - - -    - -

-

- GET - api/projects/{project_id}/servers/{server_id}/sites/{id} -

-

Headers

-
- Content-Type -        - -
-

- Example: - application/json -

-
-
- Accept -        - -
-

- Example: - application/json -

-
-

URL Parameters

-
- project_id -    - integer -     - -
-

- The ID of the project. Example: - 1 -

-
-
- server_id -    - integer -     - -
-

- The ID of the server. Example: - 32 -

-
-
- id -    - integer -     - -
-

- The ID of the site. Example: - 17 -

-
-
- -

delete

- -

- -

Delete site.

- - -
Example request:
- -
-
curl --request DELETE \
-    "https://vito.test/api/projects/1/servers/32/sites/17" \
-    --header "Content-Type: application/json" \
-    --header "Accept: application/json"
-
- -
-
const url = new URL(
-    "https://vito.test/api/projects/1/servers/32/sites/17"
-);
-
-const headers = {
-    "Content-Type": "application/json",
-    "Accept": "application/json",
-};
-
-fetch(url, {
-    method: "DELETE",
-    headers,
-}).then(response => response.json());
-
-
- - -
-

Example response (204):

-
-
-Empty response
- 
-
- - -
-

- Request    - - -    - -

-

- DELETE - api/projects/{project_id}/servers/{server_id}/sites/{site_id} -

-

Headers

-
- Content-Type -        - -
-

- Example: - application/json -

-
-
- Accept -        - -
-

- Example: - application/json -

-
-

URL Parameters

-
- project_id -    - integer -     - -
-

- The ID of the project. Example: - 1 -

-
-
- server_id -    - integer -     - -
-

- The ID of the server. Example: - 32 -

-
-
- site_id -    - integer -     - -
-

- The ID of the site. Example: - 17 -

-
-
- -

- load-balancer -

- -

- -

Update load balancer.

- - -
Example request:
- -
-
curl --request POST \
-    "https://vito.test/api/projects/1/servers/32/sites/17/load-balancer" \
-    --header "Content-Type: application/json" \
-    --header "Accept: application/json" \
-    --data "{
-    \"method\": \"ip-hash\",
-    \"servers\": [
-        \"consequatur\"
-    ]
-}"
-
-
- -
-
const url = new URL(
-    "https://vito.test/api/projects/1/servers/32/sites/17/load-balancer"
-);
-
-const headers = {
-    "Content-Type": "application/json",
-    "Accept": "application/json",
-};
-
-let body = {
-    "method": "ip-hash",
-    "servers": [
-        "consequatur"
-    ]
-};
-
-fetch(url, {
-    method: "POST",
-    headers,
-    body: JSON.stringify(body),
-}).then(response => response.json());
-
-
- - -
-

Example response (200):

-
-
-
-
- 
-
- - -
-

- Request    - - -    - -

-

- POST - api/projects/{project_id}/servers/{server_id}/sites/{site_id}/load-balancer -

-

Headers

-
- Content-Type -        - -
-

- Example: - application/json -

-
-
- Accept -        - -
-

- Example: - application/json -

-
-

URL Parameters

-
- project_id -    - integer -     - -
-

- The ID of the project. Example: - 1 -

-
-
- server_id -    - integer -     - -
-

- The ID of the server. Example: - 32 -

-
-
- site_id -    - integer -     - -
-

- The ID of the site. Example: - 17 -

-
-

Body Parameters

-
- method -    - string -     - -
-

- Load balancer method, Required if the site type is Load balancer Example: - ip-hash -

- Must be one of: -
    -
  • round-robin
  • -
  • least-connections
  • -
  • ip-hash
  • -
-
-
- servers -    - string[] -     - - -
-

- Array of servers including server, port, weight, backup. (server is the local IP of the - server) -

-
-
- -

aliases

- -

- -

Update aliases.

- - -
Example request:
- -
-
curl --request PUT \
-    "https://vito.test/api/projects/1/servers/32/sites/17/aliases" \
-    --header "Content-Type: application/json" \
-    --header "Accept: application/json" \
-    --data "{
-    \"aliases\": [
-        \"consequatur\"
-    ]
-}"
-
-
- -
-
const url = new URL(
-    "https://vito.test/api/projects/1/servers/32/sites/17/aliases"
-);
-
-const headers = {
-    "Content-Type": "application/json",
-    "Accept": "application/json",
-};
-
-let body = {
-    "aliases": [
-        "consequatur"
-    ]
-};
-
-fetch(url, {
-    method: "PUT",
-    headers,
-    body: JSON.stringify(body),
-}).then(response => response.json());
-
-
- - -
-

Example response (200):

-
-
-
-
- 
-
- - -
-

- Request    - - -    - -

-

- PUT - api/projects/{project_id}/servers/{server_id}/sites/{site_id}/aliases -

-

Headers

-
- Content-Type -        - -
-

- Example: - application/json -

-
-
- Accept -        - -
-

- Example: - application/json -

-
-

URL Parameters

-
- project_id -    - integer -     - -
-

- The ID of the project. Example: - 1 -

-
-
- server_id -    - integer -     - -
-

- The ID of the server. Example: - 32 -

-
-
- site_id -    - integer -     - -
-

- The ID of the site. Example: - 17 -

-
-

Body Parameters

-
- aliases -    - string[] -     - - -
-

Array of aliases

-
-
- -

deploy

- -

- -

Run site deployment script

- - -
Example request:
- -
-
curl --request POST \
-    "https://vito.test/api/projects/1/servers/32/sites/17/deploy" \
-    --header "Content-Type: application/json" \
-    --header "Accept: application/json"
-
- -
-
const url = new URL(
-    "https://vito.test/api/projects/1/servers/32/sites/17/deploy"
-);
-
-const headers = {
-    "Content-Type": "application/json",
-    "Accept": "application/json",
-};
-
-fetch(url, {
-    method: "POST",
-    headers,
-}).then(response => response.json());
-
-
- - -
-

Example response (200):

-
-
-
-
- 
-
- - -
-

- Request    - - -    - -

-

- POST - api/projects/{project_id}/servers/{server_id}/sites/{site_id}/deploy -

-

Headers

-
- Content-Type -        - -
-

- Example: - application/json -

-
-
- Accept -        - -
-

- Example: - application/json -

-
-

URL Parameters

-
- project_id -    - integer -     - -
-

- The ID of the project. Example: - 1 -

-
-
- server_id -    - integer -     - -
-

- The ID of the server. Example: - 32 -

-
-
- site_id -    - integer -     - -
-

- The ID of the site. Example: - 17 -

-
-
- -

- deployment-script -

- -

- -

Update site deployment script

- - -
Example request:
- -
-
curl --request PUT \
-    "https://vito.test/api/projects/1/servers/32/sites/17/deployment-script" \
-    --header "Content-Type: application/json" \
-    --header "Accept: application/json" \
-    --data "{
-    \"script\": \"consequatur\"
-}"
-
-
- -
-
const url = new URL(
-    "https://vito.test/api/projects/1/servers/32/sites/17/deployment-script"
-);
-
-const headers = {
-    "Content-Type": "application/json",
-    "Accept": "application/json",
-};
-
-let body = {
-    "script": "consequatur"
-};
-
-fetch(url, {
-    method: "PUT",
-    headers,
-    body: JSON.stringify(body),
-}).then(response => response.json());
-
-
- - -
-

Example response (204):

-
-
-Empty response
- 
-
- - -
-

- Request    - - -    - -

-

- PUT - - api/projects/{project_id}/servers/{server_id}/sites/{site_id}/deployment-script - -

-

Headers

-
- Content-Type -        - -
-

- Example: - application/json -

-
-
- Accept -        - -
-

- Example: - application/json -

-
-

URL Parameters

-
- project_id -    - integer -     - -
-

- The ID of the project. Example: - 1 -

-
-
- server_id -    - integer -     - -
-

- The ID of the server. Example: - 32 -

-
-
- site_id -    - integer -     - -
-

- The ID of the site. Example: - 17 -

-
-

Body Parameters

-
- script -    - string -     - -
-

- Content of the deployment script Example: - consequatur -

-
-
- -

- deployment-script -

- -

- -

Get site deployment script content

- - -
Example request:
- -
-
curl --request GET \
-    --get "https://vito.test/api/projects/1/servers/32/sites/17/deployment-script" \
-    --header "Content-Type: application/json" \
-    --header "Accept: application/json"
-
- -
-
const url = new URL(
-    "https://vito.test/api/projects/1/servers/32/sites/17/deployment-script"
-);
-
-const headers = {
-    "Content-Type": "application/json",
-    "Accept": "application/json",
-};
-
-fetch(url, {
-    method: "GET",
-    headers,
-}).then(response => response.json());
-
-
- - -
-

Example response (200):

-
-
-
-
- 
-
- - -
-

- Request    - - -    - -

-

- GET - - api/projects/{project_id}/servers/{server_id}/sites/{site_id}/deployment-script - -

-

Headers

-
- Content-Type -        - -
-

- Example: - application/json -

-
-
- Accept -        - -
-

- Example: - application/json -

-
-

URL Parameters

-
- project_id -    - integer -     - -
-

- The ID of the project. Example: - 1 -

-
-
- server_id -    - integer -     - -
-

- The ID of the server. Example: - 32 -

-
-
- site_id -    - integer -     - -
-

- The ID of the site. Example: - 17 -

-
-
- -

env

- -

- -

Get site .env file content

- - -
Example request:
- -
-
curl --request GET \
-    --get "https://vito.test/api/projects/1/servers/32/sites/17/env" \
-    --header "Content-Type: application/json" \
-    --header "Accept: application/json"
-
- -
-
const url = new URL(
-    "https://vito.test/api/projects/1/servers/32/sites/17/env"
-);
-
-const headers = {
-    "Content-Type": "application/json",
-    "Accept": "application/json",
-};
-
-fetch(url, {
-    method: "GET",
-    headers,
-}).then(response => response.json());
-
-
- - -
-

Example response (200):

-
-
-
-{
-    "data": {
-        "env": "APP_NAME=Laravel\\nAPP_ENV=production"
-    }
-}
- 
-
- - -
-

- Request    - - -    - -

-

- GET - api/projects/{project_id}/servers/{server_id}/sites/{site_id}/env -

-

Headers

-
- Content-Type -        - -
-

- Example: - application/json -

-
-
- Accept -        - -
-

- Example: - application/json -

-
-

URL Parameters

-
- project_id -    - integer -     - -
-

- The ID of the project. Example: - 1 -

-
-
- server_id -    - integer -     - -
-

- The ID of the server. Example: - 32 -

-
-
- site_id -    - integer -     - -
-

- The ID of the site. Example: - 17 -

-
-
- -

env

- -

- -

Update site .env file

- - -
Example request:
- -
-
curl --request PUT \
-    "https://vito.test/api/projects/1/servers/32/sites/17/env" \
-    --header "Content-Type: application/json" \
-    --header "Accept: application/json" \
-    --data "{
-    \"env\": \"consequatur\"
-}"
-
-
- -
-
const url = new URL(
-    "https://vito.test/api/projects/1/servers/32/sites/17/env"
-);
-
-const headers = {
-    "Content-Type": "application/json",
-    "Accept": "application/json",
-};
-
-let body = {
-    "env": "consequatur"
-};
-
-fetch(url, {
-    method: "PUT",
-    headers,
-    body: JSON.stringify(body),
-}).then(response => response.json());
-
-
- - -
-

Example response (200):

-
-
-
-
- 
-
- - -
-

- Request    - - -    - -

-

- PUT - api/projects/{project_id}/servers/{server_id}/sites/{site_id}/env -

-

Headers

-
- Content-Type -        - -
-

- Example: - application/json -

-
-
- Accept -        - -
-

- Example: - application/json -

-
-

URL Parameters

-
- project_id -    - integer -     - -
-

- The ID of the project. Example: - 1 -

-
-
- server_id -    - integer -     - -
-

- The ID of the server. Example: - 32 -

-
-
- site_id -    - integer -     - -
-

- The ID of the site. Example: - 17 -

-
-

Body Parameters

-
- env -    - string -     - -
-

- Content of the .env file Example: - consequatur -

-
-
- -

source-controls

- -

list

- -

- - -
Example request:
- -
-
curl --request GET \
-    --get "https://vito.test/api/projects/1/source-controls" \
-    --header "Content-Type: application/json" \
-    --header "Accept: application/json"
-
- -
-
const url = new URL(
-    "https://vito.test/api/projects/1/source-controls"
-);
-
-const headers = {
-    "Content-Type": "application/json",
-    "Accept": "application/json",
-};
-
-fetch(url, {
-    method: "GET",
-    headers,
-}).then(response => response.json());
-
-
- - -
-

Example response (200):

-
-
-
-{
-    "data": [
-        {
-            "id": 5,
-            "project_id": null,
-            "global": true,
-            "name": "Dr. Cornelius Luettgen V",
-            "provider": "github",
-            "created_at": "2025-04-21T18:40:20.000000Z",
-            "updated_at": "2025-04-21T18:40:20.000000Z"
-        },
-        {
-            "id": 6,
-            "project_id": null,
-            "global": true,
-            "name": "Orville Satterfield",
-            "provider": "github",
-            "created_at": "2025-04-21T18:40:20.000000Z",
-            "updated_at": "2025-04-21T18:40:20.000000Z"
-        }
-    ],
-    "links": {
-        "first": "/?page=1",
-        "last": "/?page=1",
-        "prev": null,
-        "next": null
-    },
-    "meta": {
-        "current_page": 1,
-        "from": 1,
-        "last_page": 1,
-        "links": [
-            {
-                "url": null,
-                "label": "&laquo; Previous",
-                "active": false
-            },
-            {
-                "url": "/?page=1",
-                "label": "1",
-                "active": true
-            },
-            {
-                "url": null,
-                "label": "Next &raquo;",
-                "active": false
-            }
-        ],
-        "path": "/",
-        "per_page": 25,
-        "to": 2,
-        "total": 2
-    }
-}
- 
-
- - -
-

- Request    - - -    - -

-

- GET - api/projects/{project_id}/source-controls -

-

Headers

-
- Content-Type -        - -
-

- Example: - application/json -

-
-
- Accept -        - -
-

- Example: - application/json -

-
-

URL Parameters

-
- project_id -    - integer -     - -
-

- The ID of the project. Example: - 1 -

-
-
- -

create

- -

- - -
Example request:
- -
-
curl --request POST \
-    "https://vito.test/api/projects/1/source-controls" \
-    --header "Content-Type: application/json" \
-    --header "Accept: application/json" \
-    --data "{
-    \"provider\": \"gitlab\",
-    \"name\": \"consequatur\",
-    \"token\": \"consequatur\",
-    \"url\": \"http:\\/\\/kunze.biz\\/iste-laborum-eius-est-dolor.html\",
-    \"username\": \"consequatur\",
-    \"password\": \"O[2UZ5ij-e\\/dl4m{o,\"
-}"
-
-
- -
-
const url = new URL(
-    "https://vito.test/api/projects/1/source-controls"
-);
-
-const headers = {
-    "Content-Type": "application/json",
-    "Accept": "application/json",
-};
-
-let body = {
-    "provider": "gitlab",
-    "name": "consequatur",
-    "token": "consequatur",
-    "url": "http:\/\/kunze.biz\/iste-laborum-eius-est-dolor.html",
-    "username": "consequatur",
-    "password": "O[2UZ5ij-e\/dl4m{o,"
-};
-
-fetch(url, {
-    method: "POST",
-    headers,
-    body: JSON.stringify(body),
-}).then(response => response.json());
-
-
- - -
-

Example response (200):

-
-
-
-{
-    "id": 5,
-    "project_id": null,
-    "global": true,
-    "name": "Lonny Ankunding",
-    "provider": "github",
-    "created_at": "2025-04-21T18:40:20.000000Z",
-    "updated_at": "2025-04-21T18:40:20.000000Z"
-}
- 
-
- - -
-

- Request    - - -    - -

-

- POST - api/projects/{project_id}/source-controls -

-

Headers

-
- Content-Type -        - -
-

- Example: - application/json -

-
-
- Accept -        - -
-

- Example: - application/json -

-
-

URL Parameters

-
- project_id -    - integer -     - -
-

- The ID of the project. Example: - 1 -

-
-

Body Parameters

-
- provider -    - string -     - -
-

- The provider Example: - gitlab -

- Must be one of: -
    -
  • gitlab
  • -
  • github
  • -
  • bitbucket
  • -
-
-
- name -    - string -     - -
-

- The name of the storage provider. Example: - consequatur -

-
-
- token -    - string -     - -
-

- The token if provider requires api token Example: - consequatur -

-
-
- url -    - string -     - -
-

- The URL if the provider is Gitlab and it is self-hosted Example: - http://kunze.biz/iste-laborum-eius-est-dolor.html -

-
-
- username -    - string -     - -
-

- The username if the provider is Bitbucket Example: - consequatur -

-
-
- password -    - string -     - -
-

- The password if the provider is Bitbucket Example: - O[2UZ5ij-e/dl4m{o, -

-
-
- -

show

- -

- - -
Example request:
- -
-
curl --request GET \
-    --get "https://vito.test/api/projects/1/source-controls/1" \
-    --header "Content-Type: application/json" \
-    --header "Accept: application/json"
-
- -
-
const url = new URL(
-    "https://vito.test/api/projects/1/source-controls/1"
-);
-
-const headers = {
-    "Content-Type": "application/json",
-    "Accept": "application/json",
-};
-
-fetch(url, {
-    method: "GET",
-    headers,
-}).then(response => response.json());
-
-
- - -
-

Example response (200):

-
-
-
-{
-    "id": 5,
-    "project_id": null,
-    "global": true,
-    "name": "Dr. Enoch Harber II",
-    "provider": "github",
-    "created_at": "2025-04-21T18:40:20.000000Z",
-    "updated_at": "2025-04-21T18:40:20.000000Z"
-}
- 
-
- - -
-

- Request    - - -    - -

-

- GET - api/projects/{project_id}/source-controls/{sourceControl_id} -

-

Headers

-
- Content-Type -        - -
-

- Example: - application/json -

-
-
- Accept -        - -
-

- Example: - application/json -

-
-

URL Parameters

-
- project_id -    - integer -     - -
-

- The ID of the project. Example: - 1 -

-
-
- sourceControl_id -    - integer -     - -
-

- The ID of the sourceControl. Example: - 1 -

-
-
- -

update

- -

- - -
Example request:
- -
-
curl --request PUT \
-    "https://vito.test/api/projects/1/source-controls/1" \
-    --header "Content-Type: application/json" \
-    --header "Accept: application/json" \
-    --data "{
-    \"name\": \"consequatur\",
-    \"token\": \"consequatur\",
-    \"url\": \"http:\\/\\/kunze.biz\\/iste-laborum-eius-est-dolor.html\",
-    \"username\": \"consequatur\",
-    \"password\": \"O[2UZ5ij-e\\/dl4m{o,\",
-    \"global\": false
-}"
-
-
- -
-
const url = new URL(
-    "https://vito.test/api/projects/1/source-controls/1"
-);
-
-const headers = {
-    "Content-Type": "application/json",
-    "Accept": "application/json",
-};
-
-let body = {
-    "name": "consequatur",
-    "token": "consequatur",
-    "url": "http:\/\/kunze.biz\/iste-laborum-eius-est-dolor.html",
-    "username": "consequatur",
-    "password": "O[2UZ5ij-e\/dl4m{o,",
-    "global": false
-};
-
-fetch(url, {
-    method: "PUT",
-    headers,
-    body: JSON.stringify(body),
-}).then(response => response.json());
-
-
- - -
-

Example response (200):

-
-
-
-{
-    "id": 5,
-    "project_id": null,
-    "global": true,
-    "name": "Lonny Ankunding",
-    "provider": "github",
-    "created_at": "2025-04-21T18:40:20.000000Z",
-    "updated_at": "2025-04-21T18:40:20.000000Z"
-}
- 
-
- - -
-

- Request    - - -    - -

-

- PUT - api/projects/{project_id}/source-controls/{sourceControl_id} -

-

Headers

-
- Content-Type -        - -
-

- Example: - application/json -

-
-
- Accept -        - -
-

- Example: - application/json -

-
-

URL Parameters

-
- project_id -    - integer -     - -
-

- The ID of the project. Example: - 1 -

-
-
- sourceControl_id -    - integer -     - -
-

- The ID of the sourceControl. Example: - 1 -

-
-

Body Parameters

-
- name -    - string -     - -
-

- The name of the storage provider. Example: - consequatur -

-
-
- token -    - string -     - -
-

- The token if provider requires api token Example: - consequatur -

-
-
- url -    - string -     - -
-

- The URL if the provider is Gitlab and it is self-hosted Example: - http://kunze.biz/iste-laborum-eius-est-dolor.html -

-
-
- username -    - string -     - -
-

- The username if the provider is Bitbucket Example: - consequatur -

-
-
- password -    - string -     - -
-

- The password if the provider is Bitbucket Example: - O[2UZ5ij-e/dl4m{o, -

-
-
- global -    - string -     - -
-

- Accessible in all projects Example: - false -

- Must be one of: -
    -
  • 1
  • -
  • -
-
-
- -

delete

- -

- - -
Example request:
- -
-
curl --request DELETE \
-    "https://vito.test/api/projects/1/source-controls/1" \
-    --header "Content-Type: application/json" \
-    --header "Accept: application/json"
-
- -
-
const url = new URL(
-    "https://vito.test/api/projects/1/source-controls/1"
-);
-
-const headers = {
-    "Content-Type": "application/json",
-    "Accept": "application/json",
-};
-
-fetch(url, {
-    method: "DELETE",
-    headers,
-}).then(response => response.json());
-
-
- - -
-

Example response (204):

-
-
-Empty response
- 
-
- - -
-

- Request    - - -    - -

-

- DELETE - api/projects/{project_id}/source-controls/{sourceControl_id} -

-

Headers

-
- Content-Type -        - -
-

- Example: - application/json -

-
-
- Accept -        - -
-

- Example: - application/json -

-
-

URL Parameters

-
- project_id -    - integer -     - -
-

- The ID of the project. Example: - 1 -

-
-
- sourceControl_id -    - integer -     - -
-

- The ID of the sourceControl. Example: - 1 -

-
-
- -

ssh-keys

- -

list

- -

- -

Get all ssh keys.

- - -
Example request:
- -
-
curl --request GET \
-    --get "https://vito.test/api/projects/1/servers/32/ssh-keys" \
-    --header "Content-Type: application/json" \
-    --header "Accept: application/json"
-
- -
-
const url = new URL(
-    "https://vito.test/api/projects/1/servers/32/ssh-keys"
-);
-
-const headers = {
-    "Content-Type": "application/json",
-    "Accept": "application/json",
-};
-
-fetch(url, {
-    method: "GET",
-    headers,
-}).then(response => response.json());
-
-
- - -
-

Example response (200):

-
-
-
-{
-    "data": [
-        {
-            "id": 2,
-            "user": {
-                "id": 1,
-                "name": "Saeed Vaziry",
-                "email": "demo@vitodeploy.com",
-                "created_at": "2024-12-19T23:19:20.000000Z",
-                "updated_at": "2025-04-19T21:24:56.000000Z"
-            },
-            "name": "Prof. Aurelia Buckridge MD",
-            "created_at": "2025-04-21T18:40:19.000000Z",
-            "updated_at": "2025-04-21T18:40:19.000000Z"
-        },
-        {
-            "id": 3,
-            "user": {
-                "id": 1,
-                "name": "Saeed Vaziry",
-                "email": "demo@vitodeploy.com",
-                "created_at": "2024-12-19T23:19:20.000000Z",
-                "updated_at": "2025-04-19T21:24:56.000000Z"
-            },
-            "name": "Jaylan Lakin",
-            "created_at": "2025-04-21T18:40:19.000000Z",
-            "updated_at": "2025-04-21T18:40:19.000000Z"
-        }
-    ],
-    "links": {
-        "first": "/?page=1",
-        "last": "/?page=1",
-        "prev": null,
-        "next": null
-    },
-    "meta": {
-        "current_page": 1,
-        "from": 1,
-        "last_page": 1,
-        "links": [
-            {
-                "url": null,
-                "label": "&laquo; Previous",
-                "active": false
-            },
-            {
-                "url": "/?page=1",
-                "label": "1",
-                "active": true
-            },
-            {
-                "url": null,
-                "label": "Next &raquo;",
-                "active": false
-            }
-        ],
-        "path": "/",
-        "per_page": 25,
-        "to": 2,
-        "total": 2
-    }
-}
- 
-
- - -
-

- Request    - - -    - -

-

- GET - api/projects/{project_id}/servers/{server_id}/ssh-keys -

-

Headers

-
- Content-Type -        - -
-

- Example: - application/json -

-
-
- Accept -        - -
-

- Example: - application/json -

-
-

URL Parameters

-
- project_id -    - integer -     - -
-

- The ID of the project. Example: - 1 -

-
-
- server_id -    - integer -     - -
-

- The ID of the server. Example: - 32 -

-
-
- -

create

- -

- -

Deploy ssh key to server.

- - -
Example request:
- -
-
curl --request POST \
-    "https://vito.test/api/projects/1/servers/32/ssh-keys" \
-    --header "Content-Type: application/json" \
-    --header "Accept: application/json" \
-    --data "{
-    \"key_id\": \"consequatur\",
-    \"name\": \"consequatur\",
-    \"public_key\": \"consequatur\"
-}"
-
-
- -
-
const url = new URL(
-    "https://vito.test/api/projects/1/servers/32/ssh-keys"
-);
-
-const headers = {
-    "Content-Type": "application/json",
-    "Accept": "application/json",
-};
-
-let body = {
-    "key_id": "consequatur",
-    "name": "consequatur",
-    "public_key": "consequatur"
-};
-
-fetch(url, {
-    method: "POST",
-    headers,
-    body: JSON.stringify(body),
-}).then(response => response.json());
-
-
- - -
-

Example response (200):

-
-
-
-{
-    "id": 2,
-    "user": {
-        "id": 1,
-        "name": "Saeed Vaziry",
-        "email": "demo@vitodeploy.com",
-        "created_at": "2024-12-19T23:19:20.000000Z",
-        "updated_at": "2025-04-19T21:24:56.000000Z"
-    },
-    "name": "Dr. Cornelius Luettgen V",
-    "created_at": "2025-04-21T18:40:19.000000Z",
-    "updated_at": "2025-04-21T18:40:19.000000Z"
-}
- 
-
- - -
-

- Request    - - -    - -

-

- POST - api/projects/{project_id}/servers/{server_id}/ssh-keys -

-

Headers

-
- Content-Type -        - -
-

- Example: - application/json -

-
-
- Accept -        - -
-

- Example: - application/json -

-
-

URL Parameters

-
- project_id -    - integer -     - -
-

- The ID of the project. Example: - 1 -

-
-
- server_id -    - integer -     - -
-

- The ID of the server. Example: - 32 -

-
-

Body Parameters

-
- key_id -    - string -     - -
-

- The ID of the key. Example: - consequatur -

-
-
- name -    - string -     - -
-

- Key name, required if key_id is not provided. Example: - consequatur -

-
-
- public_key -    - string -     - -
-

- Public Key, required if key_id is not provided. Example: - consequatur -

-
-
- -

delete

- -

- -

Delete ssh key from server.

- - -
Example request:
- -
-
curl --request DELETE \
-    "https://vito.test/api/projects/1/servers/32/ssh-keys/1" \
-    --header "Content-Type: application/json" \
-    --header "Accept: application/json"
-
- -
-
const url = new URL(
-    "https://vito.test/api/projects/1/servers/32/ssh-keys/1"
-);
-
-const headers = {
-    "Content-Type": "application/json",
-    "Accept": "application/json",
-};
-
-fetch(url, {
-    method: "DELETE",
-    headers,
-}).then(response => response.json());
-
-
- - -
-

Example response (204):

-
-
-Empty response
- 
-
- - -
-

- Request    - - -    - -

-

- DELETE - api/projects/{project_id}/servers/{server_id}/ssh-keys/{sshKey_id} -

-

Headers

-
- Content-Type -        - -
-

- Example: - application/json -

-
-
- Accept -        - -
-

- Example: - application/json -

-
-

URL Parameters

-
- project_id -    - integer -     - -
-

- The ID of the project. Example: - 1 -

-
-
- server_id -    - integer -     - -
-

- The ID of the server. Example: - 32 -

-
-
- sshKey_id -    - integer -     - -
-

- The ID of the sshKey. Example: - 1 -

-
-
- -

storage-providers

- -

list

- -

- - -
Example request:
- -
-
curl --request GET \
-    --get "https://vito.test/api/projects/1/storage-providers" \
-    --header "Content-Type: application/json" \
-    --header "Accept: application/json"
-
- -
-
const url = new URL(
-    "https://vito.test/api/projects/1/storage-providers"
-);
-
-const headers = {
-    "Content-Type": "application/json",
-    "Accept": "application/json",
-};
-
-fetch(url, {
-    method: "GET",
-    headers,
-}).then(response => response.json());
-
-
- - -
-

Example response (200):

-
-
-
-{
-    "data": [
-        {
-            "id": 5,
-            "project_id": null,
-            "global": true,
-            "name": "dolores",
-            "provider": "local",
-            "created_at": "2025-04-21T18:40:20.000000Z",
-            "updated_at": "2025-04-21T18:40:20.000000Z"
-        },
-        {
-            "id": 6,
-            "project_id": null,
-            "global": true,
-            "name": "dignissimos",
-            "provider": "dropbox",
-            "created_at": "2025-04-21T18:40:20.000000Z",
-            "updated_at": "2025-04-21T18:40:20.000000Z"
-        }
-    ],
-    "links": {
-        "first": "/?page=1",
-        "last": "/?page=1",
-        "prev": null,
-        "next": null
-    },
-    "meta": {
-        "current_page": 1,
-        "from": 1,
-        "last_page": 1,
-        "links": [
-            {
-                "url": null,
-                "label": "&laquo; Previous",
-                "active": false
-            },
-            {
-                "url": "/?page=1",
-                "label": "1",
-                "active": true
-            },
-            {
-                "url": null,
-                "label": "Next &raquo;",
-                "active": false
-            }
-        ],
-        "path": "/",
-        "per_page": 25,
-        "to": 2,
-        "total": 2
-    }
-}
- 
-
- - -
-

- Request    - - -    - -

-

- GET - api/projects/{project_id}/storage-providers -

-

Headers

-
- Content-Type -        - -
-

- Example: - application/json -

-
-
- Accept -        - -
-

- Example: - application/json -

-
-

URL Parameters

-
- project_id -    - integer -     - -
-

- The ID of the project. Example: - 1 -

-
-
- -

create

- -

- - -
Example request:
- -
-
curl --request POST \
-    "https://vito.test/api/projects/1/storage-providers" \
-    --header "Content-Type: application/json" \
-    --header "Accept: application/json" \
-    --data "{
-    \"provider\": \"consequatur\",
-    \"name\": \"consequatur\",
-    \"token\": \"consequatur\",
-    \"key\": \"consequatur\",
-    \"secret\": \"consequatur\"
-}"
-
-
- -
-
const url = new URL(
-    "https://vito.test/api/projects/1/storage-providers"
-);
-
-const headers = {
-    "Content-Type": "application/json",
-    "Accept": "application/json",
-};
-
-let body = {
-    "provider": "consequatur",
-    "name": "consequatur",
-    "token": "consequatur",
-    "key": "consequatur",
-    "secret": "consequatur"
-};
-
-fetch(url, {
-    method: "POST",
-    headers,
-    body: JSON.stringify(body),
-}).then(response => response.json());
-
-
- - -
-

Example response (200):

-
-
-
-{
-    "id": 5,
-    "project_id": null,
-    "global": true,
-    "name": "dolores",
-    "provider": "local",
-    "created_at": "2025-04-21T18:40:20.000000Z",
-    "updated_at": "2025-04-21T18:40:20.000000Z"
-}
- 
-
- - -
-

- Request    - - -    - -

-

- POST - api/projects/{project_id}/storage-providers -

-

Headers

-
- Content-Type -        - -
-

- Example: - application/json -

-
-
- Accept -        - -
-

- Example: - application/json -

-
-

URL Parameters

-
- project_id -    - integer -     - -
-

- The ID of the project. Example: - 1 -

-
-

Body Parameters

-
- provider -    - string -     - -
-

- The provider (aws, linode, hetzner, digitalocean, vultr, ...) Example: - consequatur -

-
-
- name -    - string -     - -
-

- The name of the storage provider. Example: - consequatur -

-
-
- token -    - string -     - -
-

- The token if provider requires api token Example: - consequatur -

-
-
- key -    - string -     - -
-

- The key if provider requires key Example: - consequatur -

-
-
- secret -    - string -     - -
-

- The secret if provider requires key Example: - consequatur -

-
-
- -

show

- -

- - -
Example request:
- -
-
curl --request GET \
-    --get "https://vito.test/api/projects/1/storage-providers/3" \
-    --header "Content-Type: application/json" \
-    --header "Accept: application/json"
-
- -
-
const url = new URL(
-    "https://vito.test/api/projects/1/storage-providers/3"
-);
-
-const headers = {
-    "Content-Type": "application/json",
-    "Accept": "application/json",
-};
-
-fetch(url, {
-    method: "GET",
-    headers,
-}).then(response => response.json());
-
-
- - -
-

Example response (200):

-
-
-
-{
-    "id": 5,
-    "project_id": null,
-    "global": true,
-    "name": "facilis",
-    "provider": "dropbox",
-    "created_at": "2025-04-21T18:40:20.000000Z",
-    "updated_at": "2025-04-21T18:40:20.000000Z"
-}
- 
-
- - -
-

- Request    - - -    - -

-

- GET - api/projects/{project_id}/storage-providers/{storageProvider_id} -

-

Headers

-
- Content-Type -        - -
-

- Example: - application/json -

-
-
- Accept -        - -
-

- Example: - application/json -

-
-

URL Parameters

-
- project_id -    - integer -     - -
-

- The ID of the project. Example: - 1 -

-
-
- storageProvider_id -    - integer -     - -
-

- The ID of the storageProvider. Example: - 3 -

-
-
- -

- update -

- -

- - -
Example request:
- -
-
curl --request PUT \
-    "https://vito.test/api/projects/1/storage-providers/3" \
-    --header "Content-Type: application/json" \
-    --header "Accept: application/json" \
-    --data "{
-    \"name\": \"consequatur\",
-    \"global\": true
-}"
-
-
- -
-
const url = new URL(
-    "https://vito.test/api/projects/1/storage-providers/3"
-);
-
-const headers = {
-    "Content-Type": "application/json",
-    "Accept": "application/json",
-};
-
-let body = {
-    "name": "consequatur",
-    "global": true
-};
-
-fetch(url, {
-    method: "PUT",
-    headers,
-    body: JSON.stringify(body),
-}).then(response => response.json());
-
-
- - -
-

Example response (200):

-
-
-
-{
-    "id": 5,
-    "project_id": null,
-    "global": true,
-    "name": "dolores",
-    "provider": "local",
-    "created_at": "2025-04-21T18:40:20.000000Z",
-    "updated_at": "2025-04-21T18:40:20.000000Z"
-}
- 
-
- - -
-

- Request    - - -    - -

-

- PUT - api/projects/{project_id}/storage-providers/{storageProvider_id} -

-

Headers

-
- Content-Type -        - -
-

- Example: - application/json -

-
-
- Accept -        - -
-

- Example: - application/json -

-
-

URL Parameters

-
- project_id -    - integer -     - -
-

- The ID of the project. Example: - 1 -

-
-
- storageProvider_id -    - integer -     - -
-

- The ID of the storageProvider. Example: - 3 -

-
-

Body Parameters

-
- name -    - string -     - -
-

- The name of the storage provider. Example: - consequatur -

-
-
- global -    - string -     - -
-

- Accessible in all projects Example: - true -

- Must be one of: -
    -
  • 1
  • -
  • -
-
-
- -

- delete -

- -

- - -
Example request:
- -
-
curl --request DELETE \
-    "https://vito.test/api/projects/1/storage-providers/3" \
-    --header "Content-Type: application/json" \
-    --header "Accept: application/json"
-
- -
-
const url = new URL(
-    "https://vito.test/api/projects/1/storage-providers/3"
-);
-
-const headers = {
-    "Content-Type": "application/json",
-    "Accept": "application/json",
-};
-
-fetch(url, {
-    method: "DELETE",
-    headers,
-}).then(response => response.json());
-
-
- - -
-

Example response (204):

-
-
-Empty response
- 
-
- - -
-

- Request    - - -    - -

-

- DELETE - api/projects/{project_id}/storage-providers/{storageProvider_id} -

-

Headers

-
- Content-Type -        - -
-

- Example: - application/json -

-
-
- Accept -        - -
-

- Example: - application/json -

-
-

URL Parameters

-
- project_id -    - integer -     - -
-

- The ID of the project. Example: - 1 -

-
-
- storageProvider_id -    - integer -     - -
-

- The ID of the storageProvider. Example: - 3 -

-
-
-
-
-
- - -
-
-
- - diff --git a/scripts/install.sh b/scripts/install.sh index d7a632b5..1c8ac161 100644 --- a/scripts/install.sh +++ b/scripts/install.sh @@ -1,6 +1,6 @@ #!/bin/bash -export VITO_VERSION="2.x" +export VITO_VERSION="3.x" export DEBIAN_FRONTEND=noninteractive export NEEDRESTART_MODE=a @@ -83,6 +83,11 @@ if ! echo "${V_NGINX_CONFIG}" | tee /etc/nginx/nginx.conf; then fi service nginx start +# nodejs +export V_NODE_VERSION="20.x" +curl -fsSL https://deb.nodesource.com/setup_${V_NODE_VERSION} | sudo -E bash - +apt install -y nodejs + # php export V_PHP_VERSION="8.4" add-apt-repository ppa:ondrej/php -y