{"openapi":"3.2.1","info":{"title":"abomio.de public API","version":"1.0.0","description":"Search German car subscriptions without an API key. Searches return up to 50 offer summaries per request; read full details one offer at a time. Responses use canonical vehicle names and gross monthly prices in euros. See /developers for requests, cost interpretation, attribution, and recovery. Versioning: a version changes only by adding endpoints, optional parameters or response fields; ignore unknown fields. Breaking changes get a new API-Version. Before a version or operation is removed, its responses send Deprecation, Sunset and a rel=\"deprecation\" Link header at least 90 days before the Sunset date."},"servers":[{"url":"https://abomio.de"}],"paths":{"/api/offers":{"get":{"operationId":"searchOffers","summary":"Search offers","description":"Returns 20 summaries by default, with a maximum of 50. Cursor pagination: for the next page, send next_cursor as cursor with the same customer, filters and sort; limit may change. next_cursor is null on the last page. A changed publication or result set returns 409 publication_changed; then restart without cursor. Omit unused filters; unknown parameters are rejected. q accepts up to 500 UTF-16 units before whitespace normalization. brand accepts one non-empty name, including aliases such as VW; commas are invalid. min_price must not exceed max_price. Follow status_url for current catalogue freshness and /offer.json for full offer details.","parameters":[{"name":"API-Version","in":"header","required":false,"description":"Omit to use the current version. Unsupported versions return 400.","schema":{"type":"string","enum":["1"],"default":"1"}},{"name":"customer","in":"query","required":false,"schema":{"type":"string","enum":["private","business"],"description":"Eligible customer group; defaults to private. Prices include VAT in both groups."}},{"name":"trailer_hitch","in":"query","required":false,"schema":{"type":"string","enum":["included","absent"],"description":"\"included\" keeps offers with a confirmed trailer hitch; \"absent\" keeps offers confirmed without one. Offers with unknown equipment match neither."}},{"name":"heated_seats","in":"query","required":false,"schema":{"type":"string","enum":["included","absent"],"description":"\"included\" keeps offers with a confirmed seat heating; \"absent\" keeps offers confirmed without one. Offers with unknown equipment match neither."}},{"name":"navigation","in":"query","required":false,"schema":{"type":"string","enum":["included","absent"],"description":"\"included\" keeps offers with a confirmed navigation system; \"absent\" keeps offers confirmed without one. Offers with unknown equipment match neither."}},{"name":"reversing_camera","in":"query","required":false,"schema":{"type":"string","enum":["included","absent"],"description":"\"included\" keeps offers with a confirmed reversing camera; \"absent\" keeps offers confirmed without one. Offers with unknown equipment match neither."}},{"name":"camera_360","in":"query","required":false,"schema":{"type":"string","enum":["included","absent"],"description":"\"included\" keeps offers with a confirmed 360° camera; \"absent\" keeps offers confirmed without one. Offers with unknown equipment match neither."}},{"name":"brand","in":"query","required":false,"schema":{"type":"string","maxLength":200,"pattern":"^[^,]+$","allOf":[{"pattern":"\\S","description":"One car brand, for example Volkswagen. Aliases such as VW are accepted."}]}},{"name":"fuel","in":"query","required":false,"schema":{"type":"string","enum":["elektro","benzin","diesel","hybrid","plug_in_hybrid","mild_hybrid","verbrenner","unbekannt"]}},{"name":"transmission","in":"query","required":false,"schema":{"type":"string","enum":["automatik","manuell","unbekannt"]}},{"name":"provider","in":"query","required":false,"schema":{"type":"string","enum":["sportautoplus","ichbindeinauto","drivio","kinto","europcar","miles","movme","sixtplus","mocean","finn","carfino"]}},{"name":"runtime","in":"query","required":false,"schema":{"type":"integer","maximum":9007199254740991,"exclusiveMinimum":0}},{"name":"min_price","in":"query","required":false,"schema":{"type":"number","multipleOf":0.01,"minimum":0}},{"name":"max_price","in":"query","required":false,"schema":{"type":"number","multipleOf":0.01,"minimum":0}},{"name":"min_hp","in":"query","required":false,"schema":{"type":"integer","maximum":9007199254740991,"exclusiveMinimum":0}},{"name":"min_kw","in":"query","required":false,"schema":{"type":"number","multipleOf":0.01,"exclusiveMinimum":0}},{"name":"availableOnly","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":500}},{"name":"sort","in":"query","required":false,"schema":{"type":"string","enum":["price-asc","price-desc","hp-desc","name-asc"]}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":50,"exclusiveMinimum":0,"description":"Offers per page; default 20, maximum 50."}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string","maxLength":200,"description":"Omit for the first page. For a later page, copy next_cursor from the previous page and keep the same customer, filters and sort."}}],"responses":{"200":{"description":"One page of matching offer summaries.","headers":{"API-Version":{"description":"API contract version.","schema":{"type":"string","const":"1"}},"RateLimit-Policy":{"description":"Quota per client IP in the IETF RateLimit-Policy format: 100 requests per 60 seconds. Responses from the shared cache do not count.","schema":{"type":"string","const":"\"api\";q=100;w=60"}},"Deprecation":{"description":"Sent only when this version or operation is deprecated: the deprecation date as an RFC 9745 timestamp.","schema":{"type":"string","examples":["@1798761600"]}},"Sunset":{"description":"Sent with Deprecation: the RFC 8594 removal date, at least 90 days after the first Deprecation header.","schema":{"type":"string","examples":["Sat, 01 Apr 2027 00:00:00 GMT"]}},"Link":{"description":"Sent with Deprecation: rel=\"deprecation\" links to the migration notes.","schema":{"type":"string","examples":["<https://abomio.de/developers#versionierung>; rel=\"deprecation\""]}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OfferSearchResults"}}}},"400":{"description":"Invalid query or unsupported API version. Use error.issues for invalid fields and follow error.resolution.","headers":{"API-Version":{"description":"API contract version.","schema":{"type":"string","const":"1"}},"RateLimit-Policy":{"description":"Quota per client IP in the IETF RateLimit-Policy format: 100 requests per 60 seconds. Responses from the shared cache do not count.","schema":{"type":"string","const":"\"api\";q=100;w=60"}},"Deprecation":{"description":"Sent only when this version or operation is deprecated: the deprecation date as an RFC 9745 timestamp.","schema":{"type":"string","examples":["@1798761600"]}},"Sunset":{"description":"Sent with Deprecation: the RFC 8594 removal date, at least 90 days after the first Deprecation header.","schema":{"type":"string","examples":["Sat, 01 Apr 2027 00:00:00 GMT"]}},"Link":{"description":"Sent with Deprecation: rel=\"deprecation\" links to the migration notes.","schema":{"type":"string","examples":["<https://abomio.de/developers#versionierung>; rel=\"deprecation\""]}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Search results changed. Restart without cursor.","headers":{"API-Version":{"description":"API contract version.","schema":{"type":"string","const":"1"}},"RateLimit-Policy":{"description":"Quota per client IP in the IETF RateLimit-Policy format: 100 requests per 60 seconds. Responses from the shared cache do not count.","schema":{"type":"string","const":"\"api\";q=100;w=60"}},"Deprecation":{"description":"Sent only when this version or operation is deprecated: the deprecation date as an RFC 9745 timestamp.","schema":{"type":"string","examples":["@1798761600"]}},"Sunset":{"description":"Sent with Deprecation: the RFC 8594 removal date, at least 90 days after the first Deprecation header.","schema":{"type":"string","examples":["Sat, 01 Apr 2027 00:00:00 GMT"]}},"Link":{"description":"Sent with Deprecation: rel=\"deprecation\" links to the migration notes.","schema":{"type":"string","examples":["<https://abomio.de/developers#versionierung>; rel=\"deprecation\""]}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests from this client. Wait for Retry-After, then retry.","headers":{"API-Version":{"description":"API contract version.","schema":{"type":"string","const":"1"}},"RateLimit-Policy":{"description":"Quota per client IP in the IETF RateLimit-Policy format: 100 requests per 60 seconds. Responses from the shared cache do not count.","schema":{"type":"string","const":"\"api\";q=100;w=60"}},"Deprecation":{"description":"Sent only when this version or operation is deprecated: the deprecation date as an RFC 9745 timestamp.","schema":{"type":"string","examples":["@1798761600"]}},"Sunset":{"description":"Sent with Deprecation: the RFC 8594 removal date, at least 90 days after the first Deprecation header.","schema":{"type":"string","examples":["Sat, 01 Apr 2027 00:00:00 GMT"]}},"Link":{"description":"Sent with Deprecation: rel=\"deprecation\" links to the migration notes.","schema":{"type":"string","examples":["<https://abomio.de/developers#versionierung>; rel=\"deprecation\""]}},"RateLimit":{"description":"Remaining quota and seconds until it resets, in the IETF RateLimit format.","schema":{"type":"string","examples":["\"api\";r=0;t=60"]}},"Retry-After":{"description":"Seconds before retrying.","schema":{"type":"integer","minimum":1}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Offer data is temporarily unavailable.","headers":{"API-Version":{"description":"API contract version.","schema":{"type":"string","const":"1"}},"RateLimit-Policy":{"description":"Quota per client IP in the IETF RateLimit-Policy format: 100 requests per 60 seconds. Responses from the shared cache do not count.","schema":{"type":"string","const":"\"api\";q=100;w=60"}},"Deprecation":{"description":"Sent only when this version or operation is deprecated: the deprecation date as an RFC 9745 timestamp.","schema":{"type":"string","examples":["@1798761600"]}},"Sunset":{"description":"Sent with Deprecation: the RFC 8594 removal date, at least 90 days after the first Deprecation header.","schema":{"type":"string","examples":["Sat, 01 Apr 2027 00:00:00 GMT"]}},"Link":{"description":"Sent with Deprecation: rel=\"deprecation\" links to the migration notes.","schema":{"type":"string","examples":["<https://abomio.de/developers#versionierung>; rel=\"deprecation\""]}},"Retry-After":{"description":"Seconds before retrying.","schema":{"type":"integer","minimum":1}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"default":{"description":"Request failed. Follow error.resolution.","headers":{"API-Version":{"description":"API contract version.","schema":{"type":"string","const":"1"}},"RateLimit-Policy":{"description":"Quota per client IP in the IETF RateLimit-Policy format: 100 requests per 60 seconds. Responses from the shared cache do not count.","schema":{"type":"string","const":"\"api\";q=100;w=60"}},"Deprecation":{"description":"Sent only when this version or operation is deprecated: the deprecation date as an RFC 9745 timestamp.","schema":{"type":"string","examples":["@1798761600"]}},"Sunset":{"description":"Sent with Deprecation: the RFC 8594 removal date, at least 90 days after the first Deprecation header.","schema":{"type":"string","examples":["Sat, 01 Apr 2027 00:00:00 GMT"]}},"Link":{"description":"Sent with Deprecation: rel=\"deprecation\" links to the migration notes.","schema":{"type":"string","examples":["<https://abomio.de/developers#versionierung>; rel=\"deprecation\""]}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/offer.json":{"get":{"operationId":"getOffer","summary":"Get offer details","description":"Supply provider and id from a search result. Missing, invalid or unknown parameters return 400 invalid_query before reading offer data.","parameters":[{"name":"API-Version","in":"header","required":false,"description":"Omit to use the current version. Unsupported versions return 400.","schema":{"type":"string","enum":["1"],"default":"1"}},{"name":"provider","in":"query","required":true,"schema":{"type":"string","enum":["sportautoplus","ichbindeinauto","drivio","kinto","europcar","miles","movme","sixtplus","mocean","finn","carfino"]}},{"name":"id","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":200}}],"responses":{"200":{"description":"Vehicle, fees, subscription terms and availability.","headers":{"API-Version":{"description":"API contract version.","schema":{"type":"string","const":"1"}},"RateLimit-Policy":{"description":"Quota per client IP in the IETF RateLimit-Policy format: 100 requests per 60 seconds. Responses from the shared cache do not count.","schema":{"type":"string","const":"\"api\";q=100;w=60"}},"Deprecation":{"description":"Sent only when this version or operation is deprecated: the deprecation date as an RFC 9745 timestamp.","schema":{"type":"string","examples":["@1798761600"]}},"Sunset":{"description":"Sent with Deprecation: the RFC 8594 removal date, at least 90 days after the first Deprecation header.","schema":{"type":"string","examples":["Sat, 01 Apr 2027 00:00:00 GMT"]}},"Link":{"description":"Sent with Deprecation: rel=\"deprecation\" links to the migration notes.","schema":{"type":"string","examples":["<https://abomio.de/developers#versionierung>; rel=\"deprecation\""]}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Offer"}}}},"400":{"description":"Invalid query or unsupported API version. Use error.issues for invalid fields and follow error.resolution.","headers":{"API-Version":{"description":"API contract version.","schema":{"type":"string","const":"1"}},"RateLimit-Policy":{"description":"Quota per client IP in the IETF RateLimit-Policy format: 100 requests per 60 seconds. Responses from the shared cache do not count.","schema":{"type":"string","const":"\"api\";q=100;w=60"}},"Deprecation":{"description":"Sent only when this version or operation is deprecated: the deprecation date as an RFC 9745 timestamp.","schema":{"type":"string","examples":["@1798761600"]}},"Sunset":{"description":"Sent with Deprecation: the RFC 8594 removal date, at least 90 days after the first Deprecation header.","schema":{"type":"string","examples":["Sat, 01 Apr 2027 00:00:00 GMT"]}},"Link":{"description":"Sent with Deprecation: rel=\"deprecation\" links to the migration notes.","schema":{"type":"string","examples":["<https://abomio.de/developers#versionierung>; rel=\"deprecation\""]}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Offer not found. Search again for a current offer.","headers":{"API-Version":{"description":"API contract version.","schema":{"type":"string","const":"1"}},"RateLimit-Policy":{"description":"Quota per client IP in the IETF RateLimit-Policy format: 100 requests per 60 seconds. Responses from the shared cache do not count.","schema":{"type":"string","const":"\"api\";q=100;w=60"}},"Deprecation":{"description":"Sent only when this version or operation is deprecated: the deprecation date as an RFC 9745 timestamp.","schema":{"type":"string","examples":["@1798761600"]}},"Sunset":{"description":"Sent with Deprecation: the RFC 8594 removal date, at least 90 days after the first Deprecation header.","schema":{"type":"string","examples":["Sat, 01 Apr 2027 00:00:00 GMT"]}},"Link":{"description":"Sent with Deprecation: rel=\"deprecation\" links to the migration notes.","schema":{"type":"string","examples":["<https://abomio.de/developers#versionierung>; rel=\"deprecation\""]}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests from this client. Wait for Retry-After, then retry.","headers":{"API-Version":{"description":"API contract version.","schema":{"type":"string","const":"1"}},"RateLimit-Policy":{"description":"Quota per client IP in the IETF RateLimit-Policy format: 100 requests per 60 seconds. Responses from the shared cache do not count.","schema":{"type":"string","const":"\"api\";q=100;w=60"}},"Deprecation":{"description":"Sent only when this version or operation is deprecated: the deprecation date as an RFC 9745 timestamp.","schema":{"type":"string","examples":["@1798761600"]}},"Sunset":{"description":"Sent with Deprecation: the RFC 8594 removal date, at least 90 days after the first Deprecation header.","schema":{"type":"string","examples":["Sat, 01 Apr 2027 00:00:00 GMT"]}},"Link":{"description":"Sent with Deprecation: rel=\"deprecation\" links to the migration notes.","schema":{"type":"string","examples":["<https://abomio.de/developers#versionierung>; rel=\"deprecation\""]}},"RateLimit":{"description":"Remaining quota and seconds until it resets, in the IETF RateLimit format.","schema":{"type":"string","examples":["\"api\";r=0;t=60"]}},"Retry-After":{"description":"Seconds before retrying.","schema":{"type":"integer","minimum":1}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Offer data is temporarily unavailable.","headers":{"API-Version":{"description":"API contract version.","schema":{"type":"string","const":"1"}},"RateLimit-Policy":{"description":"Quota per client IP in the IETF RateLimit-Policy format: 100 requests per 60 seconds. Responses from the shared cache do not count.","schema":{"type":"string","const":"\"api\";q=100;w=60"}},"Deprecation":{"description":"Sent only when this version or operation is deprecated: the deprecation date as an RFC 9745 timestamp.","schema":{"type":"string","examples":["@1798761600"]}},"Sunset":{"description":"Sent with Deprecation: the RFC 8594 removal date, at least 90 days after the first Deprecation header.","schema":{"type":"string","examples":["Sat, 01 Apr 2027 00:00:00 GMT"]}},"Link":{"description":"Sent with Deprecation: rel=\"deprecation\" links to the migration notes.","schema":{"type":"string","examples":["<https://abomio.de/developers#versionierung>; rel=\"deprecation\""]}},"Retry-After":{"description":"Seconds before retrying.","schema":{"type":"integer","minimum":1}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"default":{"description":"Request failed. Follow error.resolution.","headers":{"API-Version":{"description":"API contract version.","schema":{"type":"string","const":"1"}},"RateLimit-Policy":{"description":"Quota per client IP in the IETF RateLimit-Policy format: 100 requests per 60 seconds. Responses from the shared cache do not count.","schema":{"type":"string","const":"\"api\";q=100;w=60"}},"Deprecation":{"description":"Sent only when this version or operation is deprecated: the deprecation date as an RFC 9745 timestamp.","schema":{"type":"string","examples":["@1798761600"]}},"Sunset":{"description":"Sent with Deprecation: the RFC 8594 removal date, at least 90 days after the first Deprecation header.","schema":{"type":"string","examples":["Sat, 01 Apr 2027 00:00:00 GMT"]}},"Link":{"description":"Sent with Deprecation: rel=\"deprecation\" links to the migration notes.","schema":{"type":"string","examples":["<https://abomio.de/developers#versionierung>; rel=\"deprecation\""]}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/api/catalogue/refresh":{"get":{"operationId":"getStatus","summary":"Read catalogue freshness","description":"Counts reflect the latest check. fingerprint is an opaque catalogue revision, useful for detecting updates.","parameters":[{"name":"API-Version","in":"header","required":false,"description":"Omit to use the current version. Unsupported versions return 400.","schema":{"type":"string","enum":["1"],"default":"1"}}],"responses":{"200":{"description":"Catalogue freshness and counts.","headers":{"API-Version":{"description":"API contract version.","schema":{"type":"string","const":"1"}},"RateLimit-Policy":{"description":"Quota per client IP in the IETF RateLimit-Policy format: 100 requests per 60 seconds. Responses from the shared cache do not count.","schema":{"type":"string","const":"\"api\";q=100;w=60"}},"Deprecation":{"description":"Sent only when this version or operation is deprecated: the deprecation date as an RFC 9745 timestamp.","schema":{"type":"string","examples":["@1798761600"]}},"Sunset":{"description":"Sent with Deprecation: the RFC 8594 removal date, at least 90 days after the first Deprecation header.","schema":{"type":"string","examples":["Sat, 01 Apr 2027 00:00:00 GMT"]}},"Link":{"description":"Sent with Deprecation: rel=\"deprecation\" links to the migration notes.","schema":{"type":"string","examples":["<https://abomio.de/developers#versionierung>; rel=\"deprecation\""]}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Status"}}}},"400":{"description":"Invalid query or unsupported API version. Use error.issues for invalid fields and follow error.resolution.","headers":{"API-Version":{"description":"API contract version.","schema":{"type":"string","const":"1"}},"RateLimit-Policy":{"description":"Quota per client IP in the IETF RateLimit-Policy format: 100 requests per 60 seconds. Responses from the shared cache do not count.","schema":{"type":"string","const":"\"api\";q=100;w=60"}},"Deprecation":{"description":"Sent only when this version or operation is deprecated: the deprecation date as an RFC 9745 timestamp.","schema":{"type":"string","examples":["@1798761600"]}},"Sunset":{"description":"Sent with Deprecation: the RFC 8594 removal date, at least 90 days after the first Deprecation header.","schema":{"type":"string","examples":["Sat, 01 Apr 2027 00:00:00 GMT"]}},"Link":{"description":"Sent with Deprecation: rel=\"deprecation\" links to the migration notes.","schema":{"type":"string","examples":["<https://abomio.de/developers#versionierung>; rel=\"deprecation\""]}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests from this client. Wait for Retry-After, then retry.","headers":{"API-Version":{"description":"API contract version.","schema":{"type":"string","const":"1"}},"RateLimit-Policy":{"description":"Quota per client IP in the IETF RateLimit-Policy format: 100 requests per 60 seconds. Responses from the shared cache do not count.","schema":{"type":"string","const":"\"api\";q=100;w=60"}},"Deprecation":{"description":"Sent only when this version or operation is deprecated: the deprecation date as an RFC 9745 timestamp.","schema":{"type":"string","examples":["@1798761600"]}},"Sunset":{"description":"Sent with Deprecation: the RFC 8594 removal date, at least 90 days after the first Deprecation header.","schema":{"type":"string","examples":["Sat, 01 Apr 2027 00:00:00 GMT"]}},"Link":{"description":"Sent with Deprecation: rel=\"deprecation\" links to the migration notes.","schema":{"type":"string","examples":["<https://abomio.de/developers#versionierung>; rel=\"deprecation\""]}},"RateLimit":{"description":"Remaining quota and seconds until it resets, in the IETF RateLimit format.","schema":{"type":"string","examples":["\"api\";r=0;t=60"]}},"Retry-After":{"description":"Seconds before retrying.","schema":{"type":"integer","minimum":1}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Offer data is temporarily unavailable.","headers":{"API-Version":{"description":"API contract version.","schema":{"type":"string","const":"1"}},"RateLimit-Policy":{"description":"Quota per client IP in the IETF RateLimit-Policy format: 100 requests per 60 seconds. Responses from the shared cache do not count.","schema":{"type":"string","const":"\"api\";q=100;w=60"}},"Deprecation":{"description":"Sent only when this version or operation is deprecated: the deprecation date as an RFC 9745 timestamp.","schema":{"type":"string","examples":["@1798761600"]}},"Sunset":{"description":"Sent with Deprecation: the RFC 8594 removal date, at least 90 days after the first Deprecation header.","schema":{"type":"string","examples":["Sat, 01 Apr 2027 00:00:00 GMT"]}},"Link":{"description":"Sent with Deprecation: rel=\"deprecation\" links to the migration notes.","schema":{"type":"string","examples":["<https://abomio.de/developers#versionierung>; rel=\"deprecation\""]}},"Retry-After":{"description":"Seconds before retrying.","schema":{"type":"integer","minimum":1}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"default":{"description":"Request failed. Follow error.resolution.","headers":{"API-Version":{"description":"API contract version.","schema":{"type":"string","const":"1"}},"RateLimit-Policy":{"description":"Quota per client IP in the IETF RateLimit-Policy format: 100 requests per 60 seconds. Responses from the shared cache do not count.","schema":{"type":"string","const":"\"api\";q=100;w=60"}},"Deprecation":{"description":"Sent only when this version or operation is deprecated: the deprecation date as an RFC 9745 timestamp.","schema":{"type":"string","examples":["@1798761600"]}},"Sunset":{"description":"Sent with Deprecation: the RFC 8594 removal date, at least 90 days after the first Deprecation header.","schema":{"type":"string","examples":["Sat, 01 Apr 2027 00:00:00 GMT"]}},"Link":{"description":"Sent with Deprecation: rel=\"deprecation\" links to the migration notes.","schema":{"type":"string","examples":["<https://abomio.de/developers#versionierung>; rel=\"deprecation\""]}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}}},"components":{"schemas":{"Offer":{"type":"object","properties":{"customer_groups":{"type":"array","prefixItems":[{"type":"string","enum":["private","business"]}],"minItems":1,"items":{"type":"string","enum":["private","business"]}},"available":{"type":"boolean"},"costs":{"anyOf":[{"type":"array","items":{"anyOf":[{"type":"object","properties":{"label":{"type":"string","minLength":1},"amount_eur":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"note":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}]},"source_url":{"type":"string","minLength":1},"category":{"type":"string","enum":["required","optional","conditional"]},"billing":{"type":"string","enum":["once","monthly"]}},"required":["label","source_url","category","billing"],"additionalProperties":false},{"type":"object","properties":{"label":{"type":"string","minLength":1},"amount_eur":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"note":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}]},"source_url":{"type":"string","minLength":1},"category":{"type":"string","enum":["deposit"]},"billing":{"type":"string","enum":["once"]}},"required":["label","source_url","category","billing"],"additionalProperties":false}]}},{"type":"null"}]},"cost_coverage":{"anyOf":[{"type":"object","properties":{"status":{"type":"string","enum":["partial","complete"]},"source_url":{"type":"string","minLength":1}},"required":["status","source_url"],"additionalProperties":false},{"type":"null"}]},"co2_class":{"anyOf":[{"type":"string","enum":["A","B","C","D","E","F","G"]},{"type":"null"}]},"delivery_time":{"type":"string"},"eligibility_note":{"anyOf":[{"type":"string"},{"type":"null"}]},"fuel_type":{"type":"string","enum":["elektro","benzin","diesel","hybrid","plug_in_hybrid","mild_hybrid","verbrenner","unbekannt"]},"guaranteed_model":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"power_provenance":{"anyOf":[{"type":"object","properties":{"ps":{"anyOf":[{"type":"string","enum":["reported","converted"]},{"type":"null"}]},"kw":{"anyOf":[{"type":"string","enum":["reported","converted"]},{"type":"null"}]},"conflict":{"anyOf":[{"type":"boolean","enum":[true]},{"type":"null"}]}},"additionalProperties":false},{"type":"null"}]},"power_kw":{"anyOf":[{"type":"number","exclusiveMinimum":0,"maximum":3000},{"type":"null"}]},"vehicle_energy":{"anyOf":[{"type":"object","properties":{"source_url":{"type":"string","minLength":1},"standard":{"type":"string","enum":["wltp","unspecified"]},"basis":{"type":"string","enum":["combined","weighted_combined","unspecified"]},"scope":{"anyOf":[{"type":"string","enum":["vehicle","category"]},{"type":"null"}]},"conflict":{"anyOf":[{"type":"boolean","enum":[true]},{"type":"null"}]},"fuel_l_per_100km":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"electricity_kwh_per_100km":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"co2_g_per_km":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"co2_class":{"anyOf":[{"type":"string","enum":["A","B","C","D","E","F","G"]},{"type":"null"}]},"reported_consumption":{"anyOf":[{"type":"object","properties":{"value":{"type":"number","minimum":0},"unit":{"type":"string","enum":["l","kWh"]}},"required":["value","unit"],"additionalProperties":false},{"type":"null"}]},"combined":{"anyOf":[{"type":"object","properties":{"fuel_l_per_100km":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"electricity_kwh_per_100km":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"co2_g_per_km":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"co2_class":{"anyOf":[{"type":"string","enum":["A","B","C","D","E","F","G"]},{"type":"null"}]}},"additionalProperties":false},{"type":"null"}]},"depleted_battery":{"anyOf":[{"type":"object","properties":{"fuel_l_per_100km":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"co2_class":{"anyOf":[{"type":"string","enum":["A","B","C","D","E","F","G"]},{"type":"null"}]},"co2_g_per_km":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]}},"additionalProperties":false},{"type":"null"}]}},"required":["source_url","standard","basis"],"additionalProperties":false},{"type":"null"}]},"id":{"type":"string"},"included_km_per_month":{"type":"number"},"price_per_month_eur":{"type":"number"},"provider_id":{"type":"string","enum":["sportautoplus","ichbindeinauto","drivio","kinto","europcar","miles","movme","sixtplus","mocean","finn","carfino"]},"provider_name":{"type":"string"},"runtime_months":{"type":"number"},"scraped_at":{"type":"string"},"trailer_hitch":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"transmission":{"type":"string","enum":["automatik","manuell","unbekannt"]},"equipment":{"anyOf":[{"type":"object","properties":{"trailer_hitch":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"heated_seats":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"navigation":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"reversing_camera":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"camera_360":{"anyOf":[{"type":"boolean"},{"type":"null"}]}},"additionalProperties":false},{"type":"null"}]},"source_url":{"type":"string","description":"Link to the offer on abomio.de. It counts the click and redirects to the provider's page, or to the model page when the offer is no longer available. Programs that open a link to FINN or SIXT also get the model page. Link to it exactly as given."},"provider_host":{"type":"string","description":"Host of the provider page that source_url leads to, such as www.finn.com. Show it so that people know where the link goes."},"vehicle":{"type":"object","properties":{"brand":{"type":"string","maxLength":128},"model":{"type":"string"},"trim":{"type":"string"},"motor":{"type":"string"},"title":{"type":"string"},"path":{"type":"string","description":"Path of the model's comparison page on abomio.de, below /gewerbe for business-only offers. Absent when the model has no page."}},"required":["brand","model","trim","motor","title"],"additionalProperties":false},"unavailable_since":{"anyOf":[{"type":"string"},{"type":"null"}]},"changed_at":{"anyOf":[{"type":"string"},{"type":"null"}]},"battery_kwh":{"anyOf":[{"type":"number"},{"type":"null"}]},"delivery_note":{"type":"string"},"doors":{"anyOf":[{"type":"number"},{"type":"null"}]},"drive_type":{"anyOf":[{"type":"string","enum":["Allrad","Frontantrieb","Heckantrieb","Zweiradantrieb"]},{"type":"null"}]},"drive_type_conflict":{"anyOf":[{"type":"boolean","enum":[true]},{"type":"null"}]},"vehicle_range":{"anyOf":[{"type":"object","properties":{"min_km":{"type":"number","exclusiveMinimum":0,"maximum":2000},"max_km":{"type":"number","exclusiveMinimum":0,"maximum":2000},"standard":{"type":"string","enum":["wltp","unspecified"]},"basis":{"type":"string","enum":["combined","maximum","unspecified"]},"scope":{"type":"string","enum":["vehicle","category"]}},"required":["min_km","max_km","standard","basis","scope"],"additionalProperties":false},{"type":"null"}]},"excess_km_rate_eur":{"anyOf":[{"type":"number"},{"type":"null"}]},"first_seen_at":{"anyOf":[{"type":"string"},{"type":"null"}]},"horsepower_hp":{"anyOf":[{"type":"number","exclusiveMinimum":0,"maximum":3000},{"type":"null"}]},"image_url":{"type":"string"},"included_km_per_year":{"type":"number"},"max_excess_km":{"anyOf":[{"type":"number"},{"type":"null"}]},"seats":{"anyOf":[{"type":"number"},{"type":"null"}]},"changes":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"kind":{"type":"string","enum":["new","returned"]}},"required":["kind"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["price"]},"previous":{"type":"number"},"current":{"type":"number"}},"required":["kind","previous","current"],"additionalProperties":false}]}}},"required":["customer_groups","available","delivery_time","fuel_type","id","included_km_per_month","price_per_month_eur","provider_id","provider_name","runtime_months","scraped_at","transmission","source_url","provider_host","vehicle","delivery_note","image_url","included_km_per_year","changes"],"additionalProperties":false},"OfferSearchResults":{"type":"object","properties":{"published_at":{"type":"string","description":"Last change to the published offers."},"status_url":{"type":"string","enum":["/api/catalogue/refresh","/api/catalogue/refresh?customer=business"]},"total":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Matching offers on all pages."},"limit":{"type":"integer","maximum":50,"exclusiveMinimum":0,"description":"Offers per page; default 20, maximum 50."},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Send as cursor to read the next page. null when there are no more pages. Treat it as opaque."},"offers":{"type":"array","items":{"type":"object","properties":{"customer_groups":{"type":"array","prefixItems":[{"type":"string","enum":["private","business"]}],"minItems":1,"items":{"type":"string","enum":["private","business"]}},"available":{"type":"boolean"},"costs":{"anyOf":[{"type":"array","items":{"anyOf":[{"type":"object","properties":{"label":{"type":"string","minLength":1},"amount_eur":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"note":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}]},"source_url":{"type":"string","minLength":1},"category":{"type":"string","enum":["required","optional","conditional"]},"billing":{"type":"string","enum":["once","monthly"]}},"required":["label","source_url","category","billing"],"additionalProperties":false},{"type":"object","properties":{"label":{"type":"string","minLength":1},"amount_eur":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"note":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}]},"source_url":{"type":"string","minLength":1},"category":{"type":"string","enum":["deposit"]},"billing":{"type":"string","enum":["once"]}},"required":["label","source_url","category","billing"],"additionalProperties":false}]}},{"type":"null"}]},"cost_coverage":{"anyOf":[{"type":"object","properties":{"status":{"type":"string","enum":["partial","complete"]},"source_url":{"type":"string","minLength":1}},"required":["status","source_url"],"additionalProperties":false},{"type":"null"}]},"co2_class":{"anyOf":[{"type":"string","enum":["A","B","C","D","E","F","G"]},{"type":"null"}]},"delivery_time":{"type":"string"},"eligibility_note":{"anyOf":[{"type":"string"},{"type":"null"}]},"fuel_type":{"type":"string","enum":["elektro","benzin","diesel","hybrid","plug_in_hybrid","mild_hybrid","verbrenner","unbekannt"]},"guaranteed_model":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"power_provenance":{"anyOf":[{"type":"object","properties":{"ps":{"anyOf":[{"type":"string","enum":["reported","converted"]},{"type":"null"}]},"kw":{"anyOf":[{"type":"string","enum":["reported","converted"]},{"type":"null"}]},"conflict":{"anyOf":[{"type":"boolean","enum":[true]},{"type":"null"}]}},"additionalProperties":false},{"type":"null"}]},"power_kw":{"anyOf":[{"type":"number","exclusiveMinimum":0,"maximum":3000},{"type":"null"}]},"vehicle_energy":{"anyOf":[{"type":"object","properties":{"source_url":{"type":"string","minLength":1},"standard":{"type":"string","enum":["wltp","unspecified"]},"basis":{"type":"string","enum":["combined","weighted_combined","unspecified"]},"scope":{"anyOf":[{"type":"string","enum":["vehicle","category"]},{"type":"null"}]},"conflict":{"anyOf":[{"type":"boolean","enum":[true]},{"type":"null"}]},"fuel_l_per_100km":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"electricity_kwh_per_100km":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"co2_g_per_km":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"co2_class":{"anyOf":[{"type":"string","enum":["A","B","C","D","E","F","G"]},{"type":"null"}]},"reported_consumption":{"anyOf":[{"type":"object","properties":{"value":{"type":"number","minimum":0},"unit":{"type":"string","enum":["l","kWh"]}},"required":["value","unit"],"additionalProperties":false},{"type":"null"}]},"combined":{"anyOf":[{"type":"object","properties":{"fuel_l_per_100km":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"electricity_kwh_per_100km":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"co2_g_per_km":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"co2_class":{"anyOf":[{"type":"string","enum":["A","B","C","D","E","F","G"]},{"type":"null"}]}},"additionalProperties":false},{"type":"null"}]},"depleted_battery":{"anyOf":[{"type":"object","properties":{"fuel_l_per_100km":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"co2_class":{"anyOf":[{"type":"string","enum":["A","B","C","D","E","F","G"]},{"type":"null"}]},"co2_g_per_km":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]}},"additionalProperties":false},{"type":"null"}]}},"required":["source_url","standard","basis"],"additionalProperties":false},{"type":"null"}]},"id":{"type":"string"},"included_km_per_month":{"type":"number"},"price_per_month_eur":{"type":"number"},"provider_id":{"type":"string","enum":["sportautoplus","ichbindeinauto","drivio","kinto","europcar","miles","movme","sixtplus","mocean","finn","carfino"]},"provider_name":{"type":"string"},"runtime_months":{"type":"number"},"scraped_at":{"type":"string"},"trailer_hitch":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"transmission":{"type":"string","enum":["automatik","manuell","unbekannt"]},"equipment":{"anyOf":[{"type":"object","properties":{"trailer_hitch":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"heated_seats":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"navigation":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"reversing_camera":{"anyOf":[{"type":"boolean"},{"type":"null"}]},"camera_360":{"anyOf":[{"type":"boolean"},{"type":"null"}]}},"additionalProperties":false},{"type":"null"}]},"source_url":{"type":"string","description":"Link to the offer on abomio.de. It counts the click and redirects to the provider's page, or to the model page when the offer is no longer available. Programs that open a link to FINN or SIXT also get the model page. Link to it exactly as given."},"provider_host":{"type":"string","description":"Host of the provider page that source_url leads to, such as www.finn.com. Show it so that people know where the link goes."},"vehicle":{"type":"object","properties":{"brand":{"type":"string","maxLength":128},"model":{"type":"string"},"trim":{"type":"string"},"motor":{"type":"string"},"title":{"type":"string"},"path":{"type":"string","description":"Path of the model's comparison page on abomio.de, below /gewerbe for business-only offers. Absent when the model has no page."}},"required":["brand","model","trim","motor","title"],"additionalProperties":false}},"required":["customer_groups","available","delivery_time","fuel_type","id","included_km_per_month","price_per_month_eur","provider_id","provider_name","runtime_months","scraped_at","transmission","source_url","provider_host","vehicle"],"additionalProperties":false}}},"required":["published_at","status_url","total","limit","next_cursor","offers"],"additionalProperties":false},"Status":{"type":"object","properties":{"fingerprint":{"type":"string"},"published_at":{"type":"string"},"checked_at":{"type":"string"},"catalogue_totals":{"type":"object","properties":{"offers":{"type":"number"},"providers":{"type":"number"}},"required":["offers","providers"],"additionalProperties":false}},"required":["fingerprint","published_at","checked_at"],"additionalProperties":false},"ErrorResponse":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invalid_query","unsupported_api_version","offer_not_found","endpoint_not_found","method_not_allowed","publication_changed","rate_limited","data_unavailable"]},"message":{"type":"string"},"resolution":{"type":"string"},"issues":{"type":"array","items":{"type":"object","properties":{"path":{"type":"array","items":{"type":"string"}},"message":{"type":"string"}},"required":["path","message"],"additionalProperties":false}},"retry_after_seconds":{"type":"integer","maximum":9007199254740991,"exclusiveMinimum":0}},"required":["code","message","resolution"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}