{"version":"https://jsonfeed.org/version/1.1","title":"SQUAKE API changelog","home_page_url":"https://docs.squake.earth/changelog/api","feed_url":"https://docs.squake.earth/api/changelog.json","items":[{"id":"https://docs.squake.earth/changelog/api#2026-11-02-optional-sustainability-labels-on-hotel-travel-data","url":"https://docs.squake.earth/changelog/api#2026-11-02-optional-sustainability-labels-on-hotel-travel-data","title":"Optional sustainability labels on hotel travel data","date_published":"2026-11-02T00:00:00Z","summary":"Hotel activities accept the sustainability labels or certifications the hotel holds. The field is optional, so existing integrations need no change. See [Create travel data items](/docs/travel-data/create-travel-data-items).","tags":["Added"],"content_text":"Hotel activities accept the sustainability labels or certifications the hotel holds. The field is optional, so existing integrations need no change. See [Create travel data items](/docs/travel-data/create-travel-data-items).\nadded: `trips[].activities[hotel].eco_labels`, an array of strings such as `[\"eu_ecolabel\", \"green_key\"]`. SQUAKE trims each label and drops blank and duplicate entries.","_squake":{"endpoints":["POST /v2/travel-data"],"changes":[{"type":"added","text":"`trips[].activities[hotel].eco_labels`, an array of strings such as `[\"eu_ecolabel\", \"green_key\"]`. SQUAKE trims each label and drops blank and duplicate entries."}]}},{"id":"https://docs.squake.earth/changelog/api#2026-10-20-green-travel-pledge-is-now-green-travel-data","url":"https://docs.squake.earth/changelog/api#2026-10-20-green-travel-pledge-is-now-green-travel-data","title":"Green Travel Pledge is now Green Travel Data","date_published":"2026-10-20T00:00:00Z","summary":"The Rail Delivery Group renamed the train methodology. Send `GREEN-TRAVEL-DATA` from now on. `GREEN-TRAVEL-PLEDGE` is still accepted and calculates the same way. See [Green Travel Pledge Is Now Green Travel Data](/changelog/calculation-changes/train-green-travel-data) for details.","tags":["Added","Deprecated"],"content_text":"The Rail Delivery Group renamed the train methodology. Send `GREEN-TRAVEL-DATA` from now on. `GREEN-TRAVEL-PLEDGE` is still accepted and calculates the same way. See [Green Travel Pledge Is Now Green Travel Data](/changelog/calculation-changes/train-green-travel-data) for details.\nadded: `items[train].methodology` value `GREEN-TRAVEL-DATA`\ndeprecated: `items[train].methodology` value `GREEN-TRAVEL-PLEDGE`, still accepted\nchanged: `items[train].origin` and `destination` must be CRS codes of GB National Rail stations, such as `KGX`\nchanged: Error code `green_travel_pledge_emission_not_found` is now `green_travel_data_emission_not_found`","_squake":{"endpoints":["POST /v2/calculations","POST /v2/calculations-with-pricing","POST /v2/travel-data"],"changes":[{"type":"added","text":"`items[train].methodology` value `GREEN-TRAVEL-DATA`"},{"type":"deprecated","text":"`items[train].methodology` value `GREEN-TRAVEL-PLEDGE`, still accepted"},{"type":"changed","text":"`items[train].origin` and `destination` must be CRS codes of GB National Rail stations, such as `KGX`"},{"type":"changed","text":"Error code `green_travel_pledge_emission_not_found` is now `green_travel_data_emission_not_found`"}]}},{"id":"https://docs.squake.earth/changelog/api#2026-10-20-one-status-vocabulary-for-travel-data-trips","url":"https://docs.squake.earth/changelog/api#2026-10-20-one-status-vocabulary-for-travel-data-trips","title":"One status vocabulary for travel data trips","date_published":"2026-10-20T00:00:00Z","summary":"Trip `status` is no longer echoed as sent. SQUAKE maps whatever wording the source uses onto five values, and the trip's dates decide the value where they can.","tags":["Changed"],"content_text":"Trip `status` is no longer echoed as sent. SQUAKE maps whatever wording the source uses onto five values, and the trip's dates decide the value where they can.\nchanged: `status` in responses is one of `planned`, `confirmed`, `in_progress`, `completed`, `canceled` or `null`\nchanged: `status` in requests is still free text, mapped on ingestion; common wordings such as `booked` and `cancelled` are recognised","_squake":{"endpoints":["POST /v2/travel-data","GET /v2/travel-data/trips","GET /v2/travel-data/trips/{id}"],"changes":[{"type":"changed","text":"`status` in responses is one of `planned`, `confirmed`, `in_progress`, `completed`, `canceled` or `null`"},{"type":"changed","text":"`status` in requests is still free text, mapped on ingestion; common wordings such as `booked` and `cancelled` are recognised"}]}},{"id":"https://docs.squake.earth/changelog/api#2026-09-04-invitations-endpoints","url":"https://docs.squake.earth/changelog/api#2026-09-04-invitations-endpoints","title":"Invitations endpoints","date_published":"2026-09-04T00:00:00Z","summary":"Invite users to one of your sub-clients and read an invitation back. Re-inviting the same email address for the same sub-client is safe and sends the email again.","tags":["Added"],"content_text":"Invite users to one of your sub-clients and read an invitation back. Re-inviting the same email address for the same sub-client is safe and sends the email again.\nadded: `POST /v2/invitations` and `GET /v2/invitations/{id}`\nadded: Error code `client_not_invitable` (`403`) when `client_id` isn't one of your sub-clients","_squake":{"endpoints":["POST /v2/invitations","GET /v2/invitations/{id}"],"changes":[{"type":"added","text":"`POST /v2/invitations` and `GET /v2/invitations/{id}`"},{"type":"added","text":"Error code `client_not_invitable` (`403`) when `client_id` isn't one of your sub-clients"}]}},{"id":"https://docs.squake.earth/changelog/api#2026-09-02-rem-commuter-and-urban-rail-train-types","url":"https://docs.squake.earth/changelog/api#2026-09-02-rem-commuter-and-urban-rail-train-types","title":"REM commuter and urban rail train types","date_published":"2026-09-02T00:00:00Z","summary":"Two new train types for the REM methodology. Existing train types are unchanged.","tags":["Added"],"content_text":"Two new train types for the REM methodology. Existing train types are unchanged.\nadded: `items[train].train_type` values `commuter` and `urban_rail`","_squake":{"endpoints":["POST /v2/calculations","POST /v2/calculations-with-pricing"],"changes":[{"type":"added","text":"`items[train].train_type` values `commuter` and `urban_rail`"}]}},{"id":"https://docs.squake.earth/changelog/api#2026-08-27-flight-schema-no-longer-declares-a-discriminator","url":"https://docs.squake.earth/changelog/api#2026-08-27-flight-schema-no-longer-declares-a-discriminator","title":"Flight schema no longer declares a discriminator","date_published":"2026-08-27T00:00:00Z","summary":"The API accepts the same flight payloads as before. Only the OpenAPI description changed: clients generated from it may change shape, so regenerate typed clients and check how they handle flight items.","tags":["Changed"],"content_text":"The API accepts the same flight payloads as before. Only the OpenAPI description changed: clients generated from it may change shape, so regenerate typed clients and check how they handle flight items.\nremoved: `Flight` schema: the `methodology` discriminator","_squake":{"endpoints":["POST /v2/calculations","POST /v2/calculations-with-pricing"],"changes":[{"type":"removed","text":"`Flight` schema: the `methodology` discriminator"}]}}]}