{
    "openapi": "3.0.3",
    "info": {
        "title": "On The Town API",
        "version": "1.0.0",
        "description": "API for managing clubs, events, members, and groups on On The Town. Supports AI agent access."
    },
    "paths": {
        "/api/account/": {
            "get": {
                "operationId": "account_retrieve",
                "description": "Get current user's account information",
                "tags": [
                    "account"
                ],
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "200": {
                        "description": "No response body"
                    }
                }
            },
            "patch": {
                "operationId": "account_partial_update",
                "description": "Update user profile (fullname, theme). Email is the sign-in identity and can't change here.",
                "tags": [
                    "account"
                ],
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "200": {
                        "description": "No response body"
                    }
                }
            }
        },
        "/api/account/api-keys/": {
            "get": {
                "operationId": "account_api_keys_retrieve",
                "description": "List and create API keys for the authenticated user (on the website only:\na key can't make more keys).\n\nGET  /api/account/api-keys/\nPOST /api/account/api-keys/",
                "tags": [
                    "account"
                ],
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "200": {
                        "description": "No response body"
                    }
                }
            },
            "post": {
                "operationId": "account_api_keys_create",
                "description": "List and create API keys for the authenticated user (on the website only:\na key can't make more keys).\n\nGET  /api/account/api-keys/\nPOST /api/account/api-keys/",
                "tags": [
                    "account"
                ],
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "200": {
                        "description": "No response body"
                    }
                }
            }
        },
        "/api/account/api-keys/{id}/": {
            "delete": {
                "operationId": "account_api_keys_destroy",
                "description": "Revoke an API key.\n\nDELETE /api/account/api-keys/{id}/",
                "parameters": [
                    {
                        "in": "path",
                        "name": "id",
                        "schema": {
                            "type": "integer"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "account"
                ],
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "204": {
                        "description": "No response body"
                    }
                }
            }
        },
        "/api/account/claim/": {
            "get": {
                "operationId": "account_claim_retrieve",
                "description": "GET /api/account/claim/?token=... (the link in send_account_claim_email\nand send_agent_claim_email): takes the owner of the email to Firebase's\npage for setting a password. Signing in with it binds the Firebase login,\nwhich claims an agent-created account (users.utils.get_user_for_firebase_login).\nOpening it again (or a mail scanner opening it first) is harmless.",
                "tags": [
                    "account"
                ],
                "security": [
                    {}
                ],
                "responses": {
                    "200": {
                        "description": "No response body"
                    }
                }
            }
        },
        "/api/account/connected-apps/": {
            "get": {
                "operationId": "account_connected_apps_retrieve",
                "description": "GET /api/account/connected-apps/: apps (Claude.ai, Claude Code...) that can act for the account.",
                "tags": [
                    "account"
                ],
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "200": {
                        "description": "No response body"
                    }
                }
            }
        },
        "/api/account/connected-apps/{id}/": {
            "delete": {
                "operationId": "account_connected_apps_destroy",
                "description": "DELETE /api/account/connected-apps/<id>/: revoke everything the app holds for the account.",
                "parameters": [
                    {
                        "in": "path",
                        "name": "id",
                        "schema": {
                            "type": "integer"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "account"
                ],
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "204": {
                        "description": "No response body"
                    }
                }
            }
        },
        "/api/account/delete/": {
            "post": {
                "operationId": "account_delete_create",
                "description": "Delete user account",
                "tags": [
                    "account"
                ],
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "200": {
                        "description": "No response body"
                    }
                }
            }
        },
        "/api/account/earnings/": {
            "get": {
                "operationId": "account_earnings_retrieve",
                "description": "Get earnings overview including payout account and payout history",
                "tags": [
                    "account"
                ],
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "200": {
                        "description": "No response body"
                    }
                }
            }
        },
        "/api/account/password/": {
            "post": {
                "operationId": "account_password_create",
                "description": "Change user password",
                "tags": [
                    "account"
                ],
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "200": {
                        "description": "No response body"
                    }
                }
            }
        },
        "/api/account/payout-account/": {
            "get": {
                "operationId": "account_payout_account_retrieve",
                "description": "Get current payout account info (display-safe version)",
                "tags": [
                    "account"
                ],
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "200": {
                        "description": "No response body"
                    }
                }
            },
            "post": {
                "operationId": "account_payout_account_create",
                "description": "Create or update payout account",
                "tags": [
                    "account"
                ],
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "200": {
                        "description": "No response body"
                    }
                }
            }
        },
        "/api/account/payouts/": {
            "get": {
                "operationId": "account_payouts_retrieve",
                "description": "Get list of all payouts",
                "tags": [
                    "account"
                ],
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "200": {
                        "description": "No response body"
                    }
                }
            }
        },
        "/api/account/subscription/": {
            "get": {
                "operationId": "account_subscription_retrieve",
                "description": "Manage user subscription",
                "tags": [
                    "account"
                ],
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "200": {
                        "description": "No response body"
                    }
                }
            },
            "delete": {
                "operationId": "account_subscription_destroy",
                "description": "Cancel subscription immediately",
                "tags": [
                    "account"
                ],
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "204": {
                        "description": "No response body"
                    }
                }
            }
        },
        "/api/account/subscription/checkout/": {
            "post": {
                "operationId": "account_subscription_checkout_create",
                "description": "Create a Stripe Checkout session",
                "tags": [
                    "account"
                ],
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "200": {
                        "description": "No response body"
                    }
                }
            }
        },
        "/api/account/subscription/portal/": {
            "post": {
                "operationId": "account_subscription_portal_create",
                "description": "Create a Stripe Customer Portal session",
                "tags": [
                    "account"
                ],
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "200": {
                        "description": "No response body"
                    }
                }
            }
        },
        "/api/account/subscription/promo/": {
            "post": {
                "operationId": "account_subscription_promo_create",
                "description": "Redeem a promo code to upgrade plan",
                "tags": [
                    "account"
                ],
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "200": {
                        "description": "No response body"
                    }
                }
            }
        },
        "/api/agents/claim-email/": {
            "post": {
                "operationId": "agents_claim_email_create",
                "description": "POST /api/agents/claim-email/: send the claim email again (at most every\n30 minutes). Accounts made before signup asked for the person's email\npass owner_email to attach it first.",
                "tags": [
                    "agents"
                ],
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/AgentClaimEmail"
                            }
                        },
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "$ref": "#/components/schemas/AgentClaimEmail"
                            }
                        },
                        "multipart/form-data": {
                            "schema": {
                                "$ref": "#/components/schemas/AgentClaimEmail"
                            }
                        }
                    }
                },
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "200": {
                        "description": "No response body"
                    }
                }
            }
        },
        "/api/agents/me/": {
            "get": {
                "operationId": "agents_me_retrieve",
                "description": "Get the authenticated agent's profile.\n\nGET /api/agents/me/",
                "tags": [
                    "agents"
                ],
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "200": {
                        "description": "No response body"
                    }
                }
            }
        },
        "/api/agents/signup/": {
            "post": {
                "operationId": "agents_signup_create",
                "description": "POST /api/agents/signup/ {agent_name, operator, owner_email}: an agent\ncreates an account for a person. Returns an API key right away; the person\ngets an email to claim the account, which unlocks emailing people, charging\nmoney and appearing on Explore (see agents.claims). No authentication.",
                "tags": [
                    "agents"
                ],
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/AgentSignup"
                            }
                        },
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "$ref": "#/components/schemas/AgentSignup"
                            }
                        },
                        "multipart/form-data": {
                            "schema": {
                                "$ref": "#/components/schemas/AgentSignup"
                            }
                        }
                    },
                    "required": true
                },
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    },
                    {}
                ],
                "responses": {
                    "200": {
                        "description": "No response body"
                    }
                }
            }
        },
        "/api/clubs/": {
            "get": {
                "operationId": "clubs_list",
                "description": "ViewSet for managing clubs.",
                "tags": [
                    "clubs"
                ],
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "200": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/Club"
                                    }
                                }
                            }
                        },
                        "description": ""
                    }
                }
            },
            "post": {
                "operationId": "clubs_create",
                "description": "ViewSet for managing clubs.",
                "tags": [
                    "clubs"
                ],
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/Club"
                            }
                        },
                        "multipart/form-data": {
                            "schema": {
                                "$ref": "#/components/schemas/Club"
                            }
                        },
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "$ref": "#/components/schemas/Club"
                            }
                        }
                    },
                    "required": true
                },
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "201": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Club"
                                }
                            }
                        },
                        "description": ""
                    }
                }
            }
        },
        "/api/clubs/{club_url}/activities/": {
            "get": {
                "operationId": "clubs_activities_list",
                "description": "ViewSet for viewing club activities (read-only).",
                "parameters": [
                    {
                        "in": "path",
                        "name": "club_url",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "clubs"
                ],
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "200": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/Activity"
                                    }
                                }
                            }
                        },
                        "description": ""
                    }
                }
            }
        },
        "/api/clubs/{club_url}/activities/{id}/": {
            "get": {
                "operationId": "clubs_activities_retrieve",
                "description": "ViewSet for viewing club activities (read-only).",
                "parameters": [
                    {
                        "in": "path",
                        "name": "club_url",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    },
                    {
                        "in": "path",
                        "name": "id",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "clubs"
                ],
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "200": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Activity"
                                }
                            }
                        },
                        "description": ""
                    }
                }
            }
        },
        "/api/clubs/{club_url}/ai-venue-search/": {
            "post": {
                "operationId": "clubs_ai_venue_search_create",
                "description": "Generate AI-powered venue search terms from a natural language description.",
                "parameters": [
                    {
                        "in": "path",
                        "name": "club_url",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "clubs"
                ],
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "200": {
                        "description": "No response body"
                    }
                }
            }
        },
        "/api/clubs/{club_url}/analytics/": {
            "get": {
                "operationId": "clubs_analytics_retrieve",
                "description": "Retrieve analytics data for a club.",
                "parameters": [
                    {
                        "in": "path",
                        "name": "club_url",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "clubs"
                ],
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "200": {
                        "description": "No response body"
                    }
                }
            }
        },
        "/api/clubs/{club_url}/assets/": {
            "get": {
                "operationId": "clubs_assets_list",
                "description": "ViewSet for managing club assets (uploaded images).",
                "parameters": [
                    {
                        "in": "path",
                        "name": "club_url",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "clubs"
                ],
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "200": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/ClubAsset"
                                    }
                                }
                            }
                        },
                        "description": ""
                    }
                }
            },
            "post": {
                "operationId": "clubs_assets_create",
                "description": "ViewSet for managing club assets (uploaded images).",
                "parameters": [
                    {
                        "in": "path",
                        "name": "club_url",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "clubs"
                ],
                "requestBody": {
                    "content": {
                        "multipart/form-data": {
                            "schema": {
                                "$ref": "#/components/schemas/ClubAsset"
                            }
                        },
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "$ref": "#/components/schemas/ClubAsset"
                            }
                        },
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/ClubAsset"
                            }
                        }
                    }
                },
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "201": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ClubAsset"
                                }
                            }
                        },
                        "description": ""
                    }
                }
            }
        },
        "/api/clubs/{club_url}/assets/{id}/": {
            "get": {
                "operationId": "clubs_assets_retrieve",
                "description": "ViewSet for managing club assets (uploaded images).",
                "parameters": [
                    {
                        "in": "path",
                        "name": "club_url",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    },
                    {
                        "in": "path",
                        "name": "id",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "clubs"
                ],
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "200": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ClubAsset"
                                }
                            }
                        },
                        "description": ""
                    }
                }
            },
            "put": {
                "operationId": "clubs_assets_update",
                "description": "ViewSet for managing club assets (uploaded images).",
                "parameters": [
                    {
                        "in": "path",
                        "name": "club_url",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    },
                    {
                        "in": "path",
                        "name": "id",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "clubs"
                ],
                "requestBody": {
                    "content": {
                        "multipart/form-data": {
                            "schema": {
                                "$ref": "#/components/schemas/ClubAsset"
                            }
                        },
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "$ref": "#/components/schemas/ClubAsset"
                            }
                        },
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/ClubAsset"
                            }
                        }
                    }
                },
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "200": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ClubAsset"
                                }
                            }
                        },
                        "description": ""
                    }
                }
            },
            "patch": {
                "operationId": "clubs_assets_partial_update",
                "description": "ViewSet for managing club assets (uploaded images).",
                "parameters": [
                    {
                        "in": "path",
                        "name": "club_url",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    },
                    {
                        "in": "path",
                        "name": "id",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "clubs"
                ],
                "requestBody": {
                    "content": {
                        "multipart/form-data": {
                            "schema": {
                                "$ref": "#/components/schemas/PatchedClubAsset"
                            }
                        },
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "$ref": "#/components/schemas/PatchedClubAsset"
                            }
                        },
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/PatchedClubAsset"
                            }
                        }
                    }
                },
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "200": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ClubAsset"
                                }
                            }
                        },
                        "description": ""
                    }
                }
            },
            "delete": {
                "operationId": "clubs_assets_destroy",
                "description": "ViewSet for managing club assets (uploaded images).",
                "parameters": [
                    {
                        "in": "path",
                        "name": "club_url",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    },
                    {
                        "in": "path",
                        "name": "id",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "clubs"
                ],
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "204": {
                        "description": "No response body"
                    }
                }
            }
        },
        "/api/clubs/{club_url}/assets/from-url/": {
            "post": {
                "operationId": "clubs_assets_from_url_create",
                "description": "Save an Unsplash photo (picked in the image search) as an asset.",
                "parameters": [
                    {
                        "in": "path",
                        "name": "club_url",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "clubs"
                ],
                "requestBody": {
                    "content": {
                        "multipart/form-data": {
                            "schema": {
                                "$ref": "#/components/schemas/ClubAsset"
                            }
                        },
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "$ref": "#/components/schemas/ClubAsset"
                            }
                        },
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/ClubAsset"
                            }
                        }
                    }
                },
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "200": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ClubAsset"
                                }
                            }
                        },
                        "description": ""
                    }
                }
            }
        },
        "/api/clubs/{club_url}/cities/": {
            "get": {
                "operationId": "clubs_cities_list",
                "description": "ViewSet for managing club cities.",
                "parameters": [
                    {
                        "in": "path",
                        "name": "club_url",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "clubs"
                ],
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "200": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/ClubCity"
                                    }
                                }
                            }
                        },
                        "description": ""
                    }
                }
            },
            "post": {
                "operationId": "clubs_cities_create",
                "description": "ViewSet for managing club cities.",
                "parameters": [
                    {
                        "in": "path",
                        "name": "club_url",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "clubs"
                ],
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/ClubCity"
                            }
                        },
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "$ref": "#/components/schemas/ClubCity"
                            }
                        },
                        "multipart/form-data": {
                            "schema": {
                                "$ref": "#/components/schemas/ClubCity"
                            }
                        }
                    },
                    "required": true
                },
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "201": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ClubCity"
                                }
                            }
                        },
                        "description": ""
                    }
                }
            }
        },
        "/api/clubs/{club_url}/cities/{id}/": {
            "get": {
                "operationId": "clubs_cities_retrieve",
                "description": "ViewSet for managing club cities.",
                "parameters": [
                    {
                        "in": "path",
                        "name": "club_url",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    },
                    {
                        "in": "path",
                        "name": "id",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "clubs"
                ],
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "200": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ClubCity"
                                }
                            }
                        },
                        "description": ""
                    }
                }
            },
            "put": {
                "operationId": "clubs_cities_update",
                "description": "ViewSet for managing club cities.",
                "parameters": [
                    {
                        "in": "path",
                        "name": "club_url",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    },
                    {
                        "in": "path",
                        "name": "id",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "clubs"
                ],
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/ClubCity"
                            }
                        },
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "$ref": "#/components/schemas/ClubCity"
                            }
                        },
                        "multipart/form-data": {
                            "schema": {
                                "$ref": "#/components/schemas/ClubCity"
                            }
                        }
                    },
                    "required": true
                },
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "200": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ClubCity"
                                }
                            }
                        },
                        "description": ""
                    }
                }
            },
            "patch": {
                "operationId": "clubs_cities_partial_update",
                "description": "ViewSet for managing club cities.",
                "parameters": [
                    {
                        "in": "path",
                        "name": "club_url",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    },
                    {
                        "in": "path",
                        "name": "id",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "clubs"
                ],
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/PatchedClubCity"
                            }
                        },
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "$ref": "#/components/schemas/PatchedClubCity"
                            }
                        },
                        "multipart/form-data": {
                            "schema": {
                                "$ref": "#/components/schemas/PatchedClubCity"
                            }
                        }
                    }
                },
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "200": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ClubCity"
                                }
                            }
                        },
                        "description": ""
                    }
                }
            },
            "delete": {
                "operationId": "clubs_cities_destroy",
                "description": "ViewSet for managing club cities.",
                "parameters": [
                    {
                        "in": "path",
                        "name": "club_url",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    },
                    {
                        "in": "path",
                        "name": "id",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "clubs"
                ],
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "204": {
                        "description": "No response body"
                    }
                }
            }
        },
        "/api/clubs/{club_url}/cities/{id}/set_primary/": {
            "post": {
                "operationId": "clubs_cities_set_primary_create",
                "description": "ViewSet for managing club cities.",
                "parameters": [
                    {
                        "in": "path",
                        "name": "club_url",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    },
                    {
                        "in": "path",
                        "name": "id",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "clubs"
                ],
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/ClubCity"
                            }
                        },
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "$ref": "#/components/schemas/ClubCity"
                            }
                        },
                        "multipart/form-data": {
                            "schema": {
                                "$ref": "#/components/schemas/ClubCity"
                            }
                        }
                    },
                    "required": true
                },
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "200": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ClubCity"
                                }
                            }
                        },
                        "description": ""
                    }
                }
            }
        },
        "/api/clubs/{club_url}/cities/migrate_legacy/": {
            "post": {
                "operationId": "clubs_cities_migrate_legacy_create",
                "description": "Legacy migration endpoint - no longer needed as legacy city field has been removed.",
                "parameters": [
                    {
                        "in": "path",
                        "name": "club_url",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "clubs"
                ],
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/ClubCity"
                            }
                        },
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "$ref": "#/components/schemas/ClubCity"
                            }
                        },
                        "multipart/form-data": {
                            "schema": {
                                "$ref": "#/components/schemas/ClubCity"
                            }
                        }
                    },
                    "required": true
                },
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "200": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ClubCity"
                                }
                            }
                        },
                        "description": ""
                    }
                }
            }
        },
        "/api/clubs/{club_url}/dashboard/": {
            "get": {
                "operationId": "clubs_dashboard_retrieve",
                "description": "Retrieve dashboard data for a club.",
                "parameters": [
                    {
                        "in": "path",
                        "name": "club_url",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "clubs"
                ],
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "200": {
                        "description": "No response body"
                    }
                }
            }
        },
        "/api/clubs/{club_url}/events/": {
            "get": {
                "operationId": "clubs_events_list",
                "description": "ViewSet for managing club events.",
                "parameters": [
                    {
                        "in": "path",
                        "name": "club_url",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "clubs"
                ],
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "200": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/Event"
                                    }
                                }
                            }
                        },
                        "description": ""
                    }
                }
            },
            "post": {
                "operationId": "clubs_events_create",
                "description": "ViewSet for managing club events.",
                "parameters": [
                    {
                        "in": "path",
                        "name": "club_url",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "clubs"
                ],
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/Event"
                            }
                        },
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "$ref": "#/components/schemas/Event"
                            }
                        },
                        "multipart/form-data": {
                            "schema": {
                                "$ref": "#/components/schemas/Event"
                            }
                        }
                    },
                    "required": true
                },
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "201": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Event"
                                }
                            }
                        },
                        "description": ""
                    }
                }
            }
        },
        "/api/clubs/{club_url}/events/{event_pk}/groups/": {
            "get": {
                "operationId": "clubs_events_groups_list",
                "description": "ViewSet for managing groups within an event.\n\nEndpoints:\n- GET    /api/clubs/{club_url}/events/{event_pk}/groups/           - List all groups\n- POST   /api/clubs/{club_url}/events/{event_pk}/groups/           - Create a group\n- GET    /api/clubs/{club_url}/events/{event_pk}/groups/{pk}/      - Get group details\n- PATCH  /api/clubs/{club_url}/events/{event_pk}/groups/{pk}/      - Update group (tee_time, venue)\n- DELETE /api/clubs/{club_url}/events/{event_pk}/groups/{pk}/      - Delete a group\n- POST   /api/clubs/{club_url}/events/{event_pk}/groups/{pk}/add_member/    - Add member to group\n- POST   /api/clubs/{club_url}/events/{event_pk}/groups/{pk}/remove_member/ - Remove member from group\n- POST   /api/clubs/{club_url}/events/{event_pk}/groups/form_groups/        - Auto-form all groups",
                "parameters": [
                    {
                        "in": "path",
                        "name": "club_url",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    },
                    {
                        "in": "path",
                        "name": "event_pk",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "clubs"
                ],
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "200": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/Group"
                                    }
                                }
                            }
                        },
                        "description": ""
                    }
                }
            },
            "post": {
                "operationId": "clubs_events_groups_create",
                "description": "ViewSet for managing groups within an event.\n\nEndpoints:\n- GET    /api/clubs/{club_url}/events/{event_pk}/groups/           - List all groups\n- POST   /api/clubs/{club_url}/events/{event_pk}/groups/           - Create a group\n- GET    /api/clubs/{club_url}/events/{event_pk}/groups/{pk}/      - Get group details\n- PATCH  /api/clubs/{club_url}/events/{event_pk}/groups/{pk}/      - Update group (tee_time, venue)\n- DELETE /api/clubs/{club_url}/events/{event_pk}/groups/{pk}/      - Delete a group\n- POST   /api/clubs/{club_url}/events/{event_pk}/groups/{pk}/add_member/    - Add member to group\n- POST   /api/clubs/{club_url}/events/{event_pk}/groups/{pk}/remove_member/ - Remove member from group\n- POST   /api/clubs/{club_url}/events/{event_pk}/groups/form_groups/        - Auto-form all groups",
                "parameters": [
                    {
                        "in": "path",
                        "name": "club_url",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    },
                    {
                        "in": "path",
                        "name": "event_pk",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "clubs"
                ],
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/Group"
                            }
                        },
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "$ref": "#/components/schemas/Group"
                            }
                        },
                        "multipart/form-data": {
                            "schema": {
                                "$ref": "#/components/schemas/Group"
                            }
                        }
                    }
                },
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "201": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Group"
                                }
                            }
                        },
                        "description": ""
                    }
                }
            }
        },
        "/api/clubs/{club_url}/events/{event_pk}/groups/{id}/": {
            "get": {
                "operationId": "clubs_events_groups_retrieve",
                "description": "ViewSet for managing groups within an event.\n\nEndpoints:\n- GET    /api/clubs/{club_url}/events/{event_pk}/groups/           - List all groups\n- POST   /api/clubs/{club_url}/events/{event_pk}/groups/           - Create a group\n- GET    /api/clubs/{club_url}/events/{event_pk}/groups/{pk}/      - Get group details\n- PATCH  /api/clubs/{club_url}/events/{event_pk}/groups/{pk}/      - Update group (tee_time, venue)\n- DELETE /api/clubs/{club_url}/events/{event_pk}/groups/{pk}/      - Delete a group\n- POST   /api/clubs/{club_url}/events/{event_pk}/groups/{pk}/add_member/    - Add member to group\n- POST   /api/clubs/{club_url}/events/{event_pk}/groups/{pk}/remove_member/ - Remove member from group\n- POST   /api/clubs/{club_url}/events/{event_pk}/groups/form_groups/        - Auto-form all groups",
                "parameters": [
                    {
                        "in": "path",
                        "name": "club_url",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    },
                    {
                        "in": "path",
                        "name": "event_pk",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    },
                    {
                        "in": "path",
                        "name": "id",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "clubs"
                ],
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "200": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Group"
                                }
                            }
                        },
                        "description": ""
                    }
                }
            },
            "put": {
                "operationId": "clubs_events_groups_update",
                "description": "ViewSet for managing groups within an event.\n\nEndpoints:\n- GET    /api/clubs/{club_url}/events/{event_pk}/groups/           - List all groups\n- POST   /api/clubs/{club_url}/events/{event_pk}/groups/           - Create a group\n- GET    /api/clubs/{club_url}/events/{event_pk}/groups/{pk}/      - Get group details\n- PATCH  /api/clubs/{club_url}/events/{event_pk}/groups/{pk}/      - Update group (tee_time, venue)\n- DELETE /api/clubs/{club_url}/events/{event_pk}/groups/{pk}/      - Delete a group\n- POST   /api/clubs/{club_url}/events/{event_pk}/groups/{pk}/add_member/    - Add member to group\n- POST   /api/clubs/{club_url}/events/{event_pk}/groups/{pk}/remove_member/ - Remove member from group\n- POST   /api/clubs/{club_url}/events/{event_pk}/groups/form_groups/        - Auto-form all groups",
                "parameters": [
                    {
                        "in": "path",
                        "name": "club_url",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    },
                    {
                        "in": "path",
                        "name": "event_pk",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    },
                    {
                        "in": "path",
                        "name": "id",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "clubs"
                ],
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/Group"
                            }
                        },
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "$ref": "#/components/schemas/Group"
                            }
                        },
                        "multipart/form-data": {
                            "schema": {
                                "$ref": "#/components/schemas/Group"
                            }
                        }
                    }
                },
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "200": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Group"
                                }
                            }
                        },
                        "description": ""
                    }
                }
            },
            "patch": {
                "operationId": "clubs_events_groups_partial_update",
                "description": "ViewSet for managing groups within an event.\n\nEndpoints:\n- GET    /api/clubs/{club_url}/events/{event_pk}/groups/           - List all groups\n- POST   /api/clubs/{club_url}/events/{event_pk}/groups/           - Create a group\n- GET    /api/clubs/{club_url}/events/{event_pk}/groups/{pk}/      - Get group details\n- PATCH  /api/clubs/{club_url}/events/{event_pk}/groups/{pk}/      - Update group (tee_time, venue)\n- DELETE /api/clubs/{club_url}/events/{event_pk}/groups/{pk}/      - Delete a group\n- POST   /api/clubs/{club_url}/events/{event_pk}/groups/{pk}/add_member/    - Add member to group\n- POST   /api/clubs/{club_url}/events/{event_pk}/groups/{pk}/remove_member/ - Remove member from group\n- POST   /api/clubs/{club_url}/events/{event_pk}/groups/form_groups/        - Auto-form all groups",
                "parameters": [
                    {
                        "in": "path",
                        "name": "club_url",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    },
                    {
                        "in": "path",
                        "name": "event_pk",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    },
                    {
                        "in": "path",
                        "name": "id",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "clubs"
                ],
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/PatchedGroup"
                            }
                        },
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "$ref": "#/components/schemas/PatchedGroup"
                            }
                        },
                        "multipart/form-data": {
                            "schema": {
                                "$ref": "#/components/schemas/PatchedGroup"
                            }
                        }
                    }
                },
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "200": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Group"
                                }
                            }
                        },
                        "description": ""
                    }
                }
            },
            "delete": {
                "operationId": "clubs_events_groups_destroy",
                "description": "ViewSet for managing groups within an event.\n\nEndpoints:\n- GET    /api/clubs/{club_url}/events/{event_pk}/groups/           - List all groups\n- POST   /api/clubs/{club_url}/events/{event_pk}/groups/           - Create a group\n- GET    /api/clubs/{club_url}/events/{event_pk}/groups/{pk}/      - Get group details\n- PATCH  /api/clubs/{club_url}/events/{event_pk}/groups/{pk}/      - Update group (tee_time, venue)\n- DELETE /api/clubs/{club_url}/events/{event_pk}/groups/{pk}/      - Delete a group\n- POST   /api/clubs/{club_url}/events/{event_pk}/groups/{pk}/add_member/    - Add member to group\n- POST   /api/clubs/{club_url}/events/{event_pk}/groups/{pk}/remove_member/ - Remove member from group\n- POST   /api/clubs/{club_url}/events/{event_pk}/groups/form_groups/        - Auto-form all groups",
                "parameters": [
                    {
                        "in": "path",
                        "name": "club_url",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    },
                    {
                        "in": "path",
                        "name": "event_pk",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    },
                    {
                        "in": "path",
                        "name": "id",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "clubs"
                ],
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "204": {
                        "description": "No response body"
                    }
                }
            }
        },
        "/api/clubs/{club_url}/events/{event_pk}/groups/{id}/add_member/": {
            "post": {
                "operationId": "clubs_events_groups_add_member_create",
                "description": "Add a member to this group.",
                "parameters": [
                    {
                        "in": "path",
                        "name": "club_url",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    },
                    {
                        "in": "path",
                        "name": "event_pk",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    },
                    {
                        "in": "path",
                        "name": "id",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "clubs"
                ],
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/Group"
                            }
                        },
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "$ref": "#/components/schemas/Group"
                            }
                        },
                        "multipart/form-data": {
                            "schema": {
                                "$ref": "#/components/schemas/Group"
                            }
                        }
                    }
                },
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "200": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Group"
                                }
                            }
                        },
                        "description": ""
                    }
                }
            }
        },
        "/api/clubs/{club_url}/events/{event_pk}/groups/{id}/remove_member/": {
            "post": {
                "operationId": "clubs_events_groups_remove_member_create",
                "description": "Remove a member from this group.",
                "parameters": [
                    {
                        "in": "path",
                        "name": "club_url",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    },
                    {
                        "in": "path",
                        "name": "event_pk",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    },
                    {
                        "in": "path",
                        "name": "id",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "clubs"
                ],
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/Group"
                            }
                        },
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "$ref": "#/components/schemas/Group"
                            }
                        },
                        "multipart/form-data": {
                            "schema": {
                                "$ref": "#/components/schemas/Group"
                            }
                        }
                    }
                },
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "200": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Group"
                                }
                            }
                        },
                        "description": ""
                    }
                }
            }
        },
        "/api/clubs/{club_url}/events/{event_pk}/groups/form_groups/": {
            "post": {
                "operationId": "clubs_events_groups_form_groups_create",
                "description": "Auto-form groups for the event based on signups.\nUses intelligent matching if configured, otherwise sequential.",
                "parameters": [
                    {
                        "in": "path",
                        "name": "club_url",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    },
                    {
                        "in": "path",
                        "name": "event_pk",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "clubs"
                ],
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/Group"
                            }
                        },
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "$ref": "#/components/schemas/Group"
                            }
                        },
                        "multipart/form-data": {
                            "schema": {
                                "$ref": "#/components/schemas/Group"
                            }
                        }
                    }
                },
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "200": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Group"
                                }
                            }
                        },
                        "description": ""
                    }
                }
            }
        },
        "/api/clubs/{club_url}/events/{event_pk}/matching-config/": {
            "get": {
                "operationId": "clubs_events_matching_config_list",
                "description": "Return the single config object.",
                "parameters": [
                    {
                        "in": "path",
                        "name": "club_url",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    },
                    {
                        "in": "path",
                        "name": "event_pk",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "clubs"
                ],
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "200": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/MatchingConfiguration"
                                    }
                                }
                            }
                        },
                        "description": ""
                    }
                }
            },
            "post": {
                "operationId": "clubs_events_matching_config_create",
                "description": "Create or update the config. Regenerates groups if mode changes.",
                "parameters": [
                    {
                        "in": "path",
                        "name": "club_url",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    },
                    {
                        "in": "path",
                        "name": "event_pk",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "clubs"
                ],
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/MatchingConfiguration"
                            }
                        },
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "$ref": "#/components/schemas/MatchingConfiguration"
                            }
                        },
                        "multipart/form-data": {
                            "schema": {
                                "$ref": "#/components/schemas/MatchingConfiguration"
                            }
                        }
                    }
                },
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "201": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/MatchingConfiguration"
                                }
                            }
                        },
                        "description": ""
                    }
                }
            }
        },
        "/api/clubs/{club_url}/events/{event_pk}/matching-config/{id}/": {
            "get": {
                "operationId": "clubs_events_matching_config_retrieve",
                "description": "ViewSet for managing matching configuration for an event.\n\nEndpoints:\n- GET    /api/clubs/{club_url}/events/{event_pk}/matching-config/  - Get config\n- PUT    /api/clubs/{club_url}/events/{event_pk}/matching-config/  - Update config",
                "parameters": [
                    {
                        "in": "path",
                        "name": "club_url",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    },
                    {
                        "in": "path",
                        "name": "event_pk",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    },
                    {
                        "in": "path",
                        "name": "id",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "clubs"
                ],
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "200": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/MatchingConfiguration"
                                }
                            }
                        },
                        "description": ""
                    }
                }
            },
            "put": {
                "operationId": "clubs_events_matching_config_update",
                "description": "ViewSet for managing matching configuration for an event.\n\nEndpoints:\n- GET    /api/clubs/{club_url}/events/{event_pk}/matching-config/  - Get config\n- PUT    /api/clubs/{club_url}/events/{event_pk}/matching-config/  - Update config",
                "parameters": [
                    {
                        "in": "path",
                        "name": "club_url",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    },
                    {
                        "in": "path",
                        "name": "event_pk",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    },
                    {
                        "in": "path",
                        "name": "id",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "clubs"
                ],
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/MatchingConfiguration"
                            }
                        },
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "$ref": "#/components/schemas/MatchingConfiguration"
                            }
                        },
                        "multipart/form-data": {
                            "schema": {
                                "$ref": "#/components/schemas/MatchingConfiguration"
                            }
                        }
                    }
                },
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "200": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/MatchingConfiguration"
                                }
                            }
                        },
                        "description": ""
                    }
                }
            },
            "patch": {
                "operationId": "clubs_events_matching_config_partial_update",
                "description": "ViewSet for managing matching configuration for an event.\n\nEndpoints:\n- GET    /api/clubs/{club_url}/events/{event_pk}/matching-config/  - Get config\n- PUT    /api/clubs/{club_url}/events/{event_pk}/matching-config/  - Update config",
                "parameters": [
                    {
                        "in": "path",
                        "name": "club_url",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    },
                    {
                        "in": "path",
                        "name": "event_pk",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    },
                    {
                        "in": "path",
                        "name": "id",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "clubs"
                ],
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/PatchedMatchingConfiguration"
                            }
                        },
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "$ref": "#/components/schemas/PatchedMatchingConfiguration"
                            }
                        },
                        "multipart/form-data": {
                            "schema": {
                                "$ref": "#/components/schemas/PatchedMatchingConfiguration"
                            }
                        }
                    }
                },
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "200": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/MatchingConfiguration"
                                }
                            }
                        },
                        "description": ""
                    }
                }
            },
            "delete": {
                "operationId": "clubs_events_matching_config_destroy",
                "description": "ViewSet for managing matching configuration for an event.\n\nEndpoints:\n- GET    /api/clubs/{club_url}/events/{event_pk}/matching-config/  - Get config\n- PUT    /api/clubs/{club_url}/events/{event_pk}/matching-config/  - Update config",
                "parameters": [
                    {
                        "in": "path",
                        "name": "club_url",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    },
                    {
                        "in": "path",
                        "name": "event_pk",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    },
                    {
                        "in": "path",
                        "name": "id",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "clubs"
                ],
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "204": {
                        "description": "No response body"
                    }
                }
            }
        },
        "/api/clubs/{club_url}/events/{event_pk}/matching-rules/": {
            "get": {
                "operationId": "clubs_events_matching_rules_list",
                "description": "ViewSet for managing matching rules within a configuration.\n\nEndpoints:\n- GET    /api/clubs/{club_url}/events/{event_pk}/matching-rules/       - List rules\n- POST   /api/clubs/{club_url}/events/{event_pk}/matching-rules/       - Create rule\n- PATCH  /api/clubs/{club_url}/events/{event_pk}/matching-rules/{pk}/  - Update rule\n- DELETE /api/clubs/{club_url}/events/{event_pk}/matching-rules/{pk}/  - Delete rule",
                "parameters": [
                    {
                        "in": "path",
                        "name": "club_url",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    },
                    {
                        "in": "path",
                        "name": "event_pk",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "clubs"
                ],
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "200": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/MatchingRule"
                                    }
                                }
                            }
                        },
                        "description": ""
                    }
                }
            },
            "post": {
                "operationId": "clubs_events_matching_rules_create",
                "description": "ViewSet for managing matching rules within a configuration.\n\nEndpoints:\n- GET    /api/clubs/{club_url}/events/{event_pk}/matching-rules/       - List rules\n- POST   /api/clubs/{club_url}/events/{event_pk}/matching-rules/       - Create rule\n- PATCH  /api/clubs/{club_url}/events/{event_pk}/matching-rules/{pk}/  - Update rule\n- DELETE /api/clubs/{club_url}/events/{event_pk}/matching-rules/{pk}/  - Delete rule",
                "parameters": [
                    {
                        "in": "path",
                        "name": "club_url",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    },
                    {
                        "in": "path",
                        "name": "event_pk",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "clubs"
                ],
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/MatchingRule"
                            }
                        },
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "$ref": "#/components/schemas/MatchingRule"
                            }
                        },
                        "multipart/form-data": {
                            "schema": {
                                "$ref": "#/components/schemas/MatchingRule"
                            }
                        }
                    },
                    "required": true
                },
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "201": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/MatchingRule"
                                }
                            }
                        },
                        "description": ""
                    }
                }
            }
        },
        "/api/clubs/{club_url}/events/{event_pk}/matching-rules/{id}/": {
            "get": {
                "operationId": "clubs_events_matching_rules_retrieve",
                "description": "ViewSet for managing matching rules within a configuration.\n\nEndpoints:\n- GET    /api/clubs/{club_url}/events/{event_pk}/matching-rules/       - List rules\n- POST   /api/clubs/{club_url}/events/{event_pk}/matching-rules/       - Create rule\n- PATCH  /api/clubs/{club_url}/events/{event_pk}/matching-rules/{pk}/  - Update rule\n- DELETE /api/clubs/{club_url}/events/{event_pk}/matching-rules/{pk}/  - Delete rule",
                "parameters": [
                    {
                        "in": "path",
                        "name": "club_url",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    },
                    {
                        "in": "path",
                        "name": "event_pk",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    },
                    {
                        "in": "path",
                        "name": "id",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "clubs"
                ],
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "200": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/MatchingRule"
                                }
                            }
                        },
                        "description": ""
                    }
                }
            },
            "put": {
                "operationId": "clubs_events_matching_rules_update",
                "description": "ViewSet for managing matching rules within a configuration.\n\nEndpoints:\n- GET    /api/clubs/{club_url}/events/{event_pk}/matching-rules/       - List rules\n- POST   /api/clubs/{club_url}/events/{event_pk}/matching-rules/       - Create rule\n- PATCH  /api/clubs/{club_url}/events/{event_pk}/matching-rules/{pk}/  - Update rule\n- DELETE /api/clubs/{club_url}/events/{event_pk}/matching-rules/{pk}/  - Delete rule",
                "parameters": [
                    {
                        "in": "path",
                        "name": "club_url",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    },
                    {
                        "in": "path",
                        "name": "event_pk",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    },
                    {
                        "in": "path",
                        "name": "id",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "clubs"
                ],
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/MatchingRule"
                            }
                        },
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "$ref": "#/components/schemas/MatchingRule"
                            }
                        },
                        "multipart/form-data": {
                            "schema": {
                                "$ref": "#/components/schemas/MatchingRule"
                            }
                        }
                    },
                    "required": true
                },
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "200": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/MatchingRule"
                                }
                            }
                        },
                        "description": ""
                    }
                }
            },
            "patch": {
                "operationId": "clubs_events_matching_rules_partial_update",
                "description": "ViewSet for managing matching rules within a configuration.\n\nEndpoints:\n- GET    /api/clubs/{club_url}/events/{event_pk}/matching-rules/       - List rules\n- POST   /api/clubs/{club_url}/events/{event_pk}/matching-rules/       - Create rule\n- PATCH  /api/clubs/{club_url}/events/{event_pk}/matching-rules/{pk}/  - Update rule\n- DELETE /api/clubs/{club_url}/events/{event_pk}/matching-rules/{pk}/  - Delete rule",
                "parameters": [
                    {
                        "in": "path",
                        "name": "club_url",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    },
                    {
                        "in": "path",
                        "name": "event_pk",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    },
                    {
                        "in": "path",
                        "name": "id",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "clubs"
                ],
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/PatchedMatchingRule"
                            }
                        },
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "$ref": "#/components/schemas/PatchedMatchingRule"
                            }
                        },
                        "multipart/form-data": {
                            "schema": {
                                "$ref": "#/components/schemas/PatchedMatchingRule"
                            }
                        }
                    }
                },
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "200": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/MatchingRule"
                                }
                            }
                        },
                        "description": ""
                    }
                }
            },
            "delete": {
                "operationId": "clubs_events_matching_rules_destroy",
                "description": "ViewSet for managing matching rules within a configuration.\n\nEndpoints:\n- GET    /api/clubs/{club_url}/events/{event_pk}/matching-rules/       - List rules\n- POST   /api/clubs/{club_url}/events/{event_pk}/matching-rules/       - Create rule\n- PATCH  /api/clubs/{club_url}/events/{event_pk}/matching-rules/{pk}/  - Update rule\n- DELETE /api/clubs/{club_url}/events/{event_pk}/matching-rules/{pk}/  - Delete rule",
                "parameters": [
                    {
                        "in": "path",
                        "name": "club_url",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    },
                    {
                        "in": "path",
                        "name": "event_pk",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    },
                    {
                        "in": "path",
                        "name": "id",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "clubs"
                ],
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "204": {
                        "description": "No response body"
                    }
                }
            }
        },
        "/api/clubs/{club_url}/events/{event_pk}/venues/": {
            "get": {
                "operationId": "clubs_events_venues_list",
                "description": "ViewSet for managing event venues.",
                "parameters": [
                    {
                        "in": "path",
                        "name": "club_url",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    },
                    {
                        "in": "path",
                        "name": "event_pk",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "clubs"
                ],
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "200": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/Venue"
                                    }
                                }
                            }
                        },
                        "description": ""
                    }
                }
            },
            "post": {
                "operationId": "clubs_events_venues_create",
                "description": "ViewSet for managing event venues.",
                "parameters": [
                    {
                        "in": "path",
                        "name": "club_url",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    },
                    {
                        "in": "path",
                        "name": "event_pk",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "clubs"
                ],
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/Venue"
                            }
                        },
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "$ref": "#/components/schemas/Venue"
                            }
                        },
                        "multipart/form-data": {
                            "schema": {
                                "$ref": "#/components/schemas/Venue"
                            }
                        }
                    },
                    "required": true
                },
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "201": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Venue"
                                }
                            }
                        },
                        "description": ""
                    }
                }
            }
        },
        "/api/clubs/{club_url}/events/{event_pk}/venues/{id}/": {
            "get": {
                "operationId": "clubs_events_venues_retrieve",
                "description": "ViewSet for managing event venues.",
                "parameters": [
                    {
                        "in": "path",
                        "name": "club_url",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    },
                    {
                        "in": "path",
                        "name": "event_pk",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    },
                    {
                        "in": "path",
                        "name": "id",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "clubs"
                ],
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "200": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Venue"
                                }
                            }
                        },
                        "description": ""
                    }
                }
            },
            "put": {
                "operationId": "clubs_events_venues_update",
                "description": "ViewSet for managing event venues.",
                "parameters": [
                    {
                        "in": "path",
                        "name": "club_url",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    },
                    {
                        "in": "path",
                        "name": "event_pk",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    },
                    {
                        "in": "path",
                        "name": "id",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "clubs"
                ],
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/Venue"
                            }
                        },
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "$ref": "#/components/schemas/Venue"
                            }
                        },
                        "multipart/form-data": {
                            "schema": {
                                "$ref": "#/components/schemas/Venue"
                            }
                        }
                    },
                    "required": true
                },
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "200": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Venue"
                                }
                            }
                        },
                        "description": ""
                    }
                }
            },
            "patch": {
                "operationId": "clubs_events_venues_partial_update",
                "description": "ViewSet for managing event venues.",
                "parameters": [
                    {
                        "in": "path",
                        "name": "club_url",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    },
                    {
                        "in": "path",
                        "name": "event_pk",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    },
                    {
                        "in": "path",
                        "name": "id",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "clubs"
                ],
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/PatchedVenue"
                            }
                        },
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "$ref": "#/components/schemas/PatchedVenue"
                            }
                        },
                        "multipart/form-data": {
                            "schema": {
                                "$ref": "#/components/schemas/PatchedVenue"
                            }
                        }
                    }
                },
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "200": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Venue"
                                }
                            }
                        },
                        "description": ""
                    }
                }
            },
            "delete": {
                "operationId": "clubs_events_venues_destroy",
                "description": "ViewSet for managing event venues.",
                "parameters": [
                    {
                        "in": "path",
                        "name": "club_url",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    },
                    {
                        "in": "path",
                        "name": "event_pk",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    },
                    {
                        "in": "path",
                        "name": "id",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "clubs"
                ],
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "204": {
                        "description": "No response body"
                    }
                }
            }
        },
        "/api/clubs/{club_url}/events/{id}/": {
            "get": {
                "operationId": "clubs_events_retrieve",
                "description": "ViewSet for managing club events.",
                "parameters": [
                    {
                        "in": "path",
                        "name": "club_url",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    },
                    {
                        "in": "path",
                        "name": "id",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "clubs"
                ],
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "200": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/EventDetail"
                                }
                            }
                        },
                        "description": ""
                    }
                }
            },
            "put": {
                "operationId": "clubs_events_update",
                "description": "ViewSet for managing club events.",
                "parameters": [
                    {
                        "in": "path",
                        "name": "club_url",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    },
                    {
                        "in": "path",
                        "name": "id",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "clubs"
                ],
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/Event"
                            }
                        },
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "$ref": "#/components/schemas/Event"
                            }
                        },
                        "multipart/form-data": {
                            "schema": {
                                "$ref": "#/components/schemas/Event"
                            }
                        }
                    },
                    "required": true
                },
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "200": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Event"
                                }
                            }
                        },
                        "description": ""
                    }
                }
            },
            "patch": {
                "operationId": "clubs_events_partial_update",
                "description": "ViewSet for managing club events.",
                "parameters": [
                    {
                        "in": "path",
                        "name": "club_url",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    },
                    {
                        "in": "path",
                        "name": "id",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "clubs"
                ],
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/PatchedEvent"
                            }
                        },
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "$ref": "#/components/schemas/PatchedEvent"
                            }
                        },
                        "multipart/form-data": {
                            "schema": {
                                "$ref": "#/components/schemas/PatchedEvent"
                            }
                        }
                    }
                },
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "200": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Event"
                                }
                            }
                        },
                        "description": ""
                    }
                }
            },
            "delete": {
                "operationId": "clubs_events_destroy",
                "description": "ViewSet for managing club events.",
                "parameters": [
                    {
                        "in": "path",
                        "name": "club_url",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    },
                    {
                        "in": "path",
                        "name": "id",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "clubs"
                ],
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "204": {
                        "description": "No response body"
                    }
                }
            }
        },
        "/api/clubs/{club_url}/events/{id}/signup/": {
            "post": {
                "operationId": "clubs_events_signup_create",
                "description": "Sign up a member for an event.",
                "parameters": [
                    {
                        "in": "path",
                        "name": "club_url",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    },
                    {
                        "in": "path",
                        "name": "id",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "clubs"
                ],
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/Event"
                            }
                        },
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "$ref": "#/components/schemas/Event"
                            }
                        },
                        "multipart/form-data": {
                            "schema": {
                                "$ref": "#/components/schemas/Event"
                            }
                        }
                    },
                    "required": true
                },
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "200": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Event"
                                }
                            }
                        },
                        "description": ""
                    }
                }
            }
        },
        "/api/clubs/{club_url}/generate-description/": {
            "post": {
                "operationId": "clubs_generate_description_create",
                "description": "Suggest a club description from the owner's notes.",
                "parameters": [
                    {
                        "in": "path",
                        "name": "club_url",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "clubs"
                ],
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "200": {
                        "description": "No response body"
                    }
                }
            }
        },
        "/api/clubs/{club_url}/generate-event/": {
            "post": {
                "operationId": "clubs_generate_event_create",
                "description": "Generate a complete AI-powered event suggestion based on club info.",
                "parameters": [
                    {
                        "in": "path",
                        "name": "club_url",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "clubs"
                ],
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "200": {
                        "description": "No response body"
                    }
                }
            }
        },
        "/api/clubs/{club_url}/generate-event-description/": {
            "post": {
                "operationId": "clubs_generate_event_description_create",
                "description": "Generate an AI-powered event description based on club info and event details.",
                "parameters": [
                    {
                        "in": "path",
                        "name": "club_url",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "clubs"
                ],
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "200": {
                        "description": "No response body"
                    }
                }
            }
        },
        "/api/clubs/{club_url}/invites/": {
            "post": {
                "operationId": "clubs_invites_create",
                "description": "Send email invitations to potential members (see clubs.services.send_club_invites).",
                "parameters": [
                    {
                        "in": "path",
                        "name": "club_url",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "clubs"
                ],
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/InviteRequest"
                            }
                        },
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "$ref": "#/components/schemas/InviteRequest"
                            }
                        },
                        "multipart/form-data": {
                            "schema": {
                                "$ref": "#/components/schemas/InviteRequest"
                            }
                        }
                    },
                    "required": true
                },
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "200": {
                        "description": "No response body"
                    }
                }
            }
        },
        "/api/clubs/{club_url}/members/": {
            "get": {
                "operationId": "clubs_members_list",
                "description": "ViewSet for managing club members.",
                "parameters": [
                    {
                        "in": "path",
                        "name": "club_url",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "clubs"
                ],
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "200": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/Member"
                                    }
                                }
                            }
                        },
                        "description": ""
                    }
                }
            },
            "post": {
                "operationId": "clubs_members_create",
                "description": "ViewSet for managing club members.",
                "parameters": [
                    {
                        "in": "path",
                        "name": "club_url",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "clubs"
                ],
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/Member"
                            }
                        },
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "$ref": "#/components/schemas/Member"
                            }
                        },
                        "multipart/form-data": {
                            "schema": {
                                "$ref": "#/components/schemas/Member"
                            }
                        }
                    },
                    "required": true
                },
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "201": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Member"
                                }
                            }
                        },
                        "description": ""
                    }
                }
            }
        },
        "/api/clubs/{club_url}/members/{id}/": {
            "get": {
                "operationId": "clubs_members_retrieve",
                "description": "ViewSet for managing club members.",
                "parameters": [
                    {
                        "in": "path",
                        "name": "club_url",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    },
                    {
                        "in": "path",
                        "name": "id",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "clubs"
                ],
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "200": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Member"
                                }
                            }
                        },
                        "description": ""
                    }
                }
            },
            "put": {
                "operationId": "clubs_members_update",
                "description": "ViewSet for managing club members.",
                "parameters": [
                    {
                        "in": "path",
                        "name": "club_url",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    },
                    {
                        "in": "path",
                        "name": "id",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "clubs"
                ],
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/Member"
                            }
                        },
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "$ref": "#/components/schemas/Member"
                            }
                        },
                        "multipart/form-data": {
                            "schema": {
                                "$ref": "#/components/schemas/Member"
                            }
                        }
                    },
                    "required": true
                },
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "200": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Member"
                                }
                            }
                        },
                        "description": ""
                    }
                }
            },
            "patch": {
                "operationId": "clubs_members_partial_update",
                "description": "ViewSet for managing club members.",
                "parameters": [
                    {
                        "in": "path",
                        "name": "club_url",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    },
                    {
                        "in": "path",
                        "name": "id",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "clubs"
                ],
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/PatchedMember"
                            }
                        },
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "$ref": "#/components/schemas/PatchedMember"
                            }
                        },
                        "multipart/form-data": {
                            "schema": {
                                "$ref": "#/components/schemas/PatchedMember"
                            }
                        }
                    }
                },
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "200": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Member"
                                }
                            }
                        },
                        "description": ""
                    }
                }
            },
            "delete": {
                "operationId": "clubs_members_destroy",
                "description": "ViewSet for managing club members.",
                "parameters": [
                    {
                        "in": "path",
                        "name": "club_url",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    },
                    {
                        "in": "path",
                        "name": "id",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "clubs"
                ],
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "204": {
                        "description": "No response body"
                    }
                }
            }
        },
        "/api/clubs/{club_url}/members/{id}/answers/": {
            "get": {
                "operationId": "clubs_members_answers_retrieve",
                "description": "Get all signup question answers for a member.",
                "parameters": [
                    {
                        "in": "path",
                        "name": "club_url",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    },
                    {
                        "in": "path",
                        "name": "id",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "clubs"
                ],
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "200": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Member"
                                }
                            }
                        },
                        "description": ""
                    }
                }
            }
        },
        "/api/clubs/{club_url}/members/{id}/events/": {
            "get": {
                "operationId": "clubs_members_events_retrieve",
                "description": "Get all events a member has signed up for.",
                "parameters": [
                    {
                        "in": "path",
                        "name": "club_url",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    },
                    {
                        "in": "path",
                        "name": "id",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "clubs"
                ],
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "200": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Member"
                                }
                            }
                        },
                        "description": ""
                    }
                }
            }
        },
        "/api/clubs/{club_url}/members/{id}/send_email/": {
            "post": {
                "operationId": "clubs_members_send_email_create",
                "description": "Send a predefined email template to a member.\nOnly allows sending from a fixed set of templates.",
                "parameters": [
                    {
                        "in": "path",
                        "name": "club_url",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    },
                    {
                        "in": "path",
                        "name": "id",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "clubs"
                ],
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/MemberEmailRequest"
                            }
                        },
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "$ref": "#/components/schemas/MemberEmailRequest"
                            }
                        },
                        "multipart/form-data": {
                            "schema": {
                                "$ref": "#/components/schemas/MemberEmailRequest"
                            }
                        }
                    },
                    "required": true
                },
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "200": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Member"
                                }
                            }
                        },
                        "description": ""
                    }
                }
            }
        },
        "/api/clubs/{club_url}/members/email_templates/": {
            "get": {
                "operationId": "clubs_members_email_templates_retrieve",
                "description": "Get available email templates.",
                "parameters": [
                    {
                        "in": "path",
                        "name": "club_url",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "clubs"
                ],
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "200": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Member"
                                }
                            }
                        },
                        "description": ""
                    }
                }
            }
        },
        "/api/clubs/{club_url}/messages/": {
            "get": {
                "operationId": "clubs_messages_list",
                "description": "Contact messages for a club, for its owner: list and delete.",
                "parameters": [
                    {
                        "in": "path",
                        "name": "club_url",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "clubs"
                ],
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "200": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/ClubMessage"
                                    }
                                }
                            }
                        },
                        "description": ""
                    }
                }
            }
        },
        "/api/clubs/{club_url}/messages/{id}/": {
            "delete": {
                "operationId": "clubs_messages_destroy",
                "description": "Contact messages for a club, for its owner: list and delete.",
                "parameters": [
                    {
                        "in": "path",
                        "name": "club_url",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    },
                    {
                        "in": "path",
                        "name": "id",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "clubs"
                ],
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "204": {
                        "description": "No response body"
                    }
                }
            }
        },
        "/api/clubs/{club_url}/saved-matching-configs/": {
            "get": {
                "operationId": "clubs_saved_matching_configs_list",
                "description": "ViewSet for managing saved matching configurations at the club level.\n\nEndpoints:\n- GET    /api/clubs/{club_url}/saved-matching-configs/       - List all saved configs\n- POST   /api/clubs/{club_url}/saved-matching-configs/       - Save current config\n- GET    /api/clubs/{club_url}/saved-matching-configs/{pk}/  - Get saved config\n- DELETE /api/clubs/{club_url}/saved-matching-configs/{pk}/  - Delete saved config",
                "parameters": [
                    {
                        "in": "path",
                        "name": "club_url",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "clubs"
                ],
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "200": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/SavedMatchingConfig"
                                    }
                                }
                            }
                        },
                        "description": ""
                    }
                }
            },
            "post": {
                "operationId": "clubs_saved_matching_configs_create",
                "description": "ViewSet for managing saved matching configurations at the club level.\n\nEndpoints:\n- GET    /api/clubs/{club_url}/saved-matching-configs/       - List all saved configs\n- POST   /api/clubs/{club_url}/saved-matching-configs/       - Save current config\n- GET    /api/clubs/{club_url}/saved-matching-configs/{pk}/  - Get saved config\n- DELETE /api/clubs/{club_url}/saved-matching-configs/{pk}/  - Delete saved config",
                "parameters": [
                    {
                        "in": "path",
                        "name": "club_url",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "clubs"
                ],
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/SavedMatchingConfig"
                            }
                        },
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "$ref": "#/components/schemas/SavedMatchingConfig"
                            }
                        },
                        "multipart/form-data": {
                            "schema": {
                                "$ref": "#/components/schemas/SavedMatchingConfig"
                            }
                        }
                    },
                    "required": true
                },
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "201": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/SavedMatchingConfig"
                                }
                            }
                        },
                        "description": ""
                    }
                }
            }
        },
        "/api/clubs/{club_url}/saved-matching-configs/{id}/": {
            "get": {
                "operationId": "clubs_saved_matching_configs_retrieve",
                "description": "ViewSet for managing saved matching configurations at the club level.\n\nEndpoints:\n- GET    /api/clubs/{club_url}/saved-matching-configs/       - List all saved configs\n- POST   /api/clubs/{club_url}/saved-matching-configs/       - Save current config\n- GET    /api/clubs/{club_url}/saved-matching-configs/{pk}/  - Get saved config\n- DELETE /api/clubs/{club_url}/saved-matching-configs/{pk}/  - Delete saved config",
                "parameters": [
                    {
                        "in": "path",
                        "name": "club_url",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    },
                    {
                        "in": "path",
                        "name": "id",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "clubs"
                ],
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "200": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/SavedMatchingConfig"
                                }
                            }
                        },
                        "description": ""
                    }
                }
            },
            "put": {
                "operationId": "clubs_saved_matching_configs_update",
                "description": "ViewSet for managing saved matching configurations at the club level.\n\nEndpoints:\n- GET    /api/clubs/{club_url}/saved-matching-configs/       - List all saved configs\n- POST   /api/clubs/{club_url}/saved-matching-configs/       - Save current config\n- GET    /api/clubs/{club_url}/saved-matching-configs/{pk}/  - Get saved config\n- DELETE /api/clubs/{club_url}/saved-matching-configs/{pk}/  - Delete saved config",
                "parameters": [
                    {
                        "in": "path",
                        "name": "club_url",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    },
                    {
                        "in": "path",
                        "name": "id",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "clubs"
                ],
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/SavedMatchingConfig"
                            }
                        },
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "$ref": "#/components/schemas/SavedMatchingConfig"
                            }
                        },
                        "multipart/form-data": {
                            "schema": {
                                "$ref": "#/components/schemas/SavedMatchingConfig"
                            }
                        }
                    },
                    "required": true
                },
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "200": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/SavedMatchingConfig"
                                }
                            }
                        },
                        "description": ""
                    }
                }
            },
            "patch": {
                "operationId": "clubs_saved_matching_configs_partial_update",
                "description": "ViewSet for managing saved matching configurations at the club level.\n\nEndpoints:\n- GET    /api/clubs/{club_url}/saved-matching-configs/       - List all saved configs\n- POST   /api/clubs/{club_url}/saved-matching-configs/       - Save current config\n- GET    /api/clubs/{club_url}/saved-matching-configs/{pk}/  - Get saved config\n- DELETE /api/clubs/{club_url}/saved-matching-configs/{pk}/  - Delete saved config",
                "parameters": [
                    {
                        "in": "path",
                        "name": "club_url",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    },
                    {
                        "in": "path",
                        "name": "id",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "clubs"
                ],
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/PatchedSavedMatchingConfig"
                            }
                        },
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "$ref": "#/components/schemas/PatchedSavedMatchingConfig"
                            }
                        },
                        "multipart/form-data": {
                            "schema": {
                                "$ref": "#/components/schemas/PatchedSavedMatchingConfig"
                            }
                        }
                    }
                },
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "200": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/SavedMatchingConfig"
                                }
                            }
                        },
                        "description": ""
                    }
                }
            },
            "delete": {
                "operationId": "clubs_saved_matching_configs_destroy",
                "description": "ViewSet for managing saved matching configurations at the club level.\n\nEndpoints:\n- GET    /api/clubs/{club_url}/saved-matching-configs/       - List all saved configs\n- POST   /api/clubs/{club_url}/saved-matching-configs/       - Save current config\n- GET    /api/clubs/{club_url}/saved-matching-configs/{pk}/  - Get saved config\n- DELETE /api/clubs/{club_url}/saved-matching-configs/{pk}/  - Delete saved config",
                "parameters": [
                    {
                        "in": "path",
                        "name": "club_url",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    },
                    {
                        "in": "path",
                        "name": "id",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "clubs"
                ],
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "204": {
                        "description": "No response body"
                    }
                }
            }
        },
        "/api/clubs/{club_url}/saved-matching-configs/{id}/load_to_event/": {
            "post": {
                "operationId": "clubs_saved_matching_configs_load_to_event_create",
                "description": "Load a saved configuration to an event.\nExpects: { \"event_id\": ... }\nThis will replace the event's current matching configuration.",
                "parameters": [
                    {
                        "in": "path",
                        "name": "club_url",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    },
                    {
                        "in": "path",
                        "name": "id",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "clubs"
                ],
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/SavedMatchingConfig"
                            }
                        },
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "$ref": "#/components/schemas/SavedMatchingConfig"
                            }
                        },
                        "multipart/form-data": {
                            "schema": {
                                "$ref": "#/components/schemas/SavedMatchingConfig"
                            }
                        }
                    },
                    "required": true
                },
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "200": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/SavedMatchingConfig"
                                }
                            }
                        },
                        "description": ""
                    }
                }
            }
        },
        "/api/clubs/{club_url}/saved-matching-configs/save_from_event/": {
            "post": {
                "operationId": "clubs_saved_matching_configs_save_from_event_create",
                "description": "Save the current matching configuration from an event.\nExpects: { \"event_id\": ..., \"name\": \"...\" }",
                "parameters": [
                    {
                        "in": "path",
                        "name": "club_url",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "clubs"
                ],
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/SavedMatchingConfig"
                            }
                        },
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "$ref": "#/components/schemas/SavedMatchingConfig"
                            }
                        },
                        "multipart/form-data": {
                            "schema": {
                                "$ref": "#/components/schemas/SavedMatchingConfig"
                            }
                        }
                    },
                    "required": true
                },
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "200": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/SavedMatchingConfig"
                                }
                            }
                        },
                        "description": ""
                    }
                }
            }
        },
        "/api/clubs/{club_url}/signup-questions/": {
            "get": {
                "operationId": "clubs_signup_questions_list",
                "description": "ViewSet for managing signup questions.\nQuestions can be at the club level (event=null) or event-specific.",
                "parameters": [
                    {
                        "in": "path",
                        "name": "club_url",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "clubs"
                ],
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "200": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/SignupQuestion"
                                    }
                                }
                            }
                        },
                        "description": ""
                    }
                }
            },
            "post": {
                "operationId": "clubs_signup_questions_create",
                "description": "ViewSet for managing signup questions.\nQuestions can be at the club level (event=null) or event-specific.",
                "parameters": [
                    {
                        "in": "path",
                        "name": "club_url",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "clubs"
                ],
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/SignupQuestion"
                            }
                        },
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "$ref": "#/components/schemas/SignupQuestion"
                            }
                        },
                        "multipart/form-data": {
                            "schema": {
                                "$ref": "#/components/schemas/SignupQuestion"
                            }
                        }
                    },
                    "required": true
                },
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "201": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/SignupQuestion"
                                }
                            }
                        },
                        "description": ""
                    }
                }
            }
        },
        "/api/clubs/{club_url}/signup-questions/{id}/": {
            "get": {
                "operationId": "clubs_signup_questions_retrieve",
                "description": "ViewSet for managing signup questions.\nQuestions can be at the club level (event=null) or event-specific.",
                "parameters": [
                    {
                        "in": "path",
                        "name": "club_url",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    },
                    {
                        "in": "path",
                        "name": "id",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "clubs"
                ],
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "200": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/SignupQuestion"
                                }
                            }
                        },
                        "description": ""
                    }
                }
            },
            "put": {
                "operationId": "clubs_signup_questions_update",
                "description": "ViewSet for managing signup questions.\nQuestions can be at the club level (event=null) or event-specific.",
                "parameters": [
                    {
                        "in": "path",
                        "name": "club_url",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    },
                    {
                        "in": "path",
                        "name": "id",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "clubs"
                ],
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/SignupQuestion"
                            }
                        },
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "$ref": "#/components/schemas/SignupQuestion"
                            }
                        },
                        "multipart/form-data": {
                            "schema": {
                                "$ref": "#/components/schemas/SignupQuestion"
                            }
                        }
                    },
                    "required": true
                },
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "200": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/SignupQuestion"
                                }
                            }
                        },
                        "description": ""
                    }
                }
            },
            "patch": {
                "operationId": "clubs_signup_questions_partial_update",
                "description": "ViewSet for managing signup questions.\nQuestions can be at the club level (event=null) or event-specific.",
                "parameters": [
                    {
                        "in": "path",
                        "name": "club_url",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    },
                    {
                        "in": "path",
                        "name": "id",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "clubs"
                ],
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/PatchedSignupQuestion"
                            }
                        },
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "$ref": "#/components/schemas/PatchedSignupQuestion"
                            }
                        },
                        "multipart/form-data": {
                            "schema": {
                                "$ref": "#/components/schemas/PatchedSignupQuestion"
                            }
                        }
                    }
                },
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "200": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/SignupQuestion"
                                }
                            }
                        },
                        "description": ""
                    }
                }
            },
            "delete": {
                "operationId": "clubs_signup_questions_destroy",
                "description": "ViewSet for managing signup questions.\nQuestions can be at the club level (event=null) or event-specific.",
                "parameters": [
                    {
                        "in": "path",
                        "name": "club_url",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    },
                    {
                        "in": "path",
                        "name": "id",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "clubs"
                ],
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "204": {
                        "description": "No response body"
                    }
                }
            }
        },
        "/api/clubs/{club_url}/signup-questions/reorder/": {
            "post": {
                "operationId": "clubs_signup_questions_reorder_create",
                "description": "Reorder questions by updating their order field.",
                "parameters": [
                    {
                        "in": "path",
                        "name": "club_url",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "clubs"
                ],
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/SignupQuestion"
                            }
                        },
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "$ref": "#/components/schemas/SignupQuestion"
                            }
                        },
                        "multipart/form-data": {
                            "schema": {
                                "$ref": "#/components/schemas/SignupQuestion"
                            }
                        }
                    },
                    "required": true
                },
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "200": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/SignupQuestion"
                                }
                            }
                        },
                        "description": ""
                    }
                }
            }
        },
        "/api/clubs/{club_url}/venue-collections/": {
            "get": {
                "operationId": "clubs_venue_collections_list",
                "description": "ViewSet for managing venue collections at the club level.",
                "parameters": [
                    {
                        "in": "path",
                        "name": "club_url",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "clubs"
                ],
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "200": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/VenueCollection"
                                    }
                                }
                            }
                        },
                        "description": ""
                    }
                }
            },
            "post": {
                "operationId": "clubs_venue_collections_create",
                "description": "ViewSet for managing venue collections at the club level.",
                "parameters": [
                    {
                        "in": "path",
                        "name": "club_url",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "clubs"
                ],
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/VenueCollection"
                            }
                        },
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "$ref": "#/components/schemas/VenueCollection"
                            }
                        },
                        "multipart/form-data": {
                            "schema": {
                                "$ref": "#/components/schemas/VenueCollection"
                            }
                        }
                    },
                    "required": true
                },
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "201": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/VenueCollection"
                                }
                            }
                        },
                        "description": ""
                    }
                }
            }
        },
        "/api/clubs/{club_url}/venue-collections/{id}/": {
            "get": {
                "operationId": "clubs_venue_collections_retrieve",
                "description": "ViewSet for managing venue collections at the club level.",
                "parameters": [
                    {
                        "in": "path",
                        "name": "club_url",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    },
                    {
                        "in": "path",
                        "name": "id",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "clubs"
                ],
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "200": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/VenueCollection"
                                }
                            }
                        },
                        "description": ""
                    }
                }
            },
            "put": {
                "operationId": "clubs_venue_collections_update",
                "description": "ViewSet for managing venue collections at the club level.",
                "parameters": [
                    {
                        "in": "path",
                        "name": "club_url",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    },
                    {
                        "in": "path",
                        "name": "id",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "clubs"
                ],
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/VenueCollection"
                            }
                        },
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "$ref": "#/components/schemas/VenueCollection"
                            }
                        },
                        "multipart/form-data": {
                            "schema": {
                                "$ref": "#/components/schemas/VenueCollection"
                            }
                        }
                    },
                    "required": true
                },
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "200": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/VenueCollection"
                                }
                            }
                        },
                        "description": ""
                    }
                }
            },
            "patch": {
                "operationId": "clubs_venue_collections_partial_update",
                "description": "ViewSet for managing venue collections at the club level.",
                "parameters": [
                    {
                        "in": "path",
                        "name": "club_url",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    },
                    {
                        "in": "path",
                        "name": "id",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "clubs"
                ],
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/PatchedVenueCollection"
                            }
                        },
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "$ref": "#/components/schemas/PatchedVenueCollection"
                            }
                        },
                        "multipart/form-data": {
                            "schema": {
                                "$ref": "#/components/schemas/PatchedVenueCollection"
                            }
                        }
                    }
                },
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "200": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/VenueCollection"
                                }
                            }
                        },
                        "description": ""
                    }
                }
            },
            "delete": {
                "operationId": "clubs_venue_collections_destroy",
                "description": "ViewSet for managing venue collections at the club level.",
                "parameters": [
                    {
                        "in": "path",
                        "name": "club_url",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    },
                    {
                        "in": "path",
                        "name": "id",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "clubs"
                ],
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "204": {
                        "description": "No response body"
                    }
                }
            }
        },
        "/api/clubs/{club_url}/venue-collections/{id}/load-to-event/": {
            "post": {
                "operationId": "clubs_venue_collections_load_to_event_create",
                "description": "Load collection venues onto an event, replacing existing venues.\nExpects: { \"event_id\": 123 }",
                "parameters": [
                    {
                        "in": "path",
                        "name": "club_url",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    },
                    {
                        "in": "path",
                        "name": "id",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "clubs"
                ],
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/VenueCollection"
                            }
                        },
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "$ref": "#/components/schemas/VenueCollection"
                            }
                        },
                        "multipart/form-data": {
                            "schema": {
                                "$ref": "#/components/schemas/VenueCollection"
                            }
                        }
                    },
                    "required": true
                },
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "200": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/VenueCollection"
                                }
                            }
                        },
                        "description": ""
                    }
                }
            }
        },
        "/api/clubs/{club_url}/venue-collections/save-from-event/": {
            "post": {
                "operationId": "clubs_venue_collections_save_from_event_create",
                "description": "Save current event's venues as a new collection.\nExpects: { \"event_id\": 123, \"name\": \"My Collection\" }",
                "parameters": [
                    {
                        "in": "path",
                        "name": "club_url",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "clubs"
                ],
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/VenueCollection"
                            }
                        },
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "$ref": "#/components/schemas/VenueCollection"
                            }
                        },
                        "multipart/form-data": {
                            "schema": {
                                "$ref": "#/components/schemas/VenueCollection"
                            }
                        }
                    },
                    "required": true
                },
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "200": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/VenueCollection"
                                }
                            }
                        },
                        "description": ""
                    }
                }
            }
        },
        "/api/clubs/{club_url}/venue-search/": {
            "post": {
                "operationId": "clubs_venue_search_create",
                "description": "POST {\"query\": \"wine bar\", \"city\": \"Austin, TX\" (optional), \"count\": 8 (optional)}:\nplaces from Google Places for the club's events. Returns {\"venues\": [...]}\nshaped for creating Venues.",
                "parameters": [
                    {
                        "in": "path",
                        "name": "club_url",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "clubs"
                ],
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/VenueSearchRequest"
                            }
                        },
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "$ref": "#/components/schemas/VenueSearchRequest"
                            }
                        },
                        "multipart/form-data": {
                            "schema": {
                                "$ref": "#/components/schemas/VenueSearchRequest"
                            }
                        }
                    },
                    "required": true
                },
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "200": {
                        "description": "No response body"
                    }
                }
            }
        },
        "/api/clubs/{url}/": {
            "get": {
                "operationId": "clubs_retrieve",
                "description": "ViewSet for managing clubs.",
                "parameters": [
                    {
                        "in": "path",
                        "name": "url",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "clubs"
                ],
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "200": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Club"
                                }
                            }
                        },
                        "description": ""
                    }
                }
            },
            "put": {
                "operationId": "clubs_update",
                "description": "ViewSet for managing clubs.",
                "parameters": [
                    {
                        "in": "path",
                        "name": "url",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "clubs"
                ],
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/Club"
                            }
                        },
                        "multipart/form-data": {
                            "schema": {
                                "$ref": "#/components/schemas/Club"
                            }
                        },
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "$ref": "#/components/schemas/Club"
                            }
                        }
                    },
                    "required": true
                },
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "200": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Club"
                                }
                            }
                        },
                        "description": ""
                    }
                }
            },
            "patch": {
                "operationId": "clubs_partial_update",
                "description": "ViewSet for managing clubs.",
                "parameters": [
                    {
                        "in": "path",
                        "name": "url",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "clubs"
                ],
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/PatchedClub"
                            }
                        },
                        "multipart/form-data": {
                            "schema": {
                                "$ref": "#/components/schemas/PatchedClub"
                            }
                        },
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "$ref": "#/components/schemas/PatchedClub"
                            }
                        }
                    }
                },
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "200": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Club"
                                }
                            }
                        },
                        "description": ""
                    }
                }
            },
            "delete": {
                "operationId": "clubs_destroy",
                "description": "ViewSet for managing clubs.",
                "parameters": [
                    {
                        "in": "path",
                        "name": "url",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "clubs"
                ],
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "204": {
                        "description": "No response body"
                    }
                }
            }
        },
        "/api/clubs/{url}/pricing/": {
            "patch": {
                "operationId": "clubs_pricing_partial_update",
                "description": "ViewSet for managing clubs.",
                "parameters": [
                    {
                        "in": "path",
                        "name": "url",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "clubs"
                ],
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/PatchedClub"
                            }
                        },
                        "multipart/form-data": {
                            "schema": {
                                "$ref": "#/components/schemas/PatchedClub"
                            }
                        },
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "$ref": "#/components/schemas/PatchedClub"
                            }
                        }
                    }
                },
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "200": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Club"
                                }
                            }
                        },
                        "description": ""
                    }
                }
            }
        },
        "/api/clubs/create-manual/": {
            "post": {
                "operationId": "clubs_create_manual_create",
                "description": "Create a club manually with explicit name, description, and city.\nNo AI involved — creates a club with a default website immediately.",
                "tags": [
                    "clubs"
                ],
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/CreateClub"
                            }
                        },
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "$ref": "#/components/schemas/CreateClub"
                            }
                        },
                        "multipart/form-data": {
                            "schema": {
                                "$ref": "#/components/schemas/CreateClub"
                            }
                        }
                    },
                    "required": true
                },
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "201": {
                        "description": "No response body"
                    }
                }
            }
        },
        "/api/clubs/creation-task/{task_id}/": {
            "get": {
                "operationId": "clubs_creation_task_retrieve",
                "description": "Poll for club creation task completion.",
                "parameters": [
                    {
                        "in": "path",
                        "name": "task_id",
                        "schema": {
                            "type": "string",
                            "format": "uuid"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "clubs"
                ],
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "200": {
                        "description": "No response body"
                    }
                }
            }
        },
        "/api/clubs/from-prompt/": {
            "post": {
                "operationId": "clubs_from_prompt_create",
                "description": "Create a club from a freeform prompt using AI.\nReturns immediately with a task ID. Frontend polls for completion.",
                "tags": [
                    "clubs"
                ],
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "201": {
                        "description": "No response body"
                    }
                }
            }
        },
        "/api/clubs/generate-prompt-from-url/": {
            "post": {
                "operationId": "clubs_generate_prompt_from_url_create",
                "description": "Scrape a public web page and generate a club creation prompt from it.\nThe returned prompt is used exactly like a user-typed prompt in the standard flow.",
                "tags": [
                    "clubs"
                ],
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "200": {
                        "description": "No response body"
                    }
                }
            }
        },
        "/api/contact/": {
            "post": {
                "operationId": "contact_create",
                "description": "Public endpoint for contact form submissions.\nNo authentication required.",
                "tags": [
                    "contact"
                ],
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    },
                    {}
                ],
                "responses": {
                    "200": {
                        "description": "No response body"
                    }
                }
            }
        },
        "/api/member/clubs/{club_url}/": {
            "get": {
                "operationId": "member_clubs_retrieve",
                "description": "GET: the account and its membership status in this club.\nPOST: join the club. PATCH: update name or city. DELETE: leave the club.",
                "parameters": [
                    {
                        "in": "path",
                        "name": "club_url",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "member"
                ],
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "200": {
                        "description": "No response body"
                    }
                }
            },
            "post": {
                "operationId": "member_clubs_create",
                "description": "GET: the account and its membership status in this club.\nPOST: join the club. PATCH: update name or city. DELETE: leave the club.",
                "parameters": [
                    {
                        "in": "path",
                        "name": "club_url",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "member"
                ],
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "200": {
                        "description": "No response body"
                    }
                }
            },
            "patch": {
                "operationId": "member_clubs_partial_update",
                "description": "GET: the account and its membership status in this club.\nPOST: join the club. PATCH: update name or city. DELETE: leave the club.",
                "parameters": [
                    {
                        "in": "path",
                        "name": "club_url",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "member"
                ],
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "200": {
                        "description": "No response body"
                    }
                }
            },
            "delete": {
                "operationId": "member_clubs_destroy",
                "description": "GET: the account and its membership status in this club.\nPOST: join the club. PATCH: update name or city. DELETE: leave the club.",
                "parameters": [
                    {
                        "in": "path",
                        "name": "club_url",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "member"
                ],
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "204": {
                        "description": "No response body"
                    }
                }
            }
        },
        "/api/member/clubs/{club_url}/events/{event_id}/community/": {
            "get": {
                "operationId": "member_clubs_events_community_retrieve",
                "description": "For the club's members and owner.\nGET: who's going and the event chat. POST: send a chat message.",
                "parameters": [
                    {
                        "in": "path",
                        "name": "club_url",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    },
                    {
                        "in": "path",
                        "name": "event_id",
                        "schema": {
                            "type": "integer"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "member"
                ],
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "200": {
                        "description": "No response body"
                    }
                }
            },
            "post": {
                "operationId": "member_clubs_events_community_create",
                "description": "For the club's members and owner.\nGET: who's going and the event chat. POST: send a chat message.",
                "parameters": [
                    {
                        "in": "path",
                        "name": "club_url",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    },
                    {
                        "in": "path",
                        "name": "event_id",
                        "schema": {
                            "type": "integer"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "member"
                ],
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "200": {
                        "description": "No response body"
                    }
                }
            }
        },
        "/api/member/clubs/{club_url}/events/{event_id}/messages/{message_id}/": {
            "delete": {
                "operationId": "member_clubs_events_messages_destroy",
                "description": "DELETE: remove a chat message (its author or the club's owner).",
                "parameters": [
                    {
                        "in": "path",
                        "name": "club_url",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    },
                    {
                        "in": "path",
                        "name": "event_id",
                        "schema": {
                            "type": "integer"
                        },
                        "required": true
                    },
                    {
                        "in": "path",
                        "name": "message_id",
                        "schema": {
                            "type": "integer"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "member"
                ],
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "204": {
                        "description": "No response body"
                    }
                }
            }
        },
        "/api/member/clubs/{club_url}/events/{event_id}/payment/checkout/": {
            "post": {
                "operationId": "member_clubs_events_payment_checkout_create",
                "description": "Create Stripe Checkout session for one-time event payment.",
                "parameters": [
                    {
                        "in": "path",
                        "name": "club_url",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    },
                    {
                        "in": "path",
                        "name": "event_id",
                        "schema": {
                            "type": "integer"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "member"
                ],
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "200": {
                        "description": "No response body"
                    }
                }
            }
        },
        "/api/member/clubs/{club_url}/events/{event_id}/signup/": {
            "post": {
                "operationId": "member_clubs_events_signup_create",
                "description": "Public endpoint for members to sign up for club events.\nOptionally accepts answers to event-specific registration questions.",
                "parameters": [
                    {
                        "in": "path",
                        "name": "club_url",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    },
                    {
                        "in": "path",
                        "name": "event_id",
                        "schema": {
                            "type": "integer"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "member"
                ],
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "200": {
                        "description": "No response body"
                    }
                }
            },
            "delete": {
                "operationId": "member_clubs_events_signup_destroy",
                "description": "Public endpoint for members to sign up for club events.\nOptionally accepts answers to event-specific registration questions.",
                "parameters": [
                    {
                        "in": "path",
                        "name": "club_url",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    },
                    {
                        "in": "path",
                        "name": "event_id",
                        "schema": {
                            "type": "integer"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "member"
                ],
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "204": {
                        "description": "No response body"
                    }
                }
            }
        },
        "/api/member/clubs/{club_url}/onboarding/": {
            "post": {
                "operationId": "member_clubs_onboarding_create",
                "description": "Saves the club's signup question answers and city, and marks the\nmembership as onboarded.",
                "parameters": [
                    {
                        "in": "path",
                        "name": "club_url",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "member"
                ],
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "200": {
                        "description": "No response body"
                    }
                }
            }
        },
        "/api/member/clubs/{club_url}/subscription/checkout/": {
            "post": {
                "operationId": "member_clubs_subscription_checkout_create",
                "description": "Create Stripe Checkout session for member subscription.",
                "parameters": [
                    {
                        "in": "path",
                        "name": "club_url",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "member"
                ],
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "200": {
                        "description": "No response body"
                    }
                }
            }
        },
        "/api/member/clubs/{club_url}/subscription/portal/": {
            "post": {
                "operationId": "member_clubs_subscription_portal_create",
                "description": "Create Stripe Customer Portal session for member to manage subscription.",
                "parameters": [
                    {
                        "in": "path",
                        "name": "club_url",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "member"
                ],
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "200": {
                        "description": "No response body"
                    }
                }
            }
        },
        "/api/member/feed/": {
            "get": {
                "operationId": "member_feed_retrieve",
                "description": "Events and notifications across every club the signed-in account belongs to.",
                "tags": [
                    "member"
                ],
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "200": {
                        "description": "No response body"
                    }
                }
            }
        },
        "/api/member/notifications/": {
            "delete": {
                "operationId": "member_notifications_destroy",
                "description": "DELETE clears every notification currently in the account's feed.",
                "tags": [
                    "member"
                ],
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "204": {
                        "description": "No response body"
                    }
                }
            }
        },
        "/api/member/notifications/{notification_id}/": {
            "delete": {
                "operationId": "member_notifications_destroy_2",
                "description": "DELETE dismisses one notification from the account's feed.",
                "parameters": [
                    {
                        "in": "path",
                        "name": "notification_id",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "member"
                ],
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "204": {
                        "description": "No response body"
                    }
                }
            }
        },
        "/api/oauth/consent/": {
            "get": {
                "operationId": "oauth_consent_retrieve",
                "description": "GET  /api/oauth/consent/?<authorize params>: who is asking (client name,\n     redirect host) and for what, for the consent screen.\nPOST /api/oauth/consent/ {<authorize params>, allow}: approve or deny;\n     returns {\"redirect_to\": <URL on the client>}.\n\nOnly a website session can approve, never an API key or OAuth token.",
                "tags": [
                    "oauth"
                ],
                "security": [
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "200": {
                        "description": "No response body"
                    }
                }
            },
            "post": {
                "operationId": "oauth_consent_create",
                "description": "GET  /api/oauth/consent/?<authorize params>: who is asking (client name,\n     redirect host) and for what, for the consent screen.\nPOST /api/oauth/consent/ {<authorize params>, allow}: approve or deny;\n     returns {\"redirect_to\": <URL on the client>}.\n\nOnly a website session can approve, never an API key or OAuth token.",
                "tags": [
                    "oauth"
                ],
                "security": [
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "200": {
                        "description": "No response body"
                    }
                }
            }
        },
        "/api/partner-venues/": {
            "get": {
                "operationId": "partner_venues_list",
                "description": "Authenticated endpoint for organizers to browse partner venues.",
                "tags": [
                    "partner-venues"
                ],
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "200": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/PartnerVenue"
                                    }
                                }
                            }
                        },
                        "description": ""
                    }
                }
            }
        },
        "/api/public/clubs/": {
            "get": {
                "operationId": "public_clubs_retrieve",
                "description": "Public clubs for the explore page. ?q= searches, ?topic= filters by topic,\n?city= keeps clubs running in that city, ?sort=popular|new orders,\n?limit= caps the list.",
                "tags": [
                    "public"
                ],
                "security": [
                    {}
                ],
                "responses": {
                    "200": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ExploreClub"
                                }
                            }
                        },
                        "description": ""
                    }
                }
            }
        },
        "/api/public/clubs/{club_url}/contact/": {
            "post": {
                "operationId": "public_clubs_contact_create",
                "description": "POST a message to the club's organizer from the club website. Signed-in\nsenders are identified by their account; signed-out senders give an email.",
                "parameters": [
                    {
                        "in": "path",
                        "name": "club_url",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "public"
                ],
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/ClubContact"
                            }
                        },
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "$ref": "#/components/schemas/ClubContact"
                            }
                        },
                        "multipart/form-data": {
                            "schema": {
                                "$ref": "#/components/schemas/ClubContact"
                            }
                        }
                    },
                    "required": true
                },
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    },
                    {}
                ],
                "responses": {
                    "200": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ClubContact"
                                }
                            }
                        },
                        "description": ""
                    }
                }
            }
        },
        "/api/public/clubs/{club_url}/events/{event_id}/": {
            "get": {
                "operationId": "public_clubs_events_retrieve",
                "description": "Public endpoint to get event details for members.\nIncludes event info and whether it has registration questions.\nPrivate clubs' events are only shown to their members and owner.",
                "parameters": [
                    {
                        "in": "path",
                        "name": "club_url",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    },
                    {
                        "in": "path",
                        "name": "event_id",
                        "schema": {
                            "type": "integer"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "public"
                ],
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    },
                    {}
                ],
                "responses": {
                    "200": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Event"
                                }
                            }
                        },
                        "description": ""
                    }
                }
            }
        },
        "/api/public/clubs/{club_url}/events/{event_id}/questions/": {
            "get": {
                "operationId": "public_clubs_events_questions_list",
                "description": "Public endpoint to get event-specific signup questions.\nUsed during member event registration flow.",
                "parameters": [
                    {
                        "in": "path",
                        "name": "club_url",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    },
                    {
                        "in": "path",
                        "name": "event_id",
                        "schema": {
                            "type": "integer"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "public"
                ],
                "security": [
                    {}
                ],
                "responses": {
                    "200": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/PublicSignupQuestion"
                                    }
                                }
                            }
                        },
                        "description": ""
                    }
                }
            }
        },
        "/api/public/clubs/{club_url}/signup-questions/": {
            "get": {
                "operationId": "public_clubs_signup_questions_list",
                "description": "Public endpoint to get club-level signup questions.\nUsed during member onboarding flow.",
                "parameters": [
                    {
                        "in": "path",
                        "name": "club_url",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "public"
                ],
                "security": [
                    {}
                ],
                "responses": {
                    "200": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/PublicSignupQuestion"
                                    }
                                }
                            }
                        },
                        "description": ""
                    }
                }
            }
        },
        "/api/public/clubs/{url}/": {
            "get": {
                "operationId": "public_clubs_retrieve_2",
                "description": "Public endpoint to retrieve club website data by URL slug. Private clubs'\nevents are only included for their members and owner.",
                "parameters": [
                    {
                        "in": "path",
                        "name": "url",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "public"
                ],
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    },
                    {}
                ],
                "responses": {
                    "200": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/PublicClub"
                                }
                            }
                        },
                        "description": ""
                    }
                }
            }
        },
        "/api/public/discover/events/": {
            "get": {
                "operationId": "public_discover_events_list",
                "description": "Public endpoint returning upcoming events from all profile-type,\nnon-paused clubs for the discover page.",
                "parameters": [
                    {
                        "name": "page",
                        "required": false,
                        "in": "query",
                        "description": "A page number within the paginated result set.",
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "page_size",
                        "required": false,
                        "in": "query",
                        "description": "Number of results to return per page.",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "tags": [
                    "public"
                ],
                "security": [
                    {}
                ],
                "responses": {
                    "200": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/PaginatedDiscoverEventList"
                                }
                            }
                        },
                        "description": ""
                    }
                }
            }
        },
        "/api/public/partner-venues/": {
            "post": {
                "operationId": "public_partner_venues_create",
                "description": "Public endpoint for partner venue submissions. No auth required.",
                "tags": [
                    "public"
                ],
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    },
                    {}
                ],
                "responses": {
                    "200": {
                        "description": "No response body"
                    }
                }
            }
        },
        "/api/public/stats/": {
            "get": {
                "operationId": "public_stats_retrieve",
                "description": "Public endpoint returning aggregate platform stats for marketing pages.",
                "tags": [
                    "public"
                ],
                "security": [
                    {}
                ],
                "responses": {
                    "200": {
                        "description": "No response body"
                    }
                }
            }
        },
        "/api/support-requests/": {
            "get": {
                "operationId": "support_requests_list",
                "description": "ViewSet for managing support requests from authenticated users.",
                "tags": [
                    "support-requests"
                ],
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "200": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/SupportRequest"
                                    }
                                }
                            }
                        },
                        "description": ""
                    }
                }
            },
            "post": {
                "operationId": "support_requests_create",
                "description": "ViewSet for managing support requests from authenticated users.",
                "tags": [
                    "support-requests"
                ],
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/SupportRequest"
                            }
                        },
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "$ref": "#/components/schemas/SupportRequest"
                            }
                        },
                        "multipart/form-data": {
                            "schema": {
                                "$ref": "#/components/schemas/SupportRequest"
                            }
                        }
                    },
                    "required": true
                },
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "201": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/SupportRequest"
                                }
                            }
                        },
                        "description": ""
                    }
                }
            }
        },
        "/api/support-requests/{id}/": {
            "get": {
                "operationId": "support_requests_retrieve",
                "description": "ViewSet for managing support requests from authenticated users.",
                "parameters": [
                    {
                        "in": "path",
                        "name": "id",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "support-requests"
                ],
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "200": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/SupportRequest"
                                }
                            }
                        },
                        "description": ""
                    }
                }
            },
            "put": {
                "operationId": "support_requests_update",
                "description": "ViewSet for managing support requests from authenticated users.",
                "parameters": [
                    {
                        "in": "path",
                        "name": "id",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "support-requests"
                ],
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/SupportRequest"
                            }
                        },
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "$ref": "#/components/schemas/SupportRequest"
                            }
                        },
                        "multipart/form-data": {
                            "schema": {
                                "$ref": "#/components/schemas/SupportRequest"
                            }
                        }
                    },
                    "required": true
                },
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "200": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/SupportRequest"
                                }
                            }
                        },
                        "description": ""
                    }
                }
            },
            "patch": {
                "operationId": "support_requests_partial_update",
                "description": "ViewSet for managing support requests from authenticated users.",
                "parameters": [
                    {
                        "in": "path",
                        "name": "id",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "support-requests"
                ],
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/PatchedSupportRequest"
                            }
                        },
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "$ref": "#/components/schemas/PatchedSupportRequest"
                            }
                        },
                        "multipart/form-data": {
                            "schema": {
                                "$ref": "#/components/schemas/PatchedSupportRequest"
                            }
                        }
                    }
                },
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "200": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/SupportRequest"
                                }
                            }
                        },
                        "description": ""
                    }
                }
            },
            "delete": {
                "operationId": "support_requests_destroy",
                "description": "ViewSet for managing support requests from authenticated users.",
                "parameters": [
                    {
                        "in": "path",
                        "name": "id",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "support-requests"
                ],
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "204": {
                        "description": "No response body"
                    }
                }
            }
        },
        "/api/token/": {
            "get": {
                "operationId": "token_retrieve",
                "tags": [
                    "token"
                ],
                "security": [
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "200": {
                        "description": "No response body"
                    }
                }
            }
        },
        "/api/unsplash/search/": {
            "get": {
                "operationId": "unsplash_search_retrieve",
                "tags": [
                    "unsplash"
                ],
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "200": {
                        "description": "No response body"
                    }
                }
            },
            "post": {
                "operationId": "unsplash_search_create",
                "tags": [
                    "unsplash"
                ],
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "200": {
                        "description": "No response body"
                    }
                }
            }
        },
        "/api/users/": {
            "get": {
                "operationId": "users_list",
                "description": "The signed-in account (staff see every account). Accounts are created by\nFirebase sign-in and deleted through /api/account/delete/.",
                "tags": [
                    "users"
                ],
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "200": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/SelfUser"
                                    }
                                }
                            }
                        },
                        "description": ""
                    }
                }
            }
        },
        "/api/users/{username}/": {
            "get": {
                "operationId": "users_retrieve",
                "description": "The signed-in account (staff see every account). Accounts are created by\nFirebase sign-in and deleted through /api/account/delete/.",
                "parameters": [
                    {
                        "in": "path",
                        "name": "username",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "users"
                ],
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "200": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/SelfUser"
                                }
                            }
                        },
                        "description": ""
                    }
                }
            },
            "put": {
                "operationId": "users_update",
                "description": "The signed-in account (staff see every account). Accounts are created by\nFirebase sign-in and deleted through /api/account/delete/.",
                "parameters": [
                    {
                        "in": "path",
                        "name": "username",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "users"
                ],
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/SelfUser"
                            }
                        },
                        "multipart/form-data": {
                            "schema": {
                                "$ref": "#/components/schemas/SelfUser"
                            }
                        },
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "$ref": "#/components/schemas/SelfUser"
                            }
                        }
                    }
                },
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "200": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/SelfUser"
                                }
                            }
                        },
                        "description": ""
                    }
                }
            },
            "patch": {
                "operationId": "users_partial_update",
                "description": "The signed-in account (staff see every account). Accounts are created by\nFirebase sign-in and deleted through /api/account/delete/.",
                "parameters": [
                    {
                        "in": "path",
                        "name": "username",
                        "schema": {
                            "type": "string"
                        },
                        "required": true
                    }
                ],
                "tags": [
                    "users"
                ],
                "requestBody": {
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/PatchedSelfUser"
                            }
                        },
                        "multipart/form-data": {
                            "schema": {
                                "$ref": "#/components/schemas/PatchedSelfUser"
                            }
                        },
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "$ref": "#/components/schemas/PatchedSelfUser"
                            }
                        }
                    }
                },
                "security": [
                    {
                        "apiKey": []
                    },
                    {
                        "cookieAuth": []
                    },
                    {
                        "websiteSession": []
                    }
                ],
                "responses": {
                    "200": {
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/SelfUser"
                                }
                            }
                        },
                        "description": ""
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "Activity": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer",
                        "readOnly": true
                    },
                    "club": {
                        "type": "integer"
                    },
                    "activity_type": {
                        "$ref": "#/components/schemas/ActivityTypeEnum"
                    },
                    "text": {
                        "type": "string",
                        "maxLength": 500
                    },
                    "member": {
                        "type": "integer",
                        "nullable": true
                    },
                    "event": {
                        "type": "integer",
                        "nullable": true
                    },
                    "created_at": {
                        "type": "string",
                        "format": "date-time",
                        "readOnly": true
                    }
                },
                "required": [
                    "activity_type",
                    "club",
                    "created_at",
                    "id",
                    "text"
                ]
            },
            "ActivityTypeEnum": {
                "enum": [
                    "signup",
                    "new_member",
                    "payment",
                    "group_formed",
                    "event_completed",
                    "event_created",
                    "member_cancelled"
                ],
                "type": "string",
                "description": "* `signup` - Event Signup\n* `new_member` - New Member\n* `payment` - Payment\n* `group_formed` - Group Formed\n* `event_completed` - Event Completed\n* `event_created` - Event Created\n* `member_cancelled` - Member Cancelled"
            },
            "AgentClaimEmail": {
                "type": "object",
                "properties": {
                    "owner_email": {
                        "type": "string",
                        "format": "email",
                        "maxLength": 128
                    }
                }
            },
            "AgentSignup": {
                "type": "object",
                "properties": {
                    "agent_name": {
                        "type": "string",
                        "maxLength": 200
                    },
                    "operator": {
                        "type": "string",
                        "default": "custom",
                        "maxLength": 100
                    },
                    "owner_email": {
                        "type": "string",
                        "format": "email",
                        "maxLength": 128
                    }
                },
                "required": [
                    "agent_name",
                    "owner_email"
                ]
            },
            "AssignmentTypeEnum": {
                "enum": [
                    "random",
                    "first_come",
                    "manual",
                    "balanced"
                ],
                "type": "string",
                "description": "* `random` - Random\n* `first_come` - First Come First Served\n* `manual` - Manual Assignment\n* `balanced` - Balanced Distribution"
            },
            "BillingCycleEnum": {
                "enum": [
                    "monthly",
                    "yearly"
                ],
                "type": "string",
                "description": "* `monthly` - Monthly\n* `yearly` - Yearly"
            },
            "Club": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer",
                        "readOnly": true
                    },
                    "owner": {
                        "type": "integer",
                        "readOnly": true
                    },
                    "name": {
                        "type": "string",
                        "maxLength": 255
                    },
                    "url": {
                        "type": "string",
                        "maxLength": 100,
                        "pattern": "^[-a-zA-Z0-9_]+$"
                    },
                    "cities": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/ClubCity"
                        },
                        "readOnly": true
                    },
                    "has_multiple_cities": {
                        "type": "boolean",
                        "readOnly": true
                    },
                    "requires_city_selection": {
                        "type": "boolean",
                        "readOnly": true
                    },
                    "img_logo": {
                        "type": "string",
                        "maxLength": 500
                    },
                    "img_hero": {
                        "type": "string",
                        "maxLength": 500
                    },
                    "img_cta": {
                        "type": "string",
                        "maxLength": 500
                    },
                    "logo_icon": {
                        "type": "string",
                        "maxLength": 100
                    },
                    "description": {
                        "type": "string"
                    },
                    "audience": {
                        "type": "string",
                        "maxLength": 120
                    },
                    "link_website": {
                        "type": "string",
                        "format": "uri",
                        "maxLength": 500
                    },
                    "link_instagram": {
                        "type": "string",
                        "format": "uri",
                        "maxLength": 500
                    },
                    "link_youtube": {
                        "type": "string",
                        "format": "uri",
                        "maxLength": 500
                    },
                    "link_linkedin": {
                        "type": "string",
                        "format": "uri",
                        "maxLength": 500
                    },
                    "link_tiktok": {
                        "type": "string",
                        "format": "uri",
                        "maxLength": 500
                    },
                    "original_prompt": {
                        "type": "string",
                        "readOnly": true
                    },
                    "created_at": {
                        "type": "string",
                        "format": "date-time",
                        "readOnly": true
                    },
                    "updated_at": {
                        "type": "string",
                        "format": "date-time",
                        "readOnly": true
                    },
                    "is_paused": {
                        "type": "boolean",
                        "description": "When paused, the club website is hidden and new signups are disabled"
                    },
                    "notify_new_member_welcome": {
                        "type": "boolean"
                    },
                    "notify_organizer_new_member": {
                        "type": "boolean"
                    },
                    "notify_organizer_event_signup": {
                        "type": "boolean"
                    },
                    "notify_member_event_reminder": {
                        "type": "boolean"
                    },
                    "notify_member_event_updates": {
                        "type": "boolean"
                    },
                    "event_visibility_window": {
                        "allOf": [
                            {
                                "$ref": "#/components/schemas/EventVisibilityWindowEnum"
                            }
                        ],
                        "description": "How far in advance to show events to members\n\n* `1_week` - 1 Week\n* `2_weeks` - 2 Weeks\n* `1_month` - 1 Month\n* `3_months` - 3 Months\n* `6_months` - 6 Months"
                    },
                    "subscription_enabled": {
                        "type": "boolean",
                        "readOnly": true,
                        "description": "Enable member subscriptions"
                    },
                    "subscription_price": {
                        "type": "integer",
                        "readOnly": true,
                        "nullable": true,
                        "description": "Monthly subscription price in cents"
                    },
                    "subscription_required_on_signup": {
                        "type": "boolean",
                        "readOnly": true,
                        "description": "Require members to subscribe during signup"
                    },
                    "stripe_subscription_product_id": {
                        "type": "string",
                        "readOnly": true,
                        "description": "Stripe Product ID for club subscription"
                    },
                    "stripe_subscription_price_id": {
                        "type": "string",
                        "readOnly": true,
                        "description": "Stripe Price ID for monthly subscription"
                    },
                    "onboarding_completed": {
                        "description": "List of completed onboarding item IDs"
                    },
                    "website_type": {
                        "allOf": [
                            {
                                "$ref": "#/components/schemas/WebsiteType076Enum"
                            }
                        ],
                        "description": "Private: members sign up to see events. Public: events are publicly visible.\n\n* `private` - Private\n* `public` - Public"
                    }
                },
                "required": [
                    "cities",
                    "created_at",
                    "has_multiple_cities",
                    "id",
                    "name",
                    "original_prompt",
                    "owner",
                    "requires_city_selection",
                    "stripe_subscription_price_id",
                    "stripe_subscription_product_id",
                    "subscription_enabled",
                    "subscription_price",
                    "subscription_required_on_signup",
                    "updated_at",
                    "url"
                ]
            },
            "ClubAsset": {
                "type": "object",
                "description": "Serializer for club assets.",
                "properties": {
                    "id": {
                        "type": "integer",
                        "readOnly": true
                    },
                    "club": {
                        "type": "integer",
                        "readOnly": true
                    },
                    "url": {
                        "type": "string",
                        "readOnly": true
                    },
                    "filename": {
                        "type": "string",
                        "readOnly": true
                    },
                    "file_size": {
                        "type": "integer",
                        "readOnly": true
                    },
                    "width": {
                        "type": "integer",
                        "readOnly": true,
                        "nullable": true
                    },
                    "height": {
                        "type": "integer",
                        "readOnly": true,
                        "nullable": true
                    },
                    "alt_text": {
                        "type": "string",
                        "maxLength": 255
                    },
                    "created_at": {
                        "type": "string",
                        "format": "date-time",
                        "readOnly": true
                    }
                },
                "required": [
                    "club",
                    "created_at",
                    "file_size",
                    "filename",
                    "height",
                    "id",
                    "url",
                    "width"
                ]
            },
            "ClubCity": {
                "type": "object",
                "description": "Serializer for club cities.",
                "properties": {
                    "id": {
                        "type": "integer",
                        "readOnly": true
                    },
                    "club": {
                        "type": "integer",
                        "readOnly": true
                    },
                    "name": {
                        "type": "string",
                        "maxLength": 255
                    },
                    "is_primary": {
                        "type": "boolean"
                    },
                    "members_count": {
                        "type": "string",
                        "readOnly": true
                    },
                    "created_at": {
                        "type": "string",
                        "format": "date-time",
                        "readOnly": true
                    }
                },
                "required": [
                    "club",
                    "created_at",
                    "id",
                    "members_count",
                    "name"
                ]
            },
            "ClubContact": {
                "type": "object",
                "description": "What the club website's contact form sends.",
                "properties": {
                    "message": {
                        "type": "string",
                        "maxLength": 2000
                    },
                    "email": {
                        "type": "string",
                        "format": "email"
                    }
                },
                "required": [
                    "message"
                ]
            },
            "ClubMessage": {
                "type": "object",
                "description": "A contact message as the club owner sees it.",
                "properties": {
                    "id": {
                        "type": "integer",
                        "readOnly": true
                    },
                    "name": {
                        "type": "string",
                        "readOnly": true
                    },
                    "email": {
                        "type": "string",
                        "format": "email",
                        "readOnly": true
                    },
                    "message": {
                        "type": "string",
                        "readOnly": true
                    },
                    "created_at": {
                        "type": "string",
                        "format": "date-time",
                        "readOnly": true
                    }
                },
                "required": [
                    "created_at",
                    "email",
                    "id",
                    "message",
                    "name"
                ]
            },
            "ConstraintEnum": {
                "enum": [
                    "must_match",
                    "must_not_match",
                    "equal_distribution",
                    "nice_to_match",
                    "nice_to_not_match"
                ],
                "type": "string",
                "description": "* `must_match` - Must Match\n* `must_not_match` - Must Not Match\n* `equal_distribution` - Equal Distribution\n* `nice_to_match` - Nice to Match\n* `nice_to_not_match` - Nice to Not Match"
            },
            "CreateClub": {
                "type": "object",
                "description": "What clubs.services.create_club needs: the copy is written by the person or their agent.",
                "properties": {
                    "name": {
                        "type": "string",
                        "maxLength": 255
                    },
                    "description": {
                        "type": "string",
                        "maxLength": 2000
                    },
                    "city": {
                        "type": "string",
                        "maxLength": 255
                    },
                    "audience": {
                        "type": "string",
                        "default": "",
                        "maxLength": 200
                    },
                    "website_type": {
                        "allOf": [
                            {
                                "$ref": "#/components/schemas/CreateClubWebsiteTypeEnum"
                            }
                        ],
                        "default": "public"
                    },
                    "logo_icon": {
                        "type": "string",
                        "default": "IconAirBalloonFilled",
                        "maxLength": 100,
                        "pattern": "^Icon[A-Za-z0-9]+$"
                    },
                    "event": {
                        "allOf": [
                            {
                                "$ref": "#/components/schemas/CreateClubEvent"
                            }
                        ],
                        "nullable": true
                    }
                },
                "required": [
                    "city",
                    "description",
                    "name"
                ]
            },
            "CreateClubEvent": {
                "type": "object",
                "description": "The optional first event of a new club: one event per date.",
                "properties": {
                    "name": {
                        "type": "string",
                        "maxLength": 255
                    },
                    "dates": {
                        "type": "array",
                        "items": {
                            "type": "string",
                            "format": "date"
                        },
                        "maxItems": 52
                    },
                    "time": {
                        "type": "string",
                        "format": "time",
                        "default": "18:00:00"
                    },
                    "frequency": {
                        "allOf": [
                            {
                                "$ref": "#/components/schemas/FrequencyEnum"
                            }
                        ],
                        "default": "weekly"
                    },
                    "group_size": {
                        "type": "integer",
                        "maximum": 100,
                        "minimum": 1,
                        "nullable": true,
                        "default": 4
                    },
                    "description": {
                        "type": "string",
                        "default": ""
                    },
                    "cost": {
                        "type": "string",
                        "nullable": true
                    }
                },
                "required": [
                    "name"
                ]
            },
            "CreateClubWebsiteTypeEnum": {
                "enum": [
                    "public",
                    "private"
                ],
                "type": "string",
                "description": "* `public` - public\n* `private` - private"
            },
            "DiscoverEvent": {
                "type": "object",
                "description": "Lightweight serializer for discover page - only fields the card uses.",
                "properties": {
                    "id": {
                        "type": "integer",
                        "readOnly": true
                    },
                    "name": {
                        "type": "string",
                        "maxLength": 255
                    },
                    "date": {
                        "type": "string",
                        "format": "date"
                    },
                    "thumbnail": {
                        "type": "string",
                        "description": "URL to event thumbnail image"
                    },
                    "club_name": {
                        "type": "string",
                        "readOnly": true
                    },
                    "club_url": {
                        "type": "string",
                        "readOnly": true
                    },
                    "club_logo": {
                        "type": "string",
                        "readOnly": true
                    },
                    "city": {
                        "type": "string",
                        "readOnly": true
                    }
                },
                "required": [
                    "city",
                    "club_logo",
                    "club_name",
                    "club_url",
                    "date",
                    "id",
                    "name"
                ]
            },
            "Event": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer",
                        "readOnly": true
                    },
                    "club": {
                        "type": "integer",
                        "readOnly": true
                    },
                    "city": {
                        "type": "integer",
                        "nullable": true
                    },
                    "city_name": {
                        "type": "string",
                        "readOnly": true,
                        "default": ""
                    },
                    "name": {
                        "type": "string",
                        "maxLength": 255
                    },
                    "date": {
                        "type": "string",
                        "format": "date"
                    },
                    "time": {
                        "type": "string",
                        "format": "time"
                    },
                    "end_time": {
                        "type": "string",
                        "format": "time",
                        "nullable": true
                    },
                    "venue": {
                        "type": "string",
                        "maxLength": 255
                    },
                    "venue_address": {
                        "type": "string",
                        "maxLength": 500
                    },
                    "capacity": {
                        "type": "integer",
                        "maximum": 2147483647,
                        "minimum": 0,
                        "nullable": true
                    },
                    "group_size": {
                        "type": "integer",
                        "maximum": 2147483647,
                        "minimum": 0,
                        "nullable": true
                    },
                    "status": {
                        "$ref": "#/components/schemas/Status138Enum"
                    },
                    "description": {
                        "type": "string"
                    },
                    "thumbnail": {
                        "type": "string",
                        "description": "URL to event thumbnail image"
                    },
                    "signup_deadline": {
                        "type": "string",
                        "format": "date-time",
                        "nullable": true
                    },
                    "notifications_date": {
                        "type": "string",
                        "format": "date-time",
                        "nullable": true
                    },
                    "recurrence": {
                        "$ref": "#/components/schemas/RecurrenceEnum"
                    },
                    "recurrence_end_date": {
                        "type": "string",
                        "format": "date",
                        "nullable": true
                    },
                    "parent_event": {
                        "type": "integer",
                        "nullable": true
                    },
                    "is_recurring": {
                        "type": "boolean",
                        "readOnly": true
                    },
                    "chat_enabled": {
                        "type": "boolean",
                        "description": "Members can chat on the event page"
                    },
                    "signups": {
                        "type": "integer",
                        "readOnly": true
                    },
                    "groups_count": {
                        "type": "string",
                        "readOnly": true
                    },
                    "created_at": {
                        "type": "string",
                        "format": "date-time",
                        "readOnly": true
                    },
                    "updated_at": {
                        "type": "string",
                        "format": "date-time",
                        "readOnly": true
                    },
                    "cost": {
                        "type": "integer",
                        "maximum": 2147483647,
                        "minimum": -2147483648,
                        "nullable": true,
                        "description": "Event cost in cents (null = free)"
                    },
                    "stripe_product_id": {
                        "type": "string",
                        "readOnly": true,
                        "description": "Stripe Product ID for this event"
                    },
                    "stripe_price_id": {
                        "type": "string",
                        "readOnly": true,
                        "description": "Stripe Price ID for one-time event payment"
                    }
                },
                "required": [
                    "city_name",
                    "club",
                    "created_at",
                    "date",
                    "groups_count",
                    "id",
                    "is_recurring",
                    "name",
                    "signups",
                    "stripe_price_id",
                    "stripe_product_id",
                    "time",
                    "updated_at"
                ]
            },
            "EventDetail": {
                "type": "object",
                "description": "Extended serializer for event detail view with groups, signups, and questions.",
                "properties": {
                    "id": {
                        "type": "integer",
                        "readOnly": true
                    },
                    "club": {
                        "type": "integer",
                        "readOnly": true
                    },
                    "city": {
                        "type": "integer",
                        "nullable": true
                    },
                    "city_name": {
                        "type": "string",
                        "readOnly": true,
                        "default": ""
                    },
                    "name": {
                        "type": "string",
                        "maxLength": 255
                    },
                    "date": {
                        "type": "string",
                        "format": "date"
                    },
                    "time": {
                        "type": "string",
                        "format": "time"
                    },
                    "end_time": {
                        "type": "string",
                        "format": "time",
                        "nullable": true
                    },
                    "venue": {
                        "type": "string",
                        "maxLength": 255
                    },
                    "venue_address": {
                        "type": "string",
                        "maxLength": 500
                    },
                    "capacity": {
                        "type": "integer",
                        "maximum": 2147483647,
                        "minimum": 0,
                        "nullable": true
                    },
                    "group_size": {
                        "type": "integer",
                        "maximum": 2147483647,
                        "minimum": 0,
                        "nullable": true
                    },
                    "status": {
                        "$ref": "#/components/schemas/Status138Enum"
                    },
                    "description": {
                        "type": "string"
                    },
                    "thumbnail": {
                        "type": "string",
                        "description": "URL to event thumbnail image"
                    },
                    "signup_deadline": {
                        "type": "string",
                        "format": "date-time",
                        "nullable": true
                    },
                    "notifications_date": {
                        "type": "string",
                        "format": "date-time",
                        "nullable": true
                    },
                    "recurrence": {
                        "$ref": "#/components/schemas/RecurrenceEnum"
                    },
                    "recurrence_end_date": {
                        "type": "string",
                        "format": "date",
                        "nullable": true
                    },
                    "parent_event": {
                        "type": "integer",
                        "nullable": true
                    },
                    "is_recurring": {
                        "type": "boolean",
                        "readOnly": true
                    },
                    "chat_enabled": {
                        "type": "boolean",
                        "description": "Members can chat on the event page"
                    },
                    "signups": {
                        "type": "integer",
                        "readOnly": true
                    },
                    "groups_count": {
                        "type": "string",
                        "readOnly": true
                    },
                    "created_at": {
                        "type": "string",
                        "format": "date-time",
                        "readOnly": true
                    },
                    "updated_at": {
                        "type": "string",
                        "format": "date-time",
                        "readOnly": true
                    },
                    "cost": {
                        "type": "integer",
                        "maximum": 2147483647,
                        "minimum": -2147483648,
                        "nullable": true,
                        "description": "Event cost in cents (null = free)"
                    },
                    "stripe_product_id": {
                        "type": "string",
                        "readOnly": true,
                        "description": "Stripe Product ID for this event"
                    },
                    "stripe_price_id": {
                        "type": "string",
                        "readOnly": true,
                        "description": "Stripe Price ID for one-time event payment"
                    },
                    "groups": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/Group"
                        },
                        "readOnly": true
                    },
                    "event_signups": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/EventSignup"
                        },
                        "readOnly": true
                    },
                    "signup_questions": {
                        "type": "string",
                        "readOnly": true
                    }
                },
                "required": [
                    "city_name",
                    "club",
                    "created_at",
                    "date",
                    "event_signups",
                    "groups",
                    "groups_count",
                    "id",
                    "is_recurring",
                    "name",
                    "signup_questions",
                    "signups",
                    "stripe_price_id",
                    "stripe_product_id",
                    "time",
                    "updated_at"
                ]
            },
            "EventSignup": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer",
                        "readOnly": true
                    },
                    "event": {
                        "type": "integer"
                    },
                    "member": {
                        "allOf": [
                            {
                                "$ref": "#/components/schemas/Member"
                            }
                        ],
                        "readOnly": true
                    },
                    "member_id": {
                        "type": "integer",
                        "writeOnly": true
                    },
                    "signed_up_at": {
                        "type": "string",
                        "format": "date-time",
                        "readOnly": true
                    },
                    "attended": {
                        "type": "boolean"
                    }
                },
                "required": [
                    "event",
                    "id",
                    "member",
                    "member_id",
                    "signed_up_at"
                ]
            },
            "EventVisibilityWindowEnum": {
                "enum": [
                    "1_week",
                    "2_weeks",
                    "1_month",
                    "3_months",
                    "6_months"
                ],
                "type": "string",
                "description": "* `1_week` - 1 Week\n* `2_weeks` - 2 Weeks\n* `1_month` - 1 Month\n* `3_months` - 3 Months\n* `6_months` - 6 Months"
            },
            "ExploreClub": {
                "type": "object",
                "description": "A club as a tile on the explore page.",
                "properties": {
                    "id": {
                        "type": "integer",
                        "readOnly": true
                    },
                    "name": {
                        "type": "string",
                        "maxLength": 255
                    },
                    "url": {
                        "type": "string",
                        "maxLength": 100,
                        "pattern": "^[-a-zA-Z0-9_]+$"
                    },
                    "img_logo": {
                        "type": "string",
                        "maxLength": 500
                    },
                    "img_hero": {
                        "type": "string",
                        "maxLength": 500
                    },
                    "logo_icon": {
                        "type": "string",
                        "maxLength": 100
                    },
                    "audience": {
                        "type": "string",
                        "maxLength": 120
                    },
                    "city": {
                        "type": "string",
                        "readOnly": true
                    }
                },
                "required": [
                    "city",
                    "id",
                    "name",
                    "url"
                ]
            },
            "FrequencyEnum": {
                "enum": [
                    "none",
                    "weekly",
                    "biweekly",
                    "monthly"
                ],
                "type": "string",
                "description": "* `none` - none\n* `weekly` - weekly\n* `biweekly` - biweekly\n* `monthly` - monthly"
            },
            "Group": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer",
                        "readOnly": true
                    },
                    "event": {
                        "type": "integer",
                        "readOnly": true
                    },
                    "members": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/Member"
                        },
                        "readOnly": true
                    },
                    "member_ids": {
                        "type": "array",
                        "items": {
                            "type": "integer",
                            "writeOnly": true
                        },
                        "writeOnly": true
                    },
                    "tee_time": {
                        "type": "string",
                        "format": "time",
                        "nullable": true
                    },
                    "venue": {
                        "type": "string",
                        "maxLength": 255
                    },
                    "assigned_venue": {
                        "type": "integer",
                        "nullable": true
                    },
                    "created_at": {
                        "type": "string",
                        "format": "date-time",
                        "readOnly": true
                    }
                },
                "required": [
                    "created_at",
                    "event",
                    "id",
                    "members"
                ]
            },
            "InviteRequest": {
                "type": "object",
                "properties": {
                    "emails": {
                        "type": "array",
                        "items": {
                            "type": "string",
                            "format": "email"
                        },
                        "maxItems": 5
                    },
                    "message": {
                        "type": "string",
                        "maxLength": 1000
                    }
                },
                "required": [
                    "emails"
                ]
            },
            "MatchingConfiguration": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer",
                        "readOnly": true
                    },
                    "event": {
                        "type": "integer",
                        "readOnly": true
                    },
                    "mode": {
                        "$ref": "#/components/schemas/ModeEnum"
                    },
                    "rules": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/MatchingRule"
                        },
                        "readOnly": true
                    },
                    "created_at": {
                        "type": "string",
                        "format": "date-time",
                        "readOnly": true
                    },
                    "updated_at": {
                        "type": "string",
                        "format": "date-time",
                        "readOnly": true
                    }
                },
                "required": [
                    "created_at",
                    "event",
                    "id",
                    "rules",
                    "updated_at"
                ]
            },
            "MatchingRule": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer",
                        "readOnly": true
                    },
                    "question": {
                        "type": "integer"
                    },
                    "question_text": {
                        "type": "string",
                        "readOnly": true
                    },
                    "question_type": {
                        "type": "string",
                        "readOnly": true
                    },
                    "question_options": {
                        "readOnly": true
                    },
                    "constraint": {
                        "$ref": "#/components/schemas/ConstraintEnum"
                    },
                    "is_active": {
                        "type": "boolean"
                    },
                    "created_at": {
                        "type": "string",
                        "format": "date-time",
                        "readOnly": true
                    }
                },
                "required": [
                    "constraint",
                    "created_at",
                    "id",
                    "question",
                    "question_options",
                    "question_text",
                    "question_type"
                ]
            },
            "Member": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer",
                        "readOnly": true
                    },
                    "club": {
                        "type": "integer"
                    },
                    "user": {
                        "type": "integer",
                        "readOnly": true
                    },
                    "name": {
                        "type": "string",
                        "maxLength": 255
                    },
                    "email": {
                        "type": "string",
                        "format": "email",
                        "maxLength": 254
                    },
                    "city": {
                        "type": "integer",
                        "nullable": true
                    },
                    "city_name": {
                        "type": "string",
                        "readOnly": true,
                        "nullable": true
                    },
                    "membership_status": {
                        "$ref": "#/components/schemas/MembershipStatusEnum"
                    },
                    "events_attended": {
                        "type": "integer",
                        "readOnly": true
                    },
                    "joined_at": {
                        "type": "string",
                        "format": "date-time",
                        "readOnly": true
                    },
                    "membership_expires_at": {
                        "type": "string",
                        "format": "date-time",
                        "nullable": true
                    }
                },
                "required": [
                    "city_name",
                    "club",
                    "email",
                    "events_attended",
                    "id",
                    "joined_at",
                    "user"
                ]
            },
            "MemberEmailRequest": {
                "type": "object",
                "properties": {
                    "template": {
                        "$ref": "#/components/schemas/TemplateEnum"
                    },
                    "event_id": {
                        "type": "integer",
                        "description": "Needed by event_reminder and event_followup."
                    }
                },
                "required": [
                    "template"
                ]
            },
            "MembershipStatusEnum": {
                "enum": [
                    "active",
                    "expired",
                    "free"
                ],
                "type": "string",
                "description": "* `active` - Active\n* `expired` - Expired\n* `free` - Free"
            },
            "ModeEnum": {
                "enum": [
                    "sequential",
                    "intelligent",
                    "random"
                ],
                "type": "string",
                "description": "* `sequential` - Sequential\n* `intelligent` - Intelligent\n* `random` - Random"
            },
            "PaginatedDiscoverEventList": {
                "type": "object",
                "required": [
                    "count",
                    "results"
                ],
                "properties": {
                    "count": {
                        "type": "integer",
                        "example": 123
                    },
                    "next": {
                        "type": "string",
                        "nullable": true,
                        "format": "uri",
                        "example": "http://api.example.org/accounts/?page=4"
                    },
                    "previous": {
                        "type": "string",
                        "nullable": true,
                        "format": "uri",
                        "example": "http://api.example.org/accounts/?page=2"
                    },
                    "results": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/DiscoverEvent"
                        }
                    }
                }
            },
            "PartnerVenue": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer",
                        "readOnly": true
                    },
                    "name": {
                        "type": "string",
                        "maxLength": 255
                    },
                    "address": {
                        "type": "string",
                        "maxLength": 500
                    },
                    "city": {
                        "type": "string",
                        "maxLength": 255
                    },
                    "email": {
                        "type": "string",
                        "format": "email",
                        "writeOnly": true,
                        "maxLength": 254
                    },
                    "google_place_id": {
                        "type": "string",
                        "maxLength": 255
                    },
                    "latitude": {
                        "type": "string",
                        "format": "decimal",
                        "pattern": "^-?\\d{0,3}(?:\\.\\d{0,7})?$",
                        "nullable": true
                    },
                    "longitude": {
                        "type": "string",
                        "format": "decimal",
                        "pattern": "^-?\\d{0,3}(?:\\.\\d{0,7})?$",
                        "nullable": true
                    },
                    "category": {
                        "type": "string",
                        "maxLength": 100
                    },
                    "website": {
                        "type": "string",
                        "format": "uri",
                        "maxLength": 500
                    },
                    "phone": {
                        "type": "string",
                        "maxLength": 50
                    },
                    "logo_url": {
                        "type": "string",
                        "format": "uri",
                        "maxLength": 500
                    },
                    "created_at": {
                        "type": "string",
                        "format": "date-time",
                        "readOnly": true
                    }
                },
                "required": [
                    "created_at",
                    "email",
                    "id",
                    "name"
                ]
            },
            "PatchedClub": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer",
                        "readOnly": true
                    },
                    "owner": {
                        "type": "integer",
                        "readOnly": true
                    },
                    "name": {
                        "type": "string",
                        "maxLength": 255
                    },
                    "url": {
                        "type": "string",
                        "maxLength": 100,
                        "pattern": "^[-a-zA-Z0-9_]+$"
                    },
                    "cities": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/ClubCity"
                        },
                        "readOnly": true
                    },
                    "has_multiple_cities": {
                        "type": "boolean",
                        "readOnly": true
                    },
                    "requires_city_selection": {
                        "type": "boolean",
                        "readOnly": true
                    },
                    "img_logo": {
                        "type": "string",
                        "maxLength": 500
                    },
                    "img_hero": {
                        "type": "string",
                        "maxLength": 500
                    },
                    "img_cta": {
                        "type": "string",
                        "maxLength": 500
                    },
                    "logo_icon": {
                        "type": "string",
                        "maxLength": 100
                    },
                    "description": {
                        "type": "string"
                    },
                    "audience": {
                        "type": "string",
                        "maxLength": 120
                    },
                    "link_website": {
                        "type": "string",
                        "format": "uri",
                        "maxLength": 500
                    },
                    "link_instagram": {
                        "type": "string",
                        "format": "uri",
                        "maxLength": 500
                    },
                    "link_youtube": {
                        "type": "string",
                        "format": "uri",
                        "maxLength": 500
                    },
                    "link_linkedin": {
                        "type": "string",
                        "format": "uri",
                        "maxLength": 500
                    },
                    "link_tiktok": {
                        "type": "string",
                        "format": "uri",
                        "maxLength": 500
                    },
                    "original_prompt": {
                        "type": "string",
                        "readOnly": true
                    },
                    "created_at": {
                        "type": "string",
                        "format": "date-time",
                        "readOnly": true
                    },
                    "updated_at": {
                        "type": "string",
                        "format": "date-time",
                        "readOnly": true
                    },
                    "is_paused": {
                        "type": "boolean",
                        "description": "When paused, the club website is hidden and new signups are disabled"
                    },
                    "notify_new_member_welcome": {
                        "type": "boolean"
                    },
                    "notify_organizer_new_member": {
                        "type": "boolean"
                    },
                    "notify_organizer_event_signup": {
                        "type": "boolean"
                    },
                    "notify_member_event_reminder": {
                        "type": "boolean"
                    },
                    "notify_member_event_updates": {
                        "type": "boolean"
                    },
                    "event_visibility_window": {
                        "allOf": [
                            {
                                "$ref": "#/components/schemas/EventVisibilityWindowEnum"
                            }
                        ],
                        "description": "How far in advance to show events to members\n\n* `1_week` - 1 Week\n* `2_weeks` - 2 Weeks\n* `1_month` - 1 Month\n* `3_months` - 3 Months\n* `6_months` - 6 Months"
                    },
                    "subscription_enabled": {
                        "type": "boolean",
                        "readOnly": true,
                        "description": "Enable member subscriptions"
                    },
                    "subscription_price": {
                        "type": "integer",
                        "readOnly": true,
                        "nullable": true,
                        "description": "Monthly subscription price in cents"
                    },
                    "subscription_required_on_signup": {
                        "type": "boolean",
                        "readOnly": true,
                        "description": "Require members to subscribe during signup"
                    },
                    "stripe_subscription_product_id": {
                        "type": "string",
                        "readOnly": true,
                        "description": "Stripe Product ID for club subscription"
                    },
                    "stripe_subscription_price_id": {
                        "type": "string",
                        "readOnly": true,
                        "description": "Stripe Price ID for monthly subscription"
                    },
                    "onboarding_completed": {
                        "description": "List of completed onboarding item IDs"
                    },
                    "website_type": {
                        "allOf": [
                            {
                                "$ref": "#/components/schemas/WebsiteType076Enum"
                            }
                        ],
                        "description": "Private: members sign up to see events. Public: events are publicly visible.\n\n* `private` - Private\n* `public` - Public"
                    }
                }
            },
            "PatchedClubAsset": {
                "type": "object",
                "description": "Serializer for club assets.",
                "properties": {
                    "id": {
                        "type": "integer",
                        "readOnly": true
                    },
                    "club": {
                        "type": "integer",
                        "readOnly": true
                    },
                    "url": {
                        "type": "string",
                        "readOnly": true
                    },
                    "filename": {
                        "type": "string",
                        "readOnly": true
                    },
                    "file_size": {
                        "type": "integer",
                        "readOnly": true
                    },
                    "width": {
                        "type": "integer",
                        "readOnly": true,
                        "nullable": true
                    },
                    "height": {
                        "type": "integer",
                        "readOnly": true,
                        "nullable": true
                    },
                    "alt_text": {
                        "type": "string",
                        "maxLength": 255
                    },
                    "created_at": {
                        "type": "string",
                        "format": "date-time",
                        "readOnly": true
                    }
                }
            },
            "PatchedClubCity": {
                "type": "object",
                "description": "Serializer for club cities.",
                "properties": {
                    "id": {
                        "type": "integer",
                        "readOnly": true
                    },
                    "club": {
                        "type": "integer",
                        "readOnly": true
                    },
                    "name": {
                        "type": "string",
                        "maxLength": 255
                    },
                    "is_primary": {
                        "type": "boolean"
                    },
                    "members_count": {
                        "type": "string",
                        "readOnly": true
                    },
                    "created_at": {
                        "type": "string",
                        "format": "date-time",
                        "readOnly": true
                    }
                }
            },
            "PatchedEvent": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer",
                        "readOnly": true
                    },
                    "club": {
                        "type": "integer",
                        "readOnly": true
                    },
                    "city": {
                        "type": "integer",
                        "nullable": true
                    },
                    "city_name": {
                        "type": "string",
                        "readOnly": true,
                        "default": ""
                    },
                    "name": {
                        "type": "string",
                        "maxLength": 255
                    },
                    "date": {
                        "type": "string",
                        "format": "date"
                    },
                    "time": {
                        "type": "string",
                        "format": "time"
                    },
                    "end_time": {
                        "type": "string",
                        "format": "time",
                        "nullable": true
                    },
                    "venue": {
                        "type": "string",
                        "maxLength": 255
                    },
                    "venue_address": {
                        "type": "string",
                        "maxLength": 500
                    },
                    "capacity": {
                        "type": "integer",
                        "maximum": 2147483647,
                        "minimum": 0,
                        "nullable": true
                    },
                    "group_size": {
                        "type": "integer",
                        "maximum": 2147483647,
                        "minimum": 0,
                        "nullable": true
                    },
                    "status": {
                        "$ref": "#/components/schemas/Status138Enum"
                    },
                    "description": {
                        "type": "string"
                    },
                    "thumbnail": {
                        "type": "string",
                        "description": "URL to event thumbnail image"
                    },
                    "signup_deadline": {
                        "type": "string",
                        "format": "date-time",
                        "nullable": true
                    },
                    "notifications_date": {
                        "type": "string",
                        "format": "date-time",
                        "nullable": true
                    },
                    "recurrence": {
                        "$ref": "#/components/schemas/RecurrenceEnum"
                    },
                    "recurrence_end_date": {
                        "type": "string",
                        "format": "date",
                        "nullable": true
                    },
                    "parent_event": {
                        "type": "integer",
                        "nullable": true
                    },
                    "is_recurring": {
                        "type": "boolean",
                        "readOnly": true
                    },
                    "chat_enabled": {
                        "type": "boolean",
                        "description": "Members can chat on the event page"
                    },
                    "signups": {
                        "type": "integer",
                        "readOnly": true
                    },
                    "groups_count": {
                        "type": "string",
                        "readOnly": true
                    },
                    "created_at": {
                        "type": "string",
                        "format": "date-time",
                        "readOnly": true
                    },
                    "updated_at": {
                        "type": "string",
                        "format": "date-time",
                        "readOnly": true
                    },
                    "cost": {
                        "type": "integer",
                        "maximum": 2147483647,
                        "minimum": -2147483648,
                        "nullable": true,
                        "description": "Event cost in cents (null = free)"
                    },
                    "stripe_product_id": {
                        "type": "string",
                        "readOnly": true,
                        "description": "Stripe Product ID for this event"
                    },
                    "stripe_price_id": {
                        "type": "string",
                        "readOnly": true,
                        "description": "Stripe Price ID for one-time event payment"
                    }
                }
            },
            "PatchedGroup": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer",
                        "readOnly": true
                    },
                    "event": {
                        "type": "integer",
                        "readOnly": true
                    },
                    "members": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/Member"
                        },
                        "readOnly": true
                    },
                    "member_ids": {
                        "type": "array",
                        "items": {
                            "type": "integer",
                            "writeOnly": true
                        },
                        "writeOnly": true
                    },
                    "tee_time": {
                        "type": "string",
                        "format": "time",
                        "nullable": true
                    },
                    "venue": {
                        "type": "string",
                        "maxLength": 255
                    },
                    "assigned_venue": {
                        "type": "integer",
                        "nullable": true
                    },
                    "created_at": {
                        "type": "string",
                        "format": "date-time",
                        "readOnly": true
                    }
                }
            },
            "PatchedMatchingConfiguration": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer",
                        "readOnly": true
                    },
                    "event": {
                        "type": "integer",
                        "readOnly": true
                    },
                    "mode": {
                        "$ref": "#/components/schemas/ModeEnum"
                    },
                    "rules": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/MatchingRule"
                        },
                        "readOnly": true
                    },
                    "created_at": {
                        "type": "string",
                        "format": "date-time",
                        "readOnly": true
                    },
                    "updated_at": {
                        "type": "string",
                        "format": "date-time",
                        "readOnly": true
                    }
                }
            },
            "PatchedMatchingRule": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer",
                        "readOnly": true
                    },
                    "question": {
                        "type": "integer"
                    },
                    "question_text": {
                        "type": "string",
                        "readOnly": true
                    },
                    "question_type": {
                        "type": "string",
                        "readOnly": true
                    },
                    "question_options": {
                        "readOnly": true
                    },
                    "constraint": {
                        "$ref": "#/components/schemas/ConstraintEnum"
                    },
                    "is_active": {
                        "type": "boolean"
                    },
                    "created_at": {
                        "type": "string",
                        "format": "date-time",
                        "readOnly": true
                    }
                }
            },
            "PatchedMember": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer",
                        "readOnly": true
                    },
                    "club": {
                        "type": "integer"
                    },
                    "user": {
                        "type": "integer",
                        "readOnly": true
                    },
                    "name": {
                        "type": "string",
                        "maxLength": 255
                    },
                    "email": {
                        "type": "string",
                        "format": "email",
                        "maxLength": 254
                    },
                    "city": {
                        "type": "integer",
                        "nullable": true
                    },
                    "city_name": {
                        "type": "string",
                        "readOnly": true,
                        "nullable": true
                    },
                    "membership_status": {
                        "$ref": "#/components/schemas/MembershipStatusEnum"
                    },
                    "events_attended": {
                        "type": "integer",
                        "readOnly": true
                    },
                    "joined_at": {
                        "type": "string",
                        "format": "date-time",
                        "readOnly": true
                    },
                    "membership_expires_at": {
                        "type": "string",
                        "format": "date-time",
                        "nullable": true
                    }
                }
            },
            "PatchedSavedMatchingConfig": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer",
                        "readOnly": true
                    },
                    "name": {
                        "type": "string",
                        "maxLength": 255
                    },
                    "mode": {
                        "$ref": "#/components/schemas/ModeEnum"
                    },
                    "rules": {},
                    "created_at": {
                        "type": "string",
                        "format": "date-time",
                        "readOnly": true
                    },
                    "updated_at": {
                        "type": "string",
                        "format": "date-time",
                        "readOnly": true
                    }
                }
            },
            "PatchedSelfUser": {
                "type": "object",
                "description": "Email is the Firebase sign-in identity and role is set by the app, so neither changes here.",
                "properties": {
                    "id": {
                        "type": "integer",
                        "readOnly": true
                    },
                    "username": {
                        "type": "string",
                        "readOnly": true
                    },
                    "email": {
                        "type": "string",
                        "readOnly": true
                    },
                    "fullname": {
                        "type": "string",
                        "nullable": true,
                        "maxLength": 128
                    },
                    "role": {
                        "allOf": [
                            {
                                "$ref": "#/components/schemas/RoleEnum"
                            }
                        ],
                        "readOnly": true
                    },
                    "is_onboarded": {
                        "type": "boolean",
                        "readOnly": true
                    },
                    "theme_preference": {
                        "$ref": "#/components/schemas/ThemePreferenceEnum"
                    },
                    "date_joined": {
                        "type": "string",
                        "format": "date-time",
                        "readOnly": true
                    },
                    "clubs": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/Club"
                        },
                        "readOnly": true
                    },
                    "subscription": {
                        "allOf": [
                            {
                                "$ref": "#/components/schemas/Subscription"
                            }
                        ],
                        "readOnly": true
                    }
                }
            },
            "PatchedSignupQuestion": {
                "type": "object",
                "description": "Serializer for signup questions.",
                "properties": {
                    "id": {
                        "type": "integer",
                        "readOnly": true
                    },
                    "club": {
                        "type": "integer",
                        "readOnly": true
                    },
                    "event": {
                        "type": "integer",
                        "readOnly": true,
                        "nullable": true
                    },
                    "question": {
                        "type": "string",
                        "maxLength": 500
                    },
                    "question_type": {
                        "$ref": "#/components/schemas/QuestionTypeEnum"
                    },
                    "options": {
                        "description": "Options for select/multiselect questions"
                    },
                    "is_required": {
                        "type": "boolean"
                    },
                    "order": {
                        "type": "integer",
                        "maximum": 2147483647,
                        "minimum": 0
                    },
                    "is_club_level": {
                        "type": "boolean",
                        "readOnly": true
                    },
                    "created_at": {
                        "type": "string",
                        "format": "date-time",
                        "readOnly": true
                    }
                }
            },
            "PatchedSupportRequest": {
                "type": "object",
                "description": "Serializer for authenticated user support requests.",
                "properties": {
                    "id": {
                        "type": "integer",
                        "readOnly": true
                    },
                    "user": {
                        "type": "integer",
                        "readOnly": true
                    },
                    "user_email": {
                        "type": "string",
                        "readOnly": true
                    },
                    "request_type": {
                        "$ref": "#/components/schemas/RequestTypeEnum"
                    },
                    "subject": {
                        "type": "string",
                        "maxLength": 255
                    },
                    "message": {
                        "type": "string"
                    },
                    "status": {
                        "allOf": [
                            {
                                "$ref": "#/components/schemas/SupportRequestStatusEnum"
                            }
                        ],
                        "readOnly": true
                    },
                    "created_at": {
                        "type": "string",
                        "format": "date-time",
                        "readOnly": true
                    },
                    "updated_at": {
                        "type": "string",
                        "format": "date-time",
                        "readOnly": true
                    }
                }
            },
            "PatchedVenue": {
                "type": "object",
                "description": "Serializer for event venues.",
                "properties": {
                    "id": {
                        "type": "integer",
                        "readOnly": true
                    },
                    "event": {
                        "type": "integer",
                        "readOnly": true
                    },
                    "name": {
                        "type": "string",
                        "maxLength": 255
                    },
                    "address": {
                        "type": "string",
                        "maxLength": 500
                    },
                    "capacity": {
                        "type": "integer",
                        "maximum": 2147483647,
                        "minimum": 0,
                        "nullable": true
                    },
                    "assignment_type": {
                        "$ref": "#/components/schemas/AssignmentTypeEnum"
                    },
                    "assignment_type_display": {
                        "type": "string",
                        "readOnly": true
                    },
                    "groups_count": {
                        "type": "string",
                        "readOnly": true
                    },
                    "google_place_id": {
                        "type": "string",
                        "description": "Google Place ID",
                        "maxLength": 255
                    },
                    "latitude": {
                        "type": "string",
                        "format": "decimal",
                        "pattern": "^-?\\d{0,3}(?:\\.\\d{0,7})?$",
                        "nullable": true
                    },
                    "longitude": {
                        "type": "string",
                        "format": "decimal",
                        "pattern": "^-?\\d{0,3}(?:\\.\\d{0,7})?$",
                        "nullable": true
                    },
                    "category": {
                        "type": "string",
                        "description": "Venue category from Google Places",
                        "maxLength": 100
                    },
                    "is_manual": {
                        "type": "boolean",
                        "description": "True if venue was manually entered, not from Google Places"
                    },
                    "created_at": {
                        "type": "string",
                        "format": "date-time",
                        "readOnly": true
                    },
                    "updated_at": {
                        "type": "string",
                        "format": "date-time",
                        "readOnly": true
                    }
                }
            },
            "PatchedVenueCollection": {
                "type": "object",
                "description": "Serializer for venue collections.",
                "properties": {
                    "id": {
                        "type": "integer",
                        "readOnly": true
                    },
                    "club": {
                        "type": "integer",
                        "readOnly": true
                    },
                    "name": {
                        "type": "string",
                        "maxLength": 255
                    },
                    "venues": {
                        "description": "List of venue templates as JSON"
                    },
                    "venue_count": {
                        "type": "string",
                        "readOnly": true
                    },
                    "created_at": {
                        "type": "string",
                        "format": "date-time",
                        "readOnly": true
                    },
                    "updated_at": {
                        "type": "string",
                        "format": "date-time",
                        "readOnly": true
                    }
                }
            },
            "PlanEnum": {
                "enum": [
                    "free",
                    "pro",
                    "enterprise"
                ],
                "type": "string",
                "description": "* `free` - Free\n* `pro` - Pro\n* `enterprise` - Enterprise"
            },
            "PublicClub": {
                "type": "object",
                "description": "Serializer for public club data - excludes sensitive owner information.",
                "properties": {
                    "id": {
                        "type": "integer",
                        "readOnly": true
                    },
                    "name": {
                        "type": "string",
                        "maxLength": 255
                    },
                    "url": {
                        "type": "string",
                        "maxLength": 100,
                        "pattern": "^[-a-zA-Z0-9_]+$"
                    },
                    "cities": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/PublicClubCity"
                        },
                        "readOnly": true
                    },
                    "has_multiple_cities": {
                        "type": "boolean",
                        "readOnly": true
                    },
                    "requires_city_selection": {
                        "type": "boolean",
                        "readOnly": true
                    },
                    "img_logo": {
                        "type": "string",
                        "maxLength": 500
                    },
                    "img_hero": {
                        "type": "string",
                        "maxLength": 500
                    },
                    "img_cta": {
                        "type": "string",
                        "maxLength": 500
                    },
                    "logo_icon": {
                        "type": "string",
                        "maxLength": 100
                    },
                    "description": {
                        "type": "string"
                    },
                    "audience": {
                        "type": "string",
                        "maxLength": 120
                    },
                    "link_website": {
                        "type": "string",
                        "format": "uri",
                        "maxLength": 500
                    },
                    "link_instagram": {
                        "type": "string",
                        "format": "uri",
                        "maxLength": 500
                    },
                    "link_youtube": {
                        "type": "string",
                        "format": "uri",
                        "maxLength": 500
                    },
                    "link_linkedin": {
                        "type": "string",
                        "format": "uri",
                        "maxLength": 500
                    },
                    "link_tiktok": {
                        "type": "string",
                        "format": "uri",
                        "maxLength": 500
                    },
                    "subscription_enabled": {
                        "type": "boolean",
                        "description": "Enable member subscriptions"
                    },
                    "subscription_price": {
                        "type": "integer",
                        "maximum": 2147483647,
                        "minimum": -2147483648,
                        "nullable": true,
                        "description": "Monthly subscription price in cents"
                    },
                    "subscription_required_on_signup": {
                        "type": "boolean",
                        "description": "Require members to subscribe during signup"
                    },
                    "website_type": {
                        "allOf": [
                            {
                                "$ref": "#/components/schemas/WebsiteType076Enum"
                            }
                        ],
                        "description": "Private: members sign up to see events. Public: events are publicly visible.\n\n* `private` - Private\n* `public` - Public"
                    },
                    "event_visibility_window": {
                        "allOf": [
                            {
                                "$ref": "#/components/schemas/EventVisibilityWindowEnum"
                            }
                        ],
                        "description": "How far in advance to show events to members\n\n* `1_week` - 1 Week\n* `2_weeks` - 2 Weeks\n* `1_month` - 1 Month\n* `3_months` - 3 Months\n* `6_months` - 6 Months"
                    }
                },
                "required": [
                    "cities",
                    "has_multiple_cities",
                    "id",
                    "name",
                    "requires_city_selection",
                    "url"
                ]
            },
            "PublicClubCity": {
                "type": "object",
                "description": "Public serializer for club cities - no sensitive data.",
                "properties": {
                    "id": {
                        "type": "integer",
                        "readOnly": true
                    },
                    "name": {
                        "type": "string",
                        "maxLength": 255
                    },
                    "is_primary": {
                        "type": "boolean"
                    }
                },
                "required": [
                    "id",
                    "name"
                ]
            },
            "PublicSignupQuestion": {
                "type": "object",
                "description": "Public serializer for signup questions - no sensitive data.",
                "properties": {
                    "id": {
                        "type": "integer",
                        "readOnly": true
                    },
                    "question": {
                        "type": "string",
                        "maxLength": 500
                    },
                    "question_type": {
                        "$ref": "#/components/schemas/QuestionTypeEnum"
                    },
                    "options": {
                        "description": "Options for select/multiselect questions"
                    },
                    "is_required": {
                        "type": "boolean"
                    },
                    "order": {
                        "type": "integer",
                        "maximum": 2147483647,
                        "minimum": 0
                    }
                },
                "required": [
                    "id",
                    "question"
                ]
            },
            "QuestionTypeEnum": {
                "enum": [
                    "text",
                    "textarea",
                    "select",
                    "multiselect",
                    "number"
                ],
                "type": "string",
                "description": "* `text` - Short Text\n* `textarea` - Long Text\n* `select` - Single Select\n* `multiselect` - Multi Select\n* `number` - Number"
            },
            "RecurrenceEnum": {
                "enum": [
                    "none",
                    "weekly",
                    "biweekly",
                    "monthly"
                ],
                "type": "string",
                "description": "* `none` - Does not repeat\n* `weekly` - Weekly\n* `biweekly` - Every 2 weeks\n* `monthly` - Monthly"
            },
            "RequestTypeEnum": {
                "enum": [
                    "question",
                    "bug",
                    "feature",
                    "other"
                ],
                "type": "string",
                "description": "* `question` - Question\n* `bug` - Bug Report\n* `feature` - Feature Request\n* `other` - Other"
            },
            "RoleEnum": {
                "enum": [
                    "organizer",
                    "business",
                    "agent"
                ],
                "type": "string",
                "description": "* `organizer` - Organizer\n* `business` - Business\n* `agent` - Agent"
            },
            "SavedMatchingConfig": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer",
                        "readOnly": true
                    },
                    "name": {
                        "type": "string",
                        "maxLength": 255
                    },
                    "mode": {
                        "$ref": "#/components/schemas/ModeEnum"
                    },
                    "rules": {},
                    "created_at": {
                        "type": "string",
                        "format": "date-time",
                        "readOnly": true
                    },
                    "updated_at": {
                        "type": "string",
                        "format": "date-time",
                        "readOnly": true
                    }
                },
                "required": [
                    "created_at",
                    "id",
                    "name",
                    "updated_at"
                ]
            },
            "SelfUser": {
                "type": "object",
                "description": "Email is the Firebase sign-in identity and role is set by the app, so neither changes here.",
                "properties": {
                    "id": {
                        "type": "integer",
                        "readOnly": true
                    },
                    "username": {
                        "type": "string",
                        "readOnly": true
                    },
                    "email": {
                        "type": "string",
                        "readOnly": true
                    },
                    "fullname": {
                        "type": "string",
                        "nullable": true,
                        "maxLength": 128
                    },
                    "role": {
                        "allOf": [
                            {
                                "$ref": "#/components/schemas/RoleEnum"
                            }
                        ],
                        "readOnly": true
                    },
                    "is_onboarded": {
                        "type": "boolean",
                        "readOnly": true
                    },
                    "theme_preference": {
                        "$ref": "#/components/schemas/ThemePreferenceEnum"
                    },
                    "date_joined": {
                        "type": "string",
                        "format": "date-time",
                        "readOnly": true
                    },
                    "clubs": {
                        "type": "array",
                        "items": {
                            "$ref": "#/components/schemas/Club"
                        },
                        "readOnly": true
                    },
                    "subscription": {
                        "allOf": [
                            {
                                "$ref": "#/components/schemas/Subscription"
                            }
                        ],
                        "readOnly": true
                    }
                },
                "required": [
                    "clubs",
                    "date_joined",
                    "email",
                    "id",
                    "is_onboarded",
                    "role",
                    "subscription",
                    "username"
                ]
            },
            "SignupQuestion": {
                "type": "object",
                "description": "Serializer for signup questions.",
                "properties": {
                    "id": {
                        "type": "integer",
                        "readOnly": true
                    },
                    "club": {
                        "type": "integer",
                        "readOnly": true
                    },
                    "event": {
                        "type": "integer",
                        "readOnly": true,
                        "nullable": true
                    },
                    "question": {
                        "type": "string",
                        "maxLength": 500
                    },
                    "question_type": {
                        "$ref": "#/components/schemas/QuestionTypeEnum"
                    },
                    "options": {
                        "description": "Options for select/multiselect questions"
                    },
                    "is_required": {
                        "type": "boolean"
                    },
                    "order": {
                        "type": "integer",
                        "maximum": 2147483647,
                        "minimum": 0
                    },
                    "is_club_level": {
                        "type": "boolean",
                        "readOnly": true
                    },
                    "created_at": {
                        "type": "string",
                        "format": "date-time",
                        "readOnly": true
                    }
                },
                "required": [
                    "club",
                    "created_at",
                    "event",
                    "id",
                    "is_club_level",
                    "question"
                ]
            },
            "Status138Enum": {
                "enum": [
                    "open",
                    "closed",
                    "completed",
                    "cancelled"
                ],
                "type": "string",
                "description": "* `open` - Open\n* `closed` - Closed\n* `completed` - Completed\n* `cancelled` - Cancelled"
            },
            "Subscription": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer",
                        "readOnly": true
                    },
                    "plan": {
                        "$ref": "#/components/schemas/PlanEnum"
                    },
                    "status": {
                        "allOf": [
                            {
                                "$ref": "#/components/schemas/SubscriptionStatusEnum"
                            }
                        ],
                        "readOnly": true
                    },
                    "billing_cycle": {
                        "$ref": "#/components/schemas/BillingCycleEnum"
                    },
                    "current_period_start": {
                        "type": "string",
                        "format": "date-time",
                        "readOnly": true,
                        "nullable": true
                    },
                    "current_period_end": {
                        "type": "string",
                        "format": "date-time",
                        "readOnly": true,
                        "nullable": true
                    },
                    "trial_end": {
                        "type": "string",
                        "format": "date-time",
                        "readOnly": true,
                        "nullable": true
                    },
                    "canceled_at": {
                        "type": "string",
                        "format": "date-time",
                        "readOnly": true,
                        "nullable": true
                    },
                    "is_active": {
                        "type": "string",
                        "readOnly": true
                    },
                    "stripe_subscription_id": {
                        "type": "string",
                        "nullable": true,
                        "readOnly": true
                    },
                    "created_at": {
                        "type": "string",
                        "format": "date-time",
                        "readOnly": true
                    },
                    "updated_at": {
                        "type": "string",
                        "format": "date-time",
                        "readOnly": true
                    }
                },
                "required": [
                    "canceled_at",
                    "created_at",
                    "current_period_end",
                    "current_period_start",
                    "id",
                    "is_active",
                    "status",
                    "stripe_subscription_id",
                    "trial_end",
                    "updated_at"
                ]
            },
            "SubscriptionStatusEnum": {
                "enum": [
                    "active",
                    "canceled",
                    "past_due",
                    "trialing",
                    "paused"
                ],
                "type": "string",
                "description": "* `active` - Active\n* `canceled` - Canceled\n* `past_due` - Past Due\n* `trialing` - Trialing\n* `paused` - Paused"
            },
            "SupportRequest": {
                "type": "object",
                "description": "Serializer for authenticated user support requests.",
                "properties": {
                    "id": {
                        "type": "integer",
                        "readOnly": true
                    },
                    "user": {
                        "type": "integer",
                        "readOnly": true
                    },
                    "user_email": {
                        "type": "string",
                        "readOnly": true
                    },
                    "request_type": {
                        "$ref": "#/components/schemas/RequestTypeEnum"
                    },
                    "subject": {
                        "type": "string",
                        "maxLength": 255
                    },
                    "message": {
                        "type": "string"
                    },
                    "status": {
                        "allOf": [
                            {
                                "$ref": "#/components/schemas/SupportRequestStatusEnum"
                            }
                        ],
                        "readOnly": true
                    },
                    "created_at": {
                        "type": "string",
                        "format": "date-time",
                        "readOnly": true
                    },
                    "updated_at": {
                        "type": "string",
                        "format": "date-time",
                        "readOnly": true
                    }
                },
                "required": [
                    "created_at",
                    "id",
                    "message",
                    "status",
                    "subject",
                    "updated_at",
                    "user",
                    "user_email"
                ]
            },
            "SupportRequestStatusEnum": {
                "enum": [
                    "open",
                    "in_progress",
                    "resolved",
                    "closed"
                ],
                "type": "string",
                "description": "* `open` - Open\n* `in_progress` - In Progress\n* `resolved` - Resolved\n* `closed` - Closed"
            },
            "TemplateEnum": {
                "enum": [
                    "welcome",
                    "event_reminder",
                    "event_followup",
                    "general_checkin",
                    "club_invite"
                ],
                "type": "string",
                "description": "* `welcome` - welcome\n* `event_reminder` - event_reminder\n* `event_followup` - event_followup\n* `general_checkin` - general_checkin\n* `club_invite` - club_invite"
            },
            "ThemePreferenceEnum": {
                "enum": [
                    "light",
                    "dark"
                ],
                "type": "string",
                "description": "* `light` - Light\n* `dark` - Dark"
            },
            "Venue": {
                "type": "object",
                "description": "Serializer for event venues.",
                "properties": {
                    "id": {
                        "type": "integer",
                        "readOnly": true
                    },
                    "event": {
                        "type": "integer",
                        "readOnly": true
                    },
                    "name": {
                        "type": "string",
                        "maxLength": 255
                    },
                    "address": {
                        "type": "string",
                        "maxLength": 500
                    },
                    "capacity": {
                        "type": "integer",
                        "maximum": 2147483647,
                        "minimum": 0,
                        "nullable": true
                    },
                    "assignment_type": {
                        "$ref": "#/components/schemas/AssignmentTypeEnum"
                    },
                    "assignment_type_display": {
                        "type": "string",
                        "readOnly": true
                    },
                    "groups_count": {
                        "type": "string",
                        "readOnly": true
                    },
                    "google_place_id": {
                        "type": "string",
                        "description": "Google Place ID",
                        "maxLength": 255
                    },
                    "latitude": {
                        "type": "string",
                        "format": "decimal",
                        "pattern": "^-?\\d{0,3}(?:\\.\\d{0,7})?$",
                        "nullable": true
                    },
                    "longitude": {
                        "type": "string",
                        "format": "decimal",
                        "pattern": "^-?\\d{0,3}(?:\\.\\d{0,7})?$",
                        "nullable": true
                    },
                    "category": {
                        "type": "string",
                        "description": "Venue category from Google Places",
                        "maxLength": 100
                    },
                    "is_manual": {
                        "type": "boolean",
                        "description": "True if venue was manually entered, not from Google Places"
                    },
                    "created_at": {
                        "type": "string",
                        "format": "date-time",
                        "readOnly": true
                    },
                    "updated_at": {
                        "type": "string",
                        "format": "date-time",
                        "readOnly": true
                    }
                },
                "required": [
                    "assignment_type_display",
                    "created_at",
                    "event",
                    "groups_count",
                    "id",
                    "name",
                    "updated_at"
                ]
            },
            "VenueCollection": {
                "type": "object",
                "description": "Serializer for venue collections.",
                "properties": {
                    "id": {
                        "type": "integer",
                        "readOnly": true
                    },
                    "club": {
                        "type": "integer",
                        "readOnly": true
                    },
                    "name": {
                        "type": "string",
                        "maxLength": 255
                    },
                    "venues": {
                        "description": "List of venue templates as JSON"
                    },
                    "venue_count": {
                        "type": "string",
                        "readOnly": true
                    },
                    "created_at": {
                        "type": "string",
                        "format": "date-time",
                        "readOnly": true
                    },
                    "updated_at": {
                        "type": "string",
                        "format": "date-time",
                        "readOnly": true
                    }
                },
                "required": [
                    "club",
                    "created_at",
                    "id",
                    "name",
                    "updated_at",
                    "venue_count"
                ]
            },
            "VenueSearchRequest": {
                "type": "object",
                "properties": {
                    "query": {
                        "type": "string",
                        "description": "The kind of place, e.g. \"wine bar\".",
                        "maxLength": 200
                    },
                    "city": {
                        "type": "string",
                        "description": "Defaults to the club's primary city."
                    },
                    "count": {
                        "type": "integer",
                        "maximum": 20,
                        "minimum": 1,
                        "default": 8
                    }
                },
                "required": [
                    "query"
                ]
            },
            "WebsiteType076Enum": {
                "enum": [
                    "private",
                    "public"
                ],
                "type": "string",
                "description": "* `private` - Private\n* `public` - Public"
            }
        },
        "securitySchemes": {
            "apiKey": {
                "type": "http",
                "scheme": "bearer",
                "bearerFormat": "ott_live_...",
                "description": "An onthe.town API key, created at https://onthe.town/u/account/security or returned by POST /api/agents/signup/. Send it as \"Authorization: Bearer ott_live_...\"."
            },
            "cookieAuth": {
                "type": "apiKey",
                "in": "cookie",
                "name": "sessionid"
            },
            "websiteSession": {
                "type": "http",
                "scheme": "bearer",
                "description": "The website's signed-in session."
            }
        }
    }
}