Create Child Client

POST
/v2/clients

Creates a new child client under the authenticated client (or under a visible descendant via parent_id). The child is created for travel-data ingestion only: it inherits address, tax, currency, and methodology defaults from its parent, but has no credentials, no billing or purchasing capability, and no product or project access.

Submit travel data for the new client by passing its id as the client_id on POST /v2/travel-data. The child is usable on the very next request after creation.

Send methodology_configuration to configure the child's methodologies in the same request instead of inheriting the parent's. Omit it and the child gets a copy of the parent's current options — a copy, not a link: later changes on the parent never propagate to the child.

Options that cannot be read as a list at all are rejected with invalid_methodology_options (400); options that are readable but not allowed — an unknown activity_type or methodology, two defaults for one activity type, more than three per type — are rejected with invalid_methodology_options (422). In both cases no client is created.

Requires this feature to be enabled for your account (contact us); otherwise this endpoint responds with 404.

Authorization

Bearer-Auth
headerAuthorizationBearer <token>

Request Body

application/json
  1. body
name*string

The child client's display name.

external_reference?string

Your own reference for the client, unique among the children of the same parent. Generated from the name when omitted.

parent_id?string

The parent to create the child under. Defaults to the authenticated client; must be the authenticated client or one of its descendants.

Formatuuid
metadata?

A set of key-value pairs of yours that helps you link this record in your system.

methodology_configuration?

The methodologies the child calculates with. Omit the whole object to inherit a copy of the parent's current options. When present it must carry methodology_options; an empty object is rejected with invalid_methodology_options (400).

Response Body

Created

application/json
  1. response

A client in your hierarchy, as returned by the /v2/clients endpoints. The authenticated client and each of its descendants are represented by this object.

The id is the client's UUID: pass it as parent_id when creating a child, or as the travel-data client_id when submitting on behalf of a descendant.

id*string

The client's unique identifier (UUID). Use this value as a parent_id or as the travel-data client_id.

Formatuuid
name?|

The client's display name.

external_reference?|

Your own reference for this client, unique among the children of a given parent. Generated from the name when omitted on creation.

parent_id*|

The UUID of this client's parent, or null for the authenticated (root) client.

Formatuuid
status*"active"

The client's lifecycle status.

Value in"active"
metadata*

A set of key-value pairs of yours that helps you link this record in your system.

methodology_options*array<>

The methodologies this client calculates with, one entry per activity type and methodology. Always present: a client that has never been configured reports the SQUAKE defaults it calculates with (TIM and DEFRA for flights, DEFRA for trains and cars, GREENVIEW for hotels — all AT_TIME_OF_TRAVEL).

Set it with the methodology_configuration object on POST /v2/clients and PATCH /v2/clients/{id}.

Example Request
curl -X POST 'https://api.sandbox.squake.earth/v2/clients' \  -H 'Content-Type: application/json' \  -d '{  "name": "BMW Germany"}'
Example Response
{  "id": "4fb3ec7a-92cb-471f-b75f-c3fe7c2a34d5",  "name": "BMW Germany",  "external_reference": "bmw-de",  "parent_id": "0f1f3d3b-2775-4cc0-885e-8d51db6d6de1",  "status": "active",  "metadata": {},  "methodology_options": [    {      "activity_type": "flight",      "methodology": "TIM",      "version": "AT_TIME_OF_TRAVEL",      "default": true    },    {      "activity_type": "flight",      "methodology": "DEFRA",      "version": "AT_TIME_OF_TRAVEL",      "default": false    },    {      "activity_type": "train",      "methodology": "DEFRA",      "version": "AT_TIME_OF_TRAVEL",      "default": true    },    {      "activity_type": "car",      "methodology": "DEFRA",      "version": "AT_TIME_OF_TRAVEL",      "default": true    },    {      "activity_type": "hotel",      "methodology": "GREENVIEW",      "version": "AT_TIME_OF_TRAVEL",      "default": true    }  ]}

Update a Client

Updates the editable fields of a visible client: `name`, `external_reference`, `metadata`, and `methodology_configuration`. Only the fields you send are changed; the others keep their current values. Sending `methodology_configuration` replaces the client's methodology options in full — send every option the client should keep, not just the ones that change. When the resulting list differs from the current one, the activities already stored for this client are recalculated with the new methodologies in the background; the response returns as soon as the configuration is written. The whole update is atomic: options that cannot be read as a list are rejected with `invalid_methodology_options` (`400`), and readable but disallowed options — an unknown `activity_type` or `methodology`, two defaults for one activity type, more than three per type — with `invalid_methodology_options` (`422`). Either way nothing is written, including the other fields sent in the same request. Re-parenting is not supported. A `parent_id` that would move the client — including `null`, which reads as a request to make it a root — is rejected with `parent_id_immutable` (`400`) and nothing is written. Sending the client's current `parent_id` is accepted and ignored, so you can read a client, change a field, and send the whole object back unchanged in shape. Requires this feature to be enabled for your account (contact us); otherwise this endpoint responds with `404`.

Retrieve a specific Auditable entity

Retrieve a specific Auditable entity