Compare commits

..

67 Commits

Author SHA1 Message Date
961d2021bd auto upgrade script 2025-06-21 19:46:30 +02:00
e52500ad47 fix update.sh 2025-06-21 16:09:48 +02:00
3732d690db fix Dockerfile 2025-06-21 14:47:35 +02:00
a123145d84 version bump 2025-06-21 14:40:58 +02:00
ada56065cb fix updater 2025-06-21 14:38:11 +02:00
a3db7cbc85 fix installer 2025-06-21 12:43:46 +02:00
d2eb2c4e4a fix tests (#619)
* fix tests

* fix tests
2025-06-21 10:21:35 +02:00
7bfa9ef91d use redis for queues, sessions and cache (#618) 2025-06-21 09:48:07 +02:00
3196c0d954 fix installer 2025-06-20 13:32:50 +02:00
45521d2616 fix githook deletion 2025-06-20 00:13:54 +02:00
7a94e28da2 fix optimizer 2025-06-20 00:02:22 +02:00
cf9bb35615 fix phpstan 2025-06-19 21:29:34 +02:00
9a3578f3ac fix docker ssh issue by downgrading phpseclib 2025-06-19 21:25:25 +02:00
632a56bf4d fix importer on docker 2025-06-19 19:45:09 +02:00
f97fffe654 fix importer
fix plugins on docker
2025-06-19 16:41:46 +02:00
2081bdd46e add log viewer 2025-06-19 15:32:52 +02:00
48c4d53d31 optimize docker 2025-06-19 15:07:15 +02:00
69939f8aad fix docker 2025-06-19 14:49:01 +02:00
798542673f fix docker 2025-06-19 14:23:33 +02:00
49c29de962 fix command typo 2025-06-19 14:12:27 +02:00
342a3aa4c6 Plugins (#616)
* wip

* fix plugin uninstall

* marketplace
2025-06-19 14:07:15 +02:00
131b828807 Plugins base (#613)
* wip

* wip

* cleanup

* notification channels

* phpstan

* services

* remove server types

* refactoring

* refactoring
2025-06-14 14:35:18 +02:00
adc0653d15 api-docs fix 2025-06-10 12:23:42 +02:00
c6ed3f029d upgrade installer to php 8.4 2025-06-10 00:26:09 +02:00
eceacffb0d docker php upgrade 2025-06-10 00:16:51 +02:00
09a9735962 reverse proxy basics (#609) 2025-06-10 00:14:05 +02:00
4e6491a080 Export and Import vito settings (#606)
* Export and Import vito settings

* fix tests
2025-06-05 17:01:22 +02:00
8e8859b305 #591 - fix tests 2025-06-04 21:40:26 +02:00
56baba74d7 #591 - fix tests 2025-06-04 21:36:01 +02:00
ab68964d43 #591 - load balancer 2025-06-04 21:30:47 +02:00
0bd390f27c #591 - force npm 2025-06-04 19:05:34 +02:00
f8f8d57fe2 #591 - tests 2025-06-04 19:04:02 +02:00
35894003f5 #591 - scripts 2025-06-04 15:38:07 +02:00
c3f69f3247 #591 - sites 2025-06-04 08:08:20 +02:00
efacadba10 #591 - node 2025-06-01 12:02:25 +02:00
84476db764 #591 - php 2025-06-01 11:31:09 +02:00
41388dafbf #591 - server-settings 2025-05-31 20:33:36 +02:00
0b7dd1732b #591 - console 2025-05-31 12:39:46 +02:00
c09c7a63fa #591 - monitoring 2025-05-31 00:18:04 +02:00
857319025f #591 - server-logs 2025-05-30 13:52:39 +02:00
104cd2fce8 #591 - services 2025-05-30 11:02:07 +02:00
1b9f826bcb #591 - fix server-ssh-keys 2025-05-29 21:24:47 +02:00
0fce4dba9c #591 - server-ssh-keys 2025-05-29 21:20:33 +02:00
8b6f65db97 #591 - workers 2025-05-29 20:05:13 +02:00
984c1f3a8e 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

(cherry picked from commit 2318e1b1df)
2025-05-29 11:39:00 +02:00
61506ff70e #591 - cron jobs 2025-05-28 00:19:25 +02:00
6032bd1098 #591 - firewall 2025-05-27 00:30:29 +02:00
f5fdbae4ac #591 - sites [wip] 2025-05-25 22:17:19 +02:00
ff11fb44e0 #591 - backups 2025-05-23 18:27:24 +02:00
a5ce0d33b3 Fix mysqldump backup error
This reverts commit 564b97e2aa.
2025-05-21 21:05:16 +02:00
a40c2828c2 #591 - backups 2025-05-21 21:05:13 +02:00
fe3317692b #591 - database-users 2025-05-21 17:21:10 +02:00
2850c1fa59 #591 - databases 2025-05-20 17:35:20 +02:00
eb86204069 #591 - api keys 2025-05-20 08:15:10 +02:00
f7ac3c32f0 #591 - fix typo 2025-05-19 22:40:42 +02:00
61faaabb85 #591 - tags 2025-05-19 22:22:21 +02:00
04d52f6742 #591 - ssh-keys 2025-05-19 20:55:32 +02:00
cdc012c270 #591 - notification-channels 2025-05-19 20:05:38 +02:00
563b9c5909 #591 - storage-providers 2025-05-19 00:13:17 +02:00
5a00d35eba #591 - source-controls 2025-05-18 23:46:28 +02:00
1ed5d7362b #591 - server-providers 2025-05-18 21:12:06 +02:00
8b4d156afa #591 - profile, users and projects 2025-05-18 18:25:27 +02:00
edd4ba1bc2 #591 - app search bar UI 2025-05-15 22:38:24 +03:00
b8ba83949b projects 2025-05-15 14:23:26 +03:00
a81e9b18b7 dashboard layout (#597) 2025-05-13 23:42:22 +03:00
38bafd7654 Setup Inertia (#593) 2025-05-10 11:10:11 +03:00
6eb88c7c6e laravel 12 upgrade (#586)
* laravel 12 upgrade

* upgrade scribe to v5

* fix lint
2025-04-21 21:56:53 +02:00
1024 changed files with 52031 additions and 32349 deletions

View File

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

View File

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

View File

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

View File

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

View File

@ -6,6 +6,7 @@ on:
- main
- 1.x
- 2.x
- 3.x
pull_request:
jobs:
@ -15,7 +16,8 @@ jobs:
strategy:
fail-fast: true
matrix:
php: [ 8.2 ]
php: [ 8.4 ]
node-version: [ "22.x" ]
steps:
- uses: actions/checkout@v4
@ -44,5 +46,19 @@ jobs:
- name: Set up the .env file
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
run: php artisan test

1
.gitignore vendored
View File

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

View File

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

View File

@ -1,26 +1,46 @@
{
"plugins": [
"prettier-plugin-blade",
"prettier-plugin-tailwindcss",
"prettier-plugin-sh"
],
"overrides": [
{
"files": ["*.blade.php"],
"options": {
"parser": "blade",
"printWidth": 120,
"htmlWhitespaceSensitivity": "ignore",
"tabWidth": 4,
"quoteProps": "consistent",
"trailingComma": "none"
}
},
{
"files": ["*.sh"],
"options": {
"parser": "sh"
}
}
]
"semi": true,
"singleQuote": true,
"singleAttributePerLine": false,
"htmlWhitespaceSensitivity": "css",
"printWidth": 150,
"tailwindFunctions": [
"clsx",
"cn"
],
"tabWidth": 2,
"plugins": [
"prettier-plugin-blade",
"prettier-plugin-tailwindcss",
"prettier-plugin-sh"
],
"overrides": [
{
"files": [
"*.blade.php"
],
"options": {
"parser": "blade",
"printWidth": 120,
"htmlWhitespaceSensitivity": "ignore",
"tabWidth": 4,
"quoteProps": "consistent",
"trailingComma": "none"
}
},
{
"files": [
"*.sh"
],
"options": {
"parser": "sh"
}
},
{
"files": "**/*.yml",
"options": {
"tabWidth": 2
}
}
]
}

View File

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

View File

@ -1,7 +1,3 @@
# Authenticating requests
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>
This API is not authenticated.

View File

@ -1,292 +1,160 @@
## Autogenerated by Scribe. DO NOT MODIFY.
name: cron-jobs
name: Endpoints
description: ''
endpoints:
-
httpMethods:
- GET
uri: 'api/projects/{project_id}/servers/{server_id}/cron-jobs'
metadata:
groupName: cron-jobs
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: list
description: 'Get all cron jobs.'
authenticated: 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: 200
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: []
description: ''
custom: []
responseFields: []
auth:
- headers
- Authorization
- 'Bearer eDa6Vdh1Z4vc35bP8E6gafk'
controller: null
method: null
route: null
custom: []
-
httpMethods:
- POST
uri: 'api/projects/{project_id}/servers/{server_id}/cron-jobs'
uri: 'api/servers/{server_id}/agent/{id}'
metadata:
groupName: cron-jobs
groupName: Endpoints
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: create
description: 'Create a new cron job.'
authenticated: true
title: ''
description: ''
authenticated: false
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: []
id:
name: id
description: 'The ID of the agent.'
required: true
example: architecto
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanUrlParameters:
project_id: 1
server_id: 29
cronJob_id: 6
server_id: 6
id: architecto
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: []
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:
- headers
- Authorization
- 'Bearer D4c3Z65ebv8E16fahaVgPdk'
auth: []
controller: null
method: null
route: null
custom: []
-
httpMethods:
- DELETE
uri: 'api/projects/{project_id}/servers/{server_id}/cron-jobs/{cronJob_id}'
0: GET
2: POST
3: PUT
4: PATCH
5: DELETE
6: OPTIONS
uri: api/git-hooks
metadata:
groupName: cron-jobs
groupName: Endpoints
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: delete
description: 'Delete cron job.'
authenticated: true
title: ''
description: ''
authenticated: false
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
urlParameters: []
cleanUrlParameters: []
queryParameters: []
cleanQueryParameters: []
bodyParameters: []
@ -294,16 +162,21 @@ endpoints:
fileParameters: []
responses:
-
status: 204
content: null
headers: []
description: ''
status: 404
content: |-
{
"message": ""
}
headers:
cache-control: 'no-cache, private'
content-type: application/json
x-ratelimit-limit: '60'
x-ratelimit-remaining: '57'
access-control-allow-origin: '*'
description: null
custom: []
responseFields: []
auth:
- headers
- Authorization
- 'Bearer h3cP4aZa1v8feDdEg5b6k6V'
auth: []
controller: null
method: null
route: null

View File

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

View File

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

View File

@ -1,23 +1,22 @@
## Autogenerated by Scribe. DO NOT MODIFY.
name: firewall-rules
name: database-users
description: ''
endpoints:
-
httpMethods:
- GET
uri: 'api/projects/{project_id}/servers/{server_id}/firewall-rules'
uri: 'api/projects/{project_id}/servers/{server_id}/database-users'
metadata:
groupName: firewall-rules
groupName: database-users
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: list
description: 'Get all firewall rules.'
authenticated: true
description: 'Get all database users.'
authenticated: false
custom: []
headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json
Accept: application/json
urlParameters:
@ -35,7 +34,7 @@ endpoints:
name: server_id
description: 'The ID of the server.'
required: true
example: 29
example: 6
type: integer
enumValues: []
exampleWasSpecified: false
@ -43,7 +42,7 @@ endpoints:
custom: []
cleanUrlParameters:
project_id: 1
server_id: 29
server_id: 6
queryParameters: []
cleanQueryParameters: []
bodyParameters: []
@ -52,15 +51,12 @@ endpoints:
responses:
-
status: 200
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}}'
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}}'
headers: []
description: ''
custom: []
responseFields: []
auth:
- headers
- Authorization
- 'Bearer eD368kaZfVEab4v61ghdP5c'
auth: []
controller: null
method: null
route: null
@ -68,18 +64,17 @@ endpoints:
-
httpMethods:
- POST
uri: 'api/projects/{project_id}/servers/{server_id}/firewall-rules'
uri: 'api/projects/{project_id}/servers/{server_id}/database-users'
metadata:
groupName: firewall-rules
groupName: database-users
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: create
description: 'Create a new firewall rule.'
authenticated: true
description: 'Create a new database user.'
authenticated: false
custom: []
headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json
Accept: application/json
urlParameters:
@ -97,7 +92,7 @@ endpoints:
name: server_id
description: 'The ID of the server.'
required: true
example: 29
example: 6
type: integer
enumValues: []
exampleWasSpecified: false
@ -105,237 +100,54 @@ endpoints:
custom: []
cleanUrlParameters:
project_id: 1
server_id: 29
server_id: 6
queryParameters: []
cleanQueryParameters: []
bodyParameters:
name:
name: name
username:
name: username
description: ''
required: true
example: sapiente
example: architecto
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
type:
name: type
password:
name: password
description: ''
required: true
example: allow
type: string
enumValues:
- allow
- deny
exampleWasSpecified: false
nullable: false
custom: []
protocol:
name: protocol
description: ''
required: true
example: tcp
type: string
enumValues:
- tcp
- udp
exampleWasSpecified: false
nullable: false
custom: []
port:
name: port
description: ''
required: true
example: et
example: '|]|{+-'
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
source:
name: source
description: ''
required: false
example: doloribus
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
mask:
name: mask
description: 'Mask for source IP.'
host:
name: host
description: 'Host, if it is a remote user.'
required: true
example: '0'
example: '%'
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanBodyParameters:
name: sapiente
type: allow
protocol: tcp
port: et
source: doloribus
mask: '0'
username: architecto
password: '|]|{+-'
host: '%'
fileParameters: []
responses:
-
status: 200
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}'
content: '{"id":4,"server_id":1,"username":"justina.gaylord","databases":[],"host":"%","status":"creating","status_color":"warning","created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"}'
headers: []
description: ''
custom: []
responseFields: []
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'
auth: []
controller: null
method: null
route: null
@ -343,18 +155,17 @@ endpoints:
-
httpMethods:
- GET
uri: 'api/projects/{project_id}/servers/{server_id}/firewall-rules/{firewallRule_id}'
uri: 'api/projects/{project_id}/servers/{server_id}/database-users/{databaseUser_id}'
metadata:
groupName: firewall-rules
groupName: database-users
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: show
description: 'Get a firewall rule by ID.'
authenticated: true
description: 'Get a database user by ID.'
authenticated: false
custom: []
headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json
Accept: application/json
urlParameters:
@ -372,17 +183,17 @@ endpoints:
name: server_id
description: 'The ID of the server.'
required: true
example: 29
example: 6
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
firewallRule_id:
name: firewallRule_id
description: 'The ID of the firewallRule.'
databaseUser_id:
name: databaseUser_id
description: 'The ID of the databaseUser.'
required: true
example: 85
example: 16
type: integer
enumValues: []
exampleWasSpecified: false
@ -390,8 +201,8 @@ endpoints:
custom: []
cleanUrlParameters:
project_id: 1
server_id: 29
firewallRule_id: 85
server_id: 6
databaseUser_id: 16
queryParameters: []
cleanQueryParameters: []
bodyParameters: []
@ -400,34 +211,30 @@ endpoints:
responses:
-
status: 200
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}'
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:
- headers
- Authorization
- 'Bearer 6gkvbDae15a6f43EVPdZh8c'
auth: []
controller: null
method: null
route: null
custom: []
-
httpMethods:
- DELETE
uri: 'api/projects/{project_id}/servers/{server_id}/firewall-rules/{firewallRule_id}'
- POST
uri: 'api/projects/{project_id}/servers/{server_id}/database-users/{databaseUser_id}/link'
metadata:
groupName: firewall-rules
groupName: database-users
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: delete
description: 'Delete firewall rule.'
authenticated: true
title: link
description: 'Link to databases'
authenticated: false
custom: []
headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json
Accept: application/json
urlParameters:
@ -445,17 +252,17 @@ endpoints:
name: server_id
description: 'The ID of the server.'
required: true
example: 29
example: 6
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
firewallRule_id:
name: firewallRule_id
description: 'The ID of the firewallRule.'
databaseUser_id:
name: databaseUser_id
description: 'The ID of the databaseUser.'
required: true
example: 85
example: 16
type: integer
enumValues: []
exampleWasSpecified: false
@ -463,8 +270,88 @@ endpoints:
custom: []
cleanUrlParameters:
project_id: 1
server_id: 29
firewallRule_id: 85
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
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: 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: []
@ -478,10 +365,7 @@ endpoints:
description: ''
custom: []
responseFields: []
auth:
- headers
- Authorization
- 'Bearer ZVd1fk5E3e48hDvaa6g6cPb'
auth: []
controller: null
method: null
route: null

View File

@ -1,26 +1,48 @@
## Autogenerated by Scribe. DO NOT MODIFY.
name: general
name: firewall-rules
description: ''
endpoints:
-
httpMethods:
- GET
uri: api/health
uri: 'api/projects/{project_id}/servers/{server_id}/firewall-rules'
metadata:
groupName: general
groupName: firewall-rules
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: health-check
description: ''
title: list
description: 'Get all firewall rules.'
authenticated: false
custom: []
headers:
Content-Type: application/json
Accept: application/json
urlParameters: []
cleanUrlParameters: []
urlParameters:
project_id:
name: project_id
description: 'The ID of the project.'
required: true
example: 1
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
server_id:
name: server_id
description: 'The ID of the server.'
required: true
example: 6
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanUrlParameters:
project_id: 1
server_id: 6
queryParameters: []
cleanQueryParameters: []
bodyParameters: []
@ -29,14 +51,414 @@ endpoints:
responses:
-
status: 200
content: '{"success":true,"version":"2.4.0"}'
headers:
cache-control: 'no-cache, private'
content-type: application/json
x-ratelimit-limit: '60'
x-ratelimit-remaining: '59'
access-control-allow-origin: '*'
description: null
content: '{"data":[{"id":22,"name":"eius","server_id":1,"type":"allow","protocol":"tcp","port":9322,"source":"113.14.236.204","mask":"24","note":"test","status":"creating","status_color":"info","created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"},{"id":23,"name":"velit","server_id":1,"type":"allow","protocol":"tcp","port":2983,"source":"199.172.126.144","mask":"24","note":"test","status":"creating","status_color":"info","created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"}],"links":{"first":"\/?page=1","last":"\/?page=1","prev":null,"next":null},"meta":{"current_page":1,"from":1,"last_page":1,"links":[{"url":null,"label":"&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}/servers/{server_id}/firewall-rules'
metadata:
groupName: firewall-rules
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: create
description: 'Create a new firewall rule.'
authenticated: false
custom: []
headers:
Content-Type: application/json
Accept: application/json
urlParameters:
project_id:
name: project_id
description: 'The ID of the project.'
required: true
example: 1
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
server_id:
name: server_id
description: 'The ID of the server.'
required: true
example: 6
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanUrlParameters:
project_id: 1
server_id: 6
queryParameters: []
cleanQueryParameters: []
bodyParameters:
name:
name: name
description: ''
required: true
example: architecto
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
type:
name: type
description: ''
required: true
example: allow
type: string
enumValues:
- allow
- deny
exampleWasSpecified: false
nullable: false
custom: []
protocol:
name: protocol
description: ''
required: true
example: tcp
type: string
enumValues:
- tcp
- udp
exampleWasSpecified: false
nullable: false
custom: []
port:
name: port
description: ''
required: true
example: architecto
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
source:
name: source
description: ''
required: false
example: architecto
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
mask:
name: mask
description: 'Mask for source IP.'
required: true
example: '0'
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanBodyParameters:
name: architecto
type: allow
protocol: tcp
port: architecto
source: architecto
mask: '0'
fileParameters: []
responses:
-
status: 200
content: '{"id":22,"name":"eius","server_id":1,"type":"allow","protocol":"tcp","port":9322,"source":"113.14.236.204","mask":"24","note":"test","status":"creating","status_color":"info","created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"}'
headers: []
description: ''
custom: []
responseFields: []
auth: []
controller: null
method: null
route: null
custom: []
-
httpMethods:
- PUT
uri: 'api/projects/{project_id}/servers/{server_id}/firewall-rules/{firewallRule_id}'
metadata:
groupName: firewall-rules
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: edit
description: 'Update an existing firewall rule.'
authenticated: false
custom: []
headers:
Content-Type: application/json
Accept: application/json
urlParameters:
project_id:
name: project_id
description: 'The ID of the project.'
required: true
example: 1
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
server_id:
name: server_id
description: 'The ID of the server.'
required: true
example: 6
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
firewallRule_id:
name: firewallRule_id
description: 'The ID of the firewallRule.'
required: true
example: 19
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanUrlParameters:
project_id: 1
server_id: 6
firewallRule_id: 19
queryParameters: []
cleanQueryParameters: []
bodyParameters:
name:
name: name
description: ''
required: true
example: architecto
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
type:
name: type
description: ''
required: true
example: deny
type: string
enumValues:
- allow
- deny
exampleWasSpecified: false
nullable: false
custom: []
protocol:
name: protocol
description: ''
required: true
example: udp
type: string
enumValues:
- tcp
- udp
exampleWasSpecified: false
nullable: false
custom: []
port:
name: port
description: ''
required: true
example: architecto
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
source:
name: source
description: ''
required: false
example: architecto
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
mask:
name: mask
description: 'Mask for source IP.'
required: true
example: '0'
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanBodyParameters:
name: architecto
type: deny
protocol: udp
port: architecto
source: architecto
mask: '0'
fileParameters: []
responses:
-
status: 200
content: '{"id":22,"name":"eius","server_id":1,"type":"allow","protocol":"tcp","port":9322,"source":"113.14.236.204","mask":"24","note":"test","status":"creating","status_color":"info","created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"}'
headers: []
description: ''
custom: []
responseFields: []
auth: []
controller: null
method: null
route: null
custom: []
-
httpMethods:
- GET
uri: 'api/projects/{project_id}/servers/{server_id}/firewall-rules/{firewallRule_id}'
metadata:
groupName: firewall-rules
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: show
description: 'Get a firewall rule by ID.'
authenticated: false
custom: []
headers:
Content-Type: application/json
Accept: application/json
urlParameters:
project_id:
name: project_id
description: 'The ID of the project.'
required: true
example: 1
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
server_id:
name: server_id
description: 'The ID of the server.'
required: true
example: 6
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
firewallRule_id:
name: firewallRule_id
description: 'The ID of the firewallRule.'
required: true
example: 19
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanUrlParameters:
project_id: 1
server_id: 6
firewallRule_id: 19
queryParameters: []
cleanQueryParameters: []
bodyParameters: []
cleanBodyParameters: []
fileParameters: []
responses:
-
status: 200
content: '{"id":22,"name":"velit","server_id":1,"type":"allow","protocol":"tcp","port":2983,"source":"199.172.126.144","mask":"24","note":"test","status":"creating","status_color":"info","created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"}'
headers: []
description: ''
custom: []
responseFields: []
auth: []
controller: null
method: null
route: null
custom: []
-
httpMethods:
- DELETE
uri: 'api/projects/{project_id}/servers/{server_id}/firewall-rules/{firewallRule_id}'
metadata:
groupName: firewall-rules
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: delete
description: 'Delete firewall rule.'
authenticated: false
custom: []
headers:
Content-Type: application/json
Accept: application/json
urlParameters:
project_id:
name: project_id
description: 'The ID of the project.'
required: true
example: 1
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
server_id:
name: server_id
description: 'The ID of the server.'
required: true
example: 6
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
firewallRule_id:
name: firewallRule_id
description: 'The ID of the firewallRule.'
required: true
example: 19
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanUrlParameters:
project_id: 1
server_id: 6
firewallRule_id: 19
queryParameters: []
cleanQueryParameters: []
bodyParameters: []
cleanBodyParameters: []
fileParameters: []
responses:
-
status: 204
content: null
headers: []
description: ''
custom: []
responseFields: []
auth: []

View File

@ -1,23 +1,22 @@
## Autogenerated by Scribe. DO NOT MODIFY.
name: projects
name: general
description: ''
endpoints:
-
httpMethods:
- GET
uri: api/projects
uri: api/health
metadata:
groupName: projects
groupName: general
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: list
description: 'Get all projects.'
authenticated: true
title: health-check
description: ''
authenticated: false
custom: []
headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json
Accept: application/json
urlParameters: []
@ -30,230 +29,17 @@ endpoints:
responses:
-
status: 200
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: []
description: ''
content: '{"success":true,"version":"2.5.0"}'
headers:
cache-control: 'no-cache, private'
content-type: application/json
x-ratelimit-limit: '60'
x-ratelimit-remaining: '56'
access-control-allow-origin: '*'
description: null
custom: []
responseFields: []
auth:
- 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'
auth: []
controller: null
method: null
route: null

View File

@ -1,60 +1,26 @@
## Autogenerated by Scribe. DO NOT MODIFY.
name: redirects
name: projects
description: ''
endpoints:
-
httpMethods:
- GET
uri: 'api/projects/{project_id}/servers/{server_id}/sites/{site_id}/redirects'
uri: api/projects
metadata:
groupName: redirects
groupName: projects
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: index
description: 'Get all redirects.'
authenticated: true
title: list
description: 'Get all projects.'
authenticated: false
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
urlParameters: []
cleanUrlParameters: []
queryParameters: []
cleanQueryParameters: []
bodyParameters: []
@ -63,15 +29,12 @@ endpoints:
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}}'
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:
- headers
- Authorization
- 'Bearer cV16fevgEZhPadD43685akb'
auth: []
controller: null
method: null
route: null
@ -79,23 +42,69 @@ endpoints:
-
httpMethods:
- POST
uri: 'api/projects/{project_id}/servers/{server_id}/sites/{site_id}/redirects'
uri: api/projects
metadata:
groupName: redirects
groupName: projects
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: create
description: 'Create a new redirect.'
authenticated: true
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:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json
Accept: application/json
urlParameters:
project_id:
name: project_id
id:
name: id
description: 'The ID of the project.'
required: true
example: 1
@ -104,84 +113,80 @@ endpoints:
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
cleanUrlParameters:
id: 1
queryParameters: []
cleanQueryParameters: []
bodyParameters: []
cleanBodyParameters: []
fileParameters: []
responses:
-
status: 200
content: '{"id":3,"name":"Aleen O''Kon","created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"}'
headers: []
description: ''
custom: []
site_id:
name: site_id
description: 'The ID of the site.'
responseFields: []
auth: []
controller: null
method: null
route: null
custom: []
-
httpMethods:
- PUT
uri: 'api/projects/{id}'
metadata:
groupName: projects
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: update
description: 'Update project.'
authenticated: false
custom: []
headers:
Content-Type: application/json
Accept: application/json
urlParameters:
id:
name: id
description: 'The ID of the project.'
required: true
example: 44
example: 1
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanUrlParameters:
project_id: 1
server_id: 29
site_id: 44
id: 1
queryParameters: []
cleanQueryParameters: []
bodyParameters:
from:
name: from
description: ''
name:
name: name
description: 'The name of the project.'
required: true
example: odit
example: architecto
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
name: architecto
fileParameters: []
responses:
-
status: 200
content: null
content: '{"id":3,"name":"Ms. Elisabeth Okuneva","created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"}'
headers: []
description: ''
custom: []
responseFields: []
auth:
- headers
- Authorization
- 'Bearer ZD45hPk638abev61EVcagdf'
auth: []
controller: null
method: null
route: null
@ -189,18 +194,17 @@ endpoints:
-
httpMethods:
- DELETE
uri: 'api/projects/{project_id}/servers/{server_id}/sites/{site_id}/redirects/{redirect_id}'
uri: 'api/projects/{project_id}'
metadata:
groupName: redirects
groupName: projects
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: delete
description: 'Delete a redirect.'
authenticated: true
description: 'Delete project.'
authenticated: false
custom: []
headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json
Accept: application/json
urlParameters:
@ -214,41 +218,8 @@ endpoints:
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: []
cleanQueryParameters: []
bodyParameters: []
@ -262,10 +233,7 @@ endpoints:
description: ''
custom: []
responseFields: []
auth:
- headers
- Authorization
- 'Bearer Ec3fDgdbae615aPh8k6vV4Z'
auth: []
controller: null
method: null
route: null

View File

@ -1,74 +1,22 @@
## Autogenerated by Scribe. DO NOT MODIFY.
name: servers
name: redirects
description: ''
endpoints:
-
httpMethods:
- GET
uri: 'api/projects/{project_id}/servers'
metadata:
groupName: servers
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: list
description: 'Get all servers in a project.'
authenticated: 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: 200
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: []
description: ''
custom: []
responseFields: []
auth:
- headers
- Authorization
- 'Bearer Pg1Vk6cvadD8eb3ZhaEf564'
controller: null
method: null
route: null
custom: []
-
httpMethods:
- POST
uri: 'api/projects/{project_id}/servers'
uri: 'api/projects/{project_id}/servers/{server_id}/sites/{site_id}/redirects'
metadata:
groupName: servers
groupName: redirects
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: create
description: 'Create a new server.'
authenticated: true
description: 'Create a new redirect.'
authenticated: false
custom: []
headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json
Accept: application/json
urlParameters:
@ -82,359 +30,81 @@ endpoints:
exampleWasSpecified: false
nullable: false
custom: []
server_id:
name: server_id
description: 'The ID of the server.'
required: true
example: 6
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
site_id:
name: site_id
description: 'The ID of the site.'
required: true
example: 14
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanUrlParameters:
project_id: 1
server_id: 6
site_id: 14
queryParameters: []
cleanQueryParameters: []
bodyParameters:
provider:
name: provider
description: 'The server provider type'
from:
name: from
description: ''
required: true
example: fugiat
example: architecto
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
server_provider:
name: server_provider
description: 'If the provider is not custom, the ID of the server provider profile'
to:
name: to
description: ''
required: true
example: digitalocean
example: architecto
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
mode:
name: mode
description: ''
required: true
example: 307
type: string
enumValues:
- custom
- hetzner
- digitalocean
- linode
- vultr
exampleWasSpecified: false
nullable: false
custom: []
region:
name: region
description: 'Provider region if the provider is not custom'
required: true
example: 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'
- 301
- 302
- 307
- 308
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'
from: architecto
to: architecto
mode: 307
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
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 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'
auth: []
controller: null
method: null
route: null
@ -442,18 +112,17 @@ endpoints:
-
httpMethods:
- DELETE
uri: 'api/projects/{project_id}/servers/{server_id}'
uri: 'api/projects/{project_id}/servers/{server_id}/sites/{site_id}/redirects/{redirect_id}'
metadata:
groupName: servers
groupName: redirects
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: delete
description: 'Delete server.'
authenticated: true
description: 'Delete a redirect.'
authenticated: false
custom: []
headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json
Accept: application/json
urlParameters:
@ -471,7 +140,27 @@ endpoints:
name: server_id
description: 'The ID of the server.'
required: true
example: 29
example: 6
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
site_id:
name: site_id
description: 'The ID of the site.'
required: true
example: 14
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
redirect_id:
name: redirect_id
description: 'The ID of the redirect.'
required: true
example: 2
type: integer
enumValues: []
exampleWasSpecified: false
@ -479,7 +168,9 @@ endpoints:
custom: []
cleanUrlParameters:
project_id: 1
server_id: 29
server_id: 6
site_id: 14
redirect_id: 2
queryParameters: []
cleanQueryParameters: []
bodyParameters: []
@ -493,10 +184,7 @@ endpoints:
description: ''
custom: []
responseFields: []
auth:
- headers
- Authorization
- 'Bearer 6aDkZEfdP16V58gb43avhec'
auth: []
controller: null
method: null
route: null

View File

@ -1,23 +1,22 @@
## Autogenerated by Scribe. DO NOT MODIFY.
name: server-providers
name: servers
description: ''
endpoints:
-
httpMethods:
- GET
uri: 'api/projects/{project_id}/server-providers'
uri: 'api/projects/{project_id}/servers'
metadata:
groupName: server-providers
groupName: servers
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: list
description: ''
authenticated: true
description: 'Get all servers in a project.'
authenticated: false
custom: []
headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json
Accept: application/json
urlParameters:
@ -41,15 +40,12 @@ endpoints:
responses:
-
status: 200
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}}'
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}}'
headers: []
description: ''
custom: []
responseFields: []
auth:
- headers
- Authorization
- 'Bearer 3evaP8h6VEZkbfgaD6d1c45'
auth: []
controller: null
method: null
route: null
@ -57,18 +53,17 @@ endpoints:
-
httpMethods:
- POST
uri: 'api/projects/{project_id}/server-providers'
uri: 'api/projects/{project_id}/servers'
metadata:
groupName: server-providers
groupName: servers
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: create
description: ''
authenticated: true
description: 'Create a new server.'
authenticated: false
custom: []
headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json
Accept: application/json
urlParameters:
@ -89,9 +84,64 @@ endpoints:
bodyParameters:
provider:
name: provider
description: 'The provider (aws, linode, hetzner, digitalocean, vultr, ...)'
description: 'The server provider type'
required: true
example: corrupti
example: architecto
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
server_provider:
name: server_provider
description: 'If the provider is not custom, the ID of the server provider profile'
required: true
example: linode
type: string
enumValues:
- custom
- hetzner
- digitalocean
- linode
- vultr
exampleWasSpecified: false
nullable: false
custom: []
region:
name: region
description: 'Provider region if the provider is not custom'
required: true
example: architecto
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
plan:
name: plan
description: 'Provider plan if the provider is not custom'
required: true
example: architecto
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
ip:
name: ip
description: 'SSH IP address if the provider is custom'
required: true
example: architecto
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
port:
name: port
description: 'SSH Port if the provider is custom'
required: true
example: architecto
type: string
enumValues: []
exampleWasSpecified: false
@ -99,63 +149,99 @@ endpoints:
custom: []
name:
name: name
description: 'The name of the server provider.'
description: 'The name of the server.'
required: true
example: est
example: architecto
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
token:
name: token
description: 'The token if provider requires api token'
os:
name: os
description: 'The os of the server'
required: true
example: rerum
example: architecto
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
key:
name: key
description: 'The key if provider requires key'
webserver:
name: webserver
description: 'Web server'
required: true
example: ut
example: none
type: string
enumValues: []
enumValues:
- none
- nginx
- caddy
exampleWasSpecified: false
nullable: false
custom: []
secret:
name: secret
description: 'The secret if provider requires key'
database:
name: database
description: Database
required: true
example: sed
example: mysql80
type: string
enumValues: []
enumValues:
- none
- mysql57
- mysql80
- mariadb103
- mariadb104
- mariadb103
- postgresql12
- postgresql13
- postgresql14
- postgresql15
- postgresql16
exampleWasSpecified: false
nullable: false
custom: []
php:
name: php
description: 'PHP version'
required: true
example: '8.2'
type: string
enumValues:
- '7.0'
- '7.1'
- '7.2'
- '7.3'
- '7.4'
- '8.0'
- '8.1'
- '8.2'
- '8.3'
exampleWasSpecified: false
nullable: false
custom: []
cleanBodyParameters:
provider: corrupti
name: est
token: rerum
key: ut
secret: sed
provider: architecto
server_provider: linode
region: architecto
plan: architecto
ip: architecto
port: architecto
name: architecto
os: architecto
webserver: none
database: mysql80
php: '8.2'
fileParameters: []
responses:
-
status: 200
content: '{"id":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"}'
content: '{"id":7,"project_id":1,"services":[],"user_id":1,"provider_id":null,"name":"Ms. Elisabeth Okuneva","ssh_user":"vito","ssh_users":["root","vito"],"ip":"75.13.66.152","local_ip":"199.172.126.144","port":22,"os":"ubuntu_22","type":"regular","type_data":null,"provider":"custom","provider_data":null,"public_key":"test","status":"ready","auto_update":null,"available_updates":0,"security_updates":null,"progress":100,"progress_step":null,"updates":0,"last_update_check":null,"status_color":"success","created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"}'
headers: []
description: ''
custom: []
responseFields: []
auth:
- headers
- Authorization
- 'Bearer 6g6vfEck83VaPhd5Zabe1D4'
auth: []
controller: null
method: null
route: null
@ -163,18 +249,17 @@ endpoints:
-
httpMethods:
- GET
uri: 'api/projects/{project_id}/server-providers/{serverProvider_id}'
uri: 'api/projects/{project_id}/servers/{id}'
metadata:
groupName: server-providers
groupName: servers
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: show
description: ''
authenticated: true
description: 'Get a server by ID.'
authenticated: false
custom: []
headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json
Accept: application/json
urlParameters:
@ -188,11 +273,11 @@ endpoints:
exampleWasSpecified: false
nullable: false
custom: []
serverProvider_id:
name: serverProvider_id
description: 'The ID of the serverProvider.'
id:
name: id
description: 'The ID of the server.'
required: true
example: 1
example: 6
type: integer
enumValues: []
exampleWasSpecified: false
@ -200,7 +285,7 @@ endpoints:
custom: []
cleanUrlParameters:
project_id: 1
serverProvider_id: 1
id: 6
queryParameters: []
cleanQueryParameters: []
bodyParameters: []
@ -209,34 +294,30 @@ endpoints:
responses:
-
status: 200
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"}'
content: '{"id":7,"project_id":1,"services":[],"user_id":1,"provider_id":null,"name":"Belle Dickens","ssh_user":"vito","ssh_users":["root","vito"],"ip":"51.210.32.30","local_ip":"82.174.132.158","port":22,"os":"ubuntu_22","type":"regular","type_data":null,"provider":"custom","provider_data":null,"public_key":"test","status":"ready","auto_update":null,"available_updates":0,"security_updates":null,"progress":100,"progress_step":null,"updates":0,"last_update_check":null,"status_color":"success","created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"}'
headers: []
description: ''
custom: []
responseFields: []
auth:
- headers
- Authorization
- 'Bearer va63cDe8dPf5Z4Vahb1E6kg'
auth: []
controller: null
method: null
route: null
custom: []
-
httpMethods:
- PUT
uri: 'api/projects/{project_id}/server-providers/{serverProvider_id}'
- POST
uri: 'api/projects/{project_id}/servers/{server_id}/reboot'
metadata:
groupName: server-providers
groupName: servers
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: update
description: ''
authenticated: true
title: reboot
description: 'Reboot a server.'
authenticated: false
custom: []
headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json
Accept: application/json
urlParameters:
@ -250,11 +331,11 @@ endpoints:
exampleWasSpecified: false
nullable: false
custom: []
serverProvider_id:
name: serverProvider_id
description: 'The ID of the serverProvider.'
server_id:
name: server_id
description: 'The ID of the server.'
required: true
example: 1
example: 6
type: integer
enumValues: []
exampleWasSpecified: false
@ -262,93 +343,7 @@ endpoints:
custom: []
cleanUrlParameters:
project_id: 1
serverProvider_id: 1
queryParameters: []
cleanQueryParameters: []
bodyParameters:
name:
name: name
description: 'The name of the server provider.'
required: true
example: earum
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: earum
global: false
fileParameters: []
responses:
-
status: 200
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: []
description: ''
custom: []
responseFields: []
auth:
- headers
- Authorization
- 'Bearer 4e1dghaV6D856P3ZbfkcEva'
controller: null
method: null
route: null
custom: []
-
httpMethods:
- DELETE
uri: 'api/projects/{project_id}/server-providers/{serverProvider_id}'
metadata:
groupName: server-providers
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: delete
description: ''
authenticated: 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: []
serverProvider_id:
name: serverProvider_id
description: 'The ID of the serverProvider.'
required: true
example: 1
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanUrlParameters:
project_id: 1
serverProvider_id: 1
server_id: 6
queryParameters: []
cleanQueryParameters: []
bodyParameters: []
@ -362,10 +357,123 @@ endpoints:
description: ''
custom: []
responseFields: []
auth:
- headers
- Authorization
- 'Bearer fcVa8ev63gP5DaZbkdhE461'
auth: []
controller: null
method: null
route: null
custom: []
-
httpMethods:
- POST
uri: 'api/projects/{project_id}/servers/{server_id}/upgrade'
metadata:
groupName: servers
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: upgrade
description: 'Upgrade server.'
authenticated: false
custom: []
headers:
Content-Type: application/json
Accept: application/json
urlParameters:
project_id:
name: project_id
description: 'The ID of the project.'
required: true
example: 1
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
server_id:
name: server_id
description: 'The ID of the server.'
required: true
example: 6
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanUrlParameters:
project_id: 1
server_id: 6
queryParameters: []
cleanQueryParameters: []
bodyParameters: []
cleanBodyParameters: []
fileParameters: []
responses:
-
status: 204
content: null
headers: []
description: ''
custom: []
responseFields: []
auth: []
controller: null
method: null
route: null
custom: []
-
httpMethods:
- DELETE
uri: 'api/projects/{project_id}/servers/{server_id}'
metadata:
groupName: servers
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: delete
description: 'Delete server.'
authenticated: false
custom: []
headers:
Content-Type: application/json
Accept: application/json
urlParameters:
project_id:
name: project_id
description: 'The ID of the project.'
required: true
example: 1
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
server_id:
name: server_id
description: 'The ID of the server.'
required: true
example: 6
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanUrlParameters:
project_id: 1
server_id: 6
queryParameters: []
cleanQueryParameters: []
bodyParameters: []
cleanBodyParameters: []
fileParameters: []
responses:
-
status: 204
content: null
headers: []
description: ''
custom: []
responseFields: []
auth: []
controller: null
method: null
route: null

