List sites on a server.
GET /api/server/{id}/sites
Example request :
curl "https://cloud.boxydev.com/api/server/1/sites" \
    -H "Authorization: Bearer {token}" \
    -H "Accept: application/json" \
    -H "Content-Type: application/json"
Example response :
{
    "data": [
        {
            "id": 1,
            "domain": "website.com",
            "test_domain": null,
            "wildcard": false,
            "aliases": null,
            "directory": "/www",
            "published": false,
            "user": "cloud",
            "status": "installed",
            "type": "laravel",
            "application": null,
            "repository": {
                "name": "vendor/project",
                "branch": "master",
                "status": "installed"
            },
            "deployment_script": null,
            "build_script": null,
            "activate_script": null,
            "atomic": true,
            "php_version": "8.1",
            "server_id": 1,
            "created_at": "2022-08-17T18:10:37.000000Z",
            "secure": false,
            "hook_url": "...",
            "last_deployment": {
                "id": 1,
                "type": "manual",
                "branch": "main",
                "commit": {
                    "hash": "1234",
                    "author": "Matthieu Mota",
                    "avatar": "https://avatars.githubusercontent.com/u/2427947?v=4",
                    "message": "Commit",
                    "url": "https://github.com/vendor/repository/commit/1234"
                },
                "output": "From github.com:vendor/repository\n * branch            main       -> FETCH_HEAD\nAlready up to date.",
                "status": "finished",
                "site_id": 1,
                "started_at": "2022-09-09T19:58:12.000000Z",
                "ended_at": "2022-09-09T19:58:31.000000Z"
            },
            "balancing_method": null,
            "tags": []
        }
    ],
    "links": {
        "first": "https://cloud.boxydev.com/api/server/1/sites?page=1",
        "last": "https://cloud.boxydev.com/api/server/1/sites?page=1",
        "prev": null,
        "next": null
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "path": "https://cloud.boxydev.com/api/server/1/sites",
        "per_page": 20,
        "to": 1,
        "total": 1
    }
}
Show a site.
GET /api/site/{id}
Example request :
curl "https://cloud.boxydev.com/api/site/1" \
    -H "Authorization: Bearer {token}" \
    -H "Accept: application/json" \
    -H "Content-Type: application/json"
Example response :
{
    "id": 1,
    "domain": "website.com",
    "test_domain": null,
    "wildcard": false,
    "aliases": null,
    "directory": "/www",
    "published": false,
    "user": "cloud",
    "status": "installed",
    "type": "laravel",
    "application": null,
    "repository": {
        "name": "vendor/project",
        "branch": "master",
        "status": "installed"
    },
    "deployment_script": null,
    "build_script": null,
    "activate_script": null,
    "atomic": true,
    "php_version": "8.1",
    "server_id": 1,
    "created_at": "2022-08-17T18:10:37.000000Z",
    "secure": false,
    "hook_url": "...",
    "last_deployment": {
        "id": 1,
        "type": "manual",
        "branch": "main",
        "commit": {
            "hash": "1234",
            "author": "Matthieu Mota",
            "avatar": "https://avatars.githubusercontent.com/u/2427947?v=4",
            "message": "Commit",
            "url": "https://github.com/vendor/repository/commit/1234"
        },
        "output": "From github.com:vendor/repository\n * branch            main       -> FETCH_HEAD\nAlready up to date.",
        "status": "finished",
        "site_id": 1,
        "started_at": "2022-09-09T19:58:12.000000Z",
        "ended_at": "2022-09-09T19:58:31.000000Z"
    },
    "balancing_method": null,
    "tags": []
}
Create a site.
POST /api/server/{id}/site
You can get web templates list here. You can manage all your web templates via API or on your account.
Parameters :
| Parameter | Description | 
|---|---|
| domain | The site domain. | 
| wildcard | Enable subdomain access on site (Optional). | 
| aliases | Other site domains (Optional). | 
| directory | Site directory public on web server (Optional). | 
| type | Application type: laravel,symfonyorwordpress. If empty, site will be simple PHP/HTML. | 
| user | Server user who own site. | 
| php_version | PHP version: 5.6,7.0,7.1,7.2,7.3,7.4,8.0,8.1or8.2. | 
| web_template_id | Web template ID (Optional). | 
Example request :
curl "https://cloud.boxydev.com/api/server/1/site" \
    -H "Authorization: Bearer {token}" \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    -d '{
        "domain": "fiorella.com",
        "wildcard": false,
        "aliases": ["marina.com", "matthieu.com"],
        "directory": "/public",
        "type": "laravel",
        "user": "cloud",
        "php_version": "8.1",
        "web_template_id": 1
    }'
