Compare commits

..

4 Commits

Author SHA1 Message Date
90b63d065d Create FUNDING.yml 2025-06-05 21:58:32 +02:00
2318e1b1df Add Caddy Server Support Alongside Nginx (#600)
* added enum

* add config for caddy

* add svg icon

* add caddy service class

* wip

* install caddy

* create base Caddyfile with common snippets

* Create a systemd service to run Caddy in the background.

* create uninstall file

* wip

* create path

* create vhost

* get vhost

* delete site

* add php version change file

* add custom ssl

* create redirect file

* add vhost for caddy site & load balancer

* update svg

* fix caddy icon

* fix style

* add systemctl reload method

* Reload systemd after modifying the Caddy service file.

* add caddy

* added tests

* format with pint

* prevent multiple web server installations

* added error log & access log
2025-05-29 11:25:36 +02:00
65898b0ee6 Fix mysqldump backup error
This reverts commit 564b97e2aa.
2025-05-21 20:57:38 +02:00
3124f8c795 Bump league/commonmark from 2.6.1 to 2.7.0 (#595)
Bumps [league/commonmark](https://github.com/thephpleague/commonmark) from 2.6.1 to 2.7.0.
- [Release notes](https://github.com/thephpleague/commonmark/releases)
- [Changelog](https://github.com/thephpleague/commonmark/blob/2.7/CHANGELOG.md)
- [Commits](https://github.com/thephpleague/commonmark/compare/2.6.1...2.7.0)

---
updated-dependencies:
- dependency-name: league/commonmark
  dependency-version: 2.7.0
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-10 11:12:50 +03:00
1005 changed files with 32745 additions and 51854 deletions

View File

@ -3,15 +3,12 @@ root = true
[*] [*]
charset = utf-8 charset = utf-8
end_of_line = lf end_of_line = lf
indent_size = 2 indent_size = 4
indent_style = space indent_style = space
insert_final_newline = true insert_final_newline = true
trim_trailing_whitespace = true trim_trailing_whitespace = true
ij_any_block_comment_at_first_column = false ij_any_block_comment_at_first_column = false
[{*.php,composer.json,composer.lock}]
indent_size = 4
[*.md] [*.md]
trim_trailing_whitespace = false trim_trailing_whitespace = false

View File

@ -15,6 +15,3 @@ MAIL_PASSWORD=null
MAIL_ENCRYPTION=null MAIL_ENCRYPTION=null
MAIL_FROM_ADDRESS="noreply@${APP_NAME}" MAIL_FROM_ADDRESS="noreply@${APP_NAME}"
MAIL_FROM_NAME="${APP_NAME}" MAIL_FROM_NAME="${APP_NAME}"
REDIS_HOST=redis
REDIS_PORT=6379

1
.github/FUNDING.yml vendored Normal file
View File

@ -0,0 +1 @@
github: [saeedvaziry]

View File

@ -4,11 +4,9 @@ on:
push: push:
branches: branches:
- 2.x - 2.x
- 3.x
pull_request: pull_request:
branches: branches:
- 2.x - 2.x
- 3.x
jobs: jobs:
tests: tests:
@ -17,7 +15,7 @@ jobs:
strategy: strategy:
fail-fast: true fail-fast: true
matrix: matrix:
php: [ 8.4 ] php: [ 8.2 ]
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4

View File

@ -6,7 +6,6 @@ on:
- main - main
- 1.x - 1.x
- 2.x - 2.x
- 3.x
pull_request: pull_request:
jobs: jobs:
@ -16,7 +15,7 @@ jobs:
strategy: strategy:
fail-fast: true fail-fast: true
matrix: matrix:
php: [ 8.4 ] php: [ 8.2 ]
node-version: [ "20.x" ] node-version: [ "20.x" ]
steps: steps:
@ -49,7 +48,7 @@ jobs:
node-version: "20.x" node-version: "20.x"
- name: Install NPM Dependencies - name: Install NPM Dependencies
run: npm install --force run: npm install
- name: Run lint - name: Run lint
run: npm run lint run: npm run lint

View File

@ -6,7 +6,6 @@ on:
- main - main
- 1.x - 1.x
- 2.x - 2.x
- 3.x
pull_request: pull_request:
jobs: jobs:
@ -16,8 +15,7 @@ jobs:
strategy: strategy:
fail-fast: true fail-fast: true
matrix: matrix:
php: [ 8.4 ] php: [ 8.2 ]
node-version: [ "22.x" ]
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
@ -46,19 +44,5 @@ jobs:
- name: Set up the .env file - name: Set up the .env file
run: touch .env run: touch .env
- name: Generate Application Key
run: php artisan key:generate
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: "22.x"
- name: Install NPM Dependencies
run: npm install --force
- name: Build assets
run: npm run build
- name: Run test suite - name: Run test suite
run: php artisan test run: php artisan test

1
.gitignore vendored
View File

@ -22,4 +22,3 @@ yarn-error.log
/.idea /.idea
/.vscode /.vscode
laradumps.yaml laradumps.yaml
/public/build

View File

@ -13,6 +13,3 @@ sail
!*.blade.php !*.blade.php
!*.sh !*.sh
resources/views/ssh/ resources/views/ssh/
resources/views/scribe/
resources/js/ziggy.js
resources/views/mail/*

View File

@ -1,14 +1,4 @@
{ {
"semi": true,
"singleQuote": true,
"singleAttributePerLine": false,
"htmlWhitespaceSensitivity": "css",
"printWidth": 150,
"tailwindFunctions": [
"clsx",
"cn"
],
"tabWidth": 2,
"plugins": [ "plugins": [
"prettier-plugin-blade", "prettier-plugin-blade",
"prettier-plugin-tailwindcss", "prettier-plugin-tailwindcss",
@ -16,9 +6,7 @@
], ],
"overrides": [ "overrides": [
{ {
"files": [ "files": ["*.blade.php"],
"*.blade.php"
],
"options": { "options": {
"parser": "blade", "parser": "blade",
"printWidth": 120, "printWidth": 120,
@ -29,18 +17,10 @@
} }
}, },
{ {
"files": [ "files": ["*.sh"],
"*.sh"
],
"options": { "options": {
"parser": "sh" "parser": "sh"
} }
},
{
"files": "**/*.yml",
"options": {
"tabWidth": 2
}
} }
] ]
} }

View File

@ -1,4 +1,4 @@
# GENERATED. YOU SHOULDN'T MODIFY OR DELETE THIS FILE. # GENERATED. YOU SHOULDN'T MODIFY OR DELETE THIS FILE.
# Scribe uses this file to know when you change something manually in your docs. # Scribe uses this file to know when you change something manually in your docs.
.scribe/intro.md=ce7ca21baf0406f807aed85ee1d8fa6e .scribe/intro.md=98adb6862b118c06e02e4e22390feb6f
.scribe/auth.md=9bee2b1ef8a238b2e58613fa636d5f39 .scribe/auth.md=7fcc12b2e5a86fa9c49f509d348f3cc2

View File

@ -1,3 +1,7 @@
# Authenticating requests # Authenticating requests
This API is not authenticated. To authenticate requests, include an **`Authorization`** header with the value **`"Bearer YOUR-API-KEY"`**.
All authenticated endpoints are marked with a `requires authentication` badge in the documentation below.
You can retrieve your token by visiting <a href="/settings/api-keys" target="_blank">here</a>

View File

@ -1,160 +1,49 @@
## Autogenerated by Scribe. DO NOT MODIFY. ## Autogenerated by Scribe. DO NOT MODIFY.
name: Endpoints name: cron-jobs
description: '' description: ''
endpoints: endpoints:
- -
httpMethods: httpMethods:
- POST - GET
uri: 'api/servers/{server_id}/agent/{id}' uri: 'api/projects/{project_id}/servers/{server_id}/cron-jobs'
metadata: metadata:
groupName: Endpoints groupName: cron-jobs
groupDescription: '' groupDescription: ''
subgroup: '' subgroup: ''
subgroupDescription: '' subgroupDescription: ''
title: '' title: list
description: '' description: 'Get all cron jobs.'
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
server_id: project_id:
name: server_id name: project_id
description: 'The ID of the server.' description: 'The ID of the project.'
required: true required: true
example: 6 example: 1
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
id: server_id:
name: id name: server_id
description: 'The ID of the agent.' description: 'The ID of the server.'
required: true required: true
example: architecto example: 29
type: string type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
cleanUrlParameters: cleanUrlParameters:
server_id: 6 project_id: 1
id: architecto server_id: 29
queryParameters: []
cleanQueryParameters: []
bodyParameters:
load:
name: load
description: ''
required: true
example: 4326.41688
type: number
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
memory_total:
name: memory_total
description: ''
required: true
example: 4326.41688
type: number
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
memory_used:
name: memory_used
description: ''
required: true
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:
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: []
responseFields: []
auth: []
controller: null
method: null
route: null
custom: []
-
httpMethods:
0: GET
2: POST
3: PUT
4: PATCH
5: DELETE
6: OPTIONS
uri: api/git-hooks
metadata:
groupName: Endpoints
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: ''
description: ''
authenticated: false
custom: []
headers:
Content-Type: application/json
Accept: application/json
urlParameters: []
cleanUrlParameters: []
queryParameters: [] queryParameters: []
cleanQueryParameters: [] cleanQueryParameters: []
bodyParameters: [] bodyParameters: []
@ -162,21 +51,259 @@ endpoints:
fileParameters: [] fileParameters: []
responses: responses:
- -
status: 404 status: 200
content: |- content: '{"data":[{"id":null,"server_id":null,"command":"ls -la","user":"root","frequency":"* * * * *","status":"ready","created_at":null,"updated_at":null},{"id":null,"server_id":null,"command":"ls -la","user":"root","frequency":"* * * * *","status":"ready","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}}'
{ headers: []
"message": "" description: ''
}
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: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer eDa6Vdh1Z4vc35bP8E6gafk'
controller: null
method: null
route: null
custom: []
-
httpMethods:
- POST
uri: 'api/projects/{project_id}/servers/{server_id}/cron-jobs'
metadata:
groupName: cron-jobs
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: create
description: 'Create a new cron job.'
authenticated: true
custom: []
headers:
Authorization: 'Bearer YOUR-API-KEY'
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: 29
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanUrlParameters:
project_id: 1
server_id: 29
queryParameters: []
cleanQueryParameters: []
bodyParameters:
command:
name: command
description: ''
required: true
example: quia
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
user:
name: user
description: ''
required: true
example: root
type: string
enumValues:
- root
- vito
exampleWasSpecified: false
nullable: false
custom: []
frequency:
name: frequency
description: 'Frequency of the cron job.'
required: true
example: '* * * * *'
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanBodyParameters:
command: quia
user: root
frequency: '* * * * *'
fileParameters: []
responses:
-
status: 200
content: '{"id":null,"server_id":null,"command":"ls -la","user":"root","frequency":"* * * * *","status":"ready","created_at":null,"updated_at":null}'
headers: []
description: ''
custom: []
responseFields: []
auth:
- headers
- Authorization
- 'Bearer 66EeZvdh3kVaDP8f4ga5c1b'
controller: null
method: null
route: null
custom: []
-
httpMethods:
- GET
uri: 'api/projects/{project_id}/servers/{server_id}/cron-jobs/{cronJob_id}'
metadata:
groupName: cron-jobs
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: show
description: 'Get a cron job by ID.'
authenticated: true
custom: []
headers:
Authorization: 'Bearer YOUR-API-KEY'
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: 29
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cronJob_id:
name: cronJob_id
description: 'The ID of the cronJob.'
required: true
example: 6
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanUrlParameters:
project_id: 1
server_id: 29
cronJob_id: 6
queryParameters: []
cleanQueryParameters: []
bodyParameters: []
cleanBodyParameters: []
fileParameters: []
responses:
-
status: 200
content: '{"id":null,"server_id":null,"command":"ls -la","user":"root","frequency":"* * * * *","status":"ready","created_at":null,"updated_at":null}'
headers: []
description: ''
custom: []
responseFields: []
auth:
- headers
- Authorization
- 'Bearer D4c3Z65ebv8E16fahaVgPdk'
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: true
custom: []
headers:
Authorization: 'Bearer YOUR-API-KEY'
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: 29
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cronJob_id:
name: cronJob_id
description: 'The ID of the cronJob.'
required: true
example: 13
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanUrlParameters:
project_id: 1
server_id: 29
cronJob_id: 13
queryParameters: []
cleanQueryParameters: []
bodyParameters: []
cleanBodyParameters: []
fileParameters: []
responses:
-
status: 204
content: null
headers: []
description: ''
custom: []
responseFields: []
auth:
- headers
- Authorization
- 'Bearer h3cP4aZa1v8feDdEg5b6k6V'
controller: null controller: null
method: null method: null
route: null route: null

View File

@ -1,22 +1,23 @@
## Autogenerated by Scribe. DO NOT MODIFY. ## Autogenerated by Scribe. DO NOT MODIFY.
name: cron-jobs name: databases
description: '' description: ''
endpoints: endpoints:
- -
httpMethods: httpMethods:
- GET - GET
uri: 'api/projects/{project_id}/servers/{server_id}/cron-jobs' uri: 'api/projects/{project_id}/servers/{server_id}/databases'
metadata: metadata:
groupName: cron-jobs groupName: databases
groupDescription: '' groupDescription: ''
subgroup: '' subgroup: ''
subgroupDescription: '' subgroupDescription: ''
title: list title: list
description: 'Get all cron jobs.' description: 'Get all databases.'
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -34,7 +35,7 @@ endpoints:
name: server_id name: server_id
description: 'The ID of the server.' description: 'The ID of the server.'
required: true required: true
example: 6 example: 29
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -42,7 +43,7 @@ endpoints:
custom: [] custom: []
cleanUrlParameters: cleanUrlParameters:
project_id: 1 project_id: 1
server_id: 6 server_id: 29
queryParameters: [] queryParameters: []
cleanQueryParameters: [] cleanQueryParameters: []
bodyParameters: [] bodyParameters: []
@ -51,12 +52,15 @@ endpoints:
responses: responses:
- -
status: 200 status: 200
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":"&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}}' content: '{"data":[{"id":null,"server_id":null,"name":"leffler.esther","status":"ready","created_at":null,"updated_at":null},{"id":null,"server_id":null,"name":"rhoda.rutherford","status":"ready","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}}'
headers: [] headers: []
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer E1VdfegZah4k86b53Dc6Pva'
controller: null controller: null
method: null method: null
route: null route: null
@ -64,17 +68,18 @@ endpoints:
- -
httpMethods: httpMethods:
- POST - POST
uri: 'api/projects/{project_id}/servers/{server_id}/cron-jobs' uri: 'api/projects/{project_id}/servers/{server_id}/databases'
metadata: metadata:
groupName: cron-jobs groupName: databases
groupDescription: '' groupDescription: ''
subgroup: '' subgroup: ''
subgroupDescription: '' subgroupDescription: ''
title: create title: create
description: 'Create a new cron job.' description: 'Create a new database.'
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -92,7 +97,7 @@ endpoints:
name: server_id name: server_id
description: 'The ID of the server.' description: 'The ID of the server.'
required: true required: true
example: 6 example: 29
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -100,56 +105,57 @@ endpoints:
custom: [] custom: []
cleanUrlParameters: cleanUrlParameters:
project_id: 1 project_id: 1
server_id: 6 server_id: 29
queryParameters: [] queryParameters: []
cleanQueryParameters: [] cleanQueryParameters: []
bodyParameters: bodyParameters:
command: name:
name: command name: name
description: '' description: ''
required: true required: true
example: architecto example: quisquam
type: string type: string
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
user: charset:
name: user name: charset
description: '' description: ''
required: true required: true
example: vito example: omnis
type: string type: string
enumValues: enumValues: []
- root
- vito
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
frequency: collation:
name: frequency name: collation
description: 'Frequency of the cron job.' description: ''
required: true required: true
example: '* * * * *' example: at
type: string type: string
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
cleanBodyParameters: cleanBodyParameters:
command: architecto name: quisquam
user: vito charset: omnis
frequency: '* * * * *' collation: at
fileParameters: [] fileParameters: []
responses: responses:
- -
status: 200 status: 200
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"}' content: '{"id":null,"server_id":null,"name":"csawayn","status":"ready","created_at":null,"updated_at":null}'
headers: [] headers: []
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer PVgkZ35ca4afd1EbD8ehv66'
controller: null controller: null
method: null method: null
route: null route: null
@ -157,17 +163,18 @@ endpoints:
- -
httpMethods: httpMethods:
- GET - GET
uri: 'api/projects/{project_id}/servers/{server_id}/cron-jobs/{cronJob_id}' uri: 'api/projects/{project_id}/servers/{server_id}/databases/{id}'
metadata: metadata:
groupName: cron-jobs groupName: databases
groupDescription: '' groupDescription: ''
subgroup: '' subgroup: ''
subgroupDescription: '' subgroupDescription: ''
title: show title: show
description: 'Get a cron job by ID.' description: 'Get a database by ID.'
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -185,17 +192,17 @@ endpoints:
name: server_id name: server_id
description: 'The ID of the server.' description: 'The ID of the server.'
required: true required: true
example: 6 example: 29
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
cronJob_id: id:
name: cronJob_id name: id
description: 'The ID of the cronJob.' description: 'The ID of the database.'
required: true required: true
example: 1 example: 8
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -203,8 +210,8 @@ endpoints:
custom: [] custom: []
cleanUrlParameters: cleanUrlParameters:
project_id: 1 project_id: 1
server_id: 6 server_id: 29
cronJob_id: 1 id: 8
queryParameters: [] queryParameters: []
cleanQueryParameters: [] cleanQueryParameters: []
bodyParameters: [] bodyParameters: []
@ -213,12 +220,15 @@ endpoints:
responses: responses:
- -
status: 200 status: 200
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"}' content: '{"id":null,"server_id":null,"name":"sandrine43","status":"ready","created_at":null,"updated_at":null}'
headers: [] headers: []
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer EP64D8g51adf6hbceavVZ3k'
controller: null controller: null
method: null method: null
route: null route: null
@ -226,17 +236,18 @@ endpoints:
- -
httpMethods: httpMethods:
- DELETE - DELETE
uri: 'api/projects/{project_id}/servers/{server_id}/cron-jobs/{cronJob_id}' uri: 'api/projects/{project_id}/servers/{server_id}/databases/{database_id}'
metadata: metadata:
groupName: cron-jobs groupName: databases
groupDescription: '' groupDescription: ''
subgroup: '' subgroup: ''
subgroupDescription: '' subgroupDescription: ''
title: delete title: delete
description: 'Delete cron job.' description: 'Delete database.'
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -254,17 +265,17 @@ endpoints:
name: server_id name: server_id
description: 'The ID of the server.' description: 'The ID of the server.'
required: true required: true
example: 6 example: 29
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
cronJob_id: database_id:
name: cronJob_id name: database_id
description: 'The ID of the cronJob.' description: 'The ID of the database.'
required: true required: true
example: 1 example: 8
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -272,8 +283,8 @@ endpoints:
custom: [] custom: []
cleanUrlParameters: cleanUrlParameters:
project_id: 1 project_id: 1
server_id: 6 server_id: 29
cronJob_id: 1 database_id: 8
queryParameters: [] queryParameters: []
cleanQueryParameters: [] cleanQueryParameters: []
bodyParameters: [] bodyParameters: []
@ -287,7 +298,10 @@ endpoints:
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer 8dgEk3Zv1eaVP66bDhf4ac5'
controller: null controller: null
method: null method: null
route: null route: null

View File

@ -1,22 +1,23 @@
## Autogenerated by Scribe. DO NOT MODIFY. ## Autogenerated by Scribe. DO NOT MODIFY.
name: databases name: database-users
description: '' description: ''
endpoints: endpoints:
- -
httpMethods: httpMethods:
- GET - GET
uri: 'api/projects/{project_id}/servers/{server_id}/databases' uri: 'api/projects/{project_id}/servers/{server_id}/database-users'
metadata: metadata:
groupName: databases groupName: database-users
groupDescription: '' groupDescription: ''
subgroup: '' subgroup: ''
subgroupDescription: '' subgroupDescription: ''
title: list title: list
description: 'Get all databases.' description: 'Get all database users.'
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -34,7 +35,7 @@ endpoints:
name: server_id name: server_id
description: 'The ID of the server.' description: 'The ID of the server.'
required: true required: true
example: 6 example: 29
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -42,7 +43,7 @@ endpoints:
custom: [] custom: []
cleanUrlParameters: cleanUrlParameters:
project_id: 1 project_id: 1
server_id: 6 server_id: 29
queryParameters: [] queryParameters: []
cleanQueryParameters: [] cleanQueryParameters: []
bodyParameters: [] bodyParameters: []
@ -51,12 +52,15 @@ endpoints:
responses: responses:
- -
status: 200 status: 200
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":"&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}}' content: '{"data":[{"id":null,"server_id":null,"username":"letha64","databases":[],"host":"%","status":null,"created_at":null,"updated_at":null},{"id":null,"server_id":null,"username":"hagenes.lurline","databases":[],"host":"%","status":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}}'
headers: [] headers: []
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer d4g15bV3Pa6hDvck6eaEf8Z'
controller: null controller: null
method: null method: null
route: null route: null
@ -64,17 +68,18 @@ endpoints:
- -
httpMethods: httpMethods:
- POST - POST
uri: 'api/projects/{project_id}/servers/{server_id}/databases' uri: 'api/projects/{project_id}/servers/{server_id}/database-users'
metadata: metadata:
groupName: databases groupName: database-users
groupDescription: '' groupDescription: ''
subgroup: '' subgroup: ''
subgroupDescription: '' subgroupDescription: ''
title: create title: create
description: 'Create a new database.' description: 'Create a new database user.'
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -92,7 +97,7 @@ endpoints:
name: server_id name: server_id
description: 'The ID of the server.' description: 'The ID of the server.'
required: true required: true
example: 6 example: 29
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -100,54 +105,57 @@ endpoints:
custom: [] custom: []
cleanUrlParameters: cleanUrlParameters:
project_id: 1 project_id: 1
server_id: 6 server_id: 29
queryParameters: [] queryParameters: []
cleanQueryParameters: [] cleanQueryParameters: []
bodyParameters: bodyParameters:
name: username:
name: name name: username
description: '' description: ''
required: true required: true
example: architecto example: qui
type: string type: string
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
charset: password:
name: charset name: password
description: '' description: ''
required: true required: true
example: architecto example: 'xYv*3,#HQ=5<w!'
type: string type: string
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
collation: host:
name: collation name: host
description: '' description: 'Host, if it is a remote user.'
required: true required: true
example: architecto example: '%'
type: string type: string
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
cleanBodyParameters: cleanBodyParameters:
name: architecto username: qui
charset: architecto password: 'xYv*3,#HQ=5<w!'
collation: architecto host: '%'
fileParameters: [] fileParameters: []
responses: responses:
- -
status: 200 status: 200
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"}' content: '{"id":null,"server_id":null,"username":"marcelle95","databases":[],"host":"%","status":null,"created_at":null,"updated_at":null}'
headers: [] headers: []
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer 3vZ6f6kagacDEhV1Pde5b84'
controller: null controller: null
method: null method: null
route: null route: null
@ -155,17 +163,18 @@ endpoints:
- -
httpMethods: httpMethods:
- GET - GET
uri: 'api/projects/{project_id}/servers/{server_id}/databases/{id}' uri: 'api/projects/{project_id}/servers/{server_id}/database-users/{databaseUser_id}'
metadata: metadata:
groupName: databases groupName: database-users
groupDescription: '' groupDescription: ''
subgroup: '' subgroup: ''
subgroupDescription: '' subgroupDescription: ''
title: show title: show
description: 'Get a database by ID.' description: 'Get a database user by ID.'
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -183,17 +192,17 @@ endpoints:
name: server_id name: server_id
description: 'The ID of the server.' description: 'The ID of the server.'
required: true required: true
example: 6 example: 29
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
id: databaseUser_id:
name: id name: databaseUser_id
description: 'The ID of the database.' description: 'The ID of the databaseUser.'
required: true required: true
example: 8 example: 1
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -201,8 +210,8 @@ endpoints:
custom: [] custom: []
cleanUrlParameters: cleanUrlParameters:
project_id: 1 project_id: 1
server_id: 6 server_id: 29
id: 8 databaseUser_id: 1
queryParameters: [] queryParameters: []
cleanQueryParameters: [] cleanQueryParameters: []
bodyParameters: [] bodyParameters: []
@ -211,30 +220,34 @@ endpoints:
responses: responses:
- -
status: 200 status: 200
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"}' content: '{"id":null,"server_id":null,"username":"brandi53","databases":[],"host":"%","status":null,"created_at":null,"updated_at":null}'
headers: [] headers: []
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer af3b5ac6dP8ZV4vE1hk6eDg'
controller: null controller: null
method: null method: null
route: null route: null
custom: [] custom: []
- -
httpMethods: httpMethods:
- DELETE - POST
uri: 'api/projects/{project_id}/servers/{server_id}/databases/{database_id}' uri: 'api/projects/{project_id}/servers/{server_id}/database-users/{databaseUser_id}/link'
metadata: metadata:
groupName: databases groupName: database-users
groupDescription: '' groupDescription: ''
subgroup: '' subgroup: ''
subgroupDescription: '' subgroupDescription: ''
title: delete title: link
description: 'Delete database.' description: 'Link to databases'
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -252,17 +265,17 @@ endpoints:
name: server_id name: server_id
description: 'The ID of the server.' description: 'The ID of the server.'
required: true required: true
example: 6 example: 29
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
database_id: databaseUser_id:
name: database_id name: databaseUser_id
description: 'The ID of the database.' description: 'The ID of the databaseUser.'
required: true required: true
example: 8 example: 4
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -270,8 +283,92 @@ endpoints:
custom: [] custom: []
cleanUrlParameters: cleanUrlParameters:
project_id: 1 project_id: 1
server_id: 6 server_id: 29
database_id: 8 databaseUser_id: 4
queryParameters: []
cleanQueryParameters: []
bodyParameters:
databases:
name: databases
description: 'Array of database names to link to the user.'
required: true
example: maiores
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanBodyParameters:
databases: maiores
fileParameters: []
responses:
-
status: 200
content: '{"id":null,"server_id":null,"username":"kschmidt","databases":[],"host":"%","status":null,"created_at":null,"updated_at":null}'
headers: []
description: ''
custom: []
responseFields: []
auth:
- headers
- Authorization
- 'Bearer b6f3Ed641gaZDcVa5k8vePh'
controller: null
method: null
route: null
custom: []
-
httpMethods:
- DELETE
uri: 'api/projects/{project_id}/servers/{server_id}/database-users/{databaseUser_id}'
metadata:
groupName: database-users
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: delete
description: 'Delete database user.'
authenticated: true
custom: []
headers:
Authorization: 'Bearer YOUR-API-KEY'
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: 29
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
databaseUser_id:
name: databaseUser_id
description: 'The ID of the databaseUser.'
required: true
example: 20
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanUrlParameters:
project_id: 1
server_id: 29
databaseUser_id: 20
queryParameters: [] queryParameters: []
cleanQueryParameters: [] cleanQueryParameters: []
bodyParameters: [] bodyParameters: []
@ -285,7 +382,10 @@ endpoints:
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer Zka6fh15g6eaV8vE34cDPdb'
controller: null controller: null
method: null method: null
route: null route: null

View File

@ -1,22 +1,23 @@
## Autogenerated by Scribe. DO NOT MODIFY. ## Autogenerated by Scribe. DO NOT MODIFY.
name: database-users name: firewall-rules
description: '' description: ''
endpoints: endpoints:
- -
httpMethods: httpMethods:
- GET - GET
uri: 'api/projects/{project_id}/servers/{server_id}/database-users' uri: 'api/projects/{project_id}/servers/{server_id}/firewall-rules'
metadata: metadata:
groupName: database-users groupName: firewall-rules
groupDescription: '' groupDescription: ''
subgroup: '' subgroup: ''
subgroupDescription: '' subgroupDescription: ''
title: list title: list
description: 'Get all database users.' description: 'Get all firewall rules.'
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -34,7 +35,7 @@ endpoints:
name: server_id name: server_id
description: 'The ID of the server.' description: 'The ID of the server.'
required: true required: true
example: 6 example: 29
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -42,7 +43,7 @@ endpoints:
custom: [] custom: []
cleanUrlParameters: cleanUrlParameters:
project_id: 1 project_id: 1
server_id: 6 server_id: 29
queryParameters: [] queryParameters: []
cleanQueryParameters: [] cleanQueryParameters: []
bodyParameters: [] bodyParameters: []
@ -51,12 +52,15 @@ endpoints:
responses: responses:
- -
status: 200 status: 200
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":"&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}}' content: '{"data":[{"id":null,"name":"ut","server_id":null,"type":"allow","protocol":"tcp","port":35499,"source":"177.130.54.250","mask":24,"note":"test","status":null,"created_at":null,"updated_at":null},{"id":null,"name":"totam","server_id":null,"type":"allow","protocol":"tcp","port":29448,"source":"181.194.26.13","mask":24,"note":"test","status":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}}'
headers: [] headers: []
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer eD368kaZfVEab4v61ghdP5c'
controller: null controller: null
method: null method: null
route: null route: null
@ -64,17 +68,18 @@ endpoints:
- -
httpMethods: httpMethods:
- POST - POST
uri: 'api/projects/{project_id}/servers/{server_id}/database-users' uri: 'api/projects/{project_id}/servers/{server_id}/firewall-rules'
metadata: metadata:
groupName: database-users groupName: firewall-rules
groupDescription: '' groupDescription: ''
subgroup: '' subgroup: ''
subgroupDescription: '' subgroupDescription: ''
title: create title: create
description: 'Create a new database user.' description: 'Create a new firewall rule.'
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -92,7 +97,7 @@ endpoints:
name: server_id name: server_id
description: 'The ID of the server.' description: 'The ID of the server.'
required: true required: true
example: 6 example: 29
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -100,54 +105,237 @@ endpoints:
custom: [] custom: []
cleanUrlParameters: cleanUrlParameters:
project_id: 1 project_id: 1
server_id: 6 server_id: 29
queryParameters: [] queryParameters: []
cleanQueryParameters: [] cleanQueryParameters: []
bodyParameters: bodyParameters:
username: name:
name: username name: name
description: '' description: ''
required: true required: true
example: architecto example: sapiente
type: string type: string
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
password: type:
name: password name: type
description: '' description: ''
required: true required: true
example: '|]|{+-' 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: et
type: string type: string
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
host: source:
name: host name: source
description: 'Host, if it is a remote user.' description: ''
required: false
example: doloribus
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
mask:
name: mask
description: 'Mask for source IP.'
required: true required: true
example: '%' example: '0'
type: string type: string
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
cleanBodyParameters: cleanBodyParameters:
username: architecto name: sapiente
password: '|]|{+-' type: allow
host: '%' protocol: tcp
port: et
source: doloribus
mask: '0'
fileParameters: [] fileParameters: []
responses: responses:
- -
status: 200 status: 200
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"}' content: '{"id":null,"name":"omnis","server_id":null,"type":"allow","protocol":"tcp","port":54634,"source":"246.242.9.65","mask":24,"note":"test","status":null,"created_at":null,"updated_at":null}'
headers: [] headers: []
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer 3184PbED6aacZveV6hf5dgk'
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: true
custom: []
headers:
Authorization: 'Bearer YOUR-API-KEY'
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: 29
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
firewallRule_id:
name: firewallRule_id
description: 'The ID of the firewallRule.'
required: true
example: 85
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanUrlParameters:
project_id: 1
server_id: 29
firewallRule_id: 85
queryParameters: []
cleanQueryParameters: []
bodyParameters:
name:
name: name
description: ''
required: true
example: et
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: aut
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
source:
name: source
description: ''
required: false
example: et
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: et
type: allow
protocol: tcp
port: aut
source: et
mask: '0'
fileParameters: []
responses:
-
status: 200
content: '{"id":null,"name":"consequatur","server_id":null,"type":"allow","protocol":"tcp","port":879,"source":"206.106.27.116","mask":24,"note":"test","status":null,"created_at":null,"updated_at":null}'
headers: []
description: ''
custom: []
responseFields: []
auth:
- headers
- Authorization
- 'Bearer ad46E3egPDc51aV6hb8vkZf'
controller: null controller: null
method: null method: null
route: null route: null
@ -155,17 +343,18 @@ endpoints:
- -
httpMethods: httpMethods:
- GET - GET
uri: 'api/projects/{project_id}/servers/{server_id}/database-users/{databaseUser_id}' uri: 'api/projects/{project_id}/servers/{server_id}/firewall-rules/{firewallRule_id}'
metadata: metadata:
groupName: database-users groupName: firewall-rules
groupDescription: '' groupDescription: ''
subgroup: '' subgroup: ''
subgroupDescription: '' subgroupDescription: ''
title: show title: show
description: 'Get a database user by ID.' description: 'Get a firewall rule by ID.'
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -183,17 +372,17 @@ endpoints:
name: server_id name: server_id
description: 'The ID of the server.' description: 'The ID of the server.'
required: true required: true
example: 6 example: 29
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
databaseUser_id: firewallRule_id:
name: databaseUser_id name: firewallRule_id
description: 'The ID of the databaseUser.' description: 'The ID of the firewallRule.'
required: true required: true
example: 16 example: 85
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -201,8 +390,8 @@ endpoints:
custom: [] custom: []
cleanUrlParameters: cleanUrlParameters:
project_id: 1 project_id: 1
server_id: 6 server_id: 29
databaseUser_id: 16 firewallRule_id: 85
queryParameters: [] queryParameters: []
cleanQueryParameters: [] cleanQueryParameters: []
bodyParameters: [] bodyParameters: []
@ -211,92 +400,15 @@ endpoints:
responses: responses:
- -
status: 200 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"}' content: '{"id":null,"name":"dolores","server_id":null,"type":"allow","protocol":"tcp","port":4691,"source":"147.108.28.144","mask":24,"note":"test","status":null,"created_at":null,"updated_at":null}'
headers: [] headers: []
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
controller: null - headers
method: null - Authorization
route: null - 'Bearer 6gkvbDae15a6f43EVPdZh8c'
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: []
responseFields: []
auth: []
controller: null controller: null
method: null method: null
route: null route: null
@ -304,17 +416,18 @@ endpoints:
- -
httpMethods: httpMethods:
- DELETE - DELETE
uri: 'api/projects/{project_id}/servers/{server_id}/database-users/{databaseUser_id}' uri: 'api/projects/{project_id}/servers/{server_id}/firewall-rules/{firewallRule_id}'
metadata: metadata:
groupName: database-users groupName: firewall-rules
groupDescription: '' groupDescription: ''
subgroup: '' subgroup: ''
subgroupDescription: '' subgroupDescription: ''
title: delete title: delete
description: 'Delete database user.' description: 'Delete firewall rule.'
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -332,17 +445,17 @@ endpoints:
name: server_id name: server_id
description: 'The ID of the server.' description: 'The ID of the server.'
required: true required: true
example: 6 example: 29
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
databaseUser_id: firewallRule_id:
name: databaseUser_id name: firewallRule_id
description: 'The ID of the databaseUser.' description: 'The ID of the firewallRule.'
required: true required: true
example: 16 example: 85
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -350,8 +463,8 @@ endpoints:
custom: [] custom: []
cleanUrlParameters: cleanUrlParameters:
project_id: 1 project_id: 1
server_id: 6 server_id: 29
databaseUser_id: 16 firewallRule_id: 85
queryParameters: [] queryParameters: []
cleanQueryParameters: [] cleanQueryParameters: []
bodyParameters: [] bodyParameters: []
@ -365,7 +478,10 @@ endpoints:
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer ZVd1fk5E3e48hDvaa6g6cPb'
controller: null controller: null
method: null method: null
route: null route: null

View File

@ -1,48 +1,26 @@
## Autogenerated by Scribe. DO NOT MODIFY. ## Autogenerated by Scribe. DO NOT MODIFY.
name: firewall-rules name: general
description: '' description: ''
endpoints: endpoints:
- -
httpMethods: httpMethods:
- GET - GET
uri: 'api/projects/{project_id}/servers/{server_id}/firewall-rules' uri: api/health
metadata: metadata:
groupName: firewall-rules groupName: general
groupDescription: '' groupDescription: ''
subgroup: '' subgroup: ''
subgroupDescription: '' subgroupDescription: ''
title: list title: health-check
description: 'Get all firewall rules.' description: ''
authenticated: false authenticated: false
custom: [] custom: []
headers: headers:
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters: []
project_id: cleanUrlParameters: []
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: [] queryParameters: []
cleanQueryParameters: [] cleanQueryParameters: []
bodyParameters: [] bodyParameters: []
@ -51,414 +29,14 @@ endpoints:
responses: responses:
- -
status: 200 status: 200
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":"&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}}' content: '{"success":true,"version":"2.4.0"}'
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: headers:
Content-Type: application/json cache-control: 'no-cache, private'
Accept: application/json content-type: application/json
urlParameters: x-ratelimit-limit: '60'
project_id: x-ratelimit-remaining: '59'
name: project_id access-control-allow-origin: '*'
description: 'The ID of the project.' description: null
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: [] custom: []
responseFields: [] responseFields: []
auth: [] auth: []