View File

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

View File

@ -1,23 +1,22 @@
## Autogenerated by Scribe. DO NOT MODIFY.
name: services
name: ssh-keys
description: ''
endpoints:
-
httpMethods:
- GET
uri: 'api/projects/{project_id}/servers/{server_id}/services'
uri: 'api/projects/{project_id}/servers/{server_id}/ssh-keys'
metadata:
groupName: services
groupName: ssh-keys
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: list
description: 'Get all services.'
authenticated: true
description: 'Get all ssh keys.'
authenticated: false
custom: []
headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json
Accept: application/json
urlParameters:
@ -35,7 +34,7 @@ endpoints:
name: server_id
description: 'The ID of the server.'
required: true
example: 29
example: 6
type: integer
enumValues: []
exampleWasSpecified: false
@ -43,7 +42,7 @@ endpoints:
custom: []
cleanUrlParameters:
project_id: 1
server_id: 29
server_id: 6
queryParameters: []
cleanQueryParameters: []
bodyParameters: []
@ -52,34 +51,30 @@ endpoints:
responses:
-
status: 200
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}}'
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}}'
headers: []
description: ''
custom: []
responseFields: []
auth:
- headers
- Authorization
- 'Bearer gVEce46k8aZfaP3d15vbhD6'
auth: []
controller: null
method: null
route: null
custom: []
-
httpMethods:
- GET
uri: 'api/projects/{project_id}/servers/{server_id}/services/{id}'
- POST
uri: 'api/projects/{project_id}/servers/{server_id}/ssh-keys'
metadata:
groupName: services
groupName: ssh-keys
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: show
description: 'Get a service by ID.'
authenticated: true
title: create
description: 'Deploy ssh key to server.'
authenticated: false
custom: []
headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json
Accept: application/json
urlParameters:
@ -97,17 +92,7 @@ endpoints:
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
example: 6
type: integer
enumValues: []
exampleWasSpecified: false
@ -115,390 +100,54 @@ endpoints:
custom: []
cleanUrlParameters:
project_id: 1
server_id: 29
id: 169
server_id: 6
queryParameters: []
cleanQueryParameters: []
bodyParameters: []
cleanBodyParameters: []
bodyParameters:
key_id:
name: key_id
description: 'The ID of the key.'
required: true
example: architecto
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
name:
name: name
description: 'Key name, required if key_id is not provided.'
required: true
example: architecto
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
public_key:
name: public_key
description: 'Public Key, required if key_id is not provided.'
required: true
example: architecto
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanBodyParameters:
key_id: architecto
name: architecto
public_key: architecto
fileParameters: []
responses:
-
status: 200
content: '{"id":null,"server_id":null,"type":null,"type_data":null,"name":null,"version":null,"unit":null,"status":null,"is_default":null,"created_at":null,"updated_at":null}'
content: '{"id":3,"name":"Ms. Elisabeth Okuneva","created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"}'
headers: []
description: ''
custom: []
responseFields: []
auth:
- headers
- Authorization
- 'Bearer Ef8D5gbV6cadk3Zh1vP46ea'
controller: null
method: null
route: null
custom: []
-
httpMethods:
- POST
uri: 'api/projects/{project_id}/servers/{server_id}/services/{service_id}/start'
metadata:
groupName: services
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: start
description: 'Start service.'
authenticated: 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 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'
auth: []
controller: null
method: null
route: null
@ -506,18 +155,17 @@ endpoints:
-
httpMethods:
- DELETE
uri: 'api/projects/{project_id}/servers/{server_id}/services/{service_id}'
uri: 'api/projects/{project_id}/servers/{server_id}/ssh-keys/{sshKey_id}'
metadata:
groupName: services
groupName: ssh-keys
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: delete
description: 'Delete service.'
authenticated: true
description: 'Delete ssh key from server.'
authenticated: false
custom: []
headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json
Accept: application/json
urlParameters:
@ -535,17 +183,17 @@ endpoints:
name: server_id
description: 'The ID of the server.'
required: true
example: 29
example: 6
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
service_id:
name: service_id
description: 'The ID of the service.'
sshKey_id:
name: sshKey_id
description: 'The ID of the sshKey.'
required: true
example: 169
example: 1
type: integer
enumValues: []
exampleWasSpecified: false
@ -553,8 +201,8 @@ endpoints:
custom: []
cleanUrlParameters:
project_id: 1
server_id: 29
service_id: 169
server_id: 6
sshKey_id: 1
queryParameters: []
cleanQueryParameters: []
bodyParameters: []
@ -568,10 +216,7 @@ endpoints:
description: ''
custom: []
responseFields: []
auth:
- headers
- Authorization
- 'Bearer Pekav16cd5ag486ZfD3EVbh'
auth: []
controller: null
method: 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,23 +1,22 @@
## Autogenerated by Scribe. DO NOT MODIFY.
name: storage-providers
name: source-controls
description: ''
endpoints:
-
httpMethods:
- GET
uri: 'api/projects/{project_id}/storage-providers'
uri: 'api/projects/{project_id}/source-controls'
metadata:
groupName: storage-providers
groupName: source-controls
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: list
description: ''
authenticated: true
authenticated: false
custom: []
headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json
Accept: application/json
urlParameters:
@ -41,15 +40,12 @@ endpoints:
responses:
-
status: 200
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}}'
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}}'
headers: []
description: ''
custom: []
responseFields: []
auth:
- headers
- Authorization
- 'Bearer fgh4eV31dP58kvaDEaZbc66'
auth: []
controller: null
method: null
route: null
@ -57,18 +53,17 @@ endpoints:
-
httpMethods:
- POST
uri: 'api/projects/{project_id}/storage-providers'
uri: 'api/projects/{project_id}/source-controls'
metadata:
groupName: storage-providers
groupName: source-controls
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: create
description: ''
authenticated: true
authenticated: false
custom: []
headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json
Accept: application/json
urlParameters:
@ -89,11 +84,14 @@ endpoints:
bodyParameters:
provider:
name: provider
description: 'The provider (aws, linode, hetzner, digitalocean, vultr, ...)'
description: 'The provider'
required: true
example: ab
example: gitlab
type: string
enumValues: []
enumValues:
- gitlab
- github
- bitbucket
exampleWasSpecified: false
nullable: false
custom: []
@ -101,7 +99,7 @@ endpoints:
name: name
description: 'The name of the storage provider.'
required: true
example: quo
example: architecto
type: string
enumValues: []
exampleWasSpecified: false
@ -111,51 +109,59 @@ endpoints:
name: token
description: 'The token if provider requires api token'
required: true
example: in
example: architecto
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
key:
name: key
description: 'The key if provider requires key'
url:
name: url
description: 'The URL if the provider is Gitlab and it is self-hosted'
required: true
example: sunt
example: 'http://www.bailey.biz/quos-velit-et-fugiat-sunt-nihil-accusantium-harum.html'
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
secret:
name: secret
description: 'The secret if provider requires key'
username:
name: username
description: 'The username if the provider is Bitbucket'
required: true
example: molestias
example: architecto
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
password:
name: password
description: 'The password if the provider is Bitbucket'
required: true
example: '|]|{+-'
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanBodyParameters:
provider: ab
name: quo
token: in
key: sunt
secret: molestias
provider: gitlab
name: architecto
token: architecto
url: 'http://www.bailey.biz/quos-velit-et-fugiat-sunt-nihil-accusantium-harum.html'
username: architecto
password: '|]|{+-'
fileParameters: []
responses:
-
status: 200
content: '{"id":5,"project_id":null,"global":true,"name":"asperiores","provider":"dropbox","created_at":"2025-04-05T17:48:03.000000Z","updated_at":"2025-04-05T17:48:03.000000Z"}'
content: '{"id":2,"project_id":null,"global":true,"name":"Mrs. Justina Gaylord","provider":"github","created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"}'
headers: []
description: ''
custom: []
responseFields: []
auth:
- headers
- Authorization
- 'Bearer e584613dkZaPDEVvgcahbf6'
auth: []
controller: null
method: null
route: null
@ -163,18 +169,17 @@ endpoints:
-
httpMethods:
- GET
uri: 'api/projects/{project_id}/storage-providers/{storageProvider_id}'
uri: 'api/projects/{project_id}/source-controls/{sourceControl_id}'
metadata:
groupName: storage-providers
groupName: source-controls
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: show
description: ''
authenticated: true
authenticated: false
custom: []
headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json
Accept: application/json
urlParameters:
@ -188,11 +193,11 @@ endpoints:
exampleWasSpecified: false
nullable: false
custom: []
storageProvider_id:
name: storageProvider_id
description: 'The ID of the storageProvider.'
sourceControl_id:
name: sourceControl_id
description: 'The ID of the sourceControl.'
required: true
example: 3
example: 1
type: integer
enumValues: []
exampleWasSpecified: false
@ -200,7 +205,7 @@ endpoints:
custom: []
cleanUrlParameters:
project_id: 1
storageProvider_id: 3
sourceControl_id: 1
queryParameters: []
cleanQueryParameters: []
bodyParameters: []
@ -209,15 +214,12 @@ endpoints:
responses:
-
status: 200
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"}'
content: '{"id":2,"project_id":null,"global":true,"name":"Misael Runte","provider":"github","created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"}'
headers: []
description: ''
custom: []
responseFields: []
auth:
- headers
- Authorization
- 'Bearer h6Zk6834dDce5fbPa1VvagE'
auth: []
controller: null
method: null
route: null
@ -225,18 +227,17 @@ endpoints:
-
httpMethods:
- PUT
uri: 'api/projects/{project_id}/storage-providers/{storageProvider_id}'
uri: 'api/projects/{project_id}/source-controls/{sourceControl_id}'
metadata:
groupName: storage-providers
groupName: source-controls
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: update
description: ''
authenticated: true
authenticated: false
custom: []
headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json
Accept: application/json
urlParameters:
@ -250,11 +251,11 @@ endpoints:
exampleWasSpecified: false
nullable: false
custom: []
storageProvider_id:
name: storageProvider_id
description: 'The ID of the storageProvider.'
sourceControl_id:
name: sourceControl_id
description: 'The ID of the sourceControl.'
required: true
example: 3
example: 1
type: integer
enumValues: []
exampleWasSpecified: false
@ -262,7 +263,7 @@ endpoints:
custom: []
cleanUrlParameters:
project_id: 1
storageProvider_id: 3
sourceControl_id: 1
queryParameters: []
cleanQueryParameters: []
bodyParameters:
@ -270,7 +271,47 @@ endpoints:
name: name
description: 'The name of the storage provider.'
required: true
example: voluptas
example: architecto
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
token:
name: token
description: 'The token if provider requires api token'
required: true
example: architecto
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
url:
name: url
description: 'The URL if the provider is Gitlab and it is self-hosted'
required: true
example: 'http://www.bailey.biz/quos-velit-et-fugiat-sunt-nihil-accusantium-harum.html'
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
username:
name: username
description: 'The username if the provider is Bitbucket'
required: true
example: architecto
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
password:
name: password
description: 'The password if the provider is Bitbucket'
required: true
example: '|]|{+-'
type: string
enumValues: []
exampleWasSpecified: false
@ -280,7 +321,7 @@ endpoints:
name: global
description: 'Accessible in all projects'
required: true
example: true
example: false
type: string
enumValues:
- true
@ -289,21 +330,22 @@ endpoints:
nullable: false
custom: []
cleanBodyParameters:
name: voluptas
global: true
name: architecto
token: architecto
url: 'http://www.bailey.biz/quos-velit-et-fugiat-sunt-nihil-accusantium-harum.html'
username: architecto
password: '|]|{+-'
global: false
fileParameters: []
responses:
-
status: 200
content: '{"id":5,"project_id":null,"global":true,"name":"minima","provider":"ftp","created_at":"2025-04-05T17:48:03.000000Z","updated_at":"2025-04-05T17:48:03.000000Z"}'
content: '{"id":2,"project_id":null,"global":true,"name":"Mrs. Justina Gaylord","provider":"github","created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"}'
headers: []
description: ''
custom: []
responseFields: []
auth:
- headers
- Authorization
- 'Bearer ak6fgd1Eba48chvPV3e5Z6D'
auth: []
controller: null
method: null
route: null
@ -311,18 +353,17 @@ endpoints:
-
httpMethods:
- DELETE
uri: 'api/projects/{project_id}/storage-providers/{storageProvider_id}'
uri: 'api/projects/{project_id}/source-controls/{sourceControl_id}'
metadata:
groupName: storage-providers
groupName: source-controls
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: delete
description: ''
authenticated: true
authenticated: false
custom: []
headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json
Accept: application/json
urlParameters:
@ -336,11 +377,11 @@ endpoints:
exampleWasSpecified: false
nullable: false
custom: []
storageProvider_id:
name: storageProvider_id
description: 'The ID of the storageProvider.'
sourceControl_id:
name: sourceControl_id
description: 'The ID of the sourceControl.'
required: true
example: 3
example: 1
type: integer
enumValues: []
exampleWasSpecified: false
@ -348,7 +389,7 @@ endpoints:
custom: []
cleanUrlParameters:
project_id: 1
storageProvider_id: 3
sourceControl_id: 1
queryParameters: []
cleanQueryParameters: []
bodyParameters: []
@ -362,10 +403,7 @@ endpoints:
description: ''
custom: []
responseFields: []
auth:
- headers
- Authorization
- 'Bearer PcaDbh6ZE4aV1e8fdv56k3g'
auth: []
controller: null
method: null
route: null

