{"openapi":"3.1.0","info":{"title":"Clasificar API V2","version":"2.0.0","description":"V1 and V2 share account allowances and RPM across all keys. Usage.byVersion separates accepted units without providing extra quotas; v1 is omitted when unused. Custom uses a monthly Basic cap, a total monthly module hard limit and one configurable ARS module price (default ARS 550). Existing consumed module periods retain their frozen prices and included units. GET vehicle consumes one plate query on every accepted call, including cached results and found:false. POST modules consumes one module query per requested module and zero plate queries. Exact active sets are reused per account/environment/plate without extra consumption; different sets run independently; terminal repeats are new requests. Polling and account endpoints consume only account RPM. Idempotency-Key is not required. Monthly and daily boundaries use the account timezone. Sandbox uses synthetic data and separate counters. Optional Basic codia/sheet/tires/onMiss=search require a paid or Custom plan; classification/debug are available on Free. Webhooks deliver at least once; deduplicate by event id. Signing: HMAC-SHA256(secret, timestamp + \".\" + exact body), as v1=<hex> in x-clasificar-signature, with x-clasificar-timestamp. Transport event header uses the v2. prefix; the JSON type has no prefix."},"servers":[{"url":"https://api.clasific.ar"},{"url":"https://sandbox.clasific.ar"}],"components":{"securitySchemes":{"ApiKey":{"type":"apiKey","in":"header","name":"x-api-key"}},"schemas":{"VehicleBasicResponse":{"type":"object","additionalProperties":false,"required":["success","data"],"properties":{"success":{"type":"boolean","const":true},"data":{"type":"object","additionalProperties":false,"required":["plate","make","model","year","firstRegistered","totalOwners","currentOwners","currentLocation","locations","sourceDate","modelImage"],"properties":{"plate":{"type":"string"},"make":{"type":"string"},"model":{"type":"string"},"year":{"type":["integer","null"]},"firstRegistered":{"type":["string","null"]},"totalOwners":{"type":"integer"},"currentOwners":{"type":"integer"},"currentLocation":{"type":"object","additionalProperties":false,"required":["city","province"],"properties":{"city":{"type":["string","null"]},"province":{"type":["string","null"]}}},"locations":{"type":"array","items":{"type":"string"}},"sourceDate":{"type":"string","description":"Date of the vehicle information; retained for data freshness."},"modelImage":{"type":["string","null"]},"codia":{"oneOf":[{"$ref":"#/components/schemas/VehicleCodiaLookup"},{"type":"null"}]},"sheet":{"oneOf":[{"$ref":"#/components/schemas/VehicleSheetLookup"},{"type":"null"}]},"classification":{"type":"object","additionalProperties":false,"required":["vehicleType","bodyType","vehicleCategory","confidence","approximateMatch","description"],"properties":{"vehicleType":{"type":["string","null"]},"bodyType":{"type":["string","null"]},"vehicleCategory":{"type":"string","enum":["auto","camioneta","utilitario","camion","moto","otro","unknown"]},"confidence":{"type":"string","enum":["high","medium","low","unavailable"]},"approximateMatch":{"type":["boolean","null"]},"description":{"type":["string","null"]}}},"tires":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["size","confidence"],"properties":{"size":{"type":"string"},"confidence":{"type":"string","enum":["high","medium","low"]}}}},"vehicleType":{"type":"string","description":"Synthetic vehicle type in sandbox responses."},"sandbox":{"type":"boolean","const":true},"scenario":{"type":"string","description":"Sandbox scenario."},"debug":{"type":"object","description":"Optional sanitized diagnostic metadata returned only when debug=true. Intended for troubleshooting, outside the stable business-data contract. Never includes credentials, providers, internal URLs, snapshots or raw responses.","additionalProperties":true}}}}},"VehicleCodiaCandidate":{"type":"object","additionalProperties":false,"required":["codia","brandName","familyName","versionName","year"],"properties":{"codia":{"type":"string"},"brandName":{"type":"string"},"familyName":{"type":["string","null"]},"versionName":{"type":"string"},"year":{"type":"integer"}}},"VehicleCodiaLookup":{"type":"object","additionalProperties":false,"required":["status","requestedYear","bestCandidate"],"properties":{"status":{"type":"string","enum":["exact_match","candidates","no_match","brand_not_found","family_not_found"]},"requestedYear":{"type":["integer","null"]},"bestCandidate":{"oneOf":[{"$ref":"#/components/schemas/VehicleCodiaCandidate"},{"type":"null"}],"description":"Leading vehicle identity, retained for v1 compatibility. Only exact_match confirms the selected version; candidates means this identity remains tentative."}}},"VehicleSheetCandidate":{"type":"object","additionalProperties":false,"required":["brandName","familyName","versionName","year"],"properties":{"brandName":{"type":"string"},"familyName":{"type":["string","null"]},"versionName":{"type":"string"},"year":{"type":"integer"}}},"VehicleSheetSpecification":{"type":"object","additionalProperties":false,"required":["market","make","model","version","year","categories"],"properties":{"market":{"type":"string","const":"AR"},"make":{"type":"string"},"model":{"type":"string"},"year":{"type":"integer"},"categories":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["key","label","fields"],"properties":{"key":{"type":"string"},"label":{"type":"string"},"fields":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["label","value"],"properties":{"label":{"type":"string"},"value":{"type":"string","description":"Technical value with original units and qualifications."}}}}}}},"version":{"type":"string"}}},"VehicleSheetCommonSpecification":{"type":"object","additionalProperties":false,"required":["market","make","model","year","categories"],"properties":{"market":{"type":"string","const":"AR"},"make":{"type":"string"},"model":{"type":"string"},"year":{"type":"integer"},"categories":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["key","label","fields"],"properties":{"key":{"type":"string"},"label":{"type":"string"},"fields":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["label","value"],"properties":{"label":{"type":"string"},"value":{"type":"string","description":"Technical value with original units and qualifications."}}}}}}}},"description":"Partial technical values identical and explicitly documented in every compatible version of the same model/year. Omitted when identity is unresolved, data contradicts itself, or there is no useful agreement. Does not identify a trim or imply a complete specification."},"VehicleSheetLookup":{"type":"object","additionalProperties":false,"required":["market","status","requestedYear","bestCandidate","specification","diagnostics"],"properties":{"market":{"type":"string","const":"AR"},"status":{"type":"string","enum":["exact_match","candidates","no_match","brand_not_found","family_not_found"]},"requestedYear":{"type":["integer","null"]},"bestCandidate":{"oneOf":[{"$ref":"#/components/schemas/VehicleSheetCandidate"},{"type":"null"}],"description":"Leading identity retained for v1 compatibility; tentative unless status is exact_match."},"specification":{"oneOf":[{"$ref":"#/components/schemas/VehicleSheetSpecification"},{"type":"null"}],"description":"Full technical specification only for exact_match; null otherwise."},"commonSpecification":{"$ref":"#/components/schemas/VehicleSheetCommonSpecification"},"diagnostics":{"type":"object","additionalProperties":false,"required":["reason"],"properties":{"reason":{"type":"string","description":"Stable description of the result or data availability."},"code":{"type":"string","enum":["INVALID_YEAR","BRAND_NOT_COVERED","CATALOG_UNAVAILABLE","YEAR_NOT_AVAILABLE","ATTRIBUTE_CONFLICT"]}}}}},"Vehicle":{"type":"object","additionalProperties":false,"properties":{"success":{"type":"boolean","const":true},"found":{"type":"boolean"},"data":{"anyOf":[{"type":"object","additionalProperties":false,"required":["plate","make","model","year","firstRegistered","totalOwners","currentOwners","currentLocation","locations","sourceDate","modelImage"],"properties":{"plate":{"type":"string"},"make":{"type":"string"},"model":{"type":"string"},"year":{"type":["integer","null"]},"firstRegistered":{"type":["string","null"]},"totalOwners":{"type":"integer"},"currentOwners":{"type":"integer"},"currentLocation":{"type":"object","additionalProperties":false,"required":["city","province"],"properties":{"city":{"type":["string","null"]},"province":{"type":["string","null"]}}},"locations":{"type":"array","items":{"type":"string"}},"sourceDate":{"type":"string","description":"Date of the vehicle information; retained for data freshness."},"modelImage":{"type":["string","null"]},"codia":{"oneOf":[{"$ref":"#/components/schemas/VehicleCodiaLookup"},{"type":"null"}]},"sheet":{"oneOf":[{"$ref":"#/components/schemas/VehicleSheetLookup"},{"type":"null"}]},"classification":{"type":"object","additionalProperties":false,"required":["vehicleType","bodyType","vehicleCategory","confidence","approximateMatch","description"],"properties":{"vehicleType":{"type":["string","null"]},"bodyType":{"type":["string","null"]},"vehicleCategory":{"type":"string","enum":["auto","camioneta","utilitario","camion","moto","otro","unknown"]},"confidence":{"type":"string","enum":["high","medium","low","unavailable"]},"approximateMatch":{"type":["boolean","null"]},"description":{"type":["string","null"]}}},"tires":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["size","confidence"],"properties":{"size":{"type":"string"},"confidence":{"type":"string","enum":["high","medium","low"]}}}},"vehicleType":{"type":"string","description":"Synthetic vehicle type in sandbox responses."},"sandbox":{"type":"boolean","const":true},"scenario":{"type":"string","description":"Sandbox scenario."},"debug":{"type":"object","description":"Optional sanitized diagnostic metadata returned only when debug=true. Intended for troubleshooting, outside the stable business-data contract. Never includes credentials, providers, internal URLs, snapshots or raw responses.","additionalProperties":true}}},{"type":"null"}]}},"required":["success","found","data"]},"FinesData":{"type":"object","additionalProperties":false,"properties":{"total":{"type":"integer","minimum":0},"amountTotal":{"type":"number"},"currency":{"const":"ARS","type":"string"},"items":{"type":"array","items":{"type":"object","additionalProperties":false,"properties":{"date":{"type":["string","null"]},"amount":{"type":["number","null"]},"status":{"type":"string"},"authority":{"type":["string","null"]},"reference":{"type":["string","null"]},"description":{"type":["string","null"]},"jurisdiction":{"type":"string"},"dueDate":{"type":["string","null"]},"discountedAmount":{"type":["number","null"]}},"required":["date","amount","status","authority","reference","description","jurisdiction","dueDate","discountedAmount"]}}},"required":["total","amountTotal","currency","items"]},"VtvData":{"type":"object","additionalProperties":false,"properties":{"total":{"type":"integer","minimum":0},"items":{"type":"array","items":{"type":"object","additionalProperties":false,"properties":{"type":{"type":"string"},"date":{"type":["string","null"]},"sticker":{"type":["string","null"]},"inspectionType":{"type":"string","enum":["inspection","reinspection","unknown"]},"detail":{"type":["string","null"]},"result":{"type":"string","enum":["approved","conditional","rejected","expired","unknown"]},"certificate":{"type":["string","null"]},"jurisdiction":{"type":"string"},"facility":{"type":["string","null"]},"dueDate":{"type":["string","null"]}},"required":["type","date","sticker","inspectionType","detail","result","certificate","jurisdiction","facility","dueDate"]}}},"required":["total","items"]},"TaxDebtData":{"type":"object","additionalProperties":false,"properties":{"total":{"type":"integer","minimum":0},"amountTotal":{"type":"number"},"currency":{"const":"ARS","type":"string"},"items":{"type":"array","items":{"type":"object","additionalProperties":false,"properties":{"period":{"type":["string","null"]},"description":{"type":["string","null"]},"dueDate":{"type":["string","null"]},"amount":{"type":["number","null"]},"updatedAmount":{"type":["number","null"]},"status":{"type":"string"},"jurisdiction":{"type":"string"}},"required":["period","description","dueDate","amount","updatedAmount","status","jurisdiction"]}}},"required":["total","amountTotal","currency","items"]},"GncData":{"type":"object","additionalProperties":false,"properties":{"total":{"type":"integer","minimum":0},"items":{"type":"array","items":{"type":"object","additionalProperties":false,"properties":{"operationDate":{"type":["string","null"]},"workshop":{"type":["string","null"]},"workshopTaxId":{"type":["string","null"]},"workshopCode":{"type":["string","null"]},"sticker":{"type":["string","null"]},"previousSticker":{"type":["string","null"]}},"required":["operationDate","workshop","workshopTaxId","workshopCode","sticker","previousSticker"]}}},"required":["total","items"]},"Operation":{"oneOf":[{"type":"object","additionalProperties":false,"properties":{"id":{"type":"string"},"kind":{"const":"modules","type":"string"},"status":{"type":"string","enum":["queued","processing","completed","partial","failed"]},"plate":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"modules":{"type":"object","additionalProperties":false,"properties":{"fines":{"type":"object","additionalProperties":false,"properties":{"status":{"type":"string","enum":["queued","processing","completed","partial","failed"]},"data":{"anyOf":[{"$ref":"#/components/schemas/FinesData"},{"type":"null"}]},"error":{"anyOf":[{"type":"object","additionalProperties":false,"properties":{"code":{"type":"string","enum":["module_unavailable"]},"message":{"type":"string"},"retryable":{"type":"boolean"}},"required":["code","message","retryable"]},{"type":"null"}]},"warnings":{"type":"array","items":{"type":"object","additionalProperties":false,"properties":{"code":{"const":"reduced_coverage","type":"string"},"message":{"type":"string"}},"required":["code","message"]}}},"required":["status","data","error"]},"vtv":{"type":"object","additionalProperties":false,"properties":{"status":{"type":"string","enum":["queued","processing","completed","partial","failed"]},"data":{"anyOf":[{"$ref":"#/components/schemas/VtvData"},{"type":"null"}]},"error":{"anyOf":[{"type":"object","additionalProperties":false,"properties":{"code":{"type":"string","enum":["module_unavailable"]},"message":{"type":"string"},"retryable":{"type":"boolean"}},"required":["code","message","retryable"]},{"type":"null"}]},"warnings":{"type":"array","items":{"type":"object","additionalProperties":false,"properties":{"code":{"const":"reduced_coverage","type":"string"},"message":{"type":"string"}},"required":["code","message"]}}},"required":["status","data","error"]},"tax_debt":{"type":"object","additionalProperties":false,"properties":{"status":{"type":"string","enum":["queued","processing","completed","partial","failed"]},"data":{"anyOf":[{"$ref":"#/components/schemas/TaxDebtData"},{"type":"null"}]},"error":{"anyOf":[{"type":"object","additionalProperties":false,"properties":{"code":{"type":"string","enum":["module_unavailable"]},"message":{"type":"string"},"retryable":{"type":"boolean"}},"required":["code","message","retryable"]},{"type":"null"}]},"warnings":{"type":"array","items":{"type":"object","additionalProperties":false,"properties":{"code":{"const":"reduced_coverage","type":"string"},"message":{"type":"string"}},"required":["code","message"]}}},"required":["status","data","error"]},"gnc":{"type":"object","additionalProperties":false,"properties":{"status":{"type":"string","enum":["queued","processing","completed","partial","failed"]},"data":{"anyOf":[{"$ref":"#/components/schemas/GncData"},{"type":"null"}]},"error":{"anyOf":[{"type":"object","additionalProperties":false,"properties":{"code":{"type":"string","enum":["module_unavailable"]},"message":{"type":"string"},"retryable":{"type":"boolean"}},"required":["code","message","retryable"]},{"type":"null"}]},"warnings":{"type":"array","items":{"type":"object","additionalProperties":false,"properties":{"code":{"const":"reduced_coverage","type":"string"},"message":{"type":"string"}},"required":["code","message"]}}},"required":["status","data","error"]}},"required":[]}},"required":["id","kind","status","plate","createdAt","updatedAt","modules"]},{"type":"object","additionalProperties":false,"properties":{"id":{"type":"string"},"kind":{"const":"vehicle","type":"string"},"status":{"type":"string","enum":["queued","processing","completed","partial","failed"]},"plate":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"result":{"anyOf":[{"$ref":"#/components/schemas/Vehicle"},{"type":"null"},{"type":"object","additionalProperties":false,"properties":{"error":{"type":"object","additionalProperties":false,"properties":{"code":{"type":"string"},"message":{"type":"string"},"retryable":{"type":"boolean"}},"required":["code","message","retryable"]}},"required":["error"]}]}},"required":["id","kind","status","plate","createdAt","updatedAt","result"]}]},"Error":{"type":"object","additionalProperties":false,"properties":{"error":{"type":"object","additionalProperties":false,"properties":{"code":{"type":"string","enum":["invalid_api_key","access_denied","invalid_plate","invalid_request","unsupported_module","duplicate_module","module_not_enabled","quota_exceeded","rate_limit_exceeded","operation_not_found","temporarily_unavailable","internal_error"]},"message":{"type":"string"},"requestId":{"type":"string"},"retryable":{"type":"boolean"},"details":{"type":"object","additionalProperties":false,"properties":{"meter":{"type":"string","enum":["plate_queries","module_queries","unique_plates","requests"]},"limit":{"type":["integer","null"],"minimum":0,"description":"null = unlimited; 0 = disabled."},"used":{"type":"integer","minimum":0},"resetAt":{"type":"string","format":"date-time"}},"required":["meter","limit","used","resetAt"]}},"required":["code","message","requestId","retryable"]}},"required":["error"]},"Usage":{"type":"object","additionalProperties":false,"properties":{"environment":{"type":"string","enum":["production","sandbox"]},"apiVersion":{"const":"v2","type":"string"},"meteringPolicyVersion":{"type":"string"},"entitlements":{"type":"object","additionalProperties":false,"properties":{"plan":{"type":"string","enum":["free","basic","growth","scale","custom"]},"plateQueriesMonthly":{"type":["integer","null"],"minimum":0,"description":"null = unlimited; 0 = disabled."},"moduleQueriesMonthly":{"type":["integer","null"],"minimum":0,"description":"null = unlimited; 0 = disabled."},"uniquePlatesDaily":{"type":["integer","null"],"minimum":0,"description":"null = unlimited; 0 = disabled."},"requestsPerMinute":{"type":["integer","null"],"minimum":0,"description":"null = unlimited; 0 = disabled."},"enabledModules":{"type":"array","items":{"type":"string","enum":["fines","vtv","tax_debt","gnc"]}},"timezone":{"type":"string"}},"required":["plan","plateQueriesMonthly","moduleQueriesMonthly","uniquePlatesDaily","requestsPerMinute","enabledModules","timezone"]},"timezone":{"type":"string"},"plateQueries":{"type":"object","additionalProperties":false,"properties":{"limit":{"type":["integer","null"],"minimum":0,"description":"null = unlimited; 0 = disabled."},"used":{"type":"integer","minimum":0},"remaining":{"type":["integer","null"],"minimum":0,"description":"null = unlimited; 0 = disabled."},"startsAt":{"type":"string","format":"date-time"},"endsAt":{"type":"string","format":"date-time"}},"required":["limit","used","remaining","startsAt","endsAt"]},"moduleQueries":{"type":"object","additionalProperties":false,"properties":{"limit":{"type":["integer","null"],"minimum":0,"description":"null = unlimited; 0 = disabled."},"used":{"type":"integer","minimum":0},"remaining":{"type":["integer","null"],"minimum":0,"description":"null = unlimited; 0 = disabled."},"startsAt":{"type":"string","format":"date-time"},"endsAt":{"type":"string","format":"date-time"}},"required":["limit","used","remaining","startsAt","endsAt"]},"uniquePlates":{"type":"object","additionalProperties":false,"properties":{"limit":{"type":["integer","null"],"minimum":0,"description":"null = unlimited; 0 = disabled."},"used":{"type":"integer","minimum":0},"remaining":{"type":["integer","null"],"minimum":0,"description":"null = unlimited; 0 = disabled."},"startsAt":{"type":"string","format":"date-time"},"endsAt":{"type":"string","format":"date-time"}},"required":["limit","used","remaining","startsAt","endsAt"]},"requests":{"type":"object","additionalProperties":false,"properties":{"limit":{"type":["integer","null"],"minimum":0,"description":"null = unlimited; 0 = disabled."},"used":{"type":"integer","minimum":0},"remaining":{"type":["integer","null"],"minimum":0,"description":"null = unlimited; 0 = disabled."},"startsAt":{"type":"string","format":"date-time"},"endsAt":{"type":"string","format":"date-time"}},"required":["limit","used","remaining","startsAt","endsAt"]},"byVersion":{"type":"object","additionalProperties":false,"properties":{"v1":{"type":"object","additionalProperties":false,"properties":{"plateQueries":{"type":"integer","minimum":0},"moduleQueries":{"type":"integer","minimum":0},"reports":{"type":"integer","minimum":0}},"required":["plateQueries","moduleQueries","reports"]},"v2":{"type":"object","additionalProperties":false,"properties":{"plateQueries":{"type":"integer","minimum":0},"moduleQueries":{"type":"integer","minimum":0},"reports":{"type":"integer","minimum":0}},"required":["plateQueries","moduleQueries","reports"]}},"required":[]},"legacyOpeningBalance":{"type":"object","additionalProperties":false,"properties":{"plateQueries":{"type":"integer","minimum":0},"source":{"const":"owner_quotas.monthly_used","type":"string"}},"required":["plateQueries","source"]},"modules":{"type":"object","additionalProperties":{"type":"object","additionalProperties":false,"properties":{"used":{"type":"integer","minimum":0},"included":{"type":"integer","minimum":0},"overage":{"type":"integer","minimum":0},"unitPriceCents":{"type":"integer","minimum":0},"currency":{"type":"string","enum":["ARS","USD"]}},"required":["used","included","overage","unitPriceCents","currency"]}}},"required":["environment","apiVersion","meteringPolicyVersion","entitlements","timezone","plateQueries","moduleQueries","uniquePlates","requests","byVersion"]},"Status":{"type":"object","additionalProperties":false,"properties":{"success":{"type":"boolean","const":true},"data":{"type":"object","additionalProperties":false,"properties":{"owner":{"type":"string"},"plan":{"type":"string"},"usage":{"$ref":"#/components/schemas/Usage"},"keys":{"type":"array","items":{"type":"object","additionalProperties":false,"properties":{"id":{"type":"string"},"prefix":{"type":"string"},"last4":{"type":"string"},"name":{"type":["string","null"]},"status":{"type":"string"},"lastUsedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time"}},"required":["id","prefix","last4","name","status","lastUsedAt","createdAt"]}}},"required":["owner","plan","usage","keys"]}},"required":["success","data"]},"Plans":{"type":"object","additionalProperties":false,"properties":{"plans":{"type":"array","items":{"type":"object","additionalProperties":false,"properties":{"id":{"type":"string","enum":["free","basic","growth","scale"]},"currency":{"const":"ARS","type":"string"},"interval":{"const":"month","type":"string"},"priceArs":{"type":"integer","minimum":0},"plateQueriesMonthly":{"type":["integer","null"],"minimum":0,"description":"null = unlimited; 0 = disabled."},"moduleQueriesMonthly":{"type":["integer","null"],"minimum":0,"description":"null = unlimited; 0 = disabled."},"uniquePlatesDaily":{"type":["integer","null"],"minimum":0,"description":"null = unlimited; 0 = disabled."},"requestsPerMinute":{"type":["integer","null"],"minimum":0,"description":"null = unlimited; 0 = disabled."},"enabledModules":{"type":"array","items":{"type":"string","enum":["fines","vtv","tax_debt","gnc"]}},"timezone":{"type":"string"}},"required":["id","currency","interval","priceArs","plateQueriesMonthly","moduleQueriesMonthly","uniquePlatesDaily","requestsPerMinute","enabledModules","timezone"]}}},"required":["plans"]},"WebhookConfig":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"enabled":{"type":"boolean"},"secret":{"type":"string"}},"required":["url","enabled","secret"]},"WebhookEvent":{"type":"object","additionalProperties":false,"properties":{"id":{"type":"string"},"type":{"type":"string","enum":["modules.completed","modules.failed","vehicle.completed","vehicle.failed","webhook.test"]},"apiVersion":{"const":"v2","type":"string"},"createdAt":{"type":"string","format":"date-time"},"data":{"oneOf":[{"$ref":"#/components/schemas/Operation"},{"type":"object","additionalProperties":false,"properties":{"message":{"type":"string"}},"required":["message"]}]}},"required":["id","type","apiVersion","createdAt","data"]},"WebhookDeliveries":{"type":"object","additionalProperties":false,"properties":{"deliveries":{"type":"array","items":{"type":"object","additionalProperties":false,"properties":{"id":{"type":"string","format":"uuid"},"event":{"type":"string"},"apiVersion":{"type":"string","enum":["v1","v2"]},"status":{"type":"string","enum":["pending","processed","failed"]},"attempts":{"type":"integer","minimum":0},"responseStatus":{"type":["number","null"]},"nextAttemptAt":{"type":"string","format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"payload":{"anyOf":[{"$ref":"#/components/schemas/WebhookEvent"},{"type":"object","description":"Existing V1 event payload, unchanged."}]}},"required":["id","event","apiVersion","status","attempts","responseStatus","nextAttemptAt","createdAt","payload"]}},"limit":{"type":"integer","minimum":0},"offset":{"type":"integer","minimum":0}},"required":["deliveries","limit","offset"]}}},"paths":{"/v2/vehicles/{plate}":{"get":{"security":[{"ApiKey":[]}],"summary":"Query basic vehicle information; consumes one plate query.","parameters":[{"name":"plate","in":"path","required":true,"schema":{"type":"string","pattern":"^(?:[A-Za-z]{3}[0-9]{3}|[A-Za-z]{2}[0-9]{3}[A-Za-z]{2})$"}},{"name":"codia","in":"query","schema":{"type":"boolean","default":false}},{"name":"sheet","in":"query","schema":{"type":"boolean","default":false}},{"name":"tires","in":"query","schema":{"type":"boolean","default":false}},{"name":"classification","in":"query","schema":{"type":"boolean","default":false}},{"name":"debug","in":"query","schema":{"type":"boolean","default":false}},{"name":"onMiss","in":"query","schema":{"type":"string","enum":["search"]},"description":"On cache miss, accept a durable operation. Poll its id without paying another plate query."},{"name":"sandbox_scenario","in":"query","schema":{"type":"string","enum":["default","clean","debt","partial","unavailable","failed"]},"description":"Sandbox only."},{"name":"sandbox_seed","in":"query","schema":{"type":"string","maxLength":128},"description":"Sandbox only."}],"responses":{"200":{"description":"One plate query.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Vehicle"}}}},"202":{"description":"One plate query. Location identifies the polling URL.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Operation"}}}},"400":{"description":"No commercial consumption on rejected requests. Accepted asynchronous execution failures are returned as operation results.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"No commercial consumption on rejected requests. Accepted asynchronous execution failures are returned as operation results.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"No commercial consumption on rejected requests. Accepted asynchronous execution failures are returned as operation results.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"No commercial consumption on rejected requests. Accepted asynchronous execution failures are returned as operation results.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"No commercial consumption on rejected requests. Accepted asynchronous execution failures are returned as operation results.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"No commercial consumption on rejected requests. Accepted asynchronous execution failures are returned as operation results.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"No commercial consumption on rejected requests. Accepted asynchronous execution failures are returned as operation results.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v2/vehicles/{plate}/modules":{"post":{"security":[{"ApiKey":[]}],"summary":"Accept or reuse an exact active module set.","parameters":[{"name":"plate","in":"path","required":true,"schema":{"type":"string","pattern":"^(?:[A-Za-z]{3}[0-9]{3}|[A-Za-z]{2}[0-9]{3}[A-Za-z]{2})$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"modules":{"type":"array","minItems":1,"maxItems":4,"uniqueItems":true,"items":{"type":"string","enum":["fines","vtv","tax_debt","gnc"]}}},"required":["modules"]}}}},"responses":{"200":{"description":"Exact active operation reused; zero additional commercial consumption.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Operation"}}}},"202":{"description":"New operation; consumes N module queries atomically.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Operation"}}}},"400":{"description":"No commercial consumption on rejected requests. Accepted asynchronous execution failures are returned as operation results.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"No commercial consumption on rejected requests. Accepted asynchronous execution failures are returned as operation results.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"No commercial consumption on rejected requests. Accepted asynchronous execution failures are returned as operation results.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"No commercial consumption on rejected requests. Accepted asynchronous execution failures are returned as operation results.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"No commercial consumption on rejected requests. Accepted asynchronous execution failures are returned as operation results.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"No commercial consumption on rejected requests. Accepted asynchronous execution failures are returned as operation results.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"No commercial consumption on rejected requests. Accepted asynchronous execution failures are returned as operation results.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v2/operations/{id}":{"get":{"security":[{"ApiKey":[]}],"summary":"Poll a durable operation; zero commercial units.","responses":{"200":{"description":"Success. Counts toward account RPM; no commercial units.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Operation"}}}},"400":{"description":"No commercial consumption on rejected requests. Accepted asynchronous execution failures are returned as operation results.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"No commercial consumption on rejected requests. Accepted asynchronous execution failures are returned as operation results.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"No commercial consumption on rejected requests. Accepted asynchronous execution failures are returned as operation results.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"No commercial consumption on rejected requests. Accepted asynchronous execution failures are returned as operation results.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"No commercial consumption on rejected requests. Accepted asynchronous execution failures are returned as operation results.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"No commercial consumption on rejected requests. Accepted asynchronous execution failures are returned as operation results.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"No commercial consumption on rejected requests. Accepted asynchronous execution failures are returned as operation results.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}]}},"/v2/status":{"get":{"security":[{"ApiKey":[]}],"summary":"Account, keys and shared V1/V2 consumption. V1 breakdown appears only when there is V1 usage.","responses":{"200":{"description":"Success. Counts toward account RPM; no commercial units.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Status"}}}},"400":{"description":"No commercial consumption on rejected requests. Accepted asynchronous execution failures are returned as operation results.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"No commercial consumption on rejected requests. Accepted asynchronous execution failures are returned as operation results.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"No commercial consumption on rejected requests. Accepted asynchronous execution failures are returned as operation results.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"No commercial consumption on rejected requests. Accepted asynchronous execution failures are returned as operation results.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"No commercial consumption on rejected requests. Accepted asynchronous execution failures are returned as operation results.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"No commercial consumption on rejected requests. Accepted asynchronous execution failures are returned as operation results.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"No commercial consumption on rejected requests. Accepted asynchronous execution failures are returned as operation results.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v2/usage":{"get":{"security":[{"ApiKey":[]}],"summary":"Effective entitlements and usage; this request is included in RPM.","responses":{"200":{"description":"Success. Counts toward account RPM; no commercial units.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Usage"}}}},"400":{"description":"No commercial consumption on rejected requests. Accepted asynchronous execution failures are returned as operation results.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"No commercial consumption on rejected requests. Accepted asynchronous execution failures are returned as operation results.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"No commercial consumption on rejected requests. Accepted asynchronous execution failures are returned as operation results.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"No commercial consumption on rejected requests. Accepted asynchronous execution failures are returned as operation results.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"No commercial consumption on rejected requests. Accepted asynchronous execution failures are returned as operation results.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"No commercial consumption on rejected requests. Accepted asynchronous execution failures are returned as operation results.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"No commercial consumption on rejected requests. Accepted asynchronous execution failures are returned as operation results.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v2/plans":{"get":{"summary":"Public V2 plans.","security":[],"responses":{"200":{"description":"Public catalog. Custom contracts are private.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Plans"},"example":{"plans":[{"id":"free","currency":"ARS","interval":"month","priceArs":0,"plateQueriesMonthly":200,"moduleQueriesMonthly":10,"requestsPerMinute":30,"uniquePlatesDaily":null,"enabledModules":["fines","vtv","tax_debt","gnc"],"timezone":"America/Argentina/Buenos_Aires"},{"id":"basic","currency":"ARS","interval":"month","priceArs":29000,"plateQueriesMonthly":2500,"moduleQueriesMonthly":50,"requestsPerMinute":60,"uniquePlatesDaily":null,"enabledModules":["fines","vtv","tax_debt","gnc"],"timezone":"America/Argentina/Buenos_Aires"},{"id":"growth","currency":"ARS","interval":"month","priceArs":59000,"plateQueriesMonthly":10000,"moduleQueriesMonthly":100,"requestsPerMinute":120,"uniquePlatesDaily":null,"enabledModules":["fines","vtv","tax_debt","gnc"],"timezone":"America/Argentina/Buenos_Aires"},{"id":"scale","currency":"ARS","interval":"month","priceArs":259000,"plateQueriesMonthly":null,"moduleQueriesMonthly":500,"requestsPerMinute":240,"uniquePlatesDaily":1000,"enabledModules":["fines","vtv","tax_debt","gnc"],"timezone":"America/Argentina/Buenos_Aires"}]}}}}}}},"/v2/openapi.json":{"get":{"summary":"This OpenAPI document.","security":[],"responses":{"200":{"description":"OpenAPI 3.1 document.","content":{"application/json":{"schema":{"type":"object","required":["openapi","info","paths","components"]}}}}}}},"/v2/webhooks/config":{"get":{"security":[{"ApiKey":[]}],"summary":"Get shared V1/V2 webhook configuration and signing secret for this environment.","responses":{"200":{"description":"Success. Counts toward account RPM; no commercial units.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookConfig"}}}},"400":{"description":"No commercial consumption on rejected requests. Accepted asynchronous execution failures are returned as operation results.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"No commercial consumption on rejected requests. Accepted asynchronous execution failures are returned as operation results.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"No commercial consumption on rejected requests. Accepted asynchronous execution failures are returned as operation results.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"No commercial consumption on rejected requests. Accepted asynchronous execution failures are returned as operation results.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"No commercial consumption on rejected requests. Accepted asynchronous execution failures are returned as operation results.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"No commercial consumption on rejected requests. Accepted asynchronous execution failures are returned as operation results.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"No commercial consumption on rejected requests. Accepted asynchronous execution failures are returned as operation results.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"patch":{"security":[{"ApiKey":[]}],"summary":"Update the shared V1/V2 webhook configuration for this environment.","responses":{"200":{"description":"Success. Counts toward account RPM; no commercial units.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookConfig"}}}},"400":{"description":"No commercial consumption on rejected requests. Accepted asynchronous execution failures are returned as operation results.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"No commercial consumption on rejected requests. Accepted asynchronous execution failures are returned as operation results.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"No commercial consumption on rejected requests. Accepted asynchronous execution failures are returned as operation results.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"No commercial consumption on rejected requests. Accepted asynchronous execution failures are returned as operation results.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"No commercial consumption on rejected requests. Accepted asynchronous execution failures are returned as operation results.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"No commercial consumption on rejected requests. Accepted asynchronous execution failures are returned as operation results.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"No commercial consumption on rejected requests. Accepted asynchronous execution failures are returned as operation results.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"url":{"type":["string","null"]},"enabled":{"type":"boolean"},"rotateSecret":{"type":"boolean"}},"required":[]}}}}}},"/v2/webhooks/deliveries":{"get":{"security":[{"ApiKey":[]}],"summary":"List this account’s V1 and V2 webhook deliveries for this environment.","responses":{"200":{"description":"Success. Counts toward account RPM; no commercial units.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookDeliveries"}}}},"400":{"description":"No commercial consumption on rejected requests. Accepted asynchronous execution failures are returned as operation results.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"No commercial consumption on rejected requests. Accepted asynchronous execution failures are returned as operation results.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"No commercial consumption on rejected requests. Accepted asynchronous execution failures are returned as operation results.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"No commercial consumption on rejected requests. Accepted asynchronous execution failures are returned as operation results.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"No commercial consumption on rejected requests. Accepted asynchronous execution failures are returned as operation results.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"No commercial consumption on rejected requests. Accepted asynchronous execution failures are returned as operation results.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"No commercial consumption on rejected requests. Accepted asynchronous execution failures are returned as operation results.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"parameters":[{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":25}},{"name":"offset","in":"query","schema":{"type":"integer","minimum":0,"maximum":10000,"default":0}}]}},"/v2/webhooks/test":{"post":{"security":[{"ApiKey":[]}],"summary":"Queue a test webhook; RPM only.","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{},"required":[]}}}},"responses":{"202":{"description":"Test delivery queued.","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"id":{"type":"string","format":"uuid"},"status":{"const":"pending","type":"string"}},"required":["id","status"]}}}},"400":{"description":"No commercial consumption on rejected requests. Accepted asynchronous execution failures are returned as operation results.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"No commercial consumption on rejected requests. Accepted asynchronous execution failures are returned as operation results.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"No commercial consumption on rejected requests. Accepted asynchronous execution failures are returned as operation results.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"No commercial consumption on rejected requests. Accepted asynchronous execution failures are returned as operation results.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"No commercial consumption on rejected requests. Accepted asynchronous execution failures are returned as operation results.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"No commercial consumption on rejected requests. Accepted asynchronous execution failures are returned as operation results.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"No commercial consumption on rejected requests. Accepted asynchronous execution failures are returned as operation results.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"webhooks":{"operationCompleted":{"post":{"summary":"Terminal operation event or delivery test.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookEvent"}}}},"responses":{"200":{"description":"Event acknowledged. Any 2xx is accepted."}}}}}}