Services

Every service of the customer, whatever its kind. A service's id is what the other groups take as service_id.

List services

GET/services

Any key

Every service of the customer. Filter with type.

Query

type"virtual_machine" | "domain" | "mailbox" | "website" | "ip_address" | "reverse_dns" | "dns_zone" | "subnet" | "unifi_site" | "object_storage" | null

Response 200

idrequiredstring (uuid)
typerequired"virtual_machine" | "domain" | "mailbox" | "website" | "ip_address" | "reverse_dns" | "dns_zone" | "subnet" | "unifi_site" | "object_storage"
namerequiredstring
descriptionrequiredstring | null
statusrequired"active" | "suspended" | "provisioning" | "decommissioned"
created_atrequiredstring (date-time)
updated_atrequiredstring (date-time)
curl "https://portal.nimag.net/api/v1/services" \
  -H "Authorization: Bearer nck_…"
[
  {
    "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
    "type": "virtual_machine",
    "name": "string",
    "description": "string",
    "status": "active",
    "created_at": "2026-01-31T12:00:00Z",
    "updated_at": "2026-01-31T12:00:00Z"
  }
]

A service

GET/services/{service_id}

Any key

Path

service_idrequiredstring (uuid)

Response 200

idrequiredstring (uuid)
typerequired"virtual_machine" | "domain" | "mailbox" | "website" | "ip_address" | "reverse_dns" | "dns_zone" | "subnet" | "unifi_site" | "object_storage"
namerequiredstring
descriptionrequiredstring | null
statusrequired"active" | "suspended" | "provisioning" | "decommissioned"
created_atrequiredstring (date-time)
updated_atrequiredstring (date-time)
curl "https://portal.nimag.net/api/v1/services/{service_id}" \
  -H "Authorization: Bearer nck_…"
{
  "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "type": "virtual_machine",
  "name": "string",
  "description": "string",
  "status": "active",
  "created_at": "2026-01-31T12:00:00Z",
  "updated_at": "2026-01-31T12:00:00Z"
}

Refresh the service list

POST/sync

Any key

Brings the list in line with the systems the services run on. Rarely needed: it is kept up to date.

Response 200

syncedrequiredboolean
removedrequiredinteger
addedrequiredinteger
updatedrequiredinteger
curl -X POST "https://portal.nimag.net/api/v1/sync" \
  -H "Authorization: Bearer nck_…"
{
  "synced": true,
  "removed": 0,
  "added": 0,
  "updated": 0
}

Virtual machines at a glance

GET/summaries/vms

Needs the permission vm:read

State, CPU, memory and disk of every virtual machine, in one call.

Response 200

availablerequiredboolean
itemsrequiredobject[]
service_idrequiredstring (uuid)
power_staterequiredstring | null
cpusrequiredinteger | null
memory_mbrequiredinteger | null
curl "https://portal.nimag.net/api/v1/summaries/vms" \
  -H "Authorization: Bearer nck_…"
{
  "available": true,
  "items": [
    {
      "service_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "power_state": "string",
      "cpus": 0,
      "memory_mb": 0
    }
  ]
}

Mail domains at a glance

GET/summaries/mail-domains

Needs the permission mailbox:read

Mailbox counts and storage of every mail domain, in one call.

Response 200

availablerequiredboolean
itemsrequiredobject[]
service_idrequiredstring (uuid)
mailbox_countrequiredinteger
curl "https://portal.nimag.net/api/v1/summaries/mail-domains" \
  -H "Authorization: Bearer nck_…"
{
  "available": true,
  "items": [
    {
      "service_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "mailbox_count": 0
    }
  ]
}

Websites at a glance

GET/summaries/websites

Needs the permission website:read

The web server of every website, in one call.

Response 200

availablerequiredboolean
itemsrequiredobject[]
service_idrequiredstring (uuid)
serverrequiredstring | null
curl "https://portal.nimag.net/api/v1/summaries/websites" \
  -H "Authorization: Bearer nck_…"
{
  "available": true,
  "items": [
    {
      "service_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
      "server": "string"
    }
  ]
}