View File

@ -0,0 +1,352 @@
## Autogenerated by Scribe. DO NOT MODIFY.
name: storage-providers
description: ''
endpoints:
-
httpMethods:
- GET
uri: 'api/projects/{project_id}/storage-providers'
metadata:
groupName: storage-providers
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: list
description: ''
authenticated: false
custom: []
headers:
Content-Type: application/json
Accept: application/json
urlParameters:
project_id:
name: project_id
description: 'The ID of the project.'
required: true
example: 1
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanUrlParameters:
project_id: 1
queryParameters: []
cleanQueryParameters: []
bodyParameters: []
cleanBodyParameters: []
fileParameters: []
responses:
-
status: 200
content: '{"data":[{"id":4,"project_id":null,"global":true,"name":"harum","provider":"local","created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"},{"id":5,"project_id":null,"global":true,"name":"commodi","provider":"local","created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"}],"links":{"first":"\/?page=1","last":"\/?page=1","prev":null,"next":null},"meta":{"current_page":1,"from":1,"last_page":1,"links":[{"url":null,"label":"&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,290 +1,158 @@
name: cron-jobs
name: Endpoints
description: ''
endpoints:
-
httpMethods:
- GET
uri: 'api/projects/{project_id}/servers/{server_id}/cron-jobs'
metadata:
groupName: cron-jobs
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: list
description: 'Get all cron jobs.'
authenticated: 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: 200
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: []
description: ''
custom: []
responseFields: []
auth:
- headers
- Authorization
- 'Bearer eDa6Vdh1Z4vc35bP8E6gafk'
controller: null
method: null
route: null
custom: []
-
httpMethods:
- POST
uri: 'api/projects/{project_id}/servers/{server_id}/cron-jobs'
uri: 'api/servers/{server_id}/agent/{id}'
metadata:
groupName: cron-jobs
groupName: Endpoints
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: create
description: 'Create a new cron job.'
authenticated: true
title: ''
description: ''
authenticated: false
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: []
id:
name: id
description: 'The ID of the agent.'
required: true
example: architecto
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanUrlParameters:
project_id: 1
server_id: 29
cronJob_id: 6
server_id: 6
id: architecto
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: []
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:
- headers
- Authorization
- 'Bearer D4c3Z65ebv8E16fahaVgPdk'
auth: []
controller: null
method: null
route: null
custom: []
-
httpMethods:
- DELETE
uri: 'api/projects/{project_id}/servers/{server_id}/cron-jobs/{cronJob_id}'
0: GET
2: POST
3: PUT
4: PATCH
5: DELETE
6: OPTIONS
uri: api/git-hooks
metadata:
groupName: cron-jobs
groupName: Endpoints
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: delete
description: 'Delete cron job.'
authenticated: true
title: ''
description: ''
authenticated: false
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
urlParameters: []
cleanUrlParameters: []
queryParameters: []
cleanQueryParameters: []
bodyParameters: []
@ -292,16 +160,21 @@ endpoints:
fileParameters: []
responses:
-
status: 204
content: null
headers: []
description: ''
status: 404
content: |-
{
"message": ""
}
headers:
cache-control: 'no-cache, private'
content-type: application/json
x-ratelimit-limit: '60'
x-ratelimit-remaining: '57'
access-control-allow-origin: '*'
description: null
custom: []
responseFields: []
auth:
- headers
- Authorization
- 'Bearer h3cP4aZa1v8feDdEg5b6k6V'
auth: []
controller: null
method: null
route: null