View File

@ -1,22 +1,23 @@
## Autogenerated by Scribe. DO NOT MODIFY. ## Autogenerated by Scribe. DO NOT MODIFY.
name: general name: projects
description: '' description: ''
endpoints: endpoints:
- -
httpMethods: httpMethods:
- GET - GET
uri: api/health uri: api/projects
metadata: metadata:
groupName: general groupName: projects
groupDescription: '' groupDescription: ''
subgroup: '' subgroup: ''
subgroupDescription: '' subgroupDescription: ''
title: health-check title: list
description: '' description: 'Get all projects.'
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: [] urlParameters: []
@ -29,17 +30,230 @@ endpoints:
responses: responses:
- -
status: 200 status: 200
content: '{"success":true,"version":"2.5.0"}' content: '{"data":[{"id":3,"name":"Mr. Drake Nader","created_at":"2025-04-05T17:48:03.000000Z","updated_at":"2025-04-05T17:48:03.000000Z"},{"id":4,"name":"Wilhelmine Jacobson","created_at":"2025-04-05T17:48:03.000000Z","updated_at":"2025-04-05T17:48:03.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}}'
headers: headers: []
cache-control: 'no-cache, private' description: ''
content-type: application/json
x-ratelimit-limit: '60'
x-ratelimit-remaining: '56'
access-control-allow-origin: '*'
description: null
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer fbPE6haeDZ8v1gV5ak463dc'
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: true
custom: []
headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json
Accept: application/json
urlParameters: []
cleanUrlParameters: []
queryParameters: []
cleanQueryParameters: []
bodyParameters:
name:
name: name
description: 'The name of the project.'
required: true
example: dignissimos
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanBodyParameters:
name: dignissimos
fileParameters: []
responses:
-
status: 200
content: '{"id":3,"name":"Pattie Cole","created_at":"2025-04-05T17:48:03.000000Z","updated_at":"2025-04-05T17:48:03.000000Z"}'
headers: []
description: ''
custom: []
responseFields: []
auth:
- headers
- Authorization
- 'Bearer 6ZkedcEfa5V6Dv4ab8P3g1h'
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: true
custom: []
headers:
Authorization: 'Bearer YOUR-API-KEY'
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":"Mr. Elias Bauch","created_at":"2025-04-05T17:48:03.000000Z","updated_at":"2025-04-05T17:48:03.000000Z"}'
headers: []
description: ''
custom: []
responseFields: []
auth:
- headers
- Authorization
- 'Bearer P6ka4Zaefgh8Ec3dV15v6bD'
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: true
custom: []
headers:
Authorization: 'Bearer YOUR-API-KEY'
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: sunt
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanBodyParameters:
name: sunt
fileParameters: []
responses:
-
status: 200
content: '{"id":3,"name":"Elfrieda Jakubowski","created_at":"2025-04-05T17:48:03.000000Z","updated_at":"2025-04-05T17:48:03.000000Z"}'
headers: []
description: ''
custom: []
responseFields: []
auth:
- headers
- Authorization
- 'Bearer ecaDZkf5E4vgP1V86d6hb3a'
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: true
custom: []
headers:
Authorization: 'Bearer YOUR-API-KEY'
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: ''
custom: []
responseFields: []
auth:
- headers
- Authorization
- 'Bearer h5gZ63DPVbcevE4faka86d1'
controller: null controller: null
method: null method: null
route: null route: null

View File

@ -1,210 +1,23 @@
## Autogenerated by Scribe. DO NOT MODIFY. ## Autogenerated by Scribe. DO NOT MODIFY.
name: projects name: redirects
description: '' description: ''
endpoints: endpoints:
- -
httpMethods: httpMethods:
- GET - GET
uri: api/projects uri: 'api/projects/{project_id}/servers/{server_id}/sites/{site_id}/redirects'
metadata: metadata:
groupName: projects groupName: redirects
groupDescription: '' groupDescription: ''
subgroup: '' subgroup: ''
subgroupDescription: '' subgroupDescription: ''
title: list title: index
description: 'Get all projects.' description: 'Get all redirects.'
authenticated: false authenticated: true
custom: []
headers:
Content-Type: application/json
Accept: application/json
urlParameters: []
cleanUrlParameters: []
queryParameters: []
cleanQueryParameters: []
bodyParameters: []
cleanBodyParameters: []
fileParameters: []
responses:
-
status: 200
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":"&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}}'
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: 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:
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":"Aleen O''Kon","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/{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: 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:
- DELETE
uri: 'api/projects/{project_id}'
metadata:
groupName: projects
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: delete
description: 'Delete project.'
authenticated: false
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -218,8 +31,224 @@ endpoints:
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
server_id:
name: server_id
description: 'The ID of the server.'
required: true
example: 29
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
site_id:
name: site_id
description: 'The ID of the site.'
required: true
example: 44
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanUrlParameters: cleanUrlParameters:
project_id: 1 project_id: 1
server_id: 29
site_id: 44
queryParameters: []
cleanQueryParameters: []
bodyParameters: []
cleanBodyParameters: []
fileParameters: []
responses:
-
status: 200
content: '{"data":[{"id":null,"site_id":null,"mode":307,"from":"ipsum","to":"http:\/\/fritsch.biz\/","status":"ready","created_at":null,"updated_at":null},{"id":null,"site_id":null,"mode":302,"from":"culpa","to":"http:\/\/www.huels.net\/aut-ut-ut-porro-non-rerum-voluptatum.html","status":"ready","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}}'
headers: []
description: ''
custom: []
responseFields: []
auth:
- headers
- Authorization
- 'Bearer cV16fevgEZhPadD43685akb'
controller: null
method: null
route: null
custom: []
-
httpMethods:
- POST
uri: 'api/projects/{project_id}/servers/{server_id}/sites/{site_id}/redirects'
metadata:
groupName: redirects
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: create
description: 'Create a new redirect.'
authenticated: true
custom: []
headers:
Authorization: 'Bearer YOUR-API-KEY'
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: 29
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
site_id:
name: site_id
description: 'The ID of the site.'
required: true
example: 44
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanUrlParameters:
project_id: 1
server_id: 29
site_id: 44
queryParameters: []
cleanQueryParameters: []
bodyParameters:
from:
name: from
description: ''
required: true
example: odit
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
to:
name: to
description: ''
required: true
example: incidunt
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
mode:
name: mode
description: ''
required: true
example: 301
type: string
enumValues:
- 301
- 302
- 307
- 308
exampleWasSpecified: false
nullable: false
custom: []
cleanBodyParameters:
from: odit
to: incidunt
mode: 301
fileParameters: []
responses:
-
status: 200
content: null
headers: []
description: ''
custom: []
responseFields: []
auth:
- headers
- Authorization
- 'Bearer ZD45hPk638abev61EVcagdf'
controller: null
method: null
route: null
custom: []
-
httpMethods:
- DELETE
uri: 'api/projects/{project_id}/servers/{server_id}/sites/{site_id}/redirects/{redirect_id}'
metadata:
groupName: redirects
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: delete
description: 'Delete a redirect.'
authenticated: true
custom: []
headers:
Authorization: 'Bearer YOUR-API-KEY'
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: 29
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
site_id:
name: site_id
description: 'The ID of the site.'
required: true
example: 44
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: 29
site_id: 44
redirect_id: 9
queryParameters: [] queryParameters: []
cleanQueryParameters: [] cleanQueryParameters: []
bodyParameters: [] bodyParameters: []
@ -233,7 +262,10 @@ endpoints:
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer Ec3fDgdbae615aPh8k6vV4Z'
controller: null controller: null
method: null method: null
route: null route: null

View File

@ -1,22 +1,23 @@
## Autogenerated by Scribe. DO NOT MODIFY. ## Autogenerated by Scribe. DO NOT MODIFY.
name: redirects name: servers
description: '' description: ''
endpoints: endpoints:
- -
httpMethods: httpMethods:
- POST - GET
uri: 'api/projects/{project_id}/servers/{server_id}/sites/{site_id}/redirects' uri: 'api/projects/{project_id}/servers'
metadata: metadata:
groupName: redirects groupName: servers
groupDescription: '' groupDescription: ''
subgroup: '' subgroup: ''
subgroupDescription: '' subgroupDescription: ''
title: create title: list
description: 'Create a new redirect.' description: 'Get all servers in a project.'
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -30,99 +31,305 @@ endpoints:
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] 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: cleanUrlParameters:
project_id: 1 project_id: 1
server_id: 6
site_id: 14
queryParameters: [] queryParameters: []
cleanQueryParameters: [] cleanQueryParameters: []
bodyParameters: bodyParameters: []
from: cleanBodyParameters: []
name: from
description: ''
required: true
example: architecto
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
to:
name: to
description: ''
required: true
example: architecto
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
mode:
name: mode
description: ''
required: true
example: 307
type: string
enumValues:
- 301
- 302
- 307
- 308
exampleWasSpecified: false
nullable: false
custom: []
cleanBodyParameters:
from: architecto
to: architecto
mode: 307
fileParameters: [] fileParameters: []
responses: responses:
- -
status: 200 status: 200
content: null content: '{"data":[{"id":null,"project_id":null,"user_id":null,"provider_id":null,"name":"Miss Bonita Vandervort IV","ssh_user":"vito","ip":"120.222.195.212","local_ip":"138.119.37.248","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":null,"last_update_check":null,"created_at":null,"updated_at":null},{"id":null,"project_id":null,"user_id":null,"provider_id":null,"name":"Dr. Shanie Batz IV","ssh_user":"vito","ip":"241.88.138.163","local_ip":"138.226.232.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":null,"last_update_check":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}}'
headers: [] headers: []
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer Pg1Vk6cvadD8eb3ZhaEf564'
controller: null controller: null
method: null method: null
route: null route: null
custom: [] custom: []
- -
httpMethods: httpMethods:
- DELETE - POST
uri: 'api/projects/{project_id}/servers/{server_id}/sites/{site_id}/redirects/{redirect_id}' uri: 'api/projects/{project_id}/servers'
metadata: metadata:
groupName: redirects groupName: servers
groupDescription: '' groupDescription: ''
subgroup: '' subgroup: ''
subgroupDescription: '' subgroupDescription: ''
title: delete title: create
description: 'Delete a redirect.' description: 'Create a new server.'
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
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 server provider type'
required: true
example: fugiat
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: digitalocean
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: itaque
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
plan:
name: plan
description: 'Provider plan if the provider is not custom'
required: true
example: voluptatum
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
ip:
name: ip
description: 'SSH IP address if the provider is custom'
required: true
example: ut
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
port:
name: port
description: 'SSH Port if the provider is custom'
required: true
example: reiciendis
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
name:
name: name
description: 'The name of the server.'
required: true
example: et
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
os:
name: os
description: 'The os of the server'
required: true
example: vel
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
webserver:
name: webserver
description: 'Web server'
required: true
example: nginx
type: string
enumValues:
- none
- nginx
exampleWasSpecified: false
nullable: false
custom: []
database:
name: database
description: Database
required: true
example: mysql80
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: '7.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: fugiat
server_provider: digitalocean
region: itaque
plan: voluptatum
ip: ut
port: reiciendis
name: et
os: vel
webserver: nginx
database: mysql80
php: '7.2'
fileParameters: []
responses:
-
status: 200
content: '{"id":null,"project_id":null,"user_id":null,"provider_id":null,"name":"Jeromy Mann","ssh_user":"vito","ip":"128.70.209.89","local_ip":"150.217.250.187","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":null,"last_update_check":null,"created_at":null,"updated_at":null}'
headers: []
description: ''
custom: []
responseFields: []
auth:
- headers
- Authorization
- 'Bearer 5E61e4vfcgDbVkZd68aah3P'
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: true
custom: []
headers:
Authorization: 'Bearer YOUR-API-KEY'
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: 29
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanUrlParameters:
project_id: 1
id: 29
queryParameters: []
cleanQueryParameters: []
bodyParameters: []
cleanBodyParameters: []
fileParameters: []
responses:
-
status: 200
content: '{"id":null,"project_id":null,"user_id":null,"provider_id":null,"name":"Miss Maya Schaden I","ssh_user":"vito","ip":"44.57.83.39","local_ip":"46.22.92.58","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":null,"last_update_check":null,"created_at":null,"updated_at":null}'
headers: []
description: ''
custom: []
responseFields: []
auth:
- headers
- Authorization
- 'Bearer hV3debf65aPD4E1ckag8Z6v'
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: true
custom: []
headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -140,27 +347,7 @@ endpoints:
name: server_id name: server_id
description: 'The ID of the server.' description: 'The ID of the server.'
required: true required: true
example: 6 example: 29
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 type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -168,9 +355,7 @@ endpoints:
custom: [] custom: []
cleanUrlParameters: cleanUrlParameters:
project_id: 1 project_id: 1
server_id: 6 server_id: 29
site_id: 14
redirect_id: 2
queryParameters: [] queryParameters: []
cleanQueryParameters: [] cleanQueryParameters: []
bodyParameters: [] bodyParameters: []
@ -184,7 +369,134 @@ endpoints:
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer b61aD6538PacZEkeghfvV4d'
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: true
custom: []
headers:
Authorization: 'Bearer YOUR-API-KEY'
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: 29
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanUrlParameters:
project_id: 1
server_id: 29
queryParameters: []
cleanQueryParameters: []
bodyParameters: []
cleanBodyParameters: []
fileParameters: []
responses:
-
status: 204
content: null
headers: []
description: ''
custom: []
responseFields: []
auth:
- headers
- Authorization
- 'Bearer dEZaa6cePVf3k86g45vbD1h'
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: true
custom: []
headers:
Authorization: 'Bearer YOUR-API-KEY'
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: 29
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanUrlParameters:
project_id: 1
server_id: 29
queryParameters: []
cleanQueryParameters: []
bodyParameters: []
cleanBodyParameters: []
fileParameters: []
responses:
-
status: 204
content: null
headers: []
description: ''
custom: []
responseFields: []
auth:
- headers
- Authorization
- 'Bearer 6aDkZEfdP16V58gb43avhec'
controller: null controller: null
method: null method: null
route: null route: null

View File

