MENU

# Introduction

VitoDeploy's API documentation.

Base URL: `https://your-vito-url`

This documentation aims to provide all the information you need to work with our API.

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).

# Authenticating requests

To authenticate requests, include an `Authorization` header with the value `"Bearer YOUR-API-KEY"`.

All authenticated endpoints are marked with a `requires authentication` badge in the documentation below.

You can retrieve your token by visiting here

# cron-jobs

## list

requires authentication

Get all cron jobs.

> Example request:

    curl --request GET \
        --get "https://your-vito-url/api/projects/1/servers/29/cron-jobs" \
        --header "Authorization: Bearer YOUR-API-KEY" \
        --header "Content-Type: application/json" \
        --header "Accept: application/json"

    $client = new \GuzzleHttp\Client();
    $url = 'https://your-vito-url/api/projects/1/servers/29/cron-jobs';
    $response = $client->get(
        $url,
        [
            'headers' => [
                'Authorization' => 'Bearer YOUR-API-KEY',
                'Content-Type' => 'application/json',
                'Accept' => 'application/json',
            ],
        ]
    );
    $body = $response->getBody();
    print_r(json_decode((string) $body));

    const url = new URL(
        "https://your-vito-url/api/projects/1/servers/29/cron-jobs"
    );

    const headers = {
        "Authorization": "Bearer YOUR-API-KEY",
        "Content-Type": "application/json",
        "Accept": "application/json",
    };

    fetch(url, {
        method: "GET",
        headers,
    }).then(response => response.json());

> Example response (200):

    {
        "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
        }
    }

> Received response:

> Request failed with error:

    Tip: Check that you're properly connected to the network.
    If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
    You can check the Dev Tools console for debugging information.

### Request

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

#### Headers

`Authorization`

Example: `Bearer YOUR-API-KEY`

`Content-Type`

Example: `application/json`

`Accept`

Example: `application/json`

#### URL Parameters

`project_id` integer

The ID of the project. Example: `1`

`server_id` integer

The ID of the server. Example: `29`

## create

requires authentication

Create a new cron job.

> Example request:

    curl --request POST \
        "https://your-vito-url/api/projects/1/servers/29/cron-jobs" \
        --header "Authorization: Bearer YOUR-API-KEY" \
        --header "Content-Type: application/json" \
        --header "Accept: application/json" \
        --data "{
        \"command\": \"nisi\",
        \"user\": \"vito\",
        \"frequency\": \"* * * * *\"
    }"

    $client = new \GuzzleHttp\Client();
    $url = 'https://your-vito-url/api/projects/1/servers/29/cron-jobs';
    $response = $client->post(
        $url,
        [
            'headers' => [
                'Authorization' => 'Bearer YOUR-API-KEY',
                'Content-Type' => 'application/json',
                'Accept' => 'application/json',
            ],
            'json' => [
                'command' => 'nisi',
                'user' => 'vito',
                'frequency' => '* * * * *',
            ],
        ]
    );
    $body = $response->getBody();
    print_r(json_decode((string) $body));

    const url = new URL(
        "https://your-vito-url/api/projects/1/servers/29/cron-jobs"
    );

    const headers = {
        "Authorization": "Bearer YOUR-API-KEY",
        "Content-Type": "application/json",
        "Accept": "application/json",
    };

    let body = {
        "command": "nisi",
        "user": "vito",
        "frequency": "* * * * *"
    };

    fetch(url, {
        method: "POST",
        headers,
        body: JSON.stringify(body),
    }).then(response => response.json());

> Example response (200):

    {
        "id": null,
        "server_id": null,
        "command": "ls -la",
        "user": "root",
        "frequency": "* * * * *",
        "status": "ready",
        "created_at": null,
        "updated_at": null
    }

> Received response:

> Request failed with error:

    Tip: Check that you're properly connected to the network.
    If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
    You can check the Dev Tools console for debugging information.

### Request

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

#### Headers

`Authorization`

Example: `Bearer YOUR-API-KEY`

`Content-Type`

Example: `application/json`

`Accept`

Example: `application/json`

#### URL Parameters

`project_id` integer

The ID of the project. Example: `1`

`server_id` integer

The ID of the server. Example: `29`

#### Body Parameters

`command` string

Example: `nisi`

`user` string

Example: `vito`

Must be one of:

- `root`
- `vito`

`frequency` string

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

## show

requires authentication

Get a cron job by ID.

> Example request:

    curl --request GET \
        --get "https://your-vito-url/api/projects/1/servers/29/cron-jobs/14" \
        --header "Authorization: Bearer YOUR-API-KEY" \
        --header "Content-Type: application/json" \
        --header "Accept: application/json"

    $client = new \GuzzleHttp\Client();
    $url = 'https://your-vito-url/api/projects/1/servers/29/cron-jobs/14';
    $response = $client->get(
        $url,
        [
            'headers' => [
                'Authorization' => 'Bearer YOUR-API-KEY',
                'Content-Type' => 'application/json',
                'Accept' => 'application/json',
            ],
        ]
    );
    $body = $response->getBody();
    print_r(json_decode((string) $body));

    const url = new URL(
        "https://your-vito-url/api/projects/1/servers/29/cron-jobs/14"
    );

    const headers = {
        "Authorization": "Bearer YOUR-API-KEY",
        "Content-Type": "application/json",
        "Accept": "application/json",
    };

    fetch(url, {
        method: "GET",
        headers,
    }).then(response => response.json());

> Example response (200):

    {
        "id": null,
        "server_id": null,
        "command": "ls -la",
        "user": "root",
        "frequency": "* * * * *",
        "status": "ready",
        "created_at": null,
        "updated_at": null
    }

> Received response:

> Request failed with error:

    Tip: Check that you're properly connected to the network.
    If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
    You can check the Dev Tools console for debugging information.

### Request

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

#### Headers

`Authorization`

Example: `Bearer YOUR-API-KEY`

`Content-Type`

Example: `application/json`

`Accept`

Example: `application/json`

#### URL Parameters

`project_id` integer

The ID of the project. Example: `1`

`server_id` integer

The ID of the server. Example: `29`

`cronJob_id` integer

The ID of the cronJob. Example: `14`

## delete

requires authentication

Delete cron job.

> Example request:

    curl --request DELETE \
        "https://your-vito-url/api/projects/1/servers/29/cron-jobs/9" \
        --header "Authorization: Bearer YOUR-API-KEY" \
        --header "Content-Type: application/json" \
        --header "Accept: application/json"

    $client = new \GuzzleHttp\Client();
    $url = 'https://your-vito-url/api/projects/1/servers/29/cron-jobs/9';
    $response = $client->delete(
        $url,
        [
            'headers' => [
                'Authorization' => 'Bearer YOUR-API-KEY',
                'Content-Type' => 'application/json',
                'Accept' => 'application/json',
            ],
        ]
    );
    $body = $response->getBody();
    print_r(json_decode((string) $body));

    const url = new URL(
        "https://your-vito-url/api/projects/1/servers/29/cron-jobs/9"
    );

    const headers = {
        "Authorization": "Bearer YOUR-API-KEY",
        "Content-Type": "application/json",
        "Accept": "application/json",
    };

    fetch(url, {
        method: "DELETE",
        headers,
    }).then(response => response.json());

> Example response (204):

    Empty response

> Received response:

> Request failed with error:

    Tip: Check that you're properly connected to the network.
    If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
    You can check the Dev Tools console for debugging information.

### Request

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

#### Headers

`Authorization`

Example: `Bearer YOUR-API-KEY`

`Content-Type`

Example: `application/json`

`Accept`

Example: `application/json`

#### URL Parameters

`project_id` integer

The ID of the project. Example: `1`

`server_id` integer

The ID of the server. Example: `29`

`cronJob_id` integer

The ID of the cronJob. Example: `9`

# database-users

## list

requires authentication

Get all database users.

> Example request:

    curl --request GET \
        --get "https://your-vito-url/api/projects/1/servers/29/database-users" \
        --header "Authorization: Bearer YOUR-API-KEY" \
        --header "Content-Type: application/json" \
        --header "Accept: application/json"

    $client = new \GuzzleHttp\Client();
    $url = 'https://your-vito-url/api/projects/1/servers/29/database-users';
    $response = $client->get(
        $url,
        [
            'headers' => [
                'Authorization' => 'Bearer YOUR-API-KEY',
                'Content-Type' => 'application/json',
                'Accept' => 'application/json',
            ],
        ]
    );
    $body = $response->getBody();
    print_r(json_decode((string) $body));

    const url = new URL(
        "https://your-vito-url/api/projects/1/servers/29/database-users"
    );

    const headers = {
        "Authorization": "Bearer YOUR-API-KEY",
        "Content-Type": "application/json",
        "Accept": "application/json",
    };

    fetch(url, {
        method: "GET",
        headers,
    }).then(response => response.json());

> Example response (200):

    {
        "data": [
            {
                "id": null,
                "server_id": null,
                "username": "lavina.zemlak",
                "databases": [],
                "host": "%",
                "status": null,
                "created_at": null,
                "updated_at": null
            },
            {
                "id": null,
                "server_id": null,
                "username": "hill.cassidy",
                "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
        }
    }

> Received response:

> Request failed with error:

    Tip: Check that you're properly connected to the network.
    If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
    You can check the Dev Tools console for debugging information.

### Request

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

#### Headers

`Authorization`

Example: `Bearer YOUR-API-KEY`

`Content-Type`

Example: `application/json`

`Accept`

Example: `application/json`

#### URL Parameters

`project_id` integer

The ID of the project. Example: `1`

`server_id` integer

The ID of the server. Example: `29`

## create

requires authentication

Create a new database user.

> Example request:

    curl --request POST \
        "https://your-vito-url/api/projects/1/servers/29/database-users" \
        --header "Authorization: Bearer YOUR-API-KEY" \
        --header "Content-Type: application/json" \
        --header "Accept: application/json" \
        --data "{
        \"username\": \"tempore\",
        \"password\": \"!jUv.BBc]X\",
        \"host\": \"%\"
    }"

    $client = new \GuzzleHttp\Client();
    $url = 'https://your-vito-url/api/projects/1/servers/29/database-users';
    $response = $client->post(
        $url,
        [
            'headers' => [
                'Authorization' => 'Bearer YOUR-API-KEY',
                'Content-Type' => 'application/json',
                'Accept' => 'application/json',
            ],
            'json' => [
                'username' => 'tempore',
                'password' => '!jUv.BBc]X',
                'host' => '%',
            ],
        ]
    );
    $body = $response->getBody();
    print_r(json_decode((string) $body));

    const url = new URL(
        "https://your-vito-url/api/projects/1/servers/29/database-users"
    );

    const headers = {
        "Authorization": "Bearer YOUR-API-KEY",
        "Content-Type": "application/json",
        "Accept": "application/json",
    };

    let body = {
        "username": "tempore",
        "password": "!jUv.BBc]X",
        "host": "%"
    };

    fetch(url, {
        method: "POST",
        headers,
        body: JSON.stringify(body),
    }).then(response => response.json());

> Example response (200):

    {
        "id": null,
        "server_id": null,
        "username": "irwin45",
        "databases": [],
        "host": "%",
        "status": null,
        "created_at": null,
        "updated_at": null
    }

> Received response:

> Request failed with error:

    Tip: Check that you're properly connected to the network.
    If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
    You can check the Dev Tools console for debugging information.

### Request

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

#### Headers

`Authorization`

Example: `Bearer YOUR-API-KEY`

`Content-Type`

Example: `application/json`

`Accept`

Example: `application/json`

#### URL Parameters

`project_id` integer

The ID of the project. Example: `1`

`server_id` integer

The ID of the server. Example: `29`

#### Body Parameters

`username` string

Example: `tempore`

`password` string

Example: `!jUv.BBc]X`

`host` string

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

## show

requires authentication

Get a database user by ID.

> Example request:

    curl --request GET \
        --get "https://your-vito-url/api/projects/1/servers/29/database-users/3" \
        --header "Authorization: Bearer YOUR-API-KEY" \
        --header "Content-Type: application/json" \
        --header "Accept: application/json"

    $client = new \GuzzleHttp\Client();
    $url = 'https://your-vito-url/api/projects/1/servers/29/database-users/3';
    $response = $client->get(
        $url,
        [
            'headers' => [
                'Authorization' => 'Bearer YOUR-API-KEY',
                'Content-Type' => 'application/json',
                'Accept' => 'application/json',
            ],
        ]
    );
    $body = $response->getBody();
    print_r(json_decode((string) $body));

    const url = new URL(
        "https://your-vito-url/api/projects/1/servers/29/database-users/3"
    );

    const headers = {
        "Authorization": "Bearer YOUR-API-KEY",
        "Content-Type": "application/json",
        "Accept": "application/json",
    };

    fetch(url, {
        method: "GET",
        headers,
    }).then(response => response.json());

> Example response (200):

    {
        "id": null,
        "server_id": null,
        "username": "frederic.koss",
        "databases": [],
        "host": "%",
        "status": null,
        "created_at": null,
        "updated_at": null
    }

> Received response:

> Request failed with error:

    Tip: Check that you're properly connected to the network.
    If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
    You can check the Dev Tools console for debugging information.

### Request

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

#### Headers

`Authorization`

Example: `Bearer YOUR-API-KEY`

`Content-Type`

Example: `application/json`

`Accept`

Example: `application/json`

#### URL Parameters

`project_id` integer

The ID of the project. Example: `1`

`server_id` integer

The ID of the server. Example: `29`

`databaseUser_id` integer

The ID of the databaseUser. Example: `3`

## link

requires authentication

Link to databases

> Example request:

    curl --request POST \
        "https://your-vito-url/api/projects/1/servers/29/database-users/12/link" \
        --header "Authorization: Bearer YOUR-API-KEY" \
        --header "Content-Type: application/json" \
        --header "Accept: application/json" \
        --data "{
        \"databases\": \"numquam\"
    }"

    $client = new \GuzzleHttp\Client();
    $url = 'https://your-vito-url/api/projects/1/servers/29/database-users/12/link';
    $response = $client->post(
        $url,
        [
            'headers' => [
                'Authorization' => 'Bearer YOUR-API-KEY',
                'Content-Type' => 'application/json',
                'Accept' => 'application/json',
            ],
            'json' => [
                'databases' => 'numquam',
            ],
        ]
    );
    $body = $response->getBody();
    print_r(json_decode((string) $body));

    const url = new URL(
        "https://your-vito-url/api/projects/1/servers/29/database-users/12/link"
    );

    const headers = {
        "Authorization": "Bearer YOUR-API-KEY",
        "Content-Type": "application/json",
        "Accept": "application/json",
    };

    let body = {
        "databases": "numquam"
    };

    fetch(url, {
        method: "POST",
        headers,
        body: JSON.stringify(body),
    }).then(response => response.json());

> Example response (200):

    {
        "id": null,
        "server_id": null,
        "username": "georgiana.hand",
        "databases": [],
        "host": "%",
        "status": null,
        "created_at": null,
        "updated_at": null
    }

> Received response:

> Request failed with error:

    Tip: Check that you're properly connected to the network.
    If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
    You can check the Dev Tools console for debugging information.

### Request

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

#### Headers

`Authorization`

Example: `Bearer YOUR-API-KEY`

`Content-Type`

Example: `application/json`

`Accept`

Example: `application/json`

#### URL Parameters

`project_id` integer

The ID of the project. Example: `1`

`server_id` integer

The ID of the server. Example: `29`

`databaseUser_id` integer

The ID of the databaseUser. Example: `12`

#### Body Parameters

`databases` string

Array of database names to link to the user. Example: `numquam`

## delete

requires authentication

Delete database user.

> Example request:

    curl --request DELETE \
        "https://your-vito-url/api/projects/1/servers/29/database-users/6" \
        --header "Authorization: Bearer YOUR-API-KEY" \
        --header "Content-Type: application/json" \
        --header "Accept: application/json"

    $client = new \GuzzleHttp\Client();
    $url = 'https://your-vito-url/api/projects/1/servers/29/database-users/6';
    $response = $client->delete(
        $url,
        [
            'headers' => [
                'Authorization' => 'Bearer YOUR-API-KEY',
                'Content-Type' => 'application/json',
                'Accept' => 'application/json',
            ],
        ]
    );
    $body = $response->getBody();
    print_r(json_decode((string) $body));

    const url = new URL(
        "https://your-vito-url/api/projects/1/servers/29/database-users/6"
    );

    const headers = {
        "Authorization": "Bearer YOUR-API-KEY",
        "Content-Type": "application/json",
        "Accept": "application/json",
    };

    fetch(url, {
        method: "DELETE",
        headers,
    }).then(response => response.json());