View File

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

View File

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

View File

@ -1,21 +1,20 @@
name: firewall-rules
name: database-users
description: ''
endpoints:
-
httpMethods:
- GET
uri: 'api/projects/{project_id}/servers/{server_id}/firewall-rules'
uri: 'api/projects/{project_id}/servers/{server_id}/database-users'
metadata:
groupName: firewall-rules
groupName: database-users
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: list
description: 'Get all firewall rules.'
authenticated: true
description: 'Get all database users.'
authenticated: false
custom: []
headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json
Accept: application/json
urlParameters:
@ -33,7 +32,7 @@ endpoints:
name: server_id
description: 'The ID of the server.'
required: true
example: 29
example: 6
type: integer
enumValues: []
exampleWasSpecified: false
@ -41,7 +40,7 @@ endpoints:
custom: []
cleanUrlParameters:
project_id: 1
server_id: 29
server_id: 6
queryParameters: []
cleanQueryParameters: []
bodyParameters: []
@ -50,15 +49,12 @@ endpoints:
responses:
-
status: 200
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}}'
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}}'
headers: []
description: ''
custom: []
responseFields: []
auth:
- headers
- Authorization
- 'Bearer eD368kaZfVEab4v61ghdP5c'
auth: []
controller: null
method: null
route: null
@ -66,18 +62,17 @@ endpoints:
-
httpMethods:
- POST
uri: 'api/projects/{project_id}/servers/{server_id}/firewall-rules'
uri: 'api/projects/{project_id}/servers/{server_id}/database-users'
metadata:
groupName: firewall-rules
groupName: database-users
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: create
description: 'Create a new firewall rule.'
authenticated: true
description: 'Create a new database user.'
authenticated: false
custom: []
headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json
Accept: application/json
urlParameters:
@ -95,7 +90,7 @@ endpoints:
name: server_id
description: 'The ID of the server.'
required: true
example: 29
example: 6
type: integer
enumValues: []
exampleWasSpecified: false
@ -103,237 +98,54 @@ endpoints:
custom: []
cleanUrlParameters:
project_id: 1
server_id: 29
server_id: 6
queryParameters: []
cleanQueryParameters: []
bodyParameters:
name:
name: name
username:
name: username
description: ''
required: true
example: sapiente
example: architecto
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
type:
name: type
password:
name: password
description: ''
required: true
example: allow
type: string
enumValues:
- allow
- deny
exampleWasSpecified: false
nullable: false
custom: []
protocol:
name: protocol
description: ''
required: true
example: tcp
type: string
enumValues:
- tcp
- udp
exampleWasSpecified: false
nullable: false
custom: []
port:
name: port
description: ''
required: true
example: et
example: '|]|{+-'
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
source:
name: source
description: ''
required: false
example: doloribus
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
mask:
name: mask
description: 'Mask for source IP.'
host:
name: host
description: 'Host, if it is a remote user.'
required: true
example: '0'
example: '%'
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanBodyParameters:
name: sapiente
type: allow
protocol: tcp
port: et
source: doloribus
mask: '0'
username: architecto
password: '|]|{+-'
host: '%'
fileParameters: []
responses:
-
status: 200
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}'
content: '{"id":4,"server_id":1,"username":"justina.gaylord","databases":[],"host":"%","status":"creating","status_color":"warning","created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"}'
headers: []
description: ''
custom: []
responseFields: []
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'
auth: []
controller: null
method: null
route: null
@ -341,18 +153,17 @@ endpoints:
-
httpMethods:
- GET
uri: 'api/projects/{project_id}/servers/{server_id}/firewall-rules/{firewallRule_id}'
uri: 'api/projects/{project_id}/servers/{server_id}/database-users/{databaseUser_id}'
metadata:
groupName: firewall-rules
groupName: database-users
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: show
description: 'Get a firewall rule by ID.'
authenticated: true
description: 'Get a database user by ID.'
authenticated: false
custom: []
headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json
Accept: application/json
urlParameters:
@ -370,17 +181,17 @@ endpoints:
name: server_id
description: 'The ID of the server.'
required: true
example: 29
example: 6
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
firewallRule_id:
name: firewallRule_id
description: 'The ID of the firewallRule.'
databaseUser_id:
name: databaseUser_id
description: 'The ID of the databaseUser.'
required: true
example: 85
example: 16
type: integer
enumValues: []
exampleWasSpecified: false
@ -388,8 +199,8 @@ endpoints:
custom: []
cleanUrlParameters:
project_id: 1
server_id: 29
firewallRule_id: 85
server_id: 6
databaseUser_id: 16
queryParameters: []
cleanQueryParameters: []
bodyParameters: []
@ -398,34 +209,30 @@ endpoints:
responses:
-
status: 200
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}'
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:
- headers
- Authorization
- 'Bearer 6gkvbDae15a6f43EVPdZh8c'
auth: []
controller: null
method: null
route: null
custom: []
-
httpMethods:
- DELETE
uri: 'api/projects/{project_id}/servers/{server_id}/firewall-rules/{firewallRule_id}'
- POST
uri: 'api/projects/{project_id}/servers/{server_id}/database-users/{databaseUser_id}/link'
metadata:
groupName: firewall-rules
groupName: database-users
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: delete
description: 'Delete firewall rule.'
authenticated: true
title: link
description: 'Link to databases'
authenticated: false
custom: []
headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json
Accept: application/json
urlParameters:
@ -443,17 +250,17 @@ endpoints:
name: server_id
description: 'The ID of the server.'
required: true
example: 29
example: 6
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
firewallRule_id:
name: firewallRule_id
description: 'The ID of the firewallRule.'
databaseUser_id:
name: databaseUser_id
description: 'The ID of the databaseUser.'
required: true
example: 85
example: 16
type: integer
enumValues: []
exampleWasSpecified: false
@ -461,8 +268,88 @@ endpoints:
custom: []
cleanUrlParameters:
project_id: 1
server_id: 29
firewallRule_id: 85
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
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: 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: []
@ -476,10 +363,7 @@ endpoints:
description: ''
custom: []
responseFields: []
auth:
- headers
- Authorization
- 'Bearer ZVd1fk5E3e48hDvaa6g6cPb'
auth: []
controller: null
method: null
route: null

