# OverviewThis reference tracks customer routes that actually exist.
# Read a reference operationEach entry identifies method, path, authentication, role, parameters, body, response, and errors. Path identifiers come from list responses; never derive an ID from a display name.
Collections use a data field and can include metadata. Uploads use multipart/form-data while common mutations use JSON. Examples use placeholders and must not put a real secret in shell history.
# Before automation1 Call /api/auth/me to verify token and organization.
2 List the resource and obtain its identifier.
3 Test the mutation on a non-critical resource.
4 Handle 401, 403, 404, 422, 429, and timeouts explicitly.
# Machine-readable OpenAPIDownload /docs/api/openapi.json to generate types or explore operations, while retaining the role and retry rules described here.
# Customer REST operations
Authentication 3
POST /api/auth/login
# Create an API session token
With 2FA, create a personal token in the dashboard and use it directly.
Authentication None
Roles None
Success 200
Request fields
Example
bash Copy
curl --request POST \
--url 'https://api.cdn.pizza/api/auth/login' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{"email":"dev@example.com","password":"PASSWORD"}'
GET /api/auth/me
# Read the current profile
Authentication Personal Bearer token
Roles owner, admin, member, viewer
Success 200
Example
bash Copy
curl --request GET \
--url 'https://api.cdn.pizza/api/auth/me' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer YOUR_API_TOKEN'
POST /api/auth/logout
# Revoke the current token
Authentication Personal Bearer token
Roles owner, admin, member, viewer
Success 200
Example
bash Copy
curl --request POST \
--url 'https://api.cdn.pizza/api/auth/logout' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer YOUR_API_TOKEN'
Zones 3
GET /api/zones
# List zones
Authentication Personal Bearer token
Roles owner, admin, member, viewer
Success 200
Example
bash Copy
curl --request GET \
--url 'https://api.cdn.pizza/api/zones' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer YOUR_API_TOKEN'
POST /api/zones
# Create, register, or transfer a zone
Registration and transfer are asynchronous and may return 202 with task_id.
Authentication Personal Bearer token
Roles owner, admin, member
Success 201 202
Request fields
Example
bash Copy
curl --request POST \
--url 'https://api.cdn.pizza/api/zones' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer YOUR_API_TOKEN' \
--header 'Content-Type: application/json' \
--data '{"domain":"assets.example.com"}'
GET /api/zones/{id}
# Read a zone
Authentication Personal Bearer token
Roles owner, admin, member, viewer
Success 200
Request fields
Example
bash Copy
curl --request GET \
--url 'https://api.cdn.pizza/api/zones/ZONE_ID' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer YOUR_API_TOKEN'
Cache 2
POST /api/zones/{id}/purge
# Purge a path
Authentication Personal Bearer token
Roles owner, admin, member
Success 200
Request fields
Example
bash Copy
curl --request POST \
--url 'https://api.cdn.pizza/api/zones/ZONE_ID/purge' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer YOUR_API_TOKEN' \
--header 'Content-Type: application/json' \
--data '{}'
POST /api/zones/{id}/purge-all
# Purge an entire zone
Authentication Personal Bearer token
Roles owner, admin, member
Success 200
Request fields
Example
bash Copy
curl --request POST \
--url 'https://api.cdn.pizza/api/zones/ZONE_ID/purge-all' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer YOUR_API_TOKEN'
Analytics 1
GET /api/zones/{id}/stats
# Read zone statistics
Authentication Personal Bearer token
Roles owner, admin, member, viewer
Success 200
Request fields
Example
bash Copy
curl --request GET \
--url 'https://api.cdn.pizza/api/zones/ZONE_ID/stats?period=24h' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer YOUR_API_TOKEN'
Files 4
GET /api/files
# List files
Authentication Personal Bearer token
Roles owner, admin, member, viewer
Success 200
Request fields
Example
bash Copy
curl --request GET \
--url 'https://api.cdn.pizza/api/files?zone_id=42&per_page=25&page=1' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer YOUR_API_TOKEN'
POST /api/files
# Upload a file
Authentication Personal Bearer token
Roles owner, admin, member
Success 201
Request fields
Example
bash Copy
curl --request POST \
--url 'https://api.cdn.pizza/api/files' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer YOUR_API_TOKEN' \
--form 'file=@./asset.png' \
--form 'zone_id=42' \
--form 'cache_ttl=3600' \
--form 'direct_public_link=false'
GET /api/files/{uuid}
# Read a file
Authentication Personal Bearer token
Roles owner, admin, member, viewer
Success 200
Request fields
Example
bash Copy
curl --request GET \
--url 'https://api.cdn.pizza/api/files/FILE_UUID' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer YOUR_API_TOKEN'
DELETE /api/files/{uuid}
# Delete a file
Authentication Personal Bearer token
Roles owner, admin, member
Success 200
Request fields
Example
bash Copy
curl --request DELETE \
--url 'https://api.cdn.pizza/api/files/FILE_UUID' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer YOUR_API_TOKEN'
Nodes 5
GET /api/nodes
# List available nodes
Authentication Personal Bearer token
Roles owner, admin, member, viewer
Success 200
Example
bash Copy
curl --request GET \
--url 'https://api.cdn.pizza/api/nodes' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer YOUR_API_TOKEN'
POST /api/nodes
# Create a customer node
Authentication Personal Bearer token
Roles owner, admin, member
Success 201
Request fields
Example
bash Copy
curl --request POST \
--url 'https://api.cdn.pizza/api/nodes' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer YOUR_API_TOKEN' \
--header 'Content-Type: application/json' \
--data '{"node_id":"edge-zurich-01","hostname":"edge-zurich-01.example.net","ip_address":"203.0.113.42","region_id":1,"country":"CH"}'
GET /api/nodes/tokens
# List BYOC tokens
Authentication Personal Bearer token
Roles owner, admin
Success 200
Example
bash Copy
curl --request GET \
--url 'https://api.cdn.pizza/api/nodes/tokens' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer YOUR_API_TOKEN'
POST /api/nodes/tokens
# Create a BYOC token
Authentication Personal Bearer token
Roles owner, admin
Success 201
Request fields
Example
bash Copy
curl --request POST \
--url 'https://api.cdn.pizza/api/nodes/tokens' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer YOUR_API_TOKEN' \
--header 'Content-Type: application/json' \
--data '{}'
DELETE /api/nodes/tokens/{id}
# Revoke a BYOC token
Authentication Personal Bearer token
Roles owner, admin
Success 200
Request fields
Example
bash Copy
curl --request DELETE \
--url 'https://api.cdn.pizza/api/nodes/tokens/TOKEN_ID' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer YOUR_API_TOKEN'
Private networks 5
GET /api/networks
# List private networks
Authentication Personal Bearer token
Roles owner, admin, member, viewer
Success 200
Example
bash Copy
curl --request GET \
--url 'https://api.cdn.pizza/api/networks' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer YOUR_API_TOKEN'
POST /api/networks
# Create a private network
Authentication Personal Bearer token
Roles owner, admin, member
Success 201
Request fields
Example
bash Copy
curl --request POST \
--url 'https://api.cdn.pizza/api/networks' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer YOUR_API_TOKEN' \
--header 'Content-Type: application/json' \
--data '{"name":"backoffice","private_cidr":"10.42.0.0/24"}'
GET /api/networks/{network}
# Read a private network
Authentication Personal Bearer token
Roles owner, admin, member, viewer
Success 200
Request fields
Example
bash Copy
curl --request GET \
--url 'https://api.cdn.pizza/api/networks/NETWORK_ID' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer YOUR_API_TOKEN'
POST /api/networks/{network}/enrollment-keys
# Create a network enrollment key
Authentication Personal Bearer token
Roles owner, admin, member
Success 201
Request fields
Example
bash Copy
curl --request POST \
--url 'https://api.cdn.pizza/api/networks/NETWORK_ID/enrollment-keys' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer YOUR_API_TOKEN' \
--header 'Content-Type: application/json' \
--data '{"name":"first-device"}'
POST /api/networks/enroll
# Enroll a WireGuard peer
Authentication Enrollment key in request body
Roles None
Success 201
Request fields
Example
bash Copy
curl --request POST \
--url 'https://api.cdn.pizza/api/networks/enroll' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{"enrollment_token":"ENROLLMENT_TOKEN","name":"origin-geneva","public_key":"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="}'
Status agents 5
POST /api/status-agents/enrollment-keys
# Create an agent enrollment key
Authentication Personal Bearer token
Roles owner, admin, member
Success 201
Request fields
Example
bash Copy
curl --request POST \
--url 'https://api.cdn.pizza/api/status-agents/enrollment-keys' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer YOUR_API_TOKEN' \
--header 'Content-Type: application/json' \
--data '{"status_page_id":1,"name":"branch-geneva"}'
POST /api/status-agents/enroll
# Enroll a status agent
Authentication Enrollment key in request body
Roles None
Success 201
Request fields
Example
bash Copy
curl --request POST \
--url 'https://api.cdn.pizza/api/status-agents/enroll' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{"enrollment_token":"STATUS_ENROLLMENT_TOKEN","name":"branch-geneva"}'
GET /api/status-agents/config
# Read agent configuration
Authentication Agent Bearer token
Roles None
Success 200
Example
bash Copy
curl --request GET \
--url 'https://api.cdn.pizza/api/status-agents/config' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer STATUS_AGENT_TOKEN'
POST /api/status-agents/heartbeat
# Send an agent heartbeat
Authentication Agent Bearer token
Roles None
Success 200
Request fields
Example
bash Copy
curl --request POST \
--url 'https://api.cdn.pizza/api/status-agents/heartbeat' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer STATUS_AGENT_TOKEN' \
--header 'Content-Type: application/json' \
--data '{}'
POST /api/status-agents/results
# Submit check results
Authentication Agent Bearer token
Roles None
Success 200
Request fields
Example
bash Copy
curl --request POST \
--url 'https://api.cdn.pizza/api/status-agents/results' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer STATUS_AGENT_TOKEN' \
--header 'Content-Type: application/json' \
--data '{"results":[{"monitor_id":17,"configuration_version":2,"healthy":true,"latency_ms":42.5}]}'
Partner POPs 3
GET /api/partner-pops
# List partner POPs
Authentication Personal Bearer token
Roles owner, admin, member
Success 200
Example
bash Copy
curl --request GET \
--url 'https://api.cdn.pizza/api/partner-pops' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer YOUR_API_TOKEN'
POST /api/partner-pops
# Create a partner POP
Authentication Personal Bearer token
Roles owner, admin, member
Success 201
Request fields
Example
bash Copy
curl --request POST \
--url 'https://api.cdn.pizza/api/partner-pops' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer YOUR_API_TOKEN' \
--header 'Content-Type: application/json' \
--data '{"company_name":"Example Networks AG","display_name":"Zurich IX","contact_email":"noc@example.net","city":"Zürich","country":"CH","capacity_mbps":10000,"requirements_accepted":true}'
POST /api/partner-pops/{partnerPop}/enrollment-token
# Create a POP installation token
The POP must belong to the organization. The application creator may also create the token.
Authentication Personal Bearer token
Roles owner, admin, member
Success 201
Request fields
Example
bash Copy
curl --request POST \
--url 'https://api.cdn.pizza/api/partner-pops/PARTNER_POP_ID/enrollment-token' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer YOUR_API_TOKEN' \
--header 'Content-Type: application/json' \
--data '{}'
Privacy 4
GET /api/gdpr/export
# Export account data
Authentication Personal Bearer token
Roles owner, admin, member, viewer
Success 200
Example
bash Copy
curl --request GET \
--url 'https://api.cdn.pizza/api/gdpr/export' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer YOUR_API_TOKEN'
DELETE /api/gdpr/account
# Delete the account
Authentication Personal Bearer token
Roles owner, admin
Success 200
Request fields
Example
bash Copy
curl --request DELETE \
--url 'https://api.cdn.pizza/api/gdpr/account' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer YOUR_API_TOKEN' \
--header 'Content-Type: application/json' \
--data '{"password":"ACCOUNT_PASSWORD"}'
GET /api/gdpr/consent
# Read consent settings
Authentication Personal Bearer token
Roles owner, admin, member, viewer
Success 200
Example
bash Copy
curl --request GET \
--url 'https://api.cdn.pizza/api/gdpr/consent' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer YOUR_API_TOKEN'
PUT /api/gdpr/consent
# Update consent settings
Authentication Personal Bearer token
Roles owner, admin, member, viewer
Success 200
Request fields
Example
bash Copy
curl --request PUT \
--url 'https://api.cdn.pizza/api/gdpr/consent' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer YOUR_API_TOKEN' \
--header 'Content-Type: application/json' \
--data '{}'
Billing 3
GET /api/billing/plans
# List plans
Authentication Personal Bearer token
Roles owner, admin, member, viewer
Success 200
Example
bash Copy
curl --request GET \
--url 'https://api.cdn.pizza/api/billing/plans' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer YOUR_API_TOKEN'
GET /api/billing
# Read the current subscription
Authentication Personal Bearer token
Roles owner, admin, member, viewer
Success 200
Example
bash Copy
curl --request GET \
--url 'https://api.cdn.pizza/api/billing' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer YOUR_API_TOKEN'
POST /api/billing/checkout
# Create a checkout session
Authentication Personal Bearer token
Roles owner, admin
Success 200
Request fields
Example
bash Copy
curl --request POST \
--url 'https://api.cdn.pizza/api/billing/checkout' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer YOUR_API_TOKEN' \
--header 'Content-Type: application/json' \
--data '{"plan":"pro"}'
Webhooks 3
GET /api/webhooks
# List webhooks
Authentication Personal Bearer token
Roles owner, admin, member, viewer
Success 200
Example
bash Copy
curl --request GET \
--url 'https://api.cdn.pizza/api/webhooks' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer YOUR_API_TOKEN'
POST /api/webhooks
# Create a webhook
Authentication Personal Bearer token
Roles owner, admin
Success 201
Request fields
Example
bash Copy
curl --request POST \
--url 'https://api.cdn.pizza/api/webhooks' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer YOUR_API_TOKEN' \
--header 'Content-Type: application/json' \
--data '{"url":"https://hooks.example.com/cdn-pizza","events":["file.uploaded","file.deleted"]}'
DELETE /api/webhooks/{id}
# Delete a webhook
Authentication Personal Bearer token
Roles owner, admin
Success 200
Request fields
Example
bash Copy
curl --request DELETE \
--url 'https://api.cdn.pizza/api/webhooks/WEBHOOK_ID' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer YOUR_API_TOKEN'
GraphQL 1
POST /api/graphql
# Execute a GraphQL query
Authentication Personal Bearer token
Roles owner, admin, member, viewer
Success 200
Request fields
Example
bash Copy
curl --request POST \
--url 'https://api.cdn.pizza/api/graphql' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer YOUR_API_TOKEN' \
--header 'Content-Type: application/json' \
--data '{"query":"query { zones { id domain } }"}'