Create node enrollment
const url = 'https://gateway.example.com/api/nodes';const options = { method: 'POST', headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'}, body: '{"type":"nginx","hostname":"example","displayName":"example","folderId":"2489E9AD-2EE2-8E00-8EC9-32D5F69181C0","serviceAddresses":["example"],"servicePort":1}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://gateway.example.com/api/nodes \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "type": "nginx", "hostname": "example", "displayName": "example", "folderId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "serviceAddresses": [ "example" ], "servicePort": 1 }'Authorizations
Section titled “Authorizations”Request Bodyrequired
Section titled “Request Bodyrequired”JSON request body
object
Responses
Section titled “Responses”Created
object
object
object
One-time enrollment token. Returned only once.
Time after which the unused enrollment token is rejected.
SHA-256 fingerprint of the active Gateway gRPC TLS leaf certificate.
Backend-derived gRPC enrollment targets. A null public gateway is not configured yet; installCommands then use the host of this request.
object
object
object
Gateway release whose installers the setup commands download and verify. Null for an unreleased build, whose commands run the installers from main.
Setup command for each enrollment target, using curl or wget. A release build downloads the installer of its own release, checks it against gateway-daemon-installers.sha256 and pins the daemon release that matches this Gateway.
object
Example
{ "data": { "id": "550e8400-e29b-41d4-a716-446655440000", "hostname": "edge-01", "type": "nginx", "status": "online", "serviceCreationLocked": false }}Bad request
object
Error code
Human-readable error message
Additional error details
Example
{ "code": "VALIDATION_ERROR", "message": "Request validation failed", "details": [ { "path": [ "name" ], "message": "Required" } ]}Authentication required
object
Error code
Human-readable error message
Additional error details
Example
{ "code": "UNAUTHORIZED", "message": "Authentication required"}Forbidden
object
Error code
Human-readable error message
Additional error details
Example
{ "code": "FORBIDDEN", "message": "Insufficient permissions"}Not found
object
Error code
Human-readable error message
Additional error details
Example
{ "code": "NOT_FOUND", "message": "Resource not found"}Conflict
object
Error code
Human-readable error message
Additional error details
Example
{ "code": "CONFLICT", "message": "Resource already exists"}Unprocessable entity
object
Error code
Human-readable error message
Additional error details
Example
{ "code": "UNPROCESSABLE_ENTITY", "message": "Request could not be processed"}Internal server error
object
Error code
Human-readable error message
Additional error details
Example
{ "code": "INTERNAL_ERROR", "message": "Internal server error"}