> Example response (204):

    Empty response

> Received response:

> Request failed with error:

    Tip: Check that you're properly connected to the network.
    If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
    You can check the Dev Tools console for debugging information.

### Request

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

#### Headers

`Authorization`

Example: `Bearer YOUR-API-KEY`

`Content-Type`

Example: `application/json`

`Accept`

Example: `application/json`

#### URL Parameters

`project_id` integer

The ID of the project. Example: `1`

`server_id` integer

The ID of the server. Example: `29`

`databaseUser_id` integer

The ID of the databaseUser. Example: `6`

# databases

## list

requires authentication

Get all databases.

> Example request:

    curl --request GET \
        --get "https://your-vito-url/api/projects/1/servers/29/databases" \
        --header "Authorization: Bearer YOUR-API-KEY" \
        --header "Content-Type: application/json" \
        --header "Accept: application/json"

    $client = new \GuzzleHttp\Client();
    $url = 'https://your-vito-url/api/projects/1/servers/29/databases';
    $response = $client->get(
        $url,
        [
            'headers' => [
                'Authorization' => 'Bearer YOUR-API-KEY',
                'Content-Type' => 'application/json',
                'Accept' => 'application/json',
            ],
        ]
    );
    $body = $response->getBody();
    print_r(json_decode((string) $body));

    const url = new URL(
        "https://your-vito-url/api/projects/1/servers/29/databases"
    );

    const headers = {
        "Authorization": "Bearer YOUR-API-KEY",
        "Content-Type": "application/json",
        "Accept": "application/json",
    };

    fetch(url, {
        method: "GET",
        headers,
    }).then(response => response.json());

> Example response (200):

    {
        "data": [
            {
                "id": null,
                "server_id": null,
                "name": "conn.bridget",
                "status": "ready",
                "created_at": null,
                "updated_at": null
            },
            {
                "id": null,
                "server_id": null,
                "name": "aiden47",
                "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
        }
    }

> Received response:

> Request failed with error:

    Tip: Check that you're properly connected to the network.
    If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
    You can check the Dev Tools console for debugging information.

### Request

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

#### Headers

`Authorization`

Example: `Bearer YOUR-API-KEY`

`Content-Type`

Example: `application/json`

`Accept`

Example: `application/json`

#### URL Parameters

`project_id` integer

The ID of the project. Example: `1`

`server_id` integer

The ID of the server. Example: `29`

## create

requires authentication

Create a new database.

> Example request:

    curl --request POST \
        "https://your-vito-url/api/projects/1/servers/29/databases" \
        --header "Authorization: Bearer YOUR-API-KEY" \
        --header "Content-Type: application/json" \
        --header "Accept: application/json" \
        --data "{
        \"name\": \"vel\",
        \"charset\": \"qui\",
        \"collation\": \"autem\"
    }"

    $client = new \GuzzleHttp\Client();
    $url = 'https://your-vito-url/api/projects/1/servers/29/databases';
    $response = $client->post(
        $url,
        [
            'headers' => [
                'Authorization' => 'Bearer YOUR-API-KEY',
                'Content-Type' => 'application/json',
                'Accept' => 'application/json',
            ],
            'json' => [
                'name' => 'vel',
                'charset' => 'qui',
                'collation' => 'autem',
            ],
        ]
    );
    $body = $response->getBody();
    print_r(json_decode((string) $body));

    const url = new URL(
        "https://your-vito-url/api/projects/1/servers/29/databases"
    );

    const headers = {
        "Authorization": "Bearer YOUR-API-KEY",
        "Content-Type": "application/json",
        "Accept": "application/json",
    };

    let body = {
        "name": "vel",
        "charset": "qui",
        "collation": "autem"
    };

    fetch(url, {
        method: "POST",
        headers,
        body: JSON.stringify(body),
    }).then(response => response.json());

> Example response (200):

    {
        "id": null,
        "server_id": null,
        "name": "rodolfo.bradtke",
        "status": "ready",
        "created_at": null,
        "updated_at": null
    }

> Received response:

> Request failed with error:

    Tip: Check that you're properly connected to the network.
    If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
    You can check the Dev Tools console for debugging information.

### Request

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

#### Headers

`Authorization`

Example: `Bearer YOUR-API-KEY`

`Content-Type`

Example: `application/json`

`Accept`

Example: `application/json`

#### URL Parameters

`project_id` integer

The ID of the project. Example: `1`

`server_id` integer

The ID of the server. Example: `29`

#### Body Parameters

`name` string

Example: `vel`

`charset` string

Example: `qui`

`collation` string

Example: `autem`

## show

requires authentication

Get a database by ID.

> Example request:

    curl --request GET \
        --get "https://your-vito-url/api/projects/1/servers/29/databases/17" \
        --header "Authorization: Bearer YOUR-API-KEY" \
        --header "Content-Type: application/json" \
        --header "Accept: application/json"

    $client = new \GuzzleHttp\Client();
    $url = 'https://your-vito-url/api/projects/1/servers/29/databases/17';
    $response = $client->get(
        $url,
        [
            'headers' => [
                'Authorization' => 'Bearer YOUR-API-KEY',
                'Content-Type' => 'application/json',
                'Accept' => 'application/json',
            ],
        ]
    );
    $body = $response->getBody();
    print_r(json_decode((string) $body));

    const url = new URL(
        "https://your-vito-url/api/projects/1/servers/29/databases/17"
    );

    const headers = {
        "Authorization": "Bearer YOUR-API-KEY",
        "Content-Type": "application/json",
        "Accept": "application/json",
    };

    fetch(url, {
        method: "GET",
        headers,
    }).then(response => response.json());

> Example response (200):

    {
        "id": null,
        "server_id": null,
        "name": "rhane",
        "status": "ready",
        "created_at": null,
        "updated_at": null
    }

> Received response:

> Request failed with error:

    Tip: Check that you're properly connected to the network.
    If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
    You can check the Dev Tools console for debugging information.

### Request

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

#### Headers

`Authorization`

Example: `Bearer YOUR-API-KEY`

`Content-Type`

Example: `application/json`

`Accept`

Example: `application/json`

#### URL Parameters

`project_id` integer

The ID of the project. Example: `1`

`server_id` integer

The ID of the server. Example: `29`

`id` integer

The ID of the database. Example: `17`

## delete

requires authentication

Delete database.

> Example request:

    curl --request DELETE \
        "https://your-vito-url/api/projects/1/servers/29/databases/5" \
        --header "Authorization: Bearer YOUR-API-KEY" \
        --header "Content-Type: application/json" \
        --header "Accept: application/json"

    $client = new \GuzzleHttp\Client();
    $url = 'https://your-vito-url/api/projects/1/servers/29/databases/5';
    $response = $client->delete(
        $url,
        [
            'headers' => [
                'Authorization' => 'Bearer YOUR-API-KEY',
                'Content-Type' => 'application/json',
                'Accept' => 'application/json',
            ],
        ]
    );
    $body = $response->getBody();
    print_r(json_decode((string) $body));

    const url = new URL(
        "https://your-vito-url/api/projects/1/servers/29/databases/5"
    );

    const headers = {
        "Authorization": "Bearer YOUR-API-KEY",
        "Content-Type": "application/json",
        "Accept": "application/json",
    };

    fetch(url, {
        method: "DELETE",
        headers,
    }).then(response => response.json());

> Example response (204):

    Empty response

> Received response:

> Request failed with error:

    Tip: Check that you're properly connected to the network.
    If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
    You can check the Dev Tools console for debugging information.

### Request

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

#### Headers

`Authorization`

Example: `Bearer YOUR-API-KEY`

`Content-Type`

Example: `application/json`

`Accept`

Example: `application/json`

#### URL Parameters

`project_id` integer

The ID of the project. Example: `1`

`server_id` integer

The ID of the server. Example: `29`

`database_id` integer

The ID of the database. Example: `5`

# firewall-rules

## list

requires authentication

Get all firewall rules.

> Example request:

    curl --request GET \
        --get "https://your-vito-url/api/projects/1/servers/29/firewall-rules" \
        --header "Authorization: Bearer YOUR-API-KEY" \
        --header "Content-Type: application/json" \
        --header "Accept: application/json"

    $client = new \GuzzleHttp\Client();
    $url = 'https://your-vito-url/api/projects/1/servers/29/firewall-rules';
    $response = $client->get(
        $url,
        [
            'headers' => [
                'Authorization' => 'Bearer YOUR-API-KEY',
                'Content-Type' => 'application/json',
                'Accept' => 'application/json',
            ],
        ]
    );
    $body = $response->getBody();
    print_r(json_decode((string) $body));

    const url = new URL(
        "https://your-vito-url/api/projects/1/servers/29/firewall-rules"
    );

    const headers = {
        "Authorization": "Bearer YOUR-API-KEY",
        "Content-Type": "application/json",
        "Accept": "application/json",
    };

    fetch(url, {
        method: "GET",
        headers,
    }).then(response => response.json());

> Example response (200):

    {
        "data": [
            {
                "id": null,
                "name": "sit",
                "server_id": null,
                "type": "allow",
                "protocol": "tcp",
                "port": 59225,
                "source": "130.41.114.80",
                "mask": 24,
                "note": "test",
                "status": null,
                "created_at": null,
                "updated_at": null
            },
            {
                "id": null,
                "name": "sequi",
                "server_id": null,
                "type": "allow",
                "protocol": "tcp",
                "port": 17864,
                "source": "170.103.31.60",
                "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
        }
    }

> Received response:

> Request failed with error:

    Tip: Check that you're properly connected to the network.
    If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
    You can check the Dev Tools console for debugging information.

### Request

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

#### Headers

`Authorization`

Example: `Bearer YOUR-API-KEY`

`Content-Type`

Example: `application/json`

`Accept`

Example: `application/json`

#### URL Parameters

`project_id` integer

The ID of the project. Example: `1`

`server_id` integer

The ID of the server. Example: `29`

## create

requires authentication

Create a new firewall rule.

> Example request:

    curl --request POST \
        "https://your-vito-url/api/projects/1/servers/29/firewall-rules" \
        --header "Authorization: Bearer YOUR-API-KEY" \
        --header "Content-Type: application/json" \
        --header "Accept: application/json" \
        --data "{
        \"name\": \"eum\",
        \"type\": \"deny\",
        \"protocol\": \"udp\",
        \"port\": \"incidunt\",
        \"source\": \"quisquam\",
        \"mask\": \"0\"
    }"

    $client = new \GuzzleHttp\Client();
    $url = 'https://your-vito-url/api/projects/1/servers/29/firewall-rules';
    $response = $client->post(
        $url,
        [
            'headers' => [
                'Authorization' => 'Bearer YOUR-API-KEY',
                'Content-Type' => 'application/json',
                'Accept' => 'application/json',
            ],
            'json' => [
                'name' => 'eum',
                'type' => 'deny',
                'protocol' => 'udp',
                'port' => 'incidunt',
                'source' => 'quisquam',
                'mask' => '0',
            ],
        ]
    );
    $body = $response->getBody();
    print_r(json_decode((string) $body));

    const url = new URL(
        "https://your-vito-url/api/projects/1/servers/29/firewall-rules"
    );

    const headers = {
        "Authorization": "Bearer YOUR-API-KEY",
        "Content-Type": "application/json",
        "Accept": "application/json",
    };

    let body = {
        "name": "eum",
        "type": "deny",
        "protocol": "udp",
        "port": "incidunt",
        "source": "quisquam",
        "mask": "0"
    };

    fetch(url, {
        method: "POST",
        headers,
        body: JSON.stringify(body),
    }).then(response => response.json());

> Example response (200):

    {
        "id": null,
        "name": "consequuntur",
        "server_id": null,
        "type": "allow",
        "protocol": "tcp",
        "port": 50101,
        "source": "133.245.21.1",
        "mask": 24,
        "note": "test",
        "status": null,
        "created_at": null,
        "updated_at": null
    }

> Received response:

> Request failed with error:

    Tip: Check that you're properly connected to the network.
    If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
    You can check the Dev Tools console for debugging information.

### Request

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

#### Headers

`Authorization`

Example: `Bearer YOUR-API-KEY`

`Content-Type`

Example: `application/json`

`Accept`

Example: `application/json`

#### URL Parameters

`project_id` integer

The ID of the project. Example: `1`

`server_id` integer

The ID of the server. Example: `29`

#### Body Parameters

`name` string

Example: `eum`

`type` string

Example: `deny`

Must be one of:

- `allow`
- `deny`

`protocol` string

Example: `udp`

Must be one of:

- `tcp`
- `udp`

`port` string

Example: `incidunt`

`source` string optional

Example: `quisquam`

`mask` string

Mask for source IP. Example: `0`

## edit

requires authentication

Update an existing firewall rule.

> Example request:

    curl --request PUT \
        "https://your-vito-url/api/projects/1/servers/29/firewall-rules/85" \
        --header "Authorization: Bearer YOUR-API-KEY" \
        --header "Content-Type: application/json" \
        --header "Accept: application/json" \
        --data "{
        \"name\": \"dolor\",
        \"type\": \"deny\",
        \"protocol\": \"tcp\",
        \"port\": \"qui\",
        \"source\": \"porro\",
        \"mask\": \"0\"
    }"

    $client = new \GuzzleHttp\Client();
    $url = 'https://your-vito-url/api/projects/1/servers/29/firewall-rules/85';
    $response = $client->put(
        $url,
        [
            'headers' => [
                'Authorization' => 'Bearer YOUR-API-KEY',
                'Content-Type' => 'application/json',
                'Accept' => 'application/json',
            ],
            'json' => [
                'name' => 'dolor',
                'type' => 'deny',
                'protocol' => 'tcp',
                'port' => 'qui',
                'source' => 'porro',
                'mask' => '0',
            ],
        ]
    );
    $body = $response->getBody();
    print_r(json_decode((string) $body));

    const url = new URL(
        "https://your-vito-url/api/projects/1/servers/29/firewall-rules/85"
    );

    const headers = {
        "Authorization": "Bearer YOUR-API-KEY",
        "Content-Type": "application/json",
        "Accept": "application/json",
    };

    let body = {
        "name": "dolor",
        "type": "deny",
        "protocol": "tcp",
        "port": "qui",
        "source": "porro",
        "mask": "0"
    };

    fetch(url, {
        method: "PUT",
        headers,
        body: JSON.stringify(body),
    }).then(response => response.json());

> Example response (200):

    {
        "id": null,
        "name": "numquam",
        "server_id": null,
        "type": "allow",
        "protocol": "tcp",
        "port": 52010,
        "source": "159.227.119.185",
        "mask": 24,
        "note": "test",
        "status": null,
        "created_at": null,
        "updated_at": null
    }

> Received response:

> Request failed with error:

    Tip: Check that you're properly connected to the network.
    If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
    You can check the Dev Tools console for debugging information.

### Request

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

#### Headers

`Authorization`

Example: `Bearer YOUR-API-KEY`

`Content-Type`

Example: `application/json`

`Accept`

Example: `application/json`

#### URL Parameters

`project_id` integer

The ID of the project. Example: `1`

`server_id` integer

The ID of the server. Example: `29`

`firewallRule_id` integer

The ID of the firewallRule. Example: `85`

#### Body Parameters

`name` string

Example: `dolor`

`type` string

Example: `deny`

Must be one of:

- `allow`
- `deny`

`protocol` string

Example: `tcp`

Must be one of:

- `tcp`
- `udp`

`port` string

Example: `qui`

`source` string optional

Example: `porro`

`mask` string

Mask for source IP. Example: `0`

## show

requires authentication

Get a firewall rule by ID.

