149 lines
7.8 KiB
Markdown
149 lines
7.8 KiB
Markdown
This API call creates a server or updates it with the given information.
|
|
|
|
#### Location
|
|
```
|
|
/api/v1/servers/
|
|
```
|
|
|
|
#### Permissions required
|
|
`servers` RW
|
|
|
|
#### Body parameters
|
|
| Parameter | Type | Required | Description |
|
|
| -------------------- | ------------------------------------------------------ | -------- | ----------------------------------------- |
|
|
| server_vm_host_id | string | yes | Unique id of the vm |
|
|
| server_vm_host_name | string | no | Name of the vm |
|
|
| company_uuid | string | no | Company_uuid from companies |
|
|
| server_power_state | enum ['Running', 'Off'] | no | If the vm is on or off |
|
|
| server_state | enum ['new', 'active', 'deleted', 'trial', 'disabled'] | no | Server state. 'new' is the default |
|
|
| server_hostname | string | no | Hostname of the server |
|
|
| server_os | string | no | Server operating system |
|
|
| server_cpu | int | no | Amount of cpu used by the server |
|
|
| server_memory | int | no | Amount of memory used by the server in MB |
|
|
| server_memory_demand | int | no | Amount memory demand by the server in MB |
|
|
| server_disks | array | no | Array of the servers disks |
|
|
| server_ipv4 | array | no | Array of the ipv4 addresses in a list |
|
|
| server_ipv6 | json | no | Array of the ipv6 addresses in a list |
|
|
| server_vm_generation | int | no | VM machine generation or version |
|
|
| server_vm_snapshot | int | no | Amount of snapshots made of the vm |
|
|
| server_licenses | json | no | Array of the server licenses |
|
|
| server_backup | json | no | Array of the server backups |
|
|
| server_description | string | no | description of the server |
|
|
>[!note]
|
|
> If the current `server_state` is _new_ and the posted `server_state` is _deleted_, the server will be permanently deleted. Otherwise, if the current state is not _new_, the `server_state` will simply be updated to _deleted_ without permanent removal."
|
|
|
|
#### server_disks parameters
|
|
|
|
| Parameter | Type | Required | Description |
|
|
| ------------- | ------ | -------- | -------------------------------------------------------------------------------------------- |
|
|
| disk_name | string | yes | Name of the disk |
|
|
| disk_space | float | yes | The file space of the vhd that is reserved. |
|
|
| disk_used | float | yes | the real space used on the server for the vhd file. Can be used for dynamically sized disks. |
|
|
| disk_location | string | yes | The real location of the vhd file. |
|
|
|
|
#### server_licenses parameters
|
|
When posting `server_licenses`, you must include a prefix before each license name. Use **+** to
|
|
add or register a license, and **-** to ensure the license is not registered in Sentri. This ensures that
|
|
any license a server no longer has is automatically removed from Sentri.
|
|
|
|
| Parameter | Type | Required | Description |
|
|
| -------------- | ------ | -------- | ------------------------------------------------------------------------------------------------------------------ |
|
|
| *license name* | string | yes | Name of a license |
|
|
| *license type* | string | yes | Type the license like, **super-plus** or **plus**. If this is not applicable, name it the same as the license name |
|
|
|
|
#### server_backup parameters
|
|
When posting `server_backup`, you must include a prefix before each backup name. Use **+** to
|
|
add or register a backup, and **-** to ensure the backup is not registered in Sentri. This ensures that
|
|
any backup a server no longer has is automatically removed from Sentri.
|
|
|
|
| Parameter | Type | Required | Description |
|
|
| ------------- | ------ | -------- | ------------------------------------------------------------------- |
|
|
| *backup name* | string | yes | Name of the backup |
|
|
| *backup type* | string | yes | Type of the backup. You can put here yes or the type of the backup. |
|
|
|
|
### Example Body (json)
|
|
```json
|
|
{
|
|
"server_vm_id": "00155d001d3f",
|
|
"server_vm_host_name": "web01.test.example.nl",
|
|
"server_power_state": "Running",
|
|
"server_state": "new",
|
|
"server_hostname": "web01.test.example.nl",
|
|
"server_os": "AlmaLinux 10.1",
|
|
"server_cpu": 1,
|
|
"server_memory": 2048,
|
|
"server_memory_demand": 1267,
|
|
"server_disks": [
|
|
{
|
|
"disk_name": "server_datadisk.vhdx",
|
|
"disk_space": "150",
|
|
"disk_used": "140.5",
|
|
"disk_location": "C:\\ClusterStorage\\vol07\\web01.test\\VHD\\"
|
|
}
|
|
],
|
|
"server_ipv4": [
|
|
"123.12.34.113",
|
|
"123.12.34.134"
|
|
],
|
|
"server_ipv6": [
|
|
"2a01:4c66:4:2:44::1",
|
|
"2a01:4c66:4:2:45::2"
|
|
],
|
|
"server_vm_generation": 2,
|
|
"server_vm_snapshot": 1,
|
|
"server_licenses": [
|
|
{ "+directadmin": "Discounted Standard" },
|
|
{ "+cpguard": "cpguard" },
|
|
{ "-installatron": "none" }
|
|
],
|
|
"server_backup": [
|
|
{ "+borg": "yes" }
|
|
],
|
|
"server_description": "test web server"
|
|
}
|
|
```
|
|
|
|
#### Multiple servers
|
|
It is possible to post multiple servers in one request. Put the different servers in an array like below:
|
|
```json
|
|
{
|
|
"servers": [
|
|
{
|
|
"server_vm_id": "00155d001d3d",
|
|
"server_vm_host_name": "web01.test.example.nl"
|
|
},
|
|
{
|
|
"server_vm_id": "00155d001d3f",
|
|
"server_vm_host_name": "web02.test.example.nl"
|
|
}
|
|
]
|
|
}
|
|
```
|
|
|
|
### Example Request
|
|
```php
|
|
$curl = curl_init();
|
|
|
|
curl_setopt_array($curl, array(
|
|
CURLOPT_URL => 'https://sentri.nl/api/v1/servers/',
|
|
CURLOPT_HTTPHEADER => [
|
|
"Authorization: Bearer <API your Bearer token>",
|
|
],
|
|
CURLOPT_POST => true,
|
|
CURLOPT_POSTFIELDS =>'<json payload body>',
|
|
));
|
|
|
|
$response = curl_exec($curl);
|
|
|
|
curl_close($curl);
|
|
echo $response;
|
|
```
|
|
|
|
### Example Response
|
|
```json
|
|
"Server(s) modified or updated successfully."
|
|
```
|
|
|
|
#### Known errors or issues.
|
|
None are known at the time.
|
|
If you do encounter issues and get an http code in return, check the response codes on this page. |