View File

@ -1,24 +1,46 @@
name: general
name: firewall-rules
description: ''
endpoints:
-
httpMethods:
- GET
uri: api/health
uri: 'api/projects/{project_id}/servers/{server_id}/firewall-rules'
metadata:
groupName: general
groupName: firewall-rules
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: health-check
description: ''
title: list
description: 'Get all firewall rules.'
authenticated: false
custom: []
headers:
Content-Type: application/json
Accept: application/json
urlParameters: []
cleanUrlParameters: []
urlParameters:
project_id:
name: project_id
description: 'The ID of the project.'
required: true
example: 1
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
server_id:
name: server_id
description: 'The ID of the server.'
required: true
example: 6
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanUrlParameters:
project_id: 1
server_id: 6
queryParameters: []
cleanQueryParameters: []
bodyParameters: []
@ -27,14 +49,414 @@ endpoints:
responses:
-
status: 200
content: '{"success":true,"version":"2.4.0"}'
headers:
cache-control: 'no-cache, private'
content-type: application/json
x-ratelimit-limit: '60'
x-ratelimit-remaining: '59'
access-control-allow-origin: '*'
description: null
content: '{"data":[{"id":22,"name":"eius","server_id":1,"type":"allow","protocol":"tcp","port":9322,"source":"113.14.236.204","mask":"24","note":"test","status":"creating","status_color":"info","created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"},{"id":23,"name":"velit","server_id":1,"type":"allow","protocol":"tcp","port":2983,"source":"199.172.126.144","mask":"24","note":"test","status":"creating","status_color":"info","created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"}],"links":{"first":"\/?page=1","last":"\/?page=1","prev":null,"next":null},"meta":{"current_page":1,"from":1,"last_page":1,"links":[{"url":null,"label":"&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}/servers/{server_id}/firewall-rules'
metadata:
groupName: firewall-rules
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: create
description: 'Create a new firewall rule.'
authenticated: false
custom: []
headers:
Content-Type: application/json
Accept: application/json
urlParameters:
project_id:
name: project_id
description: 'The ID of the project.'
required: true
example: 1
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
server_id:
name: server_id
description: 'The ID of the server.'
required: true
example: 6
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanUrlParameters:
project_id: 1
server_id: 6
queryParameters: []
cleanQueryParameters: []
bodyParameters:
name:
name: name
description: ''
required: true
example: architecto
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
type:
name: type
description: ''
required: true
example: allow
type: string
enumValues:
- allow
- deny
exampleWasSpecified: false
nullable: false
custom: []
protocol:
name: protocol
description: ''
required: true
example: tcp
type: string
enumValues:
- tcp
- udp
exampleWasSpecified: false
nullable: false
custom: []
port:
name: port
description: ''
required: true
example: architecto
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
source:
name: source
description: ''
required: false
example: architecto
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
mask:
name: mask
description: 'Mask for source IP.'
required: true
example: '0'
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanBodyParameters:
name: architecto
type: allow
protocol: tcp
port: architecto
source: architecto
mask: '0'
fileParameters: []
responses:
-
status: 200
content: '{"id":22,"name":"eius","server_id":1,"type":"allow","protocol":"tcp","port":9322,"source":"113.14.236.204","mask":"24","note":"test","status":"creating","status_color":"info","created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"}'
headers: []
description: ''
custom: []
responseFields: []
auth: []
controller: null
method: null
route: null
custom: []
-
httpMethods:
- PUT
uri: 'api/projects/{project_id}/servers/{server_id}/firewall-rules/{firewallRule_id}'
metadata:
groupName: firewall-rules
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: edit
description: 'Update an existing firewall rule.'
authenticated: false
custom: []
headers:
Content-Type: application/json
Accept: application/json
urlParameters:
project_id:
name: project_id
description: 'The ID of the project.'
required: true
example: 1
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
server_id:
name: server_id
description: 'The ID of the server.'
required: true
example: 6
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
firewallRule_id:
name: firewallRule_id
description: 'The ID of the firewallRule.'
required: true
example: 19
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanUrlParameters:
project_id: 1
server_id: 6
firewallRule_id: 19
queryParameters: []
cleanQueryParameters: []
bodyParameters:
name:
name: name
description: ''
required: true
example: architecto
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
type:
name: type
description: ''
required: true
example: deny
type: string
enumValues:
- allow
- deny
exampleWasSpecified: false
nullable: false
custom: []
protocol:
name: protocol
description: ''
required: true
example: udp
type: string
enumValues:
- tcp
- udp
exampleWasSpecified: false
nullable: false
custom: []
port:
name: port
description: ''
required: true
example: architecto
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
source:
name: source
description: ''
required: false
example: architecto
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
mask:
name: mask
description: 'Mask for source IP.'
required: true
example: '0'
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanBodyParameters:
name: architecto
type: deny
protocol: udp
port: architecto
source: architecto
mask: '0'
fileParameters: []
responses:
-
status: 200
content: '{"id":22,"name":"eius","server_id":1,"type":"allow","protocol":"tcp","port":9322,"source":"113.14.236.204","mask":"24","note":"test","status":"creating","status_color":"info","created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"}'
headers: []
description: ''
custom: []
responseFields: []
auth: []
controller: null
method: null
route: null
custom: []
-
httpMethods:
- GET
uri: 'api/projects/{project_id}/servers/{server_id}/firewall-rules/{firewallRule_id}'
metadata:
groupName: firewall-rules
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: show
description: 'Get a firewall rule by ID.'
authenticated: false
custom: []
headers:
Content-Type: application/json
Accept: application/json
urlParameters:
project_id:
name: project_id
description: 'The ID of the project.'
required: true
example: 1
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
server_id:
name: server_id
description: 'The ID of the server.'
required: true
example: 6
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
firewallRule_id:
name: firewallRule_id
description: 'The ID of the firewallRule.'
required: true
example: 19
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanUrlParameters:
project_id: 1
server_id: 6
firewallRule_id: 19
queryParameters: []
cleanQueryParameters: []
bodyParameters: []
cleanBodyParameters: []
fileParameters: []
responses:
-
status: 200
content: '{"id":22,"name":"velit","server_id":1,"type":"allow","protocol":"tcp","port":2983,"source":"199.172.126.144","mask":"24","note":"test","status":"creating","status_color":"info","created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"}'
headers: []
description: ''
custom: []
responseFields: []
auth: []
controller: null
method: null
route: null
custom: []
-
httpMethods:
- DELETE
uri: 'api/projects/{project_id}/servers/{server_id}/firewall-rules/{firewallRule_id}'
metadata:
groupName: firewall-rules
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: delete
description: 'Delete firewall rule.'
authenticated: false
custom: []
headers:
Content-Type: application/json
Accept: application/json
urlParameters:
project_id:
name: project_id
description: 'The ID of the project.'
required: true
example: 1
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
server_id:
name: server_id
description: 'The ID of the server.'
required: true
example: 6
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
firewallRule_id:
name: firewallRule_id
description: 'The ID of the firewallRule.'
required: true
example: 19
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanUrlParameters:
project_id: 1
server_id: 6
firewallRule_id: 19
queryParameters: []
cleanQueryParameters: []
bodyParameters: []
cleanBodyParameters: []
fileParameters: []
responses:
-
status: 204
content: null
headers: []
description: ''
custom: []
responseFields: []
auth: []

View File

@ -1,21 +1,20 @@
name: projects
name: general
description: ''
endpoints:
-
httpMethods:
- GET
uri: api/projects
uri: api/health
metadata:
groupName: projects
groupName: general
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: list
description: 'Get all projects.'
authenticated: true
title: health-check
description: ''
authenticated: false
custom: []
headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json
Accept: application/json
urlParameters: []
@ -28,230 +27,17 @@ endpoints:
responses:
-
status: 200
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: []
description: ''
content: '{"success":true,"version":"2.5.0"}'
headers:
cache-control: 'no-cache, private'
content-type: application/json
x-ratelimit-limit: '60'
x-ratelimit-remaining: '56'
access-control-allow-origin: '*'
description: null
custom: []
responseFields: []
auth:
- 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'
auth: []
controller: null
method: null
route: null

View File

@ -1,58 +1,24 @@
name: redirects
name: projects
description: ''
endpoints:
-
httpMethods:
- GET
uri: 'api/projects/{project_id}/servers/{server_id}/sites/{site_id}/redirects'
uri: api/projects
metadata:
groupName: redirects
groupName: projects
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: index
description: 'Get all redirects.'
authenticated: true
title: list
description: 'Get all projects.'
authenticated: false
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
urlParameters: []
cleanUrlParameters: []
queryParameters: []
cleanQueryParameters: []
bodyParameters: []
@ -61,15 +27,12 @@ endpoints:
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}}'
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:
- headers
- Authorization
- 'Bearer cV16fevgEZhPadD43685akb'
auth: []
controller: null
method: null
route: null
@ -77,23 +40,69 @@ endpoints:
-
httpMethods:
- POST
uri: 'api/projects/{project_id}/servers/{server_id}/sites/{site_id}/redirects'
uri: api/projects
metadata:
groupName: redirects
groupName: projects
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: create
description: 'Create a new redirect.'
authenticated: true
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:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json
Accept: application/json
urlParameters:
project_id:
name: project_id
id:
name: id
description: 'The ID of the project.'
required: true
example: 1
@ -102,84 +111,80 @@ endpoints:
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
cleanUrlParameters:
id: 1
queryParameters: []
cleanQueryParameters: []
bodyParameters: []
cleanBodyParameters: []
fileParameters: []
responses:
-
status: 200
content: '{"id":3,"name":"Aleen O''Kon","created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"}'
headers: []
description: ''
custom: []
site_id:
name: site_id
description: 'The ID of the site.'
responseFields: []
auth: []
controller: null
method: null
route: null
custom: []
-
httpMethods:
- PUT
uri: 'api/projects/{id}'
metadata:
groupName: projects
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: update
description: 'Update project.'
authenticated: false
custom: []
headers:
Content-Type: application/json
Accept: application/json
urlParameters:
id:
name: id
description: 'The ID of the project.'
required: true
example: 44
example: 1
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanUrlParameters:
project_id: 1
server_id: 29
site_id: 44
id: 1
queryParameters: []
cleanQueryParameters: []
bodyParameters:
from:
name: from
description: ''
name:
name: name
description: 'The name of the project.'
required: true
example: odit
example: architecto
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
name: architecto
fileParameters: []
responses:
-
status: 200
content: null
content: '{"id":3,"name":"Ms. Elisabeth Okuneva","created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"}'
headers: []
description: ''
custom: []
responseFields: []
auth:
- headers
- Authorization
- 'Bearer ZD45hPk638abev61EVcagdf'
auth: []
controller: null
method: null
route: null
@ -187,18 +192,17 @@ endpoints:
-
httpMethods:
- DELETE
uri: 'api/projects/{project_id}/servers/{server_id}/sites/{site_id}/redirects/{redirect_id}'
uri: 'api/projects/{project_id}'
metadata:
groupName: redirects
groupName: projects
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: delete
description: 'Delete a redirect.'
authenticated: true
description: 'Delete project.'
authenticated: false
custom: []
headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json
Accept: application/json
urlParameters:
@ -212,41 +216,8 @@ endpoints:
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: []
cleanQueryParameters: []
bodyParameters: []
@ -260,10 +231,7 @@ endpoints:
description: ''
custom: []
responseFields: []
auth:
- headers
- Authorization
- 'Bearer Ec3fDgdbae615aPh8k6vV4Z'
auth: []
controller: null
method: null
route: null

View File

