Skip to content
NebulaCtrldocs
HTTP APIEndpoints

Domains

Domains and their DNS and certificates. Each operation lists its method and path, parameters, request body, responses and an example call.

GET/api/v1/clusters/{id}/tailnet-devices

Authorization

AuthorizationBearer <token>

An API token, sent as Authorization: Bearer <token>. A token belongs to one organization and has the role it was created with, so it needs no X-Nebula-Organization header; if you send one, it must name the token's organization.

In: header

Path Parameters

id*string

Response Body

application/json

application/problem+json

curl -X GET "https://example.com/api/v1/clusters/string/tailnet-devices"
{  "$schema": "https://example.com/TailnetDevicesBody.json",  "adminUrl": "string",  "devices": [    {      "deviceId": "string",      "hostname": "string",      "name": "string",      "orphanedAt": "2019-08-24T14:15:22Z",      "reason": "string"    }  ]}
PATCH/api/v1/domains/{id}

Authorization

AuthorizationBearer <token>

An API token, sent as Authorization: Bearer <token>. A token belongs to one organization and has the role it was created with, so it needs no X-Nebula-Organization header; if you send one, it must name the token's organization.

In: header

Path Parameters

id*string

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/problem+json

curl -X PATCH "https://example.com/api/v1/domains/string" \  -H "Content-Type: application/json" \  -d '{}'
{  "$schema": "https://example.com/DomainBody.json",  "certIssuer": "string",  "certNotAfter": "2019-08-24T14:15:22Z",  "certificate": {    "attempts": 0,    "issuedAt": "2019-08-24T14:15:22Z",    "lastError": "string",    "nextAttemptAt": "2019-08-24T14:15:22Z",    "notAfter": "2019-08-24T14:15:22Z",    "renewAfter": "2019-08-24T14:15:22Z"  },  "certificateMethod": "string",  "certificatePlaceholder": true,  "checkedAt": "2019-08-24T14:15:22Z",  "claimExpiresAt": "2019-08-24T14:15:22Z",  "cloudflareZone": "string",  "createdAt": "2019-08-24T14:15:22Z",  "dnsProvider": "string",  "dnsProxied": true,  "dnsStatus": "string",  "dnsSyncError": "string",  "dnsSyncedAt": "2019-08-24T14:15:22Z",  "edgeClusterId": "string",  "environmentId": "string",  "exposure": "string",  "hostname": "string",  "id": "string",  "liveMessage": "string",  "liveReportedAt": "2019-08-24T14:15:22Z",  "liveState": "pending",  "processId": "string",  "recommendedTtlSeconds": 0,  "serviceId": "string",  "tailnetFqdn": "string",  "tlsStatus": "string",  "verificationRecordName": "string",  "verificationRecordValue": "string",  "verificationStatus": "string"}

Delete a domain route.

DELETE/api/v1/domains/{id}

Authorization

AuthorizationBearer <token>

An API token, sent as Authorization: Bearer <token>. A token belongs to one organization and has the role it was created with, so it needs no X-Nebula-Organization header; if you send one, it must name the token's organization.

In: header

Path Parameters

id*string

Response Body

application/problem+json

curl -X DELETE "https://example.com/api/v1/domains/string"
Empty
POST/api/v1/domains/{id}/certificate/renew

Authorization

AuthorizationBearer <token>

An API token, sent as Authorization: Bearer <token>. A token belongs to one organization and has the role it was created with, so it needs no X-Nebula-Organization header; if you send one, it must name the token's organization.

In: header

Path Parameters

id*string

Response Body

application/problem+json

curl -X POST "https://example.com/api/v1/domains/string/certificate/renew"
Empty
POST/api/v1/domains/{id}/check

Authorization

AuthorizationBearer <token>

An API token, sent as Authorization: Bearer <token>. A token belongs to one organization and has the role it was created with, so it needs no X-Nebula-Organization header; if you send one, it must name the token's organization.