> Example request:

    curl --request GET \
        --get "https://your-vito-url/api/projects/1/servers/29/firewall-rules/85" \
        --header "Authorization: Bearer YOUR-API-KEY" \
        --header "Content-Type: application/json" \
        --header "Accept: application/json"

    $client = new \GuzzleHttp\Client();
    $url = 'https://your-vito-url/api/projects/1/servers/29/firewall-rules/85';
    $response = $client->get(
        $url,
        [
            'headers' => [
                'Authorization' => 'Bearer YOUR-API-KEY',
                'Content-Type' => 'application/json',
                'Accept' => 'application/json',
            ],
        ]
    );
    $body = $response->getBody();
    print_r(json_decode((string) $body));

    const url = new URL(
        "https://your-vito-url/api/projects/1/servers/29/firewall-rules/85"
    );

    const headers = {
        "Authorization": "Bearer YOUR-API-KEY",
        "Content-Type": "application/json",
        "Accept": "application/json",
    };

    fetch(url, {
        method: "GET",
        headers,
    }).then(response => response.json());

> Example response (200):

    {
        "id": null,
        "name": "voluptatem",
        "server_id": null,
        "type": "allow",
        "protocol": "tcp",
        "port": 5812,
        "source": "122.105.250.56",
        "mask": 24,
        "note": "test",
        "status": null,
        "created_at": null,
        "updated_at": null
    }

> Received response:

> Request failed with error:

    Tip: Check that you're properly connected to the network.
    If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
    You can check the Dev Tools console for debugging information.

### Request

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

#### Headers

`Authorization`

Example: `Bearer YOUR-API-KEY`

`Content-Type`

Example: `application/json`

`Accept`

Example: `application/json`

#### URL Parameters

`project_id` integer

The ID of the project. Example: `1`

`server_id` integer

The ID of the server. Example: `29`

`firewallRule_id` integer

The ID of the firewallRule. Example: `85`

## delete

requires authentication

Delete firewall rule.

> Example request:

    curl --request DELETE \
        "https://your-vito-url/api/projects/1/servers/29/firewall-rules/85" \
        --header "Authorization: Bearer YOUR-API-KEY" \
        --header "Content-Type: application/json" \
        --header "Accept: application/json"

    $client = new \GuzzleHttp\Client();
    $url = 'https://your-vito-url/api/projects/1/servers/29/firewall-rules/85';
    $response = $client->delete(
        $url,
        [
            'headers' => [
                'Authorization' => 'Bearer YOUR-API-KEY',
                'Content-Type' => 'application/json',
                'Accept' => 'application/json',
            ],
        ]
    );
    $body = $response->getBody();
    print_r(json_decode((string) $body));

    const url = new URL(
        "https://your-vito-url/api/projects/1/servers/29/firewall-rules/85"
    );

    const headers = {
        "Authorization": "Bearer YOUR-API-KEY",
        "Content-Type": "application/json",
        "Accept": "application/json",
    };

    fetch(url, {
        method: "DELETE",
        headers,
    }).then(response => response.json());

> Example response (204):

    Empty response

> Received response:

> Request failed with error:

    Tip: Check that you're properly connected to the network.
    If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
    You can check the Dev Tools console for debugging information.

### Request

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

#### Headers

`Authorization`

Example: `Bearer YOUR-API-KEY`

`Content-Type`

Example: `application/json`

`Accept`

Example: `application/json`

#### URL Parameters

`project_id` integer

The ID of the project. Example: `1`

`server_id` integer

The ID of the server. Example: `29`

`firewallRule_id` integer

The ID of the firewallRule. Example: `85`

# general

## health-check

> Example request:

    curl --request GET \
        --get "https://your-vito-url/api/health" \
        --header "Content-Type: application/json" \
        --header "Accept: application/json"

    $client = new \GuzzleHttp\Client();
    $url = 'https://your-vito-url/api/health';
    $response = $client->get(
        $url,
        [
            'headers' => [
                'Content-Type' => 'application/json',
                'Accept' => 'application/json',
            ],
        ]
    );
    $body = $response->getBody();
    print_r(json_decode((string) $body));

    const url = new URL(
        "https://your-vito-url/api/health"
    );

    const headers = {
        "Content-Type": "application/json",
        "Accept": "application/json",
    };

    fetch(url, {
        method: "GET",
        headers,
    }).then(response => response.json());

> Example response (200):

Show headers

    cache-control: no-cache, private
    content-type: application/json
    x-ratelimit-limit: 60
    x-ratelimit-remaining: 59
    access-control-allow-origin: *

    {
        "success": true,
        "version": "2.4.0"
    }

> Received response:

> Request failed with error:

    Tip: Check that you're properly connected to the network.
    If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
    You can check the Dev Tools console for debugging information.

### Request

GET `api/health`

#### Headers

`Content-Type`

Example: `application/json`

`Accept`

Example: `application/json`

# projects

## list

requires authentication

Get all projects.

> Example request:

    curl --request GET \
        --get "https://your-vito-url/api/projects" \
        --header "Authorization: Bearer YOUR-API-KEY" \
        --header "Content-Type: application/json" \
        --header "Accept: application/json"

    $client = new \GuzzleHttp\Client();
    $url = 'https://your-vito-url/api/projects';
    $response = $client->get(
        $url,
        [
            'headers' => [
                'Authorization' => 'Bearer YOUR-API-KEY',
                'Content-Type' => 'application/json',
                'Accept' => 'application/json',
            ],
        ]
    );
    $body = $response->getBody();
    print_r(json_decode((string) $body));

    const url = new URL(
        "https://your-vito-url/api/projects"
    );

    const headers = {
        "Authorization": "Bearer YOUR-API-KEY",
        "Content-Type": "application/json",
        "Accept": "application/json",
    };

    fetch(url, {
        method: "GET",
        headers,
    }).then(response => response.json());

> Example response (200):

    {
        "data": [
            {
                "id": 3,
                "name": "Selina Wintheiser DDS",
                "created_at": "2025-04-05T17:35:55.000000Z",
                "updated_at": "2025-04-05T17:35:55.000000Z"
            },
            {
                "id": 4,
                "name": "Shanna Deckow",
                "created_at": "2025-04-05T17:35:55.000000Z",
                "updated_at": "2025-04-05T17:35:55.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
        }
    }

> Received response:

> Request failed with error:

    Tip: Check that you're properly connected to the network.
    If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
    You can check the Dev Tools console for debugging information.

### Request

GET `api/projects`

#### Headers

`Authorization`

Example: `Bearer YOUR-API-KEY`

`Content-Type`

Example: `application/json`

`Accept`

Example: `application/json`

## create

requires authentication

Create a new project.

> Example request:

    curl --request POST \
        "https://your-vito-url/api/projects" \
        --header "Authorization: Bearer YOUR-API-KEY" \
        --header "Content-Type: application/json" \
        --header "Accept: application/json" \
        --data "{
        \"name\": \"quibusdam\"
    }"

    $client = new \GuzzleHttp\Client();
    $url = 'https://your-vito-url/api/projects';
    $response = $client->post(
        $url,
        [
            'headers' => [
                'Authorization' => 'Bearer YOUR-API-KEY',
                'Content-Type' => 'application/json',
                'Accept' => 'application/json',
            ],
            'json' => [
                'name' => 'quibusdam',
            ],
        ]
    );
    $body = $response->getBody();
    print_r(json_decode((string) $body));

    const url = new URL(
        "https://your-vito-url/api/projects"
    );

    const headers = {
        "Authorization": "Bearer YOUR-API-KEY",
        "Content-Type": "application/json",
        "Accept": "application/json",
    };

    let body = {
        "name": "quibusdam"
    };

    fetch(url, {
        method: "POST",
        headers,
        body: JSON.stringify(body),
    }).then(response => response.json());

> Example response (200):

    {
        "id": 3,
        "name": "Mr. Johathan Koch",
        "created_at": "2025-04-05T17:35:55.000000Z",
        "updated_at": "2025-04-05T17:35:55.000000Z"
    }

> Received response:

> Request failed with error:

    Tip: Check that you're properly connected to the network.
    If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
    You can check the Dev Tools console for debugging information.

### Request

POST `api/projects`

#### Headers

`Authorization`

Example: `Bearer YOUR-API-KEY`

`Content-Type`

Example: `application/json`

`Accept`

Example: `application/json`

#### Body Parameters

`name` string

The name of the project. Example: `quibusdam`

## show

requires authentication

Get a project by ID.

> Example request:

    curl --request GET \
        --get "https://your-vito-url/api/projects/1" \
        --header "Authorization: Bearer YOUR-API-KEY" \
        --header "Content-Type: application/json" \
        --header "Accept: application/json"

    $client = new \GuzzleHttp\Client();
    $url = 'https://your-vito-url/api/projects/1';
    $response = $client->get(
        $url,
        [
            'headers' => [
                'Authorization' => 'Bearer YOUR-API-KEY',
                'Content-Type' => 'application/json',
                'Accept' => 'application/json',
            ],
        ]
    );
    $body = $response->getBody();
    print_r(json_decode((string) $body));

    const url = new URL(
        "https://your-vito-url/api/projects/1"
    );

    const headers = {
        "Authorization": "Bearer YOUR-API-KEY",
        "Content-Type": "application/json",
        "Accept": "application/json",
    };

    fetch(url, {
        method: "GET",
        headers,
    }).then(response => response.json());

> Example response (200):

    {
        "id": 3,
        "name": "Jorge Schulist V",
        "created_at": "2025-04-05T17:35:55.000000Z",
        "updated_at": "2025-04-05T17:35:55.000000Z"
    }

> Received response:

> Request failed with error:

    Tip: Check that you're properly connected to the network.
    If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
    You can check the Dev Tools console for debugging information.

### Request

GET `api/projects/{id}`

#### Headers

`Authorization`

Example: `Bearer YOUR-API-KEY`

`Content-Type`

Example: `application/json`

`Accept`

Example: `application/json`

#### URL Parameters

`id` integer

The ID of the project. Example: `1`

## update

requires authentication

Update project.

> Example request:

    curl --request PUT \
        "https://your-vito-url/api/projects/1" \
        --header "Authorization: Bearer YOUR-API-KEY" \
        --header "Content-Type: application/json" \
        --header "Accept: application/json" \
        --data "{
        \"name\": \"enim\"
    }"

    $client = new \GuzzleHttp\Client();
    $url = 'https://your-vito-url/api/projects/1';
    $response = $client->put(
        $url,
        [
            'headers' => [
                'Authorization' => 'Bearer YOUR-API-KEY',
                'Content-Type' => 'application/json',
                'Accept' => 'application/json',
            ],
            'json' => [
                'name' => 'enim',
            ],
        ]
    );
    $body = $response->getBody();
    print_r(json_decode((string) $body));

    const url = new URL(
        "https://your-vito-url/api/projects/1"
    );

    const headers = {
        "Authorization": "Bearer YOUR-API-KEY",
        "Content-Type": "application/json",
        "Accept": "application/json",
    };

    let body = {
        "name": "enim"
    };

    fetch(url, {
        method: "PUT",
        headers,
        body: JSON.stringify(body),
    }).then(response => response.json());

> Example response (200):

    {
        "id": 3,
        "name": "Annie Windler",
        "created_at": "2025-04-05T17:35:55.000000Z",
        "updated_at": "2025-04-05T17:35:55.000000Z"
    }

> Received response:

> Request failed with error:

    Tip: Check that you're properly connected to the network.
    If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
    You can check the Dev Tools console for debugging information.

### Request

PUT `api/projects/{id}`

#### Headers

`Authorization`

Example: `Bearer YOUR-API-KEY`

`Content-Type`

Example: `application/json`

`Accept`

Example: `application/json`

#### URL Parameters

`id` integer

The ID of the project. Example: `1`

#### Body Parameters

`name` string

The name of the project. Example: `enim`

## delete

requires authentication

Delete project.

> Example request:

    curl --request DELETE \
        "https://your-vito-url/api/projects/1" \
        --header "Authorization: Bearer YOUR-API-KEY" \
        --header "Content-Type: application/json" \
        --header "Accept: application/json"

    $client = new \GuzzleHttp\Client();
    $url = 'https://your-vito-url/api/projects/1';
    $response = $client->delete(
        $url,
        [
            'headers' => [
                'Authorization' => 'Bearer YOUR-API-KEY',
                'Content-Type' => 'application/json',
                'Accept' => 'application/json',
            ],
        ]
    );
    $body = $response->getBody();
    print_r(json_decode((string) $body));

    const url = new URL(
        "https://your-vito-url/api/projects/1"
    );

    const headers = {
        "Authorization": "Bearer YOUR-API-KEY",
        "Content-Type": "application/json",
        "Accept": "application/json",
    };

    fetch(url, {
        method: "DELETE",
        headers,
    }).then(response => response.json());

> Example response (204):

    Empty response

> Received response:

> Request failed with error:

    Tip: Check that you're properly connected to the network.
    If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
    You can check the Dev Tools console for debugging information.

### Request

DELETE `api/projects/{project_id}`

#### Headers

`Authorization`

Example: `Bearer YOUR-API-KEY`

`Content-Type`

Example: `application/json`

`Accept`

Example: `application/json`

#### URL Parameters

`project_id` integer

The ID of the project. Example: `1`

# redirects

## index

requires authentication

Get all redirects.

> Example request:

    curl --request GET \
        --get "https://your-vito-url/api/projects/1/servers/29/sites/44/redirects" \
        --header "Authorization: Bearer YOUR-API-KEY" \
        --header "Content-Type: application/json" \
        --header "Accept: application/json"

    $client = new \GuzzleHttp\Client();
    $url = 'https://your-vito-url/api/projects/1/servers/29/sites/44/redirects';
    $response = $client->get(
        $url,
        [
            'headers' => [
                'Authorization' => 'Bearer YOUR-API-KEY',
                'Content-Type' => 'application/json',
                'Accept' => 'application/json',
            ],
        ]
    );
    $body = $response->getBody();
    print_r(json_decode((string) $body));

    const url = new URL(
        "https://your-vito-url/api/projects/1/servers/29/sites/44/redirects"
    );

    const headers = {
        "Authorization": "Bearer YOUR-API-KEY",
        "Content-Type": "application/json",
        "Accept": "application/json",
    };

    fetch(url, {
        method: "GET",
        headers,
    }).then(response => response.json());

> Example response (200):

    {
        "data": [
            {
                "id": null,
                "site_id": null,
                "mode": 301,
                "from": "eaque",
                "to": "http://www.windler.info/delectus-facilis-assumenda-consequatur-impedit-hic-dolorem-non-dolore.html",
                "status": "ready",
                "created_at": null,
                "updated_at": null
            },
            {
                "id": null,
                "site_id": null,
                "mode": 308,
                "from": "neque",
                "to": "http://raynor.biz/velit-a-tempore-quas-explicabo-doloremque",
                "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
        }
    }

> Received response:

> Request failed with error:

    Tip: Check that you're properly connected to the network.
    If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
    You can check the Dev Tools console for debugging information.

### Request

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

#### Headers

`Authorization`

Example: `Bearer YOUR-API-KEY`

`Content-Type`

Example: `application/json`

`Accept`

Example: `application/json`

#### URL Parameters

`project_id` integer

The ID of the project. Example: `1`

`server_id` integer

The ID of the server. Example: `29`

`site_id` integer

The ID of the site. Example: `44`

## create

requires authentication

Create a new redirect.

> Example request:

    curl --request POST \
        "https://your-vito-url/api/projects/1/servers/29/sites/44/redirects" \
        --header "Authorization: Bearer YOUR-API-KEY" \
        --header "Content-Type: application/json" \
        --header "Accept: application/json" \
        --data "{
        \"from\": \"qui\",
        \"to\": \"voluptatum\",
        \"mode\": 302
    }"

    $client = new \GuzzleHttp\Client();
    $url = 'https://your-vito-url/api/projects/1/servers/29/sites/44/redirects';
    $response = $client->post(
        $url,
        [
            'headers' => [
                'Authorization' => 'Bearer YOUR-API-KEY',
                'Content-Type' => 'application/json',
                'Accept' => 'application/json',
            ],
            'json' => [
                'from' => 'qui',
                'to' => 'voluptatum',
                'mode' => 302,
            ],
        ]
    );
    $body = $response->getBody();
    print_r(json_decode((string) $body));

    const url = new URL(
        "https://your-vito-url/api/projects/1/servers/29/sites/44/redirects"
    );

    const headers = {
        "Authorization": "Bearer YOUR-API-KEY",
        "Content-Type": "application/json",
        "Accept": "application/json",
    };

    let body = {
        "from": "qui",
        "to": "voluptatum",
        "mode": 302
    };

    fetch(url, {
        method: "POST",
        headers,
        body: JSON.stringify(body),
    }).then(response => response.json());