Example response :
{
    "id": 1,
    "domain": "fiorella.com",
    "test_domain": null,
    "wildcard": true,
    "aliases": ["marina.com", "matthieu.com"],
    "directory": "/public",
    "published": false,
    "user": "cloud",
    "status": "installed",
    "type": "laravel",
    "application": null,
    "repository": {
        "name": "vendor/project",
        "branch": "master",
        "status": "installed"
    },
    "deployment_script": null,
    "build_script": null,
    "activate_script": null,
    "atomic": true,
    "php_version": "8.1",
    "server_id": 1,
    "created_at": "2022-08-17T18:10:37.000000Z",
    "secure": false,
    "hook_url": "...",
    "last_deployment": {
        "id": 1,
        "type": "manual",
        "branch": "main",
        "commit": {
            "hash": "1234",
            "author": "Matthieu Mota",
            "avatar": "https://avatars.githubusercontent.com/u/2427947?v=4",
            "message": "Commit",
            "url": "https://github.com/vendor/repository/commit/1234"
        },
        "output": "From github.com:vendor/repository\n * branch            main       -> FETCH_HEAD\nAlready up to date.",
        "status": "finished",
        "site_id": 1,
        "started_at": "2022-09-09T19:58:12.000000Z",
        "ended_at": "2022-09-09T19:58:31.000000Z"
    },
    "balancing_method": null,
    "tags": []
}
Update a site.
PUT /api/site/{id}
Parameters :
| Parameter | Description | 
|---|---|
| domain | The site domain. | 
| test_domain | Enable test domain. | 
| wildcard | Enable subdomain access on site. | 
| aliases | Other site domains. | 
| directory | Site directory public on web server. | 
| type | Application type: laravel,symfonyorwordpress. If empty, site will be simple PHP/HTML. | 
| user | Server user who own site. | 
| php_version | PHP version: 5.6,7.0,7.1,7.2,7.3,7.4,8.0,8.1or8.2. | 
Example request :
curl -X PUT "https://cloud.boxydev.com/api/site/1" \
    -H "Authorization: Bearer {token}" \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    -d '{
        "domain": "fiorella.com",
        "test_domain": true,
        "wildcard": true,
        "aliases": ["marina.com", "matthieu.com"],
        "directory": "/public",
        "type": "laravel",
        "user": "cloud",
        "php_version": "8.1"
    }'
Example response :
{
    "id": 1,
    "domain": "fiorella.com",
    "test_domain": "fiorella.cloud.boxydev.com",
    "wildcard": true,
    "aliases": ["marina.com", "matthieu.com"],
    "directory": "/public",
    "published": false,
    "user": "cloud",
    "status": "installed",
    "type": "laravel",
    "application": null,
    "repository": {
        "name": "vendor/project",
        "branch": "master",
        "status": "installed"
    },
    "deployment_script": null,
    "build_script": null,
    "activate_script": null,
    "atomic": true,
    "php_version": "8.1",
    "server_id": 1,
    "created_at": "2022-08-17T18:10:37.000000Z",
    "secure": false,
    "hook_url": "...",
    "last_deployment": {
        "id": 1,
        "type": "manual",
        "branch": "main",
        "commit": {
            "hash": "1234",
            "author": "Matthieu Mota",
            "avatar": "https://avatars.githubusercontent.com/u/2427947?v=4",
            "message": "Commit",
            "url": "https://github.com/vendor/repository/commit/1234"
        },
        "output": "From github.com:vendor/repository\n * branch            main       -> FETCH_HEAD\nAlready up to date.",
        "status": "finished",
        "site_id": 1,
        "started_at": "2022-09-09T19:58:12.000000Z",
        "ended_at": "2022-09-09T19:58:31.000000Z"
    },
    "balancing_method": null,
    "tags": []
}
List balancing sites on a load balancer.
GET /api/site/{id}/balancing
Example request :
curl "https://cloud.boxydev.com/api/site/1/balancing" \
    -H "Authorization: Bearer {token}" \
    -H "Accept: application/json" \
    -H "Content-Type: application/json"
