{
"error": {
"code": "AUTH_REQUIRED",
"message": "Invalid or expired API key.",
"doc_url": "https://docs.gojinko.com/authentication/api-keys"
}
}
{
"error": {
"code": "PAYMENT_REQUIRED",
"message": "Insufficient balance — this call costs $0.0150 and your organization has $0.0000 available. Top up at https://dashboard.gojinko.com/developers/billing/topup",
"doc_url": "https://docs.gojinko.com/concepts/errors"
}
}
{
"error": {
"code": "CONFLICT",
"message": "The operation conflicts with the current state of the resource.",
"doc_url": "https://docs.gojinko.com/concepts/errors"
}
}
{
"error": {
"code": "GONE",
"message": "The resource no longer exists.",
"doc_url": "https://docs.gojinko.com/concepts/errors"
}
}
{
"error": {
"code": "BAD_REQUEST",
"message": "The rental request was declined. Try another vehicle, location or time."
}
}
{
"error": {
"code": "RATE_LIMITED",
"message": "Too many requests. Retry after the Retry-After delay.",
"doc_url": "https://docs.gojinko.com/concepts/errors"
}
}
{
"error": {
"code": "UPSTREAM_REJECTED",
"message": "The request was declined for this offer. Try another offer.",
"doc_url": "https://docs.gojinko.com/concepts/errors"
}
}
{
"error": {
"code": "UPSTREAM_UNAVAILABLE",
"message": "The service is temporarily unavailable. Retry after the Retry-After delay.",
"doc_url": "https://docs.gojinko.com/concepts/errors"
}
}
{
"error": {
"code": "UPSTREAM_TIMEOUT",
"message": "The request timed out before a result was available. Retry the request.",
"doc_url": "https://docs.gojinko.com/concepts/errors"
}
}
{
"error": {
"code": "AUTH_REQUIRED",
"message": "Invalid or expired API key.",
"doc_url": "https://docs.gojinko.com/authentication/api-keys"
}
}
{
"error": {
"code": "PAYMENT_REQUIRED",
"message": "Insufficient balance — this call costs $0.0150 and your organization has $0.0000 available. Top up at https://dashboard.gojinko.com/developers/billing/topup",
"doc_url": "https://docs.gojinko.com/concepts/errors"
}
}
{
"error": {
"code": "CONFLICT",
"message": "The operation conflicts with the current state of the resource.",
"doc_url": "https://docs.gojinko.com/concepts/errors"
}
}
{
"error": {
"code": "GONE",
"message": "The resource no longer exists.",
"doc_url": "https://docs.gojinko.com/concepts/errors"
}
}
{
"error": {
"code": "BAD_REQUEST",
"message": "The rental request was declined. Try another vehicle, location or time."
}
}
{
"error": {
"code": "RATE_LIMITED",
"message": "Too many requests. Retry after the Retry-After delay.",
"doc_url": "https://docs.gojinko.com/concepts/errors"
}
}
{
"error": {
"code": "UPSTREAM_REJECTED",
"message": "The request was declined for this offer. Try another offer.",
"doc_url": "https://docs.gojinko.com/concepts/errors"
}
}
{
"error": {
"code": "UPSTREAM_UNAVAILABLE",
"message": "The service is temporarily unavailable. Retry after the Retry-After delay.",
"doc_url": "https://docs.gojinko.com/concepts/errors"
}
}
{
"error": {
"code": "UPSTREAM_TIMEOUT",
"message": "The request timed out before a result was available. Retry the request.",
"doc_url": "https://docs.gojinko.com/concepts/errors"
}
}
Search live car rental availability. pick_up names exactly one of an airport_code (IATA), a free-text place (resolved server-side, ambiguous text returns candidates to retry with), or geo coordinates (round-trip only). Date-times are branch-local YYYY-MM-DDTHH:MM:SS with no timezone. Omit drop_off to return the car to the pick-up branch, setting drop_off_date_time. Pass each offer’s trip_item_token verbatim to POST /v1/trip as add_item.trip_item_token to add the rental to a trip, then check out as normal. price.pay_now is the only amount Jinko charges, due_at_desk is collected by the rental desk locally.
pick_up names exactly one of airport_code, place or geo, and a drop-off time must come from drop_off.date_time or drop_off_date_time. These rules are enforced at runtime but cannot be expressed in JSON Schema, so they do not appear in required.
Returned instead of offers when a free-text place is ambiguous. Retry with place set to a candidate's name; when two candidates share a name, qualify it with the city — "City Centre, Lyon".
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Jinko Platform","description":"Connect your AI agent to flights, hotels, car rentals, and bookings through MCP, REST API, TypeScript SDK, or CLI.","colors":{"primary":"#FF6363","light":"#FF807C","dark":"#BA4B4A"},"logo":{"light":"https://mintcdn.com/jinko/tLgBpae546SdRBMu/logo/jinko-logo.png?fit=max\u0026auto=format\u0026n=tLgBpae546SdRBMu\u0026q=85\u0026s=8cf307169eba8c087816a44a41447566","dark":"https://mintcdn.com/jinko/tLgBpae546SdRBMu/logo/jinko-logo.png?fit=max\u0026auto=format\u0026n=tLgBpae546SdRBMu\u0026q=85\u0026s=8cf307169eba8c087816a44a41447566"},"favicon":"https://mintcdn.com/jinko/tLgBpae546SdRBMu/favicon.png?fit=max\u0026auto=format\u0026n=tLgBpae546SdRBMu\u0026q=85\u0026s=9feee2aba3d7cc147bcacb6d4d2ccdb7","navbar":{"links":[{"href":"https://dashboard.gojinko.com","label":"Dashboard"}],"primary":{"type":"button","label":"Get API Key","href":"https://dashboard.gojinko.com/developers/keys"}},"footer":{"socials":{"website":"https://gojinko.com"}},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"jinko","hasAudioNarration":false,"actualSubdomain":"jinko","customDomains":["docs.gojinko.com"],"gitSource":{"type":"github","owner":"jinkoso","repo":"jinko-dev-platform","deployBranch":"docs-prod","contentDirectory":"docs","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ad9d358a23ba420c32fd01a","collectionId":"7eb23456-33d5-41e6-afb1-37a6540c4fa1","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ad9d358a23ba420c32fd01a"},"entitlements":{},"buildId":"6ad9d358a23ba420c32fd01a","clientVersion":"0.0.3965","searchFilterCounts":[{"language":"default","tag":"API reference","count":54},{"language":"default","tag":"CLI","count":47},{"language":"default","tag":"Flights","count":40},{"language":"default","tag":"Documentation","count":29},{"language":"default","tag":"MCP","count":22},{"language":"default","tag":"Manage","count":20},{"language":"default","tag":"Trip \u0026 Payment","count":19},{"language":"default","tag":"Discovery","count":17},{"language":"default","tag":"Hotels","count":16},{"language":"default","tag":"Travel Demand","count":14}]},"assistantConfig":{},"hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-v7-file-tree","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"pause-universal-search-reconcile","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"per-site-search-delta","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-private-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-nav-generations","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-agent-model-picker","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"isAtlas":false,"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"api/car-search","slug":"/api/car-search","pageMetadata":{"title":"car-search","sidebarTitle":"/v1/car_search","description":"Search live car rental offers","openapi":"api-reference/public-api.yaml POST /v1/car_search","href":"/api/car-search"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Search live car rental offers\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={code:`code`,p:`p`,..._provideComponents(),...props.components};return _jsxs(_components.p,{children:[`Search live car rental availability. `,_jsx(_components.code,{children:`pick_up`}),` names exactly one of an `,_jsx(_components.code,{children:`airport_code`}),` (IATA), a free-text `,_jsx(_components.code,{children:`place`}),` (resolved server-side, ambiguous text returns `,_jsx(_components.code,{children:`candidates`}),` to retry with), or `,_jsx(_components.code,{children:`geo`}),` coordinates (round-trip only). Date-times are branch-local `,_jsx(_components.code,{children:`YYYY-MM-DDTHH:MM:SS`}),` with no timezone. Omit `,_jsx(_components.code,{children:`drop_off`}),` to return the car to the pick-up branch, setting `,_jsx(_components.code,{children:`drop_off_date_time`}),`. Pass each offer’s `,_jsx(_components.code,{children:`trip_item_token`}),` verbatim to `,_jsx(_components.code,{children:`POST /v1/trip`}),` as `,_jsx(_components.code,{children:`add_item.trip_item_token`}),` to add the rental to a trip, then check out as normal. `,_jsx(_components.code,{children:`price.pay_now`}),` is the only amount Jinko charges, `,_jsx(_components.code,{children:`due_at_desk`}),` is collected by the rental desk locally.`]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"car-search","sidebarTitle":"/v1/car_search","description":"Search live car rental offers","openapi":"api-reference/public-api.yaml POST /v1/car_search","href":"/api/car-search"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"tags":["Cars"],"summary":"Search live car rental offers","description":"Search live car rental offers","security":["2a8ac43d-478c-4645-9e08-45f76b0079f5","1049422f-24f1-449d-8a29-dcb3f9d3f1a5"],"requestBody":"f90878eb-e57d-4ac4-8b69-a5a4a67ab98d","responses":{"200":"68aa90ba-d632-413f-ad8e-09adf2aff655","400":"70c56e88-dc43-4402-905b-a269b448cd4f","401":"8890aa1d-9382-4ffd-bb2b-1efdba7c99a9","402":"1ecc59be-2efa-4fa7-ace1-aba8a391c1a4","404":"933d7518-6702-4f3b-b5bf-44c5d1c6bceb","409":"53b38920-2bb1-4a0d-a7c1-e23a999afd6b","410":"f4e44932-a766-47c6-8692-a0edc3af346c","422":"0a23a1eb-5553-4988-9cf2-08bc5a0a0186","429":"9f7a9a1d-f29b-493b-87a7-3ccb16fefb4c","502":"863186ba-5716-466a-beef-28487cf47886","503":"cfaa95d5-7755-47fb-b1e0-f17a7cc4f3f7","504":"7964a56f-dbfe-46fb-abb0-4705f879db5f"},"method":"post","type":"path","servers":["75a5a670-da5f-44f8-98a4-b274a8ea8844","0cd4b6b0-f453-498c-aad6-7de898253bfe"],"path":"/v1/car_search","baseUrlOptions":["https://api.gojinko.com","https://api.sandbox.gojinko.com"],"title":"Search live car rental offers","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"pick_up":{"type":"object","properties":{"date_time":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}$","description":"Pick-up date-time, branch-local, no timezone.","example":"2026-09-12T10:00:00","isRequired":true,"uniqueKey":"pick_up.date_time","typeLabel":"string"},"airport_code":{"type":"string","pattern":"^[A-Za-z]{3}$","description":"IATA airport code.","example":"LYS","uniqueKey":"pick_up.airport_code","typeLabel":"string"},"place":{"type":"string","minLength":1,"description":"Free-text location — a city, district or landmark. Resolved server-side; when the text is ambiguous the response carries `candidates` instead of offers — retry with a candidate's `name`.","example":"Lyon city centre","uniqueKey":"pick_up.place","typeLabel":"string"},"geo":{"type":"object","properties":{"latitude":{"type":"number","minimum":-90,"maximum":90,"example":45.7256,"isRequired":true,"uniqueKey":"pick_up.geo.latitude","typeLabel":"number"},"longitude":{"type":"number","minimum":-180,"maximum":180,"example":5.0811,"isRequired":true,"uniqueKey":"pick_up.geo.longitude","typeLabel":"number"},"range":{"type":"integer","minimum":50,"description":"Search radius around the coordinates, in metres (minimum 50).","example":5000,"isRequired":true,"uniqueKey":"pick_up.geo.range","typeLabel":"integer"}},"required":["latitude","longitude","range"],"description":"Coordinates + radius. Searches the closest rental branches. Geo search is round-trip only: `drop_off` must be omitted or name the same place.","uniqueKey":"pick_up.geo","typeLabel":"object"}},"required":["date_time"],"isRequired":true,"uniqueKey":"pick_up","typeLabel":"object"},"driver_age":{"type":"integer","minimum":18,"maximum":99,"description":"Driver's age at pick-up (18-99). Pricing and availability are age-dependent.","example":30,"isRequired":true,"uniqueKey":"driver_age","typeLabel":"integer"},"residence_country":{"type":"string","pattern":"^[A-Za-z]{2}$","description":"Driver's country of residence, ISO 3166-1 alpha-2. Rates and inclusions vary by residence.","example":"FR","isRequired":true,"uniqueKey":"residence_country","typeLabel":"string"},"drop_off":{"type":"object","properties":{"date_time":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}$","description":"Drop-off date-time, branch-local. May instead be given as the top-level `drop_off_date_time`.","uniqueKey":"drop_off.date_time","typeLabel":"string"},"airport_code":{"type":"string","pattern":"^[A-Za-z]{3}$","description":"IATA airport code.","example":"LYS","uniqueKey":"drop_off.airport_code","typeLabel":"string"},"place":{"type":"string","minLength":1,"description":"Free-text location — a city, district or landmark. Resolved server-side; when the text is ambiguous the response carries `candidates` instead of offers — retry with a candidate's `name`.","example":"Lyon city centre","uniqueKey":"drop_off.place","typeLabel":"string"},"geo":{"type":"object","properties":{"latitude":{"type":"number","minimum":-90,"maximum":90,"example":45.7256,"isRequired":true,"uniqueKey":"drop_off.geo.latitude","typeLabel":"number"},"longitude":{"type":"number","minimum":-180,"maximum":180,"example":5.0811,"isRequired":true,"uniqueKey":"drop_off.geo.longitude","typeLabel":"number"},"range":{"type":"integer","minimum":50,"description":"Search radius around the coordinates, in metres (minimum 50).","example":5000,"isRequired":true,"uniqueKey":"drop_off.geo.range","typeLabel":"integer"}},"required":["latitude","longitude","range"],"description":"Coordinates + radius. Searches the closest rental branches. Geo search is round-trip only: `drop_off` must be omitted or name the same place.","uniqueKey":"drop_off.geo","typeLabel":"object"}},"description":"Where the car is returned. Omit for a round trip (return to the pick-up branch) and set `drop_off_date_time` instead.","uniqueKey":"drop_off","typeLabel":"object"},"drop_off_date_time":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}$","description":"Drop-off date-time for a round trip, branch-local. Required when `drop_off` is omitted.","example":"2026-09-15T10:00:00","uniqueKey":"drop_off_date_time","typeLabel":"string"},"currency":{"type":"string","minLength":3,"maxLength":3,"description":"ISO 4217 display currency. Defaults to USD.","example":"EUR","uniqueKey":"currency","typeLabel":"string"},"lang":{"type":"string","description":"BCP-47 language tag for vehicle and branch text.","example":"en-gb","uniqueKey":"lang","typeLabel":"string"},"intent":{"type":"object","properties":{"user_intent":{"oneOf":[{"type":"string","description":"The user's natural-language intent: the Alpic PII-stripped paraphrase when available, else a best-effort fallback to the client-provided NL query.","example":"find a cheap flight to Tokyo","uniqueKey":"intent.user_intent.oneOf.0","typeLabel":"string"},{"type":"null","description":"The user's natural-language intent: the Alpic PII-stripped paraphrase when available, else a best-effort fallback to the client-provided NL query.","example":"find a cheap flight to Tokyo","uniqueKey":"intent.user_intent.oneOf.1","typeLabel":"null"}],"uniqueKey":"intent.user_intent","typeLabel":"string | null"}},"uniqueKey":"intent","typeLabel":"object"}},"required":["pick_up","driver_age","residence_country"],"description":"`pick_up` names exactly one of `airport_code`, `place` or `geo`, and a drop-off time must come from `drop_off.date_time` or `drop_off_date_time`. These rules are enforced at runtime but cannot be expressed in JSON Schema, so they do not appear in `required`.","example":{"pick_up":{"airport_code":"LYS","date_time":"2026-09-12T10:00:00"},"drop_off_date_time":"2026-09-15T10:00:00","driver_age":30,"residence_country":"FR","currency":"EUR"},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"pick_up":{"airport_code":"LYS","date_time":"2026-09-12T10:00:00"},"drop_off_date_time":"2026-09-15T10:00:00","driver_age":30,"residence_country":"FR","currency":"EUR"}}},"exampleType":"generated"}},"exampleType":"generated"},"responses":{"68aa90ba-d632-413f-ad8e-09adf2aff655":{"description":"Bookable car rental offers","content":{"application/json":{"schema":{"type":"object","properties":{"offers":{"type":"array","items":{"type":"object","properties":{"trip_item_token":{"type":"string","description":"The trip item token. Pass verbatim to POST /v1/trip as `add_item.trip_item_token` to add this rental to a trip.","example":"car_9f3b2a17c4e8d501","isRequired":true,"uniqueKey":"offers.items.[INDEX].trip_item_token","typeLabel":"string"},"offer_id":{"type":"string","description":"Deprecated: use `trip_item_token` instead. Same value.","example":"car_9f3b2a17c4e8d501","deprecated":true,"isRequired":true,"uniqueKey":"offers.items.[INDEX].offer_id","typeLabel":"string"},"vehicle":{"type":"object","properties":{"acriss_code":{"type":"string","example":"CDMR","uniqueKey":"offers.items.[INDEX].vehicle.acriss_code","typeLabel":"string"},"name":{"type":"string","example":"Honda Accord or similar","uniqueKey":"offers.items.[INDEX].vehicle.name","typeLabel":"string"},"category":{"type":"string","example":"compact","uniqueKey":"offers.items.[INDEX].vehicle.category","typeLabel":"string"},"type":{"type":"string","example":"sedan","uniqueKey":"offers.items.[INDEX].vehicle.type","typeLabel":"string"},"transmission":{"type":"string","example":"manual","uniqueKey":"offers.items.[INDEX].vehicle.transmission","typeLabel":"string"},"fuel_type":{"type":"string","uniqueKey":"offers.items.[INDEX].vehicle.fuel_type","typeLabel":"string"},"seats":{"type":"string","description":"A string — suppliers publish ranges like \"5-7\".","example":"5","uniqueKey":"offers.items.[INDEX].vehicle.seats","typeLabel":"string"},"doors":{"type":"string","description":"A string, like seats.","uniqueKey":"offers.items.[INDEX].vehicle.doors","typeLabel":"string"},"big_suitcases":{"type":"integer","example":2,"uniqueKey":"offers.items.[INDEX].vehicle.big_suitcases","typeLabel":"integer"},"small_suitcases":{"type":"integer","example":1,"uniqueKey":"offers.items.[INDEX].vehicle.small_suitcases","typeLabel":"integer"},"air_conditioned":{"type":"boolean","uniqueKey":"offers.items.[INDEX].vehicle.air_conditioned","typeLabel":"boolean"},"built_in_gps":{"type":"boolean","uniqueKey":"offers.items.[INDEX].vehicle.built_in_gps","typeLabel":"boolean"},"model_guaranteed":{"type":"boolean","description":"False is the ordinary \"or similar\" rental promise: the supplier guarantees the class, not this exact model. Do not present the model as confirmed unless this is true.","uniqueKey":"offers.items.[INDEX].vehicle.model_guaranteed","typeLabel":"boolean"},"supplier_code":{"type":"string","description":"The supplier's own code for this vehicle class, not for the rental company — cars from one company carry many different values here. Opaque; do not parse or match companies on it.","example":"D","uniqueKey":"offers.items.[INDEX].vehicle.supplier_code","typeLabel":"string"},"images":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string","example":"https://images.example.com/cars/6f2a.jpg","uniqueKey":"offers.items.[INDEX].vehicle.images.items.[INDEX].url","typeLabel":"string"}},"description":"One supplier-published photo of the vehicle class. Only the URL is carried: the provider labels a size rather than publishing pixel dimensions.","uniqueKey":"offers.items.[INDEX].vehicle.images.items.[INDEX]","typeLabel":"object"},"uniqueKey":"offers.items.[INDEX].vehicle.images","typeLabel":"object[]"}},"uniqueKey":"offers.items.[INDEX].vehicle","typeLabel":"object"},"package":{"type":"object","properties":{"name":{"type":"string","example":"Fully Inclusive","uniqueKey":"offers.items.[INDEX].package.name","typeLabel":"string"},"code":{"type":"string","description":"The provider's own code for this rate package. Opaque.","example":"FI","uniqueKey":"offers.items.[INDEX].package.code","typeLabel":"string"},"supplier_name":{"type":"string","description":"The rental company the driver actually collects the car from — Avis, Hertz, Europcar, Sixt. It is that company, not Jinko or any intermediary, whose desk, deposit rules and fuel policy apply, so it is the supplier identity to show a customer. Read off the pick-up branch, so a one-way rental names the collecting company, never the returning one.","example":"Avis","uniqueKey":"offers.items.[INDEX].package.supplier_name","typeLabel":"string"},"supplier_code":{"type":"string","description":"The pick-up branch's own code, scoped to a station rather than to a company. Opaque, and NOT comparable with vehicle.supplier_code — match companies on supplier_name.","example":"DEMO_BCN","uniqueKey":"offers.items.[INDEX].package.supplier_code","typeLabel":"string"},"fuel_policy":{"type":"string","example":"full_to_full","uniqueKey":"offers.items.[INDEX].package.fuel_policy","typeLabel":"string"},"mileage_unlimited":{"type":"boolean","uniqueKey":"offers.items.[INDEX].package.mileage_unlimited","typeLabel":"boolean"},"mileage_allowance":{"type":"string","uniqueKey":"offers.items.[INDEX].package.mileage_allowance","typeLabel":"string"},"inclusions":{"type":"array","items":{"oneOf":[{},{"type":"null","uniqueKey":"offers.items.[INDEX].package.inclusions.items.[INDEX].oneOf.1","typeLabel":"null"}],"uniqueKey":"offers.items.[INDEX].package.inclusions.items.[INDEX]","typeLabel":"null"},"uniqueKey":"offers.items.[INDEX].package.inclusions","typeLabel":"null[]"},"coverages":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","example":"Collision Damage Waiver","uniqueKey":"offers.items.[INDEX].package.coverages.items.[INDEX].name","typeLabel":"string"},"excess":{"type":"object","properties":{"value":{"type":"integer","description":"Integer amount in MINOR units, always paired with decimal_places — divide by 10 ** decimal_places to display. Example: value 15977 with decimal_places 2 is 159.77 USD. Rendering this field directly shows prices 100x too high for 2-decimal currencies.","example":41250,"uniqueKey":"offers.items.[INDEX].package.coverages.items.[INDEX].excess.value","typeLabel":"integer"},"currency":{"type":"string","description":"ISO 4217 currency code.","example":"EUR","uniqueKey":"offers.items.[INDEX].package.coverages.items.[INDEX].excess.currency","typeLabel":"string"},"decimal_places":{"type":"integer","description":"Scale of the integer value/amount: display = integer / 10 ** decimal_places. Always sent alongside minor-unit amounts. Usually the ISO 4217 digits of the currency (2 for USD/EUR/GBP, 0 for JPY/KRW, 3 for BHD/JOD/KWD) but currency-converted prices can carry a different scale — ALWAYS use the decimal_places sent with the amount, never a hardcoded 2. Only if the field is genuinely absent on a value-shaped object, fall back to the ISO digits for the currency.","example":2,"uniqueKey":"offers.items.[INDEX].package.coverages.items.[INDEX].excess.decimal_places","typeLabel":"integer"},"display":{"type":"string","description":"The same figure as a string ready to show: the ISO 4217 code, a space, then the amount, e.g. \"USD 159.77\". With decimal_places it is written at exactly that scale (value 1561500, JPY, decimal_places 2 is \"JPY 15615.00\"); without, at the ISO digits of the currency. Show this; compute with the number. Absent when the figure is not money (a cancellation step expressed as a percent or a number of nights) or could not be read unambiguously.","example":"EUR 412.50","uniqueKey":"offers.items.[INDEX].package.coverages.items.[INDEX].excess.display","typeLabel":"string"}},"uniqueKey":"offers.items.[INDEX].package.coverages.items.[INDEX].excess","typeLabel":"object"},"included_in_vehicle_price":{"type":"boolean","uniqueKey":"offers.items.[INDEX].package.coverages.items.[INDEX].included_in_vehicle_price","typeLabel":"boolean"},"mandatory":{"type":"boolean","uniqueKey":"offers.items.[INDEX].package.coverages.items.[INDEX].mandatory","typeLabel":"boolean"},"paid_at":{"type":"string","example":"now","uniqueKey":"offers.items.[INDEX].package.coverages.items.[INDEX].paid_at","typeLabel":"string"},"price":{"type":"object","properties":{"value":{"type":"integer","description":"Integer amount in MINOR units, always paired with decimal_places — divide by 10 ** decimal_places to display. Example: value 15977 with decimal_places 2 is 159.77 USD. Rendering this field directly shows prices 100x too high for 2-decimal currencies.","example":41250,"uniqueKey":"offers.items.[INDEX].package.coverages.items.[INDEX].price.value","typeLabel":"integer"},"currency":{"type":"string","description":"ISO 4217 currency code.","example":"EUR","uniqueKey":"offers.items.[INDEX].package.coverages.items.[INDEX].price.currency","typeLabel":"string"},"decimal_places":{"type":"integer","description":"Scale of the integer value/amount: display = integer / 10 ** decimal_places. Always sent alongside minor-unit amounts. Usually the ISO 4217 digits of the currency (2 for USD/EUR/GBP, 0 for JPY/KRW, 3 for BHD/JOD/KWD) but currency-converted prices can carry a different scale — ALWAYS use the decimal_places sent with the amount, never a hardcoded 2. Only if the field is genuinely absent on a value-shaped object, fall back to the ISO digits for the currency.","example":2,"uniqueKey":"offers.items.[INDEX].package.coverages.items.[INDEX].price.decimal_places","typeLabel":"integer"},"display":{"type":"string","description":"The same figure as a string ready to show: the ISO 4217 code, a space, then the amount, e.g. \"USD 159.77\". With decimal_places it is written at exactly that scale (value 1561500, JPY, decimal_places 2 is \"JPY 15615.00\"); without, at the ISO digits of the currency. Show this; compute with the number. Absent when the figure is not money (a cancellation step expressed as a percent or a number of nights) or could not be read unambiguously.","example":"EUR 412.50","uniqueKey":"offers.items.[INDEX].package.coverages.items.[INDEX].price.display","typeLabel":"string"}},"uniqueKey":"offers.items.[INDEX].package.coverages.items.[INDEX].price","typeLabel":"object"}},"description":"One insurance line on a package. `excess` is the driver’s maximum liability under it — absent when the supplier stated none, which is not zero excess. `price` is the line’s own charge when it is not already inside the vehicle price.","uniqueKey":"offers.items.[INDEX].package.coverages.items.[INDEX]","typeLabel":"object"},"uniqueKey":"offers.items.[INDEX].package.coverages","typeLabel":"object[]"},"fees":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","example":"One-way fee","uniqueKey":"offers.items.[INDEX].package.fees.items.[INDEX].name","typeLabel":"string"},"included_in_vehicle_price":{"type":"boolean","uniqueKey":"offers.items.[INDEX].package.fees.items.[INDEX].included_in_vehicle_price","typeLabel":"boolean"},"mandatory":{"type":"boolean","uniqueKey":"offers.items.[INDEX].package.fees.items.[INDEX].mandatory","typeLabel":"boolean"},"paid_at":{"type":"string","example":"local","uniqueKey":"offers.items.[INDEX].package.fees.items.[INDEX].paid_at","typeLabel":"string"},"price":{"type":"object","properties":{"value":{"type":"integer","description":"Integer amount in MINOR units, always paired with decimal_places — divide by 10 ** decimal_places to display. Example: value 15977 with decimal_places 2 is 159.77 USD. Rendering this field directly shows prices 100x too high for 2-decimal currencies.","example":41250,"uniqueKey":"offers.items.[INDEX].package.fees.items.[INDEX].price.value","typeLabel":"integer"},"currency":{"type":"string","description":"ISO 4217 currency code.","example":"EUR","uniqueKey":"offers.items.[INDEX].package.fees.items.[INDEX].price.currency","typeLabel":"string"},"decimal_places":{"type":"integer","description":"Scale of the integer value/amount: display = integer / 10 ** decimal_places. Always sent alongside minor-unit amounts. Usually the ISO 4217 digits of the currency (2 for USD/EUR/GBP, 0 for JPY/KRW, 3 for BHD/JOD/KWD) but currency-converted prices can carry a different scale — ALWAYS use the decimal_places sent with the amount, never a hardcoded 2. Only if the field is genuinely absent on a value-shaped object, fall back to the ISO digits for the currency.","example":2,"uniqueKey":"offers.items.[INDEX].package.fees.items.[INDEX].price.decimal_places","typeLabel":"integer"},"display":{"type":"string","description":"The same figure as a string ready to show: the ISO 4217 code, a space, then the amount, e.g. \"USD 159.77\". With decimal_places it is written at exactly that scale (value 1561500, JPY, decimal_places 2 is \"JPY 15615.00\"); without, at the ISO digits of the currency. Show this; compute with the number. Absent when the figure is not money (a cancellation step expressed as a percent or a number of nights) or could not be read unambiguously.","example":"EUR 412.50","uniqueKey":"offers.items.[INDEX].package.fees.items.[INDEX].price.display","typeLabel":"string"}},"uniqueKey":"offers.items.[INDEX].package.fees.items.[INDEX].price","typeLabel":"object"}},"description":"One fee attached to the rental, with when it is paid (`paid_at`) and whether it is already inside the vehicle price.","uniqueKey":"offers.items.[INDEX].package.fees.items.[INDEX]","typeLabel":"object"},"uniqueKey":"offers.items.[INDEX].package.fees","typeLabel":"object[]"}},"uniqueKey":"offers.items.[INDEX].package","typeLabel":"object"},"pick_up":{"type":"object","properties":{"name":{"type":"string","example":"Lyon Saint-Exupery Airport","uniqueKey":"offers.items.[INDEX].pick_up.name","typeLabel":"string"},"address":{"type":"string","uniqueKey":"offers.items.[INDEX].pick_up.address","typeLabel":"string"},"city":{"type":"string","example":"Lyon","uniqueKey":"offers.items.[INDEX].pick_up.city","typeLabel":"string"},"country":{"type":"string","example":"FR","uniqueKey":"offers.items.[INDEX].pick_up.country","typeLabel":"string"},"phone":{"type":"string","uniqueKey":"offers.items.[INDEX].pick_up.phone","typeLabel":"string"},"date_time":{"type":"string","description":"The pick-up or drop-off time at this branch, branch-local.","example":"2026-09-12T10:00:00","uniqueKey":"offers.items.[INDEX].pick_up.date_time","typeLabel":"string"},"time_zone":{"type":"string","example":"Europe/Paris","uniqueKey":"offers.items.[INDEX].pick_up.time_zone","typeLabel":"string"},"latitude":{"type":"number","uniqueKey":"offers.items.[INDEX].pick_up.latitude","typeLabel":"number"},"longitude":{"type":"number","uniqueKey":"offers.items.[INDEX].pick_up.longitude","typeLabel":"number"},"opening_hours":{"type":"string","description":"The branch's published hours, as supplied. Free text, not a parseable schedule.","uniqueKey":"offers.items.[INDEX].pick_up.opening_hours","typeLabel":"string"},"out_of_hours":{"type":"boolean","description":"This pick-up or drop-off falls outside the published hours, which usually carries a surcharge. Only asserted when that day's hours were published, so false means \"within hours, or not stated\" and never \"checked and fine\".","uniqueKey":"offers.items.[INDEX].pick_up.out_of_hours","typeLabel":"boolean"},"requires_flight_number":{"type":"string","description":"The branch policy: \"never\", \"always\" or \"out_of_hours_pickup\". Jinko carries no flight number today, so \"always\" means this branch cannot be booked — prefer an offer from another branch.","example":"never","uniqueKey":"offers.items.[INDEX].pick_up.requires_flight_number","typeLabel":"string"},"terminals":{"type":"array","items":{"type":"string","uniqueKey":"offers.items.[INDEX].pick_up.terminals.items.[INDEX]","typeLabel":"string"},"description":"The airport terminals this branch serves, when it is at one.","uniqueKey":"offers.items.[INDEX].pick_up.terminals","typeLabel":"string[]"},"is_meet_and_greet":{"type":"boolean","description":"The supplier meets the driver instead of staffing a desk, so there is nowhere to walk up to. Tell the customer to expect a meeting point.","uniqueKey":"offers.items.[INDEX].pick_up.is_meet_and_greet","typeLabel":"boolean"}},"uniqueKey":"offers.items.[INDEX].pick_up","typeLabel":"object"},"drop_off":{"type":"object","properties":{"name":{"type":"string","example":"Lyon Saint-Exupery Airport","uniqueKey":"offers.items.[INDEX].drop_off.name","typeLabel":"string"},"address":{"type":"string","uniqueKey":"offers.items.[INDEX].drop_off.address","typeLabel":"string"},"city":{"type":"string","example":"Lyon","uniqueKey":"offers.items.[INDEX].drop_off.city","typeLabel":"string"},"country":{"type":"string","example":"FR","uniqueKey":"offers.items.[INDEX].drop_off.country","typeLabel":"string"},"phone":{"type":"string","uniqueKey":"offers.items.[INDEX].drop_off.phone","typeLabel":"string"},"date_time":{"type":"string","description":"The pick-up or drop-off time at this branch, branch-local.","example":"2026-09-12T10:00:00","uniqueKey":"offers.items.[INDEX].drop_off.date_time","typeLabel":"string"},"time_zone":{"type":"string","example":"Europe/Paris","uniqueKey":"offers.items.[INDEX].drop_off.time_zone","typeLabel":"string"},"latitude":{"type":"number","uniqueKey":"offers.items.[INDEX].drop_off.latitude","typeLabel":"number"},"longitude":{"type":"number","uniqueKey":"offers.items.[INDEX].drop_off.longitude","typeLabel":"number"},"opening_hours":{"type":"string","description":"The branch's published hours, as supplied. Free text, not a parseable schedule.","uniqueKey":"offers.items.[INDEX].drop_off.opening_hours","typeLabel":"string"},"out_of_hours":{"type":"boolean","description":"This pick-up or drop-off falls outside the published hours, which usually carries a surcharge. Only asserted when that day's hours were published, so false means \"within hours, or not stated\" and never \"checked and fine\".","uniqueKey":"offers.items.[INDEX].drop_off.out_of_hours","typeLabel":"boolean"},"requires_flight_number":{"type":"string","description":"The branch policy: \"never\", \"always\" or \"out_of_hours_pickup\". Jinko carries no flight number today, so \"always\" means this branch cannot be booked — prefer an offer from another branch.","example":"never","uniqueKey":"offers.items.[INDEX].drop_off.requires_flight_number","typeLabel":"string"},"terminals":{"type":"array","items":{"type":"string","uniqueKey":"offers.items.[INDEX].drop_off.terminals.items.[INDEX]","typeLabel":"string"},"description":"The airport terminals this branch serves, when it is at one.","uniqueKey":"offers.items.[INDEX].drop_off.terminals","typeLabel":"string[]"},"is_meet_and_greet":{"type":"boolean","description":"The supplier meets the driver instead of staffing a desk, so there is nowhere to walk up to. Tell the customer to expect a meeting point.","uniqueKey":"offers.items.[INDEX].drop_off.is_meet_and_greet","typeLabel":"boolean"}},"uniqueKey":"offers.items.[INDEX].drop_off","typeLabel":"object"},"price":{"type":"object","properties":{"pay_now":{"type":"object","description":"The only amount Jinko charges at checkout.","properties":{"value":{"type":"integer","description":"Integer amount in MINOR units, always paired with decimal_places — divide by 10 ** decimal_places to display. Example: value 15977 with decimal_places 2 is 159.77 USD. Rendering this field directly shows prices 100x too high for 2-decimal currencies.","example":41250,"uniqueKey":"offers.items.[INDEX].price.pay_now.value","typeLabel":"integer"},"currency":{"type":"string","description":"ISO 4217 currency code.","example":"EUR","uniqueKey":"offers.items.[INDEX].price.pay_now.currency","typeLabel":"string"},"decimal_places":{"type":"integer","description":"Scale of the integer value/amount: display = integer / 10 ** decimal_places. Always sent alongside minor-unit amounts. Usually the ISO 4217 digits of the currency (2 for USD/EUR/GBP, 0 for JPY/KRW, 3 for BHD/JOD/KWD) but currency-converted prices can carry a different scale — ALWAYS use the decimal_places sent with the amount, never a hardcoded 2. Only if the field is genuinely absent on a value-shaped object, fall back to the ISO digits for the currency.","example":2,"uniqueKey":"offers.items.[INDEX].price.pay_now.decimal_places","typeLabel":"integer"},"display":{"type":"string","description":"The same figure as a string ready to show: the ISO 4217 code, a space, then the amount, e.g. \"USD 159.77\". With decimal_places it is written at exactly that scale (value 1561500, JPY, decimal_places 2 is \"JPY 15615.00\"); without, at the ISO digits of the currency. Show this; compute with the number. Absent when the figure is not money (a cancellation step expressed as a percent or a number of nights) or could not be read unambiguously.","example":"EUR 412.50","uniqueKey":"offers.items.[INDEX].price.pay_now.display","typeLabel":"string"}},"uniqueKey":"offers.items.[INDEX].price.pay_now","typeLabel":"object"},"due_at_desk":{"type":"object","description":"Collected by the rental desk locally, in local currency. Display-only.","properties":{"value":{"type":"integer","description":"Integer amount in MINOR units, always paired with decimal_places — divide by 10 ** decimal_places to display. Example: value 15977 with decimal_places 2 is 159.77 USD. Rendering this field directly shows prices 100x too high for 2-decimal currencies.","example":41250,"uniqueKey":"offers.items.[INDEX].price.due_at_desk.value","typeLabel":"integer"},"currency":{"type":"string","description":"ISO 4217 currency code.","example":"EUR","uniqueKey":"offers.items.[INDEX].price.due_at_desk.currency","typeLabel":"string"},"decimal_places":{"type":"integer","description":"Scale of the integer value/amount: display = integer / 10 ** decimal_places. Always sent alongside minor-unit amounts. Usually the ISO 4217 digits of the currency (2 for USD/EUR/GBP, 0 for JPY/KRW, 3 for BHD/JOD/KWD) but currency-converted prices can carry a different scale — ALWAYS use the decimal_places sent with the amount, never a hardcoded 2. Only if the field is genuinely absent on a value-shaped object, fall back to the ISO digits for the currency.","example":2,"uniqueKey":"offers.items.[INDEX].price.due_at_desk.decimal_places","typeLabel":"integer"},"display":{"type":"string","description":"The same figure as a string ready to show: the ISO 4217 code, a space, then the amount, e.g. \"USD 159.77\". With decimal_places it is written at exactly that scale (value 1561500, JPY, decimal_places 2 is \"JPY 15615.00\"); without, at the ISO digits of the currency. Show this; compute with the number. Absent when the figure is not money (a cancellation step expressed as a percent or a number of nights) or could not be read unambiguously.","example":"EUR 412.50","uniqueKey":"offers.items.[INDEX].price.due_at_desk.display","typeLabel":"string"}},"uniqueKey":"offers.items.[INDEX].price.due_at_desk","typeLabel":"object"},"estimated_total":{"type":"object","description":"pay_now + due_at_desk, where both are known.","properties":{"value":{"type":"integer","description":"Integer amount in MINOR units, always paired with decimal_places — divide by 10 ** decimal_places to display. Example: value 15977 with decimal_places 2 is 159.77 USD. Rendering this field directly shows prices 100x too high for 2-decimal currencies.","example":41250,"uniqueKey":"offers.items.[INDEX].price.estimated_total.value","typeLabel":"integer"},"currency":{"type":"string","description":"ISO 4217 currency code.","example":"EUR","uniqueKey":"offers.items.[INDEX].price.estimated_total.currency","typeLabel":"string"},"decimal_places":{"type":"integer","description":"Scale of the integer value/amount: display = integer / 10 ** decimal_places. Always sent alongside minor-unit amounts. Usually the ISO 4217 digits of the currency (2 for USD/EUR/GBP, 0 for JPY/KRW, 3 for BHD/JOD/KWD) but currency-converted prices can carry a different scale — ALWAYS use the decimal_places sent with the amount, never a hardcoded 2. Only if the field is genuinely absent on a value-shaped object, fall back to the ISO digits for the currency.","example":2,"uniqueKey":"offers.items.[INDEX].price.estimated_total.decimal_places","typeLabel":"integer"},"display":{"type":"string","description":"The same figure as a string ready to show: the ISO 4217 code, a space, then the amount, e.g. \"USD 159.77\". With decimal_places it is written at exactly that scale (value 1561500, JPY, decimal_places 2 is \"JPY 15615.00\"); without, at the ISO digits of the currency. Show this; compute with the number. Absent when the figure is not money (a cancellation step expressed as a percent or a number of nights) or could not be read unambiguously.","example":"EUR 412.50","uniqueKey":"offers.items.[INDEX].price.estimated_total.display","typeLabel":"string"}},"uniqueKey":"offers.items.[INDEX].price.estimated_total","typeLabel":"object"},"deposit":{"type":"object","description":"Security hold taken at the desk, not a charge.","properties":{"value":{"type":"integer","description":"Integer amount in MINOR units, always paired with decimal_places — divide by 10 ** decimal_places to display. Example: value 15977 with decimal_places 2 is 159.77 USD. Rendering this field directly shows prices 100x too high for 2-decimal currencies.","example":41250,"uniqueKey":"offers.items.[INDEX].price.deposit.value","typeLabel":"integer"},"currency":{"type":"string","description":"ISO 4217 currency code.","example":"EUR","uniqueKey":"offers.items.[INDEX].price.deposit.currency","typeLabel":"string"},"decimal_places":{"type":"integer","description":"Scale of the integer value/amount: display = integer / 10 ** decimal_places. Always sent alongside minor-unit amounts. Usually the ISO 4217 digits of the currency (2 for USD/EUR/GBP, 0 for JPY/KRW, 3 for BHD/JOD/KWD) but currency-converted prices can carry a different scale — ALWAYS use the decimal_places sent with the amount, never a hardcoded 2. Only if the field is genuinely absent on a value-shaped object, fall back to the ISO digits for the currency.","example":2,"uniqueKey":"offers.items.[INDEX].price.deposit.decimal_places","typeLabel":"integer"},"display":{"type":"string","description":"The same figure as a string ready to show: the ISO 4217 code, a space, then the amount, e.g. \"USD 159.77\". With decimal_places it is written at exactly that scale (value 1561500, JPY, decimal_places 2 is \"JPY 15615.00\"); without, at the ISO digits of the currency. Show this; compute with the number. Absent when the figure is not money (a cancellation step expressed as a percent or a number of nights) or could not be read unambiguously.","example":"EUR 412.50","uniqueKey":"offers.items.[INDEX].price.deposit.display","typeLabel":"string"}},"uniqueKey":"offers.items.[INDEX].price.deposit","typeLabel":"object"}},"uniqueKey":"offers.items.[INDEX].price","typeLabel":"object"},"driver_age_range":{"type":"object","properties":{"min":{"type":"integer","example":25,"uniqueKey":"offers.items.[INDEX].driver_age_range.min","typeLabel":"integer"},"max":{"type":"integer","example":75,"uniqueKey":"offers.items.[INDEX].driver_age_range.max","typeLabel":"integer"}},"description":"The age band this price was quoted for, as the supplier states it. A driver outside the band is refused at the counter.","uniqueKey":"offers.items.[INDEX].driver_age_range","typeLabel":"object"},"on_request":{"type":"boolean","description":"The supplier confirms availability after booking rather than instantly.","uniqueKey":"offers.items.[INDEX].on_request","typeLabel":"boolean"},"cancellation_fees":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","example":"cancellation","uniqueKey":"offers.items.[INDEX].cancellation_fees.items.[INDEX].type","typeLabel":"string"},"fee":{"type":"object","properties":{"value":{"type":"integer","description":"Integer amount in MINOR units, always paired with decimal_places — divide by 10 ** decimal_places to display. Example: value 15977 with decimal_places 2 is 159.77 USD. Rendering this field directly shows prices 100x too high for 2-decimal currencies.","example":41250,"uniqueKey":"offers.items.[INDEX].cancellation_fees.items.[INDEX].fee.value","typeLabel":"integer"},"currency":{"type":"string","description":"ISO 4217 currency code.","example":"EUR","uniqueKey":"offers.items.[INDEX].cancellation_fees.items.[INDEX].fee.currency","typeLabel":"string"},"decimal_places":{"type":"integer","description":"Scale of the integer value/amount: display = integer / 10 ** decimal_places. Always sent alongside minor-unit amounts. Usually the ISO 4217 digits of the currency (2 for USD/EUR/GBP, 0 for JPY/KRW, 3 for BHD/JOD/KWD) but currency-converted prices can carry a different scale — ALWAYS use the decimal_places sent with the amount, never a hardcoded 2. Only if the field is genuinely absent on a value-shaped object, fall back to the ISO digits for the currency.","example":2,"uniqueKey":"offers.items.[INDEX].cancellation_fees.items.[INDEX].fee.decimal_places","typeLabel":"integer"},"display":{"type":"string","description":"The same figure as a string ready to show: the ISO 4217 code, a space, then the amount, e.g. \"USD 159.77\". With decimal_places it is written at exactly that scale (value 1561500, JPY, decimal_places 2 is \"JPY 15615.00\"); without, at the ISO digits of the currency. Show this; compute with the number. Absent when the figure is not money (a cancellation step expressed as a percent or a number of nights) or could not be read unambiguously.","example":"EUR 412.50","uniqueKey":"offers.items.[INDEX].cancellation_fees.items.[INDEX].fee.display","typeLabel":"string"}},"uniqueKey":"offers.items.[INDEX].cancellation_fees.items.[INDEX].fee","typeLabel":"object"},"non_refundable":{"type":"boolean","uniqueKey":"offers.items.[INDEX].cancellation_fees.items.[INDEX].non_refundable","typeLabel":"boolean"},"applicable_from":{"type":"string","uniqueKey":"offers.items.[INDEX].cancellation_fees.items.[INDEX].applicable_from","typeLabel":"string"},"applicable_to":{"type":"string","uniqueKey":"offers.items.[INDEX].cancellation_fees.items.[INDEX].applicable_to","typeLabel":"string"},"applicable_now":{"type":"boolean","uniqueKey":"offers.items.[INDEX].cancellation_fees.items.[INDEX].applicable_now","typeLabel":"boolean"},"seconds_before_pick_up":{"type":"number","uniqueKey":"offers.items.[INDEX].cancellation_fees.items.[INDEX].seconds_before_pick_up","typeLabel":"number"}},"uniqueKey":"offers.items.[INDEX].cancellation_fees.items.[INDEX]","typeLabel":"object"},"description":"Fee tiers by time before pick-up. An EMPTY list means the schedule is unknown — never render it as free cancellation.","uniqueKey":"offers.items.[INDEX].cancellation_fees","typeLabel":"object[]"},"expires_at":{"type":"string","description":"When the trip_item_token stops being addable to a trip. Re-search after this.","example":"2026-09-12T10:30:00Z","uniqueKey":"offers.items.[INDEX].expires_at","typeLabel":"string"}},"required":["trip_item_token","offer_id"],"uniqueKey":"offers.items.[INDEX]","typeLabel":"object"},"uniqueKey":"offers","typeLabel":"object[]"},"currency":{"type":"string","example":"EUR","uniqueKey":"currency","typeLabel":"string"},"resolved_place":{"type":"object","properties":{"name":{"type":"string","example":"Lyon City Centre","uniqueKey":"resolved_place.name","typeLabel":"string"},"kind":{"type":"string","description":"One of \"airport\", \"railway\", \"port\" or \"bus\" — absent for a city-centre rental office.","example":"airport","uniqueKey":"resolved_place.kind","typeLabel":"string"},"city":{"type":"string","example":"Lyon","uniqueKey":"resolved_place.city","typeLabel":"string"},"country":{"type":"string","example":"FR","uniqueKey":"resolved_place.country","typeLabel":"string"}},"description":"How a free-text `place` was interpreted. Echoed so the caller can confirm the resolution.","uniqueKey":"resolved_place","typeLabel":"object"},"candidates":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","example":"Lyon City Centre","uniqueKey":"candidates.items.[INDEX].name","typeLabel":"string"},"kind":{"type":"string","description":"One of \"airport\", \"railway\", \"port\" or \"bus\" — absent for a city-centre rental office.","example":"airport","uniqueKey":"candidates.items.[INDEX].kind","typeLabel":"string"},"city":{"type":"string","example":"Lyon","uniqueKey":"candidates.items.[INDEX].city","typeLabel":"string"},"country":{"type":"string","example":"FR","uniqueKey":"candidates.items.[INDEX].country","typeLabel":"string"}},"description":"How a free-text `place` was interpreted. Echoed so the caller can confirm the resolution.","uniqueKey":"candidates.items.[INDEX]","typeLabel":"object"},"description":"Returned instead of offers when a free-text `place` is ambiguous. Retry with `place` set to a candidate's `name`; when two candidates share a name, qualify it with the city — `\"City Centre, Lyon\"`.","uniqueKey":"candidates","typeLabel":"object[]"},"warnings":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string","uniqueKey":"warnings.items.[INDEX].code","typeLabel":"string"},"message":{"type":"string","uniqueKey":"warnings.items.[INDEX].message","typeLabel":"string"}},"uniqueKey":"warnings.items.[INDEX]","typeLabel":"object"},"uniqueKey":"warnings","typeLabel":"object[]"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"offers":[{"trip_item_token":"car_9f3b2a17c4e8d501","offer_id":"car_9f3b2a17c4e8d501","vehicle":{"acriss_code":"CDMR","name":"Honda Accord or similar","category":"compact","type":"sedan","transmission":"manual","fuel_type":"\u003cstring>","seats":"5","doors":"\u003cstring>","big_suitcases":2,"small_suitcases":1,"air_conditioned":true,"built_in_gps":true,"model_guaranteed":true,"supplier_code":"D","images":[{"url":"https://images.example.com/cars/6f2a.jpg"}]},"package":{"name":"Fully Inclusive","code":"FI","supplier_name":"Avis","supplier_code":"DEMO_BCN","fuel_policy":"full_to_full","mileage_unlimited":true,"mileage_allowance":"\u003cstring>","inclusions":["\u003cunknown>"],"coverages":[{"name":"Collision Damage Waiver","excess":{"value":41250,"currency":"EUR","decimal_places":2,"display":"EUR 412.50"},"included_in_vehicle_price":true,"mandatory":true,"paid_at":"now","price":{"value":41250,"currency":"EUR","decimal_places":2,"display":"EUR 412.50"}}],"fees":[{"name":"One-way fee","included_in_vehicle_price":true,"mandatory":true,"paid_at":"local","price":{"value":41250,"currency":"EUR","decimal_places":2,"display":"EUR 412.50"}}]},"pick_up":{"name":"Lyon Saint-Exupery Airport","address":"\u003cstring>","city":"Lyon","country":"FR","phone":"\u003cstring>","date_time":"2026-09-12T10:00:00","time_zone":"Europe/Paris","latitude":123,"longitude":123,"opening_hours":"\u003cstring>","out_of_hours":true,"requires_flight_number":"never","terminals":["\u003cstring>"],"is_meet_and_greet":true},"drop_off":{"name":"Lyon Saint-Exupery Airport","address":"\u003cstring>","city":"Lyon","country":"FR","phone":"\u003cstring>","date_time":"2026-09-12T10:00:00","time_zone":"Europe/Paris","latitude":123,"longitude":123,"opening_hours":"\u003cstring>","out_of_hours":true,"requires_flight_number":"never","terminals":["\u003cstring>"],"is_meet_and_greet":true},"price":{"pay_now":{"value":41250,"currency":"EUR","decimal_places":2,"display":"EUR 412.50"},"due_at_desk":{"value":41250,"currency":"EUR","decimal_places":2,"display":"EUR 412.50"},"estimated_total":{"value":41250,"currency":"EUR","decimal_places":2,"display":"EUR 412.50"},"deposit":{"value":41250,"currency":"EUR","decimal_places":2,"display":"EUR 412.50"}},"driver_age_range":{"min":25,"max":75},"on_request":true,"cancellation_fees":[{"type":"cancellation","fee":{"value":41250,"currency":"EUR","decimal_places":2,"display":"EUR 412.50"},"non_refundable":true,"applicable_from":"\u003cstring>","applicable_to":"\u003cstring>","applicable_now":true,"seconds_before_pick_up":123}],"expires_at":"2026-09-12T10:30:00Z"}],"currency":"EUR","resolved_place":{"name":"Lyon City Centre","kind":"airport","city":"Lyon","country":"FR"},"candidates":[{"name":"Lyon City Centre","kind":"airport","city":"Lyon","country":"FR"}],"warnings":[{"code":"\u003cstring>","message":"\u003cstring>"}]}}},"exampleType":"generated"}},"exampleType":"generated"},"70c56e88-dc43-4402-905b-a269b448cd4f":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["INVALID_SEGMENTS_TO_EXCHANGE","PARTIAL_EXCHANGE_UNSUPPORTED","LEG_ALREADY_DEPARTED","DEPARTURE_DATE_IN_PAST","LEG_DATES_OUT_OF_ORDER","INVALID_EXCHANGE_REQUEST","NOT_EXCHANGEABLE","CREDENTIAL_FORMAT_INVALID","PAYMENT_TYPE_NOT_ENABLED","PAYMENT_CREDENTIAL_INVALID","TRIP_OWNED_BY_OTHER_PAYMENT","IDEMPOTENCY_KEY_REUSED","ATTEMPT_IN_PROGRESS","ATTEMPT_TERMINAL","TEMPORARILY_UNAVAILABLE","AUTH_REQUIRED","PAYMENT_REQUIRED","RATE_LIMITED","BAD_REQUEST","FORBIDDEN","NOT_FOUND","CONFLICT","GONE","QUOTE_PENDING","QUOTE_EXPIRED","TRIP_EXPIRED","TRIP_STATE_CONFLICT","OFFER_EXPIRED","OFFER_UNAVAILABLE","MISSING_CUSTOMER_DETAILS","INVALID_PHONE_NUMBER","CURRENCY_UNSUPPORTED","HOTEL_NAME_LOW_CONFIDENCE","DESTINATION_LOW_CONFIDENCE","UPSTREAM_REJECTED","UPSTREAM_UNAVAILABLE","UPSTREAM_TIMEOUT","UPSTREAM_ERROR","INTERNAL"],"description":"What went wrong, as a stable machine-readable code. This is a closed set — branch on it rather than on `message`, which is prose and may change. New codes arrive in a minor version, so treat an unknown one as its HTTP status. A code can also stop being emitted: it leaves this set in a minor version, named in the changelog, and a branch you wrote for it goes unreached rather than wrong.","example":"BAD_REQUEST","isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"What went wrong, in prose. These codes always carry the same message, and it never includes text from a supplier: `RATE_LIMITED` — \"Too many requests. Retry after the Retry-After delay.\"; `OFFER_EXPIRED` — \"This offer has expired. Search again.\"; `OFFER_UNAVAILABLE` — \"This offer is no longer available. Search again.\"; `UPSTREAM_REJECTED` — \"The request was declined for this offer. Try another offer.\"; `UPSTREAM_UNAVAILABLE` — \"The service is temporarily unavailable. Retry after the Retry-After delay.\"; `UPSTREAM_TIMEOUT` — \"The request timed out before a result was available. Retry the request.\"; `UPSTREAM_ERROR` — \"The request could not be completed.\".","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"doc_url":{"type":"string","uniqueKey":"error.doc_url","typeLabel":"string"},"field":{"type":"string","description":"On a 400 `BAD_REQUEST` that names one refused input: the path of that field in your request, e.g. `selections[1].quantity` for the second selection of a `select_ancillaries` call. Absent when the refusal names no single field.","example":"selections[1].quantity","uniqueKey":"error.field","typeLabel":"string"}},"required":["code","message"],"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"example":{"error":{"code":"BAD_REQUEST","message":"Malformed JSON in request body.","doc_url":"https://docs.gojinko.com/concepts/errors"}},"examples":{"Example":{"title":"Example","value":{"error":{"code":"BAD_REQUEST","message":"Malformed JSON in request body.","doc_url":"https://docs.gojinko.com/concepts/errors"}}}},"exampleType":"examples"}},"exampleType":"examples"},"8890aa1d-9382-4ffd-bb2b-1efdba7c99a9":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["INVALID_SEGMENTS_TO_EXCHANGE","PARTIAL_EXCHANGE_UNSUPPORTED","LEG_ALREADY_DEPARTED","DEPARTURE_DATE_IN_PAST","LEG_DATES_OUT_OF_ORDER","INVALID_EXCHANGE_REQUEST","NOT_EXCHANGEABLE","CREDENTIAL_FORMAT_INVALID","PAYMENT_TYPE_NOT_ENABLED","PAYMENT_CREDENTIAL_INVALID","TRIP_OWNED_BY_OTHER_PAYMENT","IDEMPOTENCY_KEY_REUSED","ATTEMPT_IN_PROGRESS","ATTEMPT_TERMINAL","TEMPORARILY_UNAVAILABLE","AUTH_REQUIRED","PAYMENT_REQUIRED","RATE_LIMITED","BAD_REQUEST","FORBIDDEN","NOT_FOUND","CONFLICT","GONE","QUOTE_PENDING","QUOTE_EXPIRED","TRIP_EXPIRED","TRIP_STATE_CONFLICT","OFFER_EXPIRED","OFFER_UNAVAILABLE","MISSING_CUSTOMER_DETAILS","INVALID_PHONE_NUMBER","CURRENCY_UNSUPPORTED","HOTEL_NAME_LOW_CONFIDENCE","DESTINATION_LOW_CONFIDENCE","UPSTREAM_REJECTED","UPSTREAM_UNAVAILABLE","UPSTREAM_TIMEOUT","UPSTREAM_ERROR","INTERNAL"],"description":"What went wrong, as a stable machine-readable code. This is a closed set — branch on it rather than on `message`, which is prose and may change. New codes arrive in a minor version, so treat an unknown one as its HTTP status. A code can also stop being emitted: it leaves this set in a minor version, named in the changelog, and a branch you wrote for it goes unreached rather than wrong.","example":"BAD_REQUEST","isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"What went wrong, in prose. These codes always carry the same message, and it never includes text from a supplier: `RATE_LIMITED` — \"Too many requests. Retry after the Retry-After delay.\"; `OFFER_EXPIRED` — \"This offer has expired. Search again.\"; `OFFER_UNAVAILABLE` — \"This offer is no longer available. Search again.\"; `UPSTREAM_REJECTED` — \"The request was declined for this offer. Try another offer.\"; `UPSTREAM_UNAVAILABLE` — \"The service is temporarily unavailable. Retry after the Retry-After delay.\"; `UPSTREAM_TIMEOUT` — \"The request timed out before a result was available. Retry the request.\"; `UPSTREAM_ERROR` — \"The request could not be completed.\".","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"doc_url":{"type":"string","uniqueKey":"error.doc_url","typeLabel":"string"},"field":{"type":"string","description":"On a 400 `BAD_REQUEST` that names one refused input: the path of that field in your request, e.g. `selections[1].quantity` for the second selection of a `select_ancillaries` call. Absent when the refusal names no single field.","example":"selections[1].quantity","uniqueKey":"error.field","typeLabel":"string"}},"required":["code","message"],"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"example":{"error":{"code":"AUTH_REQUIRED","message":"Invalid or expired API key.","doc_url":"https://docs.gojinko.com/authentication/api-keys"}},"examples":{"Example":{"title":"Example","value":{"error":{"code":"AUTH_REQUIRED","message":"Invalid or expired API key.","doc_url":"https://docs.gojinko.com/authentication/api-keys"}}}},"exampleType":"examples"}},"exampleType":"examples"},"1ecc59be-2efa-4fa7-ace1-aba8a391c1a4":{"description":"Payment required — organization balance exhausted","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["INVALID_SEGMENTS_TO_EXCHANGE","PARTIAL_EXCHANGE_UNSUPPORTED","LEG_ALREADY_DEPARTED","DEPARTURE_DATE_IN_PAST","LEG_DATES_OUT_OF_ORDER","INVALID_EXCHANGE_REQUEST","NOT_EXCHANGEABLE","CREDENTIAL_FORMAT_INVALID","PAYMENT_TYPE_NOT_ENABLED","PAYMENT_CREDENTIAL_INVALID","TRIP_OWNED_BY_OTHER_PAYMENT","IDEMPOTENCY_KEY_REUSED","ATTEMPT_IN_PROGRESS","ATTEMPT_TERMINAL","TEMPORARILY_UNAVAILABLE","AUTH_REQUIRED","PAYMENT_REQUIRED","RATE_LIMITED","BAD_REQUEST","FORBIDDEN","NOT_FOUND","CONFLICT","GONE","QUOTE_PENDING","QUOTE_EXPIRED","TRIP_EXPIRED","TRIP_STATE_CONFLICT","OFFER_EXPIRED","OFFER_UNAVAILABLE","MISSING_CUSTOMER_DETAILS","INVALID_PHONE_NUMBER","CURRENCY_UNSUPPORTED","HOTEL_NAME_LOW_CONFIDENCE","DESTINATION_LOW_CONFIDENCE","UPSTREAM_REJECTED","UPSTREAM_UNAVAILABLE","UPSTREAM_TIMEOUT","UPSTREAM_ERROR","INTERNAL"],"description":"What went wrong, as a stable machine-readable code. This is a closed set — branch on it rather than on `message`, which is prose and may change. New codes arrive in a minor version, so treat an unknown one as its HTTP status. A code can also stop being emitted: it leaves this set in a minor version, named in the changelog, and a branch you wrote for it goes unreached rather than wrong.","example":"BAD_REQUEST","isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"What went wrong, in prose. These codes always carry the same message, and it never includes text from a supplier: `RATE_LIMITED` — \"Too many requests. Retry after the Retry-After delay.\"; `OFFER_EXPIRED` — \"This offer has expired. Search again.\"; `OFFER_UNAVAILABLE` — \"This offer is no longer available. Search again.\"; `UPSTREAM_REJECTED` — \"The request was declined for this offer. Try another offer.\"; `UPSTREAM_UNAVAILABLE` — \"The service is temporarily unavailable. Retry after the Retry-After delay.\"; `UPSTREAM_TIMEOUT` — \"The request timed out before a result was available. Retry the request.\"; `UPSTREAM_ERROR` — \"The request could not be completed.\".","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"doc_url":{"type":"string","uniqueKey":"error.doc_url","typeLabel":"string"},"field":{"type":"string","description":"On a 400 `BAD_REQUEST` that names one refused input: the path of that field in your request, e.g. `selections[1].quantity` for the second selection of a `select_ancillaries` call. Absent when the refusal names no single field.","example":"selections[1].quantity","uniqueKey":"error.field","typeLabel":"string"}},"required":["code","message"],"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"example":{"error":{"code":"PAYMENT_REQUIRED","message":"Insufficient balance — this call costs $0.0150 and your organization has $0.0000 available. Top up at https://dashboard.gojinko.com/developers/billing/topup","doc_url":"https://docs.gojinko.com/concepts/errors"}},"examples":{"Example":{"title":"Example","value":{"error":{"code":"PAYMENT_REQUIRED","message":"Insufficient balance — this call costs $0.0150 and your organization has $0.0000 available. Top up at https://dashboard.gojinko.com/developers/billing/topup","doc_url":"https://docs.gojinko.com/concepts/errors"}}}},"exampleType":"examples"}},"exampleType":"examples"},"933d7518-6702-4f3b-b5bf-44c5d1c6bceb":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["INVALID_SEGMENTS_TO_EXCHANGE","PARTIAL_EXCHANGE_UNSUPPORTED","LEG_ALREADY_DEPARTED","DEPARTURE_DATE_IN_PAST","LEG_DATES_OUT_OF_ORDER","INVALID_EXCHANGE_REQUEST","NOT_EXCHANGEABLE","CREDENTIAL_FORMAT_INVALID","PAYMENT_TYPE_NOT_ENABLED","PAYMENT_CREDENTIAL_INVALID","TRIP_OWNED_BY_OTHER_PAYMENT","IDEMPOTENCY_KEY_REUSED","ATTEMPT_IN_PROGRESS","ATTEMPT_TERMINAL","TEMPORARILY_UNAVAILABLE","AUTH_REQUIRED","PAYMENT_REQUIRED","RATE_LIMITED","BAD_REQUEST","FORBIDDEN","NOT_FOUND","CONFLICT","GONE","QUOTE_PENDING","QUOTE_EXPIRED","TRIP_EXPIRED","TRIP_STATE_CONFLICT","OFFER_EXPIRED","OFFER_UNAVAILABLE","MISSING_CUSTOMER_DETAILS","INVALID_PHONE_NUMBER","CURRENCY_UNSUPPORTED","HOTEL_NAME_LOW_CONFIDENCE","DESTINATION_LOW_CONFIDENCE","UPSTREAM_REJECTED","UPSTREAM_UNAVAILABLE","UPSTREAM_TIMEOUT","UPSTREAM_ERROR","INTERNAL"],"description":"What went wrong, as a stable machine-readable code. This is a closed set — branch on it rather than on `message`, which is prose and may change. New codes arrive in a minor version, so treat an unknown one as its HTTP status. A code can also stop being emitted: it leaves this set in a minor version, named in the changelog, and a branch you wrote for it goes unreached rather than wrong.","example":"BAD_REQUEST","isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"What went wrong, in prose. These codes always carry the same message, and it never includes text from a supplier: `RATE_LIMITED` — \"Too many requests. Retry after the Retry-After delay.\"; `OFFER_EXPIRED` — \"This offer has expired. Search again.\"; `OFFER_UNAVAILABLE` — \"This offer is no longer available. Search again.\"; `UPSTREAM_REJECTED` — \"The request was declined for this offer. Try another offer.\"; `UPSTREAM_UNAVAILABLE` — \"The service is temporarily unavailable. Retry after the Retry-After delay.\"; `UPSTREAM_TIMEOUT` — \"The request timed out before a result was available. Retry the request.\"; `UPSTREAM_ERROR` — \"The request could not be completed.\".","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"doc_url":{"type":"string","uniqueKey":"error.doc_url","typeLabel":"string"},"field":{"type":"string","description":"On a 400 `BAD_REQUEST` that names one refused input: the path of that field in your request, e.g. `selections[1].quantity` for the second selection of a `select_ancillaries` call. Absent when the refusal names no single field.","example":"selections[1].quantity","uniqueKey":"error.field","typeLabel":"string"}},"required":["code","message"],"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"example":{"error":{"code":"NOT_FOUND","message":"Resource not found.","doc_url":"https://docs.gojinko.com/concepts/errors"}},"examples":{"Example":{"title":"Example","value":{"error":{"code":"NOT_FOUND","message":"Resource not found.","doc_url":"https://docs.gojinko.com/concepts/errors"}}}},"exampleType":"examples"}},"exampleType":"examples"},"53b38920-2bb1-4a0d-a7c1-e23a999afd6b":{"description":"The operation conflicts with the current state of the resource","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["INVALID_SEGMENTS_TO_EXCHANGE","PARTIAL_EXCHANGE_UNSUPPORTED","LEG_ALREADY_DEPARTED","DEPARTURE_DATE_IN_PAST","LEG_DATES_OUT_OF_ORDER","INVALID_EXCHANGE_REQUEST","NOT_EXCHANGEABLE","CREDENTIAL_FORMAT_INVALID","PAYMENT_TYPE_NOT_ENABLED","PAYMENT_CREDENTIAL_INVALID","TRIP_OWNED_BY_OTHER_PAYMENT","IDEMPOTENCY_KEY_REUSED","ATTEMPT_IN_PROGRESS","ATTEMPT_TERMINAL","TEMPORARILY_UNAVAILABLE","AUTH_REQUIRED","PAYMENT_REQUIRED","RATE_LIMITED","BAD_REQUEST","FORBIDDEN","NOT_FOUND","CONFLICT","GONE","QUOTE_PENDING","QUOTE_EXPIRED","TRIP_EXPIRED","TRIP_STATE_CONFLICT","OFFER_EXPIRED","OFFER_UNAVAILABLE","MISSING_CUSTOMER_DETAILS","INVALID_PHONE_NUMBER","CURRENCY_UNSUPPORTED","HOTEL_NAME_LOW_CONFIDENCE","DESTINATION_LOW_CONFIDENCE","UPSTREAM_REJECTED","UPSTREAM_UNAVAILABLE","UPSTREAM_TIMEOUT","UPSTREAM_ERROR","INTERNAL"],"description":"What went wrong, as a stable machine-readable code. This is a closed set — branch on it rather than on `message`, which is prose and may change. New codes arrive in a minor version, so treat an unknown one as its HTTP status. A code can also stop being emitted: it leaves this set in a minor version, named in the changelog, and a branch you wrote for it goes unreached rather than wrong.","example":"BAD_REQUEST","isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"What went wrong, in prose. These codes always carry the same message, and it never includes text from a supplier: `RATE_LIMITED` — \"Too many requests. Retry after the Retry-After delay.\"; `OFFER_EXPIRED` — \"This offer has expired. Search again.\"; `OFFER_UNAVAILABLE` — \"This offer is no longer available. Search again.\"; `UPSTREAM_REJECTED` — \"The request was declined for this offer. Try another offer.\"; `UPSTREAM_UNAVAILABLE` — \"The service is temporarily unavailable. Retry after the Retry-After delay.\"; `UPSTREAM_TIMEOUT` — \"The request timed out before a result was available. Retry the request.\"; `UPSTREAM_ERROR` — \"The request could not be completed.\".","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"doc_url":{"type":"string","uniqueKey":"error.doc_url","typeLabel":"string"},"field":{"type":"string","description":"On a 400 `BAD_REQUEST` that names one refused input: the path of that field in your request, e.g. `selections[1].quantity` for the second selection of a `select_ancillaries` call. Absent when the refusal names no single field.","example":"selections[1].quantity","uniqueKey":"error.field","typeLabel":"string"}},"required":["code","message"],"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"example":{"error":{"code":"CONFLICT","message":"The operation conflicts with the current state of the resource.","doc_url":"https://docs.gojinko.com/concepts/errors"}},"examples":{"Example":{"title":"Example","value":{"error":{"code":"CONFLICT","message":"The operation conflicts with the current state of the resource.","doc_url":"https://docs.gojinko.com/concepts/errors"}}}},"exampleType":"examples"}},"exampleType":"examples"},"f4e44932-a766-47c6-8692-a0edc3af346c":{"description":"The resource this request names no longer exists","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["INVALID_SEGMENTS_TO_EXCHANGE","PARTIAL_EXCHANGE_UNSUPPORTED","LEG_ALREADY_DEPARTED","DEPARTURE_DATE_IN_PAST","LEG_DATES_OUT_OF_ORDER","INVALID_EXCHANGE_REQUEST","NOT_EXCHANGEABLE","CREDENTIAL_FORMAT_INVALID","PAYMENT_TYPE_NOT_ENABLED","PAYMENT_CREDENTIAL_INVALID","TRIP_OWNED_BY_OTHER_PAYMENT","IDEMPOTENCY_KEY_REUSED","ATTEMPT_IN_PROGRESS","ATTEMPT_TERMINAL","TEMPORARILY_UNAVAILABLE","AUTH_REQUIRED","PAYMENT_REQUIRED","RATE_LIMITED","BAD_REQUEST","FORBIDDEN","NOT_FOUND","CONFLICT","GONE","QUOTE_PENDING","QUOTE_EXPIRED","TRIP_EXPIRED","TRIP_STATE_CONFLICT","OFFER_EXPIRED","OFFER_UNAVAILABLE","MISSING_CUSTOMER_DETAILS","INVALID_PHONE_NUMBER","CURRENCY_UNSUPPORTED","HOTEL_NAME_LOW_CONFIDENCE","DESTINATION_LOW_CONFIDENCE","UPSTREAM_REJECTED","UPSTREAM_UNAVAILABLE","UPSTREAM_TIMEOUT","UPSTREAM_ERROR","INTERNAL"],"description":"What went wrong, as a stable machine-readable code. This is a closed set — branch on it rather than on `message`, which is prose and may change. New codes arrive in a minor version, so treat an unknown one as its HTTP status. A code can also stop being emitted: it leaves this set in a minor version, named in the changelog, and a branch you wrote for it goes unreached rather than wrong.","example":"BAD_REQUEST","isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"What went wrong, in prose. These codes always carry the same message, and it never includes text from a supplier: `RATE_LIMITED` — \"Too many requests. Retry after the Retry-After delay.\"; `OFFER_EXPIRED` — \"This offer has expired. Search again.\"; `OFFER_UNAVAILABLE` — \"This offer is no longer available. Search again.\"; `UPSTREAM_REJECTED` — \"The request was declined for this offer. Try another offer.\"; `UPSTREAM_UNAVAILABLE` — \"The service is temporarily unavailable. Retry after the Retry-After delay.\"; `UPSTREAM_TIMEOUT` — \"The request timed out before a result was available. Retry the request.\"; `UPSTREAM_ERROR` — \"The request could not be completed.\".","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"doc_url":{"type":"string","uniqueKey":"error.doc_url","typeLabel":"string"},"field":{"type":"string","description":"On a 400 `BAD_REQUEST` that names one refused input: the path of that field in your request, e.g. `selections[1].quantity` for the second selection of a `select_ancillaries` call. Absent when the refusal names no single field.","example":"selections[1].quantity","uniqueKey":"error.field","typeLabel":"string"}},"required":["code","message"],"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"example":{"error":{"code":"GONE","message":"The resource no longer exists.","doc_url":"https://docs.gojinko.com/concepts/errors"}},"examples":{"Example":{"title":"Example","value":{"error":{"code":"GONE","message":"The resource no longer exists.","doc_url":"https://docs.gojinko.com/concepts/errors"}}}},"exampleType":"examples"}},"exampleType":"examples"},"0a23a1eb-5553-4988-9cf2-08bc5a0a0186":{"description":"The request failed validation, or the rental supplier declined the search. When a supplier declined the request, `error.message` is “The rental request was declined. Try another vehicle, location or time.” **`BAD_REQUEST`** — The request was malformed or failed validation. Fix the request as the message describes; retrying it unchanged cannot succeed.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["INVALID_SEGMENTS_TO_EXCHANGE","PARTIAL_EXCHANGE_UNSUPPORTED","LEG_ALREADY_DEPARTED","DEPARTURE_DATE_IN_PAST","LEG_DATES_OUT_OF_ORDER","INVALID_EXCHANGE_REQUEST","NOT_EXCHANGEABLE","CREDENTIAL_FORMAT_INVALID","PAYMENT_TYPE_NOT_ENABLED","PAYMENT_CREDENTIAL_INVALID","TRIP_OWNED_BY_OTHER_PAYMENT","IDEMPOTENCY_KEY_REUSED","ATTEMPT_IN_PROGRESS","ATTEMPT_TERMINAL","TEMPORARILY_UNAVAILABLE","AUTH_REQUIRED","PAYMENT_REQUIRED","RATE_LIMITED","BAD_REQUEST","FORBIDDEN","NOT_FOUND","CONFLICT","GONE","QUOTE_PENDING","QUOTE_EXPIRED","TRIP_EXPIRED","TRIP_STATE_CONFLICT","OFFER_EXPIRED","OFFER_UNAVAILABLE","MISSING_CUSTOMER_DETAILS","INVALID_PHONE_NUMBER","CURRENCY_UNSUPPORTED","HOTEL_NAME_LOW_CONFIDENCE","DESTINATION_LOW_CONFIDENCE","UPSTREAM_REJECTED","UPSTREAM_UNAVAILABLE","UPSTREAM_TIMEOUT","UPSTREAM_ERROR","INTERNAL"],"description":"What went wrong, as a stable machine-readable code. This is a closed set — branch on it rather than on `message`, which is prose and may change. New codes arrive in a minor version, so treat an unknown one as its HTTP status. A code can also stop being emitted: it leaves this set in a minor version, named in the changelog, and a branch you wrote for it goes unreached rather than wrong.","example":"BAD_REQUEST","isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"What went wrong, in prose. These codes always carry the same message, and it never includes text from a supplier: `RATE_LIMITED` — \"Too many requests. Retry after the Retry-After delay.\"; `OFFER_EXPIRED` — \"This offer has expired. Search again.\"; `OFFER_UNAVAILABLE` — \"This offer is no longer available. Search again.\"; `UPSTREAM_REJECTED` — \"The request was declined for this offer. Try another offer.\"; `UPSTREAM_UNAVAILABLE` — \"The service is temporarily unavailable. Retry after the Retry-After delay.\"; `UPSTREAM_TIMEOUT` — \"The request timed out before a result was available. Retry the request.\"; `UPSTREAM_ERROR` — \"The request could not be completed.\".","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"doc_url":{"type":"string","uniqueKey":"error.doc_url","typeLabel":"string"},"field":{"type":"string","description":"On a 400 `BAD_REQUEST` that names one refused input: the path of that field in your request, e.g. `selections[1].quantity` for the second selection of a `select_ancillaries` call. Absent when the refusal names no single field.","example":"selections[1].quantity","uniqueKey":"error.field","typeLabel":"string"}},"required":["code","message"],"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"example":{"error":{"code":"BAD_REQUEST","message":"The rental request was declined. Try another vehicle, location or time."}},"examples":{"Example":{"title":"Example","value":{"error":{"code":"BAD_REQUEST","message":"The rental request was declined. Try another vehicle, location or time."}}}},"exampleType":"examples"}},"exampleType":"examples"},"9f7a9a1d-f29b-493b-87a7-3ccb16fefb4c":{"description":"Rate limit or quota exceeded","headers":{"Retry-After":{"description":"Seconds to wait before retrying, forwarded verbatim from the upstream service. Absent when the upstream named no interval.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["INVALID_SEGMENTS_TO_EXCHANGE","PARTIAL_EXCHANGE_UNSUPPORTED","LEG_ALREADY_DEPARTED","DEPARTURE_DATE_IN_PAST","LEG_DATES_OUT_OF_ORDER","INVALID_EXCHANGE_REQUEST","NOT_EXCHANGEABLE","CREDENTIAL_FORMAT_INVALID","PAYMENT_TYPE_NOT_ENABLED","PAYMENT_CREDENTIAL_INVALID","TRIP_OWNED_BY_OTHER_PAYMENT","IDEMPOTENCY_KEY_REUSED","ATTEMPT_IN_PROGRESS","ATTEMPT_TERMINAL","TEMPORARILY_UNAVAILABLE","AUTH_REQUIRED","PAYMENT_REQUIRED","RATE_LIMITED","BAD_REQUEST","FORBIDDEN","NOT_FOUND","CONFLICT","GONE","QUOTE_PENDING","QUOTE_EXPIRED","TRIP_EXPIRED","TRIP_STATE_CONFLICT","OFFER_EXPIRED","OFFER_UNAVAILABLE","MISSING_CUSTOMER_DETAILS","INVALID_PHONE_NUMBER","CURRENCY_UNSUPPORTED","HOTEL_NAME_LOW_CONFIDENCE","DESTINATION_LOW_CONFIDENCE","UPSTREAM_REJECTED","UPSTREAM_UNAVAILABLE","UPSTREAM_TIMEOUT","UPSTREAM_ERROR","INTERNAL"],"description":"What went wrong, as a stable machine-readable code. This is a closed set — branch on it rather than on `message`, which is prose and may change. New codes arrive in a minor version, so treat an unknown one as its HTTP status. A code can also stop being emitted: it leaves this set in a minor version, named in the changelog, and a branch you wrote for it goes unreached rather than wrong.","example":"BAD_REQUEST","isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"What went wrong, in prose. These codes always carry the same message, and it never includes text from a supplier: `RATE_LIMITED` — \"Too many requests. Retry after the Retry-After delay.\"; `OFFER_EXPIRED` — \"This offer has expired. Search again.\"; `OFFER_UNAVAILABLE` — \"This offer is no longer available. Search again.\"; `UPSTREAM_REJECTED` — \"The request was declined for this offer. Try another offer.\"; `UPSTREAM_UNAVAILABLE` — \"The service is temporarily unavailable. Retry after the Retry-After delay.\"; `UPSTREAM_TIMEOUT` — \"The request timed out before a result was available. Retry the request.\"; `UPSTREAM_ERROR` — \"The request could not be completed.\".","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"doc_url":{"type":"string","uniqueKey":"error.doc_url","typeLabel":"string"},"field":{"type":"string","description":"On a 400 `BAD_REQUEST` that names one refused input: the path of that field in your request, e.g. `selections[1].quantity` for the second selection of a `select_ancillaries` call. Absent when the refusal names no single field.","example":"selections[1].quantity","uniqueKey":"error.field","typeLabel":"string"}},"required":["code","message"],"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"example":{"error":{"code":"RATE_LIMITED","message":"Too many requests. Retry after the Retry-After delay.","doc_url":"https://docs.gojinko.com/concepts/errors"}},"examples":{"Example":{"title":"Example","value":{"error":{"code":"RATE_LIMITED","message":"Too many requests. Retry after the Retry-After delay.","doc_url":"https://docs.gojinko.com/concepts/errors"}}}},"exampleType":"examples"}},"exampleType":"examples"},"863186ba-5716-466a-beef-28487cf47886":{"description":"The travel provider rejected the request, or an upstream call failed","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["INVALID_SEGMENTS_TO_EXCHANGE","PARTIAL_EXCHANGE_UNSUPPORTED","LEG_ALREADY_DEPARTED","DEPARTURE_DATE_IN_PAST","LEG_DATES_OUT_OF_ORDER","INVALID_EXCHANGE_REQUEST","NOT_EXCHANGEABLE","CREDENTIAL_FORMAT_INVALID","PAYMENT_TYPE_NOT_ENABLED","PAYMENT_CREDENTIAL_INVALID","TRIP_OWNED_BY_OTHER_PAYMENT","IDEMPOTENCY_KEY_REUSED","ATTEMPT_IN_PROGRESS","ATTEMPT_TERMINAL","TEMPORARILY_UNAVAILABLE","AUTH_REQUIRED","PAYMENT_REQUIRED","RATE_LIMITED","BAD_REQUEST","FORBIDDEN","NOT_FOUND","CONFLICT","GONE","QUOTE_PENDING","QUOTE_EXPIRED","TRIP_EXPIRED","TRIP_STATE_CONFLICT","OFFER_EXPIRED","OFFER_UNAVAILABLE","MISSING_CUSTOMER_DETAILS","INVALID_PHONE_NUMBER","CURRENCY_UNSUPPORTED","HOTEL_NAME_LOW_CONFIDENCE","DESTINATION_LOW_CONFIDENCE","UPSTREAM_REJECTED","UPSTREAM_UNAVAILABLE","UPSTREAM_TIMEOUT","UPSTREAM_ERROR","INTERNAL"],"description":"What went wrong, as a stable machine-readable code. This is a closed set — branch on it rather than on `message`, which is prose and may change. New codes arrive in a minor version, so treat an unknown one as its HTTP status. A code can also stop being emitted: it leaves this set in a minor version, named in the changelog, and a branch you wrote for it goes unreached rather than wrong.","example":"BAD_REQUEST","isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"What went wrong, in prose. These codes always carry the same message, and it never includes text from a supplier: `RATE_LIMITED` — \"Too many requests. Retry after the Retry-After delay.\"; `OFFER_EXPIRED` — \"This offer has expired. Search again.\"; `OFFER_UNAVAILABLE` — \"This offer is no longer available. Search again.\"; `UPSTREAM_REJECTED` — \"The request was declined for this offer. Try another offer.\"; `UPSTREAM_UNAVAILABLE` — \"The service is temporarily unavailable. Retry after the Retry-After delay.\"; `UPSTREAM_TIMEOUT` — \"The request timed out before a result was available. Retry the request.\"; `UPSTREAM_ERROR` — \"The request could not be completed.\".","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"doc_url":{"type":"string","uniqueKey":"error.doc_url","typeLabel":"string"},"field":{"type":"string","description":"On a 400 `BAD_REQUEST` that names one refused input: the path of that field in your request, e.g. `selections[1].quantity` for the second selection of a `select_ancillaries` call. Absent when the refusal names no single field.","example":"selections[1].quantity","uniqueKey":"error.field","typeLabel":"string"}},"required":["code","message"],"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"example":{"error":{"code":"UPSTREAM_REJECTED","message":"The request was declined for this offer. Try another offer.","doc_url":"https://docs.gojinko.com/concepts/errors"}},"examples":{"Example":{"title":"Example","value":{"error":{"code":"UPSTREAM_REJECTED","message":"The request was declined for this offer. Try another offer.","doc_url":"https://docs.gojinko.com/concepts/errors"}}}},"exampleType":"examples"}},"exampleType":"examples"},"cfaa95d5-7755-47fb-b1e0-f17a7cc4f3f7":{"description":"No travel provider can serve the request right now","headers":{"Retry-After":{"description":"Seconds to wait before retrying, forwarded verbatim from the upstream service. Absent when the upstream named no interval.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["INVALID_SEGMENTS_TO_EXCHANGE","PARTIAL_EXCHANGE_UNSUPPORTED","LEG_ALREADY_DEPARTED","DEPARTURE_DATE_IN_PAST","LEG_DATES_OUT_OF_ORDER","INVALID_EXCHANGE_REQUEST","NOT_EXCHANGEABLE","CREDENTIAL_FORMAT_INVALID","PAYMENT_TYPE_NOT_ENABLED","PAYMENT_CREDENTIAL_INVALID","TRIP_OWNED_BY_OTHER_PAYMENT","IDEMPOTENCY_KEY_REUSED","ATTEMPT_IN_PROGRESS","ATTEMPT_TERMINAL","TEMPORARILY_UNAVAILABLE","AUTH_REQUIRED","PAYMENT_REQUIRED","RATE_LIMITED","BAD_REQUEST","FORBIDDEN","NOT_FOUND","CONFLICT","GONE","QUOTE_PENDING","QUOTE_EXPIRED","TRIP_EXPIRED","TRIP_STATE_CONFLICT","OFFER_EXPIRED","OFFER_UNAVAILABLE","MISSING_CUSTOMER_DETAILS","INVALID_PHONE_NUMBER","CURRENCY_UNSUPPORTED","HOTEL_NAME_LOW_CONFIDENCE","DESTINATION_LOW_CONFIDENCE","UPSTREAM_REJECTED","UPSTREAM_UNAVAILABLE","UPSTREAM_TIMEOUT","UPSTREAM_ERROR","INTERNAL"],"description":"What went wrong, as a stable machine-readable code. This is a closed set — branch on it rather than on `message`, which is prose and may change. New codes arrive in a minor version, so treat an unknown one as its HTTP status. A code can also stop being emitted: it leaves this set in a minor version, named in the changelog, and a branch you wrote for it goes unreached rather than wrong.","example":"BAD_REQUEST","isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"What went wrong, in prose. These codes always carry the same message, and it never includes text from a supplier: `RATE_LIMITED` — \"Too many requests. Retry after the Retry-After delay.\"; `OFFER_EXPIRED` — \"This offer has expired. Search again.\"; `OFFER_UNAVAILABLE` — \"This offer is no longer available. Search again.\"; `UPSTREAM_REJECTED` — \"The request was declined for this offer. Try another offer.\"; `UPSTREAM_UNAVAILABLE` — \"The service is temporarily unavailable. Retry after the Retry-After delay.\"; `UPSTREAM_TIMEOUT` — \"The request timed out before a result was available. Retry the request.\"; `UPSTREAM_ERROR` — \"The request could not be completed.\".","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"doc_url":{"type":"string","uniqueKey":"error.doc_url","typeLabel":"string"},"field":{"type":"string","description":"On a 400 `BAD_REQUEST` that names one refused input: the path of that field in your request, e.g. `selections[1].quantity` for the second selection of a `select_ancillaries` call. Absent when the refusal names no single field.","example":"selections[1].quantity","uniqueKey":"error.field","typeLabel":"string"}},"required":["code","message"],"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"example":{"error":{"code":"UPSTREAM_UNAVAILABLE","message":"The service is temporarily unavailable. Retry after the Retry-After delay.","doc_url":"https://docs.gojinko.com/concepts/errors"}},"examples":{"Example":{"title":"Example","value":{"error":{"code":"UPSTREAM_UNAVAILABLE","message":"The service is temporarily unavailable. Retry after the Retry-After delay.","doc_url":"https://docs.gojinko.com/concepts/errors"}}}},"exampleType":"examples"}},"exampleType":"examples"},"7964a56f-dbfe-46fb-abb0-4705f879db5f":{"description":"The travel provider did not answer in time","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["INVALID_SEGMENTS_TO_EXCHANGE","PARTIAL_EXCHANGE_UNSUPPORTED","LEG_ALREADY_DEPARTED","DEPARTURE_DATE_IN_PAST","LEG_DATES_OUT_OF_ORDER","INVALID_EXCHANGE_REQUEST","NOT_EXCHANGEABLE","CREDENTIAL_FORMAT_INVALID","PAYMENT_TYPE_NOT_ENABLED","PAYMENT_CREDENTIAL_INVALID","TRIP_OWNED_BY_OTHER_PAYMENT","IDEMPOTENCY_KEY_REUSED","ATTEMPT_IN_PROGRESS","ATTEMPT_TERMINAL","TEMPORARILY_UNAVAILABLE","AUTH_REQUIRED","PAYMENT_REQUIRED","RATE_LIMITED","BAD_REQUEST","FORBIDDEN","NOT_FOUND","CONFLICT","GONE","QUOTE_PENDING","QUOTE_EXPIRED","TRIP_EXPIRED","TRIP_STATE_CONFLICT","OFFER_EXPIRED","OFFER_UNAVAILABLE","MISSING_CUSTOMER_DETAILS","INVALID_PHONE_NUMBER","CURRENCY_UNSUPPORTED","HOTEL_NAME_LOW_CONFIDENCE","DESTINATION_LOW_CONFIDENCE","UPSTREAM_REJECTED","UPSTREAM_UNAVAILABLE","UPSTREAM_TIMEOUT","UPSTREAM_ERROR","INTERNAL"],"description":"What went wrong, as a stable machine-readable code. This is a closed set — branch on it rather than on `message`, which is prose and may change. New codes arrive in a minor version, so treat an unknown one as its HTTP status. A code can also stop being emitted: it leaves this set in a minor version, named in the changelog, and a branch you wrote for it goes unreached rather than wrong.","example":"BAD_REQUEST","isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"What went wrong, in prose. These codes always carry the same message, and it never includes text from a supplier: `RATE_LIMITED` — \"Too many requests. Retry after the Retry-After delay.\"; `OFFER_EXPIRED` — \"This offer has expired. Search again.\"; `OFFER_UNAVAILABLE` — \"This offer is no longer available. Search again.\"; `UPSTREAM_REJECTED` — \"The request was declined for this offer. Try another offer.\"; `UPSTREAM_UNAVAILABLE` — \"The service is temporarily unavailable. Retry after the Retry-After delay.\"; `UPSTREAM_TIMEOUT` — \"The request timed out before a result was available. Retry the request.\"; `UPSTREAM_ERROR` — \"The request could not be completed.\".","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"doc_url":{"type":"string","uniqueKey":"error.doc_url","typeLabel":"string"},"field":{"type":"string","description":"On a 400 `BAD_REQUEST` that names one refused input: the path of that field in your request, e.g. `selections[1].quantity` for the second selection of a `select_ancillaries` call. Absent when the refusal names no single field.","example":"selections[1].quantity","uniqueKey":"error.field","typeLabel":"string"}},"required":["code","message"],"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"required":["error"],"uniqueKey":"","typeLabel":"object"},"example":{"error":{"code":"UPSTREAM_TIMEOUT","message":"The request timed out before a result was available. Retry the request.","doc_url":"https://docs.gojinko.com/concepts/errors"}},"examples":{"Example":{"title":"Example","value":{"error":{"code":"UPSTREAM_TIMEOUT","message":"The request timed out before a result was available. Retry the request.","doc_url":"https://docs.gojinko.com/concepts/errors"}}}},"exampleType":"examples"}},"exampleType":"examples"}},"security":{"2a8ac43d-478c-4645-9e08-45f76b0079f5":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"X-API-Key","scopes":[],"schemeName":"ApiKeyAuth"}},"1049422f-24f1-449d-8a29-dcb3f9d3f1a5":{"BearerAuth":{"type":"http","scheme":"bearer","scopes":[],"schemeName":"BearerAuth"}}},"servers":{"75a5a670-da5f-44f8-98a4-b274a8ea8844":{"url":"https://api.gojinko.com","description":"Production"},"0cd4b6b0-f453-498c-aad6-7de898253bfe":{"url":"https://api.sandbox.gojinko.com","description":"Sandbox"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"apiKey","in":"header","name":"X-API-Key","scopes":[],"schemeName":"ApiKeyAuth"},"schema":{"title":"X-API-Key","type":"string","isRequired":true,"typeLabel":"string","deprecated":false},"schemeName":"ApiKeyAuth","name":"X-API-Key"}],"title":"ApiKeyAuth"},{"schemes":[{"scheme":{"type":"http","scheme":"bearer","scopes":[],"schemeName":"BearerAuth"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"Bearer authentication header of the form `Bearer \u003ctoken>`, where `\u003ctoken>` is your auth token.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"BearerAuth","name":"Authorization"}],"title":"BearerAuth"}]},"originalFileLocation":"api-reference/public-api.yaml"},"subdomain":"jinko","siteName":"Jinko Platform","title":"car-search - Jinko Platform","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-17T23:49:25.678Z","originalFileLocation":"api/car-search.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Search live car rental offers\">\u003cmeta data-mint-head name=\"application-name\" content=\"Jinko Platform\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/jinko/ayPHPyX_IPSgwuY0/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/jinko/ayPHPyX_IPSgwuY0/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/jinko/ayPHPyX_IPSgwuY0/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/jinko/ayPHPyX_IPSgwuY0/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/jinko/ayPHPyX_IPSgwuY0/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/jinko/ayPHPyX_IPSgwuY0/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/jinko/ayPHPyX_IPSgwuY0/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/jinko/ayPHPyX_IPSgwuY0/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/jinko/ayPHPyX_IPSgwuY0/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"car-search - Jinko Platform\">\u003cmeta data-mint-head property=\"og:description\" content=\"Search live car rental offers\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Jinko Platform\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.gojinko.com/api/car-search\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://jinko.mintlify.app/_mintlify/api/og/v2?division=Cars\u0026amp;title=car-search\u0026amp;description=Search+live+car+rental+offers\u0026amp;theme=659862b02d305118d0483d60\u0026amp;signature=14fd3949b02e351ad103f3e12a3a8ee48e4f2badb68f185e163b8bd5c90d5fdc\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"car-search - Jinko Platform\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Search live car rental offers\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://jinko.mintlify.app/_mintlify/api/og/v2?division=Cars\u0026amp;title=car-search\u0026amp;description=Search+live+car+rental+offers\u0026amp;theme=659862b02d305118d0483d60\u0026amp;signature=14fd3949b02e351ad103f3e12a3a8ee48e4f2badb68f185e163b8bd5c90d5fdc\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/jinko/ayPHPyX_IPSgwuY0/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Jinko Platform\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#FF6363\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.gojinko.com/api/car-search\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api/car-search.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.gojinko.com/#organization\",\"name\":\"Jinko Platform\",\"url\":\"https://docs.gojinko.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/jinko/tLgBpae546SdRBMu/logo/jinko-logo.png?fit=max\u0026auto=format\u0026n=tLgBpae546SdRBMu\u0026q=85\u0026s=8cf307169eba8c087816a44a41447566\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.gojinko.com#website\",\"name\":\"Jinko Platform\",\"url\":\"https://docs.gojinko.com\",\"publisher\":{\"@id\":\"https://docs.gojinko.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.gojinko.com/api/car-search#webpage\",\"url\":\"https://docs.gojinko.com/api/car-search\",\"name\":\"car-search\",\"description\":\"Search live car rental offers\",\"dateModified\":\"2026-10-17T23:49:25.678Z\",\"isPartOf\":{\"@id\":\"https://docs.gojinko.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.gojinko.com/api/car-search#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.gojinko.com/api/car-search#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Jinko Platform\",\"item\":\"https://docs.gojinko.com\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"car-search\",\"item\":\"https://docs.gojinko.com/api/car-search\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.gojinko.com/api/car-search#apireference\",\"headline\":\"car-search\",\"name\":\"car-search\",\"description\":\"Search live car rental offers\",\"url\":\"https://docs.gojinko.com/api/car-search\",\"mainEntityOfPage\":{\"@id\":\"https://docs.gojinko.com/api/car-search#webpage\"},\"dateModified\":\"2026-10-17T23:49:25.678Z\",\"publisher\":{\"@id\":\"https://docs.gojinko.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.gojinko.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Jinko Platform\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Jinko Platform","nav":{"global":null,"tabs":[{"tab":"Documentation","pages":[{"title":"Documentation","href":"/introduction"}]},{"tab":"MCP","pages":[{"title":"MCP","href":"/tools/overview"}]},{"tab":"CLI","pages":[{"title":"CLI","href":"/cli/overview"}]},{"tab":"API reference","groups":[{"group":"Introduction","pages":[{"title":"API reference","href":"/api-reference/introduction"}]},{"group":"Travel Demand","pages":[{"group":"Destination","pages":[{"title":"destination","sidebarTitle":"/v1/destination","openapi":"api-reference/public-api.yaml GET /v1/destination","href":"/api/destination"},{"title":"destination trend","sidebarTitle":"/v1/destination/trend","openapi":"api-reference/public-api.yaml GET /v1/destination/trend","href":"/api/destination/trend"}]},{"group":"Market","pages":[{"title":"market","sidebarTitle":"/v1/market","openapi":"api-reference/public-api.yaml GET /v1/market","href":"/api/market"},{"title":"market trend","sidebarTitle":"/v1/market/trend","openapi":"api-reference/public-api.yaml GET /v1/market/trend","href":"/api/market/trend"}]},{"group":"Audience","pages":[{"title":"audience","sidebarTitle":"/v1/audience","openapi":"api-reference/public-api.yaml GET /v1/audience","href":"/api/audience"},{"title":"audience trend","sidebarTitle":"/v1/audience/trend","openapi":"api-reference/public-api.yaml GET /v1/audience/trend","href":"/api/audience/trend"}]},{"group":"Trend","pages":[{"title":"trend","sidebarTitle":"/v1/trend","openapi":"api-reference/public-api.yaml GET /v1/trend","href":"/api/trend"}]}]},{"group":"Flights","pages":[{"group":"Discovery","pages":[{"title":"find-destination","sidebarTitle":"/v1/find_destination","openapi":"api-reference/public-api.yaml POST /v1/find_destination","href":"/api/find-destination"},{"title":"flight-calendar","sidebarTitle":"/v1/flight_calendar","openapi":"api-reference/public-api.yaml POST /v1/flight_calendar","href":"/api/flight-calendar"},{"title":"find-dates","sidebarTitle":"/v1/find_dates","openapi":"api-reference/public-api.yaml POST /v1/find_dates","href":"/api/find-dates"},{"title":"lowest-fare","sidebarTitle":"/v1/lowest_fare","openapi":"api-reference/public-api.yaml POST /v1/lowest_fare","href":"/api/lowest-fare"},{"title":"price-monitoring","sidebarTitle":"/v1/price_monitoring","openapi":"api-reference/public-api.yaml POST /v1/price_monitoring","href":"/api/price-monitoring"},{"title":"flight-price-advice","sidebarTitle":"/v1/flight_price_advice","openapi":"api-reference/public-api.yaml POST /v1/flight_price_advice","href":"/api/flight-price-advice"}]},{"group":"Search","pages":[{"title":"flight-search","sidebarTitle":"/v1/flight_search","openapi":"api-reference/public-api.yaml POST /v1/flight_search","href":"/api/flight-search"}]},{"group":"Manage","pages":[{"title":"refund check","sidebarTitle":"/v1/refund_check","openapi":"api-reference/public-api.yaml POST /v1/refund_check","deprecated":true,"href":"/api/refund/check"},{"title":"refund commit","sidebarTitle":"/v1/refund_commit","openapi":"api-reference/public-api.yaml POST /v1/refund_commit","deprecated":true,"href":"/api/refund/commit"},{"title":"refund status","sidebarTitle":"/v1/refund_status","openapi":"api-reference/public-api.yaml POST /v1/refund_status","deprecated":true,"href":"/api/refund/status"},{"title":"exchange shop","sidebarTitle":"/v1/exchange_shop","openapi":"api-reference/public-api.yaml POST /v1/exchange_shop","href":"/api/exchange/shop"},{"title":"exchange price","sidebarTitle":"/v1/exchange_price","openapi":"api-reference/public-api.yaml POST /v1/exchange_price","href":"/api/exchange/price"},{"title":"exchange commit","sidebarTitle":"/v1/exchange_commit","openapi":"api-reference/public-api.yaml POST /v1/exchange_commit","href":"/api/exchange/commit"},{"title":"exchange status","sidebarTitle":"/v1/exchange_status","openapi":"api-reference/public-api.yaml POST /v1/exchange_status","href":"/api/exchange/status"},{"title":"flight-refund-preview","sidebarTitle":"/v1/flight_refund_preview","openapi":"api-reference/public-api.yaml POST /v1/flight_refund_preview","href":"/api/flight-refund-preview"},{"title":"flight-refund-commit","sidebarTitle":"/v1/flight_refund_commit","openapi":"api-reference/public-api.yaml POST /v1/flight_refund_commit","href":"/api/flight-refund-commit"},{"title":"flight-refund-status","sidebarTitle":"/v1/flight_refund_status","openapi":"api-reference/public-api.yaml POST /v1/flight_refund_status","href":"/api/flight-refund-status"}]}]},{"group":"Hotels","pages":[{"title":"hotel-search","sidebarTitle":"/v1/hotel_search","openapi":"api-reference/public-api.yaml POST /v1/hotel_search","href":"/api/hotel-search"},{"title":"hotel-details","sidebarTitle":"/v1/hotel_details/{hotel_id}","openapi":"api-reference/public-api.yaml GET /v1/hotel_details/{hotel_id}","href":"/api/hotel-details"},{"title":"hotel-reviews","sidebarTitle":"/v1/hotel_reviews/{hotel_id}","openapi":"api-reference/public-api.yaml GET /v1/hotel_reviews/{hotel_id}","href":"/api/hotel-reviews"},{"title":"hotel-cancel","sidebarTitle":"/v1/hotel_cancel","openapi":"api-reference/public-api.yaml POST /v1/hotel_cancel","deprecated":true,"href":"/api/hotel-cancel"},{"title":"hotel-cancel-preview","sidebarTitle":"/v1/hotel_cancel_preview","openapi":"api-reference/public-api.yaml POST /v1/hotel_cancel_preview","href":"/api/hotel-cancel-preview"},{"title":"hotel-cancel-commit","sidebarTitle":"/v1/hotel_cancel_commit","openapi":"api-reference/public-api.yaml POST /v1/hotel_cancel_commit","href":"/api/hotel-cancel-commit"},{"title":"hotel-cancel-status","sidebarTitle":"/v1/hotel_cancel_status","description":"Check how a hotel cancellation ended","openapi":"api-reference/public-api.yaml POST /v1/hotel_cancel_status","href":"/api/hotel-cancel-status"}]},{"group":"Cars","pages":[{"title":"car-search","sidebarTitle":"/v1/car_search","openapi":"api-reference/public-api.yaml POST /v1/car_search","href":"/api/car-search"},{"title":"car-cancel-preview","sidebarTitle":"/v1/car_cancel_preview","description":"Preview the cost of cancelling a car rental booking","openapi":"api-reference/public-api.yaml POST /v1/car_cancel_preview","href":"/api/car-cancel-preview"},{"title":"car-cancel-commit","sidebarTitle":"/v1/car_cancel_commit","openapi":"api-reference/public-api.yaml POST /v1/car_cancel_commit","href":"/api/car-cancel-commit"},{"title":"car-cancel-status","sidebarTitle":"/v1/car_cancel_status","openapi":"api-reference/public-api.yaml POST /v1/car_cancel_status","href":"/api/car-cancel-status"}]},{"group":"Trip \u0026 Payment","pages":[{"title":"trip","sidebarTitle":"/v1/trip","openapi":"api-reference/public-api.yaml POST /v1/trip","href":"/api/trip"},{"group":"Ancillaries","pages":[{"title":"select-ancillaries","sidebarTitle":"/v1/select_ancillaries","openapi":"api-reference/public-api.yaml POST /v1/select_ancillaries","href":"/api/select-ancillaries"},{"title":"trip ancillaries","sidebarTitle":"/v1/trip/{trip_id}/ancillaries","openapi":"api-reference/public-api.yaml GET /v1/trip/{trip_id}/ancillaries","href":"/api/trip/ancillaries"}]},{"title":"checkout","sidebarTitle":"/v1/checkout","openapi":"api-reference/public-api.yaml POST /v1/checkout","href":"/api/checkout"},{"title":"agent-payment submit","sidebarTitle":"/v1/agent_payment/submit","openapi":"api-reference/public-api.yaml POST /v1/agent_payment/submit","href":"/api/agent-payment/submit"},{"title":"trip-status","sidebarTitle":"/v1/trip/{trip_id}","openapi":"api-reference/public-api.yaml GET /v1/trip/{trip_id}","href":"/api/trip-status"},{"title":"get-booking","sidebarTitle":"/v1/get_booking","openapi":"api-reference/public-api.yaml POST /v1/get_booking","href":"/api/get-booking"}]},{"group":"Marketing claim","tag":"Preview","pages":[{"title":"best-price-guarantee","sidebarTitle":"/v1/best_price_guarantee","openapi":"api-reference/public-api.yaml POST /v1/best_price_guarantee","href":"/api/best-price-guarantee"},{"title":"best-price-guarantee-status","sidebarTitle":"/v1/best_price_guarantee/{id}","openapi":"api-reference/public-api.yaml GET /v1/best_price_guarantee/{id}","href":"/api/best-price-guarantee-status"}]},{"group":"Webhooks","pages":[{"title":"webhooks register","sidebarTitle":"/v1/webhooks","openapi":"api-reference/public-api.yaml POST /v1/webhooks","href":"/api/webhooks/register"},{"title":"webhooks list","sidebarTitle":"/v1/webhooks","openapi":"api-reference/public-api.yaml GET /v1/webhooks","href":"/api/webhooks/list"},{"title":"webhooks get","sidebarTitle":"/v1/webhooks/{id}","openapi":"api-reference/public-api.yaml GET /v1/webhooks/{id}","href":"/api/webhooks/get"},{"title":"webhooks delete","sidebarTitle":"/v1/webhooks/{id}","openapi":"api-reference/public-api.yaml DELETE /v1/webhooks/{id}","href":"/api/webhooks/delete"},{"title":"webhooks test","sidebarTitle":"/v1/webhooks/{id}/test","openapi":"api-reference/public-api.yaml POST /v1/webhooks/{id}/test","href":"/api/webhooks/test"},{"title":"webhooks deliveries","sidebarTitle":"/v1/webhooks/{id}/deliveries","openapi":"api-reference/public-api.yaml GET /v1/webhooks/{id}/deliveries","href":"/api/webhooks/deliveries"},{"title":"webhooks replay","sidebarTitle":"/v1/webhooks/{id}/deliveries/{delivery_id}/replay","openapi":"api-reference/public-api.yaml POST /v1/webhooks/{id}/deliveries/{delivery_id}/replay","href":"/api/webhooks/replay"}]},{"group":"Other endpoints","pages":[{"title":"flight-schedule","sidebarTitle":"/v1/flight_schedule","openapi":"api-reference/public-api.yaml POST /v1/flight_schedule","href":"/api/flight-schedule"},{"title":"trip payment-attempts","sidebarTitle":"/v1/trip/{trip_id}/payment_attempts/{payment_attempt_id}","openapi":"api-reference/public-api.yaml GET /v1/trip/{trip_id}/payment_attempts/{payment_attempt_id}","href":"/api/trip/payment-attempts"}]}]}]},"title":"car-search - Jinko Platform","buildId":"dpl_849ArpqvBiCczQiT1Y1stNGpbqHT","deploymentId":"dpl_849ArpqvBiCczQiT1Y1stNGpbqHT","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-Bbp7I60D.js","utils-C3RIvJha.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-DqD-vLt8.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-B31Loprg.js","snippetPresets-DKpk-b8t.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-Cj65AhOR.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-BXtn5gcC.js","shallow-RY2b03Cp.js","getApiPlaygroundDisplay-B0jeiPk3.js","CodeSnippet-CYgBjjwn.js","CodeSnippets-DOngDrYB.js","Page-n7I5XbKb.js","getPastedJson-DRQbJx-T.js","icon-CQiQCicY.js","MethodPill-BKTLdNtu.js","DuplicateIcon-B9jpAdat.js","createIcon-DCddRrXv.js","DynamicMarkdown-a8hUKrw6.js","SectionHeading-eECVV2eH.js","axios-vUo_bRtp.js","Markdown--GF7ZIpf.js","clsx-DZLdJUrt.js","lib--scc4DXi.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-2LoAhjKH.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-Zwc0ZncM.js"]}