@ -1,22 +1,23 @@
## Autogenerated by Scribe. DO NOT MODIFY. ## Autogenerated by Scribe. DO NOT MODIFY.
name: servers name: server-providers
description: '' description: ''
endpoints: endpoints:
- -
httpMethods: httpMethods:
- GET - GET
uri: 'api/projects/{project_id}/servers' uri: 'api/projects/{project_id}/server-providers'
metadata: metadata:
groupName: servers groupName: server-providers
groupDescription: '' groupDescription: ''
subgroup: '' subgroup: ''
subgroupDescription: '' subgroupDescription: ''
title: list title: list
description: 'Get all servers in a project.' description: ''
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -40,12 +41,15 @@ endpoints:
responses: responses:
- -
status: 200 status: 200
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":"&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}}' content: '{"data":[{"id":3,"project_id":null,"global":true,"name":"aut","provider":"hetzner","created_at":"2025-04-05T17:48:03.000000Z","updated_at":"2025-04-05T17:48:03.000000Z"},{"id":4,"project_id":null,"global":true,"name":"qui","provider":"aws","created_at":"2025-04-05T17:48:03.000000Z","updated_at":"2025-04-05T17:48:03.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}}'
headers: [] headers: []
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer 3evaP8h6VEZkbfgaD6d1c45'
controller: null controller: null
method: null method: null
route: null route: null
@ -53,17 +57,18 @@ endpoints:
- -
httpMethods: httpMethods:
- POST - POST
uri: 'api/projects/{project_id}/servers' uri: 'api/projects/{project_id}/server-providers'
metadata: metadata:
groupName: servers groupName: server-providers
groupDescription: '' groupDescription: ''
subgroup: '' subgroup: ''
subgroupDescription: '' subgroupDescription: ''
title: create title: create
description: 'Create a new server.' description: ''
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -84,64 +89,9 @@ endpoints:
bodyParameters: bodyParameters:
provider: provider:
name: provider name: provider
description: 'The server provider type' description: 'The provider (aws, linode, hetzner, digitalocean, vultr, ...)'
required: true required: true
example: architecto example: corrupti
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 type: string
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -149,99 +99,63 @@ endpoints:
custom: [] custom: []
name: name:
name: name name: name
description: 'The name of the server.' description: 'The name of the server provider.'
required: true required: true
example: architecto example: est
type: string type: string
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
os: token:
name: os name: token
description: 'The os of the server' description: 'The token if provider requires api token'
required: true required: true
example: architecto example: rerum
type: string type: string
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
webserver: key:
name: webserver name: key
description: 'Web server' description: 'The key if provider requires key'
required: true required: true
example: none example: ut
type: string type: string
enumValues: enumValues: []
- none
- nginx
- caddy
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
database: secret:
name: database name: secret
description: Database description: 'The secret if provider requires key'
required: true required: true
example: mysql80 example: sed
type: string 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 exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
cleanBodyParameters: cleanBodyParameters:
provider: architecto provider: corrupti
server_provider: linode name: est
region: architecto token: rerum
plan: architecto key: ut
ip: architecto secret: sed
port: architecto
name: architecto
os: architecto
webserver: none
database: mysql80
php: '8.2'
fileParameters: [] fileParameters: []
responses: responses:
- -
status: 200 status: 200
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"}' content: '{"id":3,"project_id":null,"global":true,"name":"voluptas","provider":"vultr","created_at":"2025-04-05T17:48:03.000000Z","updated_at":"2025-04-05T17:48:03.000000Z"}'
headers: [] headers: []
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer 6g6vfEck83VaPhd5Zabe1D4'
controller: null controller: null
method: null method: null
route: null route: null
@ -249,17 +163,18 @@ endpoints:
- -
httpMethods: httpMethods:
- GET - GET
uri: 'api/projects/{project_id}/servers/{id}' uri: 'api/projects/{project_id}/server-providers/{serverProvider_id}'
metadata: metadata:
groupName: servers groupName: server-providers
groupDescription: '' groupDescription: ''
subgroup: '' subgroup: ''
subgroupDescription: '' subgroupDescription: ''
title: show title: show
description: 'Get a server by ID.' description: ''
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -273,11 +188,11 @@ endpoints:
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
id: serverProvider_id:
name: id name: serverProvider_id
description: 'The ID of the server.' description: 'The ID of the serverProvider.'
required: true required: true
example: 6 example: 1
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -285,7 +200,7 @@ endpoints:
custom: [] custom: []
cleanUrlParameters: cleanUrlParameters:
project_id: 1 project_id: 1
id: 6 serverProvider_id: 1
queryParameters: [] queryParameters: []
cleanQueryParameters: [] cleanQueryParameters: []
bodyParameters: [] bodyParameters: []
@ -294,30 +209,34 @@ endpoints:
responses: responses:
- -
status: 200 status: 200
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"}' content: '{"id":3,"project_id":null,"global":true,"name":"et","provider":"digitalocean","created_at":"2025-04-05T17:48:03.000000Z","updated_at":"2025-04-05T17:48:03.000000Z"}'
headers: [] headers: []
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer va63cDe8dPf5Z4Vahb1E6kg'
controller: null controller: null
method: null method: null
route: null route: null
custom: [] custom: []
- -
httpMethods: httpMethods:
- POST - PUT
uri: 'api/projects/{project_id}/servers/{server_id}/reboot' uri: 'api/projects/{project_id}/server-providers/{serverProvider_id}'
metadata: metadata:
groupName: servers groupName: server-providers
groupDescription: '' groupDescription: ''
subgroup: '' subgroup: ''
subgroupDescription: '' subgroupDescription: ''
title: reboot title: update
description: 'Reboot a server.' description: ''
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -331,57 +250,9 @@ endpoints:
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
server_id: serverProvider_id:
name: server_id name: serverProvider_id
description: 'The ID of the server.' description: 'The ID of the serverProvider.'
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:
- 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 required: true
example: 1 example: 1
type: integer type: integer
@ -389,33 +260,50 @@ endpoints:
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
server_id: cleanUrlParameters:
name: server_id project_id: 1
description: 'The ID of the server.' serverProvider_id: 1
queryParameters: []
cleanQueryParameters: []
bodyParameters:
name:
name: name
description: 'The name of the server provider.'
required: true required: true
example: 6 example: earum
type: integer type: string
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
cleanUrlParameters: global:
project_id: 1 name: global
server_id: 6 description: 'Accessible in all projects'
queryParameters: [] required: true
cleanQueryParameters: [] example: false
bodyParameters: [] type: string
cleanBodyParameters: [] enumValues:
- true
- false
exampleWasSpecified: false
nullable: false
custom: []
cleanBodyParameters:
name: earum
global: false
fileParameters: [] fileParameters: []
responses: responses:
- -
status: 204 status: 200
content: null content: '{"id":3,"project_id":null,"global":true,"name":"architecto","provider":"digitalocean","created_at":"2025-04-05T17:48:03.000000Z","updated_at":"2025-04-05T17:48:03.000000Z"}'
headers: [] headers: []
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer 4e1dghaV6D856P3ZbfkcEva'
controller: null controller: null
method: null method: null
route: null route: null
@ -423,17 +311,18 @@ endpoints:
- -
httpMethods: httpMethods:
- DELETE - DELETE
uri: 'api/projects/{project_id}/servers/{server_id}' uri: 'api/projects/{project_id}/server-providers/{serverProvider_id}'
metadata: metadata:
groupName: servers groupName: server-providers
groupDescription: '' groupDescription: ''
subgroup: '' subgroup: ''
subgroupDescription: '' subgroupDescription: ''
title: delete title: delete
description: 'Delete server.' description: ''
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -447,11 +336,11 @@ endpoints:
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
server_id: serverProvider_id:
name: server_id name: serverProvider_id
description: 'The ID of the server.' description: 'The ID of the serverProvider.'
required: true required: true
example: 6 example: 1
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -459,7 +348,7 @@ endpoints:
custom: [] custom: []
cleanUrlParameters: cleanUrlParameters:
project_id: 1 project_id: 1
server_id: 6 serverProvider_id: 1
queryParameters: [] queryParameters: []
cleanQueryParameters: [] cleanQueryParameters: []
bodyParameters: [] bodyParameters: []
@ -473,7 +362,10 @@ endpoints:
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer fcVa8ev63gP5DaZbkdhE461'
controller: null controller: null
method: null method: null
route: null route: null

View File

@ -1,22 +1,23 @@
## Autogenerated by Scribe. DO NOT MODIFY. ## Autogenerated by Scribe. DO NOT MODIFY.
name: server-providers name: ssh-keys
description: '' description: ''
endpoints: endpoints:
- -
httpMethods: httpMethods:
- GET - GET
uri: 'api/projects/{project_id}/server-providers' uri: 'api/projects/{project_id}/servers/{server_id}/ssh-keys'
metadata: metadata:
groupName: server-providers groupName: ssh-keys
groupDescription: '' groupDescription: ''
subgroup: '' subgroup: ''
subgroupDescription: '' subgroupDescription: ''
title: list title: list
description: '' description: 'Get all ssh keys.'
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -30,8 +31,19 @@ endpoints:
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
server_id:
name: server_id
description: 'The ID of the server.'
required: true
example: 29
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanUrlParameters: cleanUrlParameters:
project_id: 1 project_id: 1
server_id: 29
queryParameters: [] queryParameters: []
cleanQueryParameters: [] cleanQueryParameters: []
bodyParameters: [] bodyParameters: []
@ -40,12 +52,15 @@ endpoints:
responses: responses:
- -
status: 200 status: 200
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":"&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}}' content: '{"data":[{"id":null,"user":null,"name":"Santa Goyette","created_at":null,"updated_at":null},{"id":null,"user":null,"name":"Cecil Cummings","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}}'
headers: [] headers: []
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer 165aZvb46PhacEfke83dVgD'
controller: null controller: null
method: null method: null
route: null route: null
@ -53,17 +68,18 @@ endpoints:
- -
httpMethods: httpMethods:
- POST - POST
uri: 'api/projects/{project_id}/server-providers' uri: 'api/projects/{project_id}/servers/{server_id}/ssh-keys'
metadata: metadata:
groupName: server-providers groupName: ssh-keys
groupDescription: '' groupDescription: ''
subgroup: '' subgroup: ''
subgroupDescription: '' subgroupDescription: ''
title: create title: create
description: '' description: 'Deploy ssh key to server.'
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -77,16 +93,27 @@ endpoints:
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
server_id:
name: server_id
description: 'The ID of the server.'
required: true
example: 29
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanUrlParameters: cleanUrlParameters:
project_id: 1 project_id: 1
server_id: 29
queryParameters: [] queryParameters: []
cleanQueryParameters: [] cleanQueryParameters: []
bodyParameters: bodyParameters:
provider: key_id:
name: provider name: key_id
description: 'The provider (aws, linode, hetzner, digitalocean, vultr, ...)' description: 'The ID of the key.'
required: true required: true
example: architecto example: explicabo
type: string type: string
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -94,200 +121,41 @@ endpoints:
custom: [] custom: []
name: name:
name: name name: name
description: 'The name of the server provider.' description: 'Key name, required if key_id is not provided.'
required: true required: true
example: architecto example: deleniti
type: string type: string
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
token: public_key:
name: token name: public_key
description: 'The token if provider requires api token' description: 'Public Key, required if key_id is not provided.'
required: true required: true
example: architecto example: sapiente
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 type: string
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
cleanBodyParameters: cleanBodyParameters:
provider: architecto key_id: explicabo
name: architecto name: deleniti
token: architecto public_key: sapiente
key: architecto
secret: architecto
fileParameters: [] fileParameters: []
responses: responses:
- -
status: 200 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"}' content: '{"id":null,"user":null,"name":"Mr. Reagan Jacobson V","created_at":null,"updated_at":null}'
headers: [] headers: []
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
controller: null - headers
method: null - Authorization
route: null - 'Bearer deDkf4E13PZb6cgaV58ha6v'
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: []
responseFields: []
auth: []
controller: null controller: null
method: null method: null
route: null route: null
@ -295,17 +163,18 @@ endpoints:
- -
httpMethods: httpMethods:
- DELETE - DELETE
uri: 'api/projects/{project_id}/server-providers/{serverProvider_id}' uri: 'api/projects/{project_id}/servers/{server_id}/ssh-keys/{sshKey_id}'
metadata: metadata:
groupName: server-providers groupName: ssh-keys
groupDescription: '' groupDescription: ''
subgroup: '' subgroup: ''
subgroupDescription: '' subgroupDescription: ''
title: delete title: delete
description: '' description: 'Delete ssh key from server.'
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -319,11 +188,21 @@ endpoints:
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
serverProvider_id: server_id:
name: serverProvider_id name: server_id
description: 'The ID of the serverProvider.' description: 'The ID of the server.'
required: true required: true
example: 3 example: 29
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
sshKey_id:
name: sshKey_id
description: 'The ID of the sshKey.'
required: true
example: 1
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -331,7 +210,8 @@ endpoints:
custom: [] custom: []
cleanUrlParameters: cleanUrlParameters:
project_id: 1 project_id: 1
serverProvider_id: 3 server_id: 29
sshKey_id: 1
queryParameters: [] queryParameters: []
cleanQueryParameters: [] cleanQueryParameters: []
bodyParameters: [] bodyParameters: []
@ -345,7 +225,10 @@ endpoints:
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer ec48fgVdZ6ah3kvPD16E5ab'
controller: null controller: null
method: null method: null
route: null route: null

View File

@ -1,22 +1,23 @@
## Autogenerated by Scribe. DO NOT MODIFY. ## Autogenerated by Scribe. DO NOT MODIFY.
name: ssh-keys name: services
description: '' description: ''
endpoints: endpoints:
- -
httpMethods: httpMethods:
- GET - GET
uri: 'api/projects/{project_id}/servers/{server_id}/ssh-keys' uri: 'api/projects/{project_id}/servers/{server_id}/services'
metadata: metadata:
groupName: ssh-keys groupName: services
groupDescription: '' groupDescription: ''
subgroup: '' subgroup: ''
subgroupDescription: '' subgroupDescription: ''
title: list title: list
description: 'Get all ssh keys.' description: 'Get all services.'
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -34,7 +35,7 @@ endpoints:
name: server_id name: server_id
description: 'The ID of the server.' description: 'The ID of the server.'
required: true required: true
example: 6 example: 29
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -42,7 +43,7 @@ endpoints:
custom: [] custom: []
cleanUrlParameters: cleanUrlParameters:
project_id: 1 project_id: 1
server_id: 6 server_id: 29
queryParameters: [] queryParameters: []
cleanQueryParameters: [] cleanQueryParameters: []
bodyParameters: [] bodyParameters: []
@ -51,12 +52,88 @@ endpoints:
responses: responses:
- -
status: 200 status: 200
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":"&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}}' content: '{"data":[{"id":null,"server_id":null,"type":null,"type_data":null,"name":null,"version":null,"unit":null,"status":null,"is_default":null,"created_at":null,"updated_at":null},{"id":null,"server_id":null,"type":null,"type_data":null,"name":null,"version":null,"unit":null,"status":null,"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}}'
headers: [] headers: []
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer gVEce46k8aZfaP3d15vbhD6'
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: true
custom: []
headers:
Authorization: 'Bearer YOUR-API-KEY'
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: 29
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
id:
name: id
description: 'The ID of the service.'
required: true
example: 169
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanUrlParameters:
project_id: 1
server_id: 29
id: 169
queryParameters: []
cleanQueryParameters: []
bodyParameters: []
cleanBodyParameters: []
fileParameters: []
responses:
-
status: 200
content: '{"id":null,"server_id":null,"type":null,"type_data":null,"name":null,"version":null,"unit":null,"status":null,"is_default":null,"created_at":null,"updated_at":null}'
headers: []
description: ''
custom: []
responseFields: []
auth:
- headers
- Authorization
- 'Bearer Ef8D5gbV6cadk3Zh1vP46ea'
controller: null controller: null
method: null method: null
route: null route: null
@ -64,17 +141,18 @@ endpoints:
- -
httpMethods: httpMethods:
- POST - POST
uri: 'api/projects/{project_id}/servers/{server_id}/ssh-keys' uri: 'api/projects/{project_id}/servers/{server_id}/services/{service_id}/start'
metadata: metadata:
groupName: ssh-keys groupName: services
groupDescription: '' groupDescription: ''
subgroup: '' subgroup: ''
subgroupDescription: '' subgroupDescription: ''
title: create title: start
description: 'Deploy ssh key to server.' description: 'Start service.'
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -92,7 +170,17 @@ endpoints:
name: server_id name: server_id
description: 'The ID of the server.' description: 'The ID of the server.'
required: true required: true
example: 6 example: 29
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
service_id:
name: service_id
description: 'The ID of the service.'
required: true
example: 169
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -100,109 +188,8 @@ endpoints:
custom: [] custom: []
cleanUrlParameters: cleanUrlParameters:
project_id: 1 project_id: 1
server_id: 6 server_id: 29
queryParameters: [] service_id: 169
cleanQueryParameters: []
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":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:
- DELETE
uri: 'api/projects/{project_id}/servers/{server_id}/ssh-keys/{sshKey_id}'
metadata:
groupName: ssh-keys
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: delete
description: 'Delete ssh key from 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: []
sshKey_id:
name: sshKey_id
description: 'The ID of the sshKey.'
required: true
example: 1
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanUrlParameters:
project_id: 1
server_id: 6
sshKey_id: 1
queryParameters: [] queryParameters: []
cleanQueryParameters: [] cleanQueryParameters: []
bodyParameters: [] bodyParameters: []
@ -216,7 +203,375 @@ endpoints:
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer b3DckZ8g6ha6aPe4f5V1vdE'
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: true
custom: []
headers:
Authorization: 'Bearer YOUR-API-KEY'
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: 29
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
service_id:
name: service_id
description: 'The ID of the service.'
required: true
example: 169
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanUrlParameters:
project_id: 1
server_id: 29
service_id: 169
queryParameters: []
cleanQueryParameters: []
bodyParameters: []
cleanBodyParameters: []
fileParameters: []
responses:
-
status: 204
content: null
headers: []
description: ''
custom: []
responseFields: []
auth:
- headers
- Authorization
- 'Bearer 1e8aZbfvE5643DacgkPhdV6'
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: true
custom: []
headers:
Authorization: 'Bearer YOUR-API-KEY'
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: 29
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
service_id:
name: service_id
description: 'The ID of the service.'
required: true
example: 169
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanUrlParameters:
project_id: 1
server_id: 29
service_id: 169
queryParameters: []
cleanQueryParameters: []
bodyParameters: []
cleanBodyParameters: []
fileParameters: []
responses:
-
status: 204
content: null
headers: []
description: ''
custom: []
responseFields: []
auth:
- headers
- Authorization
- 'Bearer c46baVZEg5dv1Pfe8Dha6k3'
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: true
custom: []
headers:
Authorization: 'Bearer YOUR-API-KEY'
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: 29
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
service_id:
name: service_id
description: 'The ID of the service.'
required: true
example: 169
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanUrlParameters:
project_id: 1
server_id: 29
service_id: 169
queryParameters: []
cleanQueryParameters: []
bodyParameters: []
cleanBodyParameters: []
fileParameters: []
responses:
-
status: 204
content: null
headers: []
description: ''
custom: []
responseFields: []
auth:
- headers
- Authorization
- 'Bearer EvcehkDbdV43f61P86Za5ga'
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: true
custom: []
headers:
Authorization: 'Bearer YOUR-API-KEY'
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: 29
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
service_id:
name: service_id
description: 'The ID of the service.'
required: true
example: 169
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanUrlParameters:
project_id: 1
server_id: 29
service_id: 169
queryParameters: []
cleanQueryParameters: []
bodyParameters: []
cleanBodyParameters: []
fileParameters: []
responses:
-
status: 204
content: null
headers: []
description: ''
custom: []
responseFields: []
auth:
- headers
- Authorization
- 'Bearer k8E5gf6d4h31bevaa6cVPZD'
controller: null
method: null
route: null
custom: []
-
httpMethods:
- DELETE
uri: 'api/projects/{project_id}/servers/{server_id}/services/{service_id}'
metadata:
groupName: services
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: delete
description: 'Delete service.'
authenticated: true
custom: []
headers:
Authorization: 'Bearer YOUR-API-KEY'
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: 29
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
service_id:
name: service_id
description: 'The ID of the service.'
required: true
example: 169
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanUrlParameters:
project_id: 1
server_id: 29
service_id: 169
queryParameters: []
cleanQueryParameters: []
bodyParameters: []
cleanBodyParameters: []
fileParameters: []
responses:
-
status: 204
content: null
headers: []
description: ''
custom: []
responseFields: []
auth:
- headers
- Authorization
- 'Bearer Pekav16cd5ag486ZfD3EVbh'
controller: null controller: null
method: null method: null
route: null route: null

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,22 +1,23 @@
## Autogenerated by Scribe. DO NOT MODIFY. ## Autogenerated by Scribe. DO NOT MODIFY.
name: source-controls name: storage-providers
description: '' description: ''
endpoints: endpoints:
- -
httpMethods: httpMethods:
- GET - GET
uri: 'api/projects/{project_id}/source-controls' uri: 'api/projects/{project_id}/storage-providers'
metadata: metadata:
groupName: source-controls groupName: storage-providers
groupDescription: '' groupDescription: ''
subgroup: '' subgroup: ''
subgroupDescription: '' subgroupDescription: ''
title: list title: list
description: '' description: ''
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -40,12 +41,15 @@ endpoints:
responses: responses:
- -
status: 200 status: 200
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":"&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}}' content: '{"data":[{"id":5,"project_id":null,"global":true,"name":"veritatis","provider":"ftp","created_at":"2025-04-05T17:48:03.000000Z","updated_at":"2025-04-05T17:48:03.000000Z"},{"id":6,"project_id":null,"global":true,"name":"voluptas","provider":"dropbox","created_at":"2025-04-05T17:48:03.000000Z","updated_at":"2025-04-05T17:48:03.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}}'
headers: [] headers: []
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer fgh4eV31dP58kvaDEaZbc66'
controller: null controller: null
method: null method: null
route: null route: null
@ -53,17 +57,18 @@ endpoints:
- -
httpMethods: httpMethods:
- POST - POST
uri: 'api/projects/{project_id}/source-controls' uri: 'api/projects/{project_id}/storage-providers'
metadata: metadata:
groupName: source-controls groupName: storage-providers
groupDescription: '' groupDescription: ''
subgroup: '' subgroup: ''
subgroupDescription: '' subgroupDescription: ''
title: create title: create
description: '' description: ''
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -84,14 +89,11 @@ endpoints:
bodyParameters: bodyParameters:
provider: provider:
name: provider name: provider
description: 'The provider' description: 'The provider (aws, linode, hetzner, digitalocean, vultr, ...)'
required: true required: true
example: gitlab example: ab
type: string type: string
enumValues: enumValues: []
- gitlab
- github
- bitbucket
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
@ -99,7 +101,7 @@ endpoints:
name: name name: name
description: 'The name of the storage provider.' description: 'The name of the storage provider.'
required: true required: true
example: architecto example: quo
type: string type: string
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -109,59 +111,51 @@ endpoints:
name: token name: token
description: 'The token if provider requires api token' description: 'The token if provider requires api token'
required: true required: true
example: architecto example: in
type: string type: string
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
url: key:
name: url name: key
description: 'The URL if the provider is Gitlab and it is self-hosted' description: 'The key if provider requires key'
required: true required: true
example: 'http://www.bailey.biz/quos-velit-et-fugiat-sunt-nihil-accusantium-harum.html' example: sunt
type: string type: string
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
username: secret:
name: username name: secret
description: 'The username if the provider is Bitbucket' description: 'The secret if provider requires key'
required: true required: true
example: architecto example: molestias
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
password:
name: password
description: 'The password if the provider is Bitbucket'
required: true
example: '|]|{+-'
type: string type: string
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
cleanBodyParameters: cleanBodyParameters:
provider: gitlab provider: ab
name: architecto name: quo
token: architecto token: in
url: 'http://www.bailey.biz/quos-velit-et-fugiat-sunt-nihil-accusantium-harum.html' key: sunt
username: architecto secret: molestias
password: '|]|{+-'
fileParameters: [] fileParameters: []
responses: responses:
- -
status: 200 status: 200
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"}' content: '{"id":5,"project_id":null,"global":true,"name":"asperiores","provider":"dropbox","created_at":"2025-04-05T17:48:03.000000Z","updated_at":"2025-04-05T17:48:03.000000Z"}'
headers: [] headers: []
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer e584613dkZaPDEVvgcahbf6'
controller: null controller: null
method: null method: null
route: null route: null
@ -169,17 +163,18 @@ endpoints:
- -
httpMethods: httpMethods:
- GET - GET
uri: 'api/projects/{project_id}/source-controls/{sourceControl_id}' uri: 'api/projects/{project_id}/storage-providers/{storageProvider_id}'
metadata: metadata:
groupName: source-controls groupName: storage-providers
groupDescription: '' groupDescription: ''
subgroup: '' subgroup: ''
subgroupDescription: '' subgroupDescription: ''
title: show title: show
description: '' description: ''
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -193,11 +188,11 @@ endpoints:
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
sourceControl_id: storageProvider_id:
name: sourceControl_id name: storageProvider_id
description: 'The ID of the sourceControl.' description: 'The ID of the storageProvider.'
required: true required: true
example: 1 example: 3
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -205,7 +200,7 @@ endpoints:
custom: [] custom: []
cleanUrlParameters: cleanUrlParameters:
project_id: 1 project_id: 1
sourceControl_id: 1 storageProvider_id: 3
queryParameters: [] queryParameters: []
cleanQueryParameters: [] cleanQueryParameters: []
bodyParameters: [] bodyParameters: []
@ -214,12 +209,15 @@ endpoints:
responses: responses:
- -
status: 200 status: 200
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"}' content: '{"id":5,"project_id":null,"global":true,"name":"ipsum","provider":"local","created_at":"2025-04-05T17:48:03.000000Z","updated_at":"2025-04-05T17:48:03.000000Z"}'
headers: [] headers: []
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer h6Zk6834dDce5fbPa1VvagE'
controller: null controller: null
method: null method: null
route: null route: null
@ -227,17 +225,18 @@ endpoints:
- -
httpMethods: httpMethods:
- PUT - PUT
uri: 'api/projects/{project_id}/source-controls/{sourceControl_id}' uri: 'api/projects/{project_id}/storage-providers/{storageProvider_id}'
metadata: metadata:
groupName: source-controls groupName: storage-providers
groupDescription: '' groupDescription: ''
subgroup: '' subgroup: ''
subgroupDescription: '' subgroupDescription: ''
title: update title: update
description: '' description: ''
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -251,11 +250,11 @@ endpoints:
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
sourceControl_id: storageProvider_id:
name: sourceControl_id name: storageProvider_id
description: 'The ID of the sourceControl.' description: 'The ID of the storageProvider.'
required: true required: true
example: 1 example: 3
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -263,7 +262,7 @@ endpoints:
custom: [] custom: []
cleanUrlParameters: cleanUrlParameters:
project_id: 1 project_id: 1
sourceControl_id: 1 storageProvider_id: 3
queryParameters: [] queryParameters: []
cleanQueryParameters: [] cleanQueryParameters: []
bodyParameters: bodyParameters:
@ -271,47 +270,7 @@ endpoints:
name: name name: name
description: 'The name of the storage provider.' description: 'The name of the storage provider.'
required: true required: true
example: architecto example: voluptas
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 type: string
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -321,7 +280,7 @@ endpoints:
name: global name: global
description: 'Accessible in all projects' description: 'Accessible in all projects'
required: true required: true
example: false example: true
type: string type: string
enumValues: enumValues:
- true - true
@ -330,22 +289,21 @@ endpoints:
nullable: false nullable: false
custom: [] custom: []
cleanBodyParameters: cleanBodyParameters:
name: architecto name: voluptas
token: architecto global: true
url: 'http://www.bailey.biz/quos-velit-et-fugiat-sunt-nihil-accusantium-harum.html'
username: architecto
password: '|]|{+-'
global: false
fileParameters: [] fileParameters: []
responses: responses:
- -
status: 200 status: 200
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"}' content: '{"id":5,"project_id":null,"global":true,"name":"minima","provider":"ftp","created_at":"2025-04-05T17:48:03.000000Z","updated_at":"2025-04-05T17:48:03.000000Z"}'
headers: [] headers: []
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer ak6fgd1Eba48chvPV3e5Z6D'
controller: null controller: null
method: null method: null
route: null route: null
@ -353,17 +311,18 @@ endpoints:
- -
httpMethods: httpMethods:
- DELETE - DELETE
uri: 'api/projects/{project_id}/source-controls/{sourceControl_id}' uri: 'api/projects/{project_id}/storage-providers/{storageProvider_id}'
metadata: metadata:
groupName: source-controls groupName: storage-providers
groupDescription: '' groupDescription: ''
subgroup: '' subgroup: ''
subgroupDescription: '' subgroupDescription: ''
title: delete title: delete
description: '' description: ''
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -377,11 +336,11 @@ endpoints:
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
sourceControl_id: storageProvider_id:
name: sourceControl_id name: storageProvider_id
description: 'The ID of the sourceControl.' description: 'The ID of the storageProvider.'
required: true required: true
example: 1 example: 3
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -389,7 +348,7 @@ endpoints:
custom: [] custom: []
cleanUrlParameters: cleanUrlParameters:
project_id: 1 project_id: 1
sourceControl_id: 1 storageProvider_id: 3
queryParameters: [] queryParameters: []
cleanQueryParameters: [] cleanQueryParameters: []
bodyParameters: [] bodyParameters: []
@ -403,7 +362,10 @@ endpoints:
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer PcaDbh6ZE4aV1e8fdv56k3g'
controller: null controller: null
method: null method: null
route: null route: null

View File

@ -1,352 +0,0 @@
## 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":"&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}}'
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: []

View File

@ -1,158 +1,47 @@
name: Endpoints name: cron-jobs
description: '' description: ''
endpoints: endpoints:
- -
httpMethods: httpMethods:
- POST - GET
uri: 'api/servers/{server_id}/agent/{id}' uri: 'api/projects/{project_id}/servers/{server_id}/cron-jobs'
metadata: metadata:
groupName: Endpoints groupName: cron-jobs
groupDescription: '' groupDescription: ''
subgroup: '' subgroup: ''
subgroupDescription: '' subgroupDescription: ''
title: '' title: list
description: '' description: 'Get all cron jobs.'
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
server_id: project_id:
name: server_id name: project_id
description: 'The ID of the server.' description: 'The ID of the project.'
required: true required: true
example: 6 example: 1
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
id: server_id:
name: id name: server_id
description: 'The ID of the agent.' description: 'The ID of the server.'
required: true required: true
example: architecto example: 29
type: string type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
cleanUrlParameters: cleanUrlParameters:
server_id: 6 project_id: 1
id: architecto server_id: 29
queryParameters: []
cleanQueryParameters: []
bodyParameters:
load:
name: load
description: ''
required: true
example: 4326.41688
type: number
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
memory_total:
name: memory_total
description: ''
required: true
example: 4326.41688
type: number
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
memory_used:
name: memory_used
description: ''
required: true
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:
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: []
responseFields: []
auth: []
controller: null
method: null
route: null
custom: []
-
httpMethods:
0: GET
2: POST
3: PUT
4: PATCH
5: DELETE
6: OPTIONS
uri: api/git-hooks
metadata:
groupName: Endpoints
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: ''
description: ''
authenticated: false
custom: []
headers:
Content-Type: application/json
Accept: application/json
urlParameters: []
cleanUrlParameters: []
queryParameters: [] queryParameters: []
cleanQueryParameters: [] cleanQueryParameters: []
bodyParameters: [] bodyParameters: []
@ -160,21 +49,259 @@ endpoints:
fileParameters: [] fileParameters: []
responses: responses:
- -
status: 404 status: 200
content: |- content: '{"data":[{"id":null,"server_id":null,"command":"ls -la","user":"root","frequency":"* * * * *","status":"ready","created_at":null,"updated_at":null},{"id":null,"server_id":null,"command":"ls -la","user":"root","frequency":"* * * * *","status":"ready","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}}'
{ headers: []
"message": "" description: ''
}
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: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer eDa6Vdh1Z4vc35bP8E6gafk'
controller: null
method: null
route: null
custom: []
-
httpMethods:
- POST
uri: 'api/projects/{project_id}/servers/{server_id}/cron-jobs'
metadata:
groupName: cron-jobs
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: create
description: 'Create a new cron job.'
authenticated: true
custom: []
headers:
Authorization: 'Bearer YOUR-API-KEY'
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: 29
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanUrlParameters:
project_id: 1
server_id: 29
queryParameters: []
cleanQueryParameters: []
bodyParameters:
command:
name: command
description: ''
required: true
example: quia
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
user:
name: user
description: ''
required: true
example: root
type: string
enumValues:
- root
- vito
exampleWasSpecified: false
nullable: false
custom: []
frequency:
name: frequency
description: 'Frequency of the cron job.'
required: true
example: '* * * * *'
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanBodyParameters:
command: quia
user: root
frequency: '* * * * *'
fileParameters: []
responses:
-
status: 200
content: '{"id":null,"server_id":null,"command":"ls -la","user":"root","frequency":"* * * * *","status":"ready","created_at":null,"updated_at":null}'
headers: []
description: ''
custom: []
responseFields: []
auth:
- headers
- Authorization
- 'Bearer 66EeZvdh3kVaDP8f4ga5c1b'
controller: null
method: null
route: null
custom: []
-
httpMethods:
- GET
uri: 'api/projects/{project_id}/servers/{server_id}/cron-jobs/{cronJob_id}'
metadata:
groupName: cron-jobs
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: show
description: 'Get a cron job by ID.'
authenticated: true
custom: []
headers:
Authorization: 'Bearer YOUR-API-KEY'
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: 29
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cronJob_id:
name: cronJob_id
description: 'The ID of the cronJob.'
required: true
example: 6
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanUrlParameters:
project_id: 1
server_id: 29
cronJob_id: 6
queryParameters: []
cleanQueryParameters: []
bodyParameters: []
cleanBodyParameters: []
fileParameters: []
responses:
-
status: 200
content: '{"id":null,"server_id":null,"command":"ls -la","user":"root","frequency":"* * * * *","status":"ready","created_at":null,"updated_at":null}'
headers: []
description: ''
custom: []
responseFields: []
auth:
- headers
- Authorization
- 'Bearer D4c3Z65ebv8E16fahaVgPdk'
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: true
custom: []
headers:
Authorization: 'Bearer YOUR-API-KEY'
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: 29
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cronJob_id:
name: cronJob_id
description: 'The ID of the cronJob.'
required: true
example: 13
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanUrlParameters:
project_id: 1
server_id: 29
cronJob_id: 13
queryParameters: []
cleanQueryParameters: []
bodyParameters: []
cleanBodyParameters: []
fileParameters: []
responses:
-
status: 204
content: null
headers: []
description: ''
custom: []
responseFields: []
auth:
- headers
- Authorization
- 'Bearer h3cP4aZa1v8feDdEg5b6k6V'
controller: null controller: null
method: null method: null
route: null route: null

View File

@ -1,20 +1,21 @@
name: cron-jobs name: databases
description: '' description: ''
endpoints: endpoints:
- -
httpMethods: httpMethods:
- GET - GET
uri: 'api/projects/{project_id}/servers/{server_id}/cron-jobs' uri: 'api/projects/{project_id}/servers/{server_id}/databases'
metadata: metadata:
groupName: cron-jobs groupName: databases
groupDescription: '' groupDescription: ''
subgroup: '' subgroup: ''
subgroupDescription: '' subgroupDescription: ''
title: list title: list
description: 'Get all cron jobs.' description: 'Get all databases.'
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -32,7 +33,7 @@ endpoints:
name: server_id name: server_id
description: 'The ID of the server.' description: 'The ID of the server.'
required: true required: true
example: 6 example: 29
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -40,7 +41,7 @@ endpoints:
custom: [] custom: []
cleanUrlParameters: cleanUrlParameters:
project_id: 1 project_id: 1
server_id: 6 server_id: 29
queryParameters: [] queryParameters: []
cleanQueryParameters: [] cleanQueryParameters: []
bodyParameters: [] bodyParameters: []
@ -49,12 +50,15 @@ endpoints:
responses: responses:
- -
status: 200 status: 200
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":"&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}}' content: '{"data":[{"id":null,"server_id":null,"name":"leffler.esther","status":"ready","created_at":null,"updated_at":null},{"id":null,"server_id":null,"name":"rhoda.rutherford","status":"ready","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}}'
headers: [] headers: []
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer E1VdfegZah4k86b53Dc6Pva'
controller: null controller: null
method: null method: null
route: null route: null
@ -62,17 +66,18 @@ endpoints:
- -
httpMethods: httpMethods:
- POST - POST
uri: 'api/projects/{project_id}/servers/{server_id}/cron-jobs' uri: 'api/projects/{project_id}/servers/{server_id}/databases'
metadata: metadata:
groupName: cron-jobs groupName: databases
groupDescription: '' groupDescription: ''
subgroup: '' subgroup: ''
subgroupDescription: '' subgroupDescription: ''
title: create title: create
description: 'Create a new cron job.' description: 'Create a new database.'
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -90,7 +95,7 @@ endpoints:
name: server_id name: server_id
description: 'The ID of the server.' description: 'The ID of the server.'
required: true required: true
example: 6 example: 29
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -98,56 +103,57 @@ endpoints:
custom: [] custom: []
cleanUrlParameters: cleanUrlParameters:
project_id: 1 project_id: 1
server_id: 6 server_id: 29
queryParameters: [] queryParameters: []
cleanQueryParameters: [] cleanQueryParameters: []
bodyParameters: bodyParameters:
command: name:
name: command name: name
description: '' description: ''
required: true required: true
example: architecto example: quisquam
type: string type: string
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
user: charset:
name: user name: charset
description: '' description: ''
required: true required: true
example: vito example: omnis
type: string type: string
enumValues: enumValues: []
- root
- vito
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
frequency: collation:
name: frequency name: collation
description: 'Frequency of the cron job.' description: ''
required: true required: true
example: '* * * * *' example: at
type: string type: string
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
cleanBodyParameters: cleanBodyParameters:
command: architecto name: quisquam
user: vito charset: omnis
frequency: '* * * * *' collation: at
fileParameters: [] fileParameters: []
responses: responses:
- -
status: 200 status: 200
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"}' content: '{"id":null,"server_id":null,"name":"csawayn","status":"ready","created_at":null,"updated_at":null}'
headers: [] headers: []
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer PVgkZ35ca4afd1EbD8ehv66'
controller: null controller: null
method: null method: null
route: null route: null
@ -155,17 +161,18 @@ endpoints:
- -
httpMethods: httpMethods:
- GET - GET
uri: 'api/projects/{project_id}/servers/{server_id}/cron-jobs/{cronJob_id}' uri: 'api/projects/{project_id}/servers/{server_id}/databases/{id}'
metadata: metadata:
groupName: cron-jobs groupName: databases
groupDescription: '' groupDescription: ''
subgroup: '' subgroup: ''
subgroupDescription: '' subgroupDescription: ''
title: show title: show
description: 'Get a cron job by ID.' description: 'Get a database by ID.'
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -183,17 +190,17 @@ endpoints:
name: server_id name: server_id
description: 'The ID of the server.' description: 'The ID of the server.'
required: true required: true
example: 6 example: 29
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
cronJob_id: id:
name: cronJob_id name: id
description: 'The ID of the cronJob.' description: 'The ID of the database.'
required: true required: true
example: 1 example: 8
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -201,8 +208,8 @@ endpoints:
custom: [] custom: []
cleanUrlParameters: cleanUrlParameters:
project_id: 1 project_id: 1
server_id: 6 server_id: 29
cronJob_id: 1 id: 8
queryParameters: [] queryParameters: []
cleanQueryParameters: [] cleanQueryParameters: []
bodyParameters: [] bodyParameters: []
@ -211,12 +218,15 @@ endpoints:
responses: responses:
- -
status: 200 status: 200
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"}' content: '{"id":null,"server_id":null,"name":"sandrine43","status":"ready","created_at":null,"updated_at":null}'
headers: [] headers: []
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer EP64D8g51adf6hbceavVZ3k'
controller: null controller: null
method: null method: null
route: null route: null
@ -224,17 +234,18 @@ endpoints:
- -
httpMethods: httpMethods:
- DELETE - DELETE
uri: 'api/projects/{project_id}/servers/{server_id}/cron-jobs/{cronJob_id}' uri: 'api/projects/{project_id}/servers/{server_id}/databases/{database_id}'
metadata: metadata:
groupName: cron-jobs groupName: databases
groupDescription: '' groupDescription: ''
subgroup: '' subgroup: ''
subgroupDescription: '' subgroupDescription: ''
title: delete title: delete
description: 'Delete cron job.' description: 'Delete database.'
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -252,17 +263,17 @@ endpoints:
name: server_id name: server_id
description: 'The ID of the server.' description: 'The ID of the server.'
required: true required: true
example: 6 example: 29
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
cronJob_id: database_id:
name: cronJob_id name: database_id
description: 'The ID of the cronJob.' description: 'The ID of the database.'
required: true required: true
example: 1 example: 8
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -270,8 +281,8 @@ endpoints:
custom: [] custom: []
cleanUrlParameters: cleanUrlParameters:
project_id: 1 project_id: 1
server_id: 6 server_id: 29
cronJob_id: 1 database_id: 8
queryParameters: [] queryParameters: []
cleanQueryParameters: [] cleanQueryParameters: []
bodyParameters: [] bodyParameters: []
@ -285,7 +296,10 @@ endpoints:
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer 8dgEk3Zv1eaVP66bDhf4ac5'
controller: null controller: null
method: null method: null
route: null route: null

View File

@ -1,20 +1,21 @@
name: databases name: database-users
description: '' description: ''
endpoints: endpoints:
- -
httpMethods: httpMethods:
- GET - GET
uri: 'api/projects/{project_id}/servers/{server_id}/databases' uri: 'api/projects/{project_id}/servers/{server_id}/database-users'
metadata: metadata:
groupName: databases groupName: database-users
groupDescription: '' groupDescription: ''
subgroup: '' subgroup: ''
subgroupDescription: '' subgroupDescription: ''
title: list title: list
description: 'Get all databases.' description: 'Get all database users.'
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -32,7 +33,7 @@ endpoints:
name: server_id name: server_id
description: 'The ID of the server.' description: 'The ID of the server.'
required: true required: true
example: 6 example: 29
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -40,7 +41,7 @@ endpoints:
custom: [] custom: []
cleanUrlParameters: cleanUrlParameters:
project_id: 1 project_id: 1
server_id: 6 server_id: 29
queryParameters: [] queryParameters: []
cleanQueryParameters: [] cleanQueryParameters: []
bodyParameters: [] bodyParameters: []
@ -49,12 +50,15 @@ endpoints:
responses: responses:
- -
status: 200 status: 200
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":"&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}}' content: '{"data":[{"id":null,"server_id":null,"username":"letha64","databases":[],"host":"%","status":null,"created_at":null,"updated_at":null},{"id":null,"server_id":null,"username":"hagenes.lurline","databases":[],"host":"%","status":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}}'
headers: [] headers: []
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer d4g15bV3Pa6hDvck6eaEf8Z'
controller: null controller: null
method: null method: null
route: null route: null
@ -62,17 +66,18 @@ endpoints:
- -
httpMethods: httpMethods:
- POST - POST
uri: 'api/projects/{project_id}/servers/{server_id}/databases' uri: 'api/projects/{project_id}/servers/{server_id}/database-users'
metadata: metadata:
groupName: databases groupName: database-users
groupDescription: '' groupDescription: ''
subgroup: '' subgroup: ''
subgroupDescription: '' subgroupDescription: ''
title: create title: create
description: 'Create a new database.' description: 'Create a new database user.'
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -90,7 +95,7 @@ endpoints:
name: server_id name: server_id
description: 'The ID of the server.' description: 'The ID of the server.'
required: true required: true
example: 6 example: 29
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -98,54 +103,57 @@ endpoints:
custom: [] custom: []
cleanUrlParameters: cleanUrlParameters:
project_id: 1 project_id: 1
server_id: 6 server_id: 29
queryParameters: [] queryParameters: []
cleanQueryParameters: [] cleanQueryParameters: []
bodyParameters: bodyParameters:
name: username:
name: name name: username
description: '' description: ''
required: true required: true
example: architecto example: qui
type: string type: string
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
charset: password:
name: charset name: password
description: '' description: ''
required: true required: true
example: architecto example: 'xYv*3,#HQ=5<w!'
type: string type: string
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
collation: host:
name: collation name: host
description: '' description: 'Host, if it is a remote user.'
required: true required: true
example: architecto example: '%'
type: string type: string
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
cleanBodyParameters: cleanBodyParameters:
name: architecto username: qui
charset: architecto password: 'xYv*3,#HQ=5<w!'
collation: architecto host: '%'
fileParameters: [] fileParameters: []
responses: responses:
- -
status: 200 status: 200
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"}' content: '{"id":null,"server_id":null,"username":"marcelle95","databases":[],"host":"%","status":null,"created_at":null,"updated_at":null}'
headers: [] headers: []
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer 3vZ6f6kagacDEhV1Pde5b84'
controller: null controller: null
method: null method: null
route: null route: null
@ -153,17 +161,18 @@ endpoints:
- -
httpMethods: httpMethods:
- GET - GET
uri: 'api/projects/{project_id}/servers/{server_id}/databases/{id}' uri: 'api/projects/{project_id}/servers/{server_id}/database-users/{databaseUser_id}'
metadata: metadata:
groupName: databases groupName: database-users
groupDescription: '' groupDescription: ''
subgroup: '' subgroup: ''
subgroupDescription: '' subgroupDescription: ''
title: show title: show
description: 'Get a database by ID.' description: 'Get a database user by ID.'
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -181,17 +190,17 @@ endpoints:
name: server_id name: server_id
description: 'The ID of the server.' description: 'The ID of the server.'
required: true required: true
example: 6 example: 29
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
id: databaseUser_id:
name: id name: databaseUser_id
description: 'The ID of the database.' description: 'The ID of the databaseUser.'
required: true required: true
example: 8 example: 1
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -199,8 +208,8 @@ endpoints:
custom: [] custom: []
cleanUrlParameters: cleanUrlParameters:
project_id: 1 project_id: 1
server_id: 6 server_id: 29
id: 8 databaseUser_id: 1
queryParameters: [] queryParameters: []
cleanQueryParameters: [] cleanQueryParameters: []
bodyParameters: [] bodyParameters: []
@ -209,30 +218,34 @@ endpoints:
responses: responses:
- -
status: 200 status: 200
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"}' content: '{"id":null,"server_id":null,"username":"brandi53","databases":[],"host":"%","status":null,"created_at":null,"updated_at":null}'
headers: [] headers: []
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer af3b5ac6dP8ZV4vE1hk6eDg'
controller: null controller: null
method: null method: null
route: null route: null
custom: [] custom: []
- -
httpMethods: httpMethods:
- DELETE - POST
uri: 'api/projects/{project_id}/servers/{server_id}/databases/{database_id}' uri: 'api/projects/{project_id}/servers/{server_id}/database-users/{databaseUser_id}/link'
metadata: metadata:
groupName: databases groupName: database-users
groupDescription: '' groupDescription: ''
subgroup: '' subgroup: ''
subgroupDescription: '' subgroupDescription: ''
title: delete title: link
description: 'Delete database.' description: 'Link to databases'
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -250,17 +263,17 @@ endpoints:
name: server_id name: server_id
description: 'The ID of the server.' description: 'The ID of the server.'
required: true required: true
example: 6 example: 29
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
database_id: databaseUser_id:
name: database_id name: databaseUser_id
description: 'The ID of the database.' description: 'The ID of the databaseUser.'
required: true required: true
example: 8 example: 4
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -268,8 +281,92 @@ endpoints:
custom: [] custom: []
cleanUrlParameters: cleanUrlParameters:
project_id: 1 project_id: 1
server_id: 6 server_id: 29
database_id: 8 databaseUser_id: 4
queryParameters: []
cleanQueryParameters: []
bodyParameters:
databases:
name: databases
description: 'Array of database names to link to the user.'
required: true
example: maiores
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanBodyParameters:
databases: maiores
fileParameters: []
responses:
-
status: 200
content: '{"id":null,"server_id":null,"username":"kschmidt","databases":[],"host":"%","status":null,"created_at":null,"updated_at":null}'
headers: []
description: ''
custom: []
responseFields: []
auth:
- headers
- Authorization
- 'Bearer b6f3Ed641gaZDcVa5k8vePh'
controller: null
method: null
route: null
custom: []
-
httpMethods:
- DELETE
uri: 'api/projects/{project_id}/servers/{server_id}/database-users/{databaseUser_id}'
metadata:
groupName: database-users
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: delete
description: 'Delete database user.'
authenticated: true
custom: []
headers:
Authorization: 'Bearer YOUR-API-KEY'
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: 29
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
databaseUser_id:
name: databaseUser_id
description: 'The ID of the databaseUser.'
required: true
example: 20
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanUrlParameters:
project_id: 1
server_id: 29
databaseUser_id: 20
queryParameters: [] queryParameters: []
cleanQueryParameters: [] cleanQueryParameters: []
bodyParameters: [] bodyParameters: []
@ -283,7 +380,10 @@ endpoints:
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer Zka6fh15g6eaV8vE34cDPdb'
controller: null controller: null
method: null method: null
route: null route: null

View File

@ -1,20 +1,21 @@
name: database-users name: firewall-rules
description: '' description: ''
endpoints: endpoints:
- -
httpMethods: httpMethods:
- GET - GET
uri: 'api/projects/{project_id}/servers/{server_id}/database-users' uri: 'api/projects/{project_id}/servers/{server_id}/firewall-rules'
metadata: metadata:
groupName: database-users groupName: firewall-rules
groupDescription: '' groupDescription: ''
subgroup: '' subgroup: ''
subgroupDescription: '' subgroupDescription: ''
title: list title: list
description: 'Get all database users.' description: 'Get all firewall rules.'
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -32,7 +33,7 @@ endpoints:
name: server_id name: server_id
description: 'The ID of the server.' description: 'The ID of the server.'
required: true required: true
example: 6 example: 29
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -40,7 +41,7 @@ endpoints:
custom: [] custom: []
cleanUrlParameters: cleanUrlParameters:
project_id: 1 project_id: 1
server_id: 6 server_id: 29
queryParameters: [] queryParameters: []
cleanQueryParameters: [] cleanQueryParameters: []
bodyParameters: [] bodyParameters: []
@ -49,12 +50,15 @@ endpoints:
responses: responses:
- -
status: 200 status: 200
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":"&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}}' content: '{"data":[{"id":null,"name":"ut","server_id":null,"type":"allow","protocol":"tcp","port":35499,"source":"177.130.54.250","mask":24,"note":"test","status":null,"created_at":null,"updated_at":null},{"id":null,"name":"totam","server_id":null,"type":"allow","protocol":"tcp","port":29448,"source":"181.194.26.13","mask":24,"note":"test","status":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}}'
headers: [] headers: []
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer eD368kaZfVEab4v61ghdP5c'
controller: null controller: null
method: null method: null
route: null route: null
@ -62,17 +66,18 @@ endpoints:
- -
httpMethods: httpMethods:
- POST - POST
uri: 'api/projects/{project_id}/servers/{server_id}/database-users' uri: 'api/projects/{project_id}/servers/{server_id}/firewall-rules'
metadata: metadata:
groupName: database-users groupName: firewall-rules
groupDescription: '' groupDescription: ''
subgroup: '' subgroup: ''
subgroupDescription: '' subgroupDescription: ''
title: create title: create
description: 'Create a new database user.' description: 'Create a new firewall rule.'
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -90,7 +95,7 @@ endpoints:
name: server_id name: server_id
description: 'The ID of the server.' description: 'The ID of the server.'
required: true required: true
example: 6 example: 29
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -98,54 +103,237 @@ endpoints:
custom: [] custom: []
cleanUrlParameters: cleanUrlParameters:
project_id: 1 project_id: 1
server_id: 6 server_id: 29
queryParameters: [] queryParameters: []
cleanQueryParameters: [] cleanQueryParameters: []
bodyParameters: bodyParameters:
username: name:
name: username name: name
description: '' description: ''
required: true required: true
example: architecto example: sapiente
type: string type: string
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
password: type:
name: password name: type
description: '' description: ''
required: true required: true
example: '|]|{+-' 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: et
type: string type: string
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
host: source:
name: host name: source
description: 'Host, if it is a remote user.' description: ''
required: false
example: doloribus
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
mask:
name: mask
description: 'Mask for source IP.'
required: true required: true
example: '%' example: '0'
type: string type: string
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
cleanBodyParameters: cleanBodyParameters:
username: architecto name: sapiente
password: '|]|{+-' type: allow
host: '%' protocol: tcp
port: et
source: doloribus
mask: '0'
fileParameters: [] fileParameters: []
responses: responses:
- -
status: 200 status: 200
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"}' content: '{"id":null,"name":"omnis","server_id":null,"type":"allow","protocol":"tcp","port":54634,"source":"246.242.9.65","mask":24,"note":"test","status":null,"created_at":null,"updated_at":null}'
headers: [] headers: []
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer 3184PbED6aacZveV6hf5dgk'
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: true
custom: []
headers:
Authorization: 'Bearer YOUR-API-KEY'
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: 29
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
firewallRule_id:
name: firewallRule_id
description: 'The ID of the firewallRule.'
required: true
example: 85
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanUrlParameters:
project_id: 1
server_id: 29
firewallRule_id: 85
queryParameters: []
cleanQueryParameters: []
bodyParameters:
name:
name: name
description: ''
required: true
example: et
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: aut
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
source:
name: source
description: ''
required: false
example: et
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: et
type: allow
protocol: tcp
port: aut
source: et
mask: '0'
fileParameters: []
responses:
-
status: 200
content: '{"id":null,"name":"consequatur","server_id":null,"type":"allow","protocol":"tcp","port":879,"source":"206.106.27.116","mask":24,"note":"test","status":null,"created_at":null,"updated_at":null}'
headers: []
description: ''
custom: []
responseFields: []
auth:
- headers
- Authorization
- 'Bearer ad46E3egPDc51aV6hb8vkZf'
controller: null controller: null
method: null method: null
route: null route: null
@ -153,17 +341,18 @@ endpoints:
- -
httpMethods: httpMethods:
- GET - GET
uri: 'api/projects/{project_id}/servers/{server_id}/database-users/{databaseUser_id}' uri: 'api/projects/{project_id}/servers/{server_id}/firewall-rules/{firewallRule_id}'
metadata: metadata:
groupName: database-users groupName: firewall-rules
groupDescription: '' groupDescription: ''
subgroup: '' subgroup: ''
subgroupDescription: '' subgroupDescription: ''
title: show title: show
description: 'Get a database user by ID.' description: 'Get a firewall rule by ID.'
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -181,17 +370,17 @@ endpoints:
name: server_id name: server_id
description: 'The ID of the server.' description: 'The ID of the server.'
required: true required: true
example: 6 example: 29
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
databaseUser_id: firewallRule_id:
name: databaseUser_id name: firewallRule_id
description: 'The ID of the databaseUser.' description: 'The ID of the firewallRule.'
required: true required: true
example: 16 example: 85
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -199,8 +388,8 @@ endpoints:
custom: [] custom: []
cleanUrlParameters: cleanUrlParameters:
project_id: 1 project_id: 1
server_id: 6 server_id: 29
databaseUser_id: 16 firewallRule_id: 85
queryParameters: [] queryParameters: []
cleanQueryParameters: [] cleanQueryParameters: []
bodyParameters: [] bodyParameters: []
@ -209,92 +398,15 @@ endpoints:
responses: responses:
- -
status: 200 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"}' content: '{"id":null,"name":"dolores","server_id":null,"type":"allow","protocol":"tcp","port":4691,"source":"147.108.28.144","mask":24,"note":"test","status":null,"created_at":null,"updated_at":null}'
headers: [] headers: []
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
controller: null - headers
method: null - Authorization
route: null - 'Bearer 6gkvbDae15a6f43EVPdZh8c'
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: []
responseFields: []
auth: []
controller: null controller: null
method: null method: null
route: null route: null
@ -302,17 +414,18 @@ endpoints:
- -
httpMethods: httpMethods:
- DELETE - DELETE
uri: 'api/projects/{project_id}/servers/{server_id}/database-users/{databaseUser_id}' uri: 'api/projects/{project_id}/servers/{server_id}/firewall-rules/{firewallRule_id}'
metadata: metadata:
groupName: database-users groupName: firewall-rules
groupDescription: '' groupDescription: ''
subgroup: '' subgroup: ''
subgroupDescription: '' subgroupDescription: ''
title: delete title: delete
description: 'Delete database user.' description: 'Delete firewall rule.'
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -330,17 +443,17 @@ endpoints:
name: server_id name: server_id
description: 'The ID of the server.' description: 'The ID of the server.'
required: true required: true
example: 6 example: 29
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
databaseUser_id: firewallRule_id:
name: databaseUser_id name: firewallRule_id
description: 'The ID of the databaseUser.' description: 'The ID of the firewallRule.'
required: true required: true
example: 16 example: 85
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -348,8 +461,8 @@ endpoints:
custom: [] custom: []
cleanUrlParameters: cleanUrlParameters:
project_id: 1 project_id: 1
server_id: 6 server_id: 29
databaseUser_id: 16 firewallRule_id: 85
queryParameters: [] queryParameters: []
cleanQueryParameters: [] cleanQueryParameters: []
bodyParameters: [] bodyParameters: []
@ -363,7 +476,10 @@ endpoints:
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer ZVd1fk5E3e48hDvaa6g6cPb'
controller: null controller: null
method: null method: null
route: null route: null

View File

@ -1,46 +1,24 @@
name: firewall-rules name: general
description: '' description: ''
endpoints: endpoints:
- -
httpMethods: httpMethods:
- GET - GET
uri: 'api/projects/{project_id}/servers/{server_id}/firewall-rules' uri: api/health
metadata: metadata:
groupName: firewall-rules groupName: general
groupDescription: '' groupDescription: ''
subgroup: '' subgroup: ''
subgroupDescription: '' subgroupDescription: ''
title: list title: health-check
description: 'Get all firewall rules.' description: ''
authenticated: false authenticated: false
custom: [] custom: []
headers: headers:
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters: []
project_id: cleanUrlParameters: []
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: [] queryParameters: []
cleanQueryParameters: [] cleanQueryParameters: []
bodyParameters: [] bodyParameters: []
@ -49,414 +27,14 @@ endpoints:
responses: responses:
- -
status: 200 status: 200
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":"&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}}' content: '{"success":true,"version":"2.4.0"}'
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: headers:
Content-Type: application/json cache-control: 'no-cache, private'
Accept: application/json content-type: application/json
urlParameters: x-ratelimit-limit: '60'
project_id: x-ratelimit-remaining: '59'
name: project_id access-control-allow-origin: '*'
description: 'The ID of the project.' description: null
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: [] custom: []
responseFields: [] responseFields: []
auth: [] auth: []

View File

@ -1,20 +1,21 @@
name: general name: projects
description: '' description: ''
endpoints: endpoints:
- -
httpMethods: httpMethods:
- GET - GET
uri: api/health uri: api/projects
metadata: metadata:
groupName: general groupName: projects
groupDescription: '' groupDescription: ''
subgroup: '' subgroup: ''
subgroupDescription: '' subgroupDescription: ''
title: health-check title: list
description: '' description: 'Get all projects.'
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: [] urlParameters: []
@ -27,17 +28,230 @@ endpoints:
responses: responses:
- -
status: 200 status: 200
content: '{"success":true,"version":"2.5.0"}' content: '{"data":[{"id":3,"name":"Mr. Drake Nader","created_at":"2025-04-05T17:48:03.000000Z","updated_at":"2025-04-05T17:48:03.000000Z"},{"id":4,"name":"Wilhelmine Jacobson","created_at":"2025-04-05T17:48:03.000000Z","updated_at":"2025-04-05T17:48:03.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}}'
headers: headers: []
cache-control: 'no-cache, private' description: ''
content-type: application/json
x-ratelimit-limit: '60'
x-ratelimit-remaining: '56'
access-control-allow-origin: '*'
description: null
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer fbPE6haeDZ8v1gV5ak463dc'
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: true
custom: []
headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json
Accept: application/json
urlParameters: []
cleanUrlParameters: []
queryParameters: []
cleanQueryParameters: []
bodyParameters:
name:
name: name
description: 'The name of the project.'
required: true
example: dignissimos
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanBodyParameters:
name: dignissimos
fileParameters: []
responses:
-
status: 200
content: '{"id":3,"name":"Pattie Cole","created_at":"2025-04-05T17:48:03.000000Z","updated_at":"2025-04-05T17:48:03.000000Z"}'
headers: []
description: ''
custom: []
responseFields: []
auth:
- headers
- Authorization
- 'Bearer 6ZkedcEfa5V6Dv4ab8P3g1h'
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: true
custom: []
headers:
Authorization: 'Bearer YOUR-API-KEY'
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":"Mr. Elias Bauch","created_at":"2025-04-05T17:48:03.000000Z","updated_at":"2025-04-05T17:48:03.000000Z"}'
headers: []
description: ''
custom: []
responseFields: []
auth:
- headers
- Authorization
- 'Bearer P6ka4Zaefgh8Ec3dV15v6bD'
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: true
custom: []
headers:
Authorization: 'Bearer YOUR-API-KEY'
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: sunt
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanBodyParameters:
name: sunt
fileParameters: []
responses:
-
status: 200
content: '{"id":3,"name":"Elfrieda Jakubowski","created_at":"2025-04-05T17:48:03.000000Z","updated_at":"2025-04-05T17:48:03.000000Z"}'
headers: []
description: ''
custom: []
responseFields: []
auth:
- headers
- Authorization
- 'Bearer ecaDZkf5E4vgP1V86d6hb3a'
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: true
custom: []
headers:
Authorization: 'Bearer YOUR-API-KEY'
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: ''
custom: []
responseFields: []
auth:
- headers
- Authorization
- 'Bearer h5gZ63DPVbcevE4faka86d1'
controller: null controller: null
method: null method: null
route: null route: null

View File

@ -1,208 +1,21 @@
name: projects name: redirects
description: '' description: ''
endpoints: endpoints:
- -
httpMethods: httpMethods:
- GET - GET
uri: api/projects uri: 'api/projects/{project_id}/servers/{server_id}/sites/{site_id}/redirects'
metadata: metadata:
groupName: projects groupName: redirects
groupDescription: '' groupDescription: ''
subgroup: '' subgroup: ''
subgroupDescription: '' subgroupDescription: ''
title: list title: index
description: 'Get all projects.' description: 'Get all redirects.'
authenticated: false authenticated: true
custom: []
headers:
Content-Type: application/json
Accept: application/json
urlParameters: []
cleanUrlParameters: []
queryParameters: []
cleanQueryParameters: []
bodyParameters: []
cleanBodyParameters: []
fileParameters: []
responses:
-
status: 200
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":"&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}}'
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: 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:
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":"Aleen O''Kon","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/{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: 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:
- DELETE
uri: 'api/projects/{project_id}'
metadata:
groupName: projects
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: delete
description: 'Delete project.'
authenticated: false
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -216,8 +29,224 @@ endpoints:
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
server_id:
name: server_id
description: 'The ID of the server.'
required: true
example: 29
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
site_id:
name: site_id
description: 'The ID of the site.'
required: true
example: 44
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanUrlParameters: cleanUrlParameters:
project_id: 1 project_id: 1
server_id: 29
site_id: 44
queryParameters: []
cleanQueryParameters: []
bodyParameters: []
cleanBodyParameters: []
fileParameters: []
responses:
-
status: 200
content: '{"data":[{"id":null,"site_id":null,"mode":307,"from":"ipsum","to":"http:\/\/fritsch.biz\/","status":"ready","created_at":null,"updated_at":null},{"id":null,"site_id":null,"mode":302,"from":"culpa","to":"http:\/\/www.huels.net\/aut-ut-ut-porro-non-rerum-voluptatum.html","status":"ready","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}}'
headers: []
description: ''
custom: []
responseFields: []
auth:
- headers
- Authorization
- 'Bearer cV16fevgEZhPadD43685akb'
controller: null
method: null
route: null
custom: []
-
httpMethods:
- POST
uri: 'api/projects/{project_id}/servers/{server_id}/sites/{site_id}/redirects'
metadata:
groupName: redirects
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: create
description: 'Create a new redirect.'
authenticated: true
custom: []
headers:
Authorization: 'Bearer YOUR-API-KEY'
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: 29
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
site_id:
name: site_id
description: 'The ID of the site.'
required: true
example: 44
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanUrlParameters:
project_id: 1
server_id: 29
site_id: 44
queryParameters: []
cleanQueryParameters: []
bodyParameters:
from:
name: from
description: ''
required: true
example: odit
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
to:
name: to
description: ''
required: true
example: incidunt
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
mode:
name: mode
description: ''
required: true
example: 301
type: string
enumValues:
- 301
- 302
- 307
- 308
exampleWasSpecified: false
nullable: false
custom: []
cleanBodyParameters:
from: odit
to: incidunt
mode: 301
fileParameters: []
responses:
-
status: 200
content: null
headers: []
description: ''
custom: []
responseFields: []
auth:
- headers
- Authorization
- 'Bearer ZD45hPk638abev61EVcagdf'
controller: null
method: null
route: null
custom: []
-
httpMethods:
- DELETE
uri: 'api/projects/{project_id}/servers/{server_id}/sites/{site_id}/redirects/{redirect_id}'
metadata:
groupName: redirects
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: delete
description: 'Delete a redirect.'
authenticated: true
custom: []
headers:
Authorization: 'Bearer YOUR-API-KEY'
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: 29
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
site_id:
name: site_id
description: 'The ID of the site.'
required: true
example: 44
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: 29
site_id: 44
redirect_id: 9
queryParameters: [] queryParameters: []
cleanQueryParameters: [] cleanQueryParameters: []
bodyParameters: [] bodyParameters: []
@ -231,7 +260,10 @@ endpoints:
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer Ec3fDgdbae615aPh8k6vV4Z'
controller: null controller: null
method: null method: null
route: null route: null

View File

@ -1,20 +1,21 @@
name: redirects name: servers
description: '' description: ''
endpoints: endpoints:
- -
httpMethods: httpMethods:
- POST - GET
uri: 'api/projects/{project_id}/servers/{server_id}/sites/{site_id}/redirects' uri: 'api/projects/{project_id}/servers'
metadata: metadata:
groupName: redirects groupName: servers
groupDescription: '' groupDescription: ''
subgroup: '' subgroup: ''
subgroupDescription: '' subgroupDescription: ''
title: create title: list
description: 'Create a new redirect.' description: 'Get all servers in a project.'
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -28,99 +29,305 @@ endpoints:
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] 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: cleanUrlParameters:
project_id: 1 project_id: 1
server_id: 6
site_id: 14
queryParameters: [] queryParameters: []
cleanQueryParameters: [] cleanQueryParameters: []
bodyParameters: bodyParameters: []
from: cleanBodyParameters: []
name: from
description: ''
required: true
example: architecto
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
to:
name: to
description: ''
required: true
example: architecto
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
mode:
name: mode
description: ''
required: true
example: 307
type: string
enumValues:
- 301
- 302
- 307
- 308
exampleWasSpecified: false
nullable: false
custom: []
cleanBodyParameters:
from: architecto
to: architecto
mode: 307
fileParameters: [] fileParameters: []
responses: responses:
- -
status: 200 status: 200
content: null content: '{"data":[{"id":null,"project_id":null,"user_id":null,"provider_id":null,"name":"Miss Bonita Vandervort IV","ssh_user":"vito","ip":"120.222.195.212","local_ip":"138.119.37.248","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":null,"last_update_check":null,"created_at":null,"updated_at":null},{"id":null,"project_id":null,"user_id":null,"provider_id":null,"name":"Dr. Shanie Batz IV","ssh_user":"vito","ip":"241.88.138.163","local_ip":"138.226.232.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":null,"last_update_check":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}}'
headers: [] headers: []
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer Pg1Vk6cvadD8eb3ZhaEf564'
controller: null controller: null
method: null method: null
route: null route: null
custom: [] custom: []
- -
httpMethods: httpMethods:
- DELETE - POST
uri: 'api/projects/{project_id}/servers/{server_id}/sites/{site_id}/redirects/{redirect_id}' uri: 'api/projects/{project_id}/servers'
metadata: metadata:
groupName: redirects groupName: servers
groupDescription: '' groupDescription: ''
subgroup: '' subgroup: ''
subgroupDescription: '' subgroupDescription: ''
title: delete title: create
description: 'Delete a redirect.' description: 'Create a new server.'
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
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 server provider type'
required: true
example: fugiat
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: digitalocean
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: itaque
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
plan:
name: plan
description: 'Provider plan if the provider is not custom'
required: true
example: voluptatum
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
ip:
name: ip
description: 'SSH IP address if the provider is custom'
required: true
example: ut
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
port:
name: port
description: 'SSH Port if the provider is custom'
required: true
example: reiciendis
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
name:
name: name
description: 'The name of the server.'
required: true
example: et
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
os:
name: os
description: 'The os of the server'
required: true
example: vel
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
webserver:
name: webserver
description: 'Web server'
required: true
example: nginx
type: string
enumValues:
- none
- nginx
exampleWasSpecified: false
nullable: false
custom: []
database:
name: database
description: Database
required: true
example: mysql80
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: '7.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: fugiat
server_provider: digitalocean
region: itaque
plan: voluptatum
ip: ut
port: reiciendis
name: et
os: vel
webserver: nginx
database: mysql80
php: '7.2'
fileParameters: []
responses:
-
status: 200
content: '{"id":null,"project_id":null,"user_id":null,"provider_id":null,"name":"Jeromy Mann","ssh_user":"vito","ip":"128.70.209.89","local_ip":"150.217.250.187","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":null,"last_update_check":null,"created_at":null,"updated_at":null}'
headers: []
description: ''
custom: []
responseFields: []
auth:
- headers
- Authorization
- 'Bearer 5E61e4vfcgDbVkZd68aah3P'
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: true
custom: []
headers:
Authorization: 'Bearer YOUR-API-KEY'
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: 29
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanUrlParameters:
project_id: 1
id: 29
queryParameters: []
cleanQueryParameters: []
bodyParameters: []
cleanBodyParameters: []
fileParameters: []
responses:
-
status: 200
content: '{"id":null,"project_id":null,"user_id":null,"provider_id":null,"name":"Miss Maya Schaden I","ssh_user":"vito","ip":"44.57.83.39","local_ip":"46.22.92.58","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":null,"last_update_check":null,"created_at":null,"updated_at":null}'
headers: []
description: ''
custom: []
responseFields: []
auth:
- headers
- Authorization
- 'Bearer hV3debf65aPD4E1ckag8Z6v'
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: true
custom: []
headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -138,27 +345,7 @@ endpoints:
name: server_id name: server_id
description: 'The ID of the server.' description: 'The ID of the server.'
required: true required: true
example: 6 example: 29
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 type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -166,9 +353,7 @@ endpoints:
custom: [] custom: []
cleanUrlParameters: cleanUrlParameters:
project_id: 1 project_id: 1
server_id: 6 server_id: 29
site_id: 14
redirect_id: 2
queryParameters: [] queryParameters: []
cleanQueryParameters: [] cleanQueryParameters: []
bodyParameters: [] bodyParameters: []
@ -182,7 +367,134 @@ endpoints:
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer b61aD6538PacZEkeghfvV4d'
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: true
custom: []
headers:
Authorization: 'Bearer YOUR-API-KEY'
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: 29
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanUrlParameters:
project_id: 1
server_id: 29
queryParameters: []
cleanQueryParameters: []
bodyParameters: []
cleanBodyParameters: []
fileParameters: []
responses:
-
status: 204
content: null
headers: []
description: ''
custom: []
responseFields: []
auth:
- headers
- Authorization
- 'Bearer dEZaa6cePVf3k86g45vbD1h'
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: true
custom: []
headers:
Authorization: 'Bearer YOUR-API-KEY'
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: 29
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanUrlParameters:
project_id: 1
server_id: 29
queryParameters: []
cleanQueryParameters: []
bodyParameters: []
cleanBodyParameters: []
fileParameters: []
responses:
-
status: 204
content: null
headers: []
description: ''
custom: []
responseFields: []
auth:
- headers
- Authorization
- 'Bearer 6aDkZEfdP16V58gb43avhec'
controller: null controller: null
method: null method: null
route: null route: null

View File

@ -1,20 +1,21 @@
name: servers name: server-providers
description: '' description: ''
endpoints: endpoints:
- -
httpMethods: httpMethods:
- GET - GET
uri: 'api/projects/{project_id}/servers' uri: 'api/projects/{project_id}/server-providers'
metadata: metadata:
groupName: servers groupName: server-providers
groupDescription: '' groupDescription: ''
subgroup: '' subgroup: ''
subgroupDescription: '' subgroupDescription: ''
title: list title: list
description: 'Get all servers in a project.' description: ''
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -38,12 +39,15 @@ endpoints:
responses: responses:
- -
status: 200 status: 200
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":"&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}}' content: '{"data":[{"id":3,"project_id":null,"global":true,"name":"aut","provider":"hetzner","created_at":"2025-04-05T17:48:03.000000Z","updated_at":"2025-04-05T17:48:03.000000Z"},{"id":4,"project_id":null,"global":true,"name":"qui","provider":"aws","created_at":"2025-04-05T17:48:03.000000Z","updated_at":"2025-04-05T17:48:03.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}}'
headers: [] headers: []
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer 3evaP8h6VEZkbfgaD6d1c45'
controller: null controller: null
method: null method: null
route: null route: null
@ -51,17 +55,18 @@ endpoints:
- -
httpMethods: httpMethods:
- POST - POST
uri: 'api/projects/{project_id}/servers' uri: 'api/projects/{project_id}/server-providers'
metadata: metadata:
groupName: servers groupName: server-providers
groupDescription: '' groupDescription: ''
subgroup: '' subgroup: ''
subgroupDescription: '' subgroupDescription: ''
title: create title: create
description: 'Create a new server.' description: ''
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -82,64 +87,9 @@ endpoints:
bodyParameters: bodyParameters:
provider: provider:
name: provider name: provider
description: 'The server provider type' description: 'The provider (aws, linode, hetzner, digitalocean, vultr, ...)'
required: true required: true
example: architecto example: corrupti
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 type: string
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -147,99 +97,63 @@ endpoints:
custom: [] custom: []
name: name:
name: name name: name
description: 'The name of the server.' description: 'The name of the server provider.'
required: true required: true
example: architecto example: est
type: string type: string
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
os: token:
name: os name: token
description: 'The os of the server' description: 'The token if provider requires api token'
required: true required: true
example: architecto example: rerum
type: string type: string
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
webserver: key:
name: webserver name: key
description: 'Web server' description: 'The key if provider requires key'
required: true required: true
example: none example: ut
type: string type: string
enumValues: enumValues: []
- none
- nginx
- caddy
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
database: secret:
name: database name: secret
description: Database description: 'The secret if provider requires key'
required: true required: true
example: mysql80 example: sed
type: string 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 exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
cleanBodyParameters: cleanBodyParameters:
provider: architecto provider: corrupti
server_provider: linode name: est
region: architecto token: rerum
plan: architecto key: ut
ip: architecto secret: sed
port: architecto
name: architecto
os: architecto
webserver: none
database: mysql80
php: '8.2'
fileParameters: [] fileParameters: []
responses: responses:
- -
status: 200 status: 200
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"}' content: '{"id":3,"project_id":null,"global":true,"name":"voluptas","provider":"vultr","created_at":"2025-04-05T17:48:03.000000Z","updated_at":"2025-04-05T17:48:03.000000Z"}'
headers: [] headers: []
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer 6g6vfEck83VaPhd5Zabe1D4'
controller: null controller: null
method: null method: null
route: null route: null
@ -247,17 +161,18 @@ endpoints:
- -
httpMethods: httpMethods:
- GET - GET
uri: 'api/projects/{project_id}/servers/{id}' uri: 'api/projects/{project_id}/server-providers/{serverProvider_id}'
metadata: metadata:
groupName: servers groupName: server-providers
groupDescription: '' groupDescription: ''
subgroup: '' subgroup: ''
subgroupDescription: '' subgroupDescription: ''
title: show title: show
description: 'Get a server by ID.' description: ''
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -271,11 +186,11 @@ endpoints:
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
id: serverProvider_id:
name: id name: serverProvider_id
description: 'The ID of the server.' description: 'The ID of the serverProvider.'
required: true required: true
example: 6 example: 1
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -283,7 +198,7 @@ endpoints:
custom: [] custom: []
cleanUrlParameters: cleanUrlParameters:
project_id: 1 project_id: 1
id: 6 serverProvider_id: 1
queryParameters: [] queryParameters: []
cleanQueryParameters: [] cleanQueryParameters: []
bodyParameters: [] bodyParameters: []
@ -292,30 +207,34 @@ endpoints:
responses: responses:
- -
status: 200 status: 200
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"}' content: '{"id":3,"project_id":null,"global":true,"name":"et","provider":"digitalocean","created_at":"2025-04-05T17:48:03.000000Z","updated_at":"2025-04-05T17:48:03.000000Z"}'
headers: [] headers: []
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer va63cDe8dPf5Z4Vahb1E6kg'
controller: null controller: null
method: null method: null
route: null route: null
custom: [] custom: []
- -
httpMethods: httpMethods:
- POST - PUT
uri: 'api/projects/{project_id}/servers/{server_id}/reboot' uri: 'api/projects/{project_id}/server-providers/{serverProvider_id}'
metadata: metadata:
groupName: servers groupName: server-providers
groupDescription: '' groupDescription: ''
subgroup: '' subgroup: ''
subgroupDescription: '' subgroupDescription: ''
title: reboot title: update
description: 'Reboot a server.' description: ''
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -329,57 +248,9 @@ endpoints:
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
server_id: serverProvider_id:
name: server_id name: serverProvider_id
description: 'The ID of the server.' description: 'The ID of the serverProvider.'
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:
- 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 required: true
example: 1 example: 1
type: integer type: integer
@ -387,33 +258,50 @@ endpoints:
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
server_id: cleanUrlParameters:
name: server_id project_id: 1
description: 'The ID of the server.' serverProvider_id: 1
queryParameters: []
cleanQueryParameters: []
bodyParameters:
name:
name: name
description: 'The name of the server provider.'
required: true required: true
example: 6 example: earum
type: integer type: string
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
cleanUrlParameters: global:
project_id: 1 name: global
server_id: 6 description: 'Accessible in all projects'
queryParameters: [] required: true
cleanQueryParameters: [] example: false
bodyParameters: [] type: string
cleanBodyParameters: [] enumValues:
- true
- false
exampleWasSpecified: false
nullable: false
custom: []
cleanBodyParameters:
name: earum
global: false
fileParameters: [] fileParameters: []
responses: responses:
- -
status: 204 status: 200
content: null content: '{"id":3,"project_id":null,"global":true,"name":"architecto","provider":"digitalocean","created_at":"2025-04-05T17:48:03.000000Z","updated_at":"2025-04-05T17:48:03.000000Z"}'
headers: [] headers: []
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer 4e1dghaV6D856P3ZbfkcEva'
controller: null controller: null
method: null method: null
route: null route: null
@ -421,17 +309,18 @@ endpoints:
- -
httpMethods: httpMethods:
- DELETE - DELETE
uri: 'api/projects/{project_id}/servers/{server_id}' uri: 'api/projects/{project_id}/server-providers/{serverProvider_id}'
metadata: metadata:
groupName: servers groupName: server-providers
groupDescription: '' groupDescription: ''
subgroup: '' subgroup: ''
subgroupDescription: '' subgroupDescription: ''
title: delete title: delete
description: 'Delete server.' description: ''
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -445,11 +334,11 @@ endpoints:
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
server_id: serverProvider_id:
name: server_id name: serverProvider_id
description: 'The ID of the server.' description: 'The ID of the serverProvider.'
required: true required: true
example: 6 example: 1
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -457,7 +346,7 @@ endpoints:
custom: [] custom: []
cleanUrlParameters: cleanUrlParameters:
project_id: 1 project_id: 1
server_id: 6 serverProvider_id: 1
queryParameters: [] queryParameters: []
cleanQueryParameters: [] cleanQueryParameters: []
bodyParameters: [] bodyParameters: []
@ -471,7 +360,10 @@ endpoints:
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer fcVa8ev63gP5DaZbkdhE461'
controller: null controller: null
method: null method: null
route: null route: null

View File

@ -1,20 +1,21 @@
name: server-providers name: ssh-keys
description: '' description: ''
endpoints: endpoints:
- -
httpMethods: httpMethods:
- GET - GET
uri: 'api/projects/{project_id}/server-providers' uri: 'api/projects/{project_id}/servers/{server_id}/ssh-keys'
metadata: metadata:
groupName: server-providers groupName: ssh-keys
groupDescription: '' groupDescription: ''
subgroup: '' subgroup: ''
subgroupDescription: '' subgroupDescription: ''
title: list title: list
description: '' description: 'Get all ssh keys.'
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -28,8 +29,19 @@ endpoints:
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
server_id:
name: server_id
description: 'The ID of the server.'
required: true
example: 29
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanUrlParameters: cleanUrlParameters:
project_id: 1 project_id: 1
server_id: 29
queryParameters: [] queryParameters: []
cleanQueryParameters: [] cleanQueryParameters: []
bodyParameters: [] bodyParameters: []
@ -38,12 +50,15 @@ endpoints:
responses: responses:
- -
status: 200 status: 200
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":"&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}}' content: '{"data":[{"id":null,"user":null,"name":"Santa Goyette","created_at":null,"updated_at":null},{"id":null,"user":null,"name":"Cecil Cummings","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}}'
headers: [] headers: []
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer 165aZvb46PhacEfke83dVgD'
controller: null controller: null
method: null method: null
route: null route: null
@ -51,17 +66,18 @@ endpoints:
- -
httpMethods: httpMethods:
- POST - POST
uri: 'api/projects/{project_id}/server-providers' uri: 'api/projects/{project_id}/servers/{server_id}/ssh-keys'
metadata: metadata:
groupName: server-providers groupName: ssh-keys
groupDescription: '' groupDescription: ''
subgroup: '' subgroup: ''
subgroupDescription: '' subgroupDescription: ''
title: create title: create
description: '' description: 'Deploy ssh key to server.'
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -75,16 +91,27 @@ endpoints:
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
server_id:
name: server_id
description: 'The ID of the server.'
required: true
example: 29
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanUrlParameters: cleanUrlParameters:
project_id: 1 project_id: 1
server_id: 29
queryParameters: [] queryParameters: []
cleanQueryParameters: [] cleanQueryParameters: []
bodyParameters: bodyParameters:
provider: key_id:
name: provider name: key_id
description: 'The provider (aws, linode, hetzner, digitalocean, vultr, ...)' description: 'The ID of the key.'
required: true required: true
example: architecto example: explicabo
type: string type: string
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -92,200 +119,41 @@ endpoints:
custom: [] custom: []
name: name:
name: name name: name
description: 'The name of the server provider.' description: 'Key name, required if key_id is not provided.'
required: true required: true
example: architecto example: deleniti
type: string type: string
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
token: public_key:
name: token name: public_key
description: 'The token if provider requires api token' description: 'Public Key, required if key_id is not provided.'
required: true required: true
example: architecto example: sapiente
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 type: string
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
cleanBodyParameters: cleanBodyParameters:
provider: architecto key_id: explicabo
name: architecto name: deleniti
token: architecto public_key: sapiente
key: architecto
secret: architecto
fileParameters: [] fileParameters: []
responses: responses:
- -
status: 200 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"}' content: '{"id":null,"user":null,"name":"Mr. Reagan Jacobson V","created_at":null,"updated_at":null}'
headers: [] headers: []
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
controller: null - headers
method: null - Authorization
route: null - 'Bearer deDkf4E13PZb6cgaV58ha6v'
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: []
responseFields: []
auth: []
controller: null controller: null
method: null method: null
route: null route: null
@ -293,17 +161,18 @@ endpoints:
- -
httpMethods: httpMethods:
- DELETE - DELETE
uri: 'api/projects/{project_id}/server-providers/{serverProvider_id}' uri: 'api/projects/{project_id}/servers/{server_id}/ssh-keys/{sshKey_id}'
metadata: metadata:
groupName: server-providers groupName: ssh-keys
groupDescription: '' groupDescription: ''
subgroup: '' subgroup: ''
subgroupDescription: '' subgroupDescription: ''
title: delete title: delete
description: '' description: 'Delete ssh key from server.'
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -317,11 +186,21 @@ endpoints:
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
serverProvider_id: server_id:
name: serverProvider_id name: server_id
description: 'The ID of the serverProvider.' description: 'The ID of the server.'
required: true required: true
example: 3 example: 29
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
sshKey_id:
name: sshKey_id
description: 'The ID of the sshKey.'
required: true
example: 1
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -329,7 +208,8 @@ endpoints:
custom: [] custom: []
cleanUrlParameters: cleanUrlParameters:
project_id: 1 project_id: 1
serverProvider_id: 3 server_id: 29
sshKey_id: 1
queryParameters: [] queryParameters: []
cleanQueryParameters: [] cleanQueryParameters: []
bodyParameters: [] bodyParameters: []
@ -343,7 +223,10 @@ endpoints:
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer ec48fgVdZ6ah3kvPD16E5ab'
controller: null controller: null
method: null method: null
route: null route: null

View File

@ -1,20 +1,21 @@
name: ssh-keys name: services
description: '' description: ''
endpoints: endpoints:
- -
httpMethods: httpMethods:
- GET - GET
uri: 'api/projects/{project_id}/servers/{server_id}/ssh-keys' uri: 'api/projects/{project_id}/servers/{server_id}/services'
metadata: metadata:
groupName: ssh-keys groupName: services
groupDescription: '' groupDescription: ''
subgroup: '' subgroup: ''
subgroupDescription: '' subgroupDescription: ''
title: list title: list
description: 'Get all ssh keys.' description: 'Get all services.'
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -32,7 +33,7 @@ endpoints:
name: server_id name: server_id
description: 'The ID of the server.' description: 'The ID of the server.'
required: true required: true
example: 6 example: 29
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -40,7 +41,7 @@ endpoints:
custom: [] custom: []
cleanUrlParameters: cleanUrlParameters:
project_id: 1 project_id: 1
server_id: 6 server_id: 29
queryParameters: [] queryParameters: []
cleanQueryParameters: [] cleanQueryParameters: []
bodyParameters: [] bodyParameters: []
@ -49,12 +50,88 @@ endpoints:
responses: responses:
- -
status: 200 status: 200
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":"&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}}' content: '{"data":[{"id":null,"server_id":null,"type":null,"type_data":null,"name":null,"version":null,"unit":null,"status":null,"is_default":null,"created_at":null,"updated_at":null},{"id":null,"server_id":null,"type":null,"type_data":null,"name":null,"version":null,"unit":null,"status":null,"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}}'
headers: [] headers: []
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer gVEce46k8aZfaP3d15vbhD6'
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: true
custom: []
headers:
Authorization: 'Bearer YOUR-API-KEY'
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: 29
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
id:
name: id
description: 'The ID of the service.'
required: true
example: 169
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanUrlParameters:
project_id: 1
server_id: 29
id: 169
queryParameters: []
cleanQueryParameters: []
bodyParameters: []
cleanBodyParameters: []
fileParameters: []
responses:
-
status: 200
content: '{"id":null,"server_id":null,"type":null,"type_data":null,"name":null,"version":null,"unit":null,"status":null,"is_default":null,"created_at":null,"updated_at":null}'
headers: []
description: ''
custom: []
responseFields: []
auth:
- headers
- Authorization
- 'Bearer Ef8D5gbV6cadk3Zh1vP46ea'
controller: null controller: null
method: null method: null
route: null route: null
@ -62,17 +139,18 @@ endpoints:
- -
httpMethods: httpMethods:
- POST - POST
uri: 'api/projects/{project_id}/servers/{server_id}/ssh-keys' uri: 'api/projects/{project_id}/servers/{server_id}/services/{service_id}/start'
metadata: metadata:
groupName: ssh-keys groupName: services
groupDescription: '' groupDescription: ''
subgroup: '' subgroup: ''
subgroupDescription: '' subgroupDescription: ''
title: create title: start
description: 'Deploy ssh key to server.' description: 'Start service.'
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -90,7 +168,17 @@ endpoints:
name: server_id name: server_id
description: 'The ID of the server.' description: 'The ID of the server.'
required: true required: true
example: 6 example: 29
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
service_id:
name: service_id
description: 'The ID of the service.'
required: true
example: 169
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -98,109 +186,8 @@ endpoints:
custom: [] custom: []
cleanUrlParameters: cleanUrlParameters:
project_id: 1 project_id: 1
server_id: 6 server_id: 29
queryParameters: [] service_id: 169
cleanQueryParameters: []
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":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:
- DELETE
uri: 'api/projects/{project_id}/servers/{server_id}/ssh-keys/{sshKey_id}'
metadata:
groupName: ssh-keys
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: delete
description: 'Delete ssh key from 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: []
sshKey_id:
name: sshKey_id
description: 'The ID of the sshKey.'
required: true
example: 1
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanUrlParameters:
project_id: 1
server_id: 6
sshKey_id: 1
queryParameters: [] queryParameters: []
cleanQueryParameters: [] cleanQueryParameters: []
bodyParameters: [] bodyParameters: []
@ -214,7 +201,375 @@ endpoints:
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer b3DckZ8g6ha6aPe4f5V1vdE'
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: true
custom: []
headers:
Authorization: 'Bearer YOUR-API-KEY'
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: 29
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
service_id:
name: service_id
description: 'The ID of the service.'
required: true
example: 169
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanUrlParameters:
project_id: 1
server_id: 29
service_id: 169
queryParameters: []
cleanQueryParameters: []
bodyParameters: []
cleanBodyParameters: []
fileParameters: []
responses:
-
status: 204
content: null
headers: []
description: ''
custom: []
responseFields: []
auth:
- headers
- Authorization
- 'Bearer 1e8aZbfvE5643DacgkPhdV6'
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: true
custom: []
headers:
Authorization: 'Bearer YOUR-API-KEY'
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: 29
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
service_id:
name: service_id
description: 'The ID of the service.'
required: true
example: 169
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanUrlParameters:
project_id: 1
server_id: 29
service_id: 169
queryParameters: []
cleanQueryParameters: []
bodyParameters: []
cleanBodyParameters: []
fileParameters: []
responses:
-
status: 204
content: null
headers: []
description: ''
custom: []
responseFields: []
auth:
- headers
- Authorization
- 'Bearer c46baVZEg5dv1Pfe8Dha6k3'
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: true
custom: []
headers:
Authorization: 'Bearer YOUR-API-KEY'
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: 29
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
service_id:
name: service_id
description: 'The ID of the service.'
required: true
example: 169
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanUrlParameters:
project_id: 1
server_id: 29
service_id: 169
queryParameters: []
cleanQueryParameters: []
bodyParameters: []
cleanBodyParameters: []
fileParameters: []
responses:
-
status: 204
content: null
headers: []
description: ''
custom: []
responseFields: []
auth:
- headers
- Authorization
- 'Bearer EvcehkDbdV43f61P86Za5ga'
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: true
custom: []
headers:
Authorization: 'Bearer YOUR-API-KEY'
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: 29
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
service_id:
name: service_id
description: 'The ID of the service.'
required: true
example: 169
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanUrlParameters:
project_id: 1
server_id: 29
service_id: 169
queryParameters: []
cleanQueryParameters: []
bodyParameters: []
cleanBodyParameters: []
fileParameters: []
responses:
-
status: 204
content: null
headers: []
description: ''
custom: []
responseFields: []
auth:
- headers
- Authorization
- 'Bearer k8E5gf6d4h31bevaa6cVPZD'
controller: null
method: null
route: null
custom: []
-
httpMethods:
- DELETE
uri: 'api/projects/{project_id}/servers/{server_id}/services/{service_id}'
metadata:
groupName: services
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: delete
description: 'Delete service.'
authenticated: true
custom: []
headers:
Authorization: 'Bearer YOUR-API-KEY'
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: 29
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
service_id:
name: service_id
description: 'The ID of the service.'
required: true
example: 169
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanUrlParameters:
project_id: 1
server_id: 29
service_id: 169
queryParameters: []
cleanQueryParameters: []
bodyParameters: []
cleanBodyParameters: []
fileParameters: []
responses:
-
status: 204
content: null
headers: []
description: ''
custom: []
responseFields: []
auth:
- headers
- Authorization
- 'Bearer Pekav16cd5ag486ZfD3EVbh'
controller: null controller: null
method: null method: null
route: null route: null

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,20 +1,21 @@
name: source-controls name: storage-providers
description: '' description: ''
endpoints: endpoints:
- -
httpMethods: httpMethods:
- GET - GET
uri: 'api/projects/{project_id}/source-controls' uri: 'api/projects/{project_id}/storage-providers'
metadata: metadata:
groupName: source-controls groupName: storage-providers
groupDescription: '' groupDescription: ''
subgroup: '' subgroup: ''
subgroupDescription: '' subgroupDescription: ''
title: list title: list
description: '' description: ''
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -38,12 +39,15 @@ endpoints:
responses: responses:
- -
status: 200 status: 200
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":"&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}}' content: '{"data":[{"id":5,"project_id":null,"global":true,"name":"veritatis","provider":"ftp","created_at":"2025-04-05T17:48:03.000000Z","updated_at":"2025-04-05T17:48:03.000000Z"},{"id":6,"project_id":null,"global":true,"name":"voluptas","provider":"dropbox","created_at":"2025-04-05T17:48:03.000000Z","updated_at":"2025-04-05T17:48:03.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}}'
headers: [] headers: []
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer fgh4eV31dP58kvaDEaZbc66'
controller: null controller: null
method: null method: null
route: null route: null
@ -51,17 +55,18 @@ endpoints:
- -
httpMethods: httpMethods:
- POST - POST
uri: 'api/projects/{project_id}/source-controls' uri: 'api/projects/{project_id}/storage-providers'
metadata: metadata:
groupName: source-controls groupName: storage-providers
groupDescription: '' groupDescription: ''
subgroup: '' subgroup: ''
subgroupDescription: '' subgroupDescription: ''
title: create title: create
description: '' description: ''
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -82,14 +87,11 @@ endpoints:
bodyParameters: bodyParameters:
provider: provider:
name: provider name: provider
description: 'The provider' description: 'The provider (aws, linode, hetzner, digitalocean, vultr, ...)'
required: true required: true
example: gitlab example: ab
type: string type: string
enumValues: enumValues: []
- gitlab
- github
- bitbucket
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
@ -97,7 +99,7 @@ endpoints:
name: name name: name
description: 'The name of the storage provider.' description: 'The name of the storage provider.'
required: true required: true
example: architecto example: quo
type: string type: string
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -107,59 +109,51 @@ endpoints:
name: token name: token
description: 'The token if provider requires api token' description: 'The token if provider requires api token'
required: true required: true
example: architecto example: in
type: string type: string
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
url: key:
name: url name: key
description: 'The URL if the provider is Gitlab and it is self-hosted' description: 'The key if provider requires key'
required: true required: true
example: 'http://www.bailey.biz/quos-velit-et-fugiat-sunt-nihil-accusantium-harum.html' example: sunt
type: string type: string
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
username: secret:
name: username name: secret
description: 'The username if the provider is Bitbucket' description: 'The secret if provider requires key'
required: true required: true
example: architecto example: molestias
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
password:
name: password
description: 'The password if the provider is Bitbucket'
required: true
example: '|]|{+-'
type: string type: string
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
cleanBodyParameters: cleanBodyParameters:
provider: gitlab provider: ab
name: architecto name: quo
token: architecto token: in
url: 'http://www.bailey.biz/quos-velit-et-fugiat-sunt-nihil-accusantium-harum.html' key: sunt
username: architecto secret: molestias
password: '|]|{+-'
fileParameters: [] fileParameters: []
responses: responses:
- -
status: 200 status: 200
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"}' content: '{"id":5,"project_id":null,"global":true,"name":"asperiores","provider":"dropbox","created_at":"2025-04-05T17:48:03.000000Z","updated_at":"2025-04-05T17:48:03.000000Z"}'
headers: [] headers: []
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer e584613dkZaPDEVvgcahbf6'
controller: null controller: null
method: null method: null
route: null route: null
@ -167,17 +161,18 @@ endpoints:
- -
httpMethods: httpMethods:
- GET - GET
uri: 'api/projects/{project_id}/source-controls/{sourceControl_id}' uri: 'api/projects/{project_id}/storage-providers/{storageProvider_id}'
metadata: metadata:
groupName: source-controls groupName: storage-providers
groupDescription: '' groupDescription: ''
subgroup: '' subgroup: ''
subgroupDescription: '' subgroupDescription: ''
title: show title: show
description: '' description: ''
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -191,11 +186,11 @@ endpoints:
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
sourceControl_id: storageProvider_id:
name: sourceControl_id name: storageProvider_id
description: 'The ID of the sourceControl.' description: 'The ID of the storageProvider.'
required: true required: true
example: 1 example: 3
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -203,7 +198,7 @@ endpoints:
custom: [] custom: []
cleanUrlParameters: cleanUrlParameters:
project_id: 1 project_id: 1
sourceControl_id: 1 storageProvider_id: 3
queryParameters: [] queryParameters: []
cleanQueryParameters: [] cleanQueryParameters: []
bodyParameters: [] bodyParameters: []
@ -212,12 +207,15 @@ endpoints:
responses: responses:
- -
status: 200 status: 200
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"}' content: '{"id":5,"project_id":null,"global":true,"name":"ipsum","provider":"local","created_at":"2025-04-05T17:48:03.000000Z","updated_at":"2025-04-05T17:48:03.000000Z"}'
headers: [] headers: []
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer h6Zk6834dDce5fbPa1VvagE'
controller: null controller: null
method: null method: null
route: null route: null
@ -225,17 +223,18 @@ endpoints:
- -
httpMethods: httpMethods:
- PUT - PUT
uri: 'api/projects/{project_id}/source-controls/{sourceControl_id}' uri: 'api/projects/{project_id}/storage-providers/{storageProvider_id}'
metadata: metadata:
groupName: source-controls groupName: storage-providers
groupDescription: '' groupDescription: ''
subgroup: '' subgroup: ''
subgroupDescription: '' subgroupDescription: ''
title: update title: update
description: '' description: ''
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -249,11 +248,11 @@ endpoints:
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
sourceControl_id: storageProvider_id:
name: sourceControl_id name: storageProvider_id
description: 'The ID of the sourceControl.' description: 'The ID of the storageProvider.'
required: true required: true
example: 1 example: 3
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -261,7 +260,7 @@ endpoints:
custom: [] custom: []
cleanUrlParameters: cleanUrlParameters:
project_id: 1 project_id: 1
sourceControl_id: 1 storageProvider_id: 3
queryParameters: [] queryParameters: []
cleanQueryParameters: [] cleanQueryParameters: []
bodyParameters: bodyParameters:
@ -269,47 +268,7 @@ endpoints:
name: name name: name
description: 'The name of the storage provider.' description: 'The name of the storage provider.'
required: true required: true
example: architecto example: voluptas
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 type: string
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -319,7 +278,7 @@ endpoints:
name: global name: global
description: 'Accessible in all projects' description: 'Accessible in all projects'
required: true required: true
example: false example: true
type: string type: string
enumValues: enumValues:
- true - true
@ -328,22 +287,21 @@ endpoints:
nullable: false nullable: false
custom: [] custom: []
cleanBodyParameters: cleanBodyParameters:
name: architecto name: voluptas
token: architecto global: true
url: 'http://www.bailey.biz/quos-velit-et-fugiat-sunt-nihil-accusantium-harum.html'
username: architecto
password: '|]|{+-'
global: false
fileParameters: [] fileParameters: []
responses: responses:
- -
status: 200 status: 200
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"}' content: '{"id":5,"project_id":null,"global":true,"name":"minima","provider":"ftp","created_at":"2025-04-05T17:48:03.000000Z","updated_at":"2025-04-05T17:48:03.000000Z"}'
headers: [] headers: []
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer ak6fgd1Eba48chvPV3e5Z6D'
controller: null controller: null
method: null method: null
route: null route: null
@ -351,17 +309,18 @@ endpoints:
- -
httpMethods: httpMethods:
- DELETE - DELETE
uri: 'api/projects/{project_id}/source-controls/{sourceControl_id}' uri: 'api/projects/{project_id}/storage-providers/{storageProvider_id}'
metadata: metadata:
groupName: source-controls groupName: storage-providers
groupDescription: '' groupDescription: ''
subgroup: '' subgroup: ''
subgroupDescription: '' subgroupDescription: ''
title: delete title: delete
description: '' description: ''
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -375,11 +334,11 @@ endpoints:
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
sourceControl_id: storageProvider_id:
name: sourceControl_id name: storageProvider_id
description: 'The ID of the sourceControl.' description: 'The ID of the storageProvider.'
required: true required: true
example: 1 example: 3
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -387,7 +346,7 @@ endpoints:
custom: [] custom: []
cleanUrlParameters: cleanUrlParameters:
project_id: 1 project_id: 1
sourceControl_id: 1 storageProvider_id: 3
queryParameters: [] queryParameters: []
cleanQueryParameters: [] cleanQueryParameters: []
bodyParameters: [] bodyParameters: []
@ -401,7 +360,10 @@ endpoints:
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer PcaDbh6ZE4aV1e8fdv56k3g'
controller: null controller: null
method: null method: null
route: null route: null

View File

@ -1,350 +0,0 @@
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":"&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}}'
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: []

View File

@ -3,7 +3,7 @@ # Introduction
VitoDeploy's API documentation. VitoDeploy's API documentation.
<aside> <aside>
<strong>Base URL</strong>: <code>https://vito.test</code> <strong>Base URL</strong>: <code>https://your-vito-url</code>
</aside> </aside>
This documentation aims to provide all the information you need to work with our API. This documentation aims to provide all the information you need to work with our API.

View File

@ -15,7 +15,7 @@ ## About Vito
## Quick Start ## Quick Start
```sh ```sh
bash <(curl -Ls https://raw.githubusercontent.com/vitodeploy/vito/3.x/scripts/install.sh) bash <(curl -Ls https://raw.githubusercontent.com/vitodeploy/vito/2.x/scripts/install.sh)
``` ```
## Features ## Features
@ -45,11 +45,14 @@ ## Useful Links
## Credits ## Credits
- Laravel - Laravel
- InertiaJS
- Shadcn UI
- PHPSecLib - PHPSecLib
- PHPUnit - PHPUnit
- Tailwindcss - Tailwindcss
- Alpinejs
- Livewire
- Vite - Vite
- Prettier - Prettier
- Postcss
- FilamentPHP
- Mobiledetect
- Spatie - Spatie

View File

@ -3,24 +3,18 @@
namespace App\Actions\CronJob; namespace App\Actions\CronJob;
use App\Enums\CronjobStatus; use App\Enums\CronjobStatus;
use App\Exceptions\SSHError;
use App\Models\CronJob; use App\Models\CronJob;
use App\Models\Server; use App\Models\Server;
use App\ValidationRules\CronRule; use App\ValidationRules\CronRule;
use Illuminate\Support\Facades\Validator;
use Illuminate\Validation\Rule; use Illuminate\Validation\Rule;
class CreateCronJob class CreateCronJob
{ {
/** /**
* @param array<string, mixed> $input * @param array<string, mixed> $input
*
* @throws SSHError
*/ */
public function create(Server $server, array $input): CronJob public function create(Server $server, array $input): CronJob
{ {
Validator::make($input, self::rules($input, $server))->validate();
$cronJob = new CronJob([ $cronJob = new CronJob([
'server_id' => $server->id, 'server_id' => $server->id,
'user' => $input['user'], 'user' => $input['user'],
@ -39,7 +33,7 @@ public function create(Server $server, array $input): CronJob
/** /**
* @param array<string, mixed> $input * @param array<string, mixed> $input
* @return array<string, array<int, mixed>> * @return array<string, array<mixed>>
*/ */
public static function rules(array $input, Server $server): array public static function rules(array $input, Server $server): array
{ {

View File

@ -3,15 +3,11 @@
namespace App\Actions\CronJob; namespace App\Actions\CronJob;
use App\Enums\CronjobStatus; use App\Enums\CronjobStatus;
use App\Exceptions\SSHError;
use App\Models\CronJob; use App\Models\CronJob;
use App\Models\Server; use App\Models\Server;
class DeleteCronJob class DeleteCronJob
{ {
/**
* @throws SSHError
*/
public function delete(Server $server, CronJob $cronJob): void public function delete(Server $server, CronJob $cronJob): void
{ {
$user = $cronJob->user; $user = $cronJob->user;

View File

@ -3,15 +3,11 @@
namespace App\Actions\CronJob; namespace App\Actions\CronJob;
use App\Enums\CronjobStatus; use App\Enums\CronjobStatus;
use App\Exceptions\SSHError;
use App\Models\CronJob; use App\Models\CronJob;
use App\Models\Server; use App\Models\Server;
class DisableCronJob class DisableCronJob
{ {
/**
* @throws SSHError
*/
public function disable(Server $server, CronJob $cronJob): void public function disable(Server $server, CronJob $cronJob): void
{ {
$cronJob->status = CronjobStatus::DISABLING; $cronJob->status = CronjobStatus::DISABLING;

View File

@ -1,68 +0,0 @@
<?php
namespace App\Actions\CronJob;
use App\Enums\CronjobStatus;
use App\Exceptions\SSHError;
use App\Models\CronJob;
use App\Models\Server;
use App\ValidationRules\CronRule;
use Illuminate\Support\Facades\Validator;
use Illuminate\Validation\Rule;
class EditCronJob
{
/**
* @param array<string, mixed> $input
*
* @throws SSHError
*/
public function edit(Server $server, CronJob $cronJob, array $input): CronJob
{
Validator::make($input, self::rules($input, $server))->validate();
$cronJob->update([
'user' => $input['user'],
'command' => $input['command'],
'frequency' => $input['frequency'] == 'custom' ? $input['custom'] : $input['frequency'],
'status' => CronjobStatus::UPDATING,
]);
$cronJob->save();
$server->cron()->update($cronJob->user, CronJob::crontab($server, $cronJob->user));
$cronJob->status = CronjobStatus::READY;
$cronJob->save();
return $cronJob;
}
/**
* @param array<string, mixed> $input
* @return array<string, array<int, mixed>>
*/
public static function rules(array $input, Server $server): array
{
$rules = [
'command' => [
'required',
],
'user' => [
'required',
Rule::in($server->getSshUsers()),
],
'frequency' => [
'required',
new CronRule(acceptCustom: true),
],
];
if (isset($input['frequency']) && $input['frequency'] == 'custom') {
$rules['custom'] = [
'required',
new CronRule,
];
}
return $rules;
}
}

View File

@ -3,15 +3,11 @@
namespace App\Actions\CronJob; namespace App\Actions\CronJob;
use App\Enums\CronjobStatus; use App\Enums\CronjobStatus;
use App\Exceptions\SSHError;
use App\Models\CronJob; use App\Models\CronJob;
use App\Models\Server; use App\Models\Server;
class EnableCronJob class EnableCronJob
{ {
/**
* @throws SSHError
*/
public function enable(Server $server, CronJob $cronJob): void public function enable(Server $server, CronJob $cronJob): void
{ {
$cronJob->status = CronjobStatus::ENABLING; $cronJob->status = CronjobStatus::ENABLING;

View File

@ -6,7 +6,6 @@
use App\Models\Database; use App\Models\Database;
use App\Models\Server; use App\Models\Server;
use App\Models\Service; use App\Models\Service;
use Illuminate\Support\Facades\Validator;
use Illuminate\Validation\Rule; use Illuminate\Validation\Rule;
use Illuminate\Validation\ValidationException; use Illuminate\Validation\ValidationException;
@ -17,8 +16,6 @@ class CreateDatabase
*/ */
public function create(Server $server, array $input): Database public function create(Server $server, array $input): Database
{ {
Validator::make($input, self::rules($server, $input))->validate();
$database = new Database([ $database = new Database([
'server_id' => $server->id, 'server_id' => $server->id,
'charset' => $input['charset'], 'charset' => $input['charset'],
@ -29,7 +26,7 @@ public function create(Server $server, array $input): Database
/** @var Service $service */ /** @var Service $service */
$service = $server->database(); $service = $server->database();
/** @var \App\Services\Database\Database $databaseHandler */ /** @var \App\SSH\Services\Database\Database $databaseHandler */
$databaseHandler = $service->handler(); $databaseHandler = $service->handler();
$databaseHandler->create($database->name, $database->charset, $database->collation); $databaseHandler->create($database->name, $database->charset, $database->collation);
$database->status = DatabaseStatus::READY; $database->status = DatabaseStatus::READY;

View File

@ -6,8 +6,7 @@
use App\Models\DatabaseUser; use App\Models\DatabaseUser;
use App\Models\Server; use App\Models\Server;
use App\Models\Service; use App\Models\Service;
use App\Services\Database\Database; use App\SSH\Services\Database\Database;
use Illuminate\Support\Facades\Validator;
use Illuminate\Validation\Rule; use Illuminate\Validation\Rule;
use Illuminate\Validation\ValidationException; use Illuminate\Validation\ValidationException;
@ -21,8 +20,6 @@ class CreateDatabaseUser
*/ */
public function create(Server $server, array $input, array $links = []): DatabaseUser public function create(Server $server, array $input, array $links = []): DatabaseUser
{ {
Validator::make($input, self::rules($server, $input))->validate();
$databaseUser = new DatabaseUser([ $databaseUser = new DatabaseUser([
'server_id' => $server->id, 'server_id' => $server->id,
'username' => $input['username'], 'username' => $input['username'],

View File

@ -13,7 +13,7 @@ public function delete(Server $server, Database $database): void
{ {
/** @var Service $service */ /** @var Service $service */
$service = $server->database(); $service = $server->database();
/** @var \App\Services\Database\Database $handler */ /** @var \App\SSH\Services\Database\Database $handler */
$handler = $service->handler(); $handler = $service->handler();
$handler->delete($database->name); $handler->delete($database->name);
$database->delete(); $database->delete();

View File

@ -5,7 +5,7 @@
use App\Models\DatabaseUser; use App\Models\DatabaseUser;
use App\Models\Server; use App\Models\Server;
use App\Models\Service; use App\Models\Service;
use App\Services\Database\Database; use App\SSH\Services\Database\Database;
class DeleteDatabaseUser class DeleteDatabaseUser
{ {

View File

@ -6,7 +6,6 @@
use App\Models\DatabaseUser; use App\Models\DatabaseUser;
use App\Models\Server; use App\Models\Server;
use App\Models\Service; use App\Models\Service;
use Illuminate\Support\Facades\Validator;
use Illuminate\Validation\Rule; use Illuminate\Validation\Rule;
use Illuminate\Validation\ValidationException; use Illuminate\Validation\ValidationException;
@ -20,8 +19,6 @@ class LinkUser
*/ */
public function link(DatabaseUser $databaseUser, array $input): DatabaseUser public function link(DatabaseUser $databaseUser, array $input): DatabaseUser
{ {
Validator::make($input, self::rules($databaseUser->server))->validate();
if (! isset($input['databases']) || ! is_array($input['databases'])) { if (! isset($input['databases']) || ! is_array($input['databases'])) {
$input['databases'] = []; $input['databases'] = [];
} }
@ -39,7 +36,7 @@ public function link(DatabaseUser $databaseUser, array $input): DatabaseUser
/** @var Service $service */ /** @var Service $service */
$service = $databaseUser->server->database(); $service = $databaseUser->server->database();
/** @var \App\Services\Database\Database $handler */ /** @var \App\SSH\Services\Database\Database $handler */
$handler = $service->handler(); $handler = $service->handler();
// Unlink the user from all databases // Unlink the user from all databases
@ -63,9 +60,10 @@ public function link(DatabaseUser $databaseUser, array $input): DatabaseUser
} }
/** /**
* @param array<string, mixed> $input
* @return array<string, mixed> * @return array<string, mixed>
*/ */
public static function rules(Server $server): array public static function rules(Server $server, array $input): array
{ {
return [ return [
'databases.*' => [ 'databases.*' => [

View File

@ -8,7 +8,6 @@
use App\Models\Backup; use App\Models\Backup;
use App\Models\Server; use App\Models\Server;
use Illuminate\Auth\Access\AuthorizationException; use Illuminate\Auth\Access\AuthorizationException;
use Illuminate\Support\Facades\Validator;
use Illuminate\Validation\Rule; use Illuminate\Validation\Rule;
use Illuminate\Validation\ValidationException; use Illuminate\Validation\ValidationException;
@ -22,8 +21,6 @@ class ManageBackup
*/ */
public function create(Server $server, array $input): Backup public function create(Server $server, array $input): Backup
{ {
Validator::make($input, self::rules($server, $input))->validate();
$backup = new Backup([ $backup = new Backup([
'type' => 'database', 'type' => 'database',
'server_id' => $server->id, 'server_id' => $server->id,
@ -95,7 +92,7 @@ public static function rules(Server $server, array $input): array
->where('status', DatabaseStatus::READY), ->where('status', DatabaseStatus::READY),
], ],
]; ];
if (isset($input['interval']) && $input['interval'] == 'custom') { if ($input['interval'] == 'custom') {
$rules['custom_interval'] = [ $rules['custom_interval'] = [
'required', 'required',
]; ];

View File

@ -5,10 +5,7 @@
use App\Enums\BackupFileStatus; use App\Enums\BackupFileStatus;
use App\Models\BackupFile; use App\Models\BackupFile;
use App\Models\Database; use App\Models\Database;
use App\Models\Server;
use App\Models\Service; use App\Models\Service;
use Illuminate\Support\Facades\Validator;
use Illuminate\Validation\Rule;
class RestoreBackup class RestoreBackup
{ {
@ -17,8 +14,6 @@ class RestoreBackup
*/ */
public function restore(BackupFile $backupFile, array $input): void public function restore(BackupFile $backupFile, array $input): void
{ {
Validator::make($input, self::rules($backupFile->backup->server))->validate();
/** @var Database $database */ /** @var Database $database */
$database = Database::query()->findOrFail($input['database']); $database = Database::query()->findOrFail($input['database']);
$backupFile->status = BackupFileStatus::RESTORING; $backupFile->status = BackupFileStatus::RESTORING;
@ -28,7 +23,7 @@ public function restore(BackupFile $backupFile, array $input): void
dispatch(function () use ($backupFile, $database): void { dispatch(function () use ($backupFile, $database): void {
/** @var Service $service */ /** @var Service $service */
$service = $database->server->database(); $service = $database->server->database();
/** @var \App\Services\Database\Database $databaseHandler */ /** @var \App\SSH\Services\Database\Database $databaseHandler */
$databaseHandler = $service->handler(); $databaseHandler = $service->handler();
$databaseHandler->restoreBackup($backupFile, $database->name); $databaseHandler->restoreBackup($backupFile, $database->name);
$backupFile->status = BackupFileStatus::RESTORED; $backupFile->status = BackupFileStatus::RESTORED;
@ -43,12 +38,12 @@ public function restore(BackupFile $backupFile, array $input): void
/** /**
* @return array<string, array<string>> * @return array<string, array<string>>
*/ */
public static function rules(Server $server): array public static function rules(): array
{ {
return [ return [
'database' => [ 'database' => [
'required', 'required',
Rule::exists('databases', 'id')->where('server_id', $server->id), 'exists:databases,id',
], ],
]; ];
} }

View File

@ -7,7 +7,7 @@
use App\Models\Backup; use App\Models\Backup;
use App\Models\BackupFile; use App\Models\BackupFile;
use App\Models\Service; use App\Models\Service;
use App\Services\Database\Database; use App\SSH\Services\Database\Database;
use Illuminate\Support\Str; use Illuminate\Support\Str;
class RunBackup class RunBackup

View File

@ -5,15 +5,14 @@
use App\Enums\DatabaseUserStatus; use App\Enums\DatabaseUserStatus;
use App\Models\DatabaseUser; use App\Models\DatabaseUser;
use App\Models\Server; use App\Models\Server;
use App\Models\Service; use App\SSH\Services\Database\Database;
use App\Services\Database\Database;
class SyncDatabaseUsers class SyncDatabaseUsers
{ {
public function sync(Server $server): void public function sync(Server $server): void
{ {
$service = $server->database(); $service = $server->database();
if (! $service instanceof Service) { if (! $service instanceof \App\Models\Service) {
return; return;
} }
/** @var Database $handler */ /** @var Database $handler */

View File

@ -5,14 +5,14 @@
use App\Enums\DatabaseStatus; use App\Enums\DatabaseStatus;
use App\Models\Server; use App\Models\Server;
use App\Models\Service; use App\Models\Service;
use App\Services\Database\Database; use App\SSH\Services\Database\Database;
class SyncDatabases class SyncDatabases
{ {
public function sync(Server $server): void public function sync(Server $server): void
{ {
$service = $server->database(); $service = $server->database();
if (! $service instanceof Service) { if (! $service instanceof \App\Models\Service) {
return; return;
} }
/** @var Database $handler */ /** @var Database $handler */

View File

@ -6,9 +6,8 @@
use App\Models\FirewallRule; use App\Models\FirewallRule;
use App\Models\Server; use App\Models\Server;
use App\Models\Service; use App\Models\Service;
use App\Services\Firewall\Firewall; use App\SSH\Services\Firewall\Firewall;
use Exception; use Exception;
use Illuminate\Support\Facades\Validator;
class ManageRule class ManageRule
{ {
@ -18,8 +17,6 @@ class ManageRule
*/ */
public function create(Server $server, array $input): FirewallRule public function create(Server $server, array $input): FirewallRule
{ {
Validator::make($input, self::rules($input))->validate();
$sourceAny = $input['source_any'] ?? empty($input['source'] ?? null); $sourceAny = $input['source_any'] ?? empty($input['source'] ?? null);
$rule = new FirewallRule([ $rule = new FirewallRule([
'name' => $input['name'], 'name' => $input['name'],
@ -45,8 +42,6 @@ public function create(Server $server, array $input): FirewallRule
*/ */
public function update(FirewallRule $rule, array $input): FirewallRule public function update(FirewallRule $rule, array $input): FirewallRule
{ {
Validator::make($input, self::rules($input))->validate();
$sourceAny = $input['source_any'] ?? empty($input['source'] ?? null); $sourceAny = $input['source_any'] ?? empty($input['source'] ?? null);
$rule->update([ $rule->update([
'name' => $input['name'], 'name' => $input['name'],
@ -98,12 +93,11 @@ protected function applyRule(FirewallRule $rule): void
} }
/** /**
* @param array<string, mixed> $input
* @return array<string, array<string>> * @return array<string, array<string>>
*/ */
public static function rules(array $input): array public static function rules(): array
{ {
$rules = [ return [
'name' => [ 'name' => [
'required', 'required',
'string', 'string',
@ -134,12 +128,5 @@ public static function rules(array $input): array
'max:32', 'max:32',
], ],
]; ];
if (isset($input['source_any']) && $input['source_any'] === false) {
$rules['source'] = ['required', 'ip'];
$rules['mask'] = ['required', 'numeric', 'min:1', 'max:32'];
}
return $rules;
} }
} }

View File

@ -7,9 +7,7 @@
use Illuminate\Contracts\Database\Query\Expression; use Illuminate\Contracts\Database\Query\Expression;
use Illuminate\Support\Collection; use Illuminate\Support\Collection;
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Validator;
use Illuminate\Validation\Rule; use Illuminate\Validation\Rule;
use stdClass;
class GetMetrics class GetMetrics
{ {
@ -19,13 +17,8 @@ class GetMetrics
*/ */
public function filter(Server $server, array $input): Collection public function filter(Server $server, array $input): Collection
{ {
Validator::make($input, self::rules($input))->validate(); if (isset($input['from']) && isset($input['to']) && $input['from'] === $input['to']) {
if (isset($input['from'])) {
$input['from'] = Carbon::parse($input['from'])->format('Y-m-d').' 00:00:00'; $input['from'] = Carbon::parse($input['from'])->format('Y-m-d').' 00:00:00';
}
if (isset($input['to'])) {
$input['to'] = Carbon::parse($input['to'])->format('Y-m-d').' 23:59:59'; $input['to'] = Carbon::parse($input['to'])->format('Y-m-d').' 23:59:59';
} }
@ -71,7 +64,7 @@ private function metrics(
->groupByRaw('date_interval') ->groupByRaw('date_interval')
->orderBy('date_interval') ->orderBy('date_interval')
->get() ->get()
->map(function ($item): stdClass { ->map(function ($item): \stdClass {
$item->date = Carbon::parse($item->date)->format('Y-m-d H:i'); $item->date = Carbon::parse($item->date)->format('Y-m-d H:i');
return $item; return $item;
@ -152,8 +145,8 @@ public static function rules(array $input): array
]; ];
if (isset($input['period']) && $input['period'] === 'custom') { if (isset($input['period']) && $input['period'] === 'custom') {
$rules['from'] = ['required', 'date', 'before_or_equal:to']; $rules['from'] = ['required', 'date', 'before:to'];
$rules['to'] = ['required', 'date', 'after_or_equal:from']; $rules['to'] = ['required', 'date', 'after:from'];
} }
return $rules; return $rules;

View File

@ -4,8 +4,7 @@
use App\Models\Server; use App\Models\Server;
use App\Models\Service; use App\Models\Service;
use App\Services\ServiceInterface; use App\SSH\Services\ServiceInterface;
use Illuminate\Support\Facades\Validator;
class UpdateMetricSettings class UpdateMetricSettings
{ {
@ -14,8 +13,6 @@ class UpdateMetricSettings
*/ */
public function update(Server $server, array $input): void public function update(Server $server, array $input): void
{ {
Validator::make($input, self::rules())->validate();
/** @var Service $service */ /** @var Service $service */
$service = $server->monitoring(); $service = $server->monitoring();
/** @var ServiceInterface $handler */ /** @var ServiceInterface $handler */

View File

@ -6,7 +6,7 @@
use App\Exceptions\SSHError; use App\Exceptions\SSHError;
use App\Models\Server; use App\Models\Server;
use App\Models\Service; use App\Models\Service;
use App\Services\NodeJS\NodeJS; use App\SSH\Services\NodeJS\NodeJS;
use Illuminate\Validation\ValidationException; use Illuminate\Validation\ValidationException;
class ChangeDefaultCli class ChangeDefaultCli

View File

@ -0,0 +1,51 @@
<?php
namespace App\Actions\NodeJS;
use App\Enums\NodeJS;
use App\Enums\ServiceStatus;
use App\Models\Server;
use App\Models\Service;
use Illuminate\Validation\Rule;
class InstallNewNodeJsVersion
{
/**
* @param array<string, mixed> $input
*/
public function install(Server $server, array $input): void
{
$nodejs = new Service([
'server_id' => $server->id,
'type' => 'nodejs',
'type_data' => [],
'name' => 'nodejs',
'version' => $input['version'],
'status' => ServiceStatus::INSTALLING,
'is_default' => false,
]);
$nodejs->save();
dispatch(function () use ($nodejs): void {
$nodejs->handler()->install();
$nodejs->status = ServiceStatus::READY;
$nodejs->save();
})->catch(function () use ($nodejs): void {
$nodejs->delete();
})->onConnection('ssh');
}
/**
* @return array<string, array<string>>
*/
public static function rules(Server $server): array
{
return [
'version' => [
'required',
Rule::in(config('core.nodejs_versions')),
Rule::notIn(array_merge($server->installedNodejsVersions(), [NodeJS::NONE])),
],
];
}
}

View File

@ -0,0 +1,60 @@
<?php
namespace App\Actions\NodeJS;
use App\Enums\ServiceStatus;
use App\Models\Server;
use App\Models\Service;
use Illuminate\Support\Facades\Validator;
use Illuminate\Validation\ValidationException;
class UninstallNodeJS
{
/**
* @param array<string, mixed> $input
*
* @throws ValidationException
*/
public function uninstall(Server $server, array $input): void
{
$this->validate($server, $input);
/** @var Service $nodejs */
$nodejs = $server->nodejs($input['version']);
$nodejs->status = ServiceStatus::UNINSTALLING;
$nodejs->save();
dispatch(function () use ($nodejs): void {
$nodejs->handler()->uninstall();
$nodejs->delete();
})->catch(function () use ($nodejs): void {
$nodejs->status = ServiceStatus::FAILED;
$nodejs->save();
})->onConnection('ssh');
}
/**
* @param array<string, mixed> $input
*
* @throws ValidationException
*/
private function validate(Server $server, array $input): void
{
Validator::make($input, [
'version' => 'required|string',
])->validate();
if (! in_array($input['version'], $server->installedNodejsVersions())) {
throw ValidationException::withMessages(
['version' => __('This version is not installed')]
);
}
$hasSite = $server->sites()->where('nodejs_version', $input['version'])->first();
if ($hasSite) {
throw ValidationException::withMessages(
['version' => __('Cannot uninstall this version because some sites are using it!')]
);
}
}
}

View File

@ -4,9 +4,7 @@
use App\Models\NotificationChannel; use App\Models\NotificationChannel;
use App\Models\User; use App\Models\User;
use App\NotificationChannels\Email;
use Exception; use Exception;
use Illuminate\Support\Facades\Validator;
use Illuminate\Validation\Rule; use Illuminate\Validation\Rule;
use Illuminate\Validation\ValidationException; use Illuminate\Validation\ValidationException;
@ -19,12 +17,10 @@ class AddChannel
*/ */
public function add(User $user, array $input): void public function add(User $user, array $input): void
{ {
Validator::make($input, self::rules($input))->validate();
$channel = new NotificationChannel([ $channel = new NotificationChannel([
'user_id' => $user->id, 'user_id' => $user->id,
'provider' => $input['provider'], 'provider' => $input['provider'],
'label' => $input['name'], 'label' => $input['label'],
'project_id' => isset($input['global']) && $input['global'] ? null : $user->current_project_id, 'project_id' => isset($input['global']) && $input['global'] ? null : $user->current_project_id,
]); ]);
$channel->data = $channel->provider()->createData($input); $channel->data = $channel->provider()->createData($input);
@ -34,7 +30,7 @@ public function add(User $user, array $input): void
if (! $channel->provider()->connect()) { if (! $channel->provider()->connect()) {
$channel->delete(); $channel->delete();
if ($channel->provider === Email::id()) { if ($channel->provider === \App\Enums\NotificationChannel::EMAIL) {
throw ValidationException::withMessages([ throw ValidationException::withMessages([
'email' => __('Could not connect! Make sure you configured `.env` file correctly.'), 'email' => __('Could not connect! Make sure you configured `.env` file correctly.'),
]); ]);
@ -65,9 +61,9 @@ public static function rules(array $input): array
$rules = [ $rules = [
'provider' => [ 'provider' => [
'required', 'required',
Rule::in(array_keys(config('notification-channel.providers'))), Rule::in(config('core.notification_channels_providers')),
], ],
'name' => 'required', 'label' => 'required',
]; ];
return array_merge($rules, self::providerRules($input)); return array_merge($rules, self::providerRules($input));

View File

@ -13,7 +13,7 @@ class EditChannel
public function edit(NotificationChannel $notificationChannel, User $user, array $input): void public function edit(NotificationChannel $notificationChannel, User $user, array $input): void
{ {
$notificationChannel->fill([ $notificationChannel->fill([
'label' => $input['name'], 'label' => $input['label'],
'project_id' => isset($input['global']) && $input['global'] ? null : $user->current_project_id, 'project_id' => isset($input['global']) && $input['global'] ? null : $user->current_project_id,
]); ]);
$notificationChannel->save(); $notificationChannel->save();
@ -26,7 +26,7 @@ public function edit(NotificationChannel $notificationChannel, User $user, array
public static function rules(array $input): array public static function rules(array $input): array
{ {
return [ return [
'name' => 'required', 'label' => 'required',
]; ];
} }
} }

View File

@ -6,7 +6,7 @@
use App\Exceptions\SSHError; use App\Exceptions\SSHError;
use App\Models\Server; use App\Models\Server;
use App\Models\Service; use App\Models\Service;
use App\Services\PHP\PHP; use App\SSH\Services\PHP\PHP;
use Illuminate\Validation\ValidationException; use Illuminate\Validation\ValidationException;
class ChangeDefaultCli class ChangeDefaultCli
@ -21,13 +21,6 @@ public function change(Server $server, array $input): void
$this->validate($server, $input); $this->validate($server, $input);
/** @var Service $service */ /** @var Service $service */
$service = $server->php($input['version']); $service = $server->php($input['version']);
if ($service->is_default) {
throw ValidationException::withMessages(
['version' => __('This version is already the default CLI')]
);
}
/** @var PHP $handler */ /** @var PHP $handler */
$handler = $service->handler(); $handler = $service->handler();
$handler->setDefaultCli(); $handler->setDefaultCli();

View File

@ -5,7 +5,7 @@
use App\Enums\PHPIniType; use App\Enums\PHPIniType;
use App\Models\Server; use App\Models\Server;
use App\Models\Service; use App\Models\Service;
use App\Services\PHP\PHP; use App\SSH\Services\PHP\PHP;
use Illuminate\Support\Facades\Validator; use Illuminate\Support\Facades\Validator;
use Illuminate\Validation\Rule; use Illuminate\Validation\Rule;
use Illuminate\Validation\ValidationException; use Illuminate\Validation\ValidationException;

View File

@ -0,0 +1,54 @@
<?php
namespace App\Actions\PHP;
use App\Enums\PHP;
use App\Enums\ServiceStatus;
use App\Models\Server;
use App\Models\Service;
use Illuminate\Validation\Rule;
class InstallNewPHP
{
/**
* @param array<string, mixed> $input
*/
public function install(Server $server, array $input): void
{
$php = new Service([
'server_id' => $server->id,
'type' => 'php',
'type_data' => [
'extensions' => [],
'settings' => config('core.php_settings'),
],
'name' => 'php',
'version' => $input['version'],
'status' => ServiceStatus::INSTALLING,
'is_default' => false,
]);
$php->save();
dispatch(function () use ($php): void {
$php->handler()->install();
$php->status = ServiceStatus::READY;
$php->save();
})->catch(function () use ($php): void {
$php->delete();
})->onConnection('ssh');
}
/**
* @return array<string, array<string>>
*/
public static function rules(Server $server): array
{
return [
'version' => [
'required',
Rule::in(config('core.php_versions')),
Rule::notIn(array_merge($server->installedPHPVersions(), [PHP::NONE])),
],
];
}
}

View File

@ -4,8 +4,7 @@
use App\Models\Server; use App\Models\Server;
use App\Models\Service; use App\Models\Service;
use App\Services\PHP\PHP; use App\SSH\Services\PHP\PHP;
use Illuminate\Support\Facades\Validator;
use Illuminate\Validation\Rule; use Illuminate\Validation\Rule;
use Illuminate\Validation\ValidationException; use Illuminate\Validation\ValidationException;
@ -13,11 +12,11 @@ class InstallPHPExtension
{ {
/** /**
* @param array<string, mixed> $input * @param array<string, mixed> $input
*
* @throws ValidationException
*/ */
public function install(Server $server, array $input): Service public function install(Server $server, array $input): Service
{ {
Validator::make($input, self::rules($server))->validate();
/** @var Service $service */ /** @var Service $service */
$service = $server->php($input['version']); $service = $server->php($input['version']);
@ -57,7 +56,7 @@ public static function rules(Server $server): array
return [ return [
'extension' => [ 'extension' => [
'required', 'required',
Rule::in(config('service.services.php.data.extensions', []) ?? []), Rule::in(config('core.php_extensions')),
], ],
'version' => [ 'version' => [
'required', 'required',

View File

@ -0,0 +1,60 @@
<?php
namespace App\Actions\PHP;
use App\Enums\ServiceStatus;
use App\Models\Server;
use App\Models\Service;
use Illuminate\Support\Facades\Validator;
use Illuminate\Validation\ValidationException;
class UninstallPHP
{
/**
* @param array<string, mixed> $input
*
* @throws ValidationException
*/
public function uninstall(Server $server, array $input): void
{
$this->validate($server, $input);
/** @var Service $php */
$php = $server->php($input['version']);
$php->status = ServiceStatus::UNINSTALLING;
$php->save();
dispatch(function () use ($php): void {
$php->handler()->uninstall();
$php->delete();
})->catch(function () use ($php): void {
$php->status = ServiceStatus::FAILED;
$php->save();
})->onConnection('ssh');
}
/**
* @param array<string, mixed> $input
*
* @throws ValidationException
*/
private function validate(Server $server, array $input): void
{
Validator::make($input, [
'version' => 'required|string',
])->validate();
if (! in_array($input['version'], $server->installedPHPVersions())) {
throw ValidationException::withMessages(
['version' => __('This version is not installed')]
);
}
$hasSite = $server->sites()->where('php_version', $input['version'])->first();
if ($hasSite) {
throw ValidationException::withMessages(
['version' => __('Cannot uninstall this version because some sites are using it!')]
);
}
}
}

View File

@ -7,7 +7,6 @@
use App\Models\Service; use App\Models\Service;
use Illuminate\Filesystem\FilesystemAdapter; use Illuminate\Filesystem\FilesystemAdapter;
use Illuminate\Support\Facades\Storage; use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Facades\Validator;
use Illuminate\Support\Str; use Illuminate\Support\Str;
use Illuminate\Validation\Rule; use Illuminate\Validation\Rule;
use Illuminate\Validation\ValidationException; use Illuminate\Validation\ValidationException;
@ -22,8 +21,6 @@ class UpdatePHPIni
*/ */
public function update(Server $server, array $input): void public function update(Server $server, array $input): void
{ {
Validator::make($input, self::rules($server))->validate();
/** @var Service $service */ /** @var Service $service */
$service = $server->php($input['version']); $service = $server->php($input['version']);

View File

@ -5,7 +5,6 @@
use App\Models\Project; use App\Models\Project;
use App\Models\User; use App\Models\User;
use Illuminate\Database\Query\Builder; use Illuminate\Database\Query\Builder;
use Illuminate\Support\Facades\Validator;
use Illuminate\Validation\Rule; use Illuminate\Validation\Rule;
class AddUser class AddUser
@ -15,8 +14,6 @@ class AddUser
*/ */
public function add(Project $project, array $input): void public function add(Project $project, array $input): void
{ {
Validator::make($input, self::rules($project))->validate();
/** @var User $user */ /** @var User $user */
$user = User::query()->findOrFail($input['user']); $user = User::query()->findOrFail($input['user']);

View File

@ -13,8 +13,6 @@ class CreateProject
*/ */
public function create(User $user, array $input): Project public function create(User $user, array $input): Project
{ {
Validator::make($input, self::rules())->validate();
if (isset($input['name'])) { if (isset($input['name'])) {
$input['name'] = strtolower((string) $input['name']); $input['name'] = strtolower((string) $input['name']);
} }

View File

@ -4,29 +4,21 @@
use App\Models\Project; use App\Models\Project;
use App\Models\User; use App\Models\User;
use Illuminate\Support\Facades\Validator;
use Illuminate\Validation\ValidationException; use Illuminate\Validation\ValidationException;
class DeleteProject class DeleteProject
{ {
/** public function delete(User $user, Project $project): void
* @param array<string, mixed> $input
*/
public function delete(User $user, Project $project, array $input): void
{ {
Validator::make($input, [
'name' => 'required',
])->validate();
if ($user->projects()->count() === 1) { if ($user->projects()->count() === 1) {
throw ValidationException::withMessages([ throw ValidationException::withMessages([
'name' => __('Cannot delete the last project.'), 'project' => __('Cannot delete the last project.'),
]); ]);
} }
if ($user->current_project_id == $project->id) { if ($user->current_project_id == $project->id) {
throw ValidationException::withMessages([ throw ValidationException::withMessages([
'name' => __('Cannot delete your current project.'), 'project' => __('Cannot delete your current project.'),
]); ]);
} }

View File

@ -6,8 +6,7 @@
use App\Models\Redirect; use App\Models\Redirect;
use App\Models\Service; use App\Models\Service;
use App\Models\Site; use App\Models\Site;
use App\Services\Webserver\Webserver; use App\SSH\Services\Webserver\Webserver;
use Illuminate\Support\Facades\Validator;
use Illuminate\Validation\Rule; use Illuminate\Validation\Rule;
class CreateRedirect class CreateRedirect
@ -17,8 +16,6 @@ class CreateRedirect
*/ */
public function create(Site $site, array $input): Redirect public function create(Site $site, array $input): Redirect
{ {
Validator::make($input, self::rules($site))->validate();
$redirect = new Redirect; $redirect = new Redirect;
$redirect->site_id = $site->id; $redirect->site_id = $site->id;
@ -33,9 +30,7 @@ public function create(Site $site, array $input): Redirect
$service = $site->server->webserver(); $service = $site->server->webserver();
/** @var Webserver $webserver */ /** @var Webserver $webserver */
$webserver = $service->handler(); $webserver = $service->handler();
$webserver->updateVHost($site, regenerate: [ $webserver->updateVHost($site);
'redirects',
]);
$redirect->status = RedirectStatus::READY; $redirect->status = RedirectStatus::READY;
$redirect->save(); $redirect->save();
}) })

View File

@ -6,7 +6,7 @@
use App\Models\Redirect; use App\Models\Redirect;
use App\Models\Service; use App\Models\Service;
use App\Models\Site; use App\Models\Site;
use App\Services\Webserver\Webserver; use App\SSH\Services\Webserver\Webserver;
class DeleteRedirect class DeleteRedirect
{ {
@ -20,9 +20,7 @@ public function delete(Site $site, Redirect $redirect): void
$service = $site->server->webserver(); $service = $site->server->webserver();
/** @var Webserver $webserver */ /** @var Webserver $webserver */
$webserver = $service->handler(); $webserver = $service->handler();
$webserver->updateVHost($site, regenerate: [ $webserver->updateVHost($site);
'redirects',
]);
$redirect->delete(); $redirect->delete();
})->catch(function () use ($redirect): void { })->catch(function () use ($redirect): void {
$redirect->status = RedirectStatus::FAILED; $redirect->status = RedirectStatus::FAILED;

View File

@ -11,8 +11,6 @@ public function activate(Ssl $ssl): void
$ssl->site->ssls()->update(['is_active' => false]); $ssl->site->ssls()->update(['is_active' => false]);
$ssl->is_active = true; $ssl->is_active = true;
$ssl->save(); $ssl->save();
$ssl->site->webserver()->updateVHost($ssl->site, regenerate: [ $ssl->site->webserver()->updateVHost($ssl->site);
'port',
]);
} }
} }

View File

@ -8,8 +8,7 @@
use App\Models\Service; use App\Models\Service;
use App\Models\Site; use App\Models\Site;
use App\Models\Ssl; use App\Models\Ssl;
use App\Services\Webserver\Webserver; use App\SSH\Services\Webserver\Webserver;
use Illuminate\Support\Facades\Validator;
use Illuminate\Validation\Rule; use Illuminate\Validation\Rule;
use Illuminate\Validation\ValidationException; use Illuminate\Validation\ValidationException;
@ -22,8 +21,6 @@ class CreateSSL
*/ */
public function create(Site $site, array $input): void public function create(Site $site, array $input): void
{ {
Validator::make($input, self::rules($input))->validate();
$site->ssls() $site->ssls()
->where('type', $input['type']) ->where('type', $input['type'])
->where('status', SslStatus::FAILED) ->where('status', SslStatus::FAILED)
@ -54,9 +51,7 @@ public function create(Site $site, array $input): void
$webserver->setupSSL($ssl); $webserver->setupSSL($ssl);
$ssl->status = SslStatus::CREATED; $ssl->status = SslStatus::CREATED;
$ssl->save(); $ssl->save();
$webserver->updateVHost($site, regenerate: [ $webserver->updateVHost($site);
'port',
]);
})->catch(function () use ($ssl): void { })->catch(function () use ($ssl): void {
$ssl->status = SslStatus::FAILED; $ssl->status = SslStatus::FAILED;
$ssl->save(); $ssl->save();

View File

@ -1,17 +0,0 @@
<?php
namespace App\Actions\SSL;
use App\Models\Ssl;
class DeactivateSSL
{
public function deactivate(Ssl $ssl): void
{
$ssl->is_active = false;
$ssl->save();
$ssl->site->webserver()->updateVHost($ssl->site, regenerate: [
'port',
]);
}
}

View File

@ -5,7 +5,7 @@
use App\Enums\SslStatus; use App\Enums\SslStatus;
use App\Models\Service; use App\Models\Service;
use App\Models\Ssl; use App\Models\Ssl;
use App\Services\Webserver\Webserver; use App\SSH\Services\Webserver\Webserver;
class DeleteSSL class DeleteSSL
{ {

View File

@ -4,7 +4,6 @@
use App\Models\Script; use App\Models\Script;
use App\Models\User; use App\Models\User;
use Illuminate\Support\Facades\Validator;
class CreateScript class CreateScript
{ {
@ -13,8 +12,6 @@ class CreateScript
*/ */
public function create(User $user, array $input): Script public function create(User $user, array $input): Script
{ {
Validator::make($input, self::rules())->validate();
$script = new Script([ $script = new Script([
'user_id' => $user->id, 'user_id' => $user->id,
'name' => $input['name'], 'name' => $input['name'],

View File

@ -7,8 +7,6 @@
use App\Models\ScriptExecution; use App\Models\ScriptExecution;
use App\Models\Server; use App\Models\Server;
use App\Models\ServerLog; use App\Models\ServerLog;
use App\Models\User;
use Illuminate\Support\Facades\Validator;
use Illuminate\Validation\Rule; use Illuminate\Validation\Rule;
class ExecuteScript class ExecuteScript
@ -16,44 +14,24 @@ class ExecuteScript
/** /**
* @param array<string, mixed> $input * @param array<string, mixed> $input
*/ */
public function execute(Script $script, User $user, array $input): ScriptExecution public function execute(Script $script, array $input): ScriptExecution
{ {
Validator::make($input, self::rules($script, $input))->validate();
$variables = [];
foreach ($script->getVariables() as $variable) {
if (array_key_exists($variable, $input)) {
$variables[$variable] = $input[$variable] ?? '';
}
}
/** @var Server $server */
$server = Server::query()->findOrFail($input['server']);
if (! $user->can('update', $server)) {
abort(403, 'You do not have permission to execute scripts on this server.');
}
$execution = new ScriptExecution([ $execution = new ScriptExecution([
'script_id' => $script->id, 'script_id' => $script->id,
'server_id' => $input['server'], 'server_id' => $input['server'],
'user' => $input['user'], 'user' => $input['user'],
'variables' => $variables, 'variables' => $input['variables'] ?? [],
'status' => ScriptExecutionStatus::EXECUTING, 'status' => ScriptExecutionStatus::EXECUTING,
]); ]);
$execution->save(); $execution->save();
$log = ServerLog::newLog($execution->server, 'script-'.$script->id.'-'.strtotime('now')); dispatch(function () use ($execution, $script): void {
$log->save();
$execution->server_log_id = $log->id;
$execution->save();
dispatch(function () use ($execution, $log): void {
/** @var Server $server */ /** @var Server $server */
$server = $execution->server; $server = $execution->server;
$content = $execution->getContent(); $content = $execution->getContent();
$log = ServerLog::newLog($server, 'script-'.$script->id.'-'.strtotime('now'));
$log->save();
$execution->server_log_id = $log->id; $execution->server_log_id = $log->id;
$execution->save(); $execution->save();
$server->os()->runScript('~/', $content, $log, $execution->user); $server->os()->runScript('~/', $content, $log, $execution->user);
@ -71,7 +49,7 @@ public function execute(Script $script, User $user, array $input): ScriptExecuti
* @param array<string, mixed> $input * @param array<string, mixed> $input
* @return array<string, mixed> * @return array<string, mixed>
*/ */
public static function rules(Script $script, array $input): array public static function rules(array $input): array
{ {
$users = ['root']; $users = ['root'];
if (isset($input['server'])) { if (isset($input['server'])) {
@ -80,7 +58,7 @@ public static function rules(Script $script, array $input): array
$users = $server->getSshUsers(); $users = $server->getSshUsers();
} }
$rules = [ return [
'server' => [ 'server' => [
'required', 'required',
Rule::exists('servers', 'id'), Rule::exists('servers', 'id'),
@ -89,16 +67,12 @@ public static function rules(Script $script, array $input): array
'required', 'required',
Rule::in($users), Rule::in($users),
], ],
]; 'variables' => 'array',
'variables.*' => [
foreach ($script->getVariables() as $variable) {
$rules[$variable] = [
'required', 'required',
'string', 'string',
'max:255', 'max:255',
],
]; ];
} }
return $rules;
}
} }

View File

@ -3,18 +3,20 @@
namespace App\Actions\Server; namespace App\Actions\Server;
use App\Enums\FirewallRuleStatus; use App\Enums\FirewallRuleStatus;
use App\Enums\ServerProvider;
use App\Enums\ServerStatus; use App\Enums\ServerStatus;
use App\Enums\ServerType;
use App\Exceptions\SSHConnectionError;
use App\Facades\Notifier; use App\Facades\Notifier;
use App\Models\Project; use App\Models\Project;
use App\Models\Server; use App\Models\Server;
use App\Models\User; use App\Models\User;
use App\Notifications\ServerInstallationFailed; use App\Notifications\ServerInstallationFailed;
use App\ServerProviders\Custom; use App\Notifications\ServerInstallationSucceed;
use App\ValidationRules\RestrictedIPAddressesRule; use App\ValidationRules\RestrictedIPAddressesRule;
use Exception; use Exception;
use Illuminate\Database\Query\Builder; use Illuminate\Database\Query\Builder;
use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\Validator;
use Illuminate\Support\Str; use Illuminate\Support\Str;
use Illuminate\Validation\Rule; use Illuminate\Validation\Rule;
use Illuminate\Validation\ValidationException; use Illuminate\Validation\ValidationException;
@ -22,23 +24,20 @@
class CreateServer class CreateServer
{ {
protected Server $server;
/** /**
* @param array<string, mixed> $input * @param array<string, mixed> $input
*/ */
public function create(User $creator, Project $project, array $input): Server public function create(User $creator, Project $project, array $input): Server
{ {
Validator::make($input, self::rules($project, $input))->validate(); $server = new Server([
$this->server = new Server([
'project_id' => $project->id, 'project_id' => $project->id,
'user_id' => $creator->id, 'user_id' => $creator->id,
'name' => $input['name'], 'name' => $input['name'],
'ssh_user' => data_get(config('server-provider.providers'), $input['provider'].'.default_user') ?? 'root', 'ssh_user' => config('core.server_providers_default_user')[$input['provider']][$input['os']],
'ip' => $input['ip'] ?? '', 'ip' => $input['ip'] ?? '',
'port' => $input['port'] ?? 22, 'port' => $input['port'] ?? 22,
'os' => $input['os'], 'os' => $input['os'],
'type' => ServerType::REGULAR,
'provider' => $input['provider'], 'provider' => $input['provider'],
'authentication' => [ 'authentication' => [
'user' => config('core.ssh_user'), 'user' => config('core.ssh_user'),
@ -50,42 +49,32 @@ public function create(User $creator, Project $project, array $input): Server
]); ]);
try { try {
if ($this->server->provider != 'custom') { if ($server->provider != 'custom') {
$this->server->provider_id = $input['server_provider']; $server->provider_id = $input['server_provider'];
} }
$this->server->provider_data = $this->server->provider()->data($input); $server->type_data = $server->type()->data($input);
$server->provider_data = $server->provider()->data($input);
// save // save
$this->server->save(); $server->save();
// create firewall rules // create firewall rules
$this->createFirewallRules($this->server); $this->createFirewallRules($server);
// create instance // create instance
$this->server->provider()->create(); $server->provider()->create();
// create services // add services
$this->createServices(); $server->type()->createServices($input);
// install server // install server
dispatch(function (): void { $this->install($server);
app(InstallServer::class)->run($this->server);
})
->catch(function (Throwable $e): void {
$this->server->update([
'status' => ServerStatus::INSTALLATION_FAILED,
]);
Notifier::send($this->server, new ServerInstallationFailed($this->server));
Log::error('server-installation-error', [
'error' => (string) $e,
]);
})
->onConnection('ssh');
return $this->server; return $server;
} catch (Exception $e) { } catch (Exception $e) {
$this->server->delete(); $server->delete();
throw ValidationException::withMessages([ throw ValidationException::withMessages([
'provider' => $e->getMessage(), 'provider' => $e->getMessage(),
@ -93,6 +82,41 @@ public function create(User $creator, Project $project, array $input): Server
} }
} }
private function install(Server $server): void
{
dispatch(function () use ($server): void {
$maxWait = 180;
while ($maxWait > 0) {
sleep(10);
$maxWait -= 10;
if (! $server->provider()->isRunning()) {
continue;
}
try {
$server->ssh()->connect();
break;
} catch (SSHConnectionError) {
// ignore
}
}
$server->type()->install();
$server->update([
'status' => ServerStatus::READY,
]);
Notifier::send($server, new ServerInstallationSucceed($server));
})
->catch(function (Throwable $e) use ($server): void {
$server->update([
'status' => ServerStatus::INSTALLATION_FAILED,
]);
Notifier::send($server, new ServerInstallationFailed($server));
Log::error('server-installation-error', [
'error' => (string) $e,
]);
})
->onConnection('ssh');
}
/** /**
* @param array<string, mixed> $input * @param array<string, mixed> $input
* @return array<string, mixed> * @return array<string, mixed>
@ -102,7 +126,7 @@ public static function rules(Project $project, array $input): array
$rules = [ $rules = [
'provider' => [ 'provider' => [
'required', 'required',
Rule::in(array_keys(config('server-provider.providers'))), Rule::in(config('core.server_providers')),
], ],
'name' => [ 'name' => [
'required', 'required',
@ -112,7 +136,7 @@ public static function rules(Project $project, array $input): array
Rule::in(config('core.operating_systems')), Rule::in(config('core.operating_systems')),
], ],
'server_provider' => [ 'server_provider' => [
Rule::when(fn (): bool => isset($input['provider']) && $input['provider'] != Custom::id(), [ Rule::when(fn (): bool => isset($input['provider']) && $input['provider'] != ServerProvider::CUSTOM, [
'required', 'required',
Rule::exists('server_providers', 'id')->where(function (Builder $query) use ($project): void { Rule::exists('server_providers', 'id')->where(function (Builder $query) use ($project): void {
$query->where('project_id', $project->id) $query->where('project_id', $project->id)
@ -121,13 +145,13 @@ public static function rules(Project $project, array $input): array
]), ]),
], ],
'ip' => [ 'ip' => [
Rule::when(fn (): bool => isset($input['provider']) && $input['provider'] == Custom::id(), [ Rule::when(fn (): bool => isset($input['provider']) && $input['provider'] == ServerProvider::CUSTOM, [
'required', 'required',
new RestrictedIPAddressesRule, new RestrictedIPAddressesRule,
]), ]),
], ],
'port' => [ 'port' => [
Rule::when(fn (): bool => isset($input['provider']) && $input['provider'] == Custom::id(), [ Rule::when(fn (): bool => isset($input['provider']) && $input['provider'] == ServerProvider::CUSTOM, [
'required', 'required',
'numeric', 'numeric',
'min:1', 'min:1',
@ -136,7 +160,22 @@ public static function rules(Project $project, array $input): array
], ],
]; ];
return array_merge($rules, self::providerRules($input)); return array_merge($rules, self::typeRules($input), self::providerRules($input));
}
/**
* @param array<string, mixed> $input
* @return array<string, array<string>>
*/
private static function typeRules(array $input): array
{
if (! isset($input['type']) || ! in_array($input['type'], config('core.server_types'))) {
return [];
}
$server = new Server(['type' => $input['type']]);
return $server->type()->createRules($input);
} }
/** /**
@ -148,8 +187,8 @@ private static function providerRules(array $input): array
if ( if (
! isset($input['provider']) || ! isset($input['provider']) ||
! isset($input['server_provider']) || ! isset($input['server_provider']) ||
! config('server-provider.providers.'.$input['provider']) || ! in_array($input['provider'], config('core.server_providers')) ||
$input['provider'] == Custom::id() $input['provider'] == ServerProvider::CUSTOM
) { ) {
return []; return [];
} }
@ -194,49 +233,4 @@ public function createFirewallRules(Server $server): void
], ],
]); ]);
} }
private function createServices(): void
{
$this->server->services()->forceDelete();
$this->addSupervisor();
$this->addRedis();
$this->addUfw();
$this->addMonitoring();
}
private function addSupervisor(): void
{
$this->server->services()->create([
'type' => 'process_manager',
'name' => 'supervisor',
'version' => 'latest',
]);
}
private function addRedis(): void
{
$this->server->services()->create([
'type' => 'memory_database',
'name' => 'redis',
'version' => 'latest',
]);
}
private function addUfw(): void
{
$this->server->services()->create([
'type' => 'firewall',
'name' => 'ufw',
'version' => 'latest',
]);
}
private function addMonitoring(): void
{
$this->server->services()->create([
'type' => 'monitoring',
'name' => 'remote-monitor',
'version' => 'latest',
]);
}
} }

View File

@ -1,12 +1,11 @@
<?php <?php
namespace App\Actions\ServerLog; namespace App\Actions\Server;
use App\Models\Server; use App\Models\Server;
use Illuminate\Support\Facades\Validator;
use Illuminate\Validation\ValidationException; use Illuminate\Validation\ValidationException;
class CreateLog class CreateServerLog
{ {
/** /**
* @param array<string, mixed> $input * @param array<string, mixed> $input
@ -15,8 +14,6 @@ class CreateLog
*/ */
public function create(Server $server, array $input): void public function create(Server $server, array $input): void
{ {
Validator::make($input, self::rules())->validate();
$server->logs()->create([ $server->logs()->create([
'is_remote' => true, 'is_remote' => true,
'name' => $input['path'], 'name' => $input['path'],

View File

@ -4,7 +4,6 @@
use App\Models\Server; use App\Models\Server;
use App\ValidationRules\RestrictedIPAddressesRule; use App\ValidationRules\RestrictedIPAddressesRule;
use Illuminate\Support\Facades\Validator;
use Illuminate\Validation\Rule; use Illuminate\Validation\Rule;
use Illuminate\Validation\ValidationException; use Illuminate\Validation\ValidationException;
@ -18,8 +17,6 @@ class EditServer
*/ */
public function edit(Server $server, array $input): Server public function edit(Server $server, array $input): Server
{ {
Validator::make($input, self::rules($server))->validate();
$checkConnection = false; $checkConnection = false;
if (isset($input['name'])) { if (isset($input['name'])) {
$server->name = $input['name']; $server->name = $input['name'];
@ -65,7 +62,6 @@ public static function rules(Server $server): array
Rule::unique('servers')->where('project_id', $server->project_id)->ignore($server->id), Rule::unique('servers')->where('project_id', $server->project_id)->ignore($server->id),
], ],
'local_ip' => [ 'local_ip' => [
'nullable',
'string', 'string',
Rule::unique('servers')->where('project_id', $server->project_id)->ignore($server->id), Rule::unique('servers')->where('project_id', $server->project_id)->ignore($server->id),
], ],

View File

@ -1,34 +0,0 @@
<?php
namespace App\Actions\ServerLog;
use App\Models\ServerLog;
use Illuminate\Support\Facades\Validator;
use Illuminate\Validation\ValidationException;
class UpdateLog
{
/**
* @param array<string, mixed> $input
*
* @throws ValidationException
*/
public function update(ServerLog $serverLog, array $input): void
{
Validator::make($input, self::rules())->validate();
$serverLog->update([
'name' => $input['path'],
]);
}
/**
* @return array<string, string>
*/
public static function rules(): array
{
return [
'path' => 'required',
];
}
}

View File

@ -8,7 +8,6 @@
use App\Models\User; use App\Models\User;
use App\ServerProviders\ServerProvider as ServerProviderContract; use App\ServerProviders\ServerProvider as ServerProviderContract;
use Exception; use Exception;
use Illuminate\Support\Facades\Validator;
use Illuminate\Validation\Rule; use Illuminate\Validation\Rule;
use Illuminate\Validation\ValidationException; use Illuminate\Validation\ValidationException;
@ -21,8 +20,6 @@ class CreateServerProvider
*/ */
public function create(User $user, Project $project, array $input): ServerProvider public function create(User $user, Project $project, array $input): ServerProvider
{ {
Validator::make($input, self::rules($input))->validate();
$provider = self::getProvider($input['provider']); $provider = self::getProvider($input['provider']);
try { try {
@ -48,7 +45,7 @@ public function create(User $user, Project $project, array $input): ServerProvid
private static function getProvider(string $name): ServerProviderContract private static function getProvider(string $name): ServerProviderContract
{ {
$providerClass = config('server-provider.providers.'.$name.'.handler'); $providerClass = config('core.server_providers_class.'.$name);
/** @var ServerProviderContract $provider */ /** @var ServerProviderContract $provider */
$provider = new $providerClass(new ServerProvider, new Server); $provider = new $providerClass(new ServerProvider, new Server);
@ -67,7 +64,7 @@ public static function rules(array $input): array
], ],
'provider' => [ 'provider' => [
'required', 'required',
Rule::in(array_keys(config('server-provider.providers'))), Rule::in(config('core.server_providers')),
Rule::notIn('custom'), Rule::notIn('custom'),
], ],
]; ];

View File

@ -4,7 +4,6 @@
use App\Models\Project; use App\Models\Project;
use App\Models\ServerProvider; use App\Models\ServerProvider;
use Illuminate\Support\Facades\Validator;
class EditServerProvider class EditServerProvider
{ {
@ -13,8 +12,6 @@ class EditServerProvider
*/ */
public function edit(ServerProvider $serverProvider, Project $project, array $input): ServerProvider public function edit(ServerProvider $serverProvider, Project $project, array $input): ServerProvider
{ {
Validator::make($input, self::rules())->validate();
$serverProvider->profile = $input['name']; $serverProvider->profile = $input['name'];
$serverProvider->project_id = isset($input['global']) && $input['global'] ? null : $project->id; $serverProvider->project_id = isset($input['global']) && $input['global'] ? null : $project->id;

View File

@ -15,14 +15,7 @@ class Install
*/ */
public function install(Server $server, array $input): Service public function install(Server $server, array $input): Service
{ {
Validator::make($input, self::rules($input))->validate(); $input['type'] = config('core.service_types')[$input['name']];
$name = $input['name'];
$input['type'] = config("service.services.$name.type");
if (! $input['type']) {
throw new \InvalidArgumentException("Service type is not defined for $name");
}
$service = new Service([ $service = new Service([
'server_id' => $server->id, 'server_id' => $server->id,
@ -31,7 +24,6 @@ public function install(Server $server, array $input): Service
'version' => $input['version'], 'version' => $input['version'],
'status' => ServiceStatus::INSTALLING, 'status' => ServiceStatus::INSTALLING,
]); ]);
$service->is_default = ! $server->defaultService($input['type']);
Validator::make($input, $service->handler()->creationRules($input))->validate(); Validator::make($input, $service->handler()->creationRules($input))->validate();
@ -60,14 +52,14 @@ public static function rules(array $input): array
$rules = [ $rules = [
'name' => [ 'name' => [
'required', 'required',
Rule::in(array_keys(config('service.services'))), Rule::in(array_keys(config('core.service_types'))),
], ],
'version' => [ 'version' => [
'required', 'required',
], ],
]; ];
if (isset($input['name'])) { if (isset($input['name'])) {
$rules['version'][] = Rule::in(config("service.services.{$input['name']}.versions", [])); $rules['version'][] = Rule::in(config("core.service_versions.{$input['name']}"));
} }
return $rules; return $rules;

View File

@ -4,17 +4,15 @@
use App\Enums\ServiceStatus; use App\Enums\ServiceStatus;
use App\Models\Service; use App\Models\Service;
use Illuminate\Validation\ValidationException;
class Manage class Manage
{ {
public function start(Service $service): void public function start(Service $service): void
{ {
$this->validate($service);
$service->status = ServiceStatus::STARTING; $service->status = ServiceStatus::STARTING;
$service->save(); $service->save();
dispatch(function () use ($service): void { dispatch(function () use ($service): void {
$status = $service->server->systemd()->start($service->handler()->unit()); $status = $service->server->systemd()->start($service->unit);
if (str($status)->contains('Active: active')) { if (str($status)->contains('Active: active')) {
$service->status = ServiceStatus::READY; $service->status = ServiceStatus::READY;
} else { } else {
@ -26,11 +24,10 @@ public function start(Service $service): void
public function stop(Service $service): void public function stop(Service $service): void
{ {
$this->validate($service);
$service->status = ServiceStatus::STOPPING; $service->status = ServiceStatus::STOPPING;
$service->save(); $service->save();
dispatch(function () use ($service): void { dispatch(function () use ($service): void {
$status = $service->server->systemd()->stop($service->handler()->unit()); $status = $service->server->systemd()->stop($service->unit);
if (str($status)->contains('Active: inactive')) { if (str($status)->contains('Active: inactive')) {
$service->status = ServiceStatus::STOPPED; $service->status = ServiceStatus::STOPPED;
} else { } else {
@ -42,11 +39,10 @@ public function stop(Service $service): void
public function restart(Service $service): void public function restart(Service $service): void
{ {
$this->validate($service);
$service->status = ServiceStatus::RESTARTING; $service->status = ServiceStatus::RESTARTING;
$service->save(); $service->save();
dispatch(function () use ($service): void { dispatch(function () use ($service): void {
$status = $service->server->systemd()->restart($service->handler()->unit()); $status = $service->server->systemd()->restart($service->unit);
if (str($status)->contains('Active: active')) { if (str($status)->contains('Active: active')) {
$service->status = ServiceStatus::READY; $service->status = ServiceStatus::READY;
} else { } else {
@ -58,11 +54,10 @@ public function restart(Service $service): void
public function enable(Service $service): void public function enable(Service $service): void
{ {
$this->validate($service);
$service->status = ServiceStatus::ENABLING; $service->status = ServiceStatus::ENABLING;
$service->save(); $service->save();
dispatch(function () use ($service): void { dispatch(function () use ($service): void {
$status = $service->server->systemd()->enable($service->handler()->unit()); $status = $service->server->systemd()->enable($service->unit);
if (str($status)->contains('Active: active')) { if (str($status)->contains('Active: active')) {
$service->status = ServiceStatus::READY; $service->status = ServiceStatus::READY;
} else { } else {
@ -74,11 +69,10 @@ public function enable(Service $service): void
public function disable(Service $service): void public function disable(Service $service): void
{ {
$this->validate($service);
$service->status = ServiceStatus::DISABLING; $service->status = ServiceStatus::DISABLING;
$service->save(); $service->save();
dispatch(function () use ($service): void { dispatch(function () use ($service): void {
$status = $service->server->systemd()->disable($service->handler()->unit()); $status = $service->server->systemd()->disable($service->unit);
if (str($status)->contains('Active: inactive')) { if (str($status)->contains('Active: inactive')) {
$service->status = ServiceStatus::DISABLED; $service->status = ServiceStatus::DISABLED;
} else { } else {
@ -87,13 +81,4 @@ public function disable(Service $service): void
$service->save(); $service->save();
})->onConnection('ssh'); })->onConnection('ssh');
} }
private function validate(Service $service): void
{
if (! $service->handler()->unit()) {
throw ValidationException::withMessages([
'service' => __('This service does not have a systemd unit configured.'),
]);
}
}
} }

View File

@ -4,7 +4,6 @@
use App\Models\Command; use App\Models\Command;
use App\Models\Site; use App\Models\Site;
use Illuminate\Support\Facades\Validator;
class CreateCommand class CreateCommand
{ {
@ -13,8 +12,6 @@ class CreateCommand
*/ */
public function create(Site $site, array $input): Command public function create(Site $site, array $input): Command
{ {
Validator::make($input, self::rules())->validate();
$script = new Command([ $script = new Command([
'site_id' => $site->id, 'site_id' => $site->id,
'name' => $input['name'], 'name' => $input['name'],

View File

@ -14,22 +14,18 @@
use App\ValidationRules\DomainRule; use App\ValidationRules\DomainRule;
use Exception; use Exception;
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Validator;
use Illuminate\Validation\Rule; use Illuminate\Validation\Rule;
use Illuminate\Validation\ValidationException; use Illuminate\Validation\ValidationException;
use Throwable;
class CreateSite class CreateSite
{ {
/** /**
* @param array<string, mixed> $input * @param array<string, mixed> $input
* *
* @throws Throwable * @throws ValidationException
*/ */
public function create(Server $server, array $input): Site public function create(Server $server, array $input): Site
{ {
Validator::make($input, self::rules($server, $input))->validate();
DB::beginTransaction(); DB::beginTransaction();
try { try {
$user = $input['user'] ?? $server->getSshUser(); $user = $input['user'] ?? $server->getSshUser();
@ -114,7 +110,7 @@ public static function rules(Server $server, array $input): array
$rules = [ $rules = [
'type' => [ 'type' => [
'required', 'required',
Rule::in(array_keys(config('site.types'))), Rule::in(config('core.site_types')),
], ],
'domain' => [ 'domain' => [
'required', 'required',
@ -125,7 +121,6 @@ public static function rules(Server $server, array $input): array
new DomainRule, new DomainRule,
], ],
'user' => [ 'user' => [
'nullable',
'regex:/^[a-z_][a-z0-9_-]*[a-z0-9]$/', 'regex:/^[a-z_][a-z0-9_-]*[a-z0-9]$/',
'min:3', 'min:3',
'max:32', 'max:32',
@ -143,7 +138,7 @@ public static function rules(Server $server, array $input): array
*/ */
private static function typeRules(Server $server, array $input): array private static function typeRules(Server $server, array $input): array
{ {
if (! isset($input['type']) || ! config('site.types.'.$input['type'])) { if (! isset($input['type']) || ! in_array($input['type'], config('core.site_types'))) {
return []; return [];
} }

View File

@ -5,22 +5,16 @@
use App\Exceptions\SSHError; use App\Exceptions\SSHError;
use App\Models\Service; use App\Models\Service;
use App\Models\Site; use App\Models\Site;
use App\Services\PHP\PHP; use App\SSH\Services\PHP\PHP;
use App\Services\Webserver\Webserver; use App\SSH\Services\Webserver\Webserver;
use Illuminate\Support\Facades\Validator;
use Illuminate\Validation\Rule;
class DeleteSite class DeleteSite
{ {
/** /**
* @param array<string, mixed> $input
*
* @throws SSHError * @throws SSHError
*/ */
public function delete(Site $site, array $input): void public function delete(Site $site): void
{ {
$this->validate($site, $input);
/** @var Service $service */ /** @var Service $service */
$service = $site->server->webserver(); $service = $site->server->webserver();
@ -41,17 +35,4 @@ public function delete(Site $site, array $input): void
$site->delete(); $site->delete();
} }
/**
* @param array<string, mixed> $input
*/
private function validate(Site $site, array $input): void
{
Validator::make($input, [
'domain' => [
'required',
Rule::in($site->domain),
],
])->validate();
}
} }

View File

@ -4,6 +4,7 @@
use App\Enums\DeploymentStatus; use App\Enums\DeploymentStatus;
use App\Exceptions\DeploymentScriptIsEmptyException; use App\Exceptions\DeploymentScriptIsEmptyException;
use App\Exceptions\SSHError;
use App\Facades\Notifier; use App\Facades\Notifier;
use App\Models\Deployment; use App\Models\Deployment;
use App\Models\ServerLog; use App\Models\ServerLog;
@ -14,6 +15,7 @@ class Deploy
{ {
/** /**
* @throws DeploymentScriptIsEmptyException * @throws DeploymentScriptIsEmptyException
* @throws SSHError
*/ */
public function run(Site $site): Deployment public function run(Site $site): Deployment
{ {
@ -30,11 +32,6 @@ public function run(Site $site): Deployment
'deployment_script_id' => $site->deploymentScript->id, 'deployment_script_id' => $site->deploymentScript->id,
'status' => DeploymentStatus::DEPLOYING, 'status' => DeploymentStatus::DEPLOYING,
]); ]);
$log = ServerLog::newLog($site->server, 'deploy-'.strtotime('now'))
->forSite($site);
$log->save();
$deployment->log_id = $log->id;
$deployment->save();
$lastCommit = $site->sourceControl?->provider()?->getLastCommit($site->repository, $site->branch); $lastCommit = $site->sourceControl?->provider()?->getLastCommit($site->repository, $site->branch);
if ($lastCommit) { if ($lastCommit) {
$deployment->commit_id = $lastCommit['commit_id']; $deployment->commit_id = $lastCommit['commit_id'];
@ -42,7 +39,12 @@ public function run(Site $site): Deployment
} }
$deployment->save(); $deployment->save();
dispatch(function () use ($site, $deployment, $log): void { dispatch(function () use ($site, $deployment): void {
$log = ServerLog::newLog($site->server, 'deploy-'.strtotime('now'))
->forSite($site);
$log->save();
$deployment->log_id = $log->id;
$deployment->save();
$site->server->os()->runScript( $site->server->os()->runScript(
path: $site->path, path: $site->path,
script: $site->deploymentScript->content, script: $site->deploymentScript->content,

View File

@ -3,7 +3,6 @@
namespace App\Actions\Site; namespace App\Actions\Site;
use App\Models\Command; use App\Models\Command;
use Illuminate\Support\Facades\Validator;
class EditCommand class EditCommand
{ {
@ -12,8 +11,6 @@ class EditCommand
*/ */
public function edit(Command $command, array $input): Command public function edit(Command $command, array $input): Command
{ {
Validator::make($input, self::rules())->validate();
$command->name = $input['name']; $command->name = $input['name'];
$command->command = $input['command']; $command->command = $input['command'];
$command->save(); $command->save();

View File

@ -7,7 +7,6 @@
use App\Models\CommandExecution; use App\Models\CommandExecution;
use App\Models\ServerLog; use App\Models\ServerLog;
use App\Models\User; use App\Models\User;
use Illuminate\Support\Facades\Validator;
class ExecuteCommand class ExecuteCommand
{ {
@ -16,33 +15,21 @@ class ExecuteCommand
*/ */
public function execute(Command $command, User $user, array $input): CommandExecution public function execute(Command $command, User $user, array $input): CommandExecution
{ {
Validator::make($input, self::rules($command))->validate();
$variables = [];
foreach ($command->getVariables() as $variable) {
if (array_key_exists($variable, $input)) {
$variables[$variable] = $input[$variable] ?? '';
}
}
$execution = new CommandExecution([ $execution = new CommandExecution([
'command_id' => $command->id, 'command_id' => $command->id,
'server_id' => $command->site->server_id, 'server_id' => $command->site->server_id,
'user_id' => $user->id, 'user_id' => $user->id,
'variables' => $variables, 'variables' => $input['variables'] ?? [],
'status' => CommandExecutionStatus::EXECUTING, 'status' => CommandExecutionStatus::EXECUTING,
]); ]);
$execution->save(); $execution->save();
dispatch(function () use ($execution, $command): void {
$content = $execution->getContent();
$log = ServerLog::newLog($execution->server, 'command-'.$command->id.'-'.strtotime('now')); $log = ServerLog::newLog($execution->server, 'command-'.$command->id.'-'.strtotime('now'));
$log->save(); $log->save();
$execution->server_log_id = $log->id; $execution->server_log_id = $log->id;
$execution->save(); $execution->save();
dispatch(function () use ($execution, $command, $log): void {
$content = $execution->getContent();
$execution->server_log_id = $log->id;
$execution->save();
$execution->server->os()->runScript( $execution->server->os()->runScript(
path: $command->site->path, path: $command->site->path,
script: $content, script: $content,
@ -61,19 +48,18 @@ public function execute(Command $command, User $user, array $input): CommandExec
} }
/** /**
* @param array<string, mixed> $input
* @return array<string, string|array<int, mixed>> * @return array<string, string|array<int, mixed>>
*/ */
public static function rules(Command $command): array public static function rules(array $input): array
{ {
$rules = []; return [
foreach ($command->getVariables() as $variable) { 'variables' => 'array',
$rules[$variable] = [ 'variables.*' => [
'required', 'required',
'string', 'string',
'max:255', 'max:255',
],
]; ];
} }
return $rules;
}
} }

View File

@ -4,7 +4,7 @@
use App\Models\Service; use App\Models\Service;
use App\Models\Site; use App\Models\Site;
use App\Services\Webserver\Webserver; use App\SSH\Services\Webserver\Webserver;
use App\ValidationRules\DomainRule; use App\ValidationRules\DomainRule;
class UpdateAliases class UpdateAliases
@ -21,9 +21,7 @@ public function update(Site $site, array $input): void
/** @var Webserver $webserver */ /** @var Webserver $webserver */
$webserver = $service->handler(); $webserver = $service->handler();
$webserver->updateVHost($site, regenerate: [ $webserver->updateVHost($site);
'core',
]);
$site->save(); $site->save();
} }

View File

@ -4,8 +4,7 @@
use App\Exceptions\SSHError; use App\Exceptions\SSHError;
use App\Models\Site; use App\Models\Site;
use App\SSH\OS\Git; use App\SSH\Git\Git;
use Illuminate\Support\Facades\Validator;
class UpdateBranch class UpdateBranch
{ {
@ -16,8 +15,6 @@ class UpdateBranch
*/ */
public function update(Site $site, array $input): void public function update(Site $site, array $input): void
{ {
Validator::make($input, self::rules())->validate();
$site->branch = $input['branch']; $site->branch = $input['branch'];
app(Git::class)->fetchOrigin($site); app(Git::class)->fetchOrigin($site);
app(Git::class)->checkout($site); app(Git::class)->checkout($site);

View File

@ -4,7 +4,6 @@
use App\Models\DeploymentScript; use App\Models\DeploymentScript;
use App\Models\Site; use App\Models\Site;
use Illuminate\Support\Facades\Validator;
class UpdateDeploymentScript class UpdateDeploymentScript
{ {
@ -13,8 +12,6 @@ class UpdateDeploymentScript
*/ */
public function update(Site $site, array $input): void public function update(Site $site, array $input): void
{ {
Validator::make($input, self::rules())->validate();
/** @var DeploymentScript $script */ /** @var DeploymentScript $script */
$script = $site->deploymentScript; $script = $site->deploymentScript;
$script->content = $input['script']; $script->content = $input['script'];

Some files were not shown because too many files have changed in this diff Show More