> Example response (200):

> Received response:

> Request failed with error:

    Tip: Check that you're properly connected to the network.
    If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
    You can check the Dev Tools console for debugging information.

### Request

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

#### Headers

`Authorization`

Example: `Bearer YOUR-API-KEY`

`Content-Type`

Example: `application/json`

`Accept`

Example: `application/json`

#### URL Parameters

`project_id` integer

The ID of the project. Example: `1`

`server_id` integer

The ID of the server. Example: `29`

`site_id` integer

The ID of the site. Example: `44`

#### Body Parameters

`from` string

Example: `qui`

`to` string

Example: `voluptatum`

`mode` string

Example: `302`

Must be one of:

- `301`
- `302`
- `307`
- `308`

## delete

requires authentication

Delete a redirect.

> Example request:

    curl --request DELETE \
        "https://your-vito-url/api/projects/1/servers/29/sites/44/redirects/9" \
        --header "Authorization: Bearer YOUR-API-KEY" \
        --header "Content-Type: application/json" \
        --header "Accept: application/json"

    $client = new \GuzzleHttp\Client();
    $url = 'https://your-vito-url/api/projects/1/servers/29/sites/44/redirects/9';
    $response = $client->delete(
        $url,
        [
            'headers' => [
                'Authorization' => 'Bearer YOUR-API-KEY',
                'Content-Type' => 'application/json',
                'Accept' => 'application/json',
            ],
        ]
    );
    $body = $response->getBody();
    print_r(json_decode((string) $body));

    const url = new URL(
        "https://your-vito-url/api/projects/1/servers/29/sites/44/redirects/9"
    );

    const headers = {
        "Authorization": "Bearer YOUR-API-KEY",
        "Content-Type": "application/json",
        "Accept": "application/json",
    };

    fetch(url, {
        method: "DELETE",
        headers,
    }).then(response => response.json());

> Example response (204):

    Empty response

> Received response:

> Request failed with error:

    Tip: Check that you're properly connected to the network.
    If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
    You can check the Dev Tools console for debugging information.

### Request

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

#### Headers

`Authorization`

Example: `Bearer YOUR-API-KEY`

`Content-Type`

Example: `application/json`

`Accept`

Example: `application/json`

#### URL Parameters

`project_id` integer

The ID of the project. Example: `1`

`server_id` integer

The ID of the server. Example: `29`

`site_id` integer

The ID of the site. Example: `44`

`redirect_id` integer

The ID of the redirect. Example: `9`

# server-providers

## list

requires authentication

> Example request:

    curl --request GET \
        --get "https://your-vito-url/api/projects/1/server-providers" \
        --header "Authorization: Bearer YOUR-API-KEY" \
        --header "Content-Type: application/json" \
        --header "Accept: application/json"

    $client = new \GuzzleHttp\Client();
    $url = 'https://your-vito-url/api/projects/1/server-providers';
    $response = $client->get(
        $url,
        [
            'headers' => [
                'Authorization' => 'Bearer YOUR-API-KEY',
                'Content-Type' => 'application/json',
                'Accept' => 'application/json',
            ],
        ]
    );
    $body = $response->getBody();
    print_r(json_decode((string) $body));

    const url = new URL(
        "https://your-vito-url/api/projects/1/server-providers"
    );

    const headers = {
        "Authorization": "Bearer YOUR-API-KEY",
        "Content-Type": "application/json",
        "Accept": "application/json",
    };

    fetch(url, {
        method: "GET",
        headers,
    }).then(response => response.json());

> Example response (200):

    {
        "data": [
            {
                "id": 3,
                "project_id": null,
                "global": true,
                "name": "ducimus",
                "provider": "digitalocean",
                "created_at": "2025-04-05T17:35:55.000000Z",
                "updated_at": "2025-04-05T17:35:55.000000Z"
            },
            {
                "id": 4,
                "project_id": null,
                "global": true,
                "name": "nesciunt",
                "provider": "hetzner",
                "created_at": "2025-04-05T17:35:55.000000Z",
                "updated_at": "2025-04-05T17:35:55.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
        }
    }

> Received response:

> Request failed with error:

    Tip: Check that you're properly connected to the network.
    If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
    You can check the Dev Tools console for debugging information.

### Request

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

#### Headers

`Authorization`

Example: `Bearer YOUR-API-KEY`

`Content-Type`

Example: `application/json`

`Accept`

Example: `application/json`

#### URL Parameters

`project_id` integer

The ID of the project. Example: `1`

## create

requires authentication

> Example request:

    curl --request POST \
        "https://your-vito-url/api/projects/1/server-providers" \
        --header "Authorization: Bearer YOUR-API-KEY" \
        --header "Content-Type: application/json" \
        --header "Accept: application/json" \
        --data "{
        \"provider\": \"sunt\",
        \"name\": \"aut\",
        \"token\": \"id\",
        \"key\": \"porro\",
        \"secret\": \"voluptas\"
    }"

    $client = new \GuzzleHttp\Client();
    $url = 'https://your-vito-url/api/projects/1/server-providers';
    $response = $client->post(
        $url,
        [
            'headers' => [
                'Authorization' => 'Bearer YOUR-API-KEY',
                'Content-Type' => 'application/json',
                'Accept' => 'application/json',
            ],
            'json' => [
                'provider' => 'sunt',
                'name' => 'aut',
                'token' => 'id',
                'key' => 'porro',
                'secret' => 'voluptas',
            ],
        ]
    );
    $body = $response->getBody();
    print_r(json_decode((string) $body));

    const url = new URL(
        "https://your-vito-url/api/projects/1/server-providers"
    );

    const headers = {
        "Authorization": "Bearer YOUR-API-KEY",
        "Content-Type": "application/json",
        "Accept": "application/json",
    };

    let body = {
        "provider": "sunt",
        "name": "aut",
        "token": "id",
        "key": "porro",
        "secret": "voluptas"
    };

    fetch(url, {
        method: "POST",
        headers,
        body: JSON.stringify(body),
    }).then(response => response.json());

> Example response (200):

    {
        "id": 3,
        "project_id": null,
        "global": true,
        "name": "nemo",
        "provider": "linode",
        "created_at": "2025-04-05T17:35:56.000000Z",
        "updated_at": "2025-04-05T17:35:56.000000Z"
    }

> Received response:

> Request failed with error:

    Tip: Check that you're properly connected to the network.
    If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
    You can check the Dev Tools console for debugging information.

### Request

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

#### Headers

`Authorization`

Example: `Bearer YOUR-API-KEY`

`Content-Type`

Example: `application/json`

`Accept`

Example: `application/json`

#### URL Parameters

`project_id` integer

The ID of the project. Example: `1`

#### Body Parameters

`provider` string

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

`name` string

The name of the server provider. Example: `aut`

`token` string

The token if provider requires api token Example: `id`

`key` string

The key if provider requires key Example: `porro`

`secret` string

The secret if provider requires key Example: `voluptas`

## show

requires authentication

> Example request:

    curl --request GET \
        --get "https://your-vito-url/api/projects/1/server-providers/1" \
        --header "Authorization: Bearer YOUR-API-KEY" \
        --header "Content-Type: application/json" \
        --header "Accept: application/json"

    $client = new \GuzzleHttp\Client();
    $url = 'https://your-vito-url/api/projects/1/server-providers/1';
    $response = $client->get(
        $url,
        [
            'headers' => [
                'Authorization' => 'Bearer YOUR-API-KEY',
                'Content-Type' => 'application/json',
                'Accept' => 'application/json',
            ],
        ]
    );
    $body = $response->getBody();
    print_r(json_decode((string) $body));

    const url = new URL(
        "https://your-vito-url/api/projects/1/server-providers/1"
    );

    const headers = {
        "Authorization": "Bearer YOUR-API-KEY",
        "Content-Type": "application/json",
        "Accept": "application/json",
    };

    fetch(url, {
        method: "GET",
        headers,
    }).then(response => response.json());

> Example response (200):

    {
        "id": 3,
        "project_id": null,
        "global": true,
        "name": "ut",
        "provider": "aws",
        "created_at": "2025-04-05T17:35:56.000000Z",
        "updated_at": "2025-04-05T17:35:56.000000Z"
    }

> Received response:

> Request failed with error:

    Tip: Check that you're properly connected to the network.
    If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
    You can check the Dev Tools console for debugging information.

### Request

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

#### Headers

`Authorization`

Example: `Bearer YOUR-API-KEY`

`Content-Type`

Example: `application/json`

`Accept`

Example: `application/json`

#### URL Parameters

`project_id` integer

The ID of the project. Example: `1`

`serverProvider_id` integer

The ID of the serverProvider. Example: `1`

## update

requires authentication

> Example request:

    curl --request PUT \
        "https://your-vito-url/api/projects/1/server-providers/1" \
        --header "Authorization: Bearer YOUR-API-KEY" \
        --header "Content-Type: application/json" \
        --header "Accept: application/json" \
        --data "{
        \"name\": \"aliquam\",
        \"global\": true
    }"

    $client = new \GuzzleHttp\Client();
    $url = 'https://your-vito-url/api/projects/1/server-providers/1';
    $response = $client->put(
        $url,
        [
            'headers' => [
                'Authorization' => 'Bearer YOUR-API-KEY',
                'Content-Type' => 'application/json',
                'Accept' => 'application/json',
            ],
            'json' => [
                'name' => 'aliquam',
                'global' => true,
            ],
        ]
    );
    $body = $response->getBody();
    print_r(json_decode((string) $body));

    const url = new URL(
        "https://your-vito-url/api/projects/1/server-providers/1"
    );

    const headers = {
        "Authorization": "Bearer YOUR-API-KEY",
        "Content-Type": "application/json",
        "Accept": "application/json",
    };

    let body = {
        "name": "aliquam",
        "global": true
    };

    fetch(url, {
        method: "PUT",
        headers,
        body: JSON.stringify(body),
    }).then(response => response.json());

> Example response (200):

    {
        "id": 3,
        "project_id": null,
        "global": true,
        "name": "et",
        "provider": "digitalocean",
        "created_at": "2025-04-05T17:35:56.000000Z",
        "updated_at": "2025-04-05T17:35:56.000000Z"
    }

> Received response:

> Request failed with error:

    Tip: Check that you're properly connected to the network.
    If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
    You can check the Dev Tools console for debugging information.

### Request

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

#### Headers

`Authorization`

Example: `Bearer YOUR-API-KEY`

`Content-Type`

Example: `application/json`

`Accept`

Example: `application/json`

#### URL Parameters

`project_id` integer

The ID of the project. Example: `1`

`serverProvider_id` integer

The ID of the serverProvider. Example: `1`

#### Body Parameters

`name` string

The name of the server provider. Example: `aliquam`

`global` string

Accessible in all projects Example: `true`

Must be one of:

- `1`
- ``

## delete

requires authentication

> Example request:

    curl --request DELETE \
        "https://your-vito-url/api/projects/1/server-providers/1" \
        --header "Authorization: Bearer YOUR-API-KEY" \
        --header "Content-Type: application/json" \
        --header "Accept: application/json"

    $client = new \GuzzleHttp\Client();
    $url = 'https://your-vito-url/api/projects/1/server-providers/1';
    $response = $client->delete(
        $url,
        [
            'headers' => [
                'Authorization' => 'Bearer YOUR-API-KEY',
                'Content-Type' => 'application/json',
                'Accept' => 'application/json',
            ],
        ]
    );
    $body = $response->getBody();
    print_r(json_decode((string) $body));

    const url = new URL(
        "https://your-vito-url/api/projects/1/server-providers/1"
    );

    const headers = {
        "Authorization": "Bearer YOUR-API-KEY",
        "Content-Type": "application/json",
        "Accept": "application/json",
    };

    fetch(url, {
        method: "DELETE",
        headers,
    }).then(response => response.json());

> Example response (204):

    Empty response

> Received response:

> Request failed with error:

    Tip: Check that you're properly connected to the network.
    If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
    You can check the Dev Tools console for debugging information.

### Request

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

#### Headers

`Authorization`

Example: `Bearer YOUR-API-KEY`

`Content-Type`

Example: `application/json`

`Accept`

Example: `application/json`

#### URL Parameters

`project_id` integer

The ID of the project. Example: `1`

`serverProvider_id` integer

The ID of the serverProvider. Example: `1`

# servers

## list

requires authentication

Get all servers in a project.

> Example request:

    curl --request GET \
        --get "https://your-vito-url/api/projects/1/servers" \
        --header "Authorization: Bearer YOUR-API-KEY" \
        --header "Content-Type: application/json" \
        --header "Accept: application/json"

    $client = new \GuzzleHttp\Client();
    $url = 'https://your-vito-url/api/projects/1/servers';
    $response = $client->get(
        $url,
        [
            'headers' => [
                'Authorization' => 'Bearer YOUR-API-KEY',
                'Content-Type' => 'application/json',
                'Accept' => 'application/json',
            ],
        ]
    );
    $body = $response->getBody();
    print_r(json_decode((string) $body));

    const url = new URL(
        "https://your-vito-url/api/projects/1/servers"
    );

    const headers = {
        "Authorization": "Bearer YOUR-API-KEY",
        "Content-Type": "application/json",
        "Accept": "application/json",
    };

    fetch(url, {
        method: "GET",
        headers,
    }).then(response => response.json());

> Example response (200):

    {
        "data": [
            {
                "id": null,
                "project_id": null,
                "user_id": null,
                "provider_id": null,
                "name": "Marcelino Rodriguez",
                "ssh_user": "vito",
                "ip": "128.182.22.13",
                "local_ip": "19.119.134.124",
                "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": "Everardo Conn",
                "ssh_user": "vito",
                "ip": "62.215.59.124",
                "local_ip": "32.153.141.12",
                "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
        }
    }

> Received response:

> Request failed with error:

    Tip: Check that you're properly connected to the network.
    If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
    You can check the Dev Tools console for debugging information.

### Request

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

#### Headers

`Authorization`

Example: `Bearer YOUR-API-KEY`

`Content-Type`

Example: `application/json`

`Accept`

Example: `application/json`

#### URL Parameters

`project_id` integer

The ID of the project. Example: `1`

## create

requires authentication

Create a new server.

> Example request:

    curl --request POST \
        "https://your-vito-url/api/projects/1/servers" \
        --header "Authorization: Bearer YOUR-API-KEY" \
        --header "Content-Type: application/json" \
        --header "Accept: application/json" \
        --data "{
        \"provider\": \"ut\",
        \"server_provider\": \"hetzner\",
        \"region\": \"consectetur\",
        \"plan\": \"voluptatum\",
        \"ip\": \"quisquam\",
        \"port\": \"sapiente\",
        \"name\": \"itaque\",
        \"os\": \"aut\",
        \"webserver\": \"nginx\",
        \"database\": \"postgresql13\",
        \"php\": \"7.4\"
    }"

    $client = new \GuzzleHttp\Client();
    $url = 'https://your-vito-url/api/projects/1/servers';
    $response = $client->post(
        $url,
        [
            'headers' => [
                'Authorization' => 'Bearer YOUR-API-KEY',
                'Content-Type' => 'application/json',
                'Accept' => 'application/json',
            ],
            'json' => [
                'provider' => 'ut',
                'server_provider' => 'hetzner',
                'region' => 'consectetur',
                'plan' => 'voluptatum',
                'ip' => 'quisquam',
                'port' => 'sapiente',
                'name' => 'itaque',
                'os' => 'aut',
                'webserver' => 'nginx',
                'database' => 'postgresql13',
                'php' => '7.4',
            ],
        ]
    );
    $body = $response->getBody();
    print_r(json_decode((string) $body));

    const url = new URL(
        "https://your-vito-url/api/projects/1/servers"
    );

    const headers = {
        "Authorization": "Bearer YOUR-API-KEY",
        "Content-Type": "application/json",
        "Accept": "application/json",
    };

    let body = {
        "provider": "ut",
        "server_provider": "hetzner",
        "region": "consectetur",
        "plan": "voluptatum",
        "ip": "quisquam",
        "port": "sapiente",
        "name": "itaque",
        "os": "aut",
        "webserver": "nginx",
        "database": "postgresql13",
        "php": "7.4"
    };

    fetch(url, {
        method: "POST",
        headers,
        body: JSON.stringify(body),
    }).then(response => response.json());