@ -1,72 +1,20 @@
name: servers
name: redirects
description: ''
endpoints:
-
httpMethods:
- GET
uri: 'api/projects/{project_id}/servers'
metadata:
groupName: servers
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: list
description: 'Get all servers in a project.'
authenticated: 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: 200
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: []
description: ''
custom: []
responseFields: []
auth:
- headers
- Authorization
- 'Bearer Pg1Vk6cvadD8eb3ZhaEf564'
controller: null
method: null
route: null
custom: []
-
httpMethods:
- POST
uri: 'api/projects/{project_id}/servers'
uri: 'api/projects/{project_id}/servers/{server_id}/sites/{site_id}/redirects'
metadata:
groupName: servers
groupName: redirects
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: create
description: 'Create a new server.'
authenticated: true
description: 'Create a new redirect.'
authenticated: false
custom: []
headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json
Accept: application/json
urlParameters:
@ -80,359 +28,81 @@ endpoints:
exampleWasSpecified: false
nullable: false
custom: []
server_id:
name: server_id
description: 'The ID of the server.'
required: true
example: 6
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
site_id:
name: site_id
description: 'The ID of the site.'
required: true
example: 14
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanUrlParameters:
project_id: 1
server_id: 6
site_id: 14
queryParameters: []
cleanQueryParameters: []
bodyParameters:
provider:
name: provider
description: 'The server provider type'
from:
name: from
description: ''
required: true
example: fugiat
example: architecto
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
server_provider:
name: server_provider
description: 'If the provider is not custom, the ID of the server provider profile'
to:
name: to
description: ''
required: true
example: digitalocean
example: architecto
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
mode:
name: mode
description: ''
required: true
example: 307
type: string
enumValues:
- custom
- hetzner
- digitalocean
- linode
- vultr
exampleWasSpecified: false
nullable: false
custom: []
region:
name: region
description: 'Provider region if the provider is not custom'
required: true
example: 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'
- 301
- 302
- 307
- 308
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'
from: architecto
to: architecto
mode: 307
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
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 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'
auth: []
controller: null
method: null
route: null
@ -440,18 +110,17 @@ endpoints:
-
httpMethods:
- DELETE
uri: 'api/projects/{project_id}/servers/{server_id}'
uri: 'api/projects/{project_id}/servers/{server_id}/sites/{site_id}/redirects/{redirect_id}'
metadata:
groupName: servers
groupName: redirects
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: delete
description: 'Delete server.'
authenticated: true
description: 'Delete a redirect.'
authenticated: false
custom: []
headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json
Accept: application/json
urlParameters:
@ -469,7 +138,27 @@ endpoints:
name: server_id
description: 'The ID of the server.'
required: true
example: 29
example: 6
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
site_id:
name: site_id
description: 'The ID of the site.'
required: true
example: 14
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
redirect_id:
name: redirect_id
description: 'The ID of the redirect.'
required: true
example: 2
type: integer
enumValues: []
exampleWasSpecified: false
@ -477,7 +166,9 @@ endpoints:
custom: []
cleanUrlParameters:
project_id: 1
server_id: 29
server_id: 6
site_id: 14
redirect_id: 2
queryParameters: []
cleanQueryParameters: []
bodyParameters: []
@ -491,10 +182,7 @@ endpoints:
description: ''
custom: []
responseFields: []
auth:
- headers
- Authorization
- 'Bearer 6aDkZEfdP16V58gb43avhec'
auth: []
controller: null
method: null
route: null

View File

@ -1,21 +1,20 @@
name: server-providers
name: servers
description: ''
endpoints:
-
httpMethods:
- GET
uri: 'api/projects/{project_id}/server-providers'
uri: 'api/projects/{project_id}/servers'
metadata:
groupName: server-providers
groupName: servers
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: list
description: ''
authenticated: true
description: 'Get all servers in a project.'
authenticated: false
custom: []
headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json
Accept: application/json
urlParameters:
@ -39,15 +38,12 @@ endpoints:
responses:
-
status: 200
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}}'
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}}'
headers: []
description: ''
custom: []
responseFields: []
auth:
- headers
- Authorization
- 'Bearer 3evaP8h6VEZkbfgaD6d1c45'
auth: []
controller: null
method: null
route: null
@ -55,18 +51,17 @@ endpoints:
-
httpMethods:
- POST
uri: 'api/projects/{project_id}/server-providers'
uri: 'api/projects/{project_id}/servers'
metadata:
groupName: server-providers
groupName: servers
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: create
description: ''
authenticated: true
description: 'Create a new server.'
authenticated: false
custom: []
headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json
Accept: application/json
urlParameters:
@ -87,9 +82,64 @@ endpoints:
bodyParameters:
provider:
name: provider
description: 'The provider (aws, linode, hetzner, digitalocean, vultr, ...)'
description: 'The server provider type'
required: true
example: corrupti
example: architecto
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
server_provider:
name: server_provider
description: 'If the provider is not custom, the ID of the server provider profile'
required: true
example: linode
type: string
enumValues:
- custom
- hetzner
- digitalocean
- linode
- vultr
exampleWasSpecified: false
nullable: false
custom: []
region:
name: region
description: 'Provider region if the provider is not custom'
required: true
example: architecto
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
plan:
name: plan
description: 'Provider plan if the provider is not custom'
required: true
example: architecto
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
ip:
name: ip
description: 'SSH IP address if the provider is custom'
required: true
example: architecto
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
port:
name: port
description: 'SSH Port if the provider is custom'
required: true
example: architecto
type: string
enumValues: []
exampleWasSpecified: false
@ -97,63 +147,99 @@ endpoints:
custom: []
name:
name: name
description: 'The name of the server provider.'
description: 'The name of the server.'
required: true
example: est
example: architecto
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
token:
name: token
description: 'The token if provider requires api token'
os:
name: os
description: 'The os of the server'
required: true
example: rerum
example: architecto
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
key:
name: key
description: 'The key if provider requires key'
webserver:
name: webserver
description: 'Web server'
required: true
example: ut
example: none
type: string
enumValues: []
enumValues:
- none
- nginx
- caddy
exampleWasSpecified: false
nullable: false
custom: []
secret:
name: secret
description: 'The secret if provider requires key'
database:
name: database
description: Database
required: true
example: sed
example: mysql80
type: string
enumValues: []
enumValues:
- none
- mysql57
- mysql80
- mariadb103
- mariadb104
- mariadb103
- postgresql12
- postgresql13
- postgresql14
- postgresql15
- postgresql16
exampleWasSpecified: false
nullable: false
custom: []
php:
name: php
description: 'PHP version'
required: true
example: '8.2'
type: string
enumValues:
- '7.0'
- '7.1'
- '7.2'
- '7.3'
- '7.4'
- '8.0'
- '8.1'
- '8.2'
- '8.3'
exampleWasSpecified: false
nullable: false
custom: []
cleanBodyParameters:
provider: corrupti
name: est
token: rerum
key: ut
secret: sed
provider: architecto
server_provider: linode
region: architecto
plan: architecto
ip: architecto
port: architecto
name: architecto
os: architecto
webserver: none
database: mysql80
php: '8.2'
fileParameters: []
responses:
-
status: 200
content: '{"id":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"}'
content: '{"id":7,"project_id":1,"services":[],"user_id":1,"provider_id":null,"name":"Ms. Elisabeth Okuneva","ssh_user":"vito","ssh_users":["root","vito"],"ip":"75.13.66.152","local_ip":"199.172.126.144","port":22,"os":"ubuntu_22","type":"regular","type_data":null,"provider":"custom","provider_data":null,"public_key":"test","status":"ready","auto_update":null,"available_updates":0,"security_updates":null,"progress":100,"progress_step":null,"updates":0,"last_update_check":null,"status_color":"success","created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"}'
headers: []
description: ''
custom: []
responseFields: []
auth:
- headers
- Authorization
- 'Bearer 6g6vfEck83VaPhd5Zabe1D4'
auth: []
controller: null
method: null
route: null
@ -161,18 +247,17 @@ endpoints:
-
httpMethods:
- GET
uri: 'api/projects/{project_id}/server-providers/{serverProvider_id}'
uri: 'api/projects/{project_id}/servers/{id}'
metadata:
groupName: server-providers
groupName: servers
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: show
description: ''
authenticated: true
description: 'Get a server by ID.'
authenticated: false
custom: []
headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json
Accept: application/json
urlParameters:
@ -186,11 +271,11 @@ endpoints:
exampleWasSpecified: false
nullable: false
custom: []
serverProvider_id:
name: serverProvider_id
description: 'The ID of the serverProvider.'
id:
name: id
description: 'The ID of the server.'
required: true
example: 1
example: 6
type: integer
enumValues: []
exampleWasSpecified: false
@ -198,7 +283,7 @@ endpoints:
custom: []
cleanUrlParameters:
project_id: 1
serverProvider_id: 1
id: 6
queryParameters: []
cleanQueryParameters: []
bodyParameters: []
@ -207,34 +292,30 @@ endpoints:
responses:
-
status: 200
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"}'
content: '{"id":7,"project_id":1,"services":[],"user_id":1,"provider_id":null,"name":"Belle Dickens","ssh_user":"vito","ssh_users":["root","vito"],"ip":"51.210.32.30","local_ip":"82.174.132.158","port":22,"os":"ubuntu_22","type":"regular","type_data":null,"provider":"custom","provider_data":null,"public_key":"test","status":"ready","auto_update":null,"available_updates":0,"security_updates":null,"progress":100,"progress_step":null,"updates":0,"last_update_check":null,"status_color":"success","created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"}'
headers: []
description: ''
custom: []
responseFields: []
auth:
- headers
- Authorization
- 'Bearer va63cDe8dPf5Z4Vahb1E6kg'
auth: []
controller: null
method: null
route: null
custom: []
-
httpMethods:
- PUT
uri: 'api/projects/{project_id}/server-providers/{serverProvider_id}'
- POST
uri: 'api/projects/{project_id}/servers/{server_id}/reboot'
metadata:
groupName: server-providers
groupName: servers
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: update
description: ''
authenticated: true
title: reboot
description: 'Reboot a server.'
authenticated: false
custom: []
headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json
Accept: application/json
urlParameters:
@ -248,11 +329,11 @@ endpoints:
exampleWasSpecified: false
nullable: false
custom: []
serverProvider_id:
name: serverProvider_id
description: 'The ID of the serverProvider.'
server_id:
name: server_id
description: 'The ID of the server.'
required: true
example: 1
example: 6
type: integer
enumValues: []
exampleWasSpecified: false
@ -260,93 +341,7 @@ endpoints:
custom: []
cleanUrlParameters:
project_id: 1
serverProvider_id: 1
queryParameters: []
cleanQueryParameters: []
bodyParameters:
name:
name: name
description: 'The name of the server provider.'
required: true
example: earum
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: earum
global: false
fileParameters: []
responses:
-
status: 200
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: []
description: ''
custom: []
responseFields: []
auth:
- headers
- Authorization
- 'Bearer 4e1dghaV6D856P3ZbfkcEva'
controller: null
method: null
route: null
custom: []
-
httpMethods:
- DELETE
uri: 'api/projects/{project_id}/server-providers/{serverProvider_id}'
metadata:
groupName: server-providers
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: delete
description: ''
authenticated: 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: []
serverProvider_id:
name: serverProvider_id
description: 'The ID of the serverProvider.'
required: true
example: 1
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanUrlParameters:
project_id: 1
serverProvider_id: 1
server_id: 6
queryParameters: []
cleanQueryParameters: []
bodyParameters: []
@ -360,10 +355,123 @@ endpoints:
description: ''
custom: []
responseFields: []
auth:
- headers
- Authorization
- 'Bearer fcVa8ev63gP5DaZbkdhE461'
auth: []
controller: null
method: null
route: null
custom: []
-
httpMethods:
- POST
uri: 'api/projects/{project_id}/servers/{server_id}/upgrade'
metadata:
groupName: servers
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: upgrade
description: 'Upgrade server.'
authenticated: false
custom: []
headers:
Content-Type: application/json
Accept: application/json
urlParameters:
project_id:
name: project_id
description: 'The ID of the project.'
required: true
example: 1
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
server_id:
name: server_id
description: 'The ID of the server.'
required: true
example: 6
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanUrlParameters:
project_id: 1
server_id: 6
queryParameters: []
cleanQueryParameters: []
bodyParameters: []
cleanBodyParameters: []
fileParameters: []
responses:
-
status: 204
content: null
headers: []
description: ''
custom: []
responseFields: []
auth: []
controller: null
method: null
route: null
custom: []
-
httpMethods:
- DELETE
uri: 'api/projects/{project_id}/servers/{server_id}'
metadata:
groupName: servers
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: delete
description: 'Delete server.'
authenticated: false
custom: []
headers:
Content-Type: application/json
Accept: application/json
urlParameters:
project_id:
name: project_id
description: 'The ID of the project.'
required: true
example: 1
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
server_id:
name: server_id
description: 'The ID of the server.'
required: true
example: 6
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanUrlParameters:
project_id: 1
server_id: 6
queryParameters: []
cleanQueryParameters: []
bodyParameters: []
cleanBodyParameters: []
fileParameters: []
responses:
-
status: 204
content: null
headers: []
description: ''
custom: []
responseFields: []
auth: []
controller: null
method: null
route: null

View File

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

View File