Example response :
[
    {
        "server_id": 1,
        "port": 80,
        "weight": 1,
        "backup": false,
        "down": false
    },
    {
        "server_id": 2,
        "port": 80,
        "weight": 1,
        "backup": false,
        "down": false
    }
]
Update balancing sites on a load balancer.
PUT /api/site/{id}/balancing
Parameters :
| Parameter | Description | 
|---|---|
| balancing_method | The balancing method: least_connorip_hash. Empty isround_robin. | 
| servers.*.id | The server to load balance. | 
| servers.*.port | The port on server to load balance (Optional). | 
| servers.*.weight | The priority when balancing to server (Optional). | 
| servers.*.backup | The server is a backup (Optional). | 
| servers.*.down | The server is disabled (Optional). | 
Example request :
curl -X PUT "https://cloud.boxydev.com/api/site/1/balancing" \
    -H "Authorization: Bearer {token}" \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    -d '{
        "balancing_method": "ip_hash"
        "servers": [
            { "id": 1, "port": 80, "weight": 1, "backup": false, "down": false },
            { "id": 2, "port": 80, "weight": 1, "backup": false, "down": false }
        ]
    }'
List syncing sites on a site.
GET /api/site/{id}/syncing
Example request :
curl "https://cloud.boxydev.com/api/site/1/syncing" \
    -H "Authorization: Bearer {token}" \
    -H "Accept: application/json" \
    -H "Content-Type: application/json"
Example response :
[
    {
        "id": 1,
        "domain": "website.com",
        "test_domain": null,
        "wildcard": false,
        "aliases": null,
        "directory": "/public",
        "published": false,
        "user": "cloud",
        "status": "installed",
        "type": "laravel",
        "application": null,
        "repository": {
            "name": "vendor/project",
            "branch": "master",
            "status": "installed"
        },
        "deployment_script": null,
        "build_script": null,
        "activate_script": null,
        "atomic": true,
        "php_version": "8.1",
        "server_id": 1,
        "created_at": "2022-09-10T06:00:57.000000Z",
        "secure": false,
        "hook_url": "...",
        "last_deployment": {
            "id": 1,
            "type": "manual",
            "branch": "main",
            "commit": {
                "hash": "1234",
                "author": "Matthieu Mota",
                "avatar": "https://avatars.githubusercontent.com/u/2427947?v=4",
                "message": "Commit",
                "url": "https://github.com/vendor/repository/commit/1234"
            },
            "output": "From github.com:vendor/repository\n * branch            main       -> FETCH_HEAD\nAlready up to date.",
            "status": "finished",
            "site_id": 1,
            "started_at": "2022-09-09T19:58:12.000000Z",
            "ended_at": "2022-09-09T19:58:31.000000Z"
        },
        "balancing_method": null,
        "tags": []
    }
]
Update syncing sites on a site.
PUT /api/site/{id}/syncing
Parameters :
| Parameter | Description | 
|---|---|
| sites.* | The sites to be syncing with site. | 
Example request :
curl -X PUT "https://cloud.boxydev.com/api/site/1/syncing" \
    -H "Authorization: Bearer {token}" \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    -d '{
        "sites": [2, 3]
    }'
Delete a site.
DELETE /api/site/{id}
Example request :
curl -X DELETE "https://cloud.boxydev.com/api/site/1" \
    -H "Authorization: Bearer {token}" \
    -H "Accept: application/json" \
    -H "Content-Type: application/json"