{"components":{"schemas":{"CSRFTokenResponse":{"description":"Response model for CSRF token endpoint (deprecated).","properties":{"csrf_token":{"description":"CSRF token","title":"Csrf Token","type":"string"}},"required":["csrf_token"],"title":"CSRFTokenResponse","type":"object"},"ErrorResponse":{"description":"Standard error response.","properties":{"error":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Detailed error information","title":"Error"},"message":{"description":"Error message","title":"Message","type":"string"}},"required":["message"],"title":"ErrorResponse","type":"object"},"LocationReportRequest":{"description":"Request model for reporting a location issue.","properties":{"description":{"description":"Description of the problem","minLength":1,"title":"Description","type":"string"},"id":{"description":"Location UUID to report","title":"Id","type":"string"}},"required":["id","description"],"title":"LocationReportRequest","type":"object"},"LocationReportResponse":{"description":"Response model for location report submission.","properties":{"message":{"description":"Success message","title":"Message","type":"string"}},"required":["message"],"title":"LocationReportResponse","type":"object"},"SuccessResponse":{"description":"Standard success response.","properties":{"message":{"description":"Success message","title":"Message","type":"string"}},"required":["message"],"title":"SuccessResponse","type":"object"},"ValidationError":{"description":"Model of a validation error response.","items":{"$ref":"#/components/schemas/ValidationError.ValidationErrorElement"},"title":"ValidationError","type":"array"},"ValidationError.ValidationErrorElement":{"description":"Model of a validation error response element.","properties":{"ctx":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"default":null,"title":"Error context"},"loc":{"items":{"type":"string"},"title":"Missing field name","type":"array"},"msg":{"title":"Error message","type":"string"},"type":{"title":"Error type","type":"string"}},"required":["loc","msg","type"],"title":"ValidationErrorElement","type":"object"},"VersionResponse":{"description":"Response model for version endpoint.","properties":{"backend":{"description":"Backend version","title":"Backend","type":"string"}},"required":["backend"],"title":"VersionResponse","type":"object"}}},"info":{"title":"Goodmap API","version":"0.1"},"openapi":"3.1.0","paths":{"/api/categories":{"get":{"description":"Returns list of categories with optional help text if CATEGORIES_HELP feature flag is enabled.","operationId":"get__api_categories","parameters":[],"responses":{},"summary":"Get all available location categories.","tags":[]}},"/api/categories-full":{"get":{"description":"Returns combined category data to reduce API calls for filter panel loading. This endpoint eliminates the need for multiple sequential requests.","operationId":"get__api_categories-full","parameters":[],"responses":{},"summary":"Get all categories with their subcategory options in a single request.","tags":[]}},"/api/category/{category_type}":{"get":{"description":"Returns list of category options with optional help text if CATEGORIES_HELP feature flag is enabled.","operationId":"get__api_category_{category_type}","parameters":[{"description":"","in":"path","name":"category_type","required":true,"schema":{"type":"string"}}],"responses":{},"summary":"Get all available options for a specific category.","tags":[]}},"/api/generate-csrf-token":{"get":{"description":"This endpoint is deprecated and maintained only for backward compatibility. CSRF protection remains active in the application.\n\n.. deprecated:: 1.1.8 This endpoint for explicit CSRF token generation is deprecated. CSRF protection remains active in the application.","operationId":"get__api_generate-csrf-token","parameters":[],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CSRFTokenResponse"}}},"description":"OK"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationError"}}},"description":"Unprocessable Content"}},"summary":"Generate CSRF token (DEPRECATED).","tags":[]}},"/api/languages":{"get":{"description":"Returns list of supported languages for the application.","operationId":"get__api_languages","parameters":[],"responses":{},"summary":"Get all available interface languages.","tags":[]}},"/api/location/{location_id}":{"get":{"description":"Returns full location data including all custom fields, formatted for display in the location details view.","operationId":"get__api_location_{location_id}","parameters":[{"description":"","in":"path","name":"location_id","required":true,"schema":{"type":"string"}}],"responses":{"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not Found"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationError"}}},"description":"Unprocessable Content"}},"summary":"Get detailed information for a single location.","tags":[]}},"/api/locations":{"get":{"description":"Returns locations filtered by query parameters, showing only uuid, position, and remark flag.","operationId":"get__api_locations","parameters":[],"responses":{},"summary":"Get list of locations with basic info.","tags":[]}},"/api/locations-clustered":{"get":{"description":"Returns locations grouped into clusters based on zoom level, optimized for rendering on interactive maps.","operationId":"get__api_locations-clustered","parameters":[],"responses":{"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationError"}}},"description":"Unprocessable Content"}},"summary":"Get clustered locations for map display.","tags":[]}},"/api/report-location":{"post":{"description":"Allows users to report issues with existing locations, such as incorrect information or closed establishments.","operationId":"post__api_report-location","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LocationReportRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LocationReportResponse"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationError"}}},"description":"Unprocessable Content"}},"summary":"Report a problem with a location.","tags":[]}},"/api/suggest-new-point":{"post":{"description":"Accepts location data either as JSON or multipart/form-data. All fields are validated using Pydantic location model.","operationId":"post__api_suggest-new-point","parameters":[],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad Request"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationError"}}},"description":"Unprocessable Content"}},"summary":"Suggest new location for review.","tags":[]}},"/api/version":{"get":{"description":"Returns the current version of the Goodmap backend.","operationId":"get__api_version","parameters":[],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VersionResponse"}}},"description":"OK"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationError"}}},"description":"Unprocessable Content"}},"summary":"Get backend version information.","tags":[]}}},"security":[],"tags":[]}
