{"openapi":"3.1.0","info":{"title":"Inmobo Public API","version":"1.0.0","description":"Tenant-scoped property listings API. Active keys can read, create, and edit their tenant's listings. Each key is limited to 120 requests per minute."},"servers":[{"url":"https://api.inmobo.online"}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"Inmobo API key"}},"responses":{"Error":{"description":"Structured error response","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message","requestId"],"properties":{"code":{"type":"string","example":"MISSING_API_KEY"},"message":{"type":"string"},"requestId":{"type":"string","format":"uuid"}}}}}}}},"RateLimited":{"description":"More than 120 requests were made during one minute","headers":{"Retry-After":{"schema":{"type":"integer"}},"X-RateLimit-Limit":{"schema":{"type":"integer","example":120}}},"content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message","requestId"],"properties":{"code":{"type":"string","example":"MISSING_API_KEY"},"message":{"type":"string"},"requestId":{"type":"string","format":"uuid"}}}}}}}}}},"paths":{"/v1/health":{"get":{"summary":"Service health","responses":{"200":{"description":"Healthy"}}}},"/v1/me":{"get":{"summary":"Current API key","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Tenant and key metadata"},"401":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/v1/listings":{"get":{"summary":"List the current tenant's available listings","description":"Defaults to available listings. `per_page` defaults to 30 and is capped at 100.","security":[{"bearerAuth":[]}],"parameters":[{"name":"q","in":"query","schema":{"type":"string"}},{"name":"city","in":"query","schema":{"type":"string"}},{"name":"neighborhood","in":"query","schema":{"type":"string"}},{"name":"property_type","in":"query","schema":{"type":"string"}},{"name":"operation","in":"query","schema":{"enum":["VENTA","ARRIENDO","SALE","RENT"]}},{"name":"min_price","in":"query","schema":{"type":"string"}},{"name":"max_price","in":"query","schema":{"type":"string"}},{"name":"min_area","in":"query","schema":{"type":"string"}},{"name":"max_area","in":"query","schema":{"type":"string"}},{"name":"min_bedrooms","in":"query","schema":{"type":"string"}},{"name":"min_bathrooms","in":"query","schema":{"type":"string"}},{"name":"min_parking","in":"query","schema":{"type":"string"}},{"name":"amenity","in":"query","schema":{"type":"string"}},{"name":"updated_since","in":"query","schema":{"type":"string"}},{"name":"status","in":"query","schema":{"type":"string"}},{"name":"page","in":"query","schema":{"type":"string"}},{"name":"per_page","in":"query","schema":{"type":"string"}},{"name":"sort","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"Paginated listings"},"401":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/RateLimited"}}},"post":{"summary":"Create a published listing","description":"Requires an Idempotency-Key header. Media must be HTTPS URLs. Owner and portal data are not accepted.","security":[{"bearerAuth":[]}],"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["address","propertyType","operation","location","agent"],"properties":{"reference":{"type":"string"},"address":{"type":"string"},"propertyType":{"type":"string"},"operation":{"enum":["VENTA","ARRIENDO","ARRIENDO/VENTA"]},"location":{"type":"object","required":["city"],"properties":{"city":{"type":"string"},"neighborhood":{"type":"string"},"latitude":{"type":"number","nullable":true},"longitude":{"type":"number","nullable":true}}},"prices":{"type":"object","properties":{"sale":{"type":"number"},"rent":{"type":"number"},"administration":{"type":"number"}}},"media":{"type":"array","items":{"type":"object","required":["url"],"properties":{"url":{"type":"string","format":"uri"}}}},"agent":{"type":"object","description":"Either agentId or a name with phone/email."}}}}}},"responses":{"201":{"description":"Created listing"},"401":{"$ref":"#/components/responses/Error"},"409":{"$ref":"#/components/responses/Error"},"422":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/v1/listings/{identifier}":{"get":{"summary":"Listing detail by Inmobo ID","security":[{"bearerAuth":[]}],"parameters":[{"name":"identifier","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Listing"},"401":{"$ref":"#/components/responses/Error"},"404":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/RateLimited"}}},"patch":{"summary":"Edit a listing by Inmobo ID or tenant reference","security":[{"bearerAuth":[]}],"parameters":[{"name":"identifier","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"Updated listing"},"401":{"$ref":"#/components/responses/Error"},"404":{"$ref":"#/components/responses/Error"},"409":{"$ref":"#/components/responses/Error"},"422":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/v1/catalogs/cities":{"get":{"summary":"Cities","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"City catalogue"},"401":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/v1/catalogs/property-types":{"get":{"summary":"Tenant property types","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Property types"},"401":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/v1/catalogs/amenities":{"get":{"summary":"Amenities","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Amenities"},"401":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/RateLimited"}}}}}}