Endpoint Shape
interface is no longer the primary public layer of the spec.
The public reading rule is this.
messageAPI contractcomponentfor component-role compatibility, orcapabilityfor app-facing robot abilities
An API contract needs an internal endpoint shape. This page describes that shape.
Endpoint Kinds
| Endpoint kind | Meaning |
|---|---|
event |
publish or subscribe data surface |
control |
periodic timed exchange endpoint |
procedure |
bounded request / response operation |
operation |
long-running operation with feedback, result, and state |
Contract Fields
Every endpoint kind should be read with the same contract frame.
| Field | Used by |
|---|---|
request / args |
control, procedure, operation |
response |
control, procedure |
feedback |
operation |
result |
operation |
state |
operation, and sometimes a parallel event surface |
API Contract Reading Rule
An API contract is not a single method.
An API contract is one endpoint contract for one semantic namespace, and it may contain the following.
- several
eventsurfaces - several
controlsurfaces - several
proceduresurfaces - several
operationsurfaces
That is why the public spec treats API contract as the main API layer instead of keeping interface as a separate first-class catalog.
Example Shape
For example, a manipulator-motion API contract should be read as follows.
- namespace:
api.motion.manipulator.* - messages:
msg.motion.manipulator.* - surfaces:
operation:move_l,move_cevent:tool_pose,motion_stateprocedure:set_tcp,set_payload
Similarly, an articulated-motion API contract should be read as follows.
- namespace:
api.motion.articulated.* - messages:
msg.motion.articulated.* - surfaces:
operation:move_jevent:joint_stateprocedure:stop,pause,resume
Repository Status
- files under
spec/apisdefine endpoint-level API contracts - files under
spec/componentsdefine public components composed from API contracts - files under
spec/capabilitiesdefine app-facing capability contracts that resolve to backingapi.capability.*API contracts - the public reading model is
message -> API contract -> componentfor component providers andmessage -> capability API -> capabilityfor app requirements
For the conceptual API contract model, see API Contract Model. For the namespace-by-namespace contract layout, see API Contract Reference.