@ -1,21 +1,20 @@
name: services
name: ssh-keys
description: ''
endpoints:
-
httpMethods:
- GET
uri: 'api/projects/{project_id}/servers/{server_id}/services'
uri: 'api/projects/{project_id}/servers/{server_id}/ssh-keys'
metadata:
groupName: services
groupName: ssh-keys
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: list
description: 'Get all services.'
authenticated: true
description: 'Get all ssh keys.'
authenticated: false
custom: []
headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json
Accept: application/json
urlParameters:
@ -33,7 +32,7 @@ endpoints:
name: server_id
description: 'The ID of the server.'
required: true
example: 29
example: 6
type: integer
enumValues: []
exampleWasSpecified: false
@ -41,7 +40,7 @@ endpoints:
custom: []
cleanUrlParameters:
project_id: 1
server_id: 29
server_id: 6
queryParameters: []
cleanQueryParameters: []
bodyParameters: []
@ -50,34 +49,30 @@ endpoints:
responses:
-
status: 200
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}}'
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}}'
headers: []
description: ''
custom: []
responseFields: []
auth:
- headers
- Authorization
- 'Bearer gVEce46k8aZfaP3d15vbhD6'
auth: []
controller: null
method: null
route: null
custom: []
-
httpMethods:
- GET
uri: 'api/projects/{project_id}/servers/{server_id}/services/{id}'
- POST
uri: 'api/projects/{project_id}/servers/{server_id}/ssh-keys'
metadata:
groupName: services
groupName: ssh-keys
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: show
description: 'Get a service by ID.'
authenticated: true
title: create
description: 'Deploy ssh key to server.'
authenticated: false
custom: []
headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json
Accept: application/json
urlParameters:
@ -95,17 +90,7 @@ endpoints:
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
example: 6
type: integer
enumValues: []
exampleWasSpecified: false
@ -113,390 +98,54 @@ endpoints:
custom: []
cleanUrlParameters:
project_id: 1
server_id: 29
id: 169
server_id: 6
queryParameters: []
cleanQueryParameters: []
bodyParameters: []
cleanBodyParameters: []
bodyParameters:
key_id:
name: key_id
description: 'The ID of the key.'
required: true
example: architecto
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
name:
name: name
description: 'Key name, required if key_id is not provided.'
required: true
example: architecto
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
public_key:
name: public_key
description: 'Public Key, required if key_id is not provided.'
required: true
example: architecto
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanBodyParameters:
key_id: architecto
name: architecto
public_key: architecto
fileParameters: []
responses:
-
status: 200
content: '{"id":null,"server_id":null,"type":null,"type_data":null,"name":null,"version":null,"unit":null,"status":null,"is_default":null,"created_at":null,"updated_at":null}'
content: '{"id":3,"name":"Ms. Elisabeth Okuneva","created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"}'
headers: []
description: ''
custom: []
responseFields: []
auth:
- headers
- Authorization
- 'Bearer Ef8D5gbV6cadk3Zh1vP46ea'
controller: null
method: null
route: null
custom: []
-
httpMethods:
- POST
uri: 'api/projects/{project_id}/servers/{server_id}/services/{service_id}/start'
metadata:
groupName: services
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: start
description: 'Start service.'
authenticated: 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 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'
auth: []
controller: null
method: null
route: null
@ -504,18 +153,17 @@ endpoints:
-
httpMethods:
- DELETE
uri: 'api/projects/{project_id}/servers/{server_id}/services/{service_id}'
uri: 'api/projects/{project_id}/servers/{server_id}/ssh-keys/{sshKey_id}'
metadata:
groupName: services
groupName: ssh-keys
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: delete
description: 'Delete service.'
authenticated: true
description: 'Delete ssh key from server.'
authenticated: false
custom: []
headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json
Accept: application/json
urlParameters:
@ -533,17 +181,17 @@ endpoints:
name: server_id
description: 'The ID of the server.'
required: true
example: 29
example: 6
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
service_id:
name: service_id
description: 'The ID of the service.'
sshKey_id:
name: sshKey_id
description: 'The ID of the sshKey.'
required: true
example: 169
example: 1
type: integer
enumValues: []
exampleWasSpecified: false
@ -551,8 +199,8 @@ endpoints:
custom: []
cleanUrlParameters:
project_id: 1
server_id: 29
service_id: 169
server_id: 6
sshKey_id: 1
queryParameters: []
cleanQueryParameters: []
bodyParameters: []
@ -566,10 +214,7 @@ endpoints:
description: ''
custom: []
responseFields: []
auth:
- headers
- Authorization
- 'Bearer Pekav16cd5ag486ZfD3EVbh'
auth: []
controller: null
method: 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,21 +1,20 @@
name: storage-providers
name: source-controls
description: ''
endpoints:
-
httpMethods:
- GET
uri: 'api/projects/{project_id}/storage-providers'
uri: 'api/projects/{project_id}/source-controls'
metadata:
groupName: storage-providers
groupName: source-controls
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: list
description: ''
authenticated: true
authenticated: false
custom: []
headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json
Accept: application/json
urlParameters:
@ -39,15 +38,12 @@ endpoints:
responses:
-
status: 200
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}}'
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}}'
headers: []
description: ''
custom: []
responseFields: []
auth:
- headers
- Authorization
- 'Bearer fgh4eV31dP58kvaDEaZbc66'
auth: []
controller: null
method: null
route: null
@ -55,18 +51,17 @@ endpoints:
-
httpMethods:
- POST
uri: 'api/projects/{project_id}/storage-providers'
uri: 'api/projects/{project_id}/source-controls'
metadata:
groupName: storage-providers
groupName: source-controls
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: create
description: ''
authenticated: true
authenticated: false
custom: []
headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json
Accept: application/json
urlParameters:
@ -87,11 +82,14 @@ endpoints:
bodyParameters:
provider:
name: provider
description: 'The provider (aws, linode, hetzner, digitalocean, vultr, ...)'
description: 'The provider'
required: true
example: ab
example: gitlab
type: string
enumValues: []
enumValues:
- gitlab
- github
- bitbucket
exampleWasSpecified: false
nullable: false
custom: []
@ -99,7 +97,7 @@ endpoints:
name: name
description: 'The name of the storage provider.'
required: true
example: quo
example: architecto
type: string
enumValues: []
exampleWasSpecified: false
@ -109,51 +107,59 @@ endpoints:
name: token
description: 'The token if provider requires api token'
required: true
example: in
example: architecto
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
key:
name: key
description: 'The key if provider requires key'
url:
name: url
description: 'The URL if the provider is Gitlab and it is self-hosted'
required: true
example: sunt
example: 'http://www.bailey.biz/quos-velit-et-fugiat-sunt-nihil-accusantium-harum.html'
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
secret:
name: secret
description: 'The secret if provider requires key'
username:
name: username
description: 'The username if the provider is Bitbucket'
required: true
example: molestias
example: architecto
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
password:
name: password
description: 'The password if the provider is Bitbucket'
required: true
example: '|]|{+-'
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanBodyParameters:
provider: ab
name: quo
token: in
key: sunt
secret: molestias
provider: gitlab
name: architecto
token: architecto
url: 'http://www.bailey.biz/quos-velit-et-fugiat-sunt-nihil-accusantium-harum.html'
username: architecto
password: '|]|{+-'
fileParameters: []
responses:
-
status: 200
content: '{"id":5,"project_id":null,"global":true,"name":"asperiores","provider":"dropbox","created_at":"2025-04-05T17:48:03.000000Z","updated_at":"2025-04-05T17:48:03.000000Z"}'
content: '{"id":2,"project_id":null,"global":true,"name":"Mrs. Justina Gaylord","provider":"github","created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"}'
headers: []
description: ''
custom: []
responseFields: []
auth:
- headers
- Authorization
- 'Bearer e584613dkZaPDEVvgcahbf6'
auth: []
controller: null
method: null
route: null
@ -161,18 +167,17 @@ endpoints:
-
httpMethods:
- GET
uri: 'api/projects/{project_id}/storage-providers/{storageProvider_id}'
uri: 'api/projects/{project_id}/source-controls/{sourceControl_id}'
metadata:
groupName: storage-providers
groupName: source-controls
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: show
description: ''
authenticated: true
authenticated: false
custom: []
headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json
Accept: application/json
urlParameters:
@ -186,11 +191,11 @@ endpoints:
exampleWasSpecified: false
nullable: false
custom: []
storageProvider_id:
name: storageProvider_id
description: 'The ID of the storageProvider.'
sourceControl_id:
name: sourceControl_id
description: 'The ID of the sourceControl.'
required: true
example: 3
example: 1
type: integer
enumValues: []
exampleWasSpecified: false
@ -198,7 +203,7 @@ endpoints:
custom: []
cleanUrlParameters:
project_id: 1
storageProvider_id: 3
sourceControl_id: 1
queryParameters: []
cleanQueryParameters: []
bodyParameters: []
@ -207,15 +212,12 @@ endpoints:
responses:
-
status: 200
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"}'
content: '{"id":2,"project_id":null,"global":true,"name":"Misael Runte","provider":"github","created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"}'
headers: []
description: ''
custom: []
responseFields: []
auth:
- headers
- Authorization
- 'Bearer h6Zk6834dDce5fbPa1VvagE'
auth: []
controller: null
method: null
route: null
@ -223,18 +225,17 @@ endpoints:
-
httpMethods:
- PUT
uri: 'api/projects/{project_id}/storage-providers/{storageProvider_id}'
uri: 'api/projects/{project_id}/source-controls/{sourceControl_id}'
metadata:
groupName: storage-providers
groupName: source-controls
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: update
description: ''
authenticated: true
authenticated: false
custom: []
headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json
Accept: application/json
urlParameters:
@ -248,11 +249,11 @@ endpoints:
exampleWasSpecified: false
nullable: false
custom: []
storageProvider_id:
name: storageProvider_id
description: 'The ID of the storageProvider.'
sourceControl_id:
name: sourceControl_id
description: 'The ID of the sourceControl.'
required: true
example: 3
example: 1
type: integer
enumValues: []
exampleWasSpecified: false
@ -260,7 +261,7 @@ endpoints:
custom: []
cleanUrlParameters:
project_id: 1
storageProvider_id: 3
sourceControl_id: 1
queryParameters: []
cleanQueryParameters: []
bodyParameters:
@ -268,7 +269,47 @@ endpoints:
name: name
description: 'The name of the storage provider.'
required: true
example: voluptas
example: architecto
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
token:
name: token
description: 'The token if provider requires api token'
required: true
example: architecto
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
url:
name: url
description: 'The URL if the provider is Gitlab and it is self-hosted'
required: true
example: 'http://www.bailey.biz/quos-velit-et-fugiat-sunt-nihil-accusantium-harum.html'
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
username:
name: username
description: 'The username if the provider is Bitbucket'
required: true
example: architecto
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
password:
name: password
description: 'The password if the provider is Bitbucket'
required: true
example: '|]|{+-'
type: string
enumValues: []
exampleWasSpecified: false
@ -278,7 +319,7 @@ endpoints:
name: global
description: 'Accessible in all projects'
required: true
example: true
example: false
type: string
enumValues:
- true
@ -287,21 +328,22 @@ endpoints:
nullable: false
custom: []
cleanBodyParameters:
name: voluptas
global: true
name: architecto
token: architecto
url: 'http://www.bailey.biz/quos-velit-et-fugiat-sunt-nihil-accusantium-harum.html'
username: architecto
password: '|]|{+-'
global: false
fileParameters: []
responses:
-
status: 200
content: '{"id":5,"project_id":null,"global":true,"name":"minima","provider":"ftp","created_at":"2025-04-05T17:48:03.000000Z","updated_at":"2025-04-05T17:48:03.000000Z"}'
content: '{"id":2,"project_id":null,"global":true,"name":"Mrs. Justina Gaylord","provider":"github","created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"}'
headers: []
description: ''
custom: []
responseFields: []
auth:
- headers
- Authorization
- 'Bearer ak6fgd1Eba48chvPV3e5Z6D'
auth: []
controller: null
method: null
route: null
@ -309,18 +351,17 @@ endpoints:
-
httpMethods:
- DELETE
uri: 'api/projects/{project_id}/storage-providers/{storageProvider_id}'
uri: 'api/projects/{project_id}/source-controls/{sourceControl_id}'
metadata:
groupName: storage-providers
groupName: source-controls
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: delete
description: ''
authenticated: true
authenticated: false
custom: []
headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json
Accept: application/json
urlParameters:
@ -334,11 +375,11 @@ endpoints:
exampleWasSpecified: false
nullable: false
custom: []
storageProvider_id:
name: storageProvider_id
description: 'The ID of the storageProvider.'
sourceControl_id:
name: sourceControl_id
description: 'The ID of the sourceControl.'
required: true
example: 3
example: 1
type: integer
enumValues: []
exampleWasSpecified: false
@ -346,7 +387,7 @@ endpoints:
custom: []
cleanUrlParameters:
project_id: 1
storageProvider_id: 3
sourceControl_id: 1
queryParameters: []
cleanQueryParameters: []
bodyParameters: []
@ -360,10 +401,7 @@ endpoints:
description: ''
custom: []
responseFields: []
auth:
- headers
- Authorization
- 'Bearer PcaDbh6ZE4aV1e8fdv56k3g'
auth: []
controller: null
method: null
route: null

350
.scribe/endpoints/14.yaml Normal file
View File

@ -0,0 +1,350 @@
name: storage-providers
description: ''
endpoints:
-
httpMethods:
- GET
uri: 'api/projects/{project_id}/storage-providers'
metadata:
groupName: storage-providers
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: list
description: ''
authenticated: false
custom: []
headers:
Content-Type: application/json
Accept: application/json
urlParameters:
project_id:
name: project_id
description: 'The ID of the project.'
required: true
example: 1
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanUrlParameters:
project_id: 1
queryParameters: []
cleanQueryParameters: []
bodyParameters: []
cleanBodyParameters: []
fileParameters: []
responses:
-
status: 200
content: '{"data":[{"id":4,"project_id":null,"global":true,"name":"harum","provider":"local","created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"},{"id":5,"project_id":null,"global":true,"name":"commodi","provider":"local","created_at":"2025-06-10T10:21:56.000000Z","updated_at":"2025-06-10T10:21:56.000000Z"}],"links":{"first":"\/?page=1","last":"\/?page=1","prev":null,"next":null},"meta":{"current_page":1,"from":1,"last_page":1,"links":[{"url":null,"label":"&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,11 +3,11 @@ # Introduction
VitoDeploy's API documentation.
<aside>
<strong>Base URL</strong>: <code>https://your-vito-url</code>
<strong>Base URL</strong>: <code>https://vito.test</code>
</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.
<aside>As you scroll, you'll see code examples for working with the API in different programming languages in the dark area to the right (or as part of the content on mobile).
You can switch the language used with the tabs at the top right (or from the nav menu at the top left on mobile).</aside>
<aside>As you scroll, you'll see code examples for working with the API in different programming languages in the dark area to the right (or as part of the content on mobile).
You can switch the language used with the tabs at the top right (or from the nav menu at the top left on mobile).</aside>

View File

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

View File

@ -3,18 +3,24 @@
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 CreateCronJob
{
/**
* @param array<string, mixed> $input
*
* @throws SSHError
*/
public function create(Server $server, array $input): CronJob
{
Validator::make($input, self::rules($input, $server))->validate();
$cronJob = new CronJob([
'server_id' => $server->id,
'user' => $input['user'],
@ -33,7 +39,7 @@ public function create(Server $server, array $input): CronJob
/**
* @param array<string, mixed> $input
* @return array<string, array<mixed>>
* @return array<string, array<int, mixed>>
*/
public static function rules(array $input, Server $server): array
{

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -6,8 +6,9 @@
use App\Models\FirewallRule;
use App\Models\Server;
use App\Models\Service;
use App\SSH\Services\Firewall\Firewall;
use App\Services\Firewall\Firewall;
use Exception;
use Illuminate\Support\Facades\Validator;
class ManageRule
{
@ -17,6 +18,8 @@ class ManageRule
*/
public function create(Server $server, array $input): FirewallRule
{
Validator::make($input, self::rules($input))->validate();
$sourceAny = $input['source_any'] ?? empty($input['source'] ?? null);
$rule = new FirewallRule([
'name' => $input['name'],
@ -42,6 +45,8 @@ public function create(Server $server, 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);
$rule->update([
'name' => $input['name'],
@ -93,11 +98,12 @@ protected function applyRule(FirewallRule $rule): void
}
/**
* @param array<string, mixed> $input
* @return array<string, array<string>>
*/
public static function rules(): array
public static function rules(array $input): array
{
return [
$rules = [
'name' => [
'required',
'string',
@ -128,5 +134,12 @@ public static function rules(): array
'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,7 +7,9 @@
use Illuminate\Contracts\Database\Query\Expression;
use Illuminate\Support\Collection;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Validator;
use Illuminate\Validation\Rule;
use stdClass;
class GetMetrics
{
@ -17,8 +19,13 @@ class GetMetrics
*/
public function filter(Server $server, array $input): Collection
{
if (isset($input['from']) && isset($input['to']) && $input['from'] === $input['to']) {
Validator::make($input, self::rules($input))->validate();
if (isset($input['from'])) {
$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';
}
@ -64,7 +71,7 @@ private function metrics(
->groupByRaw('date_interval')
->orderBy('date_interval')
->get()
->map(function ($item): \stdClass {
->map(function ($item): stdClass {
$item->date = Carbon::parse($item->date)->format('Y-m-d H:i');
return $item;
@ -145,8 +152,8 @@ public static function rules(array $input): array
];
if (isset($input['period']) && $input['period'] === 'custom') {
$rules['from'] = ['required', 'date', 'before:to'];
$rules['to'] = ['required', 'date', 'after:from'];
$rules['from'] = ['required', 'date', 'before_or_equal:to'];
$rules['to'] = ['required', 'date', 'after_or_equal:from'];
}
return $rules;

View File

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

View File

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

View File

@ -1,51 +0,0 @@
<?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

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -4,21 +4,29 @@
use App\Models\Project;
use App\Models\User;
use Illuminate\Support\Facades\Validator;
use Illuminate\Validation\ValidationException;
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) {
throw ValidationException::withMessages([
'project' => __('Cannot delete the last project.'),
'name' => __('Cannot delete the last project.'),
]);
}
if ($user->current_project_id == $project->id) {
throw ValidationException::withMessages([
'project' => __('Cannot delete your current project.'),
'name' => __('Cannot delete your current project.'),
]);
}

View File

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

View File

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

View File

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

View File

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

View File

@ -0,0 +1,17 @@
<?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\Models\Service;
use App\Models\Ssl;
use App\SSH\Services\Webserver\Webserver;
use App\Services\Webserver\Webserver;
class DeleteSSL
{

View File

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

View File

@ -7,6 +7,8 @@
use App\Models\ScriptExecution;
use App\Models\Server;
use App\Models\ServerLog;
use App\Models\User;
use Illuminate\Support\Facades\Validator;
use Illuminate\Validation\Rule;
class ExecuteScript
@ -14,24 +16,44 @@ class ExecuteScript
/**
* @param array<string, mixed> $input
*/
public function execute(Script $script, array $input): ScriptExecution
public function execute(Script $script, User $user, 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([
'script_id' => $script->id,
'server_id' => $input['server'],
'user' => $input['user'],
'variables' => $input['variables'] ?? [],
'variables' => $variables,
'status' => ScriptExecutionStatus::EXECUTING,
]);
$execution->save();
dispatch(function () use ($execution, $script): void {
$log = ServerLog::newLog($execution->server, 'script-'.$script->id.'-'.strtotime('now'));
$log->save();
$execution->server_log_id = $log->id;
$execution->save();
dispatch(function () use ($execution, $log): void {
/** @var Server $server */
$server = $execution->server;
$content = $execution->getContent();
$log = ServerLog::newLog($server, 'script-'.$script->id.'-'.strtotime('now'));
$log->save();
$execution->server_log_id = $log->id;
$execution->save();
$server->os()->runScript('~/', $content, $log, $execution->user);
@ -49,7 +71,7 @@ public function execute(Script $script, array $input): ScriptExecution
* @param array<string, mixed> $input
* @return array<string, mixed>
*/
public static function rules(array $input): array
public static function rules(Script $script, array $input): array
{
$users = ['root'];
if (isset($input['server'])) {
@ -58,7 +80,7 @@ public static function rules(array $input): array
$users = $server->getSshUsers();
}
return [
$rules = [
'server' => [
'required',
Rule::exists('servers', 'id'),
@ -67,12 +89,16 @@ public static function rules(array $input): array
'required',
Rule::in($users),
],
'variables' => 'array',
'variables.*' => [
];
foreach ($script->getVariables() as $variable) {
$rules[$variable] = [
'required',
'string',
'max:255',
],
];
];
}
return $rules;
}
}

View File

@ -3,20 +3,18 @@
namespace App\Actions\Server;
use App\Enums\FirewallRuleStatus;
use App\Enums\ServerProvider;
use App\Enums\ServerStatus;
use App\Enums\ServerType;
use App\Exceptions\SSHConnectionError;
use App\Facades\Notifier;
use App\Models\Project;
use App\Models\Server;
use App\Models\User;
use App\Notifications\ServerInstallationFailed;
use App\Notifications\ServerInstallationSucceed;
use App\ServerProviders\Custom;
use App\ValidationRules\RestrictedIPAddressesRule;
use Exception;
use Illuminate\Database\Query\Builder;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\Validator;
use Illuminate\Support\Str;
use Illuminate\Validation\Rule;
use Illuminate\Validation\ValidationException;
@ -24,20 +22,23 @@
class CreateServer
{
protected Server $server;
/**
* @param array<string, mixed> $input
*/
public function create(User $creator, Project $project, array $input): Server
{
$server = new Server([
Validator::make($input, self::rules($project, $input))->validate();
$this->server = new Server([
'project_id' => $project->id,
'user_id' => $creator->id,
'name' => $input['name'],
'ssh_user' => config('core.server_providers_default_user')[$input['provider']][$input['os']],
'ssh_user' => data_get(config('server-provider.providers'), $input['provider'].'.default_user') ?? 'root',
'ip' => $input['ip'] ?? '',
'port' => $input['port'] ?? 22,
'os' => $input['os'],
'type' => ServerType::REGULAR,
'provider' => $input['provider'],
'authentication' => [
'user' => config('core.ssh_user'),
@ -49,32 +50,42 @@ public function create(User $creator, Project $project, array $input): Server
]);
try {
if ($server->provider != 'custom') {
$server->provider_id = $input['server_provider'];
if ($this->server->provider != 'custom') {
$this->server->provider_id = $input['server_provider'];
}
$server->type_data = $server->type()->data($input);
$server->provider_data = $server->provider()->data($input);
$this->server->provider_data = $this->server->provider()->data($input);
// save
$server->save();
$this->server->save();
// create firewall rules
$this->createFirewallRules($server);
$this->createFirewallRules($this->server);
// create instance
$server->provider()->create();
$this->server->provider()->create();
// add services
$server->type()->createServices($input);
// create services
$this->createServices();
// install server
$this->install($server);
dispatch(function (): void {
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 $server;
return $this->server;
} catch (Exception $e) {
$server->delete();
$this->server->delete();
throw ValidationException::withMessages([
'provider' => $e->getMessage(),
@ -82,41 +93,6 @@ 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
* @return array<string, mixed>
@ -126,7 +102,7 @@ public static function rules(Project $project, array $input): array
$rules = [
'provider' => [
'required',
Rule::in(config('core.server_providers')),
Rule::in(array_keys(config('server-provider.providers'))),
],
'name' => [
'required',
@ -136,7 +112,7 @@ public static function rules(Project $project, array $input): array
Rule::in(config('core.operating_systems')),
],
'server_provider' => [
Rule::when(fn (): bool => isset($input['provider']) && $input['provider'] != ServerProvider::CUSTOM, [
Rule::when(fn (): bool => isset($input['provider']) && $input['provider'] != Custom::id(), [
'required',
Rule::exists('server_providers', 'id')->where(function (Builder $query) use ($project): void {
$query->where('project_id', $project->id)
@ -145,13 +121,13 @@ public static function rules(Project $project, array $input): array
]),
],
'ip' => [
Rule::when(fn (): bool => isset($input['provider']) && $input['provider'] == ServerProvider::CUSTOM, [
Rule::when(fn (): bool => isset($input['provider']) && $input['provider'] == Custom::id(), [
'required',
new RestrictedIPAddressesRule,
]),
],
'port' => [
Rule::when(fn (): bool => isset($input['provider']) && $input['provider'] == ServerProvider::CUSTOM, [
Rule::when(fn (): bool => isset($input['provider']) && $input['provider'] == Custom::id(), [
'required',
'numeric',
'min:1',
@ -160,22 +136,7 @@ public static function rules(Project $project, array $input): array
],
];
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);
return array_merge($rules, self::providerRules($input));
}
/**
@ -187,8 +148,8 @@ private static function providerRules(array $input): array
if (
! isset($input['provider']) ||
! isset($input['server_provider']) ||
! in_array($input['provider'], config('core.server_providers')) ||
$input['provider'] == ServerProvider::CUSTOM
! config('server-provider.providers.'.$input['provider']) ||
$input['provider'] == Custom::id()
) {
return [];
}
@ -233,4 +194,49 @@ 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

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

View File

@ -1,15 +1,47 @@
<?php
namespace App\ServerTypes;
namespace App\Actions\Server;
use App\Enums\ServerStatus;
use App\Enums\ServiceStatus;
use App\Exceptions\SSHConnectionError;
use App\Exceptions\SSHError;
use App\Facades\Notifier;
use App\Models\Server;
use App\SSH\Services\PHP\PHP;
use App\Notifications\ServerInstallationSucceed;
use App\Services\PHP\PHP;
abstract class AbstractType implements ServerType
class InstallServer
{
public function __construct(protected Server $server) {}
protected Server $server;
/**
* @throws SSHError
*/
public function run(Server $server): void
{
$this->server = $server;
$maxWait = 180;
while ($maxWait > 0) {
if (! $this->server->provider()->isRunning()) {
continue;
}
try {
$this->server->ssh()->connect();
break;
} catch (SSHConnectionError) {
// ignore
}
sleep(10);
$maxWait -= 10;
}
$this->install();
$this->server->update([
'status' => ServerStatus::READY,
]);
Notifier::send($this->server, new ServerInstallationSucceed($this->server));
}
/**
* @throws SSHError
@ -39,6 +71,9 @@ public function install(): void
$this->progress(100, 'finishing');
}
/**
* @throws SSHError
*/
protected function createUser(): void
{
$this->server->os()->createUser(
@ -59,67 +94,4 @@ protected function progress(int|float $percentage, ?string $step = null): void
$this->server->progress_step = $step;
$this->server->save();
}
protected function addWebserver(string $service): void
{
if ($service !== 'none') {
$this->server->services()->create([
'type' => 'webserver',
'name' => $service,
'version' => 'latest',
]);
}
}
protected function addDatabase(string $service): void
{
if ($service !== 'none') {
$this->server->services()->create([
'type' => 'database',
'name' => config('core.databases_name.'.$service),
'version' => config('core.databases_version.'.$service),
]);
}
}
protected function addPHP(string $version): void
{
if ($version !== 'none') {
$this->server->services()->create([
'type' => 'php',
'type_data' => [
'extensions' => [],
],
'name' => 'php',
'version' => $version,
]);
}
}
protected function addSupervisor(): void
{
$this->server->services()->create([
'type' => 'process_manager',
'name' => 'supervisor',
'version' => 'latest',
]);
}
protected function addRedis(): void
{
$this->server->services()->create([
'type' => 'memory_database',
'name' => 'redis',
'version' => 'latest',
]);
}
protected function addUfw(): void
{
$this->server->services()->create([
'type' => 'firewall',
'name' => 'ufw',
'version' => 'latest',
]);
}
}

View File

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

View File

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

View File

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

View File

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

View File

@ -4,15 +4,17 @@
use App\Enums\ServiceStatus;
use App\Models\Service;
use Illuminate\Validation\ValidationException;
class Manage
{
public function start(Service $service): void
{
$this->validate($service);
$service->status = ServiceStatus::STARTING;
$service->save();
dispatch(function () use ($service): void {
$status = $service->server->systemd()->start($service->unit);
$status = $service->server->systemd()->start($service->handler()->unit());
if (str($status)->contains('Active: active')) {
$service->status = ServiceStatus::READY;
} else {
@ -24,10 +26,11 @@ public function start(Service $service): void
public function stop(Service $service): void
{
$this->validate($service);
$service->status = ServiceStatus::STOPPING;
$service->save();
dispatch(function () use ($service): void {
$status = $service->server->systemd()->stop($service->unit);
$status = $service->server->systemd()->stop($service->handler()->unit());
if (str($status)->contains('Active: inactive')) {
$service->status = ServiceStatus::STOPPED;
} else {
@ -39,10 +42,11 @@ public function stop(Service $service): void
public function restart(Service $service): void
{
$this->validate($service);
$service->status = ServiceStatus::RESTARTING;
$service->save();
dispatch(function () use ($service): void {
$status = $service->server->systemd()->restart($service->unit);
$status = $service->server->systemd()->restart($service->handler()->unit());
if (str($status)->contains('Active: active')) {
$service->status = ServiceStatus::READY;
} else {
@ -54,10 +58,11 @@ public function restart(Service $service): void
public function enable(Service $service): void
{
$this->validate($service);
$service->status = ServiceStatus::ENABLING;
$service->save();
dispatch(function () use ($service): void {
$status = $service->server->systemd()->enable($service->unit);
$status = $service->server->systemd()->enable($service->handler()->unit());
if (str($status)->contains('Active: active')) {
$service->status = ServiceStatus::READY;
} else {
@ -69,10 +74,11 @@ public function enable(Service $service): void
public function disable(Service $service): void
{
$this->validate($service);
$service->status = ServiceStatus::DISABLING;
$service->save();
dispatch(function () use ($service): void {
$status = $service->server->systemd()->disable($service->unit);
$status = $service->server->systemd()->disable($service->handler()->unit());
if (str($status)->contains('Active: inactive')) {
$service->status = ServiceStatus::DISABLED;
} else {
@ -81,4 +87,13 @@ public function disable(Service $service): void
$service->save();
})->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,6 +4,7 @@
use App\Models\Command;
use App\Models\Site;
use Illuminate\Support\Facades\Validator;
class CreateCommand
{
@ -12,6 +13,8 @@ class CreateCommand
*/
public function create(Site $site, array $input): Command
{
Validator::make($input, self::rules())->validate();
$script = new Command([
'site_id' => $site->id,
'name' => $input['name'],

View File

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

View File

@ -5,16 +5,22 @@
use App\Exceptions\SSHError;
use App\Models\Service;
use App\Models\Site;
use App\SSH\Services\PHP\PHP;
use App\SSH\Services\Webserver\Webserver;
use App\Services\PHP\PHP;
use App\Services\Webserver\Webserver;
use Illuminate\Support\Facades\Validator;
use Illuminate\Validation\Rule;
class DeleteSite
{
/**
* @param array<string, mixed> $input
*
* @throws SSHError
*/
public function delete(Site $site): void
public function delete(Site $site, array $input): void
{
$this->validate($site, $input);
/** @var Service $service */
$service = $site->server->webserver();
@ -35,4 +41,17 @@ public function delete(Site $site): void
$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,7 +4,6 @@
use App\Enums\DeploymentStatus;
use App\Exceptions\DeploymentScriptIsEmptyException;
use App\Exceptions\SSHError;
use App\Facades\Notifier;
use App\Models\Deployment;
use App\Models\ServerLog;
@ -15,7 +14,6 @@ class Deploy
{
/**
* @throws DeploymentScriptIsEmptyException
* @throws SSHError
*/
public function run(Site $site): Deployment
{
@ -32,6 +30,11 @@ public function run(Site $site): Deployment
'deployment_script_id' => $site->deploymentScript->id,
'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);
if ($lastCommit) {
$deployment->commit_id = $lastCommit['commit_id'];
@ -39,12 +42,7 @@ public function run(Site $site): Deployment
}
$deployment->save();
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();
dispatch(function () use ($site, $deployment, $log): void {
$site->server->os()->runScript(
path: $site->path,
script: $site->deploymentScript->content,

View File

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

View File

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

View File

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

View File

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

View File

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

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