> Example response (200):

    {
        "id": null,
        "project_id": null,
        "user_id": null,
        "provider_id": null,
        "name": "Sidney Grant",
        "ssh_user": "vito",
        "ip": "22.232.10.97",
        "local_ip": "107.107.187.150",
        "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
    }

> Received response:

> Request failed with error:

    Tip: Check that you're properly connected to the network.
    If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
    You can check the Dev Tools console for debugging information.

### Request

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

#### Headers

`Authorization`

Example: `Bearer YOUR-API-KEY`

`Content-Type`

Example: `application/json`

`Accept`

Example: `application/json`

#### URL Parameters

`project_id` integer

The ID of the project. Example: `1`

#### Body Parameters

`provider` string

The server provider type Example: `ut`

`server_provider` string

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

Must be one of:

- `custom`
- `hetzner`
- `digitalocean`
- `linode`
- `vultr`

`region` string

Provider region if the provider is not custom Example: `consectetur`

`plan` string

Provider plan if the provider is not custom Example: `voluptatum`

`ip` string

SSH IP address if the provider is custom Example: `quisquam`

`port` string

SSH Port if the provider is custom Example: `sapiente`

`name` string

The name of the server. Example: `itaque`

`os` string

The os of the server Example: `aut`

`webserver` string

Web server Example: `nginx`

Must be one of:

- `none`
- `nginx`

`database` string

Database Example: `postgresql13`

Must be one of:

- `none`
- `mysql57`
- `mysql80`
- `mariadb103`
- `mariadb104`
- `mariadb103`
- `postgresql12`
- `postgresql13`
- `postgresql14`
- `postgresql15`
- `postgresql16`

`php` string

PHP version Example: `7.4`

Must be one of:

- `7.0`
- `7.1`
- `7.2`
- `7.3`
- `7.4`
- `8.0`
- `8.1`
- `8.2`
- `8.3`

## show

requires authentication

Get a server by ID.

> Example request:

    curl --request GET \
        --get "https://your-vito-url/api/projects/1/servers/29" \
        --header "Authorization: Bearer YOUR-API-KEY" \
        --header "Content-Type: application/json" \
        --header "Accept: application/json"

    $client = new \GuzzleHttp\Client();
    $url = 'https://your-vito-url/api/projects/1/servers/29';
    $response = $client->get(
        $url,
        [
            'headers' => [
                'Authorization' => 'Bearer YOUR-API-KEY',
                'Content-Type' => 'application/json',
                'Accept' => 'application/json',
            ],
        ]
    );
    $body = $response->getBody();
    print_r(json_decode((string) $body));

    const url = new URL(
        "https://your-vito-url/api/projects/1/servers/29"
    );

    const headers = {
        "Authorization": "Bearer YOUR-API-KEY",
        "Content-Type": "application/json",
        "Accept": "application/json",
    };

    fetch(url, {
        method: "GET",
        headers,
    }).then(response => response.json());

> Example response (200):

    {
        "id": null,
        "project_id": null,
        "user_id": null,
        "provider_id": null,
        "name": "Maria Zemlak",
        "ssh_user": "vito",
        "ip": "4.166.233.247",
        "local_ip": "92.197.44.184",
        "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
    }

> Received response:

> Request failed with error:

    Tip: Check that you're properly connected to the network.
    If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
    You can check the Dev Tools console for debugging information.

### Request

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

#### Headers

`Authorization`

Example: `Bearer YOUR-API-KEY`

`Content-Type`

Example: `application/json`

`Accept`

Example: `application/json`

#### URL Parameters

`project_id` integer

The ID of the project. Example: `1`

`id` integer

The ID of the server. Example: `29`

## reboot

requires authentication

Reboot a server.

> Example request:

    curl --request POST \
        "https://your-vito-url/api/projects/1/servers/29/reboot" \
        --header "Authorization: Bearer YOUR-API-KEY" \
        --header "Content-Type: application/json" \
        --header "Accept: application/json"

    $client = new \GuzzleHttp\Client();
    $url = 'https://your-vito-url/api/projects/1/servers/29/reboot';
    $response = $client->post(
        $url,
        [
            'headers' => [
                'Authorization' => 'Bearer YOUR-API-KEY',
                'Content-Type' => 'application/json',
                'Accept' => 'application/json',
            ],
        ]
    );
    $body = $response->getBody();
    print_r(json_decode((string) $body));

    const url = new URL(
        "https://your-vito-url/api/projects/1/servers/29/reboot"
    );

    const headers = {
        "Authorization": "Bearer YOUR-API-KEY",
        "Content-Type": "application/json",
        "Accept": "application/json",
    };

    fetch(url, {
        method: "POST",
        headers,
    }).then(response => response.json());

> Example response (204):

    Empty response

> Received response:

> Request failed with error:

    Tip: Check that you're properly connected to the network.
    If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
    You can check the Dev Tools console for debugging information.

### Request

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

#### Headers

`Authorization`

Example: `Bearer YOUR-API-KEY`

`Content-Type`

Example: `application/json`

`Accept`

Example: `application/json`

#### URL Parameters

`project_id` integer

The ID of the project. Example: `1`

`server_id` integer

The ID of the server. Example: `29`

## upgrade

requires authentication

Upgrade server.

> Example request:

    curl --request POST \
        "https://your-vito-url/api/projects/1/servers/29/upgrade" \
        --header "Authorization: Bearer YOUR-API-KEY" \
        --header "Content-Type: application/json" \
        --header "Accept: application/json"

    $client = new \GuzzleHttp\Client();
    $url = 'https://your-vito-url/api/projects/1/servers/29/upgrade';
    $response = $client->post(
        $url,
        [
            'headers' => [
                'Authorization' => 'Bearer YOUR-API-KEY',
                'Content-Type' => 'application/json',
                'Accept' => 'application/json',
            ],
        ]
    );
    $body = $response->getBody();
    print_r(json_decode((string) $body));

    const url = new URL(
        "https://your-vito-url/api/projects/1/servers/29/upgrade"
    );

    const headers = {
        "Authorization": "Bearer YOUR-API-KEY",
        "Content-Type": "application/json",
        "Accept": "application/json",
    };

    fetch(url, {
        method: "POST",
        headers,
    }).then(response => response.json());

> Example response (204):

    Empty response

> Received response:

> Request failed with error:

    Tip: Check that you're properly connected to the network.
    If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
    You can check the Dev Tools console for debugging information.

### Request

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

#### Headers

`Authorization`

Example: `Bearer YOUR-API-KEY`

`Content-Type`

Example: `application/json`

`Accept`

Example: `application/json`

#### URL Parameters

`project_id` integer

The ID of the project. Example: `1`

`server_id` integer

The ID of the server. Example: `29`

## delete

requires authentication

Delete server.

> Example request:

    curl --request DELETE \
        "https://your-vito-url/api/projects/1/servers/29" \
        --header "Authorization: Bearer YOUR-API-KEY" \
        --header "Content-Type: application/json" \
        --header "Accept: application/json"

    $client = new \GuzzleHttp\Client();
    $url = 'https://your-vito-url/api/projects/1/servers/29';
    $response = $client->delete(
        $url,
        [
            'headers' => [
                'Authorization' => 'Bearer YOUR-API-KEY',
                'Content-Type' => 'application/json',
                'Accept' => 'application/json',
            ],
        ]
    );
    $body = $response->getBody();
    print_r(json_decode((string) $body));

    const url = new URL(
        "https://your-vito-url/api/projects/1/servers/29"
    );

    const headers = {
        "Authorization": "Bearer YOUR-API-KEY",
        "Content-Type": "application/json",
        "Accept": "application/json",
    };

    fetch(url, {
        method: "DELETE",
        headers,
    }).then(response => response.json());

> Example response (204):

    Empty response

> Received response:

> Request failed with error:

    Tip: Check that you're properly connected to the network.
    If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
    You can check the Dev Tools console for debugging information.

### Request

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

#### Headers

`Authorization`

Example: `Bearer YOUR-API-KEY`

`Content-Type`

Example: `application/json`

`Accept`

Example: `application/json`

#### URL Parameters

`project_id` integer

The ID of the project. Example: `1`

`server_id` integer

The ID of the server. Example: `29`

# services

## list

requires authentication

Get all services.

> Example request:

    curl --request GET \
        --get "https://your-vito-url/api/projects/1/servers/29/services" \
        --header "Authorization: Bearer YOUR-API-KEY" \
        --header "Content-Type: application/json" \
        --header "Accept: application/json"

    $client = new \GuzzleHttp\Client();
    $url = 'https://your-vito-url/api/projects/1/servers/29/services';
    $response = $client->get(
        $url,
        [
            'headers' => [
                'Authorization' => 'Bearer YOUR-API-KEY',
                'Content-Type' => 'application/json',
                'Accept' => 'application/json',
            ],
        ]
    );
    $body = $response->getBody();
    print_r(json_decode((string) $body));

    const url = new URL(
        "https://your-vito-url/api/projects/1/servers/29/services"
    );

    const headers = {
        "Authorization": "Bearer YOUR-API-KEY",
        "Content-Type": "application/json",
        "Accept": "application/json",
    };

    fetch(url, {
        method: "GET",
        headers,
    }).then(response => response.json());

> Example response (200):

    {
        "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
        }
    }

> Received response:

> Request failed with error:

    Tip: Check that you're properly connected to the network.
    If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
    You can check the Dev Tools console for debugging information.

### Request

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

#### Headers

`Authorization`

Example: `Bearer YOUR-API-KEY`

`Content-Type`

Example: `application/json`

`Accept`

Example: `application/json`

#### URL Parameters

`project_id` integer

The ID of the project. Example: `1`

`server_id` integer

The ID of the server. Example: `29`

## show

requires authentication

Get a service by ID.

> Example request:

    curl --request GET \
        --get "https://your-vito-url/api/projects/1/servers/29/services/169" \
        --header "Authorization: Bearer YOUR-API-KEY" \
        --header "Content-Type: application/json" \
        --header "Accept: application/json"

    $client = new \GuzzleHttp\Client();
    $url = 'https://your-vito-url/api/projects/1/servers/29/services/169';
    $response = $client->get(
        $url,
        [
            'headers' => [
                'Authorization' => 'Bearer YOUR-API-KEY',
                'Content-Type' => 'application/json',
                'Accept' => 'application/json',
            ],
        ]
    );
    $body = $response->getBody();
    print_r(json_decode((string) $body));

    const url = new URL(
        "https://your-vito-url/api/projects/1/servers/29/services/169"
    );

    const headers = {
        "Authorization": "Bearer YOUR-API-KEY",
        "Content-Type": "application/json",
        "Accept": "application/json",
    };

    fetch(url, {
        method: "GET",
        headers,
    }).then(response => response.json());

> Example response (200):

    {
        "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
    }

> Received response:

> Request failed with error:

    Tip: Check that you're properly connected to the network.
    If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
    You can check the Dev Tools console for debugging information.

### Request

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

#### Headers

`Authorization`

Example: `Bearer YOUR-API-KEY`

`Content-Type`

Example: `application/json`

`Accept`

Example: `application/json`

#### URL Parameters

`project_id` integer

The ID of the project. Example: `1`

`server_id` integer

The ID of the server. Example: `29`

`id` integer

The ID of the service. Example: `169`

## start

requires authentication

Start service.

> Example request:

    curl --request POST \
        "https://your-vito-url/api/projects/1/servers/29/services/169/start" \
        --header "Authorization: Bearer YOUR-API-KEY" \
        --header "Content-Type: application/json" \
        --header "Accept: application/json"

    $client = new \GuzzleHttp\Client();
    $url = 'https://your-vito-url/api/projects/1/servers/29/services/169/start';
    $response = $client->post(
        $url,
        [
            'headers' => [
                'Authorization' => 'Bearer YOUR-API-KEY',
                'Content-Type' => 'application/json',
                'Accept' => 'application/json',
            ],
        ]
    );
    $body = $response->getBody();
    print_r(json_decode((string) $body));

    const url = new URL(
        "https://your-vito-url/api/projects/1/servers/29/services/169/start"
    );

    const headers = {
        "Authorization": "Bearer YOUR-API-KEY",
        "Content-Type": "application/json",
        "Accept": "application/json",
    };

    fetch(url, {
        method: "POST",
        headers,
    }).then(response => response.json());

> Example response (204):

    Empty response

> Received response:

> Request failed with error:

    Tip: Check that you're properly connected to the network.
    If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
    You can check the Dev Tools console for debugging information.

### Request

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

#### Headers

`Authorization`

Example: `Bearer YOUR-API-KEY`

`Content-Type`

Example: `application/json`

`Accept`

Example: `application/json`

#### URL Parameters

`project_id` integer

The ID of the project. Example: `1`

`server_id` integer

The ID of the server. Example: `29`

`service_id` integer

The ID of the service. Example: `169`

## stop

requires authentication

Stop service.

> Example request:

    curl --request POST \
        "https://your-vito-url/api/projects/1/servers/29/services/169/stop" \
        --header "Authorization: Bearer YOUR-API-KEY" \
        --header "Content-Type: application/json" \
        --header "Accept: application/json"

    $client = new \GuzzleHttp\Client();
    $url = 'https://your-vito-url/api/projects/1/servers/29/services/169/stop';
    $response = $client->post(
        $url,
        [
            'headers' => [
                'Authorization' => 'Bearer YOUR-API-KEY',
                'Content-Type' => 'application/json',
                'Accept' => 'application/json',
            ],
        ]
    );
    $body = $response->getBody();
    print_r(json_decode((string) $body));

    const url = new URL(
        "https://your-vito-url/api/projects/1/servers/29/services/169/stop"
    );

    const headers = {
        "Authorization": "Bearer YOUR-API-KEY",
        "Content-Type": "application/json",
        "Accept": "application/json",
    };

    fetch(url, {
        method: "POST",
        headers,
    }).then(response => response.json());

> Example response (204):

    Empty response

> Received response:

> Request failed with error:

    Tip: Check that you're properly connected to the network.
    If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
    You can check the Dev Tools console for debugging information.

### Request

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

#### Headers

`Authorization`

Example: `Bearer YOUR-API-KEY`

`Content-Type`

Example: `application/json`

`Accept`

Example: `application/json`

#### URL Parameters

`project_id` integer

The ID of the project. Example: `1`

`server_id` integer

The ID of the server. Example: `29`

`service_id` integer

The ID of the service. Example: `169`

## restart

requires authentication

Restart service.

> Example request:

    curl --request POST \
        "https://your-vito-url/api/projects/1/servers/29/services/169/restart" \
        --header "Authorization: Bearer YOUR-API-KEY" \
        --header "Content-Type: application/json" \
        --header "Accept: application/json"

    $client = new \GuzzleHttp\Client();
    $url = 'https://your-vito-url/api/projects/1/servers/29/services/169/restart';
    $response = $client->post(
        $url,
        [
            'headers' => [
                'Authorization' => 'Bearer YOUR-API-KEY',
                'Content-Type' => 'application/json',
                'Accept' => 'application/json',
            ],
        ]
    );
    $body = $response->getBody();
    print_r(json_decode((string) $body));

    const url = new URL(
        "https://your-vito-url/api/projects/1/servers/29/services/169/restart"
    );

    const headers = {
        "Authorization": "Bearer YOUR-API-KEY",
        "Content-Type": "application/json",
        "Accept": "application/json",
    };

    fetch(url, {
        method: "POST",
        headers,
    }).then(response => response.json());

> Example response (204):

    Empty response

> Received response:

> Request failed with error:

    Tip: Check that you're properly connected to the network.
    If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
    You can check the Dev Tools console for debugging information.

### Request

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

#### Headers

`Authorization`

Example: `Bearer YOUR-API-KEY`

`Content-Type`

Example: `application/json`

`Accept`

Example: `application/json`

#### URL Parameters

`project_id` integer

The ID of the project. Example: `1`

`server_id` integer

The ID of the server. Example: `29`

`service_id` integer

The ID of the service. Example: `169`

## enable

requires authentication

Enable service.