In: header

Path Parameters

id*string

Response Body

application/json

application/problem+json

curl -X POST "https://example.com/api/v1/domains/string/check"
{  "$schema": "https://example.com/CheckBody.json",  "addresses": [    "string"  ],  "domain": {    "$schema": "https://example.com/DomainBody.json",    "certIssuer": "string",    "certNotAfter": "2019-08-24T14:15:22Z",    "certificate": {      "attempts": 0,      "issuedAt": "2019-08-24T14:15:22Z",      "lastError": "string",      "nextAttemptAt": "2019-08-24T14:15:22Z",      "notAfter": "2019-08-24T14:15:22Z",      "renewAfter": "2019-08-24T14:15:22Z"    },    "certificateMethod": "string",    "certificatePlaceholder": true,    "checkedAt": "2019-08-24T14:15:22Z",    "claimExpiresAt": "2019-08-24T14:15:22Z",    "cloudflareZone": "string",    "createdAt": "2019-08-24T14:15:22Z",    "dnsProvider": "string",    "dnsProxied": true,    "dnsStatus": "string",    "dnsSyncError": "string",    "dnsSyncedAt": "2019-08-24T14:15:22Z",    "edgeClusterId": "string",    "environmentId": "string",    "exposure": "string",    "hostname": "string",    "id": "string",    "liveMessage": "string",    "liveReportedAt": "2019-08-24T14:15:22Z",    "liveState": "pending",    "processId": "string",    "recommendedTtlSeconds": 0,    "serviceId": "string",    "tailnetFqdn": "string",    "tlsStatus": "string",    "verificationRecordName": "string",    "verificationRecordValue": "string",    "verificationStatus": "string"  },  "ingressIPs": [    "string"  ],  "nextAction": "string",  "verificationNextAction": "string"}
POST/api/v1/domains/{id}/dns/adopt

Authorization

AuthorizationBearer <token>

An API token, sent as Authorization: Bearer <token>. A token belongs to one organization and has the role it was created with, so it needs no X-Nebula-Organization header; if you send one, it must name the token's organization.

In: header

Path Parameters

id*string

Response Body

application/json

application/problem+json

curl -X POST "https://example.com/api/v1/domains/string/dns/adopt"
{  "$schema": "https://example.com/DomainBody.json",  "certIssuer": "string",  "certNotAfter": "2019-08-24T14:15:22Z",  "certificate": {    "attempts": 0,    "issuedAt": "2019-08-24T14:15:22Z",    "lastError": "string",    "nextAttemptAt": "2019-08-24T14:15:22Z",    "notAfter": "2019-08-24T14:15:22Z",    "renewAfter": "2019-08-24T14:15:22Z"  },  "certificateMethod": "string",  "certificatePlaceholder": true,  "checkedAt": "2019-08-24T14:15:22Z",  "claimExpiresAt": "2019-08-24T14:15:22Z",  "cloudflareZone": "string",  "createdAt": "2019-08-24T14:15:22Z",  "dnsProvider": "string",  "dnsProxied": true,  "dnsStatus": "string",  "dnsSyncError": "string",  "dnsSyncedAt": "2019-08-24T14:15:22Z",  "edgeClusterId": "string",  "environmentId": "string",  "exposure": "string",  "hostname": "string",  "id": "string",  "liveMessage": "string",  "liveReportedAt": "2019-08-24T14:15:22Z",  "liveState": "pending",  "processId": "string",  "recommendedTtlSeconds": 0,  "serviceId": "string",  "tailnetFqdn": "string",  "tlsStatus": "string",  "verificationRecordName": "string",  "verificationRecordValue": "string",  "verificationStatus": "string"}
GET/api/v1/environments/{id}/domains

Authorization

AuthorizationBearer <token>

An API token, sent as Authorization: Bearer <token>. A token belongs to one organization and has the role it was created with, so it needs no X-Nebula-Organization header; if you send one, it must name the token's organization.

