{"openapi": "3.1.0", "info": {"title": "Arts Near Me API", "version": "1.0.0", "description": "\nFree REST API for accessing local performing arts group data. Provides read-only access to arts groups and category information.\n\n## Features\nList and search performing arts groups, get group details, filter by category and area. Full OpenAPI/Swagger documentation.\n\n## Authentication\nNo authentication required. The API is free and open to all developers.\n\n## Rate Limiting\nAll endpoints are rate-limited to 100 requests per hour per IP address. Rate limit headers (`X-RateLimit-Limit`, `X-RateLimit-Remaining`, `X-RateLimit-Reset`) are included in responses.\n\n## Pagination\nList endpoints support offset-based pagination with `page` (1-indexed, default: 1) and `page_size` (default: 20, max: 100).\n\n## Filtering\nArts group endpoints support various filters including category, town (via area search), and text search. See individual endpoint documentation for available filters.\n\n## Data Privacy\nOnly public data is exposed. Sensitive GDPR fields (contact emails, submitter names, consent data) are excluded from all responses.\n    "}, "paths": {"/api/v1/arts/groups/": {"get": {"operationId": "apps_artsnearme_api_views_list_arts_groups", "summary": "List arts groups", "parameters": [{"in": "query", "name": "page", "schema": {"default": 1, "description": "Page number (1-indexed)", "minimum": 1, "title": "Page", "type": "integer"}, "required": false, "description": "Page number (1-indexed)"}, {"in": "query", "name": "page_size", "schema": {"default": 20, "description": "Number of results per page (max 100)", "maximum": 100, "minimum": 1, "title": "Page Size", "type": "integer"}, "required": false, "description": "Number of results per page (max 100)"}, {"in": "query", "name": "town", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "Filter by town/city (partial match)", "title": "Town"}, "required": false, "description": "Filter by town/city (partial match)"}, {"in": "query", "name": "category", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "Filter by category slug", "title": "Category"}, "required": false, "description": "Filter by category slug"}, {"in": "query", "name": "status", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "Filter by status", "title": "Status"}, "required": false, "description": "Filter by status"}, {"in": "query", "name": "search", "schema": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "Search in name, area, postcode, or description", "title": "Search"}, "required": false, "description": "Search in name, area, postcode, or description"}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ArtsGroupListResponse"}}}}}, "description": "Get a paginated list of active arts groups with optional filtering.", "tags": ["arts-groups"]}}, "/api/v1/arts/groups/{identifier}/": {"get": {"operationId": "apps_artsnearme_api_views_get_arts_group", "summary": "Get arts group by slug or UUID", "parameters": [{"in": "path", "name": "identifier", "schema": {"title": "Identifier", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ArtsGroupSchema"}}}}}, "description": "Get a single arts group by slug or UUID.", "tags": ["arts-groups"]}}, "/api/v1/categories/": {"get": {"operationId": "apps_artsnearme_api_views_list_categories", "summary": "List arts categories", "parameters": [], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/ArtsCategoryListResponse"}}}}}, "description": "Get a list of all arts categories.", "tags": ["categories"]}}}, "components": {"schemas": {"AgeBandInfo": {"description": "Age band information schema.", "properties": {"slug": {"title": "Slug", "type": "string"}, "label": {"title": "Label", "type": "string"}}, "required": ["slug", "label"], "title": "AgeBandInfo", "type": "object"}, "AreaInfo": {"description": "Area information schema.", "properties": {"name": {"title": "Name", "type": "string"}, "type": {"title": "Type", "type": "string"}, "slug": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Slug"}}, "required": ["name", "type"], "title": "AreaInfo", "type": "object"}, "ArtsGroupListResponse": {"description": "Paginated arts group list response.", "properties": {"count": {"title": "Count", "type": "integer"}, "next": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Next"}, "previous": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Previous"}, "results": {"items": {"$ref": "#/components/schemas/ArtsGroupSchema"}, "title": "Results", "type": "array"}}, "required": ["count", "results"], "title": "ArtsGroupListResponse", "type": "object"}, "ArtsGroupSchema": {"description": "Public arts group data schema (excludes sensitive GDPR fields).", "example": {"address_line_1": "123 High Street", "address_line_2": "", "age_bands": [{"label": "Ages 8\u201311", "slug": "8-11"}, {"label": "Adult (18+) \u2013 Beginner", "slug": "adult-beginner"}], "areas": [{"name": "Southampton", "slug": "southampton", "type": "admin_district"}, {"name": "Hampshire", "slug": "hampshire", "type": "county"}], "category": "drama", "created": "2024-01-01T00:00:00Z", "latitude": "50.9097", "longitude": "-1.4044", "name": "Southampton Community Theatre", "postcode": "SO14 2AA", "slug": "southampton-community-theatre", "snippet": "Community theatre for all ages", "status": "active", "town": "Southampton", "updated": "2024-01-01T00:00:00Z", "uuid": "123e4567-e89b-12d3-a456-426614174000", "website_url": "https://example.com"}, "properties": {"uuid": {"format": "uuid", "title": "Uuid", "type": "string"}, "name": {"title": "Name", "type": "string"}, "slug": {"title": "Slug", "type": "string"}, "snippet": {"default": "", "title": "Snippet", "type": "string"}, "website_url": {"default": "", "title": "Website Url", "type": "string"}, "address_line_1": {"default": "", "title": "Address Line 1", "type": "string"}, "address_line_2": {"default": "", "title": "Address Line 2", "type": "string"}, "town": {"default": "", "title": "Town", "type": "string"}, "postcode": {"default": "", "title": "Postcode", "type": "string"}, "areas": {"items": {"$ref": "#/components/schemas/AreaInfo"}, "title": "Areas", "type": "array"}, "age_bands": {"items": {"$ref": "#/components/schemas/AgeBandInfo"}, "title": "Age Bands", "type": "array"}, "latitude": {"anyOf": [{"pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$", "type": "string"}, {"type": "null"}], "title": "Latitude"}, "longitude": {"anyOf": [{"pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$", "type": "string"}, {"type": "null"}], "title": "Longitude"}, "category": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Category"}, "status": {"title": "Status", "type": "string"}, "created": {"format": "date-time", "title": "Created", "type": "string"}, "updated": {"format": "date-time", "title": "Updated", "type": "string"}}, "required": ["uuid", "name", "slug", "status", "created", "updated"], "title": "ArtsGroupSchema", "type": "object"}, "ArtsCategoryListResponse": {"description": "List of arts categories.", "properties": {"results": {"items": {"$ref": "#/components/schemas/ArtsCategorySchema"}, "title": "Results", "type": "array"}}, "required": ["results"], "title": "ArtsCategoryListResponse", "type": "object"}, "ArtsCategorySchema": {"description": "Arts category schema.", "properties": {"name": {"title": "Name", "type": "string"}, "slug": {"title": "Slug", "type": "string"}, "description": {"default": "", "title": "Description", "type": "string"}}, "required": ["name", "slug"], "title": "ArtsCategorySchema", "type": "object"}}}, "servers": []}