> Example request:

    curl --request POST \
        "https://your-vito-url/api/projects/1/servers/29/services/169/enable" \
        --header "Authorization: Bearer YOUR-API-KEY" \
        --header "Content-Type: application/json" \
        --header "Accept: application/json"

    $client = new \GuzzleHttp\Client();
    $url = 'https://your-vito-url/api/projects/1/servers/29/services/169/enable';
    $response = $client->post(
        $url,
        [
            'headers' => [
                'Authorization' => 'Bearer YOUR-API-KEY',
                'Content-Type' => 'application/json',
                'Accept' => 'application/json',
            ],
        ]
    );
    $body = $response->getBody();
    print_r(json_decode((string) $body));

    const url = new URL(
        "https://your-vito-url/api/projects/1/servers/29/services/169/enable"
    );

    const headers = {
        "Authorization": "Bearer YOUR-API-KEY",
        "Content-Type": "application/json",
        "Accept": "application/json",
    };

    fetch(url, {
        method: "POST",
        headers,
    }).then(response => response.json());

> Example response (204):

    Empty response

> Received response:

> Request failed with error:

    Tip: Check that you're properly connected to the network.
    If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
    You can check the Dev Tools console for debugging information.

### Request

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

#### Headers

`Authorization`

Example: `Bearer YOUR-API-KEY`

`Content-Type`

Example: `application/json`

`Accept`

Example: `application/json`

#### URL Parameters

`project_id` integer

The ID of the project. Example: `1`

`server_id` integer

The ID of the server. Example: `29`

`service_id` integer

The ID of the service. Example: `169`

## disable

requires authentication

Disable service.

> Example request:

    curl --request POST \
        "https://your-vito-url/api/projects/1/servers/29/services/169/disable" \
        --header "Authorization: Bearer YOUR-API-KEY" \
        --header "Content-Type: application/json" \
        --header "Accept: application/json"

    $client = new \GuzzleHttp\Client();
    $url = 'https://your-vito-url/api/projects/1/servers/29/services/169/disable';
    $response = $client->post(
        $url,
        [
            'headers' => [
                'Authorization' => 'Bearer YOUR-API-KEY',
                'Content-Type' => 'application/json',
                'Accept' => 'application/json',
            ],
        ]
    );
    $body = $response->getBody();
    print_r(json_decode((string) $body));

    const url = new URL(
        "https://your-vito-url/api/projects/1/servers/29/services/169/disable"
    );

    const headers = {
        "Authorization": "Bearer YOUR-API-KEY",
        "Content-Type": "application/json",
        "Accept": "application/json",
    };

    fetch(url, {
        method: "POST",
        headers,
    }).then(response => response.json());

> Example response (204):

    Empty response

> Received response:

> Request failed with error:

    Tip: Check that you're properly connected to the network.
    If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
    You can check the Dev Tools console for debugging information.

### Request

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

#### Headers

`Authorization`

Example: `Bearer YOUR-API-KEY`

`Content-Type`

Example: `application/json`

`Accept`

Example: `application/json`

#### URL Parameters

`project_id` integer

The ID of the project. Example: `1`

`server_id` integer

The ID of the server. Example: `29`

`service_id` integer

The ID of the service. Example: `169`

## delete

requires authentication

Delete service.

> Example request:

    curl --request DELETE \
        "https://your-vito-url/api/projects/1/servers/29/services/169" \
        --header "Authorization: Bearer YOUR-API-KEY" \
        --header "Content-Type: application/json" \
        --header "Accept: application/json"

    $client = new \GuzzleHttp\Client();
    $url = 'https://your-vito-url/api/projects/1/servers/29/services/169';
    $response = $client->delete(
        $url,
        [
            'headers' => [
                'Authorization' => 'Bearer YOUR-API-KEY',
                'Content-Type' => 'application/json',
                'Accept' => 'application/json',
            ],
        ]
    );
    $body = $response->getBody();
    print_r(json_decode((string) $body));

    const url = new URL(
        "https://your-vito-url/api/projects/1/servers/29/services/169"
    );

    const headers = {
        "Authorization": "Bearer YOUR-API-KEY",
        "Content-Type": "application/json",
        "Accept": "application/json",
    };

    fetch(url, {
        method: "DELETE",
        headers,
    }).then(response => response.json());

> Example response (204):

    Empty response

> Received response:

> Request failed with error:

    Tip: Check that you're properly connected to the network.
    If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
    You can check the Dev Tools console for debugging information.

### Request

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

#### Headers

`Authorization`

Example: `Bearer YOUR-API-KEY`

`Content-Type`

Example: `application/json`

`Accept`

Example: `application/json`

#### URL Parameters

`project_id` integer

The ID of the project. Example: `1`

`server_id` integer

The ID of the server. Example: `29`

`service_id` integer

The ID of the service. Example: `169`

# sites

## list

requires authentication

Get all sites.

> Example request:

    curl --request GET \
        --get "https://your-vito-url/api/projects/1/servers/29/sites" \
        --header "Authorization: Bearer YOUR-API-KEY" \
        --header "Content-Type: application/json" \
        --header "Accept: application/json"

    $client = new \GuzzleHttp\Client();
    $url = 'https://your-vito-url/api/projects/1/servers/29/sites';
    $response = $client->get(
        $url,
        [
            'headers' => [
                'Authorization' => 'Bearer YOUR-API-KEY',
                'Content-Type' => 'application/json',
                'Accept' => 'application/json',
            ],
        ]
    );
    $body = $response->getBody();
    print_r(json_decode((string) $body));

    const url = new URL(
        "https://your-vito-url/api/projects/1/servers/29/sites"
    );

    const headers = {
        "Authorization": "Bearer YOUR-API-KEY",
        "Content-Type": "application/json",
        "Accept": "application/json",
    };

    fetch(url, {
        method: "GET",
        headers,
    }).then(response => response.json());

> Example response (200):

    {
        "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
        }
    }

> Received response:

> Request failed with error:

    Tip: Check that you're properly connected to the network.
    If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
    You can check the Dev Tools console for debugging information.

### Request

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

#### Headers

`Authorization`

Example: `Bearer YOUR-API-KEY`

`Content-Type`

Example: `application/json`

`Accept`

Example: `application/json`

#### URL Parameters

`project_id` integer

The ID of the project. Example: `1`

`server_id` integer

The ID of the server. Example: `29`

## create

requires authentication

Create a new site.

> Example request:

    curl --request POST \
        "https://your-vito-url/api/projects/1/servers/29/sites" \
        --header "Authorization: Bearer YOUR-API-KEY" \
        --header "Content-Type: application/json" \
        --header "Accept: application/json" \
        --data "{
        \"type\": \"wordpress\",
        \"domain\": \"ut\",
        \"aliases\": [
            \"vitae\"
        ],
        \"php_version\": \"7.4\",
        \"web_directory\": \"public\",
        \"source_control\": \"animi\",
        \"repository\": \"organization\\/repository\",
        \"branch\": \"main\",
        \"composer\": true,
        \"version\": \"5.2.1\",
        \"user\": \"est\",
        \"method\": \"least-connections\"
    }"

    $client = new \GuzzleHttp\Client();
    $url = 'https://your-vito-url/api/projects/1/servers/29/sites';
    $response = $client->post(
        $url,
        [
            'headers' => [
                'Authorization' => 'Bearer YOUR-API-KEY',
                'Content-Type' => 'application/json',
                'Accept' => 'application/json',
            ],
            'json' => [
                'type' => 'wordpress',
                'domain' => 'ut',
                'aliases' => [
                    'vitae',
                ],
                'php_version' => '7.4',
                'web_directory' => 'public',
                'source_control' => 'animi',
                'repository' => 'organization/repository',
                'branch' => 'main',
                'composer' => true,
                'version' => '5.2.1',
                'user' => 'est',
                'method' => 'least-connections',
            ],
        ]
    );
    $body = $response->getBody();
    print_r(json_decode((string) $body));

    const url = new URL(
        "https://your-vito-url/api/projects/1/servers/29/sites"
    );

    const headers = {
        "Authorization": "Bearer YOUR-API-KEY",
        "Content-Type": "application/json",
        "Accept": "application/json",
    };

    let body = {
        "type": "wordpress",
        "domain": "ut",
        "aliases": [
            "vitae"
        ],
        "php_version": "7.4",
        "web_directory": "public",
        "source_control": "animi",
        "repository": "organization\/repository",
        "branch": "main",
        "composer": true,
        "version": "5.2.1",
        "user": "est",
        "method": "least-connections"
    };

    fetch(url, {
        method: "POST",
        headers,
        body: JSON.stringify(body),
    }).then(response => response.json());

> Example response (200):

    {
        "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
    }

> Received response:

> Request failed with error:

    Tip: Check that you're properly connected to the network.
    If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
    You can check the Dev Tools console for debugging information.

### Request

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

#### Headers

`Authorization`

Example: `Bearer YOUR-API-KEY`

`Content-Type`

Example: `application/json`

`Accept`

Example: `application/json`

#### URL Parameters

`project_id` integer

The ID of the project. Example: `1`

`server_id` integer

The ID of the server. Example: `29`

#### Body Parameters

`type` string

Example: `wordpress`

Must be one of:

- `php`
- `php-blank`
- `phpmyadmin`
- `laravel`
- `wordpress`
- `load-balancer`

`domain` string

Example: `ut`

`aliases` string[]
`php_version` string

One of the installed PHP Versions Example: `7.4`

`web_directory` string

Required for PHP and Laravel sites Example: `public`

`source_control` string

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

`repository` string

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

`branch` string

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

`composer` boolean `true` `false`

Run composer if site supports composer Example: `true`

`version` string

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

`user` string

user, to isolate the website under a new user Example: `est`

`method` string

Load balancer method, Required if the site type is Load balancer Example: `least-connections`

Must be one of:

- `round-robin`
- `least-connections`
- `ip-hash`

## show

requires authentication

Get a site by ID.

> Example request:

    curl --request GET \
        --get "https://your-vito-url/api/projects/1/servers/29/sites/44" \
        --header "Authorization: Bearer YOUR-API-KEY" \
        --header "Content-Type: application/json" \
        --header "Accept: application/json"

    $client = new \GuzzleHttp\Client();
    $url = 'https://your-vito-url/api/projects/1/servers/29/sites/44';
    $response = $client->get(
        $url,
        [
            'headers' => [
                'Authorization' => 'Bearer YOUR-API-KEY',
                'Content-Type' => 'application/json',
                'Accept' => 'application/json',
            ],
        ]
    );
    $body = $response->getBody();
    print_r(json_decode((string) $body));

    const url = new URL(
        "https://your-vito-url/api/projects/1/servers/29/sites/44"
    );

    const headers = {
        "Authorization": "Bearer YOUR-API-KEY",
        "Content-Type": "application/json",
        "Accept": "application/json",
    };

    fetch(url, {
        method: "GET",
        headers,
    }).then(response => response.json());

> Example response (200):

    {
        "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
    }

> Received response:

> Request failed with error:

    Tip: Check that you're properly connected to the network.
    If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
    You can check the Dev Tools console for debugging information.

### Request

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

#### Headers

`Authorization`

Example: `Bearer YOUR-API-KEY`

`Content-Type`

Example: `application/json`

`Accept`

Example: `application/json`

#### URL Parameters

`project_id` integer

The ID of the project. Example: `1`

`server_id` integer

The ID of the server. Example: `29`

`id` integer

The ID of the site. Example: `44`

## delete

requires authentication

Delete site.

> Example request:

    curl --request DELETE \
        "https://your-vito-url/api/projects/1/servers/29/sites/44" \
        --header "Authorization: Bearer YOUR-API-KEY" \
        --header "Content-Type: application/json" \
        --header "Accept: application/json"

    $client = new \GuzzleHttp\Client();
    $url = 'https://your-vito-url/api/projects/1/servers/29/sites/44';
    $response = $client->delete(
        $url,
        [
            'headers' => [
                'Authorization' => 'Bearer YOUR-API-KEY',
                'Content-Type' => 'application/json',
                'Accept' => 'application/json',
            ],
        ]
    );
    $body = $response->getBody();
    print_r(json_decode((string) $body));

    const url = new URL(
        "https://your-vito-url/api/projects/1/servers/29/sites/44"
    );

    const headers = {
        "Authorization": "Bearer YOUR-API-KEY",
        "Content-Type": "application/json",
        "Accept": "application/json",
    };

    fetch(url, {
        method: "DELETE",
        headers,
    }).then(response => response.json());

> Example response (204):

    Empty response

> Received response:

> Request failed with error:

    Tip: Check that you're properly connected to the network.
    If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
    You can check the Dev Tools console for debugging information.

### Request

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

#### Headers

`Authorization`

Example: `Bearer YOUR-API-KEY`

`Content-Type`

Example: `application/json`

`Accept`

Example: `application/json`

#### URL Parameters

`project_id` integer

The ID of the project. Example: `1`

`server_id` integer

The ID of the server. Example: `29`

`site_id` integer

The ID of the site. Example: `44`

## load-balancer

requires authentication

Update load balancer.

> Example request:

    curl --request POST \
        "https://your-vito-url/api/projects/1/servers/29/sites/44/load-balancer" \
        --header "Authorization: Bearer YOUR-API-KEY" \
        --header "Content-Type: application/json" \
        --header "Accept: application/json" \
        --data "{
        \"method\": \"round-robin\",
        \"servers\": [
            \"eaque\"
        ]
    }"

    $client = new \GuzzleHttp\Client();
    $url = 'https://your-vito-url/api/projects/1/servers/29/sites/44/load-balancer';
    $response = $client->post(
        $url,
        [
            'headers' => [
                'Authorization' => 'Bearer YOUR-API-KEY',
                'Content-Type' => 'application/json',
                'Accept' => 'application/json',
            ],
            'json' => [
                'method' => 'round-robin',
                'servers' => [
                    'eaque',
                ],
            ],
        ]
    );
    $body = $response->getBody();
    print_r(json_decode((string) $body));

    const url = new URL(
        "https://your-vito-url/api/projects/1/servers/29/sites/44/load-balancer"
    );

    const headers = {
        "Authorization": "Bearer YOUR-API-KEY",
        "Content-Type": "application/json",
        "Accept": "application/json",
    };

    let body = {
        "method": "round-robin",
        "servers": [
            "eaque"
        ]
    };

    fetch(url, {
        method: "POST",
        headers,
        body: JSON.stringify(body),
    }).then(response => response.json());

> Example response (200):

> Received response:

> Request failed with error:

    Tip: Check that you're properly connected to the network.
    If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
    You can check the Dev Tools console for debugging information.

### Request

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

#### Headers

`Authorization`

Example: `Bearer YOUR-API-KEY`

`Content-Type`

Example: `application/json`

`Accept`

Example: `application/json`

#### URL Parameters

`project_id` integer

The ID of the project. Example: `1`

`server_id` integer

The ID of the server. Example: `29`

`site_id` integer

The ID of the site. Example: `44`

#### Body Parameters

`method` string

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

Must be one of:

- `round-robin`
- `least-connections`
- `ip-hash`

`servers` string[]

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

## aliases

requires authentication

Update aliases.

> Example request:

    curl --request PUT \
        "https://your-vito-url/api/projects/1/servers/29/sites/44/aliases" \
        --header "Authorization: Bearer YOUR-API-KEY" \
        --header "Content-Type: application/json" \
        --header "Accept: application/json" \
        --data "{
        \"aliases\": [
            \"pariatur\"
        ]
    }"

    $client = new \GuzzleHttp\Client();
    $url = 'https://your-vito-url/api/projects/1/servers/29/sites/44/aliases';
    $response = $client->put(
        $url,
        [
            'headers' => [
                'Authorization' => 'Bearer YOUR-API-KEY',
                'Content-Type' => 'application/json',
                'Accept' => 'application/json',
            ],
            'json' => [
                'aliases' => [
                    'pariatur',
                ],
            ],
        ]
    );
    $body = $response->getBody();
    print_r(json_decode((string) $body));

    const url = new URL(
        "https://your-vito-url/api/projects/1/servers/29/sites/44/aliases"
    );

    const headers = {
        "Authorization": "Bearer YOUR-API-KEY",
        "Content-Type": "application/json",
        "Accept": "application/json",
    };

    let body = {
        "aliases": [
            "pariatur"
        ]
    };

    fetch(url, {
        method: "PUT",
        headers,
        body: JSON.stringify(body),
    }).then(response => response.json());

> Example response (200):

> Received response:

> Request failed with error:

    Tip: Check that you're properly connected to the network.
    If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
    You can check the Dev Tools console for debugging information.

### Request

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

#### Headers

`Authorization`

Example: `Bearer YOUR-API-KEY`

`Content-Type`

Example: `application/json`

`Accept`

