Squiddy API reference

The public contract of Squiddy is the protobuf package squiddy.v1. This reference is generated from it: the procedures, the messages, the field constraints and the prose all come out of the contract itself, so a page can never describe a service the server does not serve.

Channels

ChannelWhat it is
AdminServicethe authenticated control plane: what a customer's own dashboard, scripts and automation drive to manage projects, environments, configurations, members and keys
ConfigServicethe data plane: the procedure installed clients call to resolve their configuration, and the reason an integrator reads this reference at all

How a call is shaped

Every procedure is an HTTP POST to /<package>.<Service>/<Procedure> — for instance /squiddy.v1.ConfigService/GetRemoteConfiguration. The service speaks the Connect protocol, so the same path accepts a plain JSON body (Content-Type: application/json) as well as gRPC and gRPC-Web, and no client library is required to call it: an HTTP client and JSON are enough.

The host is the one your installation is served on; the paths below are relative to it.

Errors

A failure is a Connect error: a status code plus a message, never a success response carrying a status field. Each procedure lists the codes it can answer with — the ones the contract states for that procedure, plus the ones every procedure of its channel can return. Data-plane failures additionally carry a typed ErrorDetail payload, so a client can react to the application code without parsing prose.

Reading the field tables

ColumnMeaning
#The field number. It is the field's identity on the wire and never changes.
FieldThe name in the contract, which is also the name on the gRPC transport.
JSONThe name on the HTTP/JSON transport — what a JSON client sends and reads.
Presencesingular: always on the wire, zero value when unset. optional: absence is distinguishable from the zero value. repeated: a list. map: a dictionary.
ConstraintsChecked at the wire boundary before any handler runs; a violation is answered with invalid_argument.