Skip to main content

HTTP API Reference

Authentication options and data type handling for HTTP API connections.

Server​

servers:
- server: api
type: api
location: "https://api.example.com/orders"
delimiter: array # new_line, array, or none (default)

Authentication​

VariableExampleDescription
DATACONTRACT_API_HEADER_AUTHORIZATIONBearer <token>Value for the Authorization header (optional)
DATACONTRACT_API_HEADER_X_API_KEY<api-key>Value for the X-API-Key header (optional)

The location (URL) and delimiter (new_line, array, or none) come from the contract's servers block. The location may contain variables, such as https://api.example.com/orders/${orderId:-ORD-1001}.

Request​

Custom properties of the server shape the request:

Custom propertyExampleDescription
methodPOSTGET (default) or POST.
params{limit: 100, status: [placed, shipped]}The query parameters, each a string, number or boolean, or a list of them for a repeated parameter.
body{query: {status: shipped}}The request body. A mapping or list is sent as JSON, a string as the JSON text it holds. Requires method: POST.

A ${VAR} variable may appear in any string of params and body; it resolves to a string, so write a number the API requires as a literal, or put the reference into a string body without quotes: '{"size": ${SIZE:-100}}'.

Data types​

The response may be JSON or YAML, as its Content-Type states (application/yaml, application/x-yaml, or text/yaml for YAML). A YAML response is read as the JSON it holds; a stream of several YAML documents is one record per document. The response is then downloaded and tested like a local JSON file, so a property that is not required may be absent from every record: records are read as the contract's types and validated against a JSON Schema derived from the contract's logicalTypes. The ODCS logical types map to JSON Schema types (string, integer, number, boolean, object, array; date/timestamp/time become string with format: date/date-time/time, map an object, and vector an array of numbers); non-required fields also accept null. physicalType is not checked. Value constraints come from logicalTypeOptions (pattern, minimum, enum, …).