Example: `application/json`

#### URL Parameters

`project_id` integer

The ID of the project. Example: `1`

`server_id` integer

The ID of the server. Example: `29`

`site_id` integer

The ID of the site. Example: `44`

#### Body Parameters

`aliases` string[]

Array of aliases

## deploy

requires authentication

Run site deployment script

> Example request:

    curl --request POST \
        "https://your-vito-url/api/projects/1/servers/29/sites/44/deploy" \
        --header "Authorization: Bearer YOUR-API-KEY" \
        --header "Content-Type: application/json" \
        --header "Accept: application/json"

    $client = new \GuzzleHttp\Client();
    $url = 'https://your-vito-url/api/projects/1/servers/29/sites/44/deploy';
    $response = $client->post(
        $url,
        [
            'headers' => [
                'Authorization' => 'Bearer YOUR-API-KEY',
                'Content-Type' => 'application/json',
                'Accept' => 'application/json',
            ],
        ]
    );
    $body = $response->getBody();
    print_r(json_decode((string) $body));

    const url = new URL(
        "https://your-vito-url/api/projects/1/servers/29/sites/44/deploy"
    );

    const headers = {
        "Authorization": "Bearer YOUR-API-KEY",
        "Content-Type": "application/json",
        "Accept": "application/json",
    };

    fetch(url, {
        method: "POST",
        headers,
    }).then(response => response.json());

> Example response (200):

> Received response:

> Request failed with error:

    Tip: Check that you're properly connected to the network.
    If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
    You can check the Dev Tools console for debugging information.

### Request

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

#### Headers

`Authorization`

Example: `Bearer YOUR-API-KEY`

`Content-Type`

Example: `application/json`

`Accept`

Example: `application/json`

#### URL Parameters

`project_id` integer

The ID of the project. Example: `1`

`server_id` integer

The ID of the server. Example: `29`

`site_id` integer

The ID of the site. Example: `44`

## deployment-script

requires authentication

Update site deployment script

> Example request:

    curl --request PUT \
        "https://your-vito-url/api/projects/1/servers/29/sites/44/deployment-script" \
        --header "Authorization: Bearer YOUR-API-KEY" \
        --header "Content-Type: application/json" \
        --header "Accept: application/json" \
        --data "{
        \"script\": \"culpa\"
    }"

    $client = new \GuzzleHttp\Client();
    $url = 'https://your-vito-url/api/projects/1/servers/29/sites/44/deployment-script';
    $response = $client->put(
        $url,
        [
            'headers' => [
                'Authorization' => 'Bearer YOUR-API-KEY',
                'Content-Type' => 'application/json',
                'Accept' => 'application/json',
            ],
            'json' => [
                'script' => 'culpa',
            ],
        ]
    );
    $body = $response->getBody();
    print_r(json_decode((string) $body));

    const url = new URL(
        "https://your-vito-url/api/projects/1/servers/29/sites/44/deployment-script"
    );

    const headers = {
        "Authorization": "Bearer YOUR-API-KEY",
        "Content-Type": "application/json",
        "Accept": "application/json",
    };

    let body = {
        "script": "culpa"
    };

    fetch(url, {
        method: "PUT",
        headers,
        body: JSON.stringify(body),
    }).then(response => response.json());

> Example response (204):

    Empty response

> Received response:

> Request failed with error:

    Tip: Check that you're properly connected to the network.
    If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
    You can check the Dev Tools console for debugging information.

### Request

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

#### Headers

`Authorization`

Example: `Bearer YOUR-API-KEY`

`Content-Type`

Example: `application/json`

`Accept`

Example: `application/json`

#### URL Parameters

`project_id` integer

The ID of the project. Example: `1`

`server_id` integer

The ID of the server. Example: `29`

`site_id` integer

The ID of the site. Example: `44`

#### Body Parameters

`script` string

Content of the deployment script Example: `culpa`

## deployment-script

requires authentication

Get site deployment script content

> Example request:

    curl --request GET \
        --get "https://your-vito-url/api/projects/1/servers/29/sites/44/deployment-script" \
        --header "Authorization: Bearer YOUR-API-KEY" \
        --header "Content-Type: application/json" \
        --header "Accept: application/json"

    $client = new \GuzzleHttp\Client();
    $url = 'https://your-vito-url/api/projects/1/servers/29/sites/44/deployment-script';
    $response = $client->get(
        $url,
        [
            'headers' => [
                'Authorization' => 'Bearer YOUR-API-KEY',
                'Content-Type' => 'application/json',
                'Accept' => 'application/json',
            ],
        ]
    );
    $body = $response->getBody();
    print_r(json_decode((string) $body));

    const url = new URL(
        "https://your-vito-url/api/projects/1/servers/29/sites/44/deployment-script"
    );

    const headers = {
        "Authorization": "Bearer YOUR-API-KEY",
        "Content-Type": "application/json",
        "Accept": "application/json",
    };

    fetch(url, {
        method: "GET",
        headers,
    }).then(response => response.json());

> Example response (200):

> Received response:

> Request failed with error:

    Tip: Check that you're properly connected to the network.
    If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
    You can check the Dev Tools console for debugging information.

### Request

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

#### Headers

`Authorization`

Example: `Bearer YOUR-API-KEY`

`Content-Type`

Example: `application/json`

`Accept`

Example: `application/json`

#### URL Parameters

`project_id` integer

The ID of the project. Example: `1`

`server_id` integer

The ID of the server. Example: `29`

`site_id` integer

The ID of the site. Example: `44`

# source-controls

## list

requires authentication

> Example request:

    curl --request GET \
        --get "https://your-vito-url/api/projects/1/source-controls" \
        --header "Authorization: Bearer YOUR-API-KEY" \
        --header "Content-Type: application/json" \
        --header "Accept: application/json"

    $client = new \GuzzleHttp\Client();
    $url = 'https://your-vito-url/api/projects/1/source-controls';
    $response = $client->get(
        $url,
        [
            'headers' => [
                'Authorization' => 'Bearer YOUR-API-KEY',
                'Content-Type' => 'application/json',
                'Accept' => 'application/json',
            ],
        ]
    );
    $body = $response->getBody();
    print_r(json_decode((string) $body));

    const url = new URL(
        "https://your-vito-url/api/projects/1/source-controls"
    );

    const headers = {
        "Authorization": "Bearer YOUR-API-KEY",
        "Content-Type": "application/json",
        "Accept": "application/json",
    };

    fetch(url, {
        method: "GET",
        headers,
    }).then(response => response.json());

> Example response (200):

    {
        "data": [
            {
                "id": 5,
                "project_id": null,
                "global": true,
                "name": "Dawson Ratke IV",
                "provider": "github",
                "created_at": "2025-04-05T17:35:56.000000Z",
                "updated_at": "2025-04-05T17:35:56.000000Z"
            },
            {
                "id": 6,
                "project_id": null,
                "global": true,
                "name": "Miss Caterina Mann DVM",
                "provider": "github",
                "created_at": "2025-04-05T17:35:56.000000Z",
                "updated_at": "2025-04-05T17:35:56.000000Z"
            }
        ],
        "links": {
            "first": "/?page=1",
            "last": "/?page=1",
            "prev": null,
            "next": null
        },
        "meta": {
            "current_page": 1,
            "from": 1,
            "last_page": 1,
            "links": [
                {
                    "url": null,
                    "label": "&laquo; Previous",
                    "active": false
                },
                {
                    "url": "/?page=1",
                    "label": "1",
                    "active": true
                },
                {
                    "url": null,
                    "label": "Next &raquo;",
                    "active": false
                }
            ],
            "path": "/",
            "per_page": 25,
            "to": 2,
            "total": 2
        }
    }

> Received response:

> Request failed with error:

    Tip: Check that you're properly connected to the network.
    If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
    You can check the Dev Tools console for debugging information.

### Request

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

#### Headers

`Authorization`

Example: `Bearer YOUR-API-KEY`

`Content-Type`

Example: `application/json`

`Accept`

Example: `application/json`

#### URL Parameters

`project_id` integer

The ID of the project. Example: `1`

## create

requires authentication

> Example request:

    curl --request POST \
        "https://your-vito-url/api/projects/1/source-controls" \
        --header "Authorization: Bearer YOUR-API-KEY" \
        --header "Content-Type: application/json" \
        --header "Accept: application/json" \
        --data "{
        \"provider\": \"github\",
        \"name\": \"est\",
        \"token\": \"ea\",
        \"url\": \"http:\\/\\/koepp.info\\/maiores-nostrum-consequuntur-dicta-iure-ullam\",
        \"username\": \"ducimus\",
        \"password\": \"S#AHlt\\\"?l6SDU^b?T6\"
    }"

    $client = new \GuzzleHttp\Client();
    $url = 'https://your-vito-url/api/projects/1/source-controls';
    $response = $client->post(
        $url,
        [
            'headers' => [
                'Authorization' => 'Bearer YOUR-API-KEY',
                'Content-Type' => 'application/json',
                'Accept' => 'application/json',
            ],
            'json' => [
                'provider' => 'github',
                'name' => 'est',
                'token' => 'ea',
                'url' => 'http://koepp.info/maiores-nostrum-consequuntur-dicta-iure-ullam',
                'username' => 'ducimus',
                'password' => 'S#AHlt"?l6SDU^b?T6',
            ],
        ]
    );
    $body = $response->getBody();
    print_r(json_decode((string) $body));

    const url = new URL(
        "https://your-vito-url/api/projects/1/source-controls"
    );

    const headers = {
        "Authorization": "Bearer YOUR-API-KEY",
        "Content-Type": "application/json",
        "Accept": "application/json",
    };

    let body = {
        "provider": "github",
        "name": "est",
        "token": "ea",
        "url": "http:\/\/koepp.info\/maiores-nostrum-consequuntur-dicta-iure-ullam",
        "username": "ducimus",
        "password": "S#AHlt\"?l6SDU^b?T6"
    };

    fetch(url, {
        method: "POST",
        headers,
        body: JSON.stringify(body),
    }).then(response => response.json());

> Example response (200):

    {
        "id": 5,
        "project_id": null,
        "global": true,
        "name": "Dr. Adella Greenholt",
        "provider": "github",
        "created_at": "2025-04-05T17:35:56.000000Z",
        "updated_at": "2025-04-05T17:35:56.000000Z"
    }

> Received response:

> Request failed with error:

    Tip: Check that you're properly connected to the network.
    If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
    You can check the Dev Tools console for debugging information.

### Request

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

#### Headers

`Authorization`

Example: `Bearer YOUR-API-KEY`

`Content-Type`

Example: `application/json`

`Accept`

Example: `application/json`

#### URL Parameters

`project_id` integer

The ID of the project. Example: `1`

#### Body Parameters

`provider` string

The provider Example: `github`

Must be one of:

- `gitlab`
- `github`
- `bitbucket`

`name` string

The name of the storage provider. Example: `est`

`token` string

The token if provider requires api token Example: `ea`

`url` string

The URL if the provider is Gitlab and it is self-hosted Example: `http://koepp.info/maiores-nostrum-consequuntur-dicta-iure-ullam`

`username` string

The username if the provider is Bitbucket Example: `ducimus`

`password` string

The password if the provider is Bitbucket Example: `S#AHlt"?l6SDU^b?T6`

## show

requires authentication

> Example request:

    curl --request GET \
        --get "https://your-vito-url/api/projects/1/source-controls/1" \
        --header "Authorization: Bearer YOUR-API-KEY" \
        --header "Content-Type: application/json" \
        --header "Accept: application/json"

    $client = new \GuzzleHttp\Client();
    $url = 'https://your-vito-url/api/projects/1/source-controls/1';
    $response = $client->get(
        $url,
        [
            'headers' => [
                'Authorization' => 'Bearer YOUR-API-KEY',
                'Content-Type' => 'application/json',
                'Accept' => 'application/json',
            ],
        ]
    );
    $body = $response->getBody();
    print_r(json_decode((string) $body));

    const url = new URL(
        "https://your-vito-url/api/projects/1/source-controls/1"
    );

    const headers = {
        "Authorization": "Bearer YOUR-API-KEY",
        "Content-Type": "application/json",
        "Accept": "application/json",
    };

    fetch(url, {
        method: "GET",
        headers,
    }).then(response => response.json());

> Example response (200):

    {
        "id": 5,
        "project_id": null,
        "global": true,
        "name": "Hettie Farrell",
        "provider": "github",
        "created_at": "2025-04-05T17:35:56.000000Z",
        "updated_at": "2025-04-05T17:35:56.000000Z"
    }

> Received response:

> Request failed with error:

    Tip: Check that you're properly connected to the network.
    If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
    You can check the Dev Tools console for debugging information.

### Request

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

#### Headers

`Authorization`

Example: `Bearer YOUR-API-KEY`

`Content-Type`

Example: `application/json`

`Accept`

Example: `application/json`

#### URL Parameters

`project_id` integer

The ID of the project. Example: `1`

`sourceControl_id` integer

The ID of the sourceControl. Example: `1`

## update

requires authentication

> Example request:

    curl --request PUT \
        "https://your-vito-url/api/projects/1/source-controls/1" \
        --header "Authorization: Bearer YOUR-API-KEY" \
        --header "Content-Type: application/json" \
        --header "Accept: application/json" \
        --data "{
        \"name\": \"sunt\",
        \"token\": \"est\",
        \"url\": \"http:\\/\\/www.fay.com\\/quisquam-autem-illum-omnis-quo-enim-eligendi-velit\",
        \"username\": \"ab\",
        \"password\": \"M@-*%?(B(UNE~Ibc#\",
        \"global\": false
    }"

    $client = new \GuzzleHttp\Client();
    $url = 'https://your-vito-url/api/projects/1/source-controls/1';
    $response = $client->put(
        $url,
        [
            'headers' => [
                'Authorization' => 'Bearer YOUR-API-KEY',
                'Content-Type' => 'application/json',
                'Accept' => 'application/json',
            ],
            'json' => [
                'name' => 'sunt',
                'token' => 'est',
                'url' => 'http://www.fay.com/quisquam-autem-illum-omnis-quo-enim-eligendi-velit',
                'username' => 'ab',
                'password' => 'M@-*%?(B(UNE~Ibc#',
                'global' => false,
            ],
        ]
    );
    $body = $response->getBody();
    print_r(json_decode((string) $body));

    const url = new URL(
        "https://your-vito-url/api/projects/1/source-controls/1"
    );

    const headers = {
        "Authorization": "Bearer YOUR-API-KEY",
        "Content-Type": "application/json",
        "Accept": "application/json",
    };

    let body = {
        "name": "sunt",
        "token": "est",
        "url": "http:\/\/www.fay.com\/quisquam-autem-illum-omnis-quo-enim-eligendi-velit",
        "username": "ab",
        "password": "M@-*%?(B(UNE~Ibc#",
        "global": false
    };

    fetch(url, {
        method: "PUT",
        headers,
        body: JSON.stringify(body),
    }).then(response => response.json());

> Example response (200):

    {
        "id": 5,
        "project_id": null,
        "global": true,
        "name": "Jadyn Hyatt",
        "provider": "github",
        "created_at": "2025-04-05T17:35:56.000000Z",
        "updated_at": "2025-04-05T17:35:56.000000Z"
    }

> Received response:

> Request failed with error:

    Tip: Check that you're properly connected to the network.
    If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
    You can check the Dev Tools console for debugging information.

### Request

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

#### Headers

`Authorization`

Example: `Bearer YOUR-API-KEY`

`Content-Type`

Example: `application/json`

`Accept`

Example: `application/json`

#### URL Parameters

`project_id` integer

The ID of the project. Example: `1`

`sourceControl_id` integer

The ID of the sourceControl. Example: `1`

#### Body Parameters

`name` string

The name of the storage provider. Example: `sunt`

`token` string

The token if provider requires api token Example: `est`

`url` string

The URL if the provider is Gitlab and it is self-hosted Example: `http://www.fay.com/quisquam-autem-illum-omnis-quo-enim-eligendi-velit`

`username` string

The username if the provider is Bitbucket Example: `ab`

`password` string

The password if the provider is Bitbucket Example: `M@-*%?(B(UNE~Ibc#`

`global` string

Accessible in all projects Example: `false`

Must be one of:

- `1`
- ``

## delete

requires authentication