In: header

Path Parameters

id*string

Query Parameters

cursor?string

Opaque cursor from a previous response's nextCursor. Omit for the first page.

limit?integer

How many items to return.

Formatint64
Range1 <= value <= 200
Default50

Response Body

application/json

application/problem+json

curl -X GET "https://example.com/api/v1/environments/string/domains"
{  "$schema": "https://example.com/PageDomainBody.json",  "items": [    {      "$schema": "https://example.com/DomainBody.json",      "certIssuer": "string",      "certNotAfter": "2019-08-24T14:15:22Z",      "certificate": {        "attempts": 0,        "issuedAt": "2019-08-24T14:15:22Z",        "lastError": "string",        "nextAttemptAt": "2019-08-24T14:15:22Z",        "notAfter": "2019-08-24T14:15:22Z",        "renewAfter": "2019-08-24T14:15:22Z"      },      "certificateMethod": "string",      "certificatePlaceholder": true,      "checkedAt": "2019-08-24T14:15:22Z",      "claimExpiresAt": "2019-08-24T14:15:22Z",      "cloudflareZone": "string",      "createdAt": "2019-08-24T14:15:22Z",      "dnsProvider": "string",      "dnsProxied": true,      "dnsStatus": "string",      "dnsSyncError": "string",      "dnsSyncedAt": "2019-08-24T14:15:22Z",      "edgeClusterId": "string",      "environmentId": "string",      "exposure": "string",      "hostname": "string",      "id": "string",      "liveMessage": "string",      "liveReportedAt": "2019-08-24T14:15:22Z",      "liveState": "pending",      "processId": "string",      "recommendedTtlSeconds": 0,      "serviceId": "string",      "tailnetFqdn": "string",      "tlsStatus": "string",      "verificationRecordName": "string",      "verificationRecordValue": "string",      "verificationStatus": "string"    }  ],  "nextCursor": "string"}
POST/api/v1/environments/{id}/domains

Authorization

AuthorizationBearer <token>

An API token, sent as Authorization: Bearer <token>. A token belongs to one organization and has the role it was created with, so it needs no X-Nebula-Organization header; if you send one, it must name the token's organization.

In: header

Path Parameters

id*string

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/problem+json

curl -X POST "https://example.com/api/v1/environments/string/domains" \  -H "Content-Type: application/json" \  -d '{    "hostname": "string",    "processId": "string",    "serviceId": "string"  }'
{  "$schema": "https://example.com/DomainBody.json",  "certIssuer": "string",  "certNotAfter": "2019-08-24T14:15:22Z",  "certificate": {    "attempts": 0,    "issuedAt": "2019-08-24T14:15:22Z",    "lastError": "string",    "nextAttemptAt": "2019-08-24T14:15:22Z",    "notAfter": "2019-08-24T14:15:22Z",    "renewAfter": "2019-08-24T14:15:22Z"  },  "certificateMethod": "string",  "certificatePlaceholder": true,  "checkedAt": "2019-08-24T14:15:22Z",  "claimExpiresAt": "2019-08-24T14:15:22Z",  "cloudflareZone": "string",  "createdAt": "2019-08-24T14:15:22Z",  "dnsProvider": "string",  "dnsProxied": true,  "dnsStatus": "string",  "dnsSyncError": "string",  "dnsSyncedAt": "2019-08-24T14:15:22Z",  "edgeClusterId": "string",  "environmentId": "string",  "exposure": "string",  "hostname": "string",  "id": "string",  "liveMessage": "string",  "liveReportedAt": "2019-08-24T14:15:22Z",  "liveState": "pending",  "processId": "string",  "recommendedTtlSeconds": 0,  "serviceId": "string",  "tailnetFqdn": "string",  "tlsStatus": "string",  "verificationRecordName": "string",  "verificationRecordValue": "string",  "verificationStatus": "string"}