{
    "openapi": "3.0.3",
    "info": {
        "title": "Club Information",
        "description": "Information about a specific club.",
        "version": "1.0.0",
        "contact": {
            "name": "RunSignup API Support",
            "url": "https://runsignup.com/API",
            "email": "info@runsignup.com"
        }
    },
    "servers": [
        {
            "url": "https://api.runsignup.com/rest",
            "description": "Production API Server"
        }
    ],
    "tags": [
        {
            "name": "Basic Club Information",
            "description": "APIs related to Basic Club Information"
        }
    ],
    "components": {
        "schemas": {
            "Error": {
                "type": "object",
                "properties": {
                    "error": {
                        "type": "string",
                        "description": "Error message"
                    },
                    "details": {
                        "type": "object",
                        "description": "Additional error details",
                        "additionalProperties": true
                    }
                },
                "required": [
                    "error"
                ]
            },
            "BadRequestError": {
                "allOf": [
                    {
                        "$ref": "#/components/schemas/Error"
                    },
                    {
                        "description": "Error indicating invalid request parameters or structure"
                    }
                ]
            },
            "UnauthorizedError": {
                "allOf": [
                    {
                        "$ref": "#/components/schemas/Error"
                    },
                    {
                        "description": "Error indicating authentication failure"
                    }
                ]
            },
            "ForbiddenError": {
                "allOf": [
                    {
                        "$ref": "#/components/schemas/Error"
                    },
                    {
                        "description": "Error indicating the authenticated user lacks required permissions"
                    }
                ]
            },
            "NotFoundError": {
                "allOf": [
                    {
                        "$ref": "#/components/schemas/Error"
                    },
                    {
                        "description": "Error indicating the requested resource does not exist"
                    }
                ]
            },
            "ServerError": {
                "allOf": [
                    {
                        "$ref": "#/components/schemas/Error"
                    },
                    {
                        "description": "Error indicating an unexpected server-side issue"
                    }
                ]
            },
            "Club_clubIdGetResponse": {
                "type": "object",
                "title": "Club Response",
                "description": "Response containing detailed club information",
                "properties": {
                    "club_id": {
                        "type": "integer",
                        "description": "Unique identifier for the club"
                    },
                    "name": {
                        "type": "string",
                        "description": "Name of the club"
                    },
                    "description": {
                        "type": "string",
                        "description": "Full description of the club"
                    },
                    "url": {
                        "type": "string",
                        "description": "URL to the club page"
                    },
                    "is_draft_club": {
                        "type": "string",
                        "description": "Whether the club is in draft mode",
                        "enum": [
                            "T",
                            "F"
                        ]
                    },
                    "created": {
                        "type": "string",
                        "description": "When the club was created",
                        "format": "date-time"
                    },
                    "last_modified": {
                        "type": "string",
                        "description": "When the club was last modified",
                        "format": "date-time"
                    },
                    "waiver": {
                        "type": "string",
                        "description": "Club membership waiver text. Present when include_waiver=T",
                        "x-response-field-inclusion": [
                            {
                                "request-parameter": "include_waiver",
                                "value": "T"
                            }
                        ]
                    },
                    "address": {
                        "type": "object",
                        "description": "Club address information",
                        "properties": {
                            "street": {
                                "type": "string",
                                "description": "Street address"
                            },
                            "city": {
                                "type": "string",
                                "description": "City"
                            },
                            "state": {
                                "type": "string",
                                "description": "State or province"
                            },
                            "zipcode": {
                                "type": "string",
                                "description": "Postal code"
                            },
                            "country_code": {
                                "type": "string",
                                "description": "Two-letter country code"
                            }
                        },
                        "x-address-fields": {
                            "street": "street",
                            "city": "city",
                            "state": "state",
                            "zipcode": "zipcode",
                            "country_code": "country_code"
                        }
                    },
                    "membership_levels": {
                        "type": "array",
                        "description": "Array of club membership levels. Present when include_membership_levels=T",
                        "x-response-field-inclusion": [
                            {
                                "request-parameter": "include_membership_levels",
                                "value": "T"
                            }
                        ],
                        "items": {
                            "type": "object",
                            "description": "Club membership level information",
                            "properties": {
                                "club_membership_level_id": {
                                    "type": "integer",
                                    "description": "ID of the membership level"
                                },
                                "level_name": {
                                    "type": "string",
                                    "description": "Name of the membership level"
                                },
                                "level_desc": {
                                    "type": "string",
                                    "description": "Description of the membership level"
                                },
                                "max_num_members": {
                                    "type": "integer",
                                    "description": "Maximum number of members allowed"
                                },
                                "deleted": {
                                    "type": "string",
                                    "description": "Whether the membership level is deleted",
                                    "enum": [
                                        "T",
                                        "F"
                                    ]
                                },
                                "membership_pricing": {
                                    "type": "object",
                                    "description": "Membership pricing information. Present when include_membership_level_pricing=T",
                                    "x-response-field-inclusion": [
                                        {
                                            "request-parameter": "include_membership_level_pricing",
                                            "value": "T"
                                        }
                                    ],
                                    "properties": {
                                        "duration_pricings": {
                                            "type": "array",
                                            "description": "Array of duration-based pricing options",
                                            "items": {
                                                "type": "object",
                                                "description": "Pricing based on membership duration",
                                                "properties": {
                                                    "membership_length_in_months": {
                                                        "type": "integer",
                                                        "description": "Length of membership in months"
                                                    },
                                                    "membership_cost": {
                                                        "type": "string",
                                                        "description": "Cost of membership"
                                                    },
                                                    "total_processing_fee": {
                                                        "type": "string",
                                                        "description": "Total processing fee"
                                                    },
                                                    "user_processing_fee": {
                                                        "type": "string",
                                                        "description": "Processing fee paid by the user"
                                                    }
                                                },
                                                "required": [
                                                    "membership_length_in_months",
                                                    "membership_cost",
                                                    "total_processing_fee",
                                                    "user_processing_fee"
                                                ]
                                            }
                                        },
                                        "yearly_pricing": {
                                            "type": "object",
                                            "description": "Calendar year pricing information",
                                            "properties": {
                                                "membership_end_date": {
                                                    "type": "string",
                                                    "description": "End date of membership (MM/DD)"
                                                },
                                                "membership_cost": {
                                                    "type": "string",
                                                    "description": "Cost of membership"
                                                },
                                                "total_processing_fee": {
                                                    "type": "string",
                                                    "description": "Total processing fee"
                                                },
                                                "user_processing_fee": {
                                                    "type": "string",
                                                    "description": "Processing fee paid by the user"
                                                },
                                                "prorated": {
                                                    "type": "string",
                                                    "description": "Whether the pricing is prorated",
                                                    "enum": [
                                                        "T",
                                                        "F"
                                                    ]
                                                }
                                            },
                                            "required": [
                                                "membership_end_date",
                                                "membership_cost",
                                                "total_processing_fee",
                                                "user_processing_fee",
                                                "prorated"
                                            ]
                                        },
                                        "date_range_pricing": {
                                            "type": "object",
                                            "description": "Date range pricing information",
                                            "properties": {
                                                "membership_start_date": {
                                                    "type": "string",
                                                    "description": "Start date of membership"
                                                },
                                                "membership_end_date": {
                                                    "type": "string",
                                                    "description": "End date of membership"
                                                },
                                                "membership_cost": {
                                                    "type": "string",
                                                    "description": "Cost of membership"
                                                },
                                                "total_processing_fee": {
                                                    "type": "string",
                                                    "description": "Total processing fee"
                                                },
                                                "user_processing_fee": {
                                                    "type": "string",
                                                    "description": "Processing fee paid by the user"
                                                },
                                                "prorated": {
                                                    "type": "string",
                                                    "description": "Whether the pricing is prorated",
                                                    "enum": [
                                                        "T",
                                                        "F"
                                                    ]
                                                }
                                            },
                                            "required": [
                                                "membership_start_date",
                                                "membership_end_date",
                                                "membership_cost",
                                                "total_processing_fee",
                                                "user_processing_fee",
                                                "prorated"
                                            ]
                                        }
                                    }
                                }
                            },
                            "required": [
                                "club_membership_level_id",
                                "level_name",
                                "level_desc",
                                "max_num_members",
                                "deleted"
                            ]
                        }
                    },
                    "club_officers": {
                        "type": "array",
                        "description": "Array of club officers. Present when include_officers=T",
                        "x-response-field-inclusion": [
                            {
                                "request-parameter": "include_officers",
                                "value": "T"
                            }
                        ],
                        "items": {
                            "type": "object",
                            "description": "Club officer information",
                            "nullable": true,
                            "properties": {
                                "officer_name": {
                                    "type": "string",
                                    "description": "Officer\u2019s name"
                                },
                                "officer_title": {
                                    "type": "string",
                                    "description": "Officer\u2019s title/position"
                                },
                                "email": {
                                    "type": "string",
                                    "description": "Officer\u2019s email address"
                                },
                                "phone": {
                                    "type": "string",
                                    "description": "Officer\u2019s phone number"
                                }
                            },
                            "required": [
                                "officer_name",
                                "officer_title"
                            ]
                        }
                    },
                    "custom_sections": {
                        "type": "array",
                        "description": "Array of club custom content sections. Present when include_custom_sections=T",
                        "x-response-field-inclusion": [
                            {
                                "request-parameter": "include_custom_sections",
                                "value": "T"
                            }
                        ],
                        "items": {
                            "type": "object",
                            "description": "Custom content section",
                            "nullable": true,
                            "properties": {
                                "heading_text": {
                                    "type": "string",
                                    "description": "Section heading"
                                },
                                "url": {
                                    "type": "string",
                                    "description": "URL associated with the section"
                                },
                                "content": {
                                    "type": "string",
                                    "description": "HTML content for the section"
                                }
                            },
                            "required": [
                                "heading_text",
                                "content"
                            ]
                        }
                    },
                    "club_categories": {
                        "type": "array",
                        "description": "Array of club categories. Present when include_coaching_categories=T",
                        "x-response-field-inclusion": [
                            {
                                "request-parameter": "include_coaching_categories",
                                "value": "T"
                            }
                        ],
                        "items": {
                            "type": "object",
                            "description": "Club category information",
                            "properties": {
                                "club_category_id": {
                                    "type": "integer",
                                    "description": "ID of the category"
                                },
                                "category_name": {
                                    "type": "string",
                                    "description": "Name of the category"
                                },
                                "deleted": {
                                    "type": "string",
                                    "description": "Whether the category is deleted",
                                    "enum": [
                                        "T",
                                        "F"
                                    ]
                                }
                            },
                            "required": [
                                "club_category_id",
                                "category_name",
                                "deleted"
                            ]
                        }
                    },
                    "questions": {
                        "type": "array",
                        "description": "Array of club membership questions. Present when include_questions=T",
                        "x-response-field-inclusion": [
                            {
                                "request-parameter": "include_questions",
                                "value": "T"
                            }
                        ],
                        "items": {
                            "type": "object",
                            "description": "Club membership question",
                            "nullable": true,
                            "properties": {
                                "question_id": {
                                    "type": "integer",
                                    "description": "ID of the question"
                                },
                                "question_text": {
                                    "type": "string",
                                    "description": "Question text"
                                },
                                "question_type": {
                                    "type": "string",
                                    "description": "Human-readable question type"
                                },
                                "question_type_code": {
                                    "type": "string",
                                    "description": "Question type code (F, B, C, R, S)"
                                },
                                "individual": {
                                    "type": "string",
                                    "description": "Whether this question is asked for each individual",
                                    "enum": [
                                        "T",
                                        "F"
                                    ]
                                },
                                "required": {
                                    "type": "string",
                                    "description": "Whether an answer is required",
                                    "enum": [
                                        "T",
                                        "F"
                                    ]
                                },
                                "responses": {
                                    "type": "array",
                                    "description": "Array of predefined responses",
                                    "items": {
                                        "type": "object",
                                        "description": "Predefined question response",
                                        "properties": {
                                            "response_id": {
                                                "type": "integer",
                                                "description": "ID of the response"
                                            },
                                            "response": {
                                                "type": "string",
                                                "description": "Response text"
                                            }
                                        },
                                        "required": [
                                            "response_id",
                                            "response"
                                        ]
                                    }
                                }
                            },
                            "required": [
                                "question_id",
                                "question_text",
                                "question_type",
                                "question_type_code",
                                "individual",
                                "required"
                            ]
                        }
                    }
                },
                "required": [
                    "club_id",
                    "name",
                    "description",
                    "url",
                    "is_draft_club",
                    "created",
                    "last_modified",
                    "address"
                ],
                "example": {
                    "club_id": 12345,
                    "name": "Running Club Example",
                    "description": "<p>This is a sample running club for runners of all abilities.</p>",
                    "url": "https://runsignup.com/Club/NJ/Moorestown/RunningClubExample",
                    "is_draft_club": "F",
                    "created": "01/01/2023 08:00",
                    "last_modified": "06/15/2023 14:30",
                    "waiver": "Sample club waiver text...",
                    "address": {
                        "street": "123 Main St",
                        "city": "Moorestown",
                        "state": "NJ",
                        "zipcode": "08057",
                        "country_code": "US"
                    },
                    "membership_levels": [
                        {
                            "club_membership_level_id": 67890,
                            "level_name": "Basic Membership",
                            "level_desc": "Basic club membership with standard benefits",
                            "max_num_members": 500,
                            "deleted": "F",
                            "membership_pricing": {
                                "duration_pricings": [
                                    {
                                        "membership_length_in_months": 12,
                                        "membership_cost": "$50.00",
                                        "total_processing_fee": "$3.00",
                                        "user_processing_fee": "$3.00"
                                    }
                                ],
                                "yearly_pricing": {
                                    "membership_end_date": "12/31",
                                    "membership_cost": "$45.00",
                                    "total_processing_fee": "$2.70",
                                    "user_processing_fee": "$2.70",
                                    "prorated": "T"
                                }
                            }
                        }
                    ],
                    "club_officers": [
                        {
                            "officer_name": "Jane Runner",
                            "officer_title": "President",
                            "email": "president@example.com",
                            "phone": "555-123-4567"
                        }
                    ],
                    "custom_sections": [
                        {
                            "heading_text": "Weekly Workouts",
                            "url": "https://example.com/workouts",
                            "content": "<p>Join us for track workouts every Tuesday at 6pm.</p>"
                        }
                    ],
                    "club_categories": [
                        {
                            "club_category_id": 123,
                            "category_name": "Beginner Runners",
                            "deleted": "F"
                        }
                    ],
                    "questions": [
                        {
                            "question_id": 456,
                            "question_text": "What is your typical weekly mileage?",
                            "question_type": "Single Selection",
                            "question_type_code": "R",
                            "individual": "T",
                            "required": "T",
                            "responses": [
                                {
                                    "response_id": 1,
                                    "response": "Less than 10 miles"
                                },
                                {
                                    "response_id": 2,
                                    "response": "10-20 miles"
                                },
                                {
                                    "response_id": 3,
                                    "response": "20-30 miles"
                                },
                                {
                                    "response_id": 4,
                                    "response": "More than 30 miles"
                                }
                            ]
                        }
                    ]
                }
            }
        },
        "securitySchemes": {
            "apiKey": {
                "type": "apiKey",
                "in": "query",
                "name": "api_key",
                "description": "RunSignup API Key"
            },
            "apiSecret": {
                "type": "apiKey",
                "in": "query",
                "name": "api_secret",
                "description": "RunSignup API Secret"
            }
        }
    },
    "paths": {
        "/club/{club_id}": {
            "get": {
                "tags": [
                    "Basic Club Information"
                ],
                "summary": "Club Information",
                "description": "Information about a specific club.",
                "operationId": "club_:club_id",
                "parameters": [
                    {
                        "name": "club_id",
                        "in": "path",
                        "description": "Path parameter: club_id",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "api_key",
                        "in": "query",
                        "description": "API Key",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "api_secret",
                        "in": "query",
                        "description": "API Secret",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "rsu_api_key",
                        "in": "query",
                        "description": "API v2 key. If used, you must send the API secret in an HTTP header named X-RSU-API-SECRET.",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "sp_api_key",
                        "in": "query",
                        "description": "Super partner API key. If used, you must send the API secret in an HTTP header named X-RSU-API-SECRET.",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "X-RSU-API-SECRET",
                        "in": "header",
                        "description": "API v2 or super partner secret.",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "Authorization",
                        "in": "header",
                        "description": "Authorization Header. If using OAuth 2.0, fill this in with `Bearer <token>`.",
                        "required": false,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "format",
                        "in": "query",
                        "description": "Format of response. The default if not sent is `xml`, but `json` is preferred.",
                        "required": false,
                        "schema": {
                            "type": "string",
                            "enum": [
                                "xml",
                                "json",
                                "csv"
                            ],
                            "default": "xml"
                        }
                    },
                    {
                        "name": "include_waiver",
                        "in": "query",
                        "description": "Should waiver be included?",
                        "required": false,
                        "schema": {
                            "type": "boolean",
                            "enum": [
                                "T",
                                "F"
                            ],
                            "default": "F"
                        }
                    },
                    {
                        "name": "include_membership_levels",
                        "in": "query",
                        "description": "Should membership levels details be included?",
                        "required": false,
                        "schema": {
                            "type": "boolean",
                            "enum": [
                                "T",
                                "F"
                            ],
                            "default": "F"
                        }
                    },
                    {
                        "name": "include_membership_level_pricing",
                        "in": "query",
                        "description": "Should membership levels include pricing information?",
                        "required": false,
                        "schema": {
                            "type": "boolean",
                            "enum": [
                                "T",
                                "F"
                            ],
                            "default": "F"
                        }
                    },
                    {
                        "name": "include_questions",
                        "in": "query",
                        "description": "Should questions be included?",
                        "required": false,
                        "schema": {
                            "type": "boolean",
                            "enum": [
                                "T",
                                "F"
                            ],
                            "default": "F"
                        }
                    },
                    {
                        "name": "include_deleted_questions",
                        "in": "query",
                        "description": "Should deleted questions be included if questions are included?",
                        "required": false,
                        "schema": {
                            "type": "boolean",
                            "enum": [
                                "T",
                                "F"
                            ],
                            "default": "F"
                        }
                    },
                    {
                        "name": "include_internal_questions",
                        "in": "query",
                        "description": "Should internal questions be included if questions are included?",
                        "required": false,
                        "schema": {
                            "type": "boolean",
                            "enum": [
                                "T",
                                "F"
                            ],
                            "default": "F"
                        }
                    },
                    {
                        "name": "include_officers",
                        "in": "query",
                        "description": "Should club officer information be included?",
                        "required": false,
                        "schema": {
                            "type": "boolean",
                            "enum": [
                                "T",
                                "F"
                            ],
                            "default": "F"
                        }
                    },
                    {
                        "name": "include_custom_sections",
                        "in": "query",
                        "description": "Should custom section information be included?",
                        "required": false,
                        "schema": {
                            "type": "boolean",
                            "enum": [
                                "T",
                                "F"
                            ],
                            "default": "F"
                        }
                    },
                    {
                        "name": "include_coaching_categories",
                        "in": "query",
                        "description": "Should coaching club categories be included?",
                        "required": false,
                        "schema": {
                            "type": "boolean",
                            "enum": [
                                "T",
                                "F"
                            ],
                            "default": "F"
                        }
                    }
                ],
                "security": [
                    {
                        "apiKey": [],
                        "apiSecret": []
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Club Response - Response containing detailed club information",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Club_clubIdGetResponse"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/BadRequestError"
                                }
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/UnauthorizedError"
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "Forbidden",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ForbiddenError"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/NotFoundError"
                                }
                            }
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ServerError"
                                }
                            }
                        }
                    }
                },
                "x-permissions": [
                    "affiliates",
                    "partners",
                    "race_directors",
                    "timers"
                ]
            }
        }
    }
}