> Example request:

    curl --request DELETE \
        "https://your-vito-url/api/projects/1/source-controls/1" \
        --header "Authorization: Bearer YOUR-API-KEY" \
        --header "Content-Type: application/json" \
        --header "Accept: application/json"

    $client = new \GuzzleHttp\Client();
    $url = 'https://your-vito-url/api/projects/1/source-controls/1';
    $response = $client->delete(
        $url,
        [
            'headers' => [
                'Authorization' => 'Bearer YOUR-API-KEY',
                'Content-Type' => 'application/json',
                'Accept' => 'application/json',
            ],
        ]
    );
    $body = $response->getBody();
    print_r(json_decode((string) $body));

    const url = new URL(
        "https://your-vito-url/api/projects/1/source-controls/1"
    );

    const headers = {
        "Authorization": "Bearer YOUR-API-KEY",
        "Content-Type": "application/json",
        "Accept": "application/json",
    };

    fetch(url, {
        method: "DELETE",
        headers,
    }).then(response => response.json());

> Example response (204):

    Empty response

> Received response:

> Request failed with error:

    Tip: Check that you're properly connected to the network.
    If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
    You can check the Dev Tools console for debugging information.

### Request

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

#### Headers

`Authorization`

Example: `Bearer YOUR-API-KEY`

`Content-Type`

Example: `application/json`

`Accept`

Example: `application/json`

#### URL Parameters

`project_id` integer

The ID of the project. Example: `1`

`sourceControl_id` integer

The ID of the sourceControl. Example: `1`

# ssh-keys

## list

requires authentication

Get all ssh keys.

> Example request:

    curl --request GET \
        --get "https://your-vito-url/api/projects/1/servers/29/ssh-keys" \
        --header "Authorization: Bearer YOUR-API-KEY" \
        --header "Content-Type: application/json" \
        --header "Accept: application/json"

    $client = new \GuzzleHttp\Client();
    $url = 'https://your-vito-url/api/projects/1/servers/29/ssh-keys';
    $response = $client->get(
        $url,
        [
            'headers' => [
                'Authorization' => 'Bearer YOUR-API-KEY',
                'Content-Type' => 'application/json',
                'Accept' => 'application/json',
            ],
        ]
    );
    $body = $response->getBody();
    print_r(json_decode((string) $body));

    const url = new URL(
        "https://your-vito-url/api/projects/1/servers/29/ssh-keys"
    );

    const headers = {
        "Authorization": "Bearer YOUR-API-KEY",
        "Content-Type": "application/json",
        "Accept": "application/json",
    };

    fetch(url, {
        method: "GET",
        headers,
    }).then(response => response.json());

> Example response (200):

    {
        "data": [
            {
                "id": null,
                "user": null,
                "name": "Moriah Kemmer",
                "created_at": null,
                "updated_at": null
            },
            {
                "id": null,
                "user": null,
                "name": "Delilah Gaylord",
                "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
        }
    }

> Received response:

> Request failed with error:

    Tip: Check that you're properly connected to the network.
    If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
    You can check the Dev Tools console for debugging information.

### Request

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

#### Headers

`Authorization`

Example: `Bearer YOUR-API-KEY`

`Content-Type`

Example: `application/json`

`Accept`

Example: `application/json`

#### URL Parameters

`project_id` integer

The ID of the project. Example: `1`

`server_id` integer

The ID of the server. Example: `29`

## create

requires authentication

Deploy ssh key to server.

> Example request:

    curl --request POST \
        "https://your-vito-url/api/projects/1/servers/29/ssh-keys" \
        --header "Authorization: Bearer YOUR-API-KEY" \
        --header "Content-Type: application/json" \
        --header "Accept: application/json" \
        --data "{
        \"key_id\": \"id\",
        \"name\": \"qui\",
        \"public_key\": \"vitae\"
    }"

    $client = new \GuzzleHttp\Client();
    $url = 'https://your-vito-url/api/projects/1/servers/29/ssh-keys';
    $response = $client->post(
        $url,
        [
            'headers' => [
                'Authorization' => 'Bearer YOUR-API-KEY',
                'Content-Type' => 'application/json',
                'Accept' => 'application/json',
            ],
            'json' => [
                'key_id' => 'id',
                'name' => 'qui',
                'public_key' => 'vitae',
            ],
        ]
    );
    $body = $response->getBody();
    print_r(json_decode((string) $body));

    const url = new URL(
        "https://your-vito-url/api/projects/1/servers/29/ssh-keys"
    );

    const headers = {
        "Authorization": "Bearer YOUR-API-KEY",
        "Content-Type": "application/json",
        "Accept": "application/json",
    };

    let body = {
        "key_id": "id",
        "name": "qui",
        "public_key": "vitae"
    };

    fetch(url, {
        method: "POST",
        headers,
        body: JSON.stringify(body),
    }).then(response => response.json());

> Example response (200):

    {
        "id": null,
        "user": null,
        "name": "Jesse Gleason",
        "created_at": null,
        "updated_at": null
    }

> Received response:

> Request failed with error:

    Tip: Check that you're properly connected to the network.
    If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
    You can check the Dev Tools console for debugging information.

### Request

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

#### Headers

`Authorization`

Example: `Bearer YOUR-API-KEY`

`Content-Type`

Example: `application/json`

`Accept`

Example: `application/json`

#### URL Parameters

`project_id` integer

The ID of the project. Example: `1`

`server_id` integer

The ID of the server. Example: `29`

#### Body Parameters

`key_id` string

The ID of the key. Example: `id`

`name` string

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

`public_key` string

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

## delete

requires authentication

Delete ssh key from server.

> Example request:

    curl --request DELETE \
        "https://your-vito-url/api/projects/1/servers/29/ssh-keys/1" \
        --header "Authorization: Bearer YOUR-API-KEY" \
        --header "Content-Type: application/json" \
        --header "Accept: application/json"

    $client = new \GuzzleHttp\Client();
    $url = 'https://your-vito-url/api/projects/1/servers/29/ssh-keys/1';
    $response = $client->delete(
        $url,
        [
            'headers' => [
                'Authorization' => 'Bearer YOUR-API-KEY',
                'Content-Type' => 'application/json',
                'Accept' => 'application/json',
            ],
        ]
    );
    $body = $response->getBody();
    print_r(json_decode((string) $body));

    const url = new URL(
        "https://your-vito-url/api/projects/1/servers/29/ssh-keys/1"
    );

    const headers = {
        "Authorization": "Bearer YOUR-API-KEY",
        "Content-Type": "application/json",
        "Accept": "application/json",
    };

    fetch(url, {
        method: "DELETE",
        headers,
    }).then(response => response.json());

> Example response (204):

    Empty response

> Received response:

> Request failed with error:

    Tip: Check that you're properly connected to the network.
    If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
    You can check the Dev Tools console for debugging information.

### Request

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

#### Headers

`Authorization`

Example: `Bearer YOUR-API-KEY`

`Content-Type`

Example: `application/json`

`Accept`

Example: `application/json`

#### URL Parameters

`project_id` integer

The ID of the project. Example: `1`

`server_id` integer

The ID of the server. Example: `29`

`sshKey_id` integer

The ID of the sshKey. Example: `1`

# storage-providers

## list

requires authentication

> Example request:

    curl --request GET \
        --get "https://your-vito-url/api/projects/1/storage-providers" \
        --header "Authorization: Bearer YOUR-API-KEY" \
        --header "Content-Type: application/json" \
        --header "Accept: application/json"

    $client = new \GuzzleHttp\Client();
    $url = 'https://your-vito-url/api/projects/1/storage-providers';
    $response = $client->get(
        $url,
        [
            'headers' => [
                'Authorization' => 'Bearer YOUR-API-KEY',
                'Content-Type' => 'application/json',
                'Accept' => 'application/json',
            ],
        ]
    );
    $body = $response->getBody();
    print_r(json_decode((string) $body));

    const url = new URL(
        "https://your-vito-url/api/projects/1/storage-providers"
    );

    const headers = {
        "Authorization": "Bearer YOUR-API-KEY",
        "Content-Type": "application/json",
        "Accept": "application/json",
    };

    fetch(url, {
        method: "GET",
        headers,
    }).then(response => response.json());

> Example response (200):

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

> Received response:

> Request failed with error:

    Tip: Check that you're properly connected to the network.
    If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
    You can check the Dev Tools console for debugging information.

### Request

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

#### Headers

`Authorization`

Example: `Bearer YOUR-API-KEY`

`Content-Type`

Example: `application/json`

`Accept`

Example: `application/json`

#### URL Parameters

`project_id` integer

The ID of the project. Example: `1`

## create

requires authentication

> Example request:

    curl --request POST \
        "https://your-vito-url/api/projects/1/storage-providers" \
        --header "Authorization: Bearer YOUR-API-KEY" \
        --header "Content-Type: application/json" \
        --header "Accept: application/json" \
        --data "{
        \"provider\": \"quia\",
        \"name\": \"rerum\",
        \"token\": \"hic\",
        \"key\": \"repellat\",
        \"secret\": \"maiores\"
    }"

    $client = new \GuzzleHttp\Client();
    $url = 'https://your-vito-url/api/projects/1/storage-providers';
    $response = $client->post(
        $url,
        [
            'headers' => [
                'Authorization' => 'Bearer YOUR-API-KEY',
                'Content-Type' => 'application/json',
                'Accept' => 'application/json',
            ],
            'json' => [
                'provider' => 'quia',
                'name' => 'rerum',
                'token' => 'hic',
                'key' => 'repellat',
                'secret' => 'maiores',
            ],
        ]
    );
    $body = $response->getBody();
    print_r(json_decode((string) $body));

    const url = new URL(
        "https://your-vito-url/api/projects/1/storage-providers"
    );

    const headers = {
        "Authorization": "Bearer YOUR-API-KEY",
        "Content-Type": "application/json",
        "Accept": "application/json",
    };

    let body = {
        "provider": "quia",
        "name": "rerum",
        "token": "hic",
        "key": "repellat",
        "secret": "maiores"
    };

    fetch(url, {
        method: "POST",
        headers,
        body: JSON.stringify(body),
    }).then(response => response.json());

> Example response (200):

    {
        "id": 5,
        "project_id": null,
        "global": true,
        "name": "veritatis",
        "provider": "ftp",
        "created_at": "2025-04-05T17:35:56.000000Z",
        "updated_at": "2025-04-05T17:35:56.000000Z"
    }

> Received response:

> Request failed with error:

    Tip: Check that you're properly connected to the network.
    If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
    You can check the Dev Tools console for debugging information.

### Request

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

#### Headers

`Authorization`

Example: `Bearer YOUR-API-KEY`

`Content-Type`

Example: `application/json`

`Accept`

Example: `application/json`

#### URL Parameters

`project_id` integer

The ID of the project. Example: `1`

#### Body Parameters

`provider` string

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

`name` string

The name of the storage provider. Example: `rerum`

`token` string

The token if provider requires api token Example: `hic`

`key` string

The key if provider requires key Example: `repellat`

`secret` string

The secret if provider requires key Example: `maiores`

## show

requires authentication

> Example request:

    curl --request GET \
        --get "https://your-vito-url/api/projects/1/storage-providers/3" \
        --header "Authorization: Bearer YOUR-API-KEY" \
        --header "Content-Type: application/json" \
        --header "Accept: application/json"

    $client = new \GuzzleHttp\Client();
    $url = 'https://your-vito-url/api/projects/1/storage-providers/3';
    $response = $client->get(
        $url,
        [
            'headers' => [
                'Authorization' => 'Bearer YOUR-API-KEY',
                'Content-Type' => 'application/json',
                'Accept' => 'application/json',
            ],
        ]
    );
    $body = $response->getBody();
    print_r(json_decode((string) $body));

    const url = new URL(
        "https://your-vito-url/api/projects/1/storage-providers/3"
    );

    const headers = {
        "Authorization": "Bearer YOUR-API-KEY",
        "Content-Type": "application/json",
        "Accept": "application/json",
    };

    fetch(url, {
        method: "GET",
        headers,
    }).then(response => response.json());

> Example response (200):

    {
        "id": 5,
        "project_id": null,
        "global": true,
        "name": "fuga",
        "provider": "local",
        "created_at": "2025-04-05T17:35:56.000000Z",
        "updated_at": "2025-04-05T17:35:56.000000Z"
    }

> Received response:

> Request failed with error:

    Tip: Check that you're properly connected to the network.
    If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
    You can check the Dev Tools console for debugging information.

### Request

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

#### Headers

`Authorization`

Example: `Bearer YOUR-API-KEY`

`Content-Type`

Example: `application/json`

`Accept`

Example: `application/json`

#### URL Parameters

`project_id` integer

The ID of the project. Example: `1`

`storageProvider_id` integer

The ID of the storageProvider. Example: `3`

## update

requires authentication

> Example request:

    curl --request PUT \
        "https://your-vito-url/api/projects/1/storage-providers/3" \
        --header "Authorization: Bearer YOUR-API-KEY" \
        --header "Content-Type: application/json" \
        --header "Accept: application/json" \
        --data "{
        \"name\": \"est\",
        \"global\": true
    }"

    $client = new \GuzzleHttp\Client();
    $url = 'https://your-vito-url/api/projects/1/storage-providers/3';
    $response = $client->put(
        $url,
        [
            'headers' => [
                'Authorization' => 'Bearer YOUR-API-KEY',
                'Content-Type' => 'application/json',
                'Accept' => 'application/json',
            ],
            'json' => [
                'name' => 'est',
                'global' => true,
            ],
        ]
    );
    $body = $response->getBody();
    print_r(json_decode((string) $body));

    const url = new URL(
        "https://your-vito-url/api/projects/1/storage-providers/3"
    );

    const headers = {
        "Authorization": "Bearer YOUR-API-KEY",
        "Content-Type": "application/json",
        "Accept": "application/json",
    };

    let body = {
        "name": "est",
        "global": true
    };

    fetch(url, {
        method: "PUT",
        headers,
        body: JSON.stringify(body),
    }).then(response => response.json());

> Example response (200):

    {
        "id": 5,
        "project_id": null,
        "global": true,
        "name": "ut",
        "provider": "ftp",
        "created_at": "2025-04-05T17:35:56.000000Z",
        "updated_at": "2025-04-05T17:35:56.000000Z"
    }

> Received response:

> Request failed with error:

    Tip: Check that you're properly connected to the network.
    If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
    You can check the Dev Tools console for debugging information.

### Request

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

#### Headers

`Authorization`

Example: `Bearer YOUR-API-KEY`

`Content-Type`

Example: `application/json`

`Accept`

Example: `application/json`

#### URL Parameters

`project_id` integer

The ID of the project. Example: `1`

`storageProvider_id` integer

The ID of the storageProvider. Example: `3`

#### Body Parameters

`name` string

The name of the storage provider. Example: `est`

`global` string

Accessible in all projects Example: `true`

Must be one of:

- `1`
- ``

## delete

requires authentication

> Example request:

    curl --request DELETE \
        "https://your-vito-url/api/projects/1/storage-providers/3" \
        --header "Authorization: Bearer YOUR-API-KEY" \
        --header "Content-Type: application/json" \
        --header "Accept: application/json"

    $client = new \GuzzleHttp\Client();
    $url = 'https://your-vito-url/api/projects/1/storage-providers/3';
    $response = $client->delete(
        $url,
        [
            'headers' => [
                'Authorization' => 'Bearer YOUR-API-KEY',
                'Content-Type' => 'application/json',
                'Accept' => 'application/json',
            ],
        ]
    );
    $body = $response->getBody();
    print_r(json_decode((string) $body));

    const url = new URL(
        "https://your-vito-url/api/projects/1/storage-providers/3"
    );

    const headers = {
        "Authorization": "Bearer YOUR-API-KEY",
        "Content-Type": "application/json",
        "Accept": "application/json",
    };

    fetch(url, {
        method: "DELETE",
        headers,
    }).then(response => response.json());

> Example response (204):

    Empty response

> Received response:

> Request failed with error:

    Tip: Check that you're properly connected to the network.
    If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
    You can check the Dev Tools console for debugging information.

### Request

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

#### Headers

`Authorization`

Example: `Bearer YOUR-API-KEY`

`Content-Type`

Example: `application/json`

`Accept`

Example: `application/json`

#### URL Parameters

`project_id` integer

The ID of the project. Example: `1`

`storageProvider_id` integer

The ID of the storageProvider. Example: `3`