Skip to content

Create an endpoint

POST
/endpoints
curl --request POST \
--url https://example.com/api/v1/endpoints \
--header 'Content-Type: application/json' \
--data '{ "component": "example", "driver": "example", "inputs": { "additionalProperty": "example" }, "label": "example", "node": "example", "params": "example", "transport": "example" }'

Creates an endpoint owned by a component (or a server-hosted one, which needs an all-scoped grant), named by its transport; the optional label is the only identity string an operator types, and is where what the connection is FOR goes. The create scope cascades through the owning component. Gated by endpoint:create.

Media type application/json
object
$schema

A URL to the JSON Schema for this object.

string format: uri
component

Owning component, by name or id; omit for a server-hosted endpoint (needs an all-scoped grant)

string
driver

Attach this driver (by name or id): the spec derives the transport and params, and the endpoint’s tasks derive from the spec’s functions

string
inputs

The inputs the driver’s spec declares (host, port, credentials as secret reference names); required ones must be supplied, defaults fill the rest

object
key
additional properties
string
label

What an operator reads in lists (Control processor). Settable here because the name is derived from the transport, so it says how the device is reached and never what the connection is for

string
<= 200 characters
node

Node placement, by name or id

string
params

Address/target settings (jsonb); an attach derives them from the inputs instead

transport

A transport name from the code registry (GET /transports); the endpoint is named by it, unique within the component. Exactly one of transport (a bare probe endpoint) or driver (an attach) is set

string

Created

Media type application/json
object
$schema

A URL to the JSON Schema for this object.

string format: uri
component

The owning component name; absent for a server-hosted endpoint

string
component_id

The owning component’s id; the stable form of component

string
driver

The driver this endpoint was attached through (#813); absent for a bare probe endpoint

string
driver_id

The attached driver’s id; the stable form of driver

string
id
required

The endpoint’s uuid, the stable handle; / is the address an operator types

string
inputs

The effective inputs supplied at attach, defaults baked; secret inputs are reference names, never values

label

The friendly string an operator reads, and the only identity string an operator types here: the name is derived from the transport. Absent when unset, and a surface with none renders the name verbatim

string
name
required

The derived name (its transport), unique within the owning component

string
node

The node placement name, if assigned

string
node_id

The placed node’s id; the stable form of node

string
params

The address/target settings (jsonb)

transport
required

The transport name (the wire this endpoint speaks over), from the code registry

string
Example
{
"$schema": "/api/v1/schemas/EndpointBody.json"
}

Error

Media type application/problem+json
object
$schema

A URL to the JSON Schema for this object.

string format: uri
detail

A human-readable explanation specific to this occurrence of the problem.

string
errors

Optional list of individual error details

Array<object> | null
object
location

Where the error occurred, e.g. ‘body.items[3].tags’ or ‘path.thing-id’

string
message

Error message text

string
value

The value at the given location

instance

A URI reference that identifies the specific occurrence of the problem.

string format: uri
status

HTTP status code

integer format: int64
title

A short, human-readable summary of the problem type. This value should not change between occurrences of the error.

string
type

A URI reference to human-readable documentation for the error.

string format: uri
default: about:blank
Example
{
"$schema": "/api/v1/schemas/ErrorModel.json",
"detail": "Property foo is required but is missing.",
"instance": "https://example.com/error-log/abc123",
"status": 400,
"title": "Bad Request",
"type": "about:blank"
}