{"description":"Slave Read-Only \u0441\u0435\u0440\u0432\u0438\u0441 \u0432\u044b\u0431\u043e\u0440\u043a\u0438, \u0433\u0438\u0431\u0440\u0438\u0434\u043d\u043e\u0439 \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u0438 \u043f\u043e \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430\u043c \u0438 \u0430\u0441\u043f\u0435\u043a\u0442\u0430\u043c, \u043f\u043e\u0438\u0441\u043a\u0430 \u0432\u0430\u043a\u0430\u043d\u0441\u0438\u0439, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0433\u0435\u043e-\u043f\u043e\u0438\u0441\u043a\u0430 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0438 \u0432\u0430\u043a\u0430\u043d\u0441\u0438\u0439 \u0441 \u043f\u0430\u0433\u0438\u043d\u0430\u0446\u0438\u0435\u0439","endpoints":{"categories":[{"description":"\u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0441\u043f\u0438\u0441\u043e\u043a \u0432\u0441\u0435\u0445 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0439","method":"GET","path":"/categories"},{"description":"\u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043e\u0434\u043d\u0443 \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u044e \u0441\u043e \u0432\u0441\u0435\u043c\u0438 \u0435\u0451 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u043c\u0438 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u0430\u043c\u0438 (\u0441 \u0442\u0438\u043f\u0430\u043c\u0438, options \u0438 \u0444\u043b\u0430\u0433\u0430\u043c\u0438 is_required)","method":"GET","path":"/categories/<int:category_id>"}],"geo":[{"description":"\u041f\u043e\u0438\u0441\u043a \u0440\u0435\u0433\u0438\u043e\u043d\u043e\u0432 \u0438 \u0433\u043e\u0440\u043e\u0434\u043e\u0432 \u0432 \u0431\u0430\u0437\u0435 geo_regions","method":"GET","path":"/geo/regions"},{"description":"\u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e ZIP-\u043a\u043e\u0434\u0435 \u0438 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u0438\u0437 geo_zips","method":"GET","path":"/geo/zips/<zip_code>"},{"description":"\u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 UUIDs \u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0432 \u0433\u0440\u0430\u043d\u0438\u0446\u0430\u0445 \u0440\u0435\u0433\u0438\u043e\u043d\u0430 \u0441 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u043c ZIP","method":"GET","path":"/geo/objects/by-zip/<zip_code>"}],"jobs":[{"description":"\u041f\u043e\u0438\u0441\u043a, \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u044f \u0438 \u043f\u0430\u0433\u0438\u043d\u0430\u0446\u0438\u044f \u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0445 \u0432\u0430\u043a\u0430\u043d\u0441\u0438\u0439 (status = 'active')","examples":["/jobs","/jobs?type=fulltime&min_price=3000&valute=EUR","/jobs?audience=de,at&tags=python,flask","/jobs?location_type=remote","/jobs?location_type=place&lng=7.0982&lat=50.7374&radius=50&limit=10&offset=0"],"method":"GET","path":"/jobs","query_params":{"audience":"optional string (\u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435 \u0441\u0442\u0440\u0430\u043d \u0447\u0435\u0440\u0435\u0437 \u0437\u0430\u043f\u044f\u0442\u0443\u044e, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 'de,at')","end_at":"optional ISO-8601 string (end_at <= val)","lat":"float (\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u0438 location_type=place, \u0448\u0438\u0440\u043e\u0442\u0430)","limit":"integer (default: 20, max: 100)","lng":"float (\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u0438 location_type=place, \u0434\u043e\u043b\u0433\u043e\u0442\u0430)","location_type":"optional string (place|remote)","max_price":"optional numeric (\u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u0437\u0430\u0440\u043f\u043b\u0430\u0442\u0430/\u0446\u0435\u043d\u0430)","min_price":"optional numeric (\u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u0437\u0430\u0440\u043f\u043b\u0430\u0442\u0430/\u0446\u0435\u043d\u0430)","offset":"integer (default: 0)","radius":"numeric (\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u0438 location_type=place, \u0440\u0430\u0434\u0438\u0443\u0441 \u043f\u043e\u0438\u0441\u043a\u0430 \u0432 \u043a\u043c)","requirement":"optional string (\u043f\u043e\u0438\u0441\u043a \u043f\u043e \u043f\u043e\u0434\u0441\u0442\u0440\u043e\u043a\u0435 \u0432 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f\u0445, ILIKE)","start_at":"optional ISO-8601 string (start_at >= val)","tags":"optional string (\u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435 \u0442\u0435\u0433\u043e\u0432 \u0447\u0435\u0440\u0435\u0437 \u0437\u0430\u043f\u044f\u0442\u0443\u044e, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 'python,postgres')","type":"optional string (\u0442\u0438\u043f \u0432\u0430\u043a\u0430\u043d\u0441\u0438\u0438, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 'fulltime')","valute":"optional string (\u043a\u043e\u0434 \u0432\u0430\u043b\u044e\u0442\u044b, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 'EUR')"},"responses":{"200":{"data":[{"audience":["de","at"],"coordinates":[7.0982,50.7374],"created_at":"2026-09-20T10:05:00Z","end_at":"2026-12-31T23:59:59Z","id":"30d95f76-1418-4f77-8a3d-4e4f5c43fc66","location_type":"place","place":{"address":"Steinstr. 1","city":"Bonn","country":"de","zip":"12345"},"price":4500.0,"requirements":["Python 3.10+","PostgreSQL","Flask/FastAPI"],"short_description":"\u0418\u0449\u0435\u043c \u043e\u043f\u044b\u0442\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 \u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u0443","start_at":"2026-09-01T00:00:00Z","status":"active","tags":["python","postgres","backend"],"title":"Python / PostgreSQL Developer","type":"fulltime","updated_at":"2026-09-20T10:05:00Z","user_id":101,"valute":"EUR"}],"pagination":{"limit":20,"offset":0,"total":12},"status":"ok"},"400":{"error":"Parameters lat, lng, and radius (in km) are required when location_type=place","status":"ko"},"500":{"error":"Internal server error message","status":"ko"}}},{"description":"\u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0441\u043f\u0438\u0441\u043a\u0430 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u0432\u0430\u043a\u0430\u043d\u0441\u0438\u0439 \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f (\u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u044f \u043f\u043e user_id \u0438\u0437 JWT)","examples":["/jobs/my","/jobs/my?status=moderate","/jobs/my?limit=10&offset=0"],"method":"GET","path":"/jobs/my","query_params":{"limit":"integer (default: 20, max: 100)","offset":"integer (default: 0)","status":"optional string (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 'active', 'moderate', 'rejected')","type":"optional string (\u0442\u0438\u043f \u0432\u0430\u043a\u0430\u043d\u0441\u0438\u0438)"},"responses":{"200":{"data":[{"audience":["de","at"],"coordinates":[7.0982,50.7374],"created_at":"2026-09-20T10:05:00Z","end_at":"2026-12-31T23:59:59Z","id":"30d95f76-1418-4f77-8a3d-4e4f5c43fc66","location_type":"place","place":{"address":"Steinstr. 1","city":"Bonn","country":"de","zip":"12345"},"price":4500.0,"requirements":["Python 3.10+","PostgreSQL","Flask/FastAPI"],"short_description":"\u0418\u0449\u0435\u043c \u043e\u043f\u044b\u0442\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 \u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u0443","start_at":"2026-09-01T00:00:00Z","status":"moderate","tags":["python","postgres","backend"],"title":"Python / PostgreSQL Developer","type":"fulltime","updated_at":"2026-09-20T10:05:00Z","user_id":101,"valute":"EUR"}],"pagination":{"limit":20,"offset":0,"total":1},"status":"ok"},"401":{"error":"Authorization header missing or invalid","status":"ko"},"500":{"error":"Internal server error message","status":"ko"}}},{"description":"\u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0439 \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0439 \u0432\u0430\u043a\u0430\u043d\u0441\u0438\u0438 \u043f\u043e UUID","method":"GET","path":"/jobs/<uuid:job_id>","responses":{"200":{"data":{"audience":["de","at"],"coordinates":[7.0982,50.7374],"created_at":"2026-09-20T10:05:00Z","description":"\u041f\u043e\u043b\u043d\u043e\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0432\u0430\u043a\u0430\u043d\u0441\u0438\u0438 \u0438 \u043e\u0431\u044f\u0437\u0430\u043d\u043d\u043e\u0441\u0442\u0435\u0439...","email":"hr@company.com","end_at":"2026-12-31T23:59:59Z","id":"30d95f76-1418-4f77-8a3d-4e4f5c43fc66","location_type":"place","name":"HR Manager","phone":"+49123456789","place":{"address":"Steinstr. 1","city":"Bonn","country":"de","zip":"12345"},"price":4500.0,"questions":[{"question":"\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043e\u043f\u044b\u0442\u0430 \u0441 Postgres?","type":"text"}],"requirements":["Python 3.10+","PostgreSQL","Flask/FastAPI"],"short_description":"\u0418\u0449\u0435\u043c \u043e\u043f\u044b\u0442\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 \u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u0443","start_at":"2026-09-01T00:00:00Z","status":"active","tags":["python","postgres","backend"],"title":"Python / PostgreSQL Developer","type":"fulltime","updated_at":"2026-09-20T10:05:00Z","user_id":101,"valute":"EUR"},"status":"ok"},"404":{"error":"Job not found","status":"ko"},"500":{"error":"Internal server error message","status":"ko"}}}],"objects":[{"description":"\u041f\u043e\u0438\u0441\u043a, \u0444\u0438\u043b\u044c\u0442\u0440\u0430\u0446\u0438\u044f \u0438 \u043f\u0430\u0433\u0438\u043d\u0430\u0446\u0438\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 (\u0432\u043a\u043b\u044e\u0447\u0430\u044f \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0439 \u0447\u0435\u0440\u0435\u0437 attributes[key])","examples":["/objects","/objects?category_id=1&deal_type=sale","/objects?category_id=1&min_price=50000&max_price=150000","/objects?category_id=1&attributes[condition]=Evroremont&attributes[has_balcony]=true","/objects?category_id=1&attributes[rooms_count]=2&attributes[floor_min]=2&attributes[floor_max]=5","/objects?category_id=1&attributes[total_area_min]=40&attributes[total_area_max]=90","/objects?category_id=1&lat=55.7558&lng=37.6173&radius_km=15&limit=20&offset=0","/objects?category_id=1&deal_type=rent&max_price=1000&attributes[floor_min]=2&limit=10&offset=0"],"method":"GET","path":"/objects","query_params":{"aspects[key]":"\u0422\u043e\u0447\u043d\u043e\u0435 \u0441\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 \u0438\u043b\u0438 bool (?aspects[is_vip]=true)","aspects[key_min] / aspects[key_max]":"\u0414\u0438\u0430\u043f\u0430\u0437\u043e\u043d \u0447\u0438\u0441\u0435\u043b \u0432 \u0430\u0441\u043f\u0435\u043a\u0442\u0430\u0445","aspects[key~] \u0438\u043b\u0438 aspects[key]=~val":"\u041a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u043d\u044b\u0439 \u043f\u043e\u0438\u0441\u043a/ILIKE (?aspects[view~]=sea)","attributes[key]":"\u0422\u043e\u0447\u043d\u043e\u0435 \u0441\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 \u0438\u043b\u0438 bool (?attributes[condition]=Evroremont&attributes[has_balcony]=true)","attributes[key_min] / attributes[key_max]":"\u0414\u0438\u0430\u043f\u0430\u0437\u043e\u043d \u0447\u0438\u0441\u0435\u043b \u0434\u043b\u044f \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u0432 (?attributes[rooms_count]=2&attributes[floor_min]=2&attributes[floor_max]=5)","category_id":"optional integer (\u043f\u043e\u0438\u0441\u043a \u043f\u043e ID \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0438)","country":"optional string (ISO \u043a\u043e\u0434 \u0441\u0442\u0440\u0430\u043d\u044b, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 'RU', 'DE')","deal_type":"string (sale|rent)","lat":"optional float (\u0448\u0438\u0440\u043e\u0442\u0430 \u0434\u043b\u044f \u0440\u0430\u0434\u0438\u0443\u0441\u043d\u043e\u0433\u043e \u043f\u043e\u0438\u0441\u043a\u0430)","limit":"integer (default: 50, max: 200)","lng":"optional float (\u0434\u043e\u043b\u0433\u043e\u0442\u0430 \u0434\u043b\u044f \u0440\u0430\u0434\u0438\u0443\u0441\u043d\u043e\u0433\u043e \u043f\u043e\u0438\u0441\u043a\u0430)","max_price":"numeric","min_price":"numeric","offset":"integer (default: 0)","property_type":"string (apartment|house|land|etc)","radius_km":"optional float (\u0440\u0430\u0434\u0438\u0443\u0441 \u043f\u043e\u0438\u0441\u043a\u0430 \u0432 \u043a\u043c, default: 10)","region_id":"optional integer (\u043f\u043e\u0438\u0441\u043a \u043f\u043e ID \u0432 geo_regions)","status":"string (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, 'active')","zip":"optional string (\u043f\u043e\u0438\u0441\u043a \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u043f\u043e ZIP \u0447\u0435\u0440\u0435\u0437 geo_zips)"},"responses":{"200":{"count":50,"data":[{"application":"web_app","aspects":{"is_vip":true},"attributes":{"condition":"Evroremont","floor":5,"floors_total":9,"has_balcony":true,"rooms_count":2,"total_area":54.5},"category_id":1,"category_name":"Realty Estate","coordinates":[37.6173,55.7558],"country":"RU","created_at":"2026-08-03T10:00:00Z","deal_type":"sale","id":"a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11","price":75000.0,"property_type":"apartment","status":"active","title":"2-komnatnaya kvartira v tsentre","updated_at":"2026-08-03T10:00:00Z","user_id":101,"views":142}],"has_more":true,"limit":50,"offset":0,"status":"ok","total":142}}},{"description":"\u041f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u043f\u043e UUID","method":"GET","path":"/objects/<uuid:object_id>"}]},"headers_required":{"Application":"\u0421\u0442\u0440\u043e\u043a\u0430 \u0438\u0437 Config.APPLICATIONS_POOL","Authorization":"Bearer <JWT_TOKEN>"},"service":"slave.sysassysdba.com","version":"1.2.6"}
