Compare commits

..

3 Commits
main ... cli

Author SHA1 Message Date
9d4c7972ed Merge branch 'cli' of github.com:vitodeploy/vito into cli 2025-03-02 10:59:56 +01:00
abe27cde01 wip 2025-03-02 10:59:46 +01:00
a1cf09e35d wip 2025-02-20 18:00:13 +01:00
744 changed files with 41703 additions and 41488 deletions

View File

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

View File

@ -1,42 +0,0 @@
name: code-quality
on:
push:
branches:
- 2.x
pull_request:
branches:
- 2.x
jobs:
tests:
runs-on: ubuntu-22.04
strategy:
fail-fast: true
matrix:
php: [ 8.2 ]
steps:
- uses: actions/checkout@v4
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php }}
- name: Cache Composer packages
id: composer-cache
uses: actions/cache@v4
with:
path: vendor
key: ${{ runner.os }}-php-${{ hashFiles('**/composer.lock') }}
restore-keys: |
${{ runner.os }}-php-
- name: Install dependencies
if: steps.composer-cache.outputs.cache-hit != 'true'
run: composer install --prefer-dist --no-progress --no-suggest
- name: Run PHPStan
run: ./vendor/bin/phpstan analyse

View File

@ -19,7 +19,7 @@ jobs:
node-version: [ "20.x" ] node-version: [ "20.x" ]
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v2
- name: Setup PHP - name: Setup PHP
uses: shivammathur/setup-php@v2 uses: shivammathur/setup-php@v2
@ -28,7 +28,7 @@ jobs:
- name: Cache Composer packages - name: Cache Composer packages
id: composer-cache id: composer-cache
uses: actions/cache@v4 uses: actions/cache@v2
with: with:
path: vendor path: vendor
key: ${{ runner.os }}-php-${{ hashFiles('**/composer.lock') }} key: ${{ runner.os }}-php-${{ hashFiles('**/composer.lock') }}
@ -43,7 +43,7 @@ jobs:
run: ./vendor/bin/pint --test run: ./vendor/bin/pint --test
- name: Setup Node.js - name: Setup Node.js
uses: actions/setup-node@v4 uses: actions/setup-node@v2
with: with:
node-version: "20.x" node-version: "20.x"

View File

@ -11,16 +11,16 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Checkout code - name: Checkout code
uses: actions/checkout@v4 uses: actions/checkout@v2
- name: Set up QEMU - name: Set up QEMU
uses: docker/setup-qemu-action@v2 uses: docker/setup-qemu-action@v1
- name: Set up Docker Buildx - name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2 uses: docker/setup-buildx-action@v1
- name: Login to Docker Hub - name: Login to Docker Hub
uses: docker/login-action@v3 uses: docker/login-action@v2
with: with:
username: ${{ secrets.DOCKER_USERNAME }} username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }} password: ${{ secrets.DOCKER_PASSWORD }}

View File

@ -10,16 +10,16 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Checkout code - name: Checkout code
uses: actions/checkout@v4 uses: actions/checkout@v2
- name: Set up QEMU - name: Set up QEMU
uses: docker/setup-qemu-action@v2 uses: docker/setup-qemu-action@v1
- name: Set up Docker Buildx - name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2 uses: docker/setup-buildx-action@v1
- name: Login to Docker Hub - name: Login to Docker Hub
uses: docker/login-action@v3 uses: docker/login-action@v2
with: with:
username: ${{ secrets.DOCKER_USERNAME }} username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }} password: ${{ secrets.DOCKER_PASSWORD }}

View File

@ -18,7 +18,7 @@ jobs:
php: [ 8.2 ] php: [ 8.2 ]
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v2
- name: Setup PHP - name: Setup PHP
uses: shivammathur/setup-php@v2 uses: shivammathur/setup-php@v2
@ -27,13 +27,12 @@ jobs:
- name: Cache Composer packages - name: Cache Composer packages
id: composer-cache id: composer-cache
uses: actions/cache@v4 uses: actions/cache@v2
with: with:
path: vendor path: vendor
key: ${{ runner.os }}-php-${{ hashFiles('**/composer.lock') }} key: ${{ runner.os }}-php-${{ hashFiles('**/composer.lock') }}
restore-keys: | restore-keys: |
${{ runner.os }}-php- ${{ runner.os }}-php-
- name: Install dependencies - name: Install dependencies
if: steps.composer-cache.outputs.cache-hit != 'true' if: steps.composer-cache.outputs.cache-hit != 'true'
run: composer install --prefer-dist --no-progress --no-suggest run: composer install --prefer-dist --no-progress --no-suggest

View File

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

View File

@ -1,46 +1,26 @@
{ {
"semi": true, "plugins": [
"singleQuote": true, "prettier-plugin-blade",
"singleAttributePerLine": false, "prettier-plugin-tailwindcss",
"htmlWhitespaceSensitivity": "css", "prettier-plugin-sh"
"printWidth": 150, ],
"tailwindFunctions": [ "overrides": [
"clsx", {
"cn" "files": ["*.blade.php"],
], "options": {
"tabWidth": 2, "parser": "blade",
"plugins": [ "printWidth": 120,
"prettier-plugin-blade", "htmlWhitespaceSensitivity": "ignore",
"prettier-plugin-tailwindcss", "tabWidth": 4,
"prettier-plugin-sh" "quoteProps": "consistent",
], "trailingComma": "none"
"overrides": [ }
{ },
"files": [ {
"*.blade.php" "files": ["*.sh"],
], "options": {
"options": { "parser": "sh"
"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. # GENERATED. YOU SHOULDN'T MODIFY OR DELETE THIS FILE.
# Scribe uses this file to know when you change something manually in your docs. # Scribe uses this file to know when you change something manually in your docs.
.scribe/intro.md=ce7ca21baf0406f807aed85ee1d8fa6e .scribe/intro.md=98adb6862b118c06e02e4e22390feb6f
.scribe/auth.md=9bee2b1ef8a238b2e58613fa636d5f39 .scribe/auth.md=7fcc12b2e5a86fa9c49f509d348f3cc2

View File

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

View File

@ -14,9 +14,10 @@ endpoints:
subgroupDescription: '' subgroupDescription: ''
title: list title: list
description: 'Get all cron jobs.' description: 'Get all cron jobs.'
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -34,7 +35,7 @@ endpoints:
name: server_id name: server_id
description: 'The ID of the server.' description: 'The ID of the server.'
required: true required: true
example: 32 example: 8
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -42,7 +43,7 @@ endpoints:
custom: [] custom: []
cleanUrlParameters: cleanUrlParameters:
project_id: 1 project_id: 1
server_id: 32 server_id: 8
queryParameters: [] queryParameters: []
cleanQueryParameters: [] cleanQueryParameters: []
bodyParameters: [] bodyParameters: []
@ -51,12 +52,15 @@ endpoints:
responses: responses:
- -
status: 200 status: 200
content: '{"data":[{"id":5,"server_id":1,"command":"ls -la","user":"root","frequency":"* * * * *","status":"ready","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"},{"id":6,"server_id":1,"command":"ls -la","user":"root","frequency":"* * * * *","status":"ready","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"}],"links":{"first":"\/?page=1","last":"\/?page=1","prev":null,"next":null},"meta":{"current_page":1,"from":1,"last_page":1,"links":[{"url":null,"label":"&laquo; Previous","active":false},{"url":"\/?page=1","label":"1","active":true},{"url":null,"label":"Next &raquo;","active":false}],"path":"\/","per_page":25,"to":2,"total":2}}' content: '{"data":[{"id":null,"server_id":null,"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: [] headers: []
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer ge6ZVa4kfD86hdv5a31EcbP'
controller: null controller: null
method: null method: null
route: null route: null
@ -72,9 +76,10 @@ endpoints:
subgroupDescription: '' subgroupDescription: ''
title: create title: create
description: 'Create a new cron job.' description: 'Create a new cron job.'
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -92,7 +97,7 @@ endpoints:
name: server_id name: server_id
description: 'The ID of the server.' description: 'The ID of the server.'
required: true required: true
example: 32 example: 8
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -100,7 +105,7 @@ endpoints:
custom: [] custom: []
cleanUrlParameters: cleanUrlParameters:
project_id: 1 project_id: 1
server_id: 32 server_id: 8
queryParameters: [] queryParameters: []
cleanQueryParameters: [] cleanQueryParameters: []
bodyParameters: bodyParameters:
@ -108,7 +113,7 @@ endpoints:
name: command name: command
description: '' description: ''
required: true required: true
example: consequatur example: itaque
type: string type: string
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -118,7 +123,7 @@ endpoints:
name: user name: user
description: '' description: ''
required: true required: true
example: vito example: root
type: string type: string
enumValues: enumValues:
- root - root
@ -137,19 +142,22 @@ endpoints:
nullable: false nullable: false
custom: [] custom: []
cleanBodyParameters: cleanBodyParameters:
command: consequatur command: itaque
user: vito user: root
frequency: '* * * * *' frequency: '* * * * *'
fileParameters: [] fileParameters: []
responses: responses:
- -
status: 200 status: 200
content: '{"id":5,"server_id":1,"command":"ls -la","user":"root","frequency":"* * * * *","status":"ready","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"}' content: '{"id":null,"server_id":null,"command":"ls -la","user":"root","frequency":"* * * * *","status":"ready","created_at":null,"updated_at":null}'
headers: [] headers: []
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer cdh5bD8gVPkf34e1ZEva6a6'
controller: null controller: null
method: null method: null
route: null route: null
@ -165,9 +173,10 @@ endpoints:
subgroupDescription: '' subgroupDescription: ''
title: show title: show
description: 'Get a cron job by ID.' description: 'Get a cron job by ID.'
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -185,7 +194,7 @@ endpoints:
name: server_id name: server_id
description: 'The ID of the server.' description: 'The ID of the server.'
required: true required: true
example: 32 example: 8
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -195,7 +204,7 @@ endpoints:
name: cronJob_id name: cronJob_id
description: 'The ID of the cronJob.' description: 'The ID of the cronJob.'
required: true required: true
example: 17 example: 18
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -203,8 +212,8 @@ endpoints:
custom: [] custom: []
cleanUrlParameters: cleanUrlParameters:
project_id: 1 project_id: 1
server_id: 32 server_id: 8
cronJob_id: 17 cronJob_id: 18
queryParameters: [] queryParameters: []
cleanQueryParameters: [] cleanQueryParameters: []
bodyParameters: [] bodyParameters: []
@ -213,12 +222,15 @@ endpoints:
responses: responses:
- -
status: 200 status: 200
content: '{"id":5,"server_id":1,"command":"ls -la","user":"root","frequency":"* * * * *","status":"ready","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"}' content: '{"id":null,"server_id":null,"command":"ls -la","user":"root","frequency":"* * * * *","status":"ready","created_at":null,"updated_at":null}'
headers: [] headers: []
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer fa5VgdkaD8cZ6vh34Pb16eE'
controller: null controller: null
method: null method: null
route: null route: null
@ -234,9 +246,10 @@ endpoints:
subgroupDescription: '' subgroupDescription: ''
title: delete title: delete
description: 'Delete cron job.' description: 'Delete cron job.'
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -254,7 +267,7 @@ endpoints:
name: server_id name: server_id
description: 'The ID of the server.' description: 'The ID of the server.'
required: true required: true
example: 32 example: 8
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -264,7 +277,7 @@ endpoints:
name: cronJob_id name: cronJob_id
description: 'The ID of the cronJob.' description: 'The ID of the cronJob.'
required: true required: true
example: 17 example: 10
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -272,8 +285,8 @@ endpoints:
custom: [] custom: []
cleanUrlParameters: cleanUrlParameters:
project_id: 1 project_id: 1
server_id: 32 server_id: 8
cronJob_id: 17 cronJob_id: 10
queryParameters: [] queryParameters: []
cleanQueryParameters: [] cleanQueryParameters: []
bodyParameters: [] bodyParameters: []
@ -287,7 +300,10 @@ endpoints:
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer P8hkva3ZD4fgb166adEVce5'
controller: null controller: null
method: null method: null
route: null route: null

View File

@ -14,9 +14,10 @@ endpoints:
subgroupDescription: '' subgroupDescription: ''
title: list title: list
description: 'Get all databases.' description: 'Get all databases.'
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -34,7 +35,7 @@ endpoints:
name: server_id name: server_id
description: 'The ID of the server.' description: 'The ID of the server.'
required: true required: true
example: 32 example: 8
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -42,7 +43,7 @@ endpoints:
custom: [] custom: []
cleanUrlParameters: cleanUrlParameters:
project_id: 1 project_id: 1
server_id: 32 server_id: 8
queryParameters: [] queryParameters: []
cleanQueryParameters: [] cleanQueryParameters: []
bodyParameters: [] bodyParameters: []
@ -51,12 +52,15 @@ endpoints:
responses: responses:
- -
status: 200 status: 200
content: '{"data":[{"id":21,"server_id":1,"name":"carolyne.luettgen","status":"ready","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"},{"id":22,"server_id":1,"name":"orville77","status":"ready","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"}],"links":{"first":"\/?page=1","last":"\/?page=1","prev":null,"next":null},"meta":{"current_page":1,"from":1,"last_page":1,"links":[{"url":null,"label":"&laquo; Previous","active":false},{"url":"\/?page=1","label":"1","active":true},{"url":null,"label":"Next &raquo;","active":false}],"path":"\/","per_page":25,"to":2,"total":2}}' content: '{"data":[{"id":null,"server_id":null,"name":"amalia38","status":"ready","created_at":null,"updated_at":null},{"id":null,"server_id":null,"name":"troy.rippin","status":"ready","created_at":null,"updated_at":null}],"links":{"first":"\/?page=1","last":"\/?page=1","prev":null,"next":null},"meta":{"current_page":1,"from":1,"last_page":1,"links":[{"url":null,"label":"&laquo; Previous","active":false},{"url":"\/?page=1","label":"1","active":true},{"url":null,"label":"Next &raquo;","active":false}],"path":"\/","per_page":25,"to":2,"total":2}}'
headers: [] headers: []
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer Z641ebPacDV6f38kEgdah5v'
controller: null controller: null
method: null method: null
route: null route: null
@ -72,9 +76,10 @@ endpoints:
subgroupDescription: '' subgroupDescription: ''
title: create title: create
description: 'Create a new database.' description: 'Create a new database.'
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -92,7 +97,7 @@ endpoints:
name: server_id name: server_id
description: 'The ID of the server.' description: 'The ID of the server.'
required: true required: true
example: 32 example: 8
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -100,7 +105,7 @@ endpoints:
custom: [] custom: []
cleanUrlParameters: cleanUrlParameters:
project_id: 1 project_id: 1
server_id: 32 server_id: 8
queryParameters: [] queryParameters: []
cleanQueryParameters: [] cleanQueryParameters: []
bodyParameters: bodyParameters:
@ -108,46 +113,27 @@ endpoints:
name: name name: name
description: '' description: ''
required: true required: true
example: consequatur example: et
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
charset:
name: charset
description: ''
required: true
example: consequatur
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
collation:
name: collation
description: ''
required: true
example: consequatur
type: string type: string
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
cleanBodyParameters: cleanBodyParameters:
name: consequatur name: et
charset: consequatur
collation: consequatur
fileParameters: [] fileParameters: []
responses: responses:
- -
status: 200 status: 200
content: '{"id":21,"server_id":1,"name":"carolyne.luettgen","status":"ready","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"}' content: '{"id":null,"server_id":null,"name":"harvey.haskell","status":"ready","created_at":null,"updated_at":null}'
headers: [] headers: []
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer d4gbv56caV3aZ8D1h6kfEPe'
controller: null controller: null
method: null method: null
route: null route: null
@ -163,9 +149,10 @@ endpoints:
subgroupDescription: '' subgroupDescription: ''
title: show title: show
description: 'Get a database by ID.' description: 'Get a database by ID.'
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -183,7 +170,7 @@ endpoints:
name: server_id name: server_id
description: 'The ID of the server.' description: 'The ID of the server.'
required: true required: true
example: 32 example: 8
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -193,7 +180,7 @@ endpoints:
name: id name: id
description: 'The ID of the database.' description: 'The ID of the database.'
required: true required: true
example: 17 example: 19
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -201,8 +188,8 @@ endpoints:
custom: [] custom: []
cleanUrlParameters: cleanUrlParameters:
project_id: 1 project_id: 1
server_id: 32 server_id: 8
id: 17 id: 19
queryParameters: [] queryParameters: []
cleanQueryParameters: [] cleanQueryParameters: []
bodyParameters: [] bodyParameters: []
@ -211,12 +198,15 @@ endpoints:
responses: responses:
- -
status: 200 status: 200
content: '{"id":21,"server_id":1,"name":"carolyne.luettgen","status":"ready","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"}' content: '{"id":null,"server_id":null,"name":"ruthie.koepp","status":"ready","created_at":null,"updated_at":null}'
headers: [] headers: []
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer P68VgDcaEZvk63f4b5aed1h'
controller: null controller: null
method: null method: null
route: null route: null
@ -232,9 +222,10 @@ endpoints:
subgroupDescription: '' subgroupDescription: ''
title: delete title: delete
description: 'Delete database.' description: 'Delete database.'
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -252,7 +243,7 @@ endpoints:
name: server_id name: server_id
description: 'The ID of the server.' description: 'The ID of the server.'
required: true required: true
example: 32 example: 8
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -262,7 +253,7 @@ endpoints:
name: database_id name: database_id
description: 'The ID of the database.' description: 'The ID of the database.'
required: true required: true
example: 17 example: 15
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -270,8 +261,8 @@ endpoints:
custom: [] custom: []
cleanUrlParameters: cleanUrlParameters:
project_id: 1 project_id: 1
server_id: 32 server_id: 8
database_id: 17 database_id: 15
queryParameters: [] queryParameters: []
cleanQueryParameters: [] cleanQueryParameters: []
bodyParameters: [] bodyParameters: []
@ -285,7 +276,10 @@ endpoints:
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer DkPc6d1heEv5a8fb4V63agZ'
controller: null controller: null
method: null method: null
route: null route: null

View File

@ -14,9 +14,10 @@ endpoints:
subgroupDescription: '' subgroupDescription: ''
title: list title: list
description: 'Get all database users.' description: 'Get all database users.'
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -34,7 +35,7 @@ endpoints:
name: server_id name: server_id
description: 'The ID of the server.' description: 'The ID of the server.'
required: true required: true
example: 32 example: 8
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -42,7 +43,7 @@ endpoints:
custom: [] custom: []
cleanUrlParameters: cleanUrlParameters:
project_id: 1 project_id: 1
server_id: 32 server_id: 8
queryParameters: [] queryParameters: []
cleanQueryParameters: [] cleanQueryParameters: []
bodyParameters: [] bodyParameters: []
@ -51,12 +52,15 @@ endpoints:
responses: responses:
- -
status: 200 status: 200
content: '{"data":[{"id":19,"server_id":1,"username":"graciela37","databases":[],"host":"%","status":"creating","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"},{"id":20,"server_id":1,"username":"vconn","databases":[],"host":"%","status":"creating","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"}],"links":{"first":"\/?page=1","last":"\/?page=1","prev":null,"next":null},"meta":{"current_page":1,"from":1,"last_page":1,"links":[{"url":null,"label":"&laquo; Previous","active":false},{"url":"\/?page=1","label":"1","active":true},{"url":null,"label":"Next &raquo;","active":false}],"path":"\/","per_page":25,"to":2,"total":2}}' content: '{"data":[{"id":null,"server_id":null,"username":"xgaylord","databases":[],"host":"%","status":null,"created_at":null,"updated_at":null},{"id":null,"server_id":null,"username":"una37","databases":[],"host":"%","status":null,"created_at":null,"updated_at":null}],"links":{"first":"\/?page=1","last":"\/?page=1","prev":null,"next":null},"meta":{"current_page":1,"from":1,"last_page":1,"links":[{"url":null,"label":"&laquo; Previous","active":false},{"url":"\/?page=1","label":"1","active":true},{"url":null,"label":"Next &raquo;","active":false}],"path":"\/","per_page":25,"to":2,"total":2}}'
headers: [] headers: []
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer P4gD36fZeckvVh5ab86Ead1'
controller: null controller: null
method: null method: null
route: null route: null
@ -72,9 +76,10 @@ endpoints:
subgroupDescription: '' subgroupDescription: ''
title: create title: create
description: 'Create a new database user.' description: 'Create a new database user.'
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -92,7 +97,7 @@ endpoints:
name: server_id name: server_id
description: 'The ID of the server.' description: 'The ID of the server.'
required: true required: true
example: 32 example: 8
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -100,7 +105,7 @@ endpoints:
custom: [] custom: []
cleanUrlParameters: cleanUrlParameters:
project_id: 1 project_id: 1
server_id: 32 server_id: 8
queryParameters: [] queryParameters: []
cleanQueryParameters: [] cleanQueryParameters: []
bodyParameters: bodyParameters:
@ -108,7 +113,7 @@ endpoints:
name: username name: username
description: '' description: ''
required: true required: true
example: consequatur example: consequuntur
type: string type: string
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -118,7 +123,7 @@ endpoints:
name: password name: password
description: '' description: ''
required: true required: true
example: 'O[2UZ5ij-e/dl4m{o,' example: 'fI/i2.O4u&dla?eXvR2'
type: string type: string
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -135,19 +140,22 @@ endpoints:
nullable: false nullable: false
custom: [] custom: []
cleanBodyParameters: cleanBodyParameters:
username: consequatur username: consequuntur
password: 'O[2UZ5ij-e/dl4m{o,' password: 'fI/i2.O4u&dla?eXvR2'
host: '%' host: '%'
fileParameters: [] fileParameters: []
responses: responses:
- -
status: 200 status: 200
content: '{"id":19,"server_id":1,"username":"nolan.jaylan","databases":[],"host":"%","status":"creating","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"}' content: '{"id":null,"server_id":null,"username":"kari.farrell","databases":[],"host":"%","status":null,"created_at":null,"updated_at":null}'
headers: [] headers: []
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer 5k8Vced1baaE6f4ZvDPgh36'
controller: null controller: null
method: null method: null
route: null route: null
@ -163,9 +171,10 @@ endpoints:
subgroupDescription: '' subgroupDescription: ''
title: show title: show
description: 'Get a database user by ID.' description: 'Get a database user by ID.'
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -183,7 +192,7 @@ endpoints:
name: server_id name: server_id
description: 'The ID of the server.' description: 'The ID of the server.'
required: true required: true
example: 32 example: 8
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -193,7 +202,7 @@ endpoints:
name: databaseUser_id name: databaseUser_id
description: 'The ID of the databaseUser.' description: 'The ID of the databaseUser.'
required: true required: true
example: 17 example: 18
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -201,8 +210,8 @@ endpoints:
custom: [] custom: []
cleanUrlParameters: cleanUrlParameters:
project_id: 1 project_id: 1
server_id: 32 server_id: 8
databaseUser_id: 17 databaseUser_id: 18
queryParameters: [] queryParameters: []
cleanQueryParameters: [] cleanQueryParameters: []
bodyParameters: [] bodyParameters: []
@ -211,12 +220,15 @@ endpoints:
responses: responses:
- -
status: 200 status: 200
content: '{"id":19,"server_id":1,"username":"carolyne.luettgen","databases":[],"host":"%","status":"creating","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"}' content: '{"id":null,"server_id":null,"username":"caterina.mosciski","databases":[],"host":"%","status":null,"created_at":null,"updated_at":null}'
headers: [] headers: []
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer 3kDveP5V8a6dghfa4E16cbZ'
controller: null controller: null
method: null method: null
route: null route: null
@ -232,9 +244,10 @@ endpoints:
subgroupDescription: '' subgroupDescription: ''
title: link title: link
description: 'Link to databases' description: 'Link to databases'
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -252,7 +265,7 @@ endpoints:
name: server_id name: server_id
description: 'The ID of the server.' description: 'The ID of the server.'
required: true required: true
example: 32 example: 8
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -262,7 +275,7 @@ endpoints:
name: databaseUser_id name: databaseUser_id
description: 'The ID of the databaseUser.' description: 'The ID of the databaseUser.'
required: true required: true
example: 17 example: 4
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -270,8 +283,8 @@ endpoints:
custom: [] custom: []
cleanUrlParameters: cleanUrlParameters:
project_id: 1 project_id: 1
server_id: 32 server_id: 8
databaseUser_id: 17 databaseUser_id: 4
queryParameters: [] queryParameters: []
cleanQueryParameters: [] cleanQueryParameters: []
bodyParameters: bodyParameters:
@ -279,24 +292,27 @@ endpoints:
name: databases name: databases
description: 'Array of database names to link to the user.' description: 'Array of database names to link to the user.'
required: true required: true
example: consequatur example: non
type: string type: string
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
cleanBodyParameters: cleanBodyParameters:
databases: consequatur databases: non
fileParameters: [] fileParameters: []
responses: responses:
- -
status: 200 status: 200
content: '{"id":19,"server_id":1,"username":"carolyne.luettgen","databases":[],"host":"%","status":"creating","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"}' content: '{"id":null,"server_id":null,"username":"kurtis05","databases":[],"host":"%","status":null,"created_at":null,"updated_at":null}'
headers: [] headers: []
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer DgPea43EvV51a866dfbZckh'
controller: null controller: null
method: null method: null
route: null route: null
@ -312,9 +328,10 @@ endpoints:
subgroupDescription: '' subgroupDescription: ''
title: delete title: delete
description: 'Delete database user.' description: 'Delete database user.'
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -332,7 +349,7 @@ endpoints:
name: server_id name: server_id
description: 'The ID of the server.' description: 'The ID of the server.'
required: true required: true
example: 32 example: 8
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -342,7 +359,7 @@ endpoints:
name: databaseUser_id name: databaseUser_id
description: 'The ID of the databaseUser.' description: 'The ID of the databaseUser.'
required: true required: true
example: 17 example: 6
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -350,8 +367,8 @@ endpoints:
custom: [] custom: []
cleanUrlParameters: cleanUrlParameters:
project_id: 1 project_id: 1
server_id: 32 server_id: 8
databaseUser_id: 17 databaseUser_id: 6
queryParameters: [] queryParameters: []
cleanQueryParameters: [] cleanQueryParameters: []
bodyParameters: [] bodyParameters: []
@ -365,7 +382,10 @@ endpoints:
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer 6ackVP8hEZd3164gD5evafb'
controller: null controller: null
method: null method: null
route: null route: null

View File

@ -14,9 +14,10 @@ endpoints:
subgroupDescription: '' subgroupDescription: ''
title: list title: list
description: 'Get all firewall rules.' description: 'Get all firewall rules.'
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -34,7 +35,7 @@ endpoints:
name: server_id name: server_id
description: 'The ID of the server.' description: 'The ID of the server.'
required: true required: true
example: 32 example: 8
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -42,7 +43,7 @@ endpoints:
custom: [] custom: []
cleanUrlParameters: cleanUrlParameters:
project_id: 1 project_id: 1
server_id: 32 server_id: 8
queryParameters: [] queryParameters: []
cleanQueryParameters: [] cleanQueryParameters: []
bodyParameters: [] bodyParameters: []
@ -51,12 +52,15 @@ endpoints:
responses: responses:
- -
status: 200 status: 200
content: '{"data":[{"id":97,"name":"dolores","server_id":1,"type":"allow","protocol":"tcp","port":40770,"source":"199.76.131.15","mask":"24","note":"test","status":"creating","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"},{"id":98,"name":"laborum","server_id":1,"type":"allow","protocol":"tcp","port":14235,"source":"100.14.146.200","mask":"24","note":"test","status":"creating","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"}],"links":{"first":"\/?page=1","last":"\/?page=1","prev":null,"next":null},"meta":{"current_page":1,"from":1,"last_page":1,"links":[{"url":null,"label":"&laquo; Previous","active":false},{"url":"\/?page=1","label":"1","active":true},{"url":null,"label":"Next &raquo;","active":false}],"path":"\/","per_page":25,"to":2,"total":2}}' content: '{"data":[{"id":null,"server_id":null,"type":"allow","protocol":"tcp","port":38781,"source":"79.116.255.150","mask":24,"note":"test","status":null,"created_at":null,"updated_at":null},{"id":null,"server_id":null,"type":"allow","protocol":"tcp","port":32141,"source":"52.174.114.251","mask":24,"note":"test","status":null,"created_at":null,"updated_at":null}],"links":{"first":"\/?page=1","last":"\/?page=1","prev":null,"next":null},"meta":{"current_page":1,"from":1,"last_page":1,"links":[{"url":null,"label":"&laquo; Previous","active":false},{"url":"\/?page=1","label":"1","active":true},{"url":null,"label":"Next &raquo;","active":false}],"path":"\/","per_page":25,"to":2,"total":2}}'
headers: [] headers: []
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer h3P5gD8E4dkeZ6abac6vfV1'
controller: null controller: null
method: null method: null
route: null route: null
@ -72,9 +76,10 @@ endpoints:
subgroupDescription: '' subgroupDescription: ''
title: create title: create
description: 'Create a new firewall rule.' description: 'Create a new firewall rule.'
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -92,7 +97,7 @@ endpoints:
name: server_id name: server_id
description: 'The ID of the server.' description: 'The ID of the server.'
required: true required: true
example: 32 example: 8
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -100,25 +105,15 @@ endpoints:
custom: [] custom: []
cleanUrlParameters: cleanUrlParameters:
project_id: 1 project_id: 1
server_id: 32 server_id: 8
queryParameters: [] queryParameters: []
cleanQueryParameters: [] cleanQueryParameters: []
bodyParameters: bodyParameters:
name:
name: name
description: ''
required: true
example: consequatur
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
type: type:
name: type name: type
description: '' description: ''
required: true required: true
example: allow example: deny
type: string type: string
enumValues: enumValues:
- allow - allow
@ -130,7 +125,7 @@ endpoints:
name: protocol name: protocol
description: '' description: ''
required: true required: true
example: tcp example: udp
type: string type: string
enumValues: enumValues:
- tcp - tcp
@ -142,7 +137,7 @@ endpoints:
name: port name: port
description: '' description: ''
required: true required: true
example: consequatur example: et
type: string type: string
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -151,8 +146,8 @@ endpoints:
source: source:
name: source name: source
description: '' description: ''
required: false required: true
example: consequatur example: voluptates
type: string type: string
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -169,161 +164,24 @@ endpoints:
nullable: false nullable: false
custom: [] custom: []
cleanBodyParameters: cleanBodyParameters:
name: consequatur type: deny
type: allow protocol: udp
protocol: tcp port: et
port: consequatur source: voluptates
source: consequatur
mask: '0' mask: '0'
fileParameters: [] fileParameters: []
responses: responses:
- -
status: 200 status: 200
content: '{"id":97,"name":"dolores","server_id":1,"type":"allow","protocol":"tcp","port":40770,"source":"199.76.131.15","mask":"24","note":"test","status":"creating","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"}' content: '{"id":null,"server_id":null,"type":"allow","protocol":"tcp","port":47148,"source":"119.182.8.45","mask":24,"note":"test","status":null,"created_at":null,"updated_at":null}'
headers: [] headers: []
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
controller: null - headers
method: null - Authorization
route: null - 'Bearer 6a8DVv5k3gZfEe6hb1daPc4'
custom: []
-
httpMethods:
- PUT
uri: 'api/projects/{project_id}/servers/{server_id}/firewall-rules/{firewallRule_id}'
metadata:
groupName: firewall-rules
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: edit
description: 'Update an existing firewall rule.'
authenticated: false
custom: []
headers:
Content-Type: application/json
Accept: application/json
urlParameters:
project_id:
name: project_id
description: 'The ID of the project.'
required: true
example: 1
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
server_id:
name: server_id
description: 'The ID of the server.'
required: true
example: 32
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
firewallRule_id:
name: firewallRule_id
description: 'The ID of the firewallRule.'
required: true
example: 94
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanUrlParameters:
project_id: 1
server_id: 32
firewallRule_id: 94
queryParameters: []
cleanQueryParameters: []
bodyParameters:
name:
name: name
description: ''
required: true
example: consequatur
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
type:
name: type
description: ''
required: true
example: allow
type: string
enumValues:
- allow
- deny
exampleWasSpecified: false
nullable: false
custom: []
protocol:
name: protocol
description: ''
required: true
example: tcp
type: string
enumValues:
- tcp
- udp
exampleWasSpecified: false
nullable: false
custom: []
port:
name: port
description: ''
required: true
example: consequatur
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
source:
name: source
description: ''
required: false
example: consequatur
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
mask:
name: mask
description: 'Mask for source IP.'
required: true
example: '0'
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanBodyParameters:
name: consequatur
type: allow
protocol: tcp
port: consequatur
source: consequatur
mask: '0'
fileParameters: []
responses:
-
status: 200
content: '{"id":97,"name":"dolores","server_id":1,"type":"allow","protocol":"tcp","port":40770,"source":"199.76.131.15","mask":"24","note":"test","status":"creating","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"}'
headers: []
description: ''
custom: []
responseFields: []
auth: []
controller: null controller: null
method: null method: null
route: null route: null
@ -339,9 +197,10 @@ endpoints:
subgroupDescription: '' subgroupDescription: ''
title: show title: show
description: 'Get a firewall rule by ID.' description: 'Get a firewall rule by ID.'
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -359,7 +218,7 @@ endpoints:
name: server_id name: server_id
description: 'The ID of the server.' description: 'The ID of the server.'
required: true required: true
example: 32 example: 8
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -369,7 +228,7 @@ endpoints:
name: firewallRule_id name: firewallRule_id
description: 'The ID of the firewallRule.' description: 'The ID of the firewallRule.'
required: true required: true
example: 94 example: 29
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -377,8 +236,8 @@ endpoints:
custom: [] custom: []
cleanUrlParameters: cleanUrlParameters:
project_id: 1 project_id: 1
server_id: 32 server_id: 8
firewallRule_id: 94 firewallRule_id: 29
queryParameters: [] queryParameters: []
cleanQueryParameters: [] cleanQueryParameters: []
bodyParameters: [] bodyParameters: []
@ -387,12 +246,15 @@ endpoints:
responses: responses:
- -
status: 200 status: 200
content: '{"id":97,"name":"laborum","server_id":1,"type":"allow","protocol":"tcp","port":14235,"source":"100.14.146.200","mask":"24","note":"test","status":"creating","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"}' content: '{"id":null,"server_id":null,"type":"allow","protocol":"tcp","port":2317,"source":"44.161.134.114","mask":24,"note":"test","status":null,"created_at":null,"updated_at":null}'
headers: [] headers: []
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer P4bZdV1geED3kfh568aa6cv'
controller: null controller: null
method: null method: null
route: null route: null
@ -408,9 +270,10 @@ endpoints:
subgroupDescription: '' subgroupDescription: ''
title: delete title: delete
description: 'Delete firewall rule.' description: 'Delete firewall rule.'
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -428,7 +291,7 @@ endpoints:
name: server_id name: server_id
description: 'The ID of the server.' description: 'The ID of the server.'
required: true required: true
example: 32 example: 8
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -438,7 +301,7 @@ endpoints:
name: firewallRule_id name: firewallRule_id
description: 'The ID of the firewallRule.' description: 'The ID of the firewallRule.'
required: true required: true
example: 94 example: 29
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -446,8 +309,8 @@ endpoints:
custom: [] custom: []
cleanUrlParameters: cleanUrlParameters:
project_id: 1 project_id: 1
server_id: 32 server_id: 8
firewallRule_id: 94 firewallRule_id: 29
queryParameters: [] queryParameters: []
cleanQueryParameters: [] cleanQueryParameters: []
bodyParameters: [] bodyParameters: []
@ -461,7 +324,10 @@ endpoints:
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer Dh3kcaafdg6E5ZvV46ePb81'
controller: null controller: null
method: null method: null
route: null route: null

View File

@ -29,12 +29,12 @@ endpoints:
responses: responses:
- -
status: 200 status: 200
content: '{"success":true,"version":"2.5.0"}' content: '{"success":true,"version":"2.1.0"}'
headers: headers:
cache-control: 'no-cache, private' cache-control: 'no-cache, private'
content-type: application/json content-type: application/json
x-ratelimit-limit: '60' x-ratelimit-limit: '60'
x-ratelimit-remaining: '57' x-ratelimit-remaining: '59'
access-control-allow-origin: '*' access-control-allow-origin: '*'
description: null description: null
custom: [] custom: []

View File

@ -14,9 +14,10 @@ endpoints:
subgroupDescription: '' subgroupDescription: ''
title: list title: list
description: 'Get all projects.' description: 'Get all projects.'
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: [] urlParameters: []
@ -29,12 +30,15 @@ endpoints:
responses: responses:
- -
status: 200 status: 200
content: '{"data":[{"id":3,"name":"Nash Corwin","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"},{"id":4,"name":"Patience Douglas","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"}],"links":{"first":"\/?page=1","last":"\/?page=1","prev":null,"next":null},"meta":{"current_page":1,"from":1,"last_page":1,"links":[{"url":null,"label":"&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":"Jeffry Dickinson","created_at":"2025-01-30T22:42:49.000000Z","updated_at":"2025-01-30T22:42:49.000000Z"},{"id":4,"name":"Miss Tianna Dietrich PhD","created_at":"2025-01-30T22:42:49.000000Z","updated_at":"2025-01-30T22:42:49.000000Z"}],"links":{"first":"\/?page=1","last":"\/?page=1","prev":null,"next":null},"meta":{"current_page":1,"from":1,"last_page":1,"links":[{"url":null,"label":"&laquo; Previous","active":false},{"url":"\/?page=1","label":"1","active":true},{"url":null,"label":"Next &raquo;","active":false}],"path":"\/","per_page":25,"to":2,"total":2}}'
headers: [] headers: []
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer 5DaveP3d6b6khEZVcg4fa18'
controller: null controller: null
method: null method: null
route: null route: null
@ -50,9 +54,10 @@ endpoints:
subgroupDescription: '' subgroupDescription: ''
title: create title: create
description: 'Create a new project.' description: 'Create a new project.'
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: [] urlParameters: []
@ -64,24 +69,27 @@ endpoints:
name: name name: name
description: 'The name of the project.' description: 'The name of the project.'
required: true required: true
example: consequatur example: quos
type: string type: string
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
cleanBodyParameters: cleanBodyParameters:
name: consequatur name: quos
fileParameters: [] fileParameters: []
responses: responses:
- -
status: 200 status: 200
content: '{"id":3,"name":"Dr. Cornelius Luettgen V","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"}' content: '{"id":3,"name":"Isidro Franecki","created_at":"2025-01-30T22:42:49.000000Z","updated_at":"2025-01-30T22:42:49.000000Z"}'
headers: [] headers: []
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer a6P53EvkcZV6D4ghad1efb8'
controller: null controller: null
method: null method: null
route: null route: null
@ -97,9 +105,10 @@ endpoints:
subgroupDescription: '' subgroupDescription: ''
title: show title: show
description: 'Get a project by ID.' description: 'Get a project by ID.'
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -123,12 +132,15 @@ endpoints:
responses: responses:
- -
status: 200 status: 200
content: '{"id":3,"name":"Orville Satterfield","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"}' content: '{"id":3,"name":"Rhoda Parisian","created_at":"2025-01-30T22:42:49.000000Z","updated_at":"2025-01-30T22:42:49.000000Z"}'
headers: [] headers: []
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer v48Ve5ZghdcbE1akP66fD3a'
controller: null controller: null
method: null method: null
route: null route: null
@ -144,9 +156,10 @@ endpoints:
subgroupDescription: '' subgroupDescription: ''
title: update title: update
description: 'Update project.' description: 'Update project.'
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -169,24 +182,27 @@ endpoints:
name: name name: name
description: 'The name of the project.' description: 'The name of the project.'
required: true required: true
example: consequatur example: ullam
type: string type: string
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
cleanBodyParameters: cleanBodyParameters:
name: consequatur name: ullam
fileParameters: [] fileParameters: []
responses: responses:
- -
status: 200 status: 200
content: '{"id":3,"name":"Dr. Cornelius Luettgen V","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"}' content: '{"id":3,"name":"Mr. Dashawn Jacobson Sr.","created_at":"2025-01-30T22:42:49.000000Z","updated_at":"2025-01-30T22:42:49.000000Z"}'
headers: [] headers: []
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer fvEdh3Vgbk56Z4a61eP8caD'
controller: null controller: null
method: null method: null
route: null route: null
@ -202,9 +218,10 @@ endpoints:
subgroupDescription: '' subgroupDescription: ''
title: delete title: delete
description: 'Delete project.' description: 'Delete project.'
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -233,7 +250,10 @@ endpoints:
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer eg4c3vZ1Dhaa68d6PEfk5bV'
controller: null controller: null
method: null method: null
route: null route: null

View File

@ -1,22 +1,23 @@
## Autogenerated by Scribe. DO NOT MODIFY. ## Autogenerated by Scribe. DO NOT MODIFY.
name: redirects name: servers
description: '' description: ''
endpoints: endpoints:
- -
httpMethods: httpMethods:
- GET - GET
uri: 'api/projects/{project_id}/servers/{server_id}/sites/{site_id}/redirects' uri: 'api/projects/{project_id}/servers'
metadata: metadata:
groupName: redirects groupName: servers
groupDescription: '' groupDescription: ''
subgroup: '' subgroup: ''
subgroupDescription: '' subgroupDescription: ''
title: index title: list
description: 'Get all redirects.' description: 'Get all servers in a project.'
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -30,30 +31,8 @@ endpoints:
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
server_id:
name: server_id
description: 'The ID of the server.'
required: true
example: 32
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
site_id:
name: site_id
description: 'The ID of the site.'
required: true
example: 17
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanUrlParameters: cleanUrlParameters:
project_id: 1 project_id: 1
server_id: 32
site_id: 17
queryParameters: [] queryParameters: []
cleanQueryParameters: [] cleanQueryParameters: []
bodyParameters: [] bodyParameters: []
@ -62,12 +41,15 @@ endpoints:
responses: responses:
- -
status: 200 status: 200
content: '{"data":[{"id":11,"site_id":1,"mode":308,"from":"dolores","to":"http:\/\/dibbert.com\/eius-est-dolor-dolores-minus-voluptatem-quisquam","status":"ready","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"},{"id":12,"site_id":1,"mode":302,"from":"sed","to":"http:\/\/williamson.net\/fugit-facilis-perferendis-dolores-molestias.html","status":"ready","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"}],"links":{"first":"\/?page=1","last":"\/?page=1","prev":null,"next":null},"meta":{"current_page":1,"from":1,"last_page":1,"links":[{"url":null,"label":"&laquo; Previous","active":false},{"url":"\/?page=1","label":"1","active":true},{"url":null,"label":"Next &raquo;","active":false}],"path":"\/","per_page":25,"to":2,"total":2}}' content: '{"data":[{"id":null,"project_id":null,"user_id":null,"provider_id":null,"name":"Amina DuBuque","ssh_user":"vito","ip":"163.77.69.73","local_ip":"137.139.200.70","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":"Floy Cummerata","ssh_user":"vito","ip":"62.53.140.25","local_ip":"34.59.35.195","port":22,"os":"ubuntu_22","type":"regular","type_data":null,"provider":"custom","provider_data":null,"public_key":"test","status":"ready","auto_update":null,"available_updates":0,"security_updates":null,"progress":100,"progress_step":null,"updates":null,"last_update_check":null,"created_at":null,"updated_at":null}],"links":{"first":"\/?page=1","last":"\/?page=1","prev":null,"next":null},"meta":{"current_page":1,"from":1,"last_page":1,"links":[{"url":null,"label":"&laquo; Previous","active":false},{"url":"\/?page=1","label":"1","active":true},{"url":null,"label":"Next &raquo;","active":false}],"path":"\/","per_page":25,"to":2,"total":2}}'
headers: [] headers: []
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer E81avahec6365dbZfgD4kPV'
controller: null controller: null
method: null method: null
route: null route: null
@ -75,17 +57,18 @@ endpoints:
- -
httpMethods: httpMethods:
- POST - POST
uri: 'api/projects/{project_id}/servers/{server_id}/sites/{site_id}/redirects' uri: 'api/projects/{project_id}/servers'
metadata: metadata:
groupName: redirects groupName: servers
groupDescription: '' groupDescription: ''
subgroup: '' subgroup: ''
subgroupDescription: '' subgroupDescription: ''
title: create title: create
description: 'Create a new redirect.' description: 'Create a new server.'
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -99,99 +82,254 @@ endpoints:
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
server_id:
name: server_id
description: 'The ID of the server.'
required: true
example: 32
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
site_id:
name: site_id
description: 'The ID of the site.'
required: true
example: 17
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanUrlParameters: cleanUrlParameters:
project_id: 1 project_id: 1
server_id: 32
site_id: 17
queryParameters: [] queryParameters: []
cleanQueryParameters: [] cleanQueryParameters: []
bodyParameters: bodyParameters:
from: provider:
name: from name: provider
description: '' description: 'The server provider type'
required: true required: true
example: consequatur example: iste
type: string type: string
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
to: server_provider:
name: to name: server_provider
description: '' description: 'If the provider is not custom, the ID of the server provider profile'
required: true required: true
example: consequatur example: custom
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
mode:
name: mode
description: ''
required: true
example: 302
type: string type: string
enumValues: enumValues:
- 301 - custom
- 302 - hetzner
- 307 - digitalocean
- 308 - linode
- vultr
exampleWasSpecified: false
nullable: false
custom: []
region:
name: region
description: 'Provider region if the provider is not custom'
required: true
example: libero
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
plan:
name: plan
description: 'Provider plan if the provider is not custom'
required: true
example: ut
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
ip:
name: ip
description: 'SSH IP address if the provider is custom'
required: true
example: molestias
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
port:
name: port
description: 'SSH Port if the provider is custom'
required: true
example: laudantium
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
name:
name: name
description: 'The name of the server.'
required: true
example: illum
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
os:
name: os
description: 'The os of the server'
required: true
example: autem
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
webserver:
name: webserver
description: 'Web server'
required: true
example: none
type: string
enumValues:
- none
- nginx
exampleWasSpecified: false
nullable: false
custom: []
database:
name: database
description: Database
required: true
example: postgresql12
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.4'
type: string
enumValues:
- '7.0'
- '7.1'
- '7.2'
- '7.3'
- '7.4'
- '8.0'
- '8.1'
- '8.2'
- '8.3'
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
cleanBodyParameters: cleanBodyParameters:
from: consequatur provider: iste
to: consequatur server_provider: custom
mode: 302 region: libero
plan: ut
ip: molestias
port: laudantium
name: illum
os: autem
webserver: none
database: postgresql12
php: '7.4'
fileParameters: [] fileParameters: []
responses: responses:
- -
status: 200 status: 200
content: null content: '{"id":null,"project_id":null,"user_id":null,"provider_id":null,"name":"Archibald Nolan","ssh_user":"vito","ip":"226.168.13.177","local_ip":"143.14.43.182","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: [] headers: []
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer aad3Pvc4e65DghZVEk8f1b6'
controller: null controller: null
method: null method: null
route: null route: null
custom: [] custom: []
- -
httpMethods: httpMethods:
- DELETE - GET
uri: 'api/projects/{project_id}/servers/{server_id}/sites/{site_id}/redirects/{redirect_id}' uri: 'api/projects/{project_id}/servers/{id}'
metadata: metadata:
groupName: redirects groupName: servers
groupDescription: '' groupDescription: ''
subgroup: '' subgroup: ''
subgroupDescription: '' subgroupDescription: ''
title: delete title: show
description: 'Delete a redirect.' description: 'Get a server by ID.'
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json
Accept: application/json
urlParameters:
project_id:
name: project_id
description: 'The ID of the project.'
required: true
example: 1
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
id:
name: id
description: 'The ID of the server.'
required: true
example: 8
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanUrlParameters:
project_id: 1
id: 8
queryParameters: []
cleanQueryParameters: []
bodyParameters: []
cleanBodyParameters: []
fileParameters: []
responses:
-
status: 200
content: '{"id":null,"project_id":null,"user_id":null,"provider_id":null,"name":"Tevin Sipes","ssh_user":"vito","ip":"61.41.183.152","local_ip":"197.160.239.147","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 5EhD3v6Z8Vdakfg46eP1cab'
controller: null
method: null
route: null
custom: []
-
httpMethods:
- POST
uri: 'api/projects/{project_id}/servers/{server_id}/reboot'
metadata:
groupName: servers
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: reboot
description: 'Reboot a server.'
authenticated: true
custom: []
headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -209,27 +347,7 @@ endpoints:
name: server_id name: server_id
description: 'The ID of the server.' description: 'The ID of the server.'
required: true required: true
example: 32 example: 8
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
site_id:
name: site_id
description: 'The ID of the site.'
required: true
example: 17
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
redirect_id:
name: redirect_id
description: 'The ID of the redirect.'
required: true
example: 9
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -237,9 +355,7 @@ endpoints:
custom: [] custom: []
cleanUrlParameters: cleanUrlParameters:
project_id: 1 project_id: 1
server_id: 32 server_id: 8
site_id: 17
redirect_id: 9
queryParameters: [] queryParameters: []
cleanQueryParameters: [] cleanQueryParameters: []
bodyParameters: [] bodyParameters: []
@ -253,7 +369,134 @@ endpoints:
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer Pc5Da6Vhdk1vag6fE84e3Zb'
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: 8
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanUrlParameters:
project_id: 1
server_id: 8
queryParameters: []
cleanQueryParameters: []
bodyParameters: []
cleanBodyParameters: []
fileParameters: []
responses:
-
status: 204
content: null
headers: []
description: ''
custom: []
responseFields: []
auth:
- headers
- Authorization
- 'Bearer a61v48DfkeEbcg3a6hd5PZV'
controller: null
method: null
route: null
custom: []
-
httpMethods:
- DELETE
uri: 'api/projects/{project_id}/servers/{server_id}'
metadata:
groupName: servers
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: delete
description: 'Delete server.'
authenticated: true
custom: []
headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json
Accept: application/json
urlParameters:
project_id:
name: project_id
description: 'The ID of the project.'
required: true
example: 1
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
server_id:
name: server_id
description: 'The ID of the server.'
required: true
example: 8
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanUrlParameters:
project_id: 1
server_id: 8
queryParameters: []
cleanQueryParameters: []
bodyParameters: []
cleanBodyParameters: []
fileParameters: []
responses:
-
status: 204
content: null
headers: []
description: ''
custom: []
responseFields: []
auth:
- headers
- Authorization
- 'Bearer haE8D6Z6gePk1vadVb53c4f'
controller: null controller: null
method: null method: null
route: null route: null

View File

@ -1,22 +1,23 @@
## Autogenerated by Scribe. DO NOT MODIFY. ## Autogenerated by Scribe. DO NOT MODIFY.
name: servers name: server-providers
description: '' description: ''
endpoints: endpoints:
- -
httpMethods: httpMethods:
- GET - GET
uri: 'api/projects/{project_id}/servers' uri: 'api/projects/{project_id}/server-providers'
metadata: metadata:
groupName: servers groupName: server-providers
groupDescription: '' groupDescription: ''
subgroup: '' subgroup: ''
subgroupDescription: '' subgroupDescription: ''
title: list title: list
description: 'Get all servers in a project.' description: ''
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -40,12 +41,15 @@ endpoints:
responses: responses:
- -
status: 200 status: 200
content: '{"data":[{"id":33,"project_id":1,"user_id":1,"provider_id":null,"name":"Maiya Connelly","ssh_user":"vito","ip":"7.83.102.177","local_ip":"130.245.181.91","port":22,"os":"ubuntu_22","type":"regular","type_data":null,"provider":"custom","provider_data":null,"public_key":"test","status":"ready","auto_update":null,"available_updates":0,"security_updates":null,"progress":100,"progress_step":null,"updates":0,"last_update_check":null,"created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"},{"id":34,"project_id":1,"user_id":1,"provider_id":null,"name":"Dr. Kyler Runolfsdottir DVM","ssh_user":"vito","ip":"106.112.51.73","local_ip":"248.246.77.93","port":22,"os":"ubuntu_22","type":"regular","type_data":null,"provider":"custom","provider_data":null,"public_key":"test","status":"ready","auto_update":null,"available_updates":0,"security_updates":null,"progress":100,"progress_step":null,"updates":0,"last_update_check":null,"created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"}],"links":{"first":"\/?page=1","last":"\/?page=1","prev":null,"next":null},"meta":{"current_page":1,"from":1,"last_page":1,"links":[{"url":null,"label":"&laquo; Previous","active":false},{"url":"\/?page=1","label":"1","active":true},{"url":null,"label":"Next &raquo;","active":false}],"path":"\/","per_page":25,"to":2,"total":2}}' content: '{"data":[{"id":2,"project_id":null,"global":true,"name":"laudantium","provider":"vultr","created_at":"2025-01-30T22:42:49.000000Z","updated_at":"2025-01-30T22:42:49.000000Z"},{"id":3,"project_id":null,"global":true,"name":"aut","provider":"aws","created_at":"2025-01-30T22:42:49.000000Z","updated_at":"2025-01-30T22:42:49.000000Z"}],"links":{"first":"\/?page=1","last":"\/?page=1","prev":null,"next":null},"meta":{"current_page":1,"from":1,"last_page":1,"links":[{"url":null,"label":"&laquo; Previous","active":false},{"url":"\/?page=1","label":"1","active":true},{"url":null,"label":"Next &raquo;","active":false}],"path":"\/","per_page":25,"to":2,"total":2}}'
headers: [] headers: []
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer Df16eda8Pa345EkgbZ6cvhV'
controller: null controller: null
method: null method: null
route: null route: null
@ -53,17 +57,18 @@ endpoints:
- -
httpMethods: httpMethods:
- POST - POST
uri: 'api/projects/{project_id}/servers' uri: 'api/projects/{project_id}/server-providers'
metadata: metadata:
groupName: servers groupName: server-providers
groupDescription: '' groupDescription: ''
subgroup: '' subgroup: ''
subgroupDescription: '' subgroupDescription: ''
title: create title: create
description: 'Create a new server.' description: ''
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -84,64 +89,9 @@ endpoints:
bodyParameters: bodyParameters:
provider: provider:
name: provider name: provider
description: 'The server provider type' description: 'The provider (aws, linode, hetzner, digitalocean, vultr, ...)'
required: true required: true
example: consequatur example: voluptatem
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: hetzner
type: string
enumValues:
- custom
- hetzner
- digitalocean
- linode
- vultr
exampleWasSpecified: false
nullable: false
custom: []
region:
name: region
description: 'Provider region if the provider is not custom'
required: true
example: consequatur
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
plan:
name: plan
description: 'Provider plan if the provider is not custom'
required: true
example: consequatur
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
ip:
name: ip
description: 'SSH IP address if the provider is custom'
required: true
example: consequatur
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
port:
name: port
description: 'SSH Port if the provider is custom'
required: true
example: consequatur
type: string type: string
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -149,98 +99,63 @@ endpoints:
custom: [] custom: []
name: name:
name: name name: name
description: 'The name of the server.' description: 'The name of the server provider.'
required: true required: true
example: consequatur example: repellat
type: string type: string
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
os: token:
name: os name: token
description: 'The os of the server' description: 'The token if provider requires api token'
required: true required: true
example: consequatur example: omnis
type: string type: string
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
webserver: key:
name: webserver name: key
description: 'Web server' description: 'The key if provider requires key'
required: true required: true
example: none example: recusandae
type: string type: string
enumValues: enumValues: []
- none
- nginx
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
database: secret:
name: database name: secret
description: Database description: 'The secret if provider requires key'
required: true required: true
example: mariadb104 example: in
type: string type: string
enumValues: enumValues: []
- none
- mysql57
- mysql80
- mariadb103
- mariadb104
- mariadb103
- postgresql12
- postgresql13
- postgresql14
- postgresql15
- postgresql16
exampleWasSpecified: false
nullable: false
custom: []
php:
name: php
description: 'PHP version'
required: true
example: '8.0'
type: string
enumValues:
- '7.0'
- '7.1'
- '7.2'
- '7.3'
- '7.4'
- '8.0'
- '8.1'
- '8.2'
- '8.3'
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
cleanBodyParameters: cleanBodyParameters:
provider: consequatur provider: voluptatem
server_provider: hetzner name: repellat
region: consequatur token: omnis
plan: consequatur key: recusandae
ip: consequatur secret: in
port: consequatur
name: consequatur
os: consequatur
webserver: none
database: mariadb104
php: '8.0'
fileParameters: [] fileParameters: []
responses: responses:
- -
status: 200 status: 200
content: '{"id":33,"project_id":1,"user_id":1,"provider_id":null,"name":"Dr. Cornelius Luettgen V","ssh_user":"vito","ip":"226.187.235.251","local_ip":"18.62.212.253","port":22,"os":"ubuntu_22","type":"regular","type_data":null,"provider":"custom","provider_data":null,"public_key":"test","status":"ready","auto_update":null,"available_updates":0,"security_updates":null,"progress":100,"progress_step":null,"updates":0,"last_update_check":null,"created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"}' content: '{"id":2,"project_id":null,"global":true,"name":"quia","provider":"vultr","created_at":"2025-01-30T22:42:49.000000Z","updated_at":"2025-01-30T22:42:49.000000Z"}'
headers: [] headers: []
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer 8fbgDV6vdhakE1c64e3P5aZ'
controller: null controller: null
method: null method: null
route: null route: null
@ -248,17 +163,18 @@ endpoints:
- -
httpMethods: httpMethods:
- GET - GET
uri: 'api/projects/{project_id}/servers/{id}' uri: 'api/projects/{project_id}/server-providers/{serverProvider_id}'
metadata: metadata:
groupName: servers groupName: server-providers
groupDescription: '' groupDescription: ''
subgroup: '' subgroup: ''
subgroupDescription: '' subgroupDescription: ''
title: show title: show
description: 'Get a server by ID.' description: ''
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -272,11 +188,11 @@ endpoints:
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
id: serverProvider_id:
name: id name: serverProvider_id
description: 'The ID of the server.' description: 'The ID of the serverProvider.'
required: true required: true
example: 32 example: 1
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -284,7 +200,7 @@ endpoints:
custom: [] custom: []
cleanUrlParameters: cleanUrlParameters:
project_id: 1 project_id: 1
id: 32 serverProvider_id: 1
queryParameters: [] queryParameters: []
cleanQueryParameters: [] cleanQueryParameters: []
bodyParameters: [] bodyParameters: []
@ -293,30 +209,34 @@ endpoints:
responses: responses:
- -
status: 200 status: 200
content: '{"id":33,"project_id":1,"user_id":1,"provider_id":null,"name":"Brandy Reichel","ssh_user":"vito","ip":"26.180.121.142","local_ip":"122.175.6.215","port":22,"os":"ubuntu_22","type":"regular","type_data":null,"provider":"custom","provider_data":null,"public_key":"test","status":"ready","auto_update":null,"available_updates":0,"security_updates":null,"progress":100,"progress_step":null,"updates":0,"last_update_check":null,"created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"}' content: '{"id":2,"project_id":null,"global":true,"name":"ab","provider":"hetzner","created_at":"2025-01-30T22:42:49.000000Z","updated_at":"2025-01-30T22:42:49.000000Z"}'
headers: [] headers: []
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer eVE816Pc4ak3bdfahDZv6g5'
controller: null controller: null
method: null method: null
route: null route: null
custom: [] custom: []
- -
httpMethods: httpMethods:
- POST - PUT
uri: 'api/projects/{project_id}/servers/{server_id}/reboot' uri: 'api/projects/{project_id}/server-providers/{serverProvider_id}'
metadata: metadata:
groupName: servers groupName: server-providers
groupDescription: '' groupDescription: ''
subgroup: '' subgroup: ''
subgroupDescription: '' subgroupDescription: ''
title: reboot title: update
description: 'Reboot a server.' description: ''
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -330,57 +250,9 @@ endpoints:
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
server_id: serverProvider_id:
name: server_id name: serverProvider_id
description: 'The ID of the server.' description: 'The ID of the serverProvider.'
required: true
example: 32
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanUrlParameters:
project_id: 1
server_id: 32
queryParameters: []
cleanQueryParameters: []
bodyParameters: []
cleanBodyParameters: []
fileParameters: []
responses:
-
status: 204
content: null
headers: []
description: ''
custom: []
responseFields: []
auth: []
controller: null
method: null
route: null
custom: []
-
httpMethods:
- POST
uri: 'api/projects/{project_id}/servers/{server_id}/upgrade'
metadata:
groupName: servers
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: upgrade
description: 'Upgrade server.'
authenticated: false
custom: []
headers:
Content-Type: application/json
Accept: application/json
urlParameters:
project_id:
name: project_id
description: 'The ID of the project.'
required: true required: true
example: 1 example: 1
type: integer type: integer
@ -388,33 +260,50 @@ endpoints:
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
server_id: cleanUrlParameters:
name: server_id project_id: 1
description: 'The ID of the server.' serverProvider_id: 1
queryParameters: []
cleanQueryParameters: []
bodyParameters:
name:
name: name
description: 'The name of the server provider.'
required: true required: true
example: 32 example: est
type: integer type: string
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
cleanUrlParameters: global:
project_id: 1 name: global
server_id: 32 description: 'Accessible in all projects'
queryParameters: [] required: true
cleanQueryParameters: [] example: true
bodyParameters: [] type: string
cleanBodyParameters: [] enumValues:
- true
- false
exampleWasSpecified: false
nullable: false
custom: []
cleanBodyParameters:
name: est
global: true
fileParameters: [] fileParameters: []
responses: responses:
- -
status: 204 status: 200
content: null content: '{"id":2,"project_id":null,"global":true,"name":"nesciunt","provider":"linode","created_at":"2025-01-30T22:42:49.000000Z","updated_at":"2025-01-30T22:42:49.000000Z"}'
headers: [] headers: []
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer va86keaPDdh3b16Z54EgfcV'
controller: null controller: null
method: null method: null
route: null route: null
@ -422,17 +311,18 @@ endpoints:
- -
httpMethods: httpMethods:
- DELETE - DELETE
uri: 'api/projects/{project_id}/servers/{server_id}' uri: 'api/projects/{project_id}/server-providers/{serverProvider_id}'
metadata: metadata:
groupName: servers groupName: server-providers
groupDescription: '' groupDescription: ''
subgroup: '' subgroup: ''
subgroupDescription: '' subgroupDescription: ''
title: delete title: delete
description: 'Delete server.' description: ''
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -446,11 +336,11 @@ endpoints:
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
server_id: serverProvider_id:
name: server_id name: serverProvider_id
description: 'The ID of the server.' description: 'The ID of the serverProvider.'
required: true required: true
example: 32 example: 1
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -458,7 +348,7 @@ endpoints:
custom: [] custom: []
cleanUrlParameters: cleanUrlParameters:
project_id: 1 project_id: 1
server_id: 32 serverProvider_id: 1
queryParameters: [] queryParameters: []
cleanQueryParameters: [] cleanQueryParameters: []
bodyParameters: [] bodyParameters: []
@ -472,7 +362,10 @@ endpoints:
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer abv13ag8h5fZ4EPVDe6dc6k'
controller: null controller: null
method: null method: null
route: null route: null

View File

@ -1,22 +1,23 @@
## Autogenerated by Scribe. DO NOT MODIFY. ## Autogenerated by Scribe. DO NOT MODIFY.
name: server-providers name: ssh-keys
description: '' description: ''
endpoints: endpoints:
- -
httpMethods: httpMethods:
- GET - GET
uri: 'api/projects/{project_id}/server-providers' uri: 'api/projects/{project_id}/servers/{server_id}/ssh-keys'
metadata: metadata:
groupName: server-providers groupName: ssh-keys
groupDescription: '' groupDescription: ''
subgroup: '' subgroup: ''
subgroupDescription: '' subgroupDescription: ''
title: list title: list
description: '' description: 'Get all ssh keys.'
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -30,8 +31,19 @@ endpoints:
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
server_id:
name: server_id
description: 'The ID of the server.'
required: true
example: 8
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanUrlParameters: cleanUrlParameters:
project_id: 1 project_id: 1
server_id: 8
queryParameters: [] queryParameters: []
cleanQueryParameters: [] cleanQueryParameters: []
bodyParameters: [] bodyParameters: []
@ -40,12 +52,15 @@ endpoints:
responses: responses:
- -
status: 200 status: 200
content: '{"data":[{"id":4,"project_id":null,"global":true,"name":"quo","provider":"custom","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"},{"id":5,"project_id":null,"global":true,"name":"sed","provider":"digitalocean","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"}],"links":{"first":"\/?page=1","last":"\/?page=1","prev":null,"next":null},"meta":{"current_page":1,"from":1,"last_page":1,"links":[{"url":null,"label":"&laquo; Previous","active":false},{"url":"\/?page=1","label":"1","active":true},{"url":null,"label":"Next &raquo;","active":false}],"path":"\/","per_page":25,"to":2,"total":2}}' content: '{"data":[{"id":null,"user":null,"name":"Godfrey Mills","created_at":null,"updated_at":null},{"id":null,"user":null,"name":"Donato Streich","created_at":null,"updated_at":null}],"links":{"first":"\/?page=1","last":"\/?page=1","prev":null,"next":null},"meta":{"current_page":1,"from":1,"last_page":1,"links":[{"url":null,"label":"&laquo; Previous","active":false},{"url":"\/?page=1","label":"1","active":true},{"url":null,"label":"Next &raquo;","active":false}],"path":"\/","per_page":25,"to":2,"total":2}}'
headers: [] headers: []
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer 1gEva8Z6e6abPDhk453fdVc'
controller: null controller: null
method: null method: null
route: null route: null
@ -53,17 +68,18 @@ endpoints:
- -
httpMethods: httpMethods:
- POST - POST
uri: 'api/projects/{project_id}/server-providers' uri: 'api/projects/{project_id}/servers/{server_id}/ssh-keys'
metadata: metadata:
groupName: server-providers groupName: ssh-keys
groupDescription: '' groupDescription: ''
subgroup: '' subgroup: ''
subgroupDescription: '' subgroupDescription: ''
title: create title: create
description: '' description: 'Deploy ssh key to server.'
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -77,16 +93,27 @@ endpoints:
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
server_id:
name: server_id
description: 'The ID of the server.'
required: true
example: 8
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanUrlParameters: cleanUrlParameters:
project_id: 1 project_id: 1
server_id: 8
queryParameters: [] queryParameters: []
cleanQueryParameters: [] cleanQueryParameters: []
bodyParameters: bodyParameters:
provider: key_id:
name: provider name: key_id
description: 'The provider (aws, linode, hetzner, digitalocean, vultr, ...)' description: 'The ID of the key.'
required: true required: true
example: consequatur example: numquam
type: string type: string
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -94,200 +121,41 @@ endpoints:
custom: [] custom: []
name: name:
name: name name: name
description: 'The name of the server provider.' description: 'Key name, required if key_id is not provided.'
required: true required: true
example: consequatur example: alias
type: string type: string
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
token: public_key:
name: token name: public_key
description: 'The token if provider requires api token' description: 'Public Key, required if key_id is not provided.'
required: true required: true
example: consequatur example: voluptate
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
key:
name: key
description: 'The key if provider requires key'
required: true
example: consequatur
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
secret:
name: secret
description: 'The secret if provider requires key'
required: true
example: consequatur
type: string type: string
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
cleanBodyParameters: cleanBodyParameters:
provider: consequatur key_id: numquam
name: consequatur name: alias
token: consequatur public_key: voluptate
key: consequatur
secret: consequatur
fileParameters: [] fileParameters: []
responses: responses:
- -
status: 200 status: 200
content: '{"id":4,"project_id":null,"global":true,"name":"dolores","provider":"digitalocean","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"}' content: '{"id":null,"user":null,"name":"Mr. Stanton Bergnaum","created_at":null,"updated_at":null}'
headers: [] headers: []
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
controller: null - headers
method: null - Authorization
route: null - 'Bearer V64Z86fEdbavh1PgackDe53'
custom: []
-
httpMethods:
- GET
uri: 'api/projects/{project_id}/server-providers/{serverProvider_id}'
metadata:
groupName: server-providers
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: show
description: ''
authenticated: false
custom: []
headers:
Content-Type: application/json
Accept: application/json
urlParameters:
project_id:
name: project_id
description: 'The ID of the project.'
required: true
example: 1
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
serverProvider_id:
name: serverProvider_id
description: 'The ID of the serverProvider.'
required: true
example: 1
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanUrlParameters:
project_id: 1
serverProvider_id: 1
queryParameters: []
cleanQueryParameters: []
bodyParameters: []
cleanBodyParameters: []
fileParameters: []
responses:
-
status: 200
content: '{"id":4,"project_id":null,"global":true,"name":"voluptatem","provider":"vultr","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"}'
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: 1
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanUrlParameters:
project_id: 1
serverProvider_id: 1
queryParameters: []
cleanQueryParameters: []
bodyParameters:
name:
name: name
description: 'The name of the server provider.'
required: true
example: consequatur
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
global:
name: global
description: 'Accessible in all projects'
required: true
example: false
type: string
enumValues:
- true
- false
exampleWasSpecified: false
nullable: false
custom: []
cleanBodyParameters:
name: consequatur
global: false
fileParameters: []
responses:
-
status: 200
content: '{"id":4,"project_id":null,"global":true,"name":"dolores","provider":"digitalocean","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"}'
headers: []
description: ''
custom: []
responseFields: []
auth: []
controller: null controller: null
method: null method: null
route: null route: null
@ -295,17 +163,18 @@ endpoints:
- -
httpMethods: httpMethods:
- DELETE - DELETE
uri: 'api/projects/{project_id}/server-providers/{serverProvider_id}' uri: 'api/projects/{project_id}/servers/{server_id}/ssh-keys/{sshKey_id}'
metadata: metadata:
groupName: server-providers groupName: ssh-keys
groupDescription: '' groupDescription: ''
subgroup: '' subgroup: ''
subgroupDescription: '' subgroupDescription: ''
title: delete title: delete
description: '' description: 'Delete ssh key from server.'
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -319,9 +188,19 @@ endpoints:
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
serverProvider_id: server_id:
name: serverProvider_id name: server_id
description: 'The ID of the serverProvider.' description: 'The ID of the server.'
required: true
example: 8
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
sshKey_id:
name: sshKey_id
description: 'The ID of the sshKey.'
required: true required: true
example: 1 example: 1
type: integer type: integer
@ -331,7 +210,8 @@ endpoints:
custom: [] custom: []
cleanUrlParameters: cleanUrlParameters:
project_id: 1 project_id: 1
serverProvider_id: 1 server_id: 8
sshKey_id: 1
queryParameters: [] queryParameters: []
cleanQueryParameters: [] cleanQueryParameters: []
bodyParameters: [] bodyParameters: []
@ -345,7 +225,10 @@ endpoints:
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer 3deg1vc65k8D6abahfZVPE4'
controller: null controller: null
method: null method: null
route: null route: null

View File

@ -1,22 +1,23 @@
## Autogenerated by Scribe. DO NOT MODIFY. ## Autogenerated by Scribe. DO NOT MODIFY.
name: ssh-keys name: services
description: '' description: ''
endpoints: endpoints:
- -
httpMethods: httpMethods:
- GET - GET
uri: 'api/projects/{project_id}/servers/{server_id}/ssh-keys' uri: 'api/projects/{project_id}/servers/{server_id}/services'
metadata: metadata:
groupName: ssh-keys groupName: services
groupDescription: '' groupDescription: ''
subgroup: '' subgroup: ''
subgroupDescription: '' subgroupDescription: ''
title: list title: list
description: 'Get all ssh keys.' description: 'Get all services.'
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -34,7 +35,7 @@ endpoints:
name: server_id name: server_id
description: 'The ID of the server.' description: 'The ID of the server.'
required: true required: true
example: 32 example: 8
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -42,7 +43,7 @@ endpoints:
custom: [] custom: []
cleanUrlParameters: cleanUrlParameters:
project_id: 1 project_id: 1
server_id: 32 server_id: 8
queryParameters: [] queryParameters: []
cleanQueryParameters: [] cleanQueryParameters: []
bodyParameters: [] bodyParameters: []
@ -51,12 +52,88 @@ endpoints:
responses: responses:
- -
status: 200 status: 200
content: '{"data":[{"id":2,"user":{"id":1,"name":"Saeed Vaziry","email":"demo@vitodeploy.com","created_at":"2024-12-19T23:19:20.000000Z","updated_at":"2025-04-19T21:24:56.000000Z"},"name":"Prof. Aurelia Buckridge MD","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"},{"id":3,"user":{"id":1,"name":"Saeed Vaziry","email":"demo@vitodeploy.com","created_at":"2024-12-19T23:19:20.000000Z","updated_at":"2025-04-19T21:24:56.000000Z"},"name":"Jaylan Lakin","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"}],"links":{"first":"\/?page=1","last":"\/?page=1","prev":null,"next":null},"meta":{"current_page":1,"from":1,"last_page":1,"links":[{"url":null,"label":"&laquo; Previous","active":false},{"url":"\/?page=1","label":"1","active":true},{"url":null,"label":"Next &raquo;","active":false}],"path":"\/","per_page":25,"to":2,"total":2}}' content: '{"data":[{"id":null,"server_id":null,"type":null,"type_data":null,"name":null,"version":null,"unit":null,"status":null,"is_default":null,"created_at":null,"updated_at":null},{"id":null,"server_id":null,"type":null,"type_data":null,"name":null,"version":null,"unit":null,"status":null,"is_default":null,"created_at":null,"updated_at":null}],"links":{"first":"\/?page=1","last":"\/?page=1","prev":null,"next":null},"meta":{"current_page":1,"from":1,"last_page":1,"links":[{"url":null,"label":"&laquo; Previous","active":false},{"url":"\/?page=1","label":"1","active":true},{"url":null,"label":"Next &raquo;","active":false}],"path":"\/","per_page":25,"to":2,"total":2}}'
headers: [] headers: []
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer cdhb5VevgkZ6DafP6184a3E'
controller: null
method: null
route: null
custom: []
-
httpMethods:
- GET
uri: 'api/projects/{project_id}/servers/{server_id}/services/{id}'
metadata:
groupName: services
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: show
description: 'Get a service by ID.'
authenticated: true
custom: []
headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json
Accept: application/json
urlParameters:
project_id:
name: project_id
description: 'The ID of the project.'
required: true
example: 1
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
server_id:
name: server_id
description: 'The ID of the server.'
required: true
example: 8
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
id:
name: id
description: 'The ID of the service.'
required: true
example: 53
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanUrlParameters:
project_id: 1
server_id: 8
id: 53
queryParameters: []
cleanQueryParameters: []
bodyParameters: []
cleanBodyParameters: []
fileParameters: []
responses:
-
status: 200
content: '{"id":null,"server_id":null,"type":null,"type_data":null,"name":null,"version":null,"unit":null,"status":null,"is_default":null,"created_at":null,"updated_at":null}'
headers: []
description: ''
custom: []
responseFields: []
auth:
- headers
- Authorization
- 'Bearer 3vDaE6Pc51Zg8kbheadVf64'
controller: null controller: null
method: null method: null
route: null route: null
@ -64,17 +141,18 @@ endpoints:
- -
httpMethods: httpMethods:
- POST - POST
uri: 'api/projects/{project_id}/servers/{server_id}/ssh-keys' uri: 'api/projects/{project_id}/servers/{server_id}/services/{service_id}/start'
metadata: metadata:
groupName: ssh-keys groupName: services
groupDescription: '' groupDescription: ''
subgroup: '' subgroup: ''
subgroupDescription: '' subgroupDescription: ''
title: create title: start
description: 'Deploy ssh key to server.' description: 'Start service.'
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -92,7 +170,17 @@ endpoints:
name: server_id name: server_id
description: 'The ID of the server.' description: 'The ID of the server.'
required: true required: true
example: 32 example: 8
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
service_id:
name: service_id
description: 'The ID of the service.'
required: true
example: 53
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -100,109 +188,8 @@ endpoints:
custom: [] custom: []
cleanUrlParameters: cleanUrlParameters:
project_id: 1 project_id: 1
server_id: 32 server_id: 8
queryParameters: [] service_id: 53
cleanQueryParameters: []
bodyParameters:
key_id:
name: key_id
description: 'The ID of the key.'
required: true
example: consequatur
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
name:
name: name
description: 'Key name, required if key_id is not provided.'
required: true
example: consequatur
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: consequatur
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanBodyParameters:
key_id: consequatur
name: consequatur
public_key: consequatur
fileParameters: []
responses:
-
status: 200
content: '{"id":2,"user":{"id":1,"name":"Saeed Vaziry","email":"demo@vitodeploy.com","created_at":"2024-12-19T23:19:20.000000Z","updated_at":"2025-04-19T21:24:56.000000Z"},"name":"Dr. Cornelius Luettgen V","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"}'
headers: []
description: ''
custom: []
responseFields: []
auth: []
controller: null
method: null
route: null
custom: []
-
httpMethods:
- DELETE
uri: 'api/projects/{project_id}/servers/{server_id}/ssh-keys/{sshKey_id}'
metadata:
groupName: ssh-keys
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: delete
description: 'Delete ssh key from server.'
authenticated: false
custom: []
headers:
Content-Type: application/json
Accept: application/json
urlParameters:
project_id:
name: project_id
description: 'The ID of the project.'
required: true
example: 1
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
server_id:
name: server_id
description: 'The ID of the server.'
required: true
example: 32
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
sshKey_id:
name: sshKey_id
description: 'The ID of the sshKey.'
required: true
example: 1
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanUrlParameters:
project_id: 1
server_id: 32
sshKey_id: 1
queryParameters: [] queryParameters: []
cleanQueryParameters: [] cleanQueryParameters: []
bodyParameters: [] bodyParameters: []
@ -216,7 +203,375 @@ endpoints:
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer a6e6Db5VcP314EgZdka8vhf'
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: 8
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
service_id:
name: service_id
description: 'The ID of the service.'
required: true
example: 53
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanUrlParameters:
project_id: 1
server_id: 8
service_id: 53
queryParameters: []
cleanQueryParameters: []
bodyParameters: []
cleanBodyParameters: []
fileParameters: []
responses:
-
status: 204
content: null
headers: []
description: ''
custom: []
responseFields: []
auth:
- headers
- Authorization
- 'Bearer kefg56PEc4a18aDdvVZb3h6'
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: 8
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
service_id:
name: service_id
description: 'The ID of the service.'
required: true
example: 53
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanUrlParameters:
project_id: 1
server_id: 8
service_id: 53
queryParameters: []
cleanQueryParameters: []
bodyParameters: []
cleanBodyParameters: []
fileParameters: []
responses:
-
status: 204
content: null
headers: []
description: ''
custom: []
responseFields: []
auth:
- headers
- Authorization
- 'Bearer edhaE164avZ6gbVDPf3k8c5'
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: 8
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
service_id:
name: service_id
description: 'The ID of the service.'
required: true
example: 53
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanUrlParameters:
project_id: 1
server_id: 8
service_id: 53
queryParameters: []
cleanQueryParameters: []
bodyParameters: []
cleanBodyParameters: []
fileParameters: []
responses:
-
status: 204
content: null
headers: []
description: ''
custom: []
responseFields: []
auth:
- headers
- Authorization
- 'Bearer D4c1hbfV6Pad68v3gEkaeZ5'
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: 8
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
service_id:
name: service_id
description: 'The ID of the service.'
required: true
example: 53
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanUrlParameters:
project_id: 1
server_id: 8
service_id: 53
queryParameters: []
cleanQueryParameters: []
bodyParameters: []
cleanBodyParameters: []
fileParameters: []
responses:
-
status: 204
content: null
headers: []
description: ''
custom: []
responseFields: []
auth:
- headers
- Authorization
- 'Bearer be41fvh6a8d5PkDVEgZ36ca'
controller: null
method: null
route: null
custom: []
-
httpMethods:
- DELETE
uri: 'api/projects/{project_id}/servers/{server_id}/services/{service_id}'
metadata:
groupName: services
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: delete
description: 'Delete service.'
authenticated: true
custom: []
headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json
Accept: application/json
urlParameters:
project_id:
name: project_id
description: 'The ID of the project.'
required: true
example: 1
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
server_id:
name: server_id
description: 'The ID of the server.'
required: true
example: 8
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
service_id:
name: service_id
description: 'The ID of the service.'
required: true
example: 53
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanUrlParameters:
project_id: 1
server_id: 8
service_id: 53
queryParameters: []
cleanQueryParameters: []
bodyParameters: []
cleanBodyParameters: []
fileParameters: []
responses:
-
status: 204
content: null
headers: []
description: ''
custom: []
responseFields: []
auth:
- headers
- Authorization
- 'Bearer dcb68hg634P1DaZvef5VakE'
controller: null controller: null
method: null method: null
route: null route: null

View File

@ -1,22 +1,23 @@
## Autogenerated by Scribe. DO NOT MODIFY. ## Autogenerated by Scribe. DO NOT MODIFY.
name: services name: sites
description: '' description: ''
endpoints: endpoints:
- -
httpMethods: httpMethods:
- GET - GET
uri: 'api/projects/{project_id}/servers/{server_id}/services' uri: 'api/projects/{project_id}/servers/{server_id}/sites'
metadata: metadata:
groupName: services groupName: sites
groupDescription: '' groupDescription: ''
subgroup: '' subgroup: ''
subgroupDescription: '' subgroupDescription: ''
title: list title: list
description: 'Get all services.' description: 'Get all sites.'
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -34,7 +35,7 @@ endpoints:
name: server_id name: server_id
description: 'The ID of the server.' description: 'The ID of the server.'
required: true required: true
example: 32 example: 8
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -42,7 +43,7 @@ endpoints:
custom: [] custom: []
cleanUrlParameters: cleanUrlParameters:
project_id: 1 project_id: 1
server_id: 32 server_id: 8
queryParameters: [] queryParameters: []
cleanQueryParameters: [] cleanQueryParameters: []
bodyParameters: [] bodyParameters: []
@ -51,30 +52,34 @@ endpoints:
responses: responses:
- -
status: 200 status: 200
content: '{"data":[{"id":null,"server_id":1,"type":"webserver","type_data":null,"name":"nginx","version":null,"unit":null,"status":"ready","is_default":null,"created_at":null,"updated_at":null},{"id":null,"server_id":1,"type":"webserver","type_data":null,"name":"nginx","version":null,"unit":null,"status":"ready","is_default":null,"created_at":null,"updated_at":null}],"links":{"first":"\/?page=1","last":"\/?page=1","prev":null,"next":null},"meta":{"current_page":1,"from":1,"last_page":1,"links":[{"url":null,"label":"&laquo; Previous","active":false},{"url":"\/?page=1","label":"1","active":true},{"url":null,"label":"Next &raquo;","active":false}],"path":"\/","per_page":25,"to":2,"total":2}}' content: '{"data":[{"id":null,"server_id":null,"source_control_id":null,"type":"laravel","type_data":null,"domain":"test.com","aliases":null,"web_directory":"\/","path":"\/home","php_version":"8.2","repository":null,"branch":"main","status":"ready","port":null,"user":"vito","progress":100,"created_at":null,"updated_at":null},{"id":null,"server_id":null,"source_control_id":null,"type":"laravel","type_data":null,"domain":"test.com","aliases":null,"web_directory":"\/","path":"\/home","php_version":"8.2","repository":null,"branch":"main","status":"ready","port":null,"user":"vito","progress":100,"created_at":null,"updated_at":null}],"links":{"first":"\/?page=1","last":"\/?page=1","prev":null,"next":null},"meta":{"current_page":1,"from":1,"last_page":1,"links":[{"url":null,"label":"&laquo; Previous","active":false},{"url":"\/?page=1","label":"1","active":true},{"url":null,"label":"Next &raquo;","active":false}],"path":"\/","per_page":25,"to":2,"total":2}}'
headers: [] headers: []
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer 3gE54ahkea166PfvbVD8Zdc'
controller: null controller: null
method: null method: null
route: null route: null
custom: [] custom: []
- -
httpMethods: httpMethods:
- GET - POST
uri: 'api/projects/{project_id}/servers/{server_id}/services/{id}' uri: 'api/projects/{project_id}/servers/{server_id}/sites'
metadata: metadata:
groupName: services groupName: sites
groupDescription: '' groupDescription: ''
subgroup: '' subgroup: ''
subgroupDescription: '' subgroupDescription: ''
title: show title: create
description: 'Get a service by ID.' description: 'Create a new site.'
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -92,7 +97,212 @@ endpoints:
name: server_id name: server_id
description: 'The ID of the server.' description: 'The ID of the server.'
required: true required: true
example: 32 example: 8
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanUrlParameters:
project_id: 1
server_id: 8
queryParameters: []
cleanQueryParameters: []
bodyParameters:
type:
name: type
description: ''
required: true
example: php
type: string
enumValues:
- php
- php-blank
- phpmyadmin
- laravel
- wordpress
- load-balancer
exampleWasSpecified: false
nullable: false
custom: []
domain:
name: domain
description: ''
required: true
example: rem
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
aliases:
name: aliases
description: ''
required: true
example:
- libero
type: 'string[]'
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
php_version:
name: php_version
description: 'One of the installed PHP Versions'
required: true
example: '7.4'
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
web_directory:
name: web_directory
description: 'Required for PHP and Laravel sites'
required: true
example: public
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
source_control:
name: source_control
description: 'Source control ID, Required for Sites which support source control'
required: true
example: dolor
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
repository:
name: repository
description: 'Repository, Required for Sites which support source control'
required: true
example: organization/repository
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
branch:
name: branch
description: 'Branch, Required for Sites which support source control'
required: true
example: main
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
composer:
name: composer
description: 'Run composer if site supports composer'
required: true
example: true
type: boolean
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
version:
name: version
description: 'Version, if the site type requires a version like PHPMyAdmin'
required: true
example: 5.2.1
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
user:
name: user
description: 'user, to isolate the website under a new user'
required: true
example: vitae
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
method:
name: method
description: 'Load balancer method, Required if the site type is Load balancer'
required: true
example: ip-hash
type: string
enumValues:
- round-robin
- least-connections
- ip-hash
exampleWasSpecified: false
nullable: false
custom: []
cleanBodyParameters:
type: php
domain: rem
aliases:
- libero
php_version: '7.4'
web_directory: public
source_control: dolor
repository: organization/repository
branch: main
composer: true
version: 5.2.1
user: vitae
method: ip-hash
fileParameters: []
responses:
-
status: 200
content: '{"id":null,"server_id":null,"source_control_id":null,"type":"laravel","type_data":null,"domain":"test.com","aliases":null,"web_directory":"\/","path":"\/home","php_version":"8.2","repository":null,"branch":"main","status":"ready","port":null,"user":"vito","progress":100,"created_at":null,"updated_at":null}'
headers: []
description: ''
custom: []
responseFields: []
auth:
- headers
- Authorization
- 'Bearer e1V4ga3Pavk6ch6b5E8fZdD'
controller: null
method: null
route: null
custom: []
-
httpMethods:
- GET
uri: 'api/projects/{project_id}/servers/{server_id}/sites/{id}'
metadata:
groupName: sites
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: show
description: 'Get a site 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: 8
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -100,9 +310,9 @@ endpoints:
custom: [] custom: []
id: id:
name: id name: id
description: 'The ID of the service.' description: 'The ID of the site.'
required: true required: true
example: 184 example: 26
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -110,8 +320,8 @@ endpoints:
custom: [] custom: []
cleanUrlParameters: cleanUrlParameters:
project_id: 1 project_id: 1
server_id: 32 server_id: 8
id: 184 id: 26
queryParameters: [] queryParameters: []
cleanQueryParameters: [] cleanQueryParameters: []
bodyParameters: [] bodyParameters: []
@ -120,357 +330,15 @@ endpoints:
responses: responses:
- -
status: 200 status: 200
content: '{"id":null,"server_id":1,"type":"webserver","type_data":null,"name":"nginx","version":null,"unit":null,"status":"ready","is_default":null,"created_at":null,"updated_at":null}' content: '{"id":null,"server_id":null,"source_control_id":null,"type":"laravel","type_data":null,"domain":"test.com","aliases":null,"web_directory":"\/","path":"\/home","php_version":"8.2","repository":null,"branch":"main","status":"ready","port":null,"user":"vito","progress":100,"created_at":null,"updated_at":null}'
headers: [] headers: []
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
controller: null - headers
method: null - Authorization
route: null - 'Bearer 8gZkEaehfd4v3bac615DVP6'
custom: []
-
httpMethods:
- POST
uri: 'api/projects/{project_id}/servers/{server_id}/services/{service_id}/start'
metadata:
groupName: services
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: start
description: 'Start service.'
authenticated: false
custom: []
headers:
Content-Type: application/json
Accept: application/json
urlParameters:
project_id:
name: project_id
description: 'The ID of the project.'
required: true
example: 1
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
server_id:
name: server_id
description: 'The ID of the server.'
required: true
example: 32
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
service_id:
name: service_id
description: 'The ID of the service.'
required: true
example: 184
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanUrlParameters:
project_id: 1
server_id: 32
service_id: 184
queryParameters: []
cleanQueryParameters: []
bodyParameters: []
cleanBodyParameters: []
fileParameters: []
responses:
-
status: 204
content: null
headers: []
description: ''
custom: []
responseFields: []
auth: []
controller: null
method: null
route: null
custom: []
-
httpMethods:
- POST
uri: 'api/projects/{project_id}/servers/{server_id}/services/{service_id}/stop'
metadata:
groupName: services
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: stop
description: 'Stop service.'
authenticated: false
custom: []
headers:
Content-Type: application/json
Accept: application/json
urlParameters:
project_id:
name: project_id
description: 'The ID of the project.'
required: true
example: 1
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
server_id:
name: server_id
description: 'The ID of the server.'
required: true
example: 32
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
service_id:
name: service_id
description: 'The ID of the service.'
required: true
example: 184
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanUrlParameters:
project_id: 1
server_id: 32
service_id: 184
queryParameters: []
cleanQueryParameters: []
bodyParameters: []
cleanBodyParameters: []
fileParameters: []
responses:
-
status: 204
content: null
headers: []
description: ''
custom: []
responseFields: []
auth: []
controller: null
method: null
route: null
custom: []
-
httpMethods:
- POST
uri: 'api/projects/{project_id}/servers/{server_id}/services/{service_id}/restart'
metadata:
groupName: services
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: restart
description: 'Restart service.'
authenticated: false
custom: []
headers:
Content-Type: application/json
Accept: application/json
urlParameters:
project_id:
name: project_id
description: 'The ID of the project.'
required: true
example: 1
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
server_id:
name: server_id
description: 'The ID of the server.'
required: true
example: 32
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
service_id:
name: service_id
description: 'The ID of the service.'
required: true
example: 184
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanUrlParameters:
project_id: 1
server_id: 32
service_id: 184
queryParameters: []
cleanQueryParameters: []
bodyParameters: []
cleanBodyParameters: []
fileParameters: []
responses:
-
status: 204
content: null
headers: []
description: ''
custom: []
responseFields: []
auth: []
controller: null
method: null
route: null
custom: []
-
httpMethods:
- POST
uri: 'api/projects/{project_id}/servers/{server_id}/services/{service_id}/enable'
metadata:
groupName: services
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: enable
description: 'Enable service.'
authenticated: false
custom: []
headers:
Content-Type: application/json
Accept: application/json
urlParameters:
project_id:
name: project_id
description: 'The ID of the project.'
required: true
example: 1
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
server_id:
name: server_id
description: 'The ID of the server.'
required: true
example: 32
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
service_id:
name: service_id
description: 'The ID of the service.'
required: true
example: 184
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanUrlParameters:
project_id: 1
server_id: 32
service_id: 184
queryParameters: []
cleanQueryParameters: []
bodyParameters: []
cleanBodyParameters: []
fileParameters: []
responses:
-
status: 204
content: null
headers: []
description: ''
custom: []
responseFields: []
auth: []
controller: null
method: null
route: null
custom: []
-
httpMethods:
- POST
uri: 'api/projects/{project_id}/servers/{server_id}/services/{service_id}/disable'
metadata:
groupName: services
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: disable
description: 'Disable service.'
authenticated: false
custom: []
headers:
Content-Type: application/json
Accept: application/json
urlParameters:
project_id:
name: project_id
description: 'The ID of the project.'
required: true
example: 1
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
server_id:
name: server_id
description: 'The ID of the server.'
required: true
example: 32
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
service_id:
name: service_id
description: 'The ID of the service.'
required: true
example: 184
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanUrlParameters:
project_id: 1
server_id: 32
service_id: 184
queryParameters: []
cleanQueryParameters: []
bodyParameters: []
cleanBodyParameters: []
fileParameters: []
responses:
-
status: 204
content: null
headers: []
description: ''
custom: []
responseFields: []
auth: []
controller: null controller: null
method: null method: null
route: null route: null
@ -478,17 +346,18 @@ endpoints:
- -
httpMethods: httpMethods:
- DELETE - DELETE
uri: 'api/projects/{project_id}/servers/{server_id}/services/{service_id}' uri: 'api/projects/{project_id}/servers/{server_id}/sites/{site_id}'
metadata: metadata:
groupName: services groupName: sites
groupDescription: '' groupDescription: ''
subgroup: '' subgroup: ''
subgroupDescription: '' subgroupDescription: ''
title: delete title: delete
description: 'Delete service.' description: 'Delete site.'
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -506,17 +375,17 @@ endpoints:
name: server_id name: server_id
description: 'The ID of the server.' description: 'The ID of the server.'
required: true required: true
example: 32 example: 8
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
service_id: site_id:
name: service_id name: site_id
description: 'The ID of the service.' description: 'The ID of the site.'
required: true required: true
example: 184 example: 26
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -524,8 +393,8 @@ endpoints:
custom: [] custom: []
cleanUrlParameters: cleanUrlParameters:
project_id: 1 project_id: 1
server_id: 32 server_id: 8
service_id: 184 site_id: 26
queryParameters: [] queryParameters: []
cleanQueryParameters: [] cleanQueryParameters: []
bodyParameters: [] bodyParameters: []
@ -539,7 +408,110 @@ endpoints:
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer aadb1h6f6kD4V8vePZgcE35'
controller: null
method: null
route: null
custom: []
-
httpMethods:
- POST
uri: 'api/projects/{project_id}/servers/{server_id}/sites/{site_id}/load-balancer'
metadata:
groupName: sites
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: load-balancer
description: 'Update load balancer.'
authenticated: 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: 8
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
site_id:
name: site_id
description: 'The ID of the site.'
required: true
example: 26
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanUrlParameters:
project_id: 1
server_id: 8
site_id: 26
queryParameters: []
cleanQueryParameters: []
bodyParameters:
method:
name: method
description: 'Load balancer method, Required if the site type is Load balancer'
required: true
example: least-connections
type: string
enumValues:
- round-robin
- least-connections
- ip-hash
exampleWasSpecified: false
nullable: false
custom: []
servers:
name: servers
description: 'Array of servers including server, port, weight, backup. (server is the local IP of the server)'
required: true
example:
- deleniti
type: 'string[]'
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanBodyParameters:
method: least-connections
servers:
- deleniti
fileParameters: []
responses:
-
status: 200
content: null
headers: []
description: ''
custom: []
responseFields: []
auth:
- headers
- Authorization
- 'Bearer 5E6hZa64bka1cV3Pdvf8Deg'
controller: null controller: null
method: null method: null
route: null route: null

File diff suppressed because it is too large Load Diff

View File

@ -1,22 +1,23 @@
## Autogenerated by Scribe. DO NOT MODIFY. ## Autogenerated by Scribe. DO NOT MODIFY.
name: source-controls name: storage-providers
description: '' description: ''
endpoints: endpoints:
- -
httpMethods: httpMethods:
- GET - GET
uri: 'api/projects/{project_id}/source-controls' uri: 'api/projects/{project_id}/storage-providers'
metadata: metadata:
groupName: source-controls groupName: storage-providers
groupDescription: '' groupDescription: ''
subgroup: '' subgroup: ''
subgroupDescription: '' subgroupDescription: ''
title: list title: list
description: '' description: ''
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -40,12 +41,15 @@ endpoints:
responses: responses:
- -
status: 200 status: 200
content: '{"data":[{"id":5,"project_id":null,"global":true,"name":"Dr. Cornelius Luettgen V","provider":"github","created_at":"2025-04-21T18:40:20.000000Z","updated_at":"2025-04-21T18:40:20.000000Z"},{"id":6,"project_id":null,"global":true,"name":"Orville Satterfield","provider":"github","created_at":"2025-04-21T18:40:20.000000Z","updated_at":"2025-04-21T18:40:20.000000Z"}],"links":{"first":"\/?page=1","last":"\/?page=1","prev":null,"next":null},"meta":{"current_page":1,"from":1,"last_page":1,"links":[{"url":null,"label":"&laquo; Previous","active":false},{"url":"\/?page=1","label":"1","active":true},{"url":null,"label":"Next &raquo;","active":false}],"path":"\/","per_page":25,"to":2,"total":2}}' content: '{"data":[{"id":5,"project_id":null,"global":true,"name":"dolorem","provider":"s3","created_at":"2025-01-30T22:42:49.000000Z","updated_at":"2025-01-30T22:42:49.000000Z"},{"id":6,"project_id":null,"global":true,"name":"itaque","provider":"s3","created_at":"2025-01-30T22:42:49.000000Z","updated_at":"2025-01-30T22:42:49.000000Z"}],"links":{"first":"\/?page=1","last":"\/?page=1","prev":null,"next":null},"meta":{"current_page":1,"from":1,"last_page":1,"links":[{"url":null,"label":"&laquo; Previous","active":false},{"url":"\/?page=1","label":"1","active":true},{"url":null,"label":"Next &raquo;","active":false}],"path":"\/","per_page":25,"to":2,"total":2}}'
headers: [] headers: []
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer D16Vg58E6Pfkh3Zveab4dca'
controller: null controller: null
method: null method: null
route: null route: null
@ -53,17 +57,18 @@ endpoints:
- -
httpMethods: httpMethods:
- POST - POST
uri: 'api/projects/{project_id}/source-controls' uri: 'api/projects/{project_id}/storage-providers'
metadata: metadata:
groupName: source-controls groupName: storage-providers
groupDescription: '' groupDescription: ''
subgroup: '' subgroup: ''
subgroupDescription: '' subgroupDescription: ''
title: create title: create
description: '' description: ''
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -84,14 +89,11 @@ endpoints:
bodyParameters: bodyParameters:
provider: provider:
name: provider name: provider
description: 'The provider' description: 'The provider (aws, linode, hetzner, digitalocean, vultr, ...)'
required: true required: true
example: gitlab example: alias
type: string type: string
enumValues: enumValues: []
- gitlab
- github
- bitbucket
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
@ -99,7 +101,7 @@ endpoints:
name: name name: name
description: 'The name of the storage provider.' description: 'The name of the storage provider.'
required: true required: true
example: consequatur example: explicabo
type: string type: string
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -109,25 +111,25 @@ endpoints:
name: token name: token
description: 'The token if provider requires api token' description: 'The token if provider requires api token'
required: true required: true
example: consequatur example: ut
type: string type: string
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
url: key:
name: url name: key
description: 'The URL if the provider is Gitlab and it is self-hosted' description: 'The key if provider requires key'
required: true required: true
example: 'http://kunze.biz/iste-laborum-eius-est-dolor.html' example: libero
type: string type: string
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
username: secret:
name: username name: secret
description: 'The username if the provider is Bitbucket' description: 'The secret if provider requires key'
required: true required: true
example: consequatur example: consequatur
type: string type: string
@ -135,33 +137,25 @@ endpoints:
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
password:
name: password
description: 'The password if the provider is Bitbucket'
required: true
example: 'O[2UZ5ij-e/dl4m{o,'
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanBodyParameters: cleanBodyParameters:
provider: gitlab provider: alias
name: consequatur name: explicabo
token: consequatur token: ut
url: 'http://kunze.biz/iste-laborum-eius-est-dolor.html' key: libero
username: consequatur secret: consequatur
password: 'O[2UZ5ij-e/dl4m{o,'
fileParameters: [] fileParameters: []
responses: responses:
- -
status: 200 status: 200
content: '{"id":5,"project_id":null,"global":true,"name":"Lonny Ankunding","provider":"github","created_at":"2025-04-21T18:40:20.000000Z","updated_at":"2025-04-21T18:40:20.000000Z"}' content: '{"id":5,"project_id":null,"global":true,"name":"quos","provider":"s3","created_at":"2025-01-30T22:42:49.000000Z","updated_at":"2025-01-30T22:42:49.000000Z"}'
headers: [] headers: []
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer DaZ6d6Eck1bhVe3g4aP85vf'
controller: null controller: null
method: null method: null
route: null route: null
@ -169,17 +163,18 @@ endpoints:
- -
httpMethods: httpMethods:
- GET - GET
uri: 'api/projects/{project_id}/source-controls/{sourceControl_id}' uri: 'api/projects/{project_id}/storage-providers/{storageProvider_id}'
metadata: metadata:
groupName: source-controls groupName: storage-providers
groupDescription: '' groupDescription: ''
subgroup: '' subgroup: ''
subgroupDescription: '' subgroupDescription: ''
title: show title: show
description: '' description: ''
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -193,11 +188,11 @@ endpoints:
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
sourceControl_id: storageProvider_id:
name: sourceControl_id name: storageProvider_id
description: 'The ID of the sourceControl.' description: 'The ID of the storageProvider.'
required: true required: true
example: 1 example: 3
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -205,7 +200,7 @@ endpoints:
custom: [] custom: []
cleanUrlParameters: cleanUrlParameters:
project_id: 1 project_id: 1
sourceControl_id: 1 storageProvider_id: 3
queryParameters: [] queryParameters: []
cleanQueryParameters: [] cleanQueryParameters: []
bodyParameters: [] bodyParameters: []
@ -214,12 +209,15 @@ endpoints:
responses: responses:
- -
status: 200 status: 200
content: '{"id":5,"project_id":null,"global":true,"name":"Dr. Enoch Harber II","provider":"github","created_at":"2025-04-21T18:40:20.000000Z","updated_at":"2025-04-21T18:40:20.000000Z"}' content: '{"id":5,"project_id":null,"global":true,"name":"id","provider":"s3","created_at":"2025-01-30T22:42:49.000000Z","updated_at":"2025-01-30T22:42:49.000000Z"}'
headers: [] headers: []
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer 1dekD4gva56bc683VPEhZfa'
controller: null controller: null
method: null method: null
route: null route: null
@ -227,17 +225,18 @@ endpoints:
- -
httpMethods: httpMethods:
- PUT - PUT
uri: 'api/projects/{project_id}/source-controls/{sourceControl_id}' uri: 'api/projects/{project_id}/storage-providers/{storageProvider_id}'
metadata: metadata:
groupName: source-controls groupName: storage-providers
groupDescription: '' groupDescription: ''
subgroup: '' subgroup: ''
subgroupDescription: '' subgroupDescription: ''
title: update title: update
description: '' description: ''
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -251,11 +250,11 @@ endpoints:
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
sourceControl_id: storageProvider_id:
name: sourceControl_id name: storageProvider_id
description: 'The ID of the sourceControl.' description: 'The ID of the storageProvider.'
required: true required: true
example: 1 example: 3
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -263,7 +262,7 @@ endpoints:
custom: [] custom: []
cleanUrlParameters: cleanUrlParameters:
project_id: 1 project_id: 1
sourceControl_id: 1 storageProvider_id: 3
queryParameters: [] queryParameters: []
cleanQueryParameters: [] cleanQueryParameters: []
bodyParameters: bodyParameters:
@ -271,47 +270,7 @@ endpoints:
name: name name: name
description: 'The name of the storage provider.' description: 'The name of the storage provider.'
required: true required: true
example: consequatur example: sequi
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
token:
name: token
description: 'The token if provider requires api token'
required: true
example: consequatur
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
url:
name: url
description: 'The URL if the provider is Gitlab and it is self-hosted'
required: true
example: 'http://kunze.biz/iste-laborum-eius-est-dolor.html'
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
username:
name: username
description: 'The username if the provider is Bitbucket'
required: true
example: consequatur
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
password:
name: password
description: 'The password if the provider is Bitbucket'
required: true
example: 'O[2UZ5ij-e/dl4m{o,'
type: string type: string
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -330,22 +289,21 @@ endpoints:
nullable: false nullable: false
custom: [] custom: []
cleanBodyParameters: cleanBodyParameters:
name: consequatur name: sequi
token: consequatur
url: 'http://kunze.biz/iste-laborum-eius-est-dolor.html'
username: consequatur
password: 'O[2UZ5ij-e/dl4m{o,'
global: false global: false
fileParameters: [] fileParameters: []
responses: responses:
- -
status: 200 status: 200
content: '{"id":5,"project_id":null,"global":true,"name":"Lonny Ankunding","provider":"github","created_at":"2025-04-21T18:40:20.000000Z","updated_at":"2025-04-21T18:40:20.000000Z"}' content: '{"id":5,"project_id":null,"global":true,"name":"velit","provider":"s3","created_at":"2025-01-30T22:42:49.000000Z","updated_at":"2025-01-30T22:42:49.000000Z"}'
headers: [] headers: []
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer V65g18Pca4v3hDEkbZfe6da'
controller: null controller: null
method: null method: null
route: null route: null
@ -353,17 +311,18 @@ endpoints:
- -
httpMethods: httpMethods:
- DELETE - DELETE
uri: 'api/projects/{project_id}/source-controls/{sourceControl_id}' uri: 'api/projects/{project_id}/storage-providers/{storageProvider_id}'
metadata: metadata:
groupName: source-controls groupName: storage-providers
groupDescription: '' groupDescription: ''
subgroup: '' subgroup: ''
subgroupDescription: '' subgroupDescription: ''
title: delete title: delete
description: '' description: ''
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -377,11 +336,11 @@ endpoints:
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
sourceControl_id: storageProvider_id:
name: sourceControl_id name: storageProvider_id
description: 'The ID of the sourceControl.' description: 'The ID of the storageProvider.'
required: true required: true
example: 1 example: 3
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -389,7 +348,7 @@ endpoints:
custom: [] custom: []
cleanUrlParameters: cleanUrlParameters:
project_id: 1 project_id: 1
sourceControl_id: 1 storageProvider_id: 3
queryParameters: [] queryParameters: []
cleanQueryParameters: [] cleanQueryParameters: []
bodyParameters: [] bodyParameters: []
@ -403,7 +362,10 @@ endpoints:
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer 1v6a6efgch3DbZ4aVE5d8kP'
controller: null controller: null
method: null method: null
route: null route: null

View File

@ -1,352 +0,0 @@
## Autogenerated by Scribe. DO NOT MODIFY.
name: storage-providers
description: ''
endpoints:
-
httpMethods:
- GET
uri: 'api/projects/{project_id}/storage-providers'
metadata:
groupName: storage-providers
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: list
description: ''
authenticated: false
custom: []
headers:
Content-Type: application/json
Accept: application/json
urlParameters:
project_id:
name: project_id
description: 'The ID of the project.'
required: true
example: 1
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanUrlParameters:
project_id: 1
queryParameters: []
cleanQueryParameters: []
bodyParameters: []
cleanBodyParameters: []
fileParameters: []
responses:
-
status: 200
content: '{"data":[{"id":5,"project_id":null,"global":true,"name":"dolores","provider":"local","created_at":"2025-04-21T18:40:20.000000Z","updated_at":"2025-04-21T18:40:20.000000Z"},{"id":6,"project_id":null,"global":true,"name":"dignissimos","provider":"dropbox","created_at":"2025-04-21T18:40:20.000000Z","updated_at":"2025-04-21T18:40:20.000000Z"}],"links":{"first":"\/?page=1","last":"\/?page=1","prev":null,"next":null},"meta":{"current_page":1,"from":1,"last_page":1,"links":[{"url":null,"label":"&laquo; Previous","active":false},{"url":"\/?page=1","label":"1","active":true},{"url":null,"label":"Next &raquo;","active":false}],"path":"\/","per_page":25,"to":2,"total":2}}'
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: consequatur
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
name:
name: name
description: 'The name of the storage provider.'
required: true
example: consequatur
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
token:
name: token
description: 'The token if provider requires api token'
required: true
example: consequatur
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
key:
name: key
description: 'The key if provider requires key'
required: true
example: consequatur
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
secret:
name: secret
description: 'The secret if provider requires key'
required: true
example: consequatur
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanBodyParameters:
provider: consequatur
name: consequatur
token: consequatur
key: consequatur
secret: consequatur
fileParameters: []
responses:
-
status: 200
content: '{"id":5,"project_id":null,"global":true,"name":"dolores","provider":"local","created_at":"2025-04-21T18:40:20.000000Z","updated_at":"2025-04-21T18:40:20.000000Z"}'
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: 3
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanUrlParameters:
project_id: 1
storageProvider_id: 3
queryParameters: []
cleanQueryParameters: []
bodyParameters: []
cleanBodyParameters: []
fileParameters: []
responses:
-
status: 200
content: '{"id":5,"project_id":null,"global":true,"name":"facilis","provider":"dropbox","created_at":"2025-04-21T18:40:20.000000Z","updated_at":"2025-04-21T18:40:20.000000Z"}'
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: 3
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanUrlParameters:
project_id: 1
storageProvider_id: 3
queryParameters: []
cleanQueryParameters: []
bodyParameters:
name:
name: name
description: 'The name of the storage provider.'
required: true
example: consequatur
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
global:
name: global
description: 'Accessible in all projects'
required: true
example: true
type: string
enumValues:
- true
- false
exampleWasSpecified: false
nullable: false
custom: []
cleanBodyParameters:
name: consequatur
global: true
fileParameters: []
responses:
-
status: 200
content: '{"id":5,"project_id":null,"global":true,"name":"dolores","provider":"local","created_at":"2025-04-21T18:40:20.000000Z","updated_at":"2025-04-21T18:40:20.000000Z"}'
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: 3
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanUrlParameters:
project_id: 1
storageProvider_id: 3
queryParameters: []
cleanQueryParameters: []
bodyParameters: []
cleanBodyParameters: []
fileParameters: []
responses:
-
status: 204
content: null
headers: []
description: ''
custom: []
responseFields: []
auth: []
controller: null
method: null
route: null
custom: []

View File

@ -12,9 +12,10 @@ endpoints:
subgroupDescription: '' subgroupDescription: ''
title: list title: list
description: 'Get all cron jobs.' description: 'Get all cron jobs.'
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -32,7 +33,7 @@ endpoints:
name: server_id name: server_id
description: 'The ID of the server.' description: 'The ID of the server.'
required: true required: true
example: 32 example: 8
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -40,7 +41,7 @@ endpoints:
custom: [] custom: []
cleanUrlParameters: cleanUrlParameters:
project_id: 1 project_id: 1
server_id: 32 server_id: 8
queryParameters: [] queryParameters: []
cleanQueryParameters: [] cleanQueryParameters: []
bodyParameters: [] bodyParameters: []
@ -49,12 +50,15 @@ endpoints:
responses: responses:
- -
status: 200 status: 200
content: '{"data":[{"id":5,"server_id":1,"command":"ls -la","user":"root","frequency":"* * * * *","status":"ready","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"},{"id":6,"server_id":1,"command":"ls -la","user":"root","frequency":"* * * * *","status":"ready","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"}],"links":{"first":"\/?page=1","last":"\/?page=1","prev":null,"next":null},"meta":{"current_page":1,"from":1,"last_page":1,"links":[{"url":null,"label":"&laquo; Previous","active":false},{"url":"\/?page=1","label":"1","active":true},{"url":null,"label":"Next &raquo;","active":false}],"path":"\/","per_page":25,"to":2,"total":2}}' content: '{"data":[{"id":null,"server_id":null,"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: [] headers: []
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer ge6ZVa4kfD86hdv5a31EcbP'
controller: null controller: null
method: null method: null
route: null route: null
@ -70,9 +74,10 @@ endpoints:
subgroupDescription: '' subgroupDescription: ''
title: create title: create
description: 'Create a new cron job.' description: 'Create a new cron job.'
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -90,7 +95,7 @@ endpoints:
name: server_id name: server_id
description: 'The ID of the server.' description: 'The ID of the server.'
required: true required: true
example: 32 example: 8
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -98,7 +103,7 @@ endpoints:
custom: [] custom: []
cleanUrlParameters: cleanUrlParameters:
project_id: 1 project_id: 1
server_id: 32 server_id: 8
queryParameters: [] queryParameters: []
cleanQueryParameters: [] cleanQueryParameters: []
bodyParameters: bodyParameters:
@ -106,7 +111,7 @@ endpoints:
name: command name: command
description: '' description: ''
required: true required: true
example: consequatur example: itaque
type: string type: string
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -116,7 +121,7 @@ endpoints:
name: user name: user
description: '' description: ''
required: true required: true
example: vito example: root
type: string type: string
enumValues: enumValues:
- root - root
@ -135,19 +140,22 @@ endpoints:
nullable: false nullable: false
custom: [] custom: []
cleanBodyParameters: cleanBodyParameters:
command: consequatur command: itaque
user: vito user: root
frequency: '* * * * *' frequency: '* * * * *'
fileParameters: [] fileParameters: []
responses: responses:
- -
status: 200 status: 200
content: '{"id":5,"server_id":1,"command":"ls -la","user":"root","frequency":"* * * * *","status":"ready","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"}' content: '{"id":null,"server_id":null,"command":"ls -la","user":"root","frequency":"* * * * *","status":"ready","created_at":null,"updated_at":null}'
headers: [] headers: []
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer cdh5bD8gVPkf34e1ZEva6a6'
controller: null controller: null
method: null method: null
route: null route: null
@ -163,9 +171,10 @@ endpoints:
subgroupDescription: '' subgroupDescription: ''
title: show title: show
description: 'Get a cron job by ID.' description: 'Get a cron job by ID.'
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -183,7 +192,7 @@ endpoints:
name: server_id name: server_id
description: 'The ID of the server.' description: 'The ID of the server.'
required: true required: true
example: 32 example: 8
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -193,7 +202,7 @@ endpoints:
name: cronJob_id name: cronJob_id
description: 'The ID of the cronJob.' description: 'The ID of the cronJob.'
required: true required: true
example: 17 example: 18
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -201,8 +210,8 @@ endpoints:
custom: [] custom: []
cleanUrlParameters: cleanUrlParameters:
project_id: 1 project_id: 1
server_id: 32 server_id: 8
cronJob_id: 17 cronJob_id: 18
queryParameters: [] queryParameters: []
cleanQueryParameters: [] cleanQueryParameters: []
bodyParameters: [] bodyParameters: []
@ -211,12 +220,15 @@ endpoints:
responses: responses:
- -
status: 200 status: 200
content: '{"id":5,"server_id":1,"command":"ls -la","user":"root","frequency":"* * * * *","status":"ready","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"}' content: '{"id":null,"server_id":null,"command":"ls -la","user":"root","frequency":"* * * * *","status":"ready","created_at":null,"updated_at":null}'
headers: [] headers: []
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer fa5VgdkaD8cZ6vh34Pb16eE'
controller: null controller: null
method: null method: null
route: null route: null
@ -232,9 +244,10 @@ endpoints:
subgroupDescription: '' subgroupDescription: ''
title: delete title: delete
description: 'Delete cron job.' description: 'Delete cron job.'
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -252,7 +265,7 @@ endpoints:
name: server_id name: server_id
description: 'The ID of the server.' description: 'The ID of the server.'
required: true required: true
example: 32 example: 8
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -262,7 +275,7 @@ endpoints:
name: cronJob_id name: cronJob_id
description: 'The ID of the cronJob.' description: 'The ID of the cronJob.'
required: true required: true
example: 17 example: 10
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -270,8 +283,8 @@ endpoints:
custom: [] custom: []
cleanUrlParameters: cleanUrlParameters:
project_id: 1 project_id: 1
server_id: 32 server_id: 8
cronJob_id: 17 cronJob_id: 10
queryParameters: [] queryParameters: []
cleanQueryParameters: [] cleanQueryParameters: []
bodyParameters: [] bodyParameters: []
@ -285,7 +298,10 @@ endpoints:
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer P8hkva3ZD4fgb166adEVce5'
controller: null controller: null
method: null method: null
route: null route: null

View File

@ -12,9 +12,10 @@ endpoints:
subgroupDescription: '' subgroupDescription: ''
title: list title: list
description: 'Get all databases.' description: 'Get all databases.'
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -32,7 +33,7 @@ endpoints:
name: server_id name: server_id
description: 'The ID of the server.' description: 'The ID of the server.'
required: true required: true
example: 32 example: 8
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -40,7 +41,7 @@ endpoints:
custom: [] custom: []
cleanUrlParameters: cleanUrlParameters:
project_id: 1 project_id: 1
server_id: 32 server_id: 8
queryParameters: [] queryParameters: []
cleanQueryParameters: [] cleanQueryParameters: []
bodyParameters: [] bodyParameters: []
@ -49,12 +50,15 @@ endpoints:
responses: responses:
- -
status: 200 status: 200
content: '{"data":[{"id":21,"server_id":1,"name":"carolyne.luettgen","status":"ready","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"},{"id":22,"server_id":1,"name":"orville77","status":"ready","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"}],"links":{"first":"\/?page=1","last":"\/?page=1","prev":null,"next":null},"meta":{"current_page":1,"from":1,"last_page":1,"links":[{"url":null,"label":"&laquo; Previous","active":false},{"url":"\/?page=1","label":"1","active":true},{"url":null,"label":"Next &raquo;","active":false}],"path":"\/","per_page":25,"to":2,"total":2}}' content: '{"data":[{"id":null,"server_id":null,"name":"amalia38","status":"ready","created_at":null,"updated_at":null},{"id":null,"server_id":null,"name":"troy.rippin","status":"ready","created_at":null,"updated_at":null}],"links":{"first":"\/?page=1","last":"\/?page=1","prev":null,"next":null},"meta":{"current_page":1,"from":1,"last_page":1,"links":[{"url":null,"label":"&laquo; Previous","active":false},{"url":"\/?page=1","label":"1","active":true},{"url":null,"label":"Next &raquo;","active":false}],"path":"\/","per_page":25,"to":2,"total":2}}'
headers: [] headers: []
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer Z641ebPacDV6f38kEgdah5v'
controller: null controller: null
method: null method: null
route: null route: null
@ -70,9 +74,10 @@ endpoints:
subgroupDescription: '' subgroupDescription: ''
title: create title: create
description: 'Create a new database.' description: 'Create a new database.'
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -90,7 +95,7 @@ endpoints:
name: server_id name: server_id
description: 'The ID of the server.' description: 'The ID of the server.'
required: true required: true
example: 32 example: 8
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -98,7 +103,7 @@ endpoints:
custom: [] custom: []
cleanUrlParameters: cleanUrlParameters:
project_id: 1 project_id: 1
server_id: 32 server_id: 8
queryParameters: [] queryParameters: []
cleanQueryParameters: [] cleanQueryParameters: []
bodyParameters: bodyParameters:
@ -106,46 +111,27 @@ endpoints:
name: name name: name
description: '' description: ''
required: true required: true
example: consequatur example: et
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
charset:
name: charset
description: ''
required: true
example: consequatur
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
collation:
name: collation
description: ''
required: true
example: consequatur
type: string type: string
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
cleanBodyParameters: cleanBodyParameters:
name: consequatur name: et
charset: consequatur
collation: consequatur
fileParameters: [] fileParameters: []
responses: responses:
- -
status: 200 status: 200
content: '{"id":21,"server_id":1,"name":"carolyne.luettgen","status":"ready","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"}' content: '{"id":null,"server_id":null,"name":"harvey.haskell","status":"ready","created_at":null,"updated_at":null}'
headers: [] headers: []
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer d4gbv56caV3aZ8D1h6kfEPe'
controller: null controller: null
method: null method: null
route: null route: null
@ -161,9 +147,10 @@ endpoints:
subgroupDescription: '' subgroupDescription: ''
title: show title: show
description: 'Get a database by ID.' description: 'Get a database by ID.'
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -181,7 +168,7 @@ endpoints:
name: server_id name: server_id
description: 'The ID of the server.' description: 'The ID of the server.'
required: true required: true
example: 32 example: 8
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -191,7 +178,7 @@ endpoints:
name: id name: id
description: 'The ID of the database.' description: 'The ID of the database.'
required: true required: true
example: 17 example: 19
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -199,8 +186,8 @@ endpoints:
custom: [] custom: []
cleanUrlParameters: cleanUrlParameters:
project_id: 1 project_id: 1
server_id: 32 server_id: 8
id: 17 id: 19
queryParameters: [] queryParameters: []
cleanQueryParameters: [] cleanQueryParameters: []
bodyParameters: [] bodyParameters: []
@ -209,12 +196,15 @@ endpoints:
responses: responses:
- -
status: 200 status: 200
content: '{"id":21,"server_id":1,"name":"carolyne.luettgen","status":"ready","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"}' content: '{"id":null,"server_id":null,"name":"ruthie.koepp","status":"ready","created_at":null,"updated_at":null}'
headers: [] headers: []
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer P68VgDcaEZvk63f4b5aed1h'
controller: null controller: null
method: null method: null
route: null route: null
@ -230,9 +220,10 @@ endpoints:
subgroupDescription: '' subgroupDescription: ''
title: delete title: delete
description: 'Delete database.' description: 'Delete database.'
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -250,7 +241,7 @@ endpoints:
name: server_id name: server_id
description: 'The ID of the server.' description: 'The ID of the server.'
required: true required: true
example: 32 example: 8
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -260,7 +251,7 @@ endpoints:
name: database_id name: database_id
description: 'The ID of the database.' description: 'The ID of the database.'
required: true required: true
example: 17 example: 15
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -268,8 +259,8 @@ endpoints:
custom: [] custom: []
cleanUrlParameters: cleanUrlParameters:
project_id: 1 project_id: 1
server_id: 32 server_id: 8
database_id: 17 database_id: 15
queryParameters: [] queryParameters: []
cleanQueryParameters: [] cleanQueryParameters: []
bodyParameters: [] bodyParameters: []
@ -283,7 +274,10 @@ endpoints:
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer DkPc6d1heEv5a8fb4V63agZ'
controller: null controller: null
method: null method: null
route: null route: null

View File

@ -12,9 +12,10 @@ endpoints:
subgroupDescription: '' subgroupDescription: ''
title: list title: list
description: 'Get all database users.' description: 'Get all database users.'
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -32,7 +33,7 @@ endpoints:
name: server_id name: server_id
description: 'The ID of the server.' description: 'The ID of the server.'
required: true required: true
example: 32 example: 8
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -40,7 +41,7 @@ endpoints:
custom: [] custom: []
cleanUrlParameters: cleanUrlParameters:
project_id: 1 project_id: 1
server_id: 32 server_id: 8
queryParameters: [] queryParameters: []
cleanQueryParameters: [] cleanQueryParameters: []
bodyParameters: [] bodyParameters: []
@ -49,12 +50,15 @@ endpoints:
responses: responses:
- -
status: 200 status: 200
content: '{"data":[{"id":19,"server_id":1,"username":"graciela37","databases":[],"host":"%","status":"creating","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"},{"id":20,"server_id":1,"username":"vconn","databases":[],"host":"%","status":"creating","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"}],"links":{"first":"\/?page=1","last":"\/?page=1","prev":null,"next":null},"meta":{"current_page":1,"from":1,"last_page":1,"links":[{"url":null,"label":"&laquo; Previous","active":false},{"url":"\/?page=1","label":"1","active":true},{"url":null,"label":"Next &raquo;","active":false}],"path":"\/","per_page":25,"to":2,"total":2}}' content: '{"data":[{"id":null,"server_id":null,"username":"xgaylord","databases":[],"host":"%","status":null,"created_at":null,"updated_at":null},{"id":null,"server_id":null,"username":"una37","databases":[],"host":"%","status":null,"created_at":null,"updated_at":null}],"links":{"first":"\/?page=1","last":"\/?page=1","prev":null,"next":null},"meta":{"current_page":1,"from":1,"last_page":1,"links":[{"url":null,"label":"&laquo; Previous","active":false},{"url":"\/?page=1","label":"1","active":true},{"url":null,"label":"Next &raquo;","active":false}],"path":"\/","per_page":25,"to":2,"total":2}}'
headers: [] headers: []
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer P4gD36fZeckvVh5ab86Ead1'
controller: null controller: null
method: null method: null
route: null route: null
@ -70,9 +74,10 @@ endpoints:
subgroupDescription: '' subgroupDescription: ''
title: create title: create
description: 'Create a new database user.' description: 'Create a new database user.'
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -90,7 +95,7 @@ endpoints:
name: server_id name: server_id
description: 'The ID of the server.' description: 'The ID of the server.'
required: true required: true
example: 32 example: 8
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -98,7 +103,7 @@ endpoints:
custom: [] custom: []
cleanUrlParameters: cleanUrlParameters:
project_id: 1 project_id: 1
server_id: 32 server_id: 8
queryParameters: [] queryParameters: []
cleanQueryParameters: [] cleanQueryParameters: []
bodyParameters: bodyParameters:
@ -106,7 +111,7 @@ endpoints:
name: username name: username
description: '' description: ''
required: true required: true
example: consequatur example: consequuntur
type: string type: string
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -116,7 +121,7 @@ endpoints:
name: password name: password
description: '' description: ''
required: true required: true
example: 'O[2UZ5ij-e/dl4m{o,' example: 'fI/i2.O4u&dla?eXvR2'
type: string type: string
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -133,19 +138,22 @@ endpoints:
nullable: false nullable: false
custom: [] custom: []
cleanBodyParameters: cleanBodyParameters:
username: consequatur username: consequuntur
password: 'O[2UZ5ij-e/dl4m{o,' password: 'fI/i2.O4u&dla?eXvR2'
host: '%' host: '%'
fileParameters: [] fileParameters: []
responses: responses:
- -
status: 200 status: 200
content: '{"id":19,"server_id":1,"username":"nolan.jaylan","databases":[],"host":"%","status":"creating","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"}' content: '{"id":null,"server_id":null,"username":"kari.farrell","databases":[],"host":"%","status":null,"created_at":null,"updated_at":null}'
headers: [] headers: []
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer 5k8Vced1baaE6f4ZvDPgh36'
controller: null controller: null
method: null method: null
route: null route: null
@ -161,9 +169,10 @@ endpoints:
subgroupDescription: '' subgroupDescription: ''
title: show title: show
description: 'Get a database user by ID.' description: 'Get a database user by ID.'
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -181,7 +190,7 @@ endpoints:
name: server_id name: server_id
description: 'The ID of the server.' description: 'The ID of the server.'
required: true required: true
example: 32 example: 8
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -191,7 +200,7 @@ endpoints:
name: databaseUser_id name: databaseUser_id
description: 'The ID of the databaseUser.' description: 'The ID of the databaseUser.'
required: true required: true
example: 17 example: 18
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -199,8 +208,8 @@ endpoints:
custom: [] custom: []
cleanUrlParameters: cleanUrlParameters:
project_id: 1 project_id: 1
server_id: 32 server_id: 8
databaseUser_id: 17 databaseUser_id: 18
queryParameters: [] queryParameters: []
cleanQueryParameters: [] cleanQueryParameters: []
bodyParameters: [] bodyParameters: []
@ -209,12 +218,15 @@ endpoints:
responses: responses:
- -
status: 200 status: 200
content: '{"id":19,"server_id":1,"username":"carolyne.luettgen","databases":[],"host":"%","status":"creating","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"}' content: '{"id":null,"server_id":null,"username":"caterina.mosciski","databases":[],"host":"%","status":null,"created_at":null,"updated_at":null}'
headers: [] headers: []
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer 3kDveP5V8a6dghfa4E16cbZ'
controller: null controller: null
method: null method: null
route: null route: null
@ -230,9 +242,10 @@ endpoints:
subgroupDescription: '' subgroupDescription: ''
title: link title: link
description: 'Link to databases' description: 'Link to databases'
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -250,7 +263,7 @@ endpoints:
name: server_id name: server_id
description: 'The ID of the server.' description: 'The ID of the server.'
required: true required: true
example: 32 example: 8
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -260,7 +273,7 @@ endpoints:
name: databaseUser_id name: databaseUser_id
description: 'The ID of the databaseUser.' description: 'The ID of the databaseUser.'
required: true required: true
example: 17 example: 4
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -268,8 +281,8 @@ endpoints:
custom: [] custom: []
cleanUrlParameters: cleanUrlParameters:
project_id: 1 project_id: 1
server_id: 32 server_id: 8
databaseUser_id: 17 databaseUser_id: 4
queryParameters: [] queryParameters: []
cleanQueryParameters: [] cleanQueryParameters: []
bodyParameters: bodyParameters:
@ -277,24 +290,27 @@ endpoints:
name: databases name: databases
description: 'Array of database names to link to the user.' description: 'Array of database names to link to the user.'
required: true required: true
example: consequatur example: non
type: string type: string
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
cleanBodyParameters: cleanBodyParameters:
databases: consequatur databases: non
fileParameters: [] fileParameters: []
responses: responses:
- -
status: 200 status: 200
content: '{"id":19,"server_id":1,"username":"carolyne.luettgen","databases":[],"host":"%","status":"creating","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"}' content: '{"id":null,"server_id":null,"username":"kurtis05","databases":[],"host":"%","status":null,"created_at":null,"updated_at":null}'
headers: [] headers: []
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer DgPea43EvV51a866dfbZckh'
controller: null controller: null
method: null method: null
route: null route: null
@ -310,9 +326,10 @@ endpoints:
subgroupDescription: '' subgroupDescription: ''
title: delete title: delete
description: 'Delete database user.' description: 'Delete database user.'
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -330,7 +347,7 @@ endpoints:
name: server_id name: server_id
description: 'The ID of the server.' description: 'The ID of the server.'
required: true required: true
example: 32 example: 8
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -340,7 +357,7 @@ endpoints:
name: databaseUser_id name: databaseUser_id
description: 'The ID of the databaseUser.' description: 'The ID of the databaseUser.'
required: true required: true
example: 17 example: 6
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -348,8 +365,8 @@ endpoints:
custom: [] custom: []
cleanUrlParameters: cleanUrlParameters:
project_id: 1 project_id: 1
server_id: 32 server_id: 8
databaseUser_id: 17 databaseUser_id: 6
queryParameters: [] queryParameters: []
cleanQueryParameters: [] cleanQueryParameters: []
bodyParameters: [] bodyParameters: []
@ -363,7 +380,10 @@ endpoints:
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer 6ackVP8hEZd3164gD5evafb'
controller: null controller: null
method: null method: null
route: null route: null

View File

@ -12,9 +12,10 @@ endpoints:
subgroupDescription: '' subgroupDescription: ''
title: list title: list
description: 'Get all firewall rules.' description: 'Get all firewall rules.'
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -32,7 +33,7 @@ endpoints:
name: server_id name: server_id
description: 'The ID of the server.' description: 'The ID of the server.'
required: true required: true
example: 32 example: 8
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -40,7 +41,7 @@ endpoints:
custom: [] custom: []
cleanUrlParameters: cleanUrlParameters:
project_id: 1 project_id: 1
server_id: 32 server_id: 8
queryParameters: [] queryParameters: []
cleanQueryParameters: [] cleanQueryParameters: []
bodyParameters: [] bodyParameters: []
@ -49,12 +50,15 @@ endpoints:
responses: responses:
- -
status: 200 status: 200
content: '{"data":[{"id":97,"name":"dolores","server_id":1,"type":"allow","protocol":"tcp","port":40770,"source":"199.76.131.15","mask":"24","note":"test","status":"creating","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"},{"id":98,"name":"laborum","server_id":1,"type":"allow","protocol":"tcp","port":14235,"source":"100.14.146.200","mask":"24","note":"test","status":"creating","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"}],"links":{"first":"\/?page=1","last":"\/?page=1","prev":null,"next":null},"meta":{"current_page":1,"from":1,"last_page":1,"links":[{"url":null,"label":"&laquo; Previous","active":false},{"url":"\/?page=1","label":"1","active":true},{"url":null,"label":"Next &raquo;","active":false}],"path":"\/","per_page":25,"to":2,"total":2}}' content: '{"data":[{"id":null,"server_id":null,"type":"allow","protocol":"tcp","port":38781,"source":"79.116.255.150","mask":24,"note":"test","status":null,"created_at":null,"updated_at":null},{"id":null,"server_id":null,"type":"allow","protocol":"tcp","port":32141,"source":"52.174.114.251","mask":24,"note":"test","status":null,"created_at":null,"updated_at":null}],"links":{"first":"\/?page=1","last":"\/?page=1","prev":null,"next":null},"meta":{"current_page":1,"from":1,"last_page":1,"links":[{"url":null,"label":"&laquo; Previous","active":false},{"url":"\/?page=1","label":"1","active":true},{"url":null,"label":"Next &raquo;","active":false}],"path":"\/","per_page":25,"to":2,"total":2}}'
headers: [] headers: []
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer h3P5gD8E4dkeZ6abac6vfV1'
controller: null controller: null
method: null method: null
route: null route: null
@ -70,9 +74,10 @@ endpoints:
subgroupDescription: '' subgroupDescription: ''
title: create title: create
description: 'Create a new firewall rule.' description: 'Create a new firewall rule.'
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -90,7 +95,7 @@ endpoints:
name: server_id name: server_id
description: 'The ID of the server.' description: 'The ID of the server.'
required: true required: true
example: 32 example: 8
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -98,25 +103,15 @@ endpoints:
custom: [] custom: []
cleanUrlParameters: cleanUrlParameters:
project_id: 1 project_id: 1
server_id: 32 server_id: 8
queryParameters: [] queryParameters: []
cleanQueryParameters: [] cleanQueryParameters: []
bodyParameters: bodyParameters:
name:
name: name
description: ''
required: true
example: consequatur
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
type: type:
name: type name: type
description: '' description: ''
required: true required: true
example: allow example: deny
type: string type: string
enumValues: enumValues:
- allow - allow
@ -128,7 +123,7 @@ endpoints:
name: protocol name: protocol
description: '' description: ''
required: true required: true
example: tcp example: udp
type: string type: string
enumValues: enumValues:
- tcp - tcp
@ -140,7 +135,7 @@ endpoints:
name: port name: port
description: '' description: ''
required: true required: true
example: consequatur example: et
type: string type: string
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -149,8 +144,8 @@ endpoints:
source: source:
name: source name: source
description: '' description: ''
required: false required: true
example: consequatur example: voluptates
type: string type: string
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -167,161 +162,24 @@ endpoints:
nullable: false nullable: false
custom: [] custom: []
cleanBodyParameters: cleanBodyParameters:
name: consequatur type: deny
type: allow protocol: udp
protocol: tcp port: et
port: consequatur source: voluptates
source: consequatur
mask: '0' mask: '0'
fileParameters: [] fileParameters: []
responses: responses:
- -
status: 200 status: 200
content: '{"id":97,"name":"dolores","server_id":1,"type":"allow","protocol":"tcp","port":40770,"source":"199.76.131.15","mask":"24","note":"test","status":"creating","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"}' content: '{"id":null,"server_id":null,"type":"allow","protocol":"tcp","port":47148,"source":"119.182.8.45","mask":24,"note":"test","status":null,"created_at":null,"updated_at":null}'
headers: [] headers: []
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
controller: null - headers
method: null - Authorization
route: null - 'Bearer 6a8DVv5k3gZfEe6hb1daPc4'
custom: []
-
httpMethods:
- PUT
uri: 'api/projects/{project_id}/servers/{server_id}/firewall-rules/{firewallRule_id}'
metadata:
groupName: firewall-rules
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: edit
description: 'Update an existing firewall rule.'
authenticated: false
custom: []
headers:
Content-Type: application/json
Accept: application/json
urlParameters:
project_id:
name: project_id
description: 'The ID of the project.'
required: true
example: 1
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
server_id:
name: server_id
description: 'The ID of the server.'
required: true
example: 32
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
firewallRule_id:
name: firewallRule_id
description: 'The ID of the firewallRule.'
required: true
example: 94
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanUrlParameters:
project_id: 1
server_id: 32
firewallRule_id: 94
queryParameters: []
cleanQueryParameters: []
bodyParameters:
name:
name: name
description: ''
required: true
example: consequatur
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
type:
name: type
description: ''
required: true
example: allow
type: string
enumValues:
- allow
- deny
exampleWasSpecified: false
nullable: false
custom: []
protocol:
name: protocol
description: ''
required: true
example: tcp
type: string
enumValues:
- tcp
- udp
exampleWasSpecified: false
nullable: false
custom: []
port:
name: port
description: ''
required: true
example: consequatur
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
source:
name: source
description: ''
required: false
example: consequatur
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
mask:
name: mask
description: 'Mask for source IP.'
required: true
example: '0'
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanBodyParameters:
name: consequatur
type: allow
protocol: tcp
port: consequatur
source: consequatur
mask: '0'
fileParameters: []
responses:
-
status: 200
content: '{"id":97,"name":"dolores","server_id":1,"type":"allow","protocol":"tcp","port":40770,"source":"199.76.131.15","mask":"24","note":"test","status":"creating","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"}'
headers: []
description: ''
custom: []
responseFields: []
auth: []
controller: null controller: null
method: null method: null
route: null route: null
@ -337,9 +195,10 @@ endpoints:
subgroupDescription: '' subgroupDescription: ''
title: show title: show
description: 'Get a firewall rule by ID.' description: 'Get a firewall rule by ID.'
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -357,7 +216,7 @@ endpoints:
name: server_id name: server_id
description: 'The ID of the server.' description: 'The ID of the server.'
required: true required: true
example: 32 example: 8
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -367,7 +226,7 @@ endpoints:
name: firewallRule_id name: firewallRule_id
description: 'The ID of the firewallRule.' description: 'The ID of the firewallRule.'
required: true required: true
example: 94 example: 29
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -375,8 +234,8 @@ endpoints:
custom: [] custom: []
cleanUrlParameters: cleanUrlParameters:
project_id: 1 project_id: 1
server_id: 32 server_id: 8
firewallRule_id: 94 firewallRule_id: 29
queryParameters: [] queryParameters: []
cleanQueryParameters: [] cleanQueryParameters: []
bodyParameters: [] bodyParameters: []
@ -385,12 +244,15 @@ endpoints:
responses: responses:
- -
status: 200 status: 200
content: '{"id":97,"name":"laborum","server_id":1,"type":"allow","protocol":"tcp","port":14235,"source":"100.14.146.200","mask":"24","note":"test","status":"creating","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"}' content: '{"id":null,"server_id":null,"type":"allow","protocol":"tcp","port":2317,"source":"44.161.134.114","mask":24,"note":"test","status":null,"created_at":null,"updated_at":null}'
headers: [] headers: []
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer P4bZdV1geED3kfh568aa6cv'
controller: null controller: null
method: null method: null
route: null route: null
@ -406,9 +268,10 @@ endpoints:
subgroupDescription: '' subgroupDescription: ''
title: delete title: delete
description: 'Delete firewall rule.' description: 'Delete firewall rule.'
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -426,7 +289,7 @@ endpoints:
name: server_id name: server_id
description: 'The ID of the server.' description: 'The ID of the server.'
required: true required: true
example: 32 example: 8
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -436,7 +299,7 @@ endpoints:
name: firewallRule_id name: firewallRule_id
description: 'The ID of the firewallRule.' description: 'The ID of the firewallRule.'
required: true required: true
example: 94 example: 29
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -444,8 +307,8 @@ endpoints:
custom: [] custom: []
cleanUrlParameters: cleanUrlParameters:
project_id: 1 project_id: 1
server_id: 32 server_id: 8
firewallRule_id: 94 firewallRule_id: 29
queryParameters: [] queryParameters: []
cleanQueryParameters: [] cleanQueryParameters: []
bodyParameters: [] bodyParameters: []
@ -459,7 +322,10 @@ endpoints:
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer Dh3kcaafdg6E5ZvV46ePb81'
controller: null controller: null
method: null method: null
route: null route: null

View File

@ -27,12 +27,12 @@ endpoints:
responses: responses:
- -
status: 200 status: 200
content: '{"success":true,"version":"2.5.0"}' content: '{"success":true,"version":"2.1.0"}'
headers: headers:
cache-control: 'no-cache, private' cache-control: 'no-cache, private'
content-type: application/json content-type: application/json
x-ratelimit-limit: '60' x-ratelimit-limit: '60'
x-ratelimit-remaining: '57' x-ratelimit-remaining: '59'
access-control-allow-origin: '*' access-control-allow-origin: '*'
description: null description: null
custom: [] custom: []

View File

@ -12,9 +12,10 @@ endpoints:
subgroupDescription: '' subgroupDescription: ''
title: list title: list
description: 'Get all projects.' description: 'Get all projects.'
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: [] urlParameters: []
@ -27,12 +28,15 @@ endpoints:
responses: responses:
- -
status: 200 status: 200
content: '{"data":[{"id":3,"name":"Nash Corwin","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"},{"id":4,"name":"Patience Douglas","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"}],"links":{"first":"\/?page=1","last":"\/?page=1","prev":null,"next":null},"meta":{"current_page":1,"from":1,"last_page":1,"links":[{"url":null,"label":"&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":"Jeffry Dickinson","created_at":"2025-01-30T22:42:49.000000Z","updated_at":"2025-01-30T22:42:49.000000Z"},{"id":4,"name":"Miss Tianna Dietrich PhD","created_at":"2025-01-30T22:42:49.000000Z","updated_at":"2025-01-30T22:42:49.000000Z"}],"links":{"first":"\/?page=1","last":"\/?page=1","prev":null,"next":null},"meta":{"current_page":1,"from":1,"last_page":1,"links":[{"url":null,"label":"&laquo; Previous","active":false},{"url":"\/?page=1","label":"1","active":true},{"url":null,"label":"Next &raquo;","active":false}],"path":"\/","per_page":25,"to":2,"total":2}}'
headers: [] headers: []
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer 5DaveP3d6b6khEZVcg4fa18'
controller: null controller: null
method: null method: null
route: null route: null
@ -48,9 +52,10 @@ endpoints:
subgroupDescription: '' subgroupDescription: ''
title: create title: create
description: 'Create a new project.' description: 'Create a new project.'
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: [] urlParameters: []
@ -62,24 +67,27 @@ endpoints:
name: name name: name
description: 'The name of the project.' description: 'The name of the project.'
required: true required: true
example: consequatur example: quos
type: string type: string
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
cleanBodyParameters: cleanBodyParameters:
name: consequatur name: quos
fileParameters: [] fileParameters: []
responses: responses:
- -
status: 200 status: 200
content: '{"id":3,"name":"Dr. Cornelius Luettgen V","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"}' content: '{"id":3,"name":"Isidro Franecki","created_at":"2025-01-30T22:42:49.000000Z","updated_at":"2025-01-30T22:42:49.000000Z"}'
headers: [] headers: []
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer a6P53EvkcZV6D4ghad1efb8'
controller: null controller: null
method: null method: null
route: null route: null
@ -95,9 +103,10 @@ endpoints:
subgroupDescription: '' subgroupDescription: ''
title: show title: show
description: 'Get a project by ID.' description: 'Get a project by ID.'
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -121,12 +130,15 @@ endpoints:
responses: responses:
- -
status: 200 status: 200
content: '{"id":3,"name":"Orville Satterfield","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"}' content: '{"id":3,"name":"Rhoda Parisian","created_at":"2025-01-30T22:42:49.000000Z","updated_at":"2025-01-30T22:42:49.000000Z"}'
headers: [] headers: []
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer v48Ve5ZghdcbE1akP66fD3a'
controller: null controller: null
method: null method: null
route: null route: null
@ -142,9 +154,10 @@ endpoints:
subgroupDescription: '' subgroupDescription: ''
title: update title: update
description: 'Update project.' description: 'Update project.'
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -167,24 +180,27 @@ endpoints:
name: name name: name
description: 'The name of the project.' description: 'The name of the project.'
required: true required: true
example: consequatur example: ullam
type: string type: string
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
cleanBodyParameters: cleanBodyParameters:
name: consequatur name: ullam
fileParameters: [] fileParameters: []
responses: responses:
- -
status: 200 status: 200
content: '{"id":3,"name":"Dr. Cornelius Luettgen V","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"}' content: '{"id":3,"name":"Mr. Dashawn Jacobson Sr.","created_at":"2025-01-30T22:42:49.000000Z","updated_at":"2025-01-30T22:42:49.000000Z"}'
headers: [] headers: []
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer fvEdh3Vgbk56Z4a61eP8caD'
controller: null controller: null
method: null method: null
route: null route: null
@ -200,9 +216,10 @@ endpoints:
subgroupDescription: '' subgroupDescription: ''
title: delete title: delete
description: 'Delete project.' description: 'Delete project.'
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -231,7 +248,10 @@ endpoints:
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer eg4c3vZ1Dhaa68d6PEfk5bV'
controller: null controller: null
method: null method: null
route: null route: null

View File

@ -1,20 +1,21 @@
name: redirects name: servers
description: '' description: ''
endpoints: endpoints:
- -
httpMethods: httpMethods:
- GET - GET
uri: 'api/projects/{project_id}/servers/{server_id}/sites/{site_id}/redirects' uri: 'api/projects/{project_id}/servers'
metadata: metadata:
groupName: redirects groupName: servers
groupDescription: '' groupDescription: ''
subgroup: '' subgroup: ''
subgroupDescription: '' subgroupDescription: ''
title: index title: list
description: 'Get all redirects.' description: 'Get all servers in a project.'
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -28,30 +29,8 @@ endpoints:
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
server_id:
name: server_id
description: 'The ID of the server.'
required: true
example: 32
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
site_id:
name: site_id
description: 'The ID of the site.'
required: true
example: 17
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanUrlParameters: cleanUrlParameters:
project_id: 1 project_id: 1
server_id: 32
site_id: 17
queryParameters: [] queryParameters: []
cleanQueryParameters: [] cleanQueryParameters: []
bodyParameters: [] bodyParameters: []
@ -60,12 +39,15 @@ endpoints:
responses: responses:
- -
status: 200 status: 200
content: '{"data":[{"id":11,"site_id":1,"mode":308,"from":"dolores","to":"http:\/\/dibbert.com\/eius-est-dolor-dolores-minus-voluptatem-quisquam","status":"ready","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"},{"id":12,"site_id":1,"mode":302,"from":"sed","to":"http:\/\/williamson.net\/fugit-facilis-perferendis-dolores-molestias.html","status":"ready","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"}],"links":{"first":"\/?page=1","last":"\/?page=1","prev":null,"next":null},"meta":{"current_page":1,"from":1,"last_page":1,"links":[{"url":null,"label":"&laquo; Previous","active":false},{"url":"\/?page=1","label":"1","active":true},{"url":null,"label":"Next &raquo;","active":false}],"path":"\/","per_page":25,"to":2,"total":2}}' content: '{"data":[{"id":null,"project_id":null,"user_id":null,"provider_id":null,"name":"Amina DuBuque","ssh_user":"vito","ip":"163.77.69.73","local_ip":"137.139.200.70","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":"Floy Cummerata","ssh_user":"vito","ip":"62.53.140.25","local_ip":"34.59.35.195","port":22,"os":"ubuntu_22","type":"regular","type_data":null,"provider":"custom","provider_data":null,"public_key":"test","status":"ready","auto_update":null,"available_updates":0,"security_updates":null,"progress":100,"progress_step":null,"updates":null,"last_update_check":null,"created_at":null,"updated_at":null}],"links":{"first":"\/?page=1","last":"\/?page=1","prev":null,"next":null},"meta":{"current_page":1,"from":1,"last_page":1,"links":[{"url":null,"label":"&laquo; Previous","active":false},{"url":"\/?page=1","label":"1","active":true},{"url":null,"label":"Next &raquo;","active":false}],"path":"\/","per_page":25,"to":2,"total":2}}'
headers: [] headers: []
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer E81avahec6365dbZfgD4kPV'
controller: null controller: null
method: null method: null
route: null route: null
@ -73,17 +55,18 @@ endpoints:
- -
httpMethods: httpMethods:
- POST - POST
uri: 'api/projects/{project_id}/servers/{server_id}/sites/{site_id}/redirects' uri: 'api/projects/{project_id}/servers'
metadata: metadata:
groupName: redirects groupName: servers
groupDescription: '' groupDescription: ''
subgroup: '' subgroup: ''
subgroupDescription: '' subgroupDescription: ''
title: create title: create
description: 'Create a new redirect.' description: 'Create a new server.'
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -97,99 +80,254 @@ endpoints:
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
server_id:
name: server_id
description: 'The ID of the server.'
required: true
example: 32
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
site_id:
name: site_id
description: 'The ID of the site.'
required: true
example: 17
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanUrlParameters: cleanUrlParameters:
project_id: 1 project_id: 1
server_id: 32
site_id: 17
queryParameters: [] queryParameters: []
cleanQueryParameters: [] cleanQueryParameters: []
bodyParameters: bodyParameters:
from: provider:
name: from name: provider
description: '' description: 'The server provider type'
required: true required: true
example: consequatur example: iste
type: string type: string
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
to: server_provider:
name: to name: server_provider
description: '' description: 'If the provider is not custom, the ID of the server provider profile'
required: true required: true
example: consequatur example: custom
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
mode:
name: mode
description: ''
required: true
example: 302
type: string type: string
enumValues: enumValues:
- 301 - custom
- 302 - hetzner
- 307 - digitalocean
- 308 - linode
- vultr
exampleWasSpecified: false
nullable: false
custom: []
region:
name: region
description: 'Provider region if the provider is not custom'
required: true
example: libero
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
plan:
name: plan
description: 'Provider plan if the provider is not custom'
required: true
example: ut
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
ip:
name: ip
description: 'SSH IP address if the provider is custom'
required: true
example: molestias
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
port:
name: port
description: 'SSH Port if the provider is custom'
required: true
example: laudantium
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
name:
name: name
description: 'The name of the server.'
required: true
example: illum
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
os:
name: os
description: 'The os of the server'
required: true
example: autem
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
webserver:
name: webserver
description: 'Web server'
required: true
example: none
type: string
enumValues:
- none
- nginx
exampleWasSpecified: false
nullable: false
custom: []
database:
name: database
description: Database
required: true
example: postgresql12
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.4'
type: string
enumValues:
- '7.0'
- '7.1'
- '7.2'
- '7.3'
- '7.4'
- '8.0'
- '8.1'
- '8.2'
- '8.3'
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
cleanBodyParameters: cleanBodyParameters:
from: consequatur provider: iste
to: consequatur server_provider: custom
mode: 302 region: libero
plan: ut
ip: molestias
port: laudantium
name: illum
os: autem
webserver: none
database: postgresql12
php: '7.4'
fileParameters: [] fileParameters: []
responses: responses:
- -
status: 200 status: 200
content: null content: '{"id":null,"project_id":null,"user_id":null,"provider_id":null,"name":"Archibald Nolan","ssh_user":"vito","ip":"226.168.13.177","local_ip":"143.14.43.182","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: [] headers: []
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer aad3Pvc4e65DghZVEk8f1b6'
controller: null controller: null
method: null method: null
route: null route: null
custom: [] custom: []
- -
httpMethods: httpMethods:
- DELETE - GET
uri: 'api/projects/{project_id}/servers/{server_id}/sites/{site_id}/redirects/{redirect_id}' uri: 'api/projects/{project_id}/servers/{id}'
metadata: metadata:
groupName: redirects groupName: servers
groupDescription: '' groupDescription: ''
subgroup: '' subgroup: ''
subgroupDescription: '' subgroupDescription: ''
title: delete title: show
description: 'Delete a redirect.' description: 'Get a server by ID.'
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json
Accept: application/json
urlParameters:
project_id:
name: project_id
description: 'The ID of the project.'
required: true
example: 1
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
id:
name: id
description: 'The ID of the server.'
required: true
example: 8
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanUrlParameters:
project_id: 1
id: 8
queryParameters: []
cleanQueryParameters: []
bodyParameters: []
cleanBodyParameters: []
fileParameters: []
responses:
-
status: 200
content: '{"id":null,"project_id":null,"user_id":null,"provider_id":null,"name":"Tevin Sipes","ssh_user":"vito","ip":"61.41.183.152","local_ip":"197.160.239.147","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 5EhD3v6Z8Vdakfg46eP1cab'
controller: null
method: null
route: null
custom: []
-
httpMethods:
- POST
uri: 'api/projects/{project_id}/servers/{server_id}/reboot'
metadata:
groupName: servers
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: reboot
description: 'Reboot a server.'
authenticated: true
custom: []
headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -207,27 +345,7 @@ endpoints:
name: server_id name: server_id
description: 'The ID of the server.' description: 'The ID of the server.'
required: true required: true
example: 32 example: 8
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
site_id:
name: site_id
description: 'The ID of the site.'
required: true
example: 17
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
redirect_id:
name: redirect_id
description: 'The ID of the redirect.'
required: true
example: 9
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -235,9 +353,7 @@ endpoints:
custom: [] custom: []
cleanUrlParameters: cleanUrlParameters:
project_id: 1 project_id: 1
server_id: 32 server_id: 8
site_id: 17
redirect_id: 9
queryParameters: [] queryParameters: []
cleanQueryParameters: [] cleanQueryParameters: []
bodyParameters: [] bodyParameters: []
@ -251,7 +367,134 @@ endpoints:
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer Pc5Da6Vhdk1vag6fE84e3Zb'
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: 8
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanUrlParameters:
project_id: 1
server_id: 8
queryParameters: []
cleanQueryParameters: []
bodyParameters: []
cleanBodyParameters: []
fileParameters: []
responses:
-
status: 204
content: null
headers: []
description: ''
custom: []
responseFields: []
auth:
- headers
- Authorization
- 'Bearer a61v48DfkeEbcg3a6hd5PZV'
controller: null
method: null
route: null
custom: []
-
httpMethods:
- DELETE
uri: 'api/projects/{project_id}/servers/{server_id}'
metadata:
groupName: servers
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: delete
description: 'Delete server.'
authenticated: true
custom: []
headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json
Accept: application/json
urlParameters:
project_id:
name: project_id
description: 'The ID of the project.'
required: true
example: 1
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
server_id:
name: server_id
description: 'The ID of the server.'
required: true
example: 8
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanUrlParameters:
project_id: 1
server_id: 8
queryParameters: []
cleanQueryParameters: []
bodyParameters: []
cleanBodyParameters: []
fileParameters: []
responses:
-
status: 204
content: null
headers: []
description: ''
custom: []
responseFields: []
auth:
- headers
- Authorization
- 'Bearer haE8D6Z6gePk1vadVb53c4f'
controller: null controller: null
method: null method: null
route: null route: null

View File

@ -1,20 +1,21 @@
name: servers name: server-providers
description: '' description: ''
endpoints: endpoints:
- -
httpMethods: httpMethods:
- GET - GET
uri: 'api/projects/{project_id}/servers' uri: 'api/projects/{project_id}/server-providers'
metadata: metadata:
groupName: servers groupName: server-providers
groupDescription: '' groupDescription: ''
subgroup: '' subgroup: ''
subgroupDescription: '' subgroupDescription: ''
title: list title: list
description: 'Get all servers in a project.' description: ''
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -38,12 +39,15 @@ endpoints:
responses: responses:
- -
status: 200 status: 200
content: '{"data":[{"id":33,"project_id":1,"user_id":1,"provider_id":null,"name":"Maiya Connelly","ssh_user":"vito","ip":"7.83.102.177","local_ip":"130.245.181.91","port":22,"os":"ubuntu_22","type":"regular","type_data":null,"provider":"custom","provider_data":null,"public_key":"test","status":"ready","auto_update":null,"available_updates":0,"security_updates":null,"progress":100,"progress_step":null,"updates":0,"last_update_check":null,"created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"},{"id":34,"project_id":1,"user_id":1,"provider_id":null,"name":"Dr. Kyler Runolfsdottir DVM","ssh_user":"vito","ip":"106.112.51.73","local_ip":"248.246.77.93","port":22,"os":"ubuntu_22","type":"regular","type_data":null,"provider":"custom","provider_data":null,"public_key":"test","status":"ready","auto_update":null,"available_updates":0,"security_updates":null,"progress":100,"progress_step":null,"updates":0,"last_update_check":null,"created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"}],"links":{"first":"\/?page=1","last":"\/?page=1","prev":null,"next":null},"meta":{"current_page":1,"from":1,"last_page":1,"links":[{"url":null,"label":"&laquo; Previous","active":false},{"url":"\/?page=1","label":"1","active":true},{"url":null,"label":"Next &raquo;","active":false}],"path":"\/","per_page":25,"to":2,"total":2}}' content: '{"data":[{"id":2,"project_id":null,"global":true,"name":"laudantium","provider":"vultr","created_at":"2025-01-30T22:42:49.000000Z","updated_at":"2025-01-30T22:42:49.000000Z"},{"id":3,"project_id":null,"global":true,"name":"aut","provider":"aws","created_at":"2025-01-30T22:42:49.000000Z","updated_at":"2025-01-30T22:42:49.000000Z"}],"links":{"first":"\/?page=1","last":"\/?page=1","prev":null,"next":null},"meta":{"current_page":1,"from":1,"last_page":1,"links":[{"url":null,"label":"&laquo; Previous","active":false},{"url":"\/?page=1","label":"1","active":true},{"url":null,"label":"Next &raquo;","active":false}],"path":"\/","per_page":25,"to":2,"total":2}}'
headers: [] headers: []
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer Df16eda8Pa345EkgbZ6cvhV'
controller: null controller: null
method: null method: null
route: null route: null
@ -51,17 +55,18 @@ endpoints:
- -
httpMethods: httpMethods:
- POST - POST
uri: 'api/projects/{project_id}/servers' uri: 'api/projects/{project_id}/server-providers'
metadata: metadata:
groupName: servers groupName: server-providers
groupDescription: '' groupDescription: ''
subgroup: '' subgroup: ''
subgroupDescription: '' subgroupDescription: ''
title: create title: create
description: 'Create a new server.' description: ''
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -82,64 +87,9 @@ endpoints:
bodyParameters: bodyParameters:
provider: provider:
name: provider name: provider
description: 'The server provider type' description: 'The provider (aws, linode, hetzner, digitalocean, vultr, ...)'
required: true required: true
example: consequatur example: voluptatem
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: hetzner
type: string
enumValues:
- custom
- hetzner
- digitalocean
- linode
- vultr
exampleWasSpecified: false
nullable: false
custom: []
region:
name: region
description: 'Provider region if the provider is not custom'
required: true
example: consequatur
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
plan:
name: plan
description: 'Provider plan if the provider is not custom'
required: true
example: consequatur
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
ip:
name: ip
description: 'SSH IP address if the provider is custom'
required: true
example: consequatur
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
port:
name: port
description: 'SSH Port if the provider is custom'
required: true
example: consequatur
type: string type: string
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -147,98 +97,63 @@ endpoints:
custom: [] custom: []
name: name:
name: name name: name
description: 'The name of the server.' description: 'The name of the server provider.'
required: true required: true
example: consequatur example: repellat
type: string type: string
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
os: token:
name: os name: token
description: 'The os of the server' description: 'The token if provider requires api token'
required: true required: true
example: consequatur example: omnis
type: string type: string
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
webserver: key:
name: webserver name: key
description: 'Web server' description: 'The key if provider requires key'
required: true required: true
example: none example: recusandae
type: string type: string
enumValues: enumValues: []
- none
- nginx
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
database: secret:
name: database name: secret
description: Database description: 'The secret if provider requires key'
required: true required: true
example: mariadb104 example: in
type: string type: string
enumValues: enumValues: []
- none
- mysql57
- mysql80
- mariadb103
- mariadb104
- mariadb103
- postgresql12
- postgresql13
- postgresql14
- postgresql15
- postgresql16
exampleWasSpecified: false
nullable: false
custom: []
php:
name: php
description: 'PHP version'
required: true
example: '8.0'
type: string
enumValues:
- '7.0'
- '7.1'
- '7.2'
- '7.3'
- '7.4'
- '8.0'
- '8.1'
- '8.2'
- '8.3'
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
cleanBodyParameters: cleanBodyParameters:
provider: consequatur provider: voluptatem
server_provider: hetzner name: repellat
region: consequatur token: omnis
plan: consequatur key: recusandae
ip: consequatur secret: in
port: consequatur
name: consequatur
os: consequatur
webserver: none
database: mariadb104
php: '8.0'
fileParameters: [] fileParameters: []
responses: responses:
- -
status: 200 status: 200
content: '{"id":33,"project_id":1,"user_id":1,"provider_id":null,"name":"Dr. Cornelius Luettgen V","ssh_user":"vito","ip":"226.187.235.251","local_ip":"18.62.212.253","port":22,"os":"ubuntu_22","type":"regular","type_data":null,"provider":"custom","provider_data":null,"public_key":"test","status":"ready","auto_update":null,"available_updates":0,"security_updates":null,"progress":100,"progress_step":null,"updates":0,"last_update_check":null,"created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"}' content: '{"id":2,"project_id":null,"global":true,"name":"quia","provider":"vultr","created_at":"2025-01-30T22:42:49.000000Z","updated_at":"2025-01-30T22:42:49.000000Z"}'
headers: [] headers: []
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer 8fbgDV6vdhakE1c64e3P5aZ'
controller: null controller: null
method: null method: null
route: null route: null
@ -246,17 +161,18 @@ endpoints:
- -
httpMethods: httpMethods:
- GET - GET
uri: 'api/projects/{project_id}/servers/{id}' uri: 'api/projects/{project_id}/server-providers/{serverProvider_id}'
metadata: metadata:
groupName: servers groupName: server-providers
groupDescription: '' groupDescription: ''
subgroup: '' subgroup: ''
subgroupDescription: '' subgroupDescription: ''
title: show title: show
description: 'Get a server by ID.' description: ''
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -270,11 +186,11 @@ endpoints:
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
id: serverProvider_id:
name: id name: serverProvider_id
description: 'The ID of the server.' description: 'The ID of the serverProvider.'
required: true required: true
example: 32 example: 1
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -282,7 +198,7 @@ endpoints:
custom: [] custom: []
cleanUrlParameters: cleanUrlParameters:
project_id: 1 project_id: 1
id: 32 serverProvider_id: 1
queryParameters: [] queryParameters: []
cleanQueryParameters: [] cleanQueryParameters: []
bodyParameters: [] bodyParameters: []
@ -291,30 +207,34 @@ endpoints:
responses: responses:
- -
status: 200 status: 200
content: '{"id":33,"project_id":1,"user_id":1,"provider_id":null,"name":"Brandy Reichel","ssh_user":"vito","ip":"26.180.121.142","local_ip":"122.175.6.215","port":22,"os":"ubuntu_22","type":"regular","type_data":null,"provider":"custom","provider_data":null,"public_key":"test","status":"ready","auto_update":null,"available_updates":0,"security_updates":null,"progress":100,"progress_step":null,"updates":0,"last_update_check":null,"created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"}' content: '{"id":2,"project_id":null,"global":true,"name":"ab","provider":"hetzner","created_at":"2025-01-30T22:42:49.000000Z","updated_at":"2025-01-30T22:42:49.000000Z"}'
headers: [] headers: []
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer eVE816Pc4ak3bdfahDZv6g5'
controller: null controller: null
method: null method: null
route: null route: null
custom: [] custom: []
- -
httpMethods: httpMethods:
- POST - PUT
uri: 'api/projects/{project_id}/servers/{server_id}/reboot' uri: 'api/projects/{project_id}/server-providers/{serverProvider_id}'
metadata: metadata:
groupName: servers groupName: server-providers
groupDescription: '' groupDescription: ''
subgroup: '' subgroup: ''
subgroupDescription: '' subgroupDescription: ''
title: reboot title: update
description: 'Reboot a server.' description: ''
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -328,57 +248,9 @@ endpoints:
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
server_id: serverProvider_id:
name: server_id name: serverProvider_id
description: 'The ID of the server.' description: 'The ID of the serverProvider.'
required: true
example: 32
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanUrlParameters:
project_id: 1
server_id: 32
queryParameters: []
cleanQueryParameters: []
bodyParameters: []
cleanBodyParameters: []
fileParameters: []
responses:
-
status: 204
content: null
headers: []
description: ''
custom: []
responseFields: []
auth: []
controller: null
method: null
route: null
custom: []
-
httpMethods:
- POST
uri: 'api/projects/{project_id}/servers/{server_id}/upgrade'
metadata:
groupName: servers
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: upgrade
description: 'Upgrade server.'
authenticated: false
custom: []
headers:
Content-Type: application/json
Accept: application/json
urlParameters:
project_id:
name: project_id
description: 'The ID of the project.'
required: true required: true
example: 1 example: 1
type: integer type: integer
@ -386,33 +258,50 @@ endpoints:
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
server_id: cleanUrlParameters:
name: server_id project_id: 1
description: 'The ID of the server.' serverProvider_id: 1
queryParameters: []
cleanQueryParameters: []
bodyParameters:
name:
name: name
description: 'The name of the server provider.'
required: true required: true
example: 32 example: est
type: integer type: string
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
cleanUrlParameters: global:
project_id: 1 name: global
server_id: 32 description: 'Accessible in all projects'
queryParameters: [] required: true
cleanQueryParameters: [] example: true
bodyParameters: [] type: string
cleanBodyParameters: [] enumValues:
- true
- false
exampleWasSpecified: false
nullable: false
custom: []
cleanBodyParameters:
name: est
global: true
fileParameters: [] fileParameters: []
responses: responses:
- -
status: 204 status: 200
content: null content: '{"id":2,"project_id":null,"global":true,"name":"nesciunt","provider":"linode","created_at":"2025-01-30T22:42:49.000000Z","updated_at":"2025-01-30T22:42:49.000000Z"}'
headers: [] headers: []
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer va86keaPDdh3b16Z54EgfcV'
controller: null controller: null
method: null method: null
route: null route: null
@ -420,17 +309,18 @@ endpoints:
- -
httpMethods: httpMethods:
- DELETE - DELETE
uri: 'api/projects/{project_id}/servers/{server_id}' uri: 'api/projects/{project_id}/server-providers/{serverProvider_id}'
metadata: metadata:
groupName: servers groupName: server-providers
groupDescription: '' groupDescription: ''
subgroup: '' subgroup: ''
subgroupDescription: '' subgroupDescription: ''
title: delete title: delete
description: 'Delete server.' description: ''
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -444,11 +334,11 @@ endpoints:
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
server_id: serverProvider_id:
name: server_id name: serverProvider_id
description: 'The ID of the server.' description: 'The ID of the serverProvider.'
required: true required: true
example: 32 example: 1
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -456,7 +346,7 @@ endpoints:
custom: [] custom: []
cleanUrlParameters: cleanUrlParameters:
project_id: 1 project_id: 1
server_id: 32 serverProvider_id: 1
queryParameters: [] queryParameters: []
cleanQueryParameters: [] cleanQueryParameters: []
bodyParameters: [] bodyParameters: []
@ -470,7 +360,10 @@ endpoints:
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer abv13ag8h5fZ4EPVDe6dc6k'
controller: null controller: null
method: null method: null
route: null route: null

View File

@ -1,20 +1,21 @@
name: server-providers name: ssh-keys
description: '' description: ''
endpoints: endpoints:
- -
httpMethods: httpMethods:
- GET - GET
uri: 'api/projects/{project_id}/server-providers' uri: 'api/projects/{project_id}/servers/{server_id}/ssh-keys'
metadata: metadata:
groupName: server-providers groupName: ssh-keys
groupDescription: '' groupDescription: ''
subgroup: '' subgroup: ''
subgroupDescription: '' subgroupDescription: ''
title: list title: list
description: '' description: 'Get all ssh keys.'
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -28,8 +29,19 @@ endpoints:
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
server_id:
name: server_id
description: 'The ID of the server.'
required: true
example: 8
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanUrlParameters: cleanUrlParameters:
project_id: 1 project_id: 1
server_id: 8
queryParameters: [] queryParameters: []
cleanQueryParameters: [] cleanQueryParameters: []
bodyParameters: [] bodyParameters: []
@ -38,12 +50,15 @@ endpoints:
responses: responses:
- -
status: 200 status: 200
content: '{"data":[{"id":4,"project_id":null,"global":true,"name":"quo","provider":"custom","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"},{"id":5,"project_id":null,"global":true,"name":"sed","provider":"digitalocean","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"}],"links":{"first":"\/?page=1","last":"\/?page=1","prev":null,"next":null},"meta":{"current_page":1,"from":1,"last_page":1,"links":[{"url":null,"label":"&laquo; Previous","active":false},{"url":"\/?page=1","label":"1","active":true},{"url":null,"label":"Next &raquo;","active":false}],"path":"\/","per_page":25,"to":2,"total":2}}' content: '{"data":[{"id":null,"user":null,"name":"Godfrey Mills","created_at":null,"updated_at":null},{"id":null,"user":null,"name":"Donato Streich","created_at":null,"updated_at":null}],"links":{"first":"\/?page=1","last":"\/?page=1","prev":null,"next":null},"meta":{"current_page":1,"from":1,"last_page":1,"links":[{"url":null,"label":"&laquo; Previous","active":false},{"url":"\/?page=1","label":"1","active":true},{"url":null,"label":"Next &raquo;","active":false}],"path":"\/","per_page":25,"to":2,"total":2}}'
headers: [] headers: []
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer 1gEva8Z6e6abPDhk453fdVc'
controller: null controller: null
method: null method: null
route: null route: null
@ -51,17 +66,18 @@ endpoints:
- -
httpMethods: httpMethods:
- POST - POST
uri: 'api/projects/{project_id}/server-providers' uri: 'api/projects/{project_id}/servers/{server_id}/ssh-keys'
metadata: metadata:
groupName: server-providers groupName: ssh-keys
groupDescription: '' groupDescription: ''
subgroup: '' subgroup: ''
subgroupDescription: '' subgroupDescription: ''
title: create title: create
description: '' description: 'Deploy ssh key to server.'
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -75,16 +91,27 @@ endpoints:
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
server_id:
name: server_id
description: 'The ID of the server.'
required: true
example: 8
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanUrlParameters: cleanUrlParameters:
project_id: 1 project_id: 1
server_id: 8
queryParameters: [] queryParameters: []
cleanQueryParameters: [] cleanQueryParameters: []
bodyParameters: bodyParameters:
provider: key_id:
name: provider name: key_id
description: 'The provider (aws, linode, hetzner, digitalocean, vultr, ...)' description: 'The ID of the key.'
required: true required: true
example: consequatur example: numquam
type: string type: string
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -92,200 +119,41 @@ endpoints:
custom: [] custom: []
name: name:
name: name name: name
description: 'The name of the server provider.' description: 'Key name, required if key_id is not provided.'
required: true required: true
example: consequatur example: alias
type: string type: string
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
token: public_key:
name: token name: public_key
description: 'The token if provider requires api token' description: 'Public Key, required if key_id is not provided.'
required: true required: true
example: consequatur example: voluptate
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
key:
name: key
description: 'The key if provider requires key'
required: true
example: consequatur
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
secret:
name: secret
description: 'The secret if provider requires key'
required: true
example: consequatur
type: string type: string
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
cleanBodyParameters: cleanBodyParameters:
provider: consequatur key_id: numquam
name: consequatur name: alias
token: consequatur public_key: voluptate
key: consequatur
secret: consequatur
fileParameters: [] fileParameters: []
responses: responses:
- -
status: 200 status: 200
content: '{"id":4,"project_id":null,"global":true,"name":"dolores","provider":"digitalocean","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"}' content: '{"id":null,"user":null,"name":"Mr. Stanton Bergnaum","created_at":null,"updated_at":null}'
headers: [] headers: []
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
controller: null - headers
method: null - Authorization
route: null - 'Bearer V64Z86fEdbavh1PgackDe53'
custom: []
-
httpMethods:
- GET
uri: 'api/projects/{project_id}/server-providers/{serverProvider_id}'
metadata:
groupName: server-providers
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: show
description: ''
authenticated: false
custom: []
headers:
Content-Type: application/json
Accept: application/json
urlParameters:
project_id:
name: project_id
description: 'The ID of the project.'
required: true
example: 1
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
serverProvider_id:
name: serverProvider_id
description: 'The ID of the serverProvider.'
required: true
example: 1
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanUrlParameters:
project_id: 1
serverProvider_id: 1
queryParameters: []
cleanQueryParameters: []
bodyParameters: []
cleanBodyParameters: []
fileParameters: []
responses:
-
status: 200
content: '{"id":4,"project_id":null,"global":true,"name":"voluptatem","provider":"vultr","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"}'
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: 1
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanUrlParameters:
project_id: 1
serverProvider_id: 1
queryParameters: []
cleanQueryParameters: []
bodyParameters:
name:
name: name
description: 'The name of the server provider.'
required: true
example: consequatur
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
global:
name: global
description: 'Accessible in all projects'
required: true
example: false
type: string
enumValues:
- true
- false
exampleWasSpecified: false
nullable: false
custom: []
cleanBodyParameters:
name: consequatur
global: false
fileParameters: []
responses:
-
status: 200
content: '{"id":4,"project_id":null,"global":true,"name":"dolores","provider":"digitalocean","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"}'
headers: []
description: ''
custom: []
responseFields: []
auth: []
controller: null controller: null
method: null method: null
route: null route: null
@ -293,17 +161,18 @@ endpoints:
- -
httpMethods: httpMethods:
- DELETE - DELETE
uri: 'api/projects/{project_id}/server-providers/{serverProvider_id}' uri: 'api/projects/{project_id}/servers/{server_id}/ssh-keys/{sshKey_id}'
metadata: metadata:
groupName: server-providers groupName: ssh-keys
groupDescription: '' groupDescription: ''
subgroup: '' subgroup: ''
subgroupDescription: '' subgroupDescription: ''
title: delete title: delete
description: '' description: 'Delete ssh key from server.'
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -317,9 +186,19 @@ endpoints:
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
serverProvider_id: server_id:
name: serverProvider_id name: server_id
description: 'The ID of the serverProvider.' description: 'The ID of the server.'
required: true
example: 8
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
sshKey_id:
name: sshKey_id
description: 'The ID of the sshKey.'
required: true required: true
example: 1 example: 1
type: integer type: integer
@ -329,7 +208,8 @@ endpoints:
custom: [] custom: []
cleanUrlParameters: cleanUrlParameters:
project_id: 1 project_id: 1
serverProvider_id: 1 server_id: 8
sshKey_id: 1
queryParameters: [] queryParameters: []
cleanQueryParameters: [] cleanQueryParameters: []
bodyParameters: [] bodyParameters: []
@ -343,7 +223,10 @@ endpoints:
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer 3deg1vc65k8D6abahfZVPE4'
controller: null controller: null
method: null method: null
route: null route: null

View File

@ -1,20 +1,21 @@
name: ssh-keys name: services
description: '' description: ''
endpoints: endpoints:
- -
httpMethods: httpMethods:
- GET - GET
uri: 'api/projects/{project_id}/servers/{server_id}/ssh-keys' uri: 'api/projects/{project_id}/servers/{server_id}/services'
metadata: metadata:
groupName: ssh-keys groupName: services
groupDescription: '' groupDescription: ''
subgroup: '' subgroup: ''
subgroupDescription: '' subgroupDescription: ''
title: list title: list
description: 'Get all ssh keys.' description: 'Get all services.'
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -32,7 +33,7 @@ endpoints:
name: server_id name: server_id
description: 'The ID of the server.' description: 'The ID of the server.'
required: true required: true
example: 32 example: 8
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -40,7 +41,7 @@ endpoints:
custom: [] custom: []
cleanUrlParameters: cleanUrlParameters:
project_id: 1 project_id: 1
server_id: 32 server_id: 8
queryParameters: [] queryParameters: []
cleanQueryParameters: [] cleanQueryParameters: []
bodyParameters: [] bodyParameters: []
@ -49,12 +50,88 @@ endpoints:
responses: responses:
- -
status: 200 status: 200
content: '{"data":[{"id":2,"user":{"id":1,"name":"Saeed Vaziry","email":"demo@vitodeploy.com","created_at":"2024-12-19T23:19:20.000000Z","updated_at":"2025-04-19T21:24:56.000000Z"},"name":"Prof. Aurelia Buckridge MD","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"},{"id":3,"user":{"id":1,"name":"Saeed Vaziry","email":"demo@vitodeploy.com","created_at":"2024-12-19T23:19:20.000000Z","updated_at":"2025-04-19T21:24:56.000000Z"},"name":"Jaylan Lakin","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"}],"links":{"first":"\/?page=1","last":"\/?page=1","prev":null,"next":null},"meta":{"current_page":1,"from":1,"last_page":1,"links":[{"url":null,"label":"&laquo; Previous","active":false},{"url":"\/?page=1","label":"1","active":true},{"url":null,"label":"Next &raquo;","active":false}],"path":"\/","per_page":25,"to":2,"total":2}}' content: '{"data":[{"id":null,"server_id":null,"type":null,"type_data":null,"name":null,"version":null,"unit":null,"status":null,"is_default":null,"created_at":null,"updated_at":null},{"id":null,"server_id":null,"type":null,"type_data":null,"name":null,"version":null,"unit":null,"status":null,"is_default":null,"created_at":null,"updated_at":null}],"links":{"first":"\/?page=1","last":"\/?page=1","prev":null,"next":null},"meta":{"current_page":1,"from":1,"last_page":1,"links":[{"url":null,"label":"&laquo; Previous","active":false},{"url":"\/?page=1","label":"1","active":true},{"url":null,"label":"Next &raquo;","active":false}],"path":"\/","per_page":25,"to":2,"total":2}}'
headers: [] headers: []
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer cdhb5VevgkZ6DafP6184a3E'
controller: null
method: null
route: null
custom: []
-
httpMethods:
- GET
uri: 'api/projects/{project_id}/servers/{server_id}/services/{id}'
metadata:
groupName: services
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: show
description: 'Get a service by ID.'
authenticated: true
custom: []
headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json
Accept: application/json
urlParameters:
project_id:
name: project_id
description: 'The ID of the project.'
required: true
example: 1
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
server_id:
name: server_id
description: 'The ID of the server.'
required: true
example: 8
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
id:
name: id
description: 'The ID of the service.'
required: true
example: 53
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanUrlParameters:
project_id: 1
server_id: 8
id: 53
queryParameters: []
cleanQueryParameters: []
bodyParameters: []
cleanBodyParameters: []
fileParameters: []
responses:
-
status: 200
content: '{"id":null,"server_id":null,"type":null,"type_data":null,"name":null,"version":null,"unit":null,"status":null,"is_default":null,"created_at":null,"updated_at":null}'
headers: []
description: ''
custom: []
responseFields: []
auth:
- headers
- Authorization
- 'Bearer 3vDaE6Pc51Zg8kbheadVf64'
controller: null controller: null
method: null method: null
route: null route: null
@ -62,17 +139,18 @@ endpoints:
- -
httpMethods: httpMethods:
- POST - POST
uri: 'api/projects/{project_id}/servers/{server_id}/ssh-keys' uri: 'api/projects/{project_id}/servers/{server_id}/services/{service_id}/start'
metadata: metadata:
groupName: ssh-keys groupName: services
groupDescription: '' groupDescription: ''
subgroup: '' subgroup: ''
subgroupDescription: '' subgroupDescription: ''
title: create title: start
description: 'Deploy ssh key to server.' description: 'Start service.'
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -90,7 +168,17 @@ endpoints:
name: server_id name: server_id
description: 'The ID of the server.' description: 'The ID of the server.'
required: true required: true
example: 32 example: 8
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
service_id:
name: service_id
description: 'The ID of the service.'
required: true
example: 53
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -98,109 +186,8 @@ endpoints:
custom: [] custom: []
cleanUrlParameters: cleanUrlParameters:
project_id: 1 project_id: 1
server_id: 32 server_id: 8
queryParameters: [] service_id: 53
cleanQueryParameters: []
bodyParameters:
key_id:
name: key_id
description: 'The ID of the key.'
required: true
example: consequatur
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
name:
name: name
description: 'Key name, required if key_id is not provided.'
required: true
example: consequatur
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: consequatur
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanBodyParameters:
key_id: consequatur
name: consequatur
public_key: consequatur
fileParameters: []
responses:
-
status: 200
content: '{"id":2,"user":{"id":1,"name":"Saeed Vaziry","email":"demo@vitodeploy.com","created_at":"2024-12-19T23:19:20.000000Z","updated_at":"2025-04-19T21:24:56.000000Z"},"name":"Dr. Cornelius Luettgen V","created_at":"2025-04-21T18:40:19.000000Z","updated_at":"2025-04-21T18:40:19.000000Z"}'
headers: []
description: ''
custom: []
responseFields: []
auth: []
controller: null
method: null
route: null
custom: []
-
httpMethods:
- DELETE
uri: 'api/projects/{project_id}/servers/{server_id}/ssh-keys/{sshKey_id}'
metadata:
groupName: ssh-keys
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: delete
description: 'Delete ssh key from server.'
authenticated: false
custom: []
headers:
Content-Type: application/json
Accept: application/json
urlParameters:
project_id:
name: project_id
description: 'The ID of the project.'
required: true
example: 1
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
server_id:
name: server_id
description: 'The ID of the server.'
required: true
example: 32
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
sshKey_id:
name: sshKey_id
description: 'The ID of the sshKey.'
required: true
example: 1
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanUrlParameters:
project_id: 1
server_id: 32
sshKey_id: 1
queryParameters: [] queryParameters: []
cleanQueryParameters: [] cleanQueryParameters: []
bodyParameters: [] bodyParameters: []
@ -214,7 +201,375 @@ endpoints:
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer a6e6Db5VcP314EgZdka8vhf'
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: 8
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
service_id:
name: service_id
description: 'The ID of the service.'
required: true
example: 53
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanUrlParameters:
project_id: 1
server_id: 8
service_id: 53
queryParameters: []
cleanQueryParameters: []
bodyParameters: []
cleanBodyParameters: []
fileParameters: []
responses:
-
status: 204
content: null
headers: []
description: ''
custom: []
responseFields: []
auth:
- headers
- Authorization
- 'Bearer kefg56PEc4a18aDdvVZb3h6'
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: 8
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
service_id:
name: service_id
description: 'The ID of the service.'
required: true
example: 53
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanUrlParameters:
project_id: 1
server_id: 8
service_id: 53
queryParameters: []
cleanQueryParameters: []
bodyParameters: []
cleanBodyParameters: []
fileParameters: []
responses:
-
status: 204
content: null
headers: []
description: ''
custom: []
responseFields: []
auth:
- headers
- Authorization
- 'Bearer edhaE164avZ6gbVDPf3k8c5'
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: 8
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
service_id:
name: service_id
description: 'The ID of the service.'
required: true
example: 53
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanUrlParameters:
project_id: 1
server_id: 8
service_id: 53
queryParameters: []
cleanQueryParameters: []
bodyParameters: []
cleanBodyParameters: []
fileParameters: []
responses:
-
status: 204
content: null
headers: []
description: ''
custom: []
responseFields: []
auth:
- headers
- Authorization
- 'Bearer D4c1hbfV6Pad68v3gEkaeZ5'
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: 8
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
service_id:
name: service_id
description: 'The ID of the service.'
required: true
example: 53
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanUrlParameters:
project_id: 1
server_id: 8
service_id: 53
queryParameters: []
cleanQueryParameters: []
bodyParameters: []
cleanBodyParameters: []
fileParameters: []
responses:
-
status: 204
content: null
headers: []
description: ''
custom: []
responseFields: []
auth:
- headers
- Authorization
- 'Bearer be41fvh6a8d5PkDVEgZ36ca'
controller: null
method: null
route: null
custom: []
-
httpMethods:
- DELETE
uri: 'api/projects/{project_id}/servers/{server_id}/services/{service_id}'
metadata:
groupName: services
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: delete
description: 'Delete service.'
authenticated: true
custom: []
headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json
Accept: application/json
urlParameters:
project_id:
name: project_id
description: 'The ID of the project.'
required: true
example: 1
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
server_id:
name: server_id
description: 'The ID of the server.'
required: true
example: 8
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
service_id:
name: service_id
description: 'The ID of the service.'
required: true
example: 53
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanUrlParameters:
project_id: 1
server_id: 8
service_id: 53
queryParameters: []
cleanQueryParameters: []
bodyParameters: []
cleanBodyParameters: []
fileParameters: []
responses:
-
status: 204
content: null
headers: []
description: ''
custom: []
responseFields: []
auth:
- headers
- Authorization
- 'Bearer dcb68hg634P1DaZvef5VakE'
controller: null controller: null
method: null method: null
route: null route: null

View File

@ -1,20 +1,21 @@
name: services name: sites
description: '' description: ''
endpoints: endpoints:
- -
httpMethods: httpMethods:
- GET - GET
uri: 'api/projects/{project_id}/servers/{server_id}/services' uri: 'api/projects/{project_id}/servers/{server_id}/sites'
metadata: metadata:
groupName: services groupName: sites
groupDescription: '' groupDescription: ''
subgroup: '' subgroup: ''
subgroupDescription: '' subgroupDescription: ''
title: list title: list
description: 'Get all services.' description: 'Get all sites.'
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -32,7 +33,7 @@ endpoints:
name: server_id name: server_id
description: 'The ID of the server.' description: 'The ID of the server.'
required: true required: true
example: 32 example: 8
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -40,7 +41,7 @@ endpoints:
custom: [] custom: []
cleanUrlParameters: cleanUrlParameters:
project_id: 1 project_id: 1
server_id: 32 server_id: 8
queryParameters: [] queryParameters: []
cleanQueryParameters: [] cleanQueryParameters: []
bodyParameters: [] bodyParameters: []
@ -49,30 +50,34 @@ endpoints:
responses: responses:
- -
status: 200 status: 200
content: '{"data":[{"id":null,"server_id":1,"type":"webserver","type_data":null,"name":"nginx","version":null,"unit":null,"status":"ready","is_default":null,"created_at":null,"updated_at":null},{"id":null,"server_id":1,"type":"webserver","type_data":null,"name":"nginx","version":null,"unit":null,"status":"ready","is_default":null,"created_at":null,"updated_at":null}],"links":{"first":"\/?page=1","last":"\/?page=1","prev":null,"next":null},"meta":{"current_page":1,"from":1,"last_page":1,"links":[{"url":null,"label":"&laquo; Previous","active":false},{"url":"\/?page=1","label":"1","active":true},{"url":null,"label":"Next &raquo;","active":false}],"path":"\/","per_page":25,"to":2,"total":2}}' content: '{"data":[{"id":null,"server_id":null,"source_control_id":null,"type":"laravel","type_data":null,"domain":"test.com","aliases":null,"web_directory":"\/","path":"\/home","php_version":"8.2","repository":null,"branch":"main","status":"ready","port":null,"user":"vito","progress":100,"created_at":null,"updated_at":null},{"id":null,"server_id":null,"source_control_id":null,"type":"laravel","type_data":null,"domain":"test.com","aliases":null,"web_directory":"\/","path":"\/home","php_version":"8.2","repository":null,"branch":"main","status":"ready","port":null,"user":"vito","progress":100,"created_at":null,"updated_at":null}],"links":{"first":"\/?page=1","last":"\/?page=1","prev":null,"next":null},"meta":{"current_page":1,"from":1,"last_page":1,"links":[{"url":null,"label":"&laquo; Previous","active":false},{"url":"\/?page=1","label":"1","active":true},{"url":null,"label":"Next &raquo;","active":false}],"path":"\/","per_page":25,"to":2,"total":2}}'
headers: [] headers: []
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer 3gE54ahkea166PfvbVD8Zdc'
controller: null controller: null
method: null method: null
route: null route: null
custom: [] custom: []
- -
httpMethods: httpMethods:
- GET - POST
uri: 'api/projects/{project_id}/servers/{server_id}/services/{id}' uri: 'api/projects/{project_id}/servers/{server_id}/sites'
metadata: metadata:
groupName: services groupName: sites
groupDescription: '' groupDescription: ''
subgroup: '' subgroup: ''
subgroupDescription: '' subgroupDescription: ''
title: show title: create
description: 'Get a service by ID.' description: 'Create a new site.'
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -90,7 +95,212 @@ endpoints:
name: server_id name: server_id
description: 'The ID of the server.' description: 'The ID of the server.'
required: true required: true
example: 32 example: 8
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanUrlParameters:
project_id: 1
server_id: 8
queryParameters: []
cleanQueryParameters: []
bodyParameters:
type:
name: type
description: ''
required: true
example: php
type: string
enumValues:
- php
- php-blank
- phpmyadmin
- laravel
- wordpress
- load-balancer
exampleWasSpecified: false
nullable: false
custom: []
domain:
name: domain
description: ''
required: true
example: rem
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
aliases:
name: aliases
description: ''
required: true
example:
- libero
type: 'string[]'
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
php_version:
name: php_version
description: 'One of the installed PHP Versions'
required: true
example: '7.4'
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
web_directory:
name: web_directory
description: 'Required for PHP and Laravel sites'
required: true
example: public
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
source_control:
name: source_control
description: 'Source control ID, Required for Sites which support source control'
required: true
example: dolor
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
repository:
name: repository
description: 'Repository, Required for Sites which support source control'
required: true
example: organization/repository
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
branch:
name: branch
description: 'Branch, Required for Sites which support source control'
required: true
example: main
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
composer:
name: composer
description: 'Run composer if site supports composer'
required: true
example: true
type: boolean
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
version:
name: version
description: 'Version, if the site type requires a version like PHPMyAdmin'
required: true
example: 5.2.1
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
user:
name: user
description: 'user, to isolate the website under a new user'
required: true
example: vitae
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
method:
name: method
description: 'Load balancer method, Required if the site type is Load balancer'
required: true
example: ip-hash
type: string
enumValues:
- round-robin
- least-connections
- ip-hash
exampleWasSpecified: false
nullable: false
custom: []
cleanBodyParameters:
type: php
domain: rem
aliases:
- libero
php_version: '7.4'
web_directory: public
source_control: dolor
repository: organization/repository
branch: main
composer: true
version: 5.2.1
user: vitae
method: ip-hash
fileParameters: []
responses:
-
status: 200
content: '{"id":null,"server_id":null,"source_control_id":null,"type":"laravel","type_data":null,"domain":"test.com","aliases":null,"web_directory":"\/","path":"\/home","php_version":"8.2","repository":null,"branch":"main","status":"ready","port":null,"user":"vito","progress":100,"created_at":null,"updated_at":null}'
headers: []
description: ''
custom: []
responseFields: []
auth:
- headers
- Authorization
- 'Bearer e1V4ga3Pavk6ch6b5E8fZdD'
controller: null
method: null
route: null
custom: []
-
httpMethods:
- GET
uri: 'api/projects/{project_id}/servers/{server_id}/sites/{id}'
metadata:
groupName: sites
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: show
description: 'Get a site 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: 8
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -98,9 +308,9 @@ endpoints:
custom: [] custom: []
id: id:
name: id name: id
description: 'The ID of the service.' description: 'The ID of the site.'
required: true required: true
example: 184 example: 26
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -108,8 +318,8 @@ endpoints:
custom: [] custom: []
cleanUrlParameters: cleanUrlParameters:
project_id: 1 project_id: 1
server_id: 32 server_id: 8
id: 184 id: 26
queryParameters: [] queryParameters: []
cleanQueryParameters: [] cleanQueryParameters: []
bodyParameters: [] bodyParameters: []
@ -118,357 +328,15 @@ endpoints:
responses: responses:
- -
status: 200 status: 200
content: '{"id":null,"server_id":1,"type":"webserver","type_data":null,"name":"nginx","version":null,"unit":null,"status":"ready","is_default":null,"created_at":null,"updated_at":null}' content: '{"id":null,"server_id":null,"source_control_id":null,"type":"laravel","type_data":null,"domain":"test.com","aliases":null,"web_directory":"\/","path":"\/home","php_version":"8.2","repository":null,"branch":"main","status":"ready","port":null,"user":"vito","progress":100,"created_at":null,"updated_at":null}'
headers: [] headers: []
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
controller: null - headers
method: null - Authorization
route: null - 'Bearer 8gZkEaehfd4v3bac615DVP6'
custom: []
-
httpMethods:
- POST
uri: 'api/projects/{project_id}/servers/{server_id}/services/{service_id}/start'
metadata:
groupName: services
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: start
description: 'Start service.'
authenticated: false
custom: []
headers:
Content-Type: application/json
Accept: application/json
urlParameters:
project_id:
name: project_id
description: 'The ID of the project.'
required: true
example: 1
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
server_id:
name: server_id
description: 'The ID of the server.'
required: true
example: 32
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
service_id:
name: service_id
description: 'The ID of the service.'
required: true
example: 184
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanUrlParameters:
project_id: 1
server_id: 32
service_id: 184
queryParameters: []
cleanQueryParameters: []
bodyParameters: []
cleanBodyParameters: []
fileParameters: []
responses:
-
status: 204
content: null
headers: []
description: ''
custom: []
responseFields: []
auth: []
controller: null
method: null
route: null
custom: []
-
httpMethods:
- POST
uri: 'api/projects/{project_id}/servers/{server_id}/services/{service_id}/stop'
metadata:
groupName: services
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: stop
description: 'Stop service.'
authenticated: false
custom: []
headers:
Content-Type: application/json
Accept: application/json
urlParameters:
project_id:
name: project_id
description: 'The ID of the project.'
required: true
example: 1
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
server_id:
name: server_id
description: 'The ID of the server.'
required: true
example: 32
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
service_id:
name: service_id
description: 'The ID of the service.'
required: true
example: 184
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanUrlParameters:
project_id: 1
server_id: 32
service_id: 184
queryParameters: []
cleanQueryParameters: []
bodyParameters: []
cleanBodyParameters: []
fileParameters: []
responses:
-
status: 204
content: null
headers: []
description: ''
custom: []
responseFields: []
auth: []
controller: null
method: null
route: null
custom: []
-
httpMethods:
- POST
uri: 'api/projects/{project_id}/servers/{server_id}/services/{service_id}/restart'
metadata:
groupName: services
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: restart
description: 'Restart service.'
authenticated: false
custom: []
headers:
Content-Type: application/json
Accept: application/json
urlParameters:
project_id:
name: project_id
description: 'The ID of the project.'
required: true
example: 1
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
server_id:
name: server_id
description: 'The ID of the server.'
required: true
example: 32
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
service_id:
name: service_id
description: 'The ID of the service.'
required: true
example: 184
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanUrlParameters:
project_id: 1
server_id: 32
service_id: 184
queryParameters: []
cleanQueryParameters: []
bodyParameters: []
cleanBodyParameters: []
fileParameters: []
responses:
-
status: 204
content: null
headers: []
description: ''
custom: []
responseFields: []
auth: []
controller: null
method: null
route: null
custom: []
-
httpMethods:
- POST
uri: 'api/projects/{project_id}/servers/{server_id}/services/{service_id}/enable'
metadata:
groupName: services
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: enable
description: 'Enable service.'
authenticated: false
custom: []
headers:
Content-Type: application/json
Accept: application/json
urlParameters:
project_id:
name: project_id
description: 'The ID of the project.'
required: true
example: 1
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
server_id:
name: server_id
description: 'The ID of the server.'
required: true
example: 32
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
service_id:
name: service_id
description: 'The ID of the service.'
required: true
example: 184
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanUrlParameters:
project_id: 1
server_id: 32
service_id: 184
queryParameters: []
cleanQueryParameters: []
bodyParameters: []
cleanBodyParameters: []
fileParameters: []
responses:
-
status: 204
content: null
headers: []
description: ''
custom: []
responseFields: []
auth: []
controller: null
method: null
route: null
custom: []
-
httpMethods:
- POST
uri: 'api/projects/{project_id}/servers/{server_id}/services/{service_id}/disable'
metadata:
groupName: services
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: disable
description: 'Disable service.'
authenticated: false
custom: []
headers:
Content-Type: application/json
Accept: application/json
urlParameters:
project_id:
name: project_id
description: 'The ID of the project.'
required: true
example: 1
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
server_id:
name: server_id
description: 'The ID of the server.'
required: true
example: 32
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
service_id:
name: service_id
description: 'The ID of the service.'
required: true
example: 184
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanUrlParameters:
project_id: 1
server_id: 32
service_id: 184
queryParameters: []
cleanQueryParameters: []
bodyParameters: []
cleanBodyParameters: []
fileParameters: []
responses:
-
status: 204
content: null
headers: []
description: ''
custom: []
responseFields: []
auth: []
controller: null controller: null
method: null method: null
route: null route: null
@ -476,17 +344,18 @@ endpoints:
- -
httpMethods: httpMethods:
- DELETE - DELETE
uri: 'api/projects/{project_id}/servers/{server_id}/services/{service_id}' uri: 'api/projects/{project_id}/servers/{server_id}/sites/{site_id}'
metadata: metadata:
groupName: services groupName: sites
groupDescription: '' groupDescription: ''
subgroup: '' subgroup: ''
subgroupDescription: '' subgroupDescription: ''
title: delete title: delete
description: 'Delete service.' description: 'Delete site.'
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -504,17 +373,17 @@ endpoints:
name: server_id name: server_id
description: 'The ID of the server.' description: 'The ID of the server.'
required: true required: true
example: 32 example: 8
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
service_id: site_id:
name: service_id name: site_id
description: 'The ID of the service.' description: 'The ID of the site.'
required: true required: true
example: 184 example: 26
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -522,8 +391,8 @@ endpoints:
custom: [] custom: []
cleanUrlParameters: cleanUrlParameters:
project_id: 1 project_id: 1
server_id: 32 server_id: 8
service_id: 184 site_id: 26
queryParameters: [] queryParameters: []
cleanQueryParameters: [] cleanQueryParameters: []
bodyParameters: [] bodyParameters: []
@ -537,7 +406,110 @@ endpoints:
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer aadb1h6f6kD4V8vePZgcE35'
controller: null
method: null
route: null
custom: []
-
httpMethods:
- POST
uri: 'api/projects/{project_id}/servers/{server_id}/sites/{site_id}/load-balancer'
metadata:
groupName: sites
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: load-balancer
description: 'Update load balancer.'
authenticated: 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: 8
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
site_id:
name: site_id
description: 'The ID of the site.'
required: true
example: 26
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanUrlParameters:
project_id: 1
server_id: 8
site_id: 26
queryParameters: []
cleanQueryParameters: []
bodyParameters:
method:
name: method
description: 'Load balancer method, Required if the site type is Load balancer'
required: true
example: least-connections
type: string
enumValues:
- round-robin
- least-connections
- ip-hash
exampleWasSpecified: false
nullable: false
custom: []
servers:
name: servers
description: 'Array of servers including server, port, weight, backup. (server is the local IP of the server)'
required: true
example:
- deleniti
type: 'string[]'
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanBodyParameters:
method: least-connections
servers:
- deleniti
fileParameters: []
responses:
-
status: 200
content: null
headers: []
description: ''
custom: []
responseFields: []
auth:
- headers
- Authorization
- 'Bearer 5E6hZa64bka1cV3Pdvf8Deg'
controller: null controller: null
method: null method: null
route: null route: null

File diff suppressed because it is too large Load Diff

View File

@ -1,20 +1,21 @@
name: source-controls name: storage-providers
description: '' description: ''
endpoints: endpoints:
- -
httpMethods: httpMethods:
- GET - GET
uri: 'api/projects/{project_id}/source-controls' uri: 'api/projects/{project_id}/storage-providers'
metadata: metadata:
groupName: source-controls groupName: storage-providers
groupDescription: '' groupDescription: ''
subgroup: '' subgroup: ''
subgroupDescription: '' subgroupDescription: ''
title: list title: list
description: '' description: ''
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -38,12 +39,15 @@ endpoints:
responses: responses:
- -
status: 200 status: 200
content: '{"data":[{"id":5,"project_id":null,"global":true,"name":"Dr. Cornelius Luettgen V","provider":"github","created_at":"2025-04-21T18:40:20.000000Z","updated_at":"2025-04-21T18:40:20.000000Z"},{"id":6,"project_id":null,"global":true,"name":"Orville Satterfield","provider":"github","created_at":"2025-04-21T18:40:20.000000Z","updated_at":"2025-04-21T18:40:20.000000Z"}],"links":{"first":"\/?page=1","last":"\/?page=1","prev":null,"next":null},"meta":{"current_page":1,"from":1,"last_page":1,"links":[{"url":null,"label":"&laquo; Previous","active":false},{"url":"\/?page=1","label":"1","active":true},{"url":null,"label":"Next &raquo;","active":false}],"path":"\/","per_page":25,"to":2,"total":2}}' content: '{"data":[{"id":5,"project_id":null,"global":true,"name":"dolorem","provider":"s3","created_at":"2025-01-30T22:42:49.000000Z","updated_at":"2025-01-30T22:42:49.000000Z"},{"id":6,"project_id":null,"global":true,"name":"itaque","provider":"s3","created_at":"2025-01-30T22:42:49.000000Z","updated_at":"2025-01-30T22:42:49.000000Z"}],"links":{"first":"\/?page=1","last":"\/?page=1","prev":null,"next":null},"meta":{"current_page":1,"from":1,"last_page":1,"links":[{"url":null,"label":"&laquo; Previous","active":false},{"url":"\/?page=1","label":"1","active":true},{"url":null,"label":"Next &raquo;","active":false}],"path":"\/","per_page":25,"to":2,"total":2}}'
headers: [] headers: []
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer D16Vg58E6Pfkh3Zveab4dca'
controller: null controller: null
method: null method: null
route: null route: null
@ -51,17 +55,18 @@ endpoints:
- -
httpMethods: httpMethods:
- POST - POST
uri: 'api/projects/{project_id}/source-controls' uri: 'api/projects/{project_id}/storage-providers'
metadata: metadata:
groupName: source-controls groupName: storage-providers
groupDescription: '' groupDescription: ''
subgroup: '' subgroup: ''
subgroupDescription: '' subgroupDescription: ''
title: create title: create
description: '' description: ''
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -82,14 +87,11 @@ endpoints:
bodyParameters: bodyParameters:
provider: provider:
name: provider name: provider
description: 'The provider' description: 'The provider (aws, linode, hetzner, digitalocean, vultr, ...)'
required: true required: true
example: gitlab example: alias
type: string type: string
enumValues: enumValues: []
- gitlab
- github
- bitbucket
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
@ -97,7 +99,7 @@ endpoints:
name: name name: name
description: 'The name of the storage provider.' description: 'The name of the storage provider.'
required: true required: true
example: consequatur example: explicabo
type: string type: string
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -107,25 +109,25 @@ endpoints:
name: token name: token
description: 'The token if provider requires api token' description: 'The token if provider requires api token'
required: true required: true
example: consequatur example: ut
type: string type: string
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
url: key:
name: url name: key
description: 'The URL if the provider is Gitlab and it is self-hosted' description: 'The key if provider requires key'
required: true required: true
example: 'http://kunze.biz/iste-laborum-eius-est-dolor.html' example: libero
type: string type: string
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
username: secret:
name: username name: secret
description: 'The username if the provider is Bitbucket' description: 'The secret if provider requires key'
required: true required: true
example: consequatur example: consequatur
type: string type: string
@ -133,33 +135,25 @@ endpoints:
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
password:
name: password
description: 'The password if the provider is Bitbucket'
required: true
example: 'O[2UZ5ij-e/dl4m{o,'
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanBodyParameters: cleanBodyParameters:
provider: gitlab provider: alias
name: consequatur name: explicabo
token: consequatur token: ut
url: 'http://kunze.biz/iste-laborum-eius-est-dolor.html' key: libero
username: consequatur secret: consequatur
password: 'O[2UZ5ij-e/dl4m{o,'
fileParameters: [] fileParameters: []
responses: responses:
- -
status: 200 status: 200
content: '{"id":5,"project_id":null,"global":true,"name":"Lonny Ankunding","provider":"github","created_at":"2025-04-21T18:40:20.000000Z","updated_at":"2025-04-21T18:40:20.000000Z"}' content: '{"id":5,"project_id":null,"global":true,"name":"quos","provider":"s3","created_at":"2025-01-30T22:42:49.000000Z","updated_at":"2025-01-30T22:42:49.000000Z"}'
headers: [] headers: []
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer DaZ6d6Eck1bhVe3g4aP85vf'
controller: null controller: null
method: null method: null
route: null route: null
@ -167,17 +161,18 @@ endpoints:
- -
httpMethods: httpMethods:
- GET - GET
uri: 'api/projects/{project_id}/source-controls/{sourceControl_id}' uri: 'api/projects/{project_id}/storage-providers/{storageProvider_id}'
metadata: metadata:
groupName: source-controls groupName: storage-providers
groupDescription: '' groupDescription: ''
subgroup: '' subgroup: ''
subgroupDescription: '' subgroupDescription: ''
title: show title: show
description: '' description: ''
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -191,11 +186,11 @@ endpoints:
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
sourceControl_id: storageProvider_id:
name: sourceControl_id name: storageProvider_id
description: 'The ID of the sourceControl.' description: 'The ID of the storageProvider.'
required: true required: true
example: 1 example: 3
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -203,7 +198,7 @@ endpoints:
custom: [] custom: []
cleanUrlParameters: cleanUrlParameters:
project_id: 1 project_id: 1
sourceControl_id: 1 storageProvider_id: 3
queryParameters: [] queryParameters: []
cleanQueryParameters: [] cleanQueryParameters: []
bodyParameters: [] bodyParameters: []
@ -212,12 +207,15 @@ endpoints:
responses: responses:
- -
status: 200 status: 200
content: '{"id":5,"project_id":null,"global":true,"name":"Dr. Enoch Harber II","provider":"github","created_at":"2025-04-21T18:40:20.000000Z","updated_at":"2025-04-21T18:40:20.000000Z"}' content: '{"id":5,"project_id":null,"global":true,"name":"id","provider":"s3","created_at":"2025-01-30T22:42:49.000000Z","updated_at":"2025-01-30T22:42:49.000000Z"}'
headers: [] headers: []
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer 1dekD4gva56bc683VPEhZfa'
controller: null controller: null
method: null method: null
route: null route: null
@ -225,17 +223,18 @@ endpoints:
- -
httpMethods: httpMethods:
- PUT - PUT
uri: 'api/projects/{project_id}/source-controls/{sourceControl_id}' uri: 'api/projects/{project_id}/storage-providers/{storageProvider_id}'
metadata: metadata:
groupName: source-controls groupName: storage-providers
groupDescription: '' groupDescription: ''
subgroup: '' subgroup: ''
subgroupDescription: '' subgroupDescription: ''
title: update title: update
description: '' description: ''
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -249,11 +248,11 @@ endpoints:
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
sourceControl_id: storageProvider_id:
name: sourceControl_id name: storageProvider_id
description: 'The ID of the sourceControl.' description: 'The ID of the storageProvider.'
required: true required: true
example: 1 example: 3
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -261,7 +260,7 @@ endpoints:
custom: [] custom: []
cleanUrlParameters: cleanUrlParameters:
project_id: 1 project_id: 1
sourceControl_id: 1 storageProvider_id: 3
queryParameters: [] queryParameters: []
cleanQueryParameters: [] cleanQueryParameters: []
bodyParameters: bodyParameters:
@ -269,47 +268,7 @@ endpoints:
name: name name: name
description: 'The name of the storage provider.' description: 'The name of the storage provider.'
required: true required: true
example: consequatur example: sequi
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
token:
name: token
description: 'The token if provider requires api token'
required: true
example: consequatur
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
url:
name: url
description: 'The URL if the provider is Gitlab and it is self-hosted'
required: true
example: 'http://kunze.biz/iste-laborum-eius-est-dolor.html'
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
username:
name: username
description: 'The username if the provider is Bitbucket'
required: true
example: consequatur
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
password:
name: password
description: 'The password if the provider is Bitbucket'
required: true
example: 'O[2UZ5ij-e/dl4m{o,'
type: string type: string
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -328,22 +287,21 @@ endpoints:
nullable: false nullable: false
custom: [] custom: []
cleanBodyParameters: cleanBodyParameters:
name: consequatur name: sequi
token: consequatur
url: 'http://kunze.biz/iste-laborum-eius-est-dolor.html'
username: consequatur
password: 'O[2UZ5ij-e/dl4m{o,'
global: false global: false
fileParameters: [] fileParameters: []
responses: responses:
- -
status: 200 status: 200
content: '{"id":5,"project_id":null,"global":true,"name":"Lonny Ankunding","provider":"github","created_at":"2025-04-21T18:40:20.000000Z","updated_at":"2025-04-21T18:40:20.000000Z"}' content: '{"id":5,"project_id":null,"global":true,"name":"velit","provider":"s3","created_at":"2025-01-30T22:42:49.000000Z","updated_at":"2025-01-30T22:42:49.000000Z"}'
headers: [] headers: []
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer V65g18Pca4v3hDEkbZfe6da'
controller: null controller: null
method: null method: null
route: null route: null
@ -351,17 +309,18 @@ endpoints:
- -
httpMethods: httpMethods:
- DELETE - DELETE
uri: 'api/projects/{project_id}/source-controls/{sourceControl_id}' uri: 'api/projects/{project_id}/storage-providers/{storageProvider_id}'
metadata: metadata:
groupName: source-controls groupName: storage-providers
groupDescription: '' groupDescription: ''
subgroup: '' subgroup: ''
subgroupDescription: '' subgroupDescription: ''
title: delete title: delete
description: '' description: ''
authenticated: false authenticated: true
custom: [] custom: []
headers: headers:
Authorization: 'Bearer YOUR-API-KEY'
Content-Type: application/json Content-Type: application/json
Accept: application/json Accept: application/json
urlParameters: urlParameters:
@ -375,11 +334,11 @@ endpoints:
exampleWasSpecified: false exampleWasSpecified: false
nullable: false nullable: false
custom: [] custom: []
sourceControl_id: storageProvider_id:
name: sourceControl_id name: storageProvider_id
description: 'The ID of the sourceControl.' description: 'The ID of the storageProvider.'
required: true required: true
example: 1 example: 3
type: integer type: integer
enumValues: [] enumValues: []
exampleWasSpecified: false exampleWasSpecified: false
@ -387,7 +346,7 @@ endpoints:
custom: [] custom: []
cleanUrlParameters: cleanUrlParameters:
project_id: 1 project_id: 1
sourceControl_id: 1 storageProvider_id: 3
queryParameters: [] queryParameters: []
cleanQueryParameters: [] cleanQueryParameters: []
bodyParameters: [] bodyParameters: []
@ -401,7 +360,10 @@ endpoints:
description: '' description: ''
custom: [] custom: []
responseFields: [] responseFields: []
auth: [] auth:
- headers
- Authorization
- 'Bearer 1v6a6efgch3DbZ4aVE5d8kP'
controller: null controller: null
method: null method: null
route: null route: null

View File

@ -1,350 +0,0 @@
name: storage-providers
description: ''
endpoints:
-
httpMethods:
- GET
uri: 'api/projects/{project_id}/storage-providers'
metadata:
groupName: storage-providers
groupDescription: ''
subgroup: ''
subgroupDescription: ''
title: list
description: ''
authenticated: false
custom: []
headers:
Content-Type: application/json
Accept: application/json
urlParameters:
project_id:
name: project_id
description: 'The ID of the project.'
required: true
example: 1
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanUrlParameters:
project_id: 1
queryParameters: []
cleanQueryParameters: []
bodyParameters: []
cleanBodyParameters: []
fileParameters: []
responses:
-
status: 200
content: '{"data":[{"id":5,"project_id":null,"global":true,"name":"dolores","provider":"local","created_at":"2025-04-21T18:40:20.000000Z","updated_at":"2025-04-21T18:40:20.000000Z"},{"id":6,"project_id":null,"global":true,"name":"dignissimos","provider":"dropbox","created_at":"2025-04-21T18:40:20.000000Z","updated_at":"2025-04-21T18:40:20.000000Z"}],"links":{"first":"\/?page=1","last":"\/?page=1","prev":null,"next":null},"meta":{"current_page":1,"from":1,"last_page":1,"links":[{"url":null,"label":"&laquo; Previous","active":false},{"url":"\/?page=1","label":"1","active":true},{"url":null,"label":"Next &raquo;","active":false}],"path":"\/","per_page":25,"to":2,"total":2}}'
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: consequatur
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
name:
name: name
description: 'The name of the storage provider.'
required: true
example: consequatur
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
token:
name: token
description: 'The token if provider requires api token'
required: true
example: consequatur
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
key:
name: key
description: 'The key if provider requires key'
required: true
example: consequatur
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
secret:
name: secret
description: 'The secret if provider requires key'
required: true
example: consequatur
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanBodyParameters:
provider: consequatur
name: consequatur
token: consequatur
key: consequatur
secret: consequatur
fileParameters: []
responses:
-
status: 200
content: '{"id":5,"project_id":null,"global":true,"name":"dolores","provider":"local","created_at":"2025-04-21T18:40:20.000000Z","updated_at":"2025-04-21T18:40:20.000000Z"}'
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: 3
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanUrlParameters:
project_id: 1
storageProvider_id: 3
queryParameters: []
cleanQueryParameters: []
bodyParameters: []
cleanBodyParameters: []
fileParameters: []
responses:
-
status: 200
content: '{"id":5,"project_id":null,"global":true,"name":"facilis","provider":"dropbox","created_at":"2025-04-21T18:40:20.000000Z","updated_at":"2025-04-21T18:40:20.000000Z"}'
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: 3
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanUrlParameters:
project_id: 1
storageProvider_id: 3
queryParameters: []
cleanQueryParameters: []
bodyParameters:
name:
name: name
description: 'The name of the storage provider.'
required: true
example: consequatur
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
global:
name: global
description: 'Accessible in all projects'
required: true
example: true
type: string
enumValues:
- true
- false
exampleWasSpecified: false
nullable: false
custom: []
cleanBodyParameters:
name: consequatur
global: true
fileParameters: []
responses:
-
status: 200
content: '{"id":5,"project_id":null,"global":true,"name":"dolores","provider":"local","created_at":"2025-04-21T18:40:20.000000Z","updated_at":"2025-04-21T18:40:20.000000Z"}'
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: 3
type: integer
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanUrlParameters:
project_id: 1
storageProvider_id: 3
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. VitoDeploy's API documentation.
<aside> <aside>
<strong>Base URL</strong>: <code>https://vito.test</code> <strong>Base URL</strong>: <code>https://your-vito-url</code>
</aside> </aside>
This documentation aims to provide all the information you need to work with our API. This documentation aims to provide all the information you need to work with our API.
<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). <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> 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

@ -48,6 +48,11 @@ ## Credits
- PHPSecLib - PHPSecLib
- PHPUnit - PHPUnit
- Tailwindcss - Tailwindcss
- Alpinejs
- Livewire
- Vite - Vite
- Prettier - Prettier
- Postcss
- FilamentPHP
- Mobiledetect
- Spatie - Spatie

View File

@ -10,9 +10,6 @@
class CreateCronJob class CreateCronJob
{ {
/**
* @param array<string, mixed> $input
*/
public function create(Server $server, array $input): CronJob public function create(Server $server, array $input): CronJob
{ {
$cronJob = new CronJob([ $cronJob = new CronJob([
@ -31,10 +28,6 @@ public function create(Server $server, array $input): CronJob
return $cronJob; return $cronJob;
} }
/**
* @param array<string, mixed> $input
* @return array<string, array<mixed>>
*/
public static function rules(array $input, Server $server): array public static function rules(array $input, Server $server): array
{ {
$rules = [ $rules = [

View File

@ -5,30 +5,20 @@
use App\Enums\DatabaseStatus; use App\Enums\DatabaseStatus;
use App\Models\Database; use App\Models\Database;
use App\Models\Server; use App\Models\Server;
use App\Models\Service;
use Illuminate\Validation\Rule; use Illuminate\Validation\Rule;
use Illuminate\Validation\ValidationException; use Illuminate\Validation\ValidationException;
class CreateDatabase class CreateDatabase
{ {
/**
* @param array<string, mixed> $input
*/
public function create(Server $server, array $input): Database public function create(Server $server, array $input): Database
{ {
$database = new Database([ $database = new Database([
'server_id' => $server->id, 'server_id' => $server->id,
'charset' => $input['charset'],
'collation' => $input['collation'],
'name' => $input['name'], 'name' => $input['name'],
]); ]);
/** @var Service $service */
$service = $server->database();
/** @var \App\SSH\Services\Database\Database $databaseHandler */ /** @var \App\SSH\Services\Database\Database $databaseHandler */
$databaseHandler = $service->handler(); $databaseHandler = $server->database()->handler();
$databaseHandler->create($database->name, $database->charset, $database->collation); $databaseHandler->create($database->name);
$database->status = DatabaseStatus::READY; $database->status = DatabaseStatus::READY;
$database->save(); $database->save();
@ -42,9 +32,6 @@ public function create(Server $server, array $input): Database
} }
/** /**
* @param array<string, mixed> $input
* @return array<string, mixed>
*
* @throws ValidationException * @throws ValidationException
*/ */
public static function rules(Server $server, array $input): array public static function rules(Server $server, array $input): array
@ -53,15 +40,7 @@ public static function rules(Server $server, array $input): array
'name' => [ 'name' => [
'required', 'required',
'alpha_dash', 'alpha_dash',
Rule::unique('databases', 'name')->where('server_id', $server->id)->whereNull('deleted_at'), Rule::unique('databases', 'name')->where('server_id', $server->id),
],
'charset' => [
'required',
'string',
],
'collation' => [
'required',
'string',
], ],
]; ];
if (isset($input['user']) && $input['user']) { if (isset($input['user']) && $input['user']) {

View File

@ -5,7 +5,6 @@
use App\Enums\DatabaseUserStatus; use App\Enums\DatabaseUserStatus;
use App\Models\DatabaseUser; use App\Models\DatabaseUser;
use App\Models\Server; use App\Models\Server;
use App\Models\Service;
use App\SSH\Services\Database\Database; use App\SSH\Services\Database\Database;
use Illuminate\Validation\Rule; use Illuminate\Validation\Rule;
use Illuminate\Validation\ValidationException; use Illuminate\Validation\ValidationException;
@ -13,9 +12,6 @@
class CreateDatabaseUser class CreateDatabaseUser
{ {
/** /**
* @param array<string, mixed> $input
* @param array<string> $links
*
* @throws ValidationException * @throws ValidationException
*/ */
public function create(Server $server, array $input, array $links = []): DatabaseUser public function create(Server $server, array $input, array $links = []): DatabaseUser
@ -27,12 +23,8 @@ public function create(Server $server, array $input, array $links = []): Databas
'host' => (isset($input['remote']) && $input['remote']) || isset($input['host']) ? $input['host'] : 'localhost', 'host' => (isset($input['remote']) && $input['remote']) || isset($input['host']) ? $input['host'] : 'localhost',
'databases' => $links, 'databases' => $links,
]); ]);
/** @var Service $service */
$service = $server->database();
/** @var Database $databaseHandler */ /** @var Database $databaseHandler */
$databaseHandler = $service->handler(); $databaseHandler = $server->database()->handler();
$databaseHandler->createUser( $databaseHandler->createUser(
$databaseUser->username, $databaseUser->username,
$databaseUser->password, $databaseUser->password,
@ -49,9 +41,6 @@ public function create(Server $server, array $input, array $links = []): Databas
} }
/** /**
* @param array<string, mixed> $input
* @return array<string, mixed>
*
* @throws ValidationException * @throws ValidationException
*/ */
public static function rules(Server $server, array $input): array public static function rules(Server $server, array $input): array

View File

@ -2,24 +2,14 @@
namespace App\Actions\Database; namespace App\Actions\Database;
use App\Models\Backup;
use App\Models\Database; use App\Models\Database;
use App\Models\Server; use App\Models\Server;
use App\Models\Service;
class DeleteDatabase class DeleteDatabase
{ {
public function delete(Server $server, Database $database): void public function delete(Server $server, Database $database): void
{ {
/** @var Service $service */ $server->database()->handler()->delete($database->name);
$service = $server->database();
/** @var \App\SSH\Services\Database\Database $handler */
$handler = $service->handler();
$handler->delete($database->name);
$database->delete(); $database->delete();
$database->backups()->each(function (Backup $backup): void {
app(ManageBackup::class)->stop($backup);
});
} }
} }

View File

@ -4,18 +4,12 @@
use App\Models\DatabaseUser; use App\Models\DatabaseUser;
use App\Models\Server; use App\Models\Server;
use App\Models\Service;
use App\SSH\Services\Database\Database;
class DeleteDatabaseUser class DeleteDatabaseUser
{ {
public function delete(Server $server, DatabaseUser $databaseUser): void public function delete(Server $server, DatabaseUser $databaseUser): void
{ {
/** @var Service $service */ $server->database()->handler()->deleteUser($databaseUser->username, $databaseUser->host);
$service = $server->database();
/** @var Database $handler */
$handler = $service->handler();
$handler->deleteUser($databaseUser->username, $databaseUser->host);
$databaseUser->delete(); $databaseUser->delete();
} }
} }

View File

@ -5,16 +5,12 @@
use App\Models\Database; use App\Models\Database;
use App\Models\DatabaseUser; use App\Models\DatabaseUser;
use App\Models\Server; use App\Models\Server;
use App\Models\Service;
use Illuminate\Validation\Rule; use Illuminate\Validation\Rule;
use Illuminate\Validation\ValidationException; use Illuminate\Validation\ValidationException;
class LinkUser class LinkUser
{ {
/** /**
* @param array<string, mixed> $input
* @return DatabaseUser $databaseUser
*
* @throws ValidationException * @throws ValidationException
*/ */
public function link(DatabaseUser $databaseUser, array $input): DatabaseUser public function link(DatabaseUser $databaseUser, array $input): DatabaseUser
@ -33,20 +29,14 @@ public function link(DatabaseUser $databaseUser, array $input): DatabaseUser
$databaseUser->databases = $input['databases']; $databaseUser->databases = $input['databases'];
/** @var Service $service */
$service = $databaseUser->server->database();
/** @var \App\SSH\Services\Database\Database $handler */
$handler = $service->handler();
// Unlink the user from all databases // Unlink the user from all databases
$handler->unlink( $databaseUser->server->database()->handler()->unlink(
$databaseUser->username, $databaseUser->username,
$databaseUser->host $databaseUser->host
); );
// Link the user to the selected databases // Link the user to the selected databases
$handler->link( $databaseUser->server->database()->handler()->link(
$databaseUser->username, $databaseUser->username,
$databaseUser->host, $databaseUser->host,
$databaseUser->databases $databaseUser->databases
@ -59,10 +49,6 @@ public function link(DatabaseUser $databaseUser, array $input): DatabaseUser
return $databaseUser; return $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 $input): array
{ {
return [ return [

View File

@ -14,8 +14,6 @@
class ManageBackup class ManageBackup
{ {
/** /**
* @param array<string, mixed> $input
*
* @throws AuthorizationException * @throws AuthorizationException
* @throws ValidationException * @throws ValidationException
*/ */
@ -37,9 +35,6 @@ public function create(Server $server, array $input): Backup
return $backup; return $backup;
} }
/**
* @param array<string, mixed> $input
*/
public function update(Backup $backup, array $input): void public function update(Backup $backup, array $input): void
{ {
$backup->interval = $input['interval'] == 'custom' ? $input['custom_interval'] : $input['interval']; $backup->interval = $input['interval'] == 'custom' ? $input['custom_interval'] : $input['interval'];
@ -52,7 +47,7 @@ public function delete(Backup $backup): void
$backup->status = BackupStatus::DELETING; $backup->status = BackupStatus::DELETING;
$backup->save(); $backup->save();
dispatch(function () use ($backup): void { dispatch(function () use ($backup) {
$files = $backup->files; $files = $backup->files;
foreach ($files as $file) { foreach ($files as $file) {
$file->status = BackupFileStatus::DELETING; $file->status = BackupFileStatus::DELETING;
@ -65,10 +60,6 @@ public function delete(Backup $backup): void
}); });
} }
/**
* @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 $input): array
{ {
$rules = [ $rules = [
@ -100,10 +91,4 @@ public static function rules(Server $server, array $input): array
return $rules; return $rules;
} }
public function stop(Backup $backup): void
{
$backup->status = BackupStatus::STOPPED;
$backup->save();
}
} }

View File

@ -28,7 +28,7 @@ public function delete(BackupFile $file): void
$file->status = BackupFileStatus::DELETING; $file->status = BackupFileStatus::DELETING;
$file->save(); $file->save();
dispatch(function () use ($file): void { dispatch(function () use ($file) {
$file->deleteFile(); $file->deleteFile();
}); });
} }

View File

@ -5,13 +5,9 @@
use App\Enums\BackupFileStatus; use App\Enums\BackupFileStatus;
use App\Models\BackupFile; use App\Models\BackupFile;
use App\Models\Database; use App\Models\Database;
use App\Models\Service;
class RestoreBackup class RestoreBackup
{ {
/**
* @param array<string, mixed> $input
*/
public function restore(BackupFile $backupFile, array $input): void public function restore(BackupFile $backupFile, array $input): void
{ {
/** @var Database $database */ /** @var Database $database */
@ -20,24 +16,19 @@ public function restore(BackupFile $backupFile, array $input): void
$backupFile->restored_to = $database->name; $backupFile->restored_to = $database->name;
$backupFile->save(); $backupFile->save();
dispatch(function () use ($backupFile, $database): void { dispatch(function () use ($backupFile, $database) {
/** @var Service $service */
$service = $database->server->database();
/** @var \App\SSH\Services\Database\Database $databaseHandler */ /** @var \App\SSH\Services\Database\Database $databaseHandler */
$databaseHandler = $service->handler(); $databaseHandler = $database->server->database()->handler();
$databaseHandler->restoreBackup($backupFile, $database->name); $databaseHandler->restoreBackup($backupFile, $database->name);
$backupFile->status = BackupFileStatus::RESTORED; $backupFile->status = BackupFileStatus::RESTORED;
$backupFile->restored_at = now(); $backupFile->restored_at = now();
$backupFile->save(); $backupFile->save();
})->catch(function () use ($backupFile): void { })->catch(function () use ($backupFile) {
$backupFile->status = BackupFileStatus::RESTORE_FAILED; $backupFile->status = BackupFileStatus::RESTORE_FAILED;
$backupFile->save(); $backupFile->save();
})->onConnection('ssh'); })->onConnection('ssh');
} }
/**
* @return array<string, array<string>>
*/
public static function rules(): array public static function rules(): array
{ {
return [ return [

View File

@ -6,7 +6,6 @@
use App\Enums\BackupStatus; use App\Enums\BackupStatus;
use App\Models\Backup; use App\Models\Backup;
use App\Models\BackupFile; use App\Models\BackupFile;
use App\Models\Service;
use App\SSH\Services\Database\Database; use App\SSH\Services\Database\Database;
use Illuminate\Support\Str; use Illuminate\Support\Str;
@ -21,11 +20,9 @@ public function run(Backup $backup): BackupFile
]); ]);
$file->save(); $file->save();
dispatch(function () use ($file, $backup): void { dispatch(function () use ($file, $backup) {
/** @var Service $service */
$service = $backup->server->database();
/** @var Database $databaseHandler */ /** @var Database $databaseHandler */
$databaseHandler = $service->handler(); $databaseHandler = $file->backup->server->database()->handler();
$databaseHandler->runBackup($file); $databaseHandler->runBackup($file);
$file->status = BackupFileStatus::CREATED; $file->status = BackupFileStatus::CREATED;
$file->save(); $file->save();
@ -34,7 +31,7 @@ public function run(Backup $backup): BackupFile
$backup->status = BackupStatus::RUNNING; $backup->status = BackupStatus::RUNNING;
$backup->save(); $backup->save();
} }
})->catch(function () use ($file, $backup): void { })->catch(function () use ($file, $backup) {
$backup->status = BackupStatus::FAILED; $backup->status = BackupStatus::FAILED;
$backup->save(); $backup->save();
$file->status = BackupFileStatus::FAILED; $file->status = BackupFileStatus::FAILED;

View File

@ -1,50 +0,0 @@
<?php
namespace App\Actions\Database;
use App\Enums\DatabaseUserStatus;
use App\Models\DatabaseUser;
use App\Models\Server;
use App\SSH\Services\Database\Database;
class SyncDatabaseUsers
{
public function sync(Server $server): void
{
$service = $server->database();
if (! $service instanceof \App\Models\Service) {
return;
}
/** @var Database $handler */
$handler = $service->handler();
$this->updateUsers($server, $handler);
}
private function updateUsers(Server $server, Database $handler): void
{
$users = $handler->getUsers();
foreach ($users as $user) {
$databases = $user[2] != 'NULL' ? explode(',', $user[2]) : [];
/** @var ?DatabaseUser $databaseUser */
$databaseUser = $server->databaseUsers()
->where('username', $user[0])
->first();
if ($databaseUser === null) {
$server->databaseUsers()->create([
'username' => $user[0],
'host' => $user[1],
'databases' => $databases,
'status' => DatabaseUserStatus::READY,
]);
continue;
}
$databaseUser->databases = $databases;
$databaseUser->save();
}
}
}

View File

@ -1,63 +0,0 @@
<?php
namespace App\Actions\Database;
use App\Enums\DatabaseStatus;
use App\Models\Server;
use App\Models\Service;
use App\SSH\Services\Database\Database;
class SyncDatabases
{
public function sync(Server $server): void
{
$service = $server->database();
if (! $service instanceof \App\Models\Service) {
return;
}
/** @var Database $handler */
$handler = $service->handler();
$this->updateCharsets($service, $handler);
$this->updateDatabases($server, $handler);
}
private function updateCharsets(Service $service, Database $handler): void
{
$data = $service->type_data ?? [];
$charsets = $handler->getCharsets();
$data['charsets'] = $charsets['charsets'] ?? [];
$data['defaultCharset'] = $charsets['defaultCharset'] ?? '';
$service->type_data = $data;
$service->save();
}
private function updateDatabases(Server $server, Database $handler): void
{
$databases = $handler->getDatabases();
foreach ($databases as $database) {
/** @var ?\App\Models\Database $db */
$db = $server->databases()
->where('name', $database[0])
->first();
if ($db === null) {
$server->databases()->create([
'name' => $database[0],
'collation' => $database[2],
'charset' => $database[1],
'status' => DatabaseStatus::READY,
]);
continue;
}
if ($db->collation !== $database[2] || $db->charset !== $database[1]) {
$db->update([
'collation' => $database[2],
'charset' => $database[1],
]);
}
}
}
}

View File

@ -11,8 +11,6 @@
class FetchFiles class FetchFiles
{ {
/** /**
* @param array<string, mixed> $input
*
* @throws SSHError * @throws SSHError
*/ */
public function fetch(User $user, Server $server, array $input): void public function fetch(User $user, Server $server, array $input): void
@ -26,9 +24,6 @@ public function fetch(User $user, Server $server, array $input): void
); );
} }
/**
* @return array<string, array<string>>
*/
public static function rules(Server $server): array public static function rules(Server $server): array
{ {
return [ return [

View File

@ -5,16 +5,10 @@
use App\Enums\FirewallRuleStatus; use App\Enums\FirewallRuleStatus;
use App\Models\FirewallRule; use App\Models\FirewallRule;
use App\Models\Server; use App\Models\Server;
use App\Models\Service;
use App\SSH\Services\Firewall\Firewall; use App\SSH\Services\Firewall\Firewall;
use Exception;
class ManageRule class ManageRule
{ {
/**
* @param array<string, mixed> $input
* @return FirewallRule $rule
*/
public function create(Server $server, array $input): FirewallRule public function create(Server $server, array $input): FirewallRule
{ {
$sourceAny = $input['source_any'] ?? empty($input['source'] ?? null); $sourceAny = $input['source_any'] ?? empty($input['source'] ?? null);
@ -36,10 +30,6 @@ public function create(Server $server, array $input): FirewallRule
return $rule; return $rule;
} }
/**
* @param array<string, mixed> $input
* @return FirewallRule $rule
*/
public function update(FirewallRule $rule, array $input): FirewallRule public function update(FirewallRule $rule, array $input): FirewallRule
{ {
$sourceAny = $input['source_any'] ?? empty($input['source'] ?? null); $sourceAny = $input['source_any'] ?? empty($input['source'] ?? null);
@ -66,20 +56,18 @@ public function delete(FirewallRule $rule): void
dispatch(fn () => $this->applyRule($rule)); dispatch(fn () => $this->applyRule($rule));
} }
protected function applyRule(FirewallRule $rule): void protected function applyRule($rule): void
{ {
try { try {
/** @var Service $service */
$service = $rule->server->firewall();
/** @var Firewall $handler */ /** @var Firewall $handler */
$handler = $service->handler(); $handler = $rule->server->firewall()->handler();
$handler->applyRules(); $handler->applyRules();
} catch (Exception) { } catch (\Exception $e) {
$rule->server->firewallRules() $rule->server->firewallRules()
->where('status', '!=', FirewallRuleStatus::READY) ->where('status', '!=', FirewallRuleStatus::READY)
->update(['status' => FirewallRuleStatus::FAILED]); ->update(['status' => FirewallRuleStatus::FAILED]);
return; throw $e;
} }
if ($rule->status === FirewallRuleStatus::DELETING) { if ($rule->status === FirewallRuleStatus::DELETING) {
@ -92,9 +80,6 @@ protected function applyRule(FirewallRule $rule): void
$rule->save(); $rule->save();
} }
/**
* @return array<string, array<string>>
*/
public static function rules(): array public static function rules(): array
{ {
return [ return [

View File

@ -11,10 +11,6 @@
class GetMetrics class GetMetrics
{ {
/**
* @param array<string, mixed> $input
* @return Collection<int, mixed>
*/
public function filter(Server $server, array $input): Collection public function filter(Server $server, array $input): Collection
{ {
if (isset($input['from']) && isset($input['to']) && $input['from'] === $input['to']) { if (isset($input['from']) && isset($input['to']) && $input['from'] === $input['to']) {
@ -36,9 +32,6 @@ public function filter(Server $server, array $input): Collection
); );
} }
/**
* @return Collection<int, mixed>
*/
private function metrics( private function metrics(
Server $server, Server $server,
Carbon $fromDate, Carbon $fromDate,
@ -64,16 +57,13 @@ private function metrics(
->groupByRaw('date_interval') ->groupByRaw('date_interval')
->orderBy('date_interval') ->orderBy('date_interval')
->get() ->get()
->map(function ($item): \stdClass { ->map(function ($item) {
$item->date = Carbon::parse($item->date)->format('Y-m-d H:i'); $item->date = Carbon::parse($item->date)->format('Y-m-d H:i');
return $item; return $item;
}); });
} }
/**
* @param array<string, mixed> $input
*/
private function getFromDate(array $input): Carbon private function getFromDate(array $input): Carbon
{ {
if ($input['period'] === 'custom') { if ($input['period'] === 'custom') {
@ -83,9 +73,6 @@ private function getFromDate(array $input): Carbon
return Carbon::parse('-'.convert_time_format($input['period'])); return Carbon::parse('-'.convert_time_format($input['period']));
} }
/**
* @param array<string, mixed> $input
*/
private function getToDate(array $input): Carbon private function getToDate(array $input): Carbon
{ {
if ($input['period'] === 'custom') { if ($input['period'] === 'custom') {
@ -95,9 +82,6 @@ private function getToDate(array $input): Carbon
return Carbon::now(); return Carbon::now();
} }
/**
* @param array<string, mixed> $input
*/
private function getInterval(array $input): Expression private function getInterval(array $input): Expression
{ {
if ($input['period'] === 'custom') { if ($input['period'] === 'custom') {
@ -123,10 +107,6 @@ private function getInterval(array $input): Expression
return DB::raw("strftime('%Y-%m-%d 00:00:00', created_at) as date_interval"); return DB::raw("strftime('%Y-%m-%d 00:00:00', created_at) as date_interval");
} }
/**
* @param array<string, mixed> $input
* @return array<string, array<string>>
*/
public static function rules(array $input): array public static function rules(array $input): array
{ {
$rules = [ $rules = [

View File

@ -3,29 +3,19 @@
namespace App\Actions\Monitoring; namespace App\Actions\Monitoring;
use App\Models\Server; use App\Models\Server;
use App\Models\Service;
use App\SSH\Services\ServiceInterface;
class UpdateMetricSettings class UpdateMetricSettings
{ {
/**
* @param array<string, mixed> $input
*/
public function update(Server $server, array $input): void public function update(Server $server, array $input): void
{ {
/** @var Service $service */
$service = $server->monitoring(); $service = $server->monitoring();
/** @var ServiceInterface $handler */
$handler = $service->handler(); $data = $service->handler()->data();
$data = $handler->data();
$data['data_retention'] = $input['data_retention']; $data['data_retention'] = $input['data_retention'];
$service->type_data = $data; $service->type_data = $data;
$service->save(); $service->save();
} }
/**
* @return array<string, array<string>>
*/
public static function rules(): array public static function rules(): array
{ {
return [ return [

View File

@ -3,38 +3,24 @@
namespace App\Actions\NodeJS; namespace App\Actions\NodeJS;
use App\Enums\ServiceStatus; use App\Enums\ServiceStatus;
use App\Exceptions\SSHError;
use App\Models\Server; use App\Models\Server;
use App\Models\Service;
use App\SSH\Services\NodeJS\NodeJS; use App\SSH\Services\NodeJS\NodeJS;
use Illuminate\Validation\ValidationException; use Illuminate\Validation\ValidationException;
class ChangeDefaultCli class ChangeDefaultCli
{ {
/**
* @param array<string, mixed> $input
*
* @throws ValidationException
* @throws SSHError
*/
public function change(Server $server, array $input): void public function change(Server $server, array $input): void
{ {
$this->validate($server, $input); $this->validate($server, $input);
/** @var Service $service */
$service = $server->nodejs($input['version']); $service = $server->nodejs($input['version']);
/** @var NodeJS $handler */ /** @var NodeJS $handler */
$handler = $service->handler(); $handler = $service->handler();
$handler->setDefaultCli(); $handler->setDefaultCli();
$server->defaultService('nodejs')?->update(['is_default' => 0]); $server->defaultService('nodejs')->update(['is_default' => 0]);
$service->update(['is_default' => 1]); $service->update(['is_default' => 1]);
$service->update(['status' => ServiceStatus::READY]); $service->update(['status' => ServiceStatus::READY]);
} }
/**
* @param array<string, mixed> $input
*
* @throws ValidationException
*/
public function validate(Server $server, array $input): void public function validate(Server $server, array $input): void
{ {
if (! isset($input['version']) || ! in_array($input['version'], $server->installedNodejsVersions())) { if (! isset($input['version']) || ! in_array($input['version'], $server->installedNodejsVersions())) {

View File

@ -10,9 +10,6 @@
class InstallNewNodeJsVersion class InstallNewNodeJsVersion
{ {
/**
* @param array<string, mixed> $input
*/
public function install(Server $server, array $input): void public function install(Server $server, array $input): void
{ {
$nodejs = new Service([ $nodejs = new Service([
@ -26,18 +23,15 @@ public function install(Server $server, array $input): void
]); ]);
$nodejs->save(); $nodejs->save();
dispatch(function () use ($nodejs): void { dispatch(function () use ($nodejs) {
$nodejs->handler()->install(); $nodejs->handler()->install();
$nodejs->status = ServiceStatus::READY; $nodejs->status = ServiceStatus::READY;
$nodejs->save(); $nodejs->save();
})->catch(function () use ($nodejs): void { })->catch(function () use ($nodejs) {
$nodejs->delete(); $nodejs->delete();
})->onConnection('ssh'); })->onConnection('ssh');
} }
/**
* @return array<string, array<string>>
*/
public static function rules(Server $server): array public static function rules(Server $server): array
{ {
return [ return [

View File

@ -10,11 +10,6 @@
class UninstallNodeJS class UninstallNodeJS
{ {
/**
* @param array<string, mixed> $input
*
* @throws ValidationException
*/
public function uninstall(Server $server, array $input): void public function uninstall(Server $server, array $input): void
{ {
$this->validate($server, $input); $this->validate($server, $input);
@ -24,18 +19,16 @@ public function uninstall(Server $server, array $input): void
$nodejs->status = ServiceStatus::UNINSTALLING; $nodejs->status = ServiceStatus::UNINSTALLING;
$nodejs->save(); $nodejs->save();
dispatch(function () use ($nodejs): void { dispatch(function () use ($nodejs) {
$nodejs->handler()->uninstall(); $nodejs->handler()->uninstall();
$nodejs->delete(); $nodejs->delete();
})->catch(function () use ($nodejs): void { })->catch(function () use ($nodejs) {
$nodejs->status = ServiceStatus::FAILED; $nodejs->status = ServiceStatus::FAILED;
$nodejs->save(); $nodejs->save();
})->onConnection('ssh'); })->onConnection('ssh');
} }
/** /**
* @param array<string, mixed> $input
*
* @throws ValidationException * @throws ValidationException
*/ */
private function validate(Server $server, array $input): void private function validate(Server $server, array $input): void

View File

@ -11,9 +11,8 @@
class AddChannel class AddChannel
{ {
/** /**
* @param array<string, mixed> $input
*
* @throws ValidationException * @throws ValidationException
* @throws Exception
*/ */
public function add(User $user, array $input): void public function add(User $user, array $input): void
{ {
@ -43,19 +42,13 @@ public function add(User $user, array $input): void
} catch (Exception $e) { } catch (Exception $e) {
$channel->delete(); $channel->delete();
throw ValidationException::withMessages([ throw $e;
'provider' => $e->getMessage(),
]);
} }
$channel->connected = true; $channel->connected = true;
$channel->save(); $channel->save();
} }
/**
* @param array<string, mixed> $input
* @return array<string, mixed>
*/
public static function rules(array $input): array public static function rules(array $input): array
{ {
$rules = [ $rules = [
@ -66,13 +59,9 @@ public static function rules(array $input): array
'label' => 'required', 'label' => 'required',
]; ];
return array_merge($rules, self::providerRules($input)); return array_merge($rules, static::providerRules($input));
} }
/**
* @param array<string, mixed> $input
* @return array<string, array<string>>
*/
private static function providerRules(array $input): array private static function providerRules(array $input): array
{ {
if (! isset($input['provider'])) { if (! isset($input['provider'])) {

View File

@ -7,9 +7,6 @@
class EditChannel class EditChannel
{ {
/**
* @param array<string, mixed> $input
*/
public function edit(NotificationChannel $notificationChannel, User $user, array $input): void public function edit(NotificationChannel $notificationChannel, User $user, array $input): void
{ {
$notificationChannel->fill([ $notificationChannel->fill([
@ -19,10 +16,6 @@ public function edit(NotificationChannel $notificationChannel, User $user, array
$notificationChannel->save(); $notificationChannel->save();
} }
/**
* @param array<string, mixed> $input
* @return array<string, string>
*/
public static function rules(array $input): array public static function rules(array $input): array
{ {
return [ return [

View File

@ -3,37 +3,24 @@
namespace App\Actions\PHP; namespace App\Actions\PHP;
use App\Enums\ServiceStatus; use App\Enums\ServiceStatus;
use App\Exceptions\SSHError;
use App\Models\Server; use App\Models\Server;
use App\Models\Service;
use App\SSH\Services\PHP\PHP; use App\SSH\Services\PHP\PHP;
use Illuminate\Validation\ValidationException; use Illuminate\Validation\ValidationException;
class ChangeDefaultCli class ChangeDefaultCli
{ {
/**
* @param array<string, mixed> $input
*
* @throws SSHError
*/
public function change(Server $server, array $input): void public function change(Server $server, array $input): void
{ {
$this->validate($server, $input); $this->validate($server, $input);
/** @var Service $service */
$service = $server->php($input['version']); $service = $server->php($input['version']);
/** @var PHP $handler */ /** @var PHP $handler */
$handler = $service->handler(); $handler = $service->handler();
$handler->setDefaultCli(); $handler->setDefaultCli();
$server->defaultService('php')?->update(['is_default' => 0]); $server->defaultService('php')->update(['is_default' => 0]);
$service->update(['is_default' => 1]); $service->update(['is_default' => 1]);
$service->update(['status' => ServiceStatus::READY]); $service->update(['status' => ServiceStatus::READY]);
} }
/**
* @param array<string, mixed> $input
*
* @throws ValidationException
*/
public function validate(Server $server, array $input): void public function validate(Server $server, array $input): void
{ {
if (! isset($input['version']) || ! in_array($input['version'], $server->installedPHPVersions())) { if (! isset($input['version']) || ! in_array($input['version'], $server->installedPHPVersions())) {

View File

@ -4,25 +4,17 @@
use App\Enums\PHPIniType; use App\Enums\PHPIniType;
use App\Models\Server; use App\Models\Server;
use App\Models\Service;
use App\SSH\Services\PHP\PHP; use App\SSH\Services\PHP\PHP;
use Illuminate\Support\Facades\Validator; use Illuminate\Support\Facades\Validator;
use Illuminate\Validation\Rule; use Illuminate\Validation\Rule;
use Illuminate\Validation\ValidationException; use Illuminate\Validation\ValidationException;
use Throwable;
class GetPHPIni class GetPHPIni
{ {
/**
* @param array<string, mixed> $input
*
* @throws ValidationException
*/
public function getIni(Server $server, array $input): string public function getIni(Server $server, array $input): string
{ {
$this->validate($server, $input); $this->validate($server, $input);
/** @var Service $php */
$php = $server->php($input['version']); $php = $server->php($input['version']);
try { try {
@ -30,18 +22,13 @@ public function getIni(Server $server, array $input): string
$handler = $php->handler(); $handler = $php->handler();
return $handler->getPHPIni($input['type']); return $handler->getPHPIni($input['type']);
} catch (Throwable $e) { } catch (\Throwable $e) {
throw ValidationException::withMessages( throw ValidationException::withMessages(
['ini' => $e->getMessage()] ['ini' => $e->getMessage()]
); );
} }
} }
/**
* @param array<string, mixed> $input
*
* @throws ValidationException
*/
public function validate(Server $server, array $input): void public function validate(Server $server, array $input): void
{ {
Validator::make($input, [ Validator::make($input, [

View File

@ -10,9 +10,6 @@
class InstallNewPHP class InstallNewPHP
{ {
/**
* @param array<string, mixed> $input
*/
public function install(Server $server, array $input): void public function install(Server $server, array $input): void
{ {
$php = new Service([ $php = new Service([
@ -29,18 +26,15 @@ public function install(Server $server, array $input): void
]); ]);
$php->save(); $php->save();
dispatch(function () use ($php): void { dispatch(function () use ($php) {
$php->handler()->install(); $php->handler()->install();
$php->status = ServiceStatus::READY; $php->status = ServiceStatus::READY;
$php->save(); $php->save();
})->catch(function () use ($php): void { })->catch(function () use ($php) {
$php->delete(); $php->delete();
})->onConnection('ssh'); })->onConnection('ssh');
} }
/**
* @return array<string, array<string>>
*/
public static function rules(Server $server): array public static function rules(Server $server): array
{ {
return [ return [

View File

@ -2,6 +2,7 @@
namespace App\Actions\PHP; namespace App\Actions\PHP;
use App\Exceptions\SSHCommandError;
use App\Models\Server; use App\Models\Server;
use App\Models\Service; use App\Models\Service;
use App\SSH\Services\PHP\PHP; use App\SSH\Services\PHP\PHP;
@ -10,11 +11,6 @@
class InstallPHPExtension class InstallPHPExtension
{ {
/**
* @param array<string, mixed> $input
*
* @throws ValidationException
*/
public function install(Server $server, array $input): Service public function install(Server $server, array $input): Service
{ {
/** @var Service $service */ /** @var Service $service */
@ -27,17 +23,20 @@ public function install(Server $server, array $input): Service
} }
$typeData = $service->type_data; $typeData = $service->type_data;
$typeData['extensions'] ??= []; $typeData['extensions'] = $typeData['extensions'] ?? [];
$typeData['extensions'][] = $input['extension']; $typeData['extensions'][] = $input['extension'];
$service->type_data = $typeData; $service->type_data = $typeData;
$service->save(); $service->save();
dispatch( dispatch(
function () use ($service, $input): void { /**
* @throws SSHCommandError
*/
function () use ($service, $input) {
/** @var PHP $handler */ /** @var PHP $handler */
$handler = $service->handler(); $handler = $service->handler();
$handler->installExtension($input['extension']); $handler->installExtension($input['extension']);
})->catch(function () use ($service, $input): void { })->catch(function () use ($service, $input) {
$service->refresh(); $service->refresh();
$typeData = $service->type_data; $typeData = $service->type_data;
$typeData['extensions'] = array_values(array_diff($typeData['extensions'], [$input['extension']])); $typeData['extensions'] = array_values(array_diff($typeData['extensions'], [$input['extension']]));
@ -48,9 +47,6 @@ function () use ($service, $input): void {
return $service; return $service;
} }
/**
* @return array<string, array<string>>
*/
public static function rules(Server $server): array public static function rules(Server $server): array
{ {
return [ return [

View File

@ -10,11 +10,6 @@
class UninstallPHP class UninstallPHP
{ {
/**
* @param array<string, mixed> $input
*
* @throws ValidationException
*/
public function uninstall(Server $server, array $input): void public function uninstall(Server $server, array $input): void
{ {
$this->validate($server, $input); $this->validate($server, $input);
@ -24,18 +19,16 @@ public function uninstall(Server $server, array $input): void
$php->status = ServiceStatus::UNINSTALLING; $php->status = ServiceStatus::UNINSTALLING;
$php->save(); $php->save();
dispatch(function () use ($php): void { dispatch(function () use ($php) {
$php->handler()->uninstall(); $php->handler()->uninstall();
$php->delete(); $php->delete();
})->catch(function () use ($php): void { })->catch(function () use ($php) {
$php->status = ServiceStatus::FAILED; $php->status = ServiceStatus::FAILED;
$php->save(); $php->save();
})->onConnection('ssh'); })->onConnection('ssh');
} }
/** /**
* @param array<string, mixed> $input
*
* @throws ValidationException * @throws ValidationException
*/ */
private function validate(Server $server, array $input): void private function validate(Server $server, array $input): void

View File

@ -4,7 +4,6 @@
use App\Enums\PHPIniType; use App\Enums\PHPIniType;
use App\Models\Server; use App\Models\Server;
use App\Models\Service;
use Illuminate\Filesystem\FilesystemAdapter; use Illuminate\Filesystem\FilesystemAdapter;
use Illuminate\Support\Facades\Storage; use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Str; use Illuminate\Support\Str;
@ -15,13 +14,10 @@
class UpdatePHPIni class UpdatePHPIni
{ {
/** /**
* @param array<string, mixed> $input
*
* @throws ValidationException * @throws ValidationException
*/ */
public function update(Server $server, array $input): void public function update(Server $server, array $input): void
{ {
/** @var Service $service */
$service = $server->php($input['version']); $service = $server->php($input['version']);
$tmpName = Str::random(10).strtotime('now'); $tmpName = Str::random(10).strtotime('now');
@ -52,9 +48,6 @@ private function deleteTempFile(string $name): void
} }
} }
/**
* @return array<string, array<string>>
*/
public static function rules(Server $server): array public static function rules(Server $server): array
{ {
return [ return [

View File

@ -9,9 +9,6 @@
class AddUser class AddUser
{ {
/**
* @param array<string, mixed> $input
*/
public function add(Project $project, array $input): void public function add(Project $project, array $input): void
{ {
/** @var User $user */ /** @var User $user */
@ -21,16 +18,13 @@ public function add(Project $project, array $input): void
$project->users()->attach($user); $project->users()->attach($user);
} }
/**
* @return array<string, array<string>>
*/
public static function rules(Project $project): array public static function rules(Project $project): array
{ {
return [ return [
'user' => [ 'user' => [
'required', 'required',
Rule::exists('users', 'id'), Rule::exists('users', 'id'),
Rule::unique('user_project', 'user_id')->where(function (Builder $query) use ($project): void { Rule::unique('user_project', 'user_id')->where(function (Builder $query) use ($project) {
$query->where('project_id', $project->id); $query->where('project_id', $project->id);
}), }),
], ],

View File

@ -8,13 +8,10 @@
class CreateProject class CreateProject
{ {
/**
* @param array<string, mixed> $input
*/
public function create(User $user, array $input): Project public function create(User $user, array $input): Project
{ {
if (isset($input['name'])) { if (isset($input['name'])) {
$input['name'] = strtolower((string) $input['name']); $input['name'] = strtolower($input['name']);
} }
$this->validate($input); $this->validate($input);
@ -30,9 +27,6 @@ public function create(User $user, array $input): Project
return $project; return $project;
} }
/**
* @return array<string, array<string>>
*/
public static function rules(): array public static function rules(): array
{ {
return [ return [
@ -46,9 +40,6 @@ public static function rules(): array
]; ];
} }
/**
* @param array<string, mixed> $input
*/
private function validate(array $input): void private function validate(array $input): void
{ {
Validator::make($input, self::rules())->validate(); Validator::make($input, self::rules())->validate();

View File

@ -8,13 +8,10 @@
class UpdateProject class UpdateProject
{ {
/**
* @param array<string, mixed> $input
*/
public function update(Project $project, array $input): Project public function update(Project $project, array $input): Project
{ {
if (isset($input['name'])) { if (isset($input['name'])) {
$input['name'] = strtolower((string) $input['name']); $input['name'] = strtolower($input['name']);
} }
$this->validate($project, $input); $this->validate($project, $input);
@ -26,9 +23,6 @@ public function update(Project $project, array $input): Project
return $project; return $project;
} }
/**
* @return array<string, array<string>>
*/
public static function rules(Project $project): array public static function rules(Project $project): array
{ {
return [ return [
@ -42,9 +36,6 @@ public static function rules(Project $project): array
]; ];
} }
/**
* @param array<string, mixed> $input
*/
private function validate(Project $project, array $input): void private function validate(Project $project, array $input): void
{ {
Validator::make($input, self::rules($project))->validate(); Validator::make($input, self::rules($project))->validate();

View File

@ -0,0 +1,72 @@
<?php
namespace App\Actions\Queue;
use App\Enums\QueueStatus;
use App\Models\Queue;
use App\Models\Server;
use App\Models\Site;
use App\SSH\Services\ProcessManager\ProcessManager;
use Illuminate\Validation\Rule;
use Illuminate\Validation\ValidationException;
class CreateQueue
{
/**
* @throws ValidationException
*/
public function create(mixed $queueable, array $input): void
{
$queue = new Queue([
'server_id' => $queueable instanceof Server ? $queueable->id : $queueable->server_id,
'site_id' => $queueable instanceof Site ? $queueable->id : null,
'command' => $input['command'],
'user' => $input['user'],
'auto_start' => $input['auto_start'] ? 1 : 0,
'auto_restart' => $input['auto_restart'] ? 1 : 0,
'numprocs' => $input['numprocs'],
'status' => QueueStatus::CREATING,
]);
$queue->save();
dispatch(function () use ($queue) {
/** @var ProcessManager $processManager */
$processManager = $queue->server->processManager()->handler();
$processManager->create(
$queue->id,
$queue->command,
$queue->user,
$queue->auto_start,
$queue->auto_restart,
$queue->numprocs,
$queue->getLogFile(),
$queue->site_id
);
$queue->status = QueueStatus::RUNNING;
$queue->save();
})->catch(function () use ($queue) {
$queue->delete();
})->onConnection('ssh');
}
public static function rules(Site $site): array
{
return [
'command' => [
'required',
],
'user' => [
'required',
Rule::in([
'root',
$site->user,
]),
],
'numprocs' => [
'required',
'numeric',
'min:1',
],
];
}
}

View File

@ -0,0 +1,13 @@
<?php
namespace App\Actions\Queue;
use App\Models\Queue;
class DeleteQueue
{
public function delete(Queue $queue): void
{
$queue->delete();
}
}

View File

@ -0,0 +1,72 @@
<?php
namespace App\Actions\Queue;
use App\Enums\QueueStatus;
use App\Models\Queue;
use App\Models\Server;
use App\SSH\Services\ProcessManager\ProcessManager;
use Illuminate\Validation\Rule;
use Illuminate\Validation\ValidationException;
class EditQueue
{
/**
* @throws ValidationException
*/
public function edit(Queue $queue, array $input): void
{
$queue->fill([
'command' => $input['command'],
'user' => $input['user'],
'auto_start' => $input['auto_start'] ? 1 : 0,
'auto_restart' => $input['auto_restart'] ? 1 : 0,
'numprocs' => $input['numprocs'],
'status' => QueueStatus::RESTARTING,
]);
$queue->save();
dispatch(function () use ($queue) {
/** @var ProcessManager $processManager */
$processManager = $queue->server->processManager()->handler();
$processManager->delete($queue->id, $queue->site_id);
$processManager->create(
$queue->id,
$queue->command,
$queue->user,
$queue->auto_start,
$queue->auto_restart,
$queue->numprocs,
$queue->getLogFile(),
$queue->site_id
);
$queue->status = QueueStatus::RUNNING;
$queue->save();
})->catch(function () use ($queue) {
$queue->status = QueueStatus::FAILED;
$queue->save();
})->onConnection('ssh');
}
public static function rules(Server $server): array
{
return [
'command' => [
'required',
],
'user' => [
'required',
Rule::in([
'root',
$server->ssh_user,
]),
],
'numprocs' => [
'required',
'numeric',
'min:1',
],
];
}
}

View File

@ -0,0 +1,13 @@
<?php
namespace App\Actions\Queue;
use App\Models\Queue;
class GetQueueLogs
{
public function getLogs(Queue $queue): string
{
return $queue->server->processManager()->handler()->getLogs($queue->user, $queue->getLogFile());
}
}

View File

@ -0,0 +1,42 @@
<?php
namespace App\Actions\Queue;
use App\Enums\QueueStatus;
use App\Models\Queue;
class ManageQueue
{
public function start(Queue $queue): void
{
$queue->status = QueueStatus::STARTING;
$queue->save();
dispatch(function () use ($queue) {
$queue->server->processManager()->handler()->start($queue->id, $queue->site_id);
$queue->status = QueueStatus::RUNNING;
$queue->save();
})->onConnection('ssh');
}
public function stop(Queue $queue): void
{
$queue->status = QueueStatus::STOPPING;
$queue->save();
dispatch(function () use ($queue) {
$queue->server->processManager()->handler()->stop($queue->id, $queue->site_id);
$queue->status = QueueStatus::STOPPED;
$queue->save();
})->onConnection('ssh');
}
public function restart(Queue $queue): void
{
$queue->status = QueueStatus::RESTARTING;
$queue->save();
dispatch(function () use ($queue) {
$queue->server->processManager()->handler()->restart($queue->id, $queue->site_id);
$queue->status = QueueStatus::RUNNING;
$queue->save();
})->onConnection('ssh');
}
}

View File

@ -1,75 +0,0 @@
<?php
namespace App\Actions\Redirect;
use App\Enums\RedirectStatus;
use App\Models\Redirect;
use App\Models\Service;
use App\Models\Site;
use App\SSH\Services\Webserver\Webserver;
use Illuminate\Validation\Rule;
class CreateRedirect
{
/**
* @param array<string, mixed> $input
*/
public function create(Site $site, array $input): Redirect
{
$redirect = new Redirect;
$redirect->site_id = $site->id;
$redirect->from = $input['from'];
$redirect->to = $input['to'];
$redirect->mode = $input['mode'];
$redirect->status = RedirectStatus::CREATING;
$redirect->save();
dispatch(function () use ($site, $redirect): void {
/** @var Service $service */
$service = $site->server->webserver();
/** @var Webserver $webserver */
$webserver = $service->handler();
$webserver->updateVHost($site);
$redirect->status = RedirectStatus::READY;
$redirect->save();
})
->catch(function () use ($redirect): void {
$redirect->status = RedirectStatus::FAILED;
$redirect->save();
})
->onConnection('ssh');
return $redirect->refresh();
}
/**
* @return array<string, array<string>>
*/
public static function rules(Site $site): array
{
return [
'from' => [
'required',
'string',
'max:255',
'not_regex:/^http(s)?:\/\//',
Rule::unique('redirects', 'from')->where('site_id', $site->id),
],
'to' => [
'required',
'url:http,https',
],
'mode' => [
'required',
'integer',
Rule::in([
301,
302,
307,
308,
]),
],
];
}
}

View File

@ -1,30 +0,0 @@
<?php
namespace App\Actions\Redirect;
use App\Enums\RedirectStatus;
use App\Models\Redirect;
use App\Models\Service;
use App\Models\Site;
use App\SSH\Services\Webserver\Webserver;
class DeleteRedirect
{
public function delete(Site $site, Redirect $redirect): void
{
$redirect->status = RedirectStatus::DELETING;
$redirect->save();
dispatch(function () use ($site, $redirect): void {
/** @var Service $service */
$service = $site->server->webserver();
/** @var Webserver $webserver */
$webserver = $service->handler();
$webserver->updateVHost($site);
$redirect->delete();
})->catch(function () use ($redirect): void {
$redirect->status = RedirectStatus::FAILED;
$redirect->save();
})->onConnection('ssh');
}
}

View File

@ -5,7 +5,6 @@
use App\Enums\SslStatus; use App\Enums\SslStatus;
use App\Enums\SslType; use App\Enums\SslType;
use App\Models\ServerLog; use App\Models\ServerLog;
use App\Models\Service;
use App\Models\Site; use App\Models\Site;
use App\Models\Ssl; use App\Models\Ssl;
use App\SSH\Services\Webserver\Webserver; use App\SSH\Services\Webserver\Webserver;
@ -15,8 +14,6 @@
class CreateSSL class CreateSSL
{ {
/** /**
* @param array<string, mixed> $input
*
* @throws ValidationException * @throws ValidationException
*/ */
public function create(Site $site, array $input): void public function create(Site $site, array $input): void
@ -43,25 +40,19 @@ public function create(Site $site, array $input): void
$ssl->log_id = ServerLog::log($site->server, 'create-ssl', '', $site)->id; $ssl->log_id = ServerLog::log($site->server, 'create-ssl', '', $site)->id;
$ssl->save(); $ssl->save();
dispatch(function () use ($site, $ssl): void { dispatch(function () use ($site, $ssl) {
/** @var Service $service */
$service = $site->server->webserver();
/** @var Webserver $webserver */ /** @var Webserver $webserver */
$webserver = $service->handler(); $webserver = $site->server->webserver()->handler();
$webserver->setupSSL($ssl); $webserver->setupSSL($ssl);
$ssl->status = SslStatus::CREATED; $ssl->status = SslStatus::CREATED;
$ssl->save(); $ssl->save();
$webserver->updateVHost($site); $webserver->updateVHost($site);
})->catch(function () use ($ssl): void { })->catch(function () use ($ssl) {
$ssl->status = SslStatus::FAILED; $ssl->status = SslStatus::FAILED;
$ssl->save(); $ssl->save();
})->onConnection('ssh'); })->onConnection('ssh');
} }
/**
* @param array<string, mixed> $input
* @return array<string, mixed>
*/
public static function rules(array $input): array public static function rules(array $input): array
{ {
$rules = [ $rules = [

View File

@ -3,7 +3,6 @@
namespace App\Actions\SSL; namespace App\Actions\SSL;
use App\Enums\SslStatus; use App\Enums\SslStatus;
use App\Models\Service;
use App\Models\Ssl; use App\Models\Ssl;
use App\SSH\Services\Webserver\Webserver; use App\SSH\Services\Webserver\Webserver;
@ -13,10 +12,8 @@ public function delete(Ssl $ssl): void
{ {
$ssl->status = SslStatus::DELETING; $ssl->status = SslStatus::DELETING;
$ssl->save(); $ssl->save();
/** @var Service $service */
$service = $ssl->site->server->webserver();
/** @var Webserver $webserver */ /** @var Webserver $webserver */
$webserver = $service->handler(); $webserver = $ssl->site->server->webserver()->handler();
$webserver->removeSSL($ssl); $webserver->removeSSL($ssl);
$ssl->delete(); $ssl->delete();
} }

View File

@ -7,9 +7,6 @@
class CreateScript class CreateScript
{ {
/**
* @param array<string, mixed> $input
*/
public function create(User $user, array $input): Script public function create(User $user, array $input): Script
{ {
$script = new Script([ $script = new Script([
@ -23,9 +20,6 @@ public function create(User $user, array $input): Script
return $script; return $script;
} }
/**
* @return array<string, array<string>>
*/
public static function rules(): array public static function rules(): array
{ {
return [ return [

View File

@ -7,9 +7,6 @@
class EditScript class EditScript
{ {
/**
* @param array<string, mixed> $input
*/
public function edit(Script $script, User $user, array $input): Script public function edit(Script $script, User $user, array $input): Script
{ {
$script->name = $input['name']; $script->name = $input['name'];
@ -21,9 +18,6 @@ public function edit(Script $script, User $user, array $input): Script
return $script; return $script;
} }
/**
* @return array<string, array<string>>
*/
public static function rules(): array public static function rules(): array
{ {
return [ return [

View File

@ -11,9 +11,6 @@
class ExecuteScript class ExecuteScript
{ {
/**
* @param array<string, mixed> $input
*/
public function execute(Script $script, array $input): ScriptExecution public function execute(Script $script, array $input): ScriptExecution
{ {
$execution = new ScriptExecution([ $execution = new ScriptExecution([
@ -25,19 +22,16 @@ public function execute(Script $script, array $input): ScriptExecution
]); ]);
$execution->save(); $execution->save();
dispatch(function () use ($execution, $script): void { dispatch(function () use ($execution, $script) {
/** @var Server $server */
$server = $execution->server;
$content = $execution->getContent(); $content = $execution->getContent();
$log = ServerLog::newLog($server, 'script-'.$script->id.'-'.strtotime('now')); $log = ServerLog::make($execution->server, 'script-'.$script->id.'-'.strtotime('now'));
$log->save(); $log->save();
$execution->server_log_id = $log->id; $execution->server_log_id = $log->id;
$execution->save(); $execution->save();
$server->os()->runScript('~/', $content, $log, $execution->user); $execution->server->os()->runScript('~/', $content, $log, $execution->user);
$execution->status = ScriptExecutionStatus::COMPLETED; $execution->status = ScriptExecutionStatus::COMPLETED;
$execution->save(); $execution->save();
})->catch(function () use ($execution): void { })->catch(function () use ($execution) {
$execution->status = ScriptExecutionStatus::FAILED; $execution->status = ScriptExecutionStatus::FAILED;
$execution->save(); $execution->save();
})->onConnection('ssh'); })->onConnection('ssh');
@ -45,16 +39,12 @@ public function execute(Script $script, array $input): ScriptExecution
return $execution; return $execution;
} }
/**
* @param array<string, mixed> $input
* @return array<string, mixed>
*/
public static function rules(array $input): array public static function rules(array $input): array
{ {
$users = ['root']; $users = ['root'];
if (isset($input['server'])) { if (isset($input['server'])) {
/** @var Server $server */ /** @var ?Server $server */
$server = Server::query()->findOrFail($input['server']); $server = Server::query()->find($input['server']);
$users = $server->getSshUsers(); $users = $server->getSshUsers();
} }

View File

@ -17,7 +17,6 @@
use Exception; use Exception;
use Illuminate\Database\Query\Builder; use Illuminate\Database\Query\Builder;
use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\Validator;
use Illuminate\Support\Str; use Illuminate\Support\Str;
use Illuminate\Validation\Rule; use Illuminate\Validation\Rule;
use Illuminate\Validation\ValidationException; use Illuminate\Validation\ValidationException;
@ -25,13 +24,8 @@
class CreateServer class CreateServer
{ {
/**
* @param array<string, mixed> $input
*/
public function create(User $creator, Project $project, array $input): Server public function create(User $creator, Project $project, array $input): Server
{ {
Validator::make($input, self::rules($project, $input))->validate();
$server = new Server([ $server = new Server([
'project_id' => $project->id, 'project_id' => $project->id,
'user_id' => $creator->id, 'user_id' => $creator->id,
@ -87,7 +81,7 @@ public function create(User $creator, Project $project, array $input): Server
private function install(Server $server): void private function install(Server $server): void
{ {
dispatch(function () use ($server): void { dispatch(function () use ($server) {
$maxWait = 180; $maxWait = 180;
while ($maxWait > 0) { while ($maxWait > 0) {
sleep(10); sleep(10);
@ -108,7 +102,7 @@ private function install(Server $server): void
]); ]);
Notifier::send($server, new ServerInstallationSucceed($server)); Notifier::send($server, new ServerInstallationSucceed($server));
}) })
->catch(function (Throwable $e) use ($server): void { ->catch(function (Throwable $e) use ($server) {
$server->update([ $server->update([
'status' => ServerStatus::INSTALLATION_FAILED, 'status' => ServerStatus::INSTALLATION_FAILED,
]); ]);
@ -120,10 +114,6 @@ private function install(Server $server): void
->onConnection('ssh'); ->onConnection('ssh');
} }
/**
* @param array<string, mixed> $input
* @return array<string, mixed>
*/
public static function rules(Project $project, array $input): array public static function rules(Project $project, array $input): array
{ {
$rules = [ $rules = [
@ -139,22 +129,28 @@ public static function rules(Project $project, array $input): array
Rule::in(config('core.operating_systems')), Rule::in(config('core.operating_systems')),
], ],
'server_provider' => [ 'server_provider' => [
Rule::when(fn (): bool => isset($input['provider']) && $input['provider'] != ServerProvider::CUSTOM, [ Rule::when(function () use ($input) {
return isset($input['provider']) && $input['provider'] != ServerProvider::CUSTOM;
}, [
'required', 'required',
Rule::exists('server_providers', 'id')->where(function (Builder $query) use ($project): void { Rule::exists('server_providers', 'id')->where(function (Builder $query) use ($project) {
$query->where('project_id', $project->id) $query->where('project_id', $project->id)
->orWhereNull('project_id'); ->orWhereNull('project_id');
}), }),
]), ]),
], ],
'ip' => [ 'ip' => [
Rule::when(fn (): bool => isset($input['provider']) && $input['provider'] == ServerProvider::CUSTOM, [ Rule::when(function () use ($input) {
return isset($input['provider']) && $input['provider'] == ServerProvider::CUSTOM;
}, [
'required', 'required',
new RestrictedIPAddressesRule, new RestrictedIPAddressesRule,
]), ]),
], ],
'port' => [ 'port' => [
Rule::when(fn (): bool => isset($input['provider']) && $input['provider'] == ServerProvider::CUSTOM, [ Rule::when(function () use ($input) {
return isset($input['provider']) && $input['provider'] == ServerProvider::CUSTOM;
}, [
'required', 'required',
'numeric', 'numeric',
'min:1', 'min:1',
@ -166,10 +162,6 @@ public static function rules(Project $project, array $input): array
return array_merge($rules, self::typeRules($input), self::providerRules($input)); return array_merge($rules, self::typeRules($input), self::providerRules($input));
} }
/**
* @param array<string, mixed> $input
* @return array<string, array<string>>
*/
private static function typeRules(array $input): array private static function typeRules(array $input): array
{ {
if (! isset($input['type']) || ! in_array($input['type'], config('core.server_types'))) { if (! isset($input['type']) || ! in_array($input['type'], config('core.server_types'))) {
@ -181,10 +173,6 @@ private static function typeRules(array $input): array
return $server->type()->createRules($input); return $server->type()->createRules($input);
} }
/**
* @param array<string, mixed> $input
* @return array<string, array<string>>
*/
private static function providerRules(array $input): array private static function providerRules(array $input): array
{ {
if ( if (

View File

@ -8,8 +8,6 @@
class CreateServerLog class CreateServerLog
{ {
/** /**
* @param array<string, mixed> $input
*
* @throws ValidationException * @throws ValidationException
*/ */
public function create(Server $server, array $input): void public function create(Server $server, array $input): void
@ -22,9 +20,6 @@ public function create(Server $server, array $input): void
]); ]);
} }
/**
* @return array<string, string>
*/
public static function rules(): array public static function rules(): array
{ {
return [ return [

View File

@ -10,9 +10,6 @@
class EditServer class EditServer
{ {
/** /**
* @param array<string, mixed> $input
* @return Server $server
*
* @throws ValidationException * @throws ValidationException
*/ */
public function edit(Server $server, array $input): Server public function edit(Server $server, array $input): Server
@ -45,9 +42,6 @@ public function edit(Server $server, array $input): Server
return $server; return $server;
} }
/**
* @return array<string, array<int, mixed>>
*/
public static function rules(Server $server): array public static function rules(Server $server): array
{ {
return [ return [

View File

@ -13,11 +13,11 @@ public function update(Server $server): void
{ {
$server->status = ServerStatus::UPDATING; $server->status = ServerStatus::UPDATING;
$server->save(); $server->save();
dispatch(function () use ($server): void { dispatch(function () use ($server) {
$server->os()->upgrade(); $server->os()->upgrade();
$server->checkConnection(); $server->checkConnection();
$server->checkForUpdates(); $server->checkForUpdates();
})->catch(function () use ($server): void { })->catch(function () use ($server) {
Notifier::send($server, new ServerUpdateFailed($server)); Notifier::send($server, new ServerUpdateFailed($server));
$server->checkConnection(); $server->checkConnection();
})->onConnection('ssh'); })->onConnection('ssh');

View File

@ -3,27 +3,21 @@
namespace App\Actions\ServerProvider; namespace App\Actions\ServerProvider;
use App\Models\Project; use App\Models\Project;
use App\Models\Server;
use App\Models\ServerProvider; use App\Models\ServerProvider;
use App\Models\User; use App\Models\User;
use App\ServerProviders\ServerProvider as ServerProviderContract; use App\ServerProviders\ServerProvider as ServerProviderContract;
use Exception; use Exception;
use Illuminate\Support\Facades\Validator;
use Illuminate\Validation\Rule; use Illuminate\Validation\Rule;
use Illuminate\Validation\ValidationException; use Illuminate\Validation\ValidationException;
class CreateServerProvider class CreateServerProvider
{ {
/** /**
* @param array<string, mixed> $input
*
* @throws ValidationException * @throws ValidationException
*/ */
public function create(User $user, Project $project, array $input): ServerProvider public function create(User $user, Project $project, array $input): ServerProvider
{ {
Validator::make($input, self::rules($input))->validate(); $provider = static::getProvider($input['provider']);
$provider = self::getProvider($input['provider']);
try { try {
$provider->connect($input); $provider->connect($input);
@ -46,19 +40,13 @@ public function create(User $user, Project $project, array $input): ServerProvid
return $serverProvider; return $serverProvider;
} }
private static function getProvider(string $name): ServerProviderContract private static function getProvider($name): ServerProviderContract
{ {
$providerClass = config('core.server_providers_class.'.$name); $providerClass = config('core.server_providers_class.'.$name);
/** @var ServerProviderContract $provider */
$provider = new $providerClass(new ServerProvider, new Server);
return $provider; return new $providerClass;
} }
/**
* @param array<string, mixed> $input
* @return array<string, mixed>
*/
public static function rules(array $input): array public static function rules(array $input): array
{ {
$rules = [ $rules = [
@ -72,19 +60,15 @@ public static function rules(array $input): array
], ],
]; ];
return array_merge($rules, self::providerRules($input)); return array_merge($rules, static::providerRules($input));
} }
/**
* @param array<string, mixed> $input
* @return array<string, array<string>>
*/
private static function providerRules(array $input): array private static function providerRules(array $input): array
{ {
if (! isset($input['provider'])) { if (! isset($input['provider'])) {
return []; return [];
} }
return self::getProvider($input['provider'])->credentialValidationRules($input); return static::getProvider($input['provider'])->credentialValidationRules($input);
} }
} }

View File

@ -7,9 +7,6 @@
class EditServerProvider class EditServerProvider
{ {
/**
* @param array<string, mixed> $input
*/
public function edit(ServerProvider $serverProvider, Project $project, array $input): ServerProvider public function edit(ServerProvider $serverProvider, Project $project, array $input): ServerProvider
{ {
$serverProvider->profile = $input['name']; $serverProvider->profile = $input['name'];
@ -20,9 +17,6 @@ public function edit(ServerProvider $serverProvider, Project $project, array $in
return $serverProvider; return $serverProvider;
} }
/**
* @return array<string, array<string>>
*/
public static function rules(): array public static function rules(): array
{ {
return [ return [

View File

@ -10,9 +10,6 @@
class Install class Install
{ {
/**
* @param array<string, mixed> $input
*/
public function install(Server $server, array $input): Service public function install(Server $server, array $input): Service
{ {
$input['type'] = config('core.service_types')[$input['name']]; $input['type'] = config('core.service_types')[$input['name']];
@ -31,11 +28,11 @@ public function install(Server $server, array $input): Service
$service->save(); $service->save();
dispatch(function () use ($service): void { dispatch(function () use ($service) {
$service->handler()->install(); $service->handler()->install();
$service->status = ServiceStatus::READY; $service->status = ServiceStatus::READY;
$service->save(); $service->save();
})->catch(function () use ($service): void { })->catch(function () use ($service) {
$service->status = ServiceStatus::INSTALLATION_FAILED; $service->status = ServiceStatus::INSTALLATION_FAILED;
$service->save(); $service->save();
})->onConnection('ssh'); })->onConnection('ssh');
@ -43,10 +40,6 @@ public function install(Server $server, array $input): Service
return $service; return $service;
} }
/**
* @param array<string, mixed> $input
* @return array<string, array<int, mixed>>
*/
public static function rules(array $input): array public static function rules(array $input): array
{ {
$rules = [ $rules = [

View File

@ -11,7 +11,7 @@ public function start(Service $service): void
{ {
$service->status = ServiceStatus::STARTING; $service->status = ServiceStatus::STARTING;
$service->save(); $service->save();
dispatch(function () use ($service): void { dispatch(function () use ($service) {
$status = $service->server->systemd()->start($service->unit); $status = $service->server->systemd()->start($service->unit);
if (str($status)->contains('Active: active')) { if (str($status)->contains('Active: active')) {
$service->status = ServiceStatus::READY; $service->status = ServiceStatus::READY;
@ -26,7 +26,7 @@ public function stop(Service $service): void
{ {
$service->status = ServiceStatus::STOPPING; $service->status = ServiceStatus::STOPPING;
$service->save(); $service->save();
dispatch(function () use ($service): void { dispatch(function () use ($service) {
$status = $service->server->systemd()->stop($service->unit); $status = $service->server->systemd()->stop($service->unit);
if (str($status)->contains('Active: inactive')) { if (str($status)->contains('Active: inactive')) {
$service->status = ServiceStatus::STOPPED; $service->status = ServiceStatus::STOPPED;
@ -41,7 +41,7 @@ public function restart(Service $service): void
{ {
$service->status = ServiceStatus::RESTARTING; $service->status = ServiceStatus::RESTARTING;
$service->save(); $service->save();
dispatch(function () use ($service): void { dispatch(function () use ($service) {
$status = $service->server->systemd()->restart($service->unit); $status = $service->server->systemd()->restart($service->unit);
if (str($status)->contains('Active: active')) { if (str($status)->contains('Active: active')) {
$service->status = ServiceStatus::READY; $service->status = ServiceStatus::READY;
@ -56,7 +56,7 @@ public function enable(Service $service): void
{ {
$service->status = ServiceStatus::ENABLING; $service->status = ServiceStatus::ENABLING;
$service->save(); $service->save();
dispatch(function () use ($service): void { dispatch(function () use ($service) {
$status = $service->server->systemd()->enable($service->unit); $status = $service->server->systemd()->enable($service->unit);
if (str($status)->contains('Active: active')) { if (str($status)->contains('Active: active')) {
$service->status = ServiceStatus::READY; $service->status = ServiceStatus::READY;
@ -71,7 +71,7 @@ public function disable(Service $service): void
{ {
$service->status = ServiceStatus::DISABLING; $service->status = ServiceStatus::DISABLING;
$service->save(); $service->save();
dispatch(function () use ($service): void { dispatch(function () use ($service) {
$status = $service->server->systemd()->disable($service->unit); $status = $service->server->systemd()->disable($service->unit);
if (str($status)->contains('Active: inactive')) { if (str($status)->contains('Active: inactive')) {
$service->status = ServiceStatus::DISABLED; $service->status = ServiceStatus::DISABLED;

View File

@ -20,10 +20,10 @@ public function uninstall(Service $service): void
$service->status = ServiceStatus::UNINSTALLING; $service->status = ServiceStatus::UNINSTALLING;
$service->save(); $service->save();
dispatch(function () use ($service): void { dispatch(function () use ($service) {
$service->handler()->uninstall(); $service->handler()->uninstall();
$service->delete(); $service->delete();
})->catch(function () use ($service): void { })->catch(function () use ($service) {
$service->status = ServiceStatus::FAILED; $service->status = ServiceStatus::FAILED;
$service->save(); $service->save();
})->onConnection('ssh'); })->onConnection('ssh');

View File

@ -7,9 +7,6 @@
class CreateCommand class CreateCommand
{ {
/**
* @param array<string, mixed> $input
*/
public function create(Site $site, array $input): Command public function create(Site $site, array $input): Command
{ {
$script = new Command([ $script = new Command([
@ -22,9 +19,6 @@ public function create(Site $site, array $input): Command
return $script; return $script;
} }
/**
* @return array<string, array<string>>
*/
public static function rules(): array public static function rules(): array
{ {
return [ return [

View File

@ -19,11 +19,6 @@
class CreateSite class CreateSite
{ {
/**
* @param array<string, mixed> $input
*
* @throws ValidationException
*/
public function create(Server $server, array $input): Site public function create(Server $server, array $input): Site
{ {
DB::beginTransaction(); DB::beginTransaction();
@ -45,7 +40,7 @@ public function create(Server $server, array $input): Site
// check has access to repository // check has access to repository
try { try {
if ($site->sourceControl) { if ($site->sourceControl) {
$site->sourceControl->getRepo($site->repository); $site->sourceControl?->getRepo($site->repository);
} }
} catch (SourceControlIsNotConnected) { } catch (SourceControlIsNotConnected) {
throw ValidationException::withMessages([ throw ValidationException::withMessages([
@ -77,14 +72,14 @@ public function create(Server $server, array $input): Site
$site->commands()->createMany($site->type()->baseCommands()); $site->commands()->createMany($site->type()->baseCommands());
// install site // install site
dispatch(function () use ($site): void { dispatch(function () use ($site) {
$site->type()->install(); $site->type()->install();
$site->update([ $site->update([
'status' => SiteStatus::READY, 'status' => SiteStatus::READY,
'progress' => 100, 'progress' => 100,
]); ]);
Notifier::send($site, new SiteInstallationSucceed($site)); Notifier::send($site, new SiteInstallationSucceed($site));
})->catch(function () use ($site): void { })->catch(function () use ($site) {
$site->status = SiteStatus::INSTALLATION_FAILED; $site->status = SiteStatus::INSTALLATION_FAILED;
$site->save(); $site->save();
Notifier::send($site, new SiteInstallationFailed($site)); Notifier::send($site, new SiteInstallationFailed($site));
@ -101,10 +96,6 @@ public function create(Server $server, array $input): Site
} }
} }
/**
* @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 $input): array
{ {
$rules = [ $rules = [
@ -115,7 +106,9 @@ public static function rules(Server $server, array $input): array
'domain' => [ 'domain' => [
'required', 'required',
new DomainRule, new DomainRule,
Rule::unique('sites', 'domain')->where(fn ($query) => $query->where('server_id', $server->id)), Rule::unique('sites', 'domain')->where(function ($query) use ($server) {
return $query->where('server_id', $server->id);
}),
], ],
'aliases.*' => [ 'aliases.*' => [
new DomainRule, new DomainRule,
@ -132,10 +125,6 @@ public static function rules(Server $server, array $input): array
return array_merge($rules, self::typeRules($server, $input)); return array_merge($rules, self::typeRules($server, $input));
} }
/**
* @param array<string, mixed> $input
* @return array<string, array<string>>
*/
private static function typeRules(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']) || ! in_array($input['type'], config('core.site_types'))) {

View File

@ -3,7 +3,6 @@
namespace App\Actions\Site; namespace App\Actions\Site;
use App\Exceptions\SSHError; use App\Exceptions\SSHError;
use App\Models\Service;
use App\Models\Site; use App\Models\Site;
use App\SSH\Services\PHP\PHP; use App\SSH\Services\PHP\PHP;
use App\SSH\Services\Webserver\Webserver; use App\SSH\Services\Webserver\Webserver;
@ -15,18 +14,13 @@ class DeleteSite
*/ */
public function delete(Site $site): void public function delete(Site $site): void
{ {
/** @var Service $service */
$service = $site->server->webserver();
/** @var Webserver $webserverHandler */ /** @var Webserver $webserverHandler */
$webserverHandler = $service->handler(); $webserverHandler = $site->server->webserver()->handler();
$webserverHandler->deleteSite($site); $webserverHandler->deleteSite($site);
if ($site->isIsolated()) { if ($site->isIsolated()) {
/** @var Service $phpService */
$phpService = $site->server->php();
/** @var PHP $php */ /** @var PHP $php */
$php = $phpService->handler(); $php = $site->server->php()->handler();
$php->removeFpmPool($site->user, $site->php_version, $site->id); $php->removeFpmPool($site->user, $site->php_version, $site->id);
$os = $site->server->os(); $os = $site->server->os();

View File

@ -39,8 +39,9 @@ public function run(Site $site): Deployment
} }
$deployment->save(); $deployment->save();
dispatch(function () use ($site, $deployment): void { dispatch(function () use ($site, $deployment) {
$log = ServerLog::newLog($site->server, 'deploy-'.strtotime('now')) /** @var ServerLog $log */
$log = ServerLog::make($site->server, 'deploy-'.strtotime('now'))
->forSite($site); ->forSite($site);
$log->save(); $log->save();
$deployment->log_id = $log->id; $deployment->log_id = $log->id;
@ -55,7 +56,7 @@ public function run(Site $site): Deployment
$deployment->status = DeploymentStatus::FINISHED; $deployment->status = DeploymentStatus::FINISHED;
$deployment->save(); $deployment->save();
Notifier::send($site, new DeploymentCompleted($deployment, $site)); Notifier::send($site, new DeploymentCompleted($deployment, $site));
})->catch(function () use ($deployment, $site): void { })->catch(function () use ($deployment, $site) {
$deployment->status = DeploymentStatus::FAILED; $deployment->status = DeploymentStatus::FAILED;
$deployment->save(); $deployment->save();
Notifier::send($site, new DeploymentCompleted($deployment, $site)); Notifier::send($site, new DeploymentCompleted($deployment, $site));

View File

@ -6,9 +6,6 @@
class EditCommand class EditCommand
{ {
/**
* @param array<string, mixed> $input
*/
public function edit(Command $command, array $input): Command public function edit(Command $command, array $input): Command
{ {
$command->name = $input['name']; $command->name = $input['name'];
@ -18,9 +15,6 @@ public function edit(Command $command, array $input): Command
return $command; return $command;
} }
/**
* @return array<string, array<string>>
*/
public static function rules(): array public static function rules(): array
{ {
return [ return [

View File

@ -10,9 +10,6 @@
class ExecuteCommand class ExecuteCommand
{ {
/**
* @param array<string, mixed> $input
*/
public function execute(Command $command, User $user, array $input): CommandExecution public function execute(Command $command, User $user, array $input): CommandExecution
{ {
$execution = new CommandExecution([ $execution = new CommandExecution([
@ -24,22 +21,22 @@ public function execute(Command $command, User $user, array $input): CommandExec
]); ]);
$execution->save(); $execution->save();
dispatch(function () use ($execution, $command): void { dispatch(function () use ($execution, $command) {
$content = $execution->getContent(); $content = $execution->getContent();
$log = ServerLog::newLog($execution->server, 'command-'.$command->id.'-'.strtotime('now')); $log = ServerLog::make($execution->server, 'command-'.$command->id.'-'.strtotime('now'));
$log->save(); $log->save();
$execution->server_log_id = $log->id; $execution->server_log_id = $log->id;
$execution->save(); $execution->save();
$execution->server->os()->runScript( $execution->server->os()->runScript(
path: $command->site->path, path: $command->site->path,
script: $content, script: $content,
serverLog: $log,
user: $command->site->user, user: $command->site->user,
serverLog: $log,
variables: $execution->variables variables: $execution->variables
); );
$execution->status = CommandExecutionStatus::COMPLETED; $execution->status = CommandExecutionStatus::COMPLETED;
$execution->save(); $execution->save();
})->catch(function () use ($execution): void { })->catch(function () use ($execution) {
$execution->status = CommandExecutionStatus::FAILED; $execution->status = CommandExecutionStatus::FAILED;
$execution->save(); $execution->save();
})->onConnection('ssh'); })->onConnection('ssh');
@ -47,10 +44,6 @@ public function execute(Command $command, User $user, array $input): CommandExec
return $execution; return $execution;
} }
/**
* @param array<string, mixed> $input
* @return array<string, string|array<int, mixed>>
*/
public static function rules(array $input): array public static function rules(array $input): array
{ {
return [ return [

View File

@ -2,33 +2,23 @@
namespace App\Actions\Site; namespace App\Actions\Site;
use App\Models\Service;
use App\Models\Site; use App\Models\Site;
use App\SSH\Services\Webserver\Webserver; use App\SSH\Services\Webserver\Webserver;
use App\ValidationRules\DomainRule; use App\ValidationRules\DomainRule;
class UpdateAliases class UpdateAliases
{ {
/**
* @param array<string, mixed> $input
*/
public function update(Site $site, array $input): void public function update(Site $site, array $input): void
{ {
$site->aliases = $input['aliases'] ?? []; $site->aliases = $input['aliases'] ?? [];
/** @var Service $service */
$service = $site->server->webserver();
/** @var Webserver $webserver */ /** @var Webserver $webserver */
$webserver = $service->handler(); $webserver = $site->server->webserver()->handler();
$webserver->updateVHost($site); $webserver->updateVHost($site);
$site->save(); $site->save();
} }
/**
* @return array<string, array<int, mixed>>
*/
public static function rules(): array public static function rules(): array
{ {
return [ return [

View File

@ -5,12 +5,12 @@
use App\Exceptions\SSHError; use App\Exceptions\SSHError;
use App\Models\Site; use App\Models\Site;
use App\SSH\Git\Git; use App\SSH\Git\Git;
use Illuminate\Validation\ValidationException;
class UpdateBranch class UpdateBranch
{ {
/** /**
* @param array<string, mixed> $input * @throws ValidationException
*
* @throws SSHError * @throws SSHError
*/ */
public function update(Site $site, array $input): void public function update(Site $site, array $input): void
@ -22,7 +22,7 @@ public function update(Site $site, array $input): void
} }
/** /**
* @return array<string, string> * @throws ValidationException
*/ */
public static function rules(): array public static function rules(): array
{ {

View File

@ -2,24 +2,23 @@
namespace App\Actions\Site; namespace App\Actions\Site;
use App\Models\DeploymentScript;
use App\Models\Site; use App\Models\Site;
use Illuminate\Validation\ValidationException;
class UpdateDeploymentScript class UpdateDeploymentScript
{ {
/** /**
* @param array<string, mixed> $input * @throws ValidationException
*/ */
public function update(Site $site, array $input): void public function update(Site $site, array $input): void
{ {
/** @var DeploymentScript $script */
$script = $site->deploymentScript; $script = $site->deploymentScript;
$script->content = $input['script']; $script->content = $input['script'];
$script->save(); $script->save();
} }
/** /**
* @return array<string, array<string>> * @throws ValidationException
*/ */
public static function rules(): array public static function rules(): array
{ {

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