openapi: 3.0.3
info:
  title: ThrillWiki API
  version: 1.0.0
  description: Comprehensive theme park and ride information API
paths:
  /api/v1/accounts/profiles/:
    get:
      operationId: v1_accounts_profiles_list
      description: Retrieve a list of user profiles.
      summary: List user profiles
      parameters:
      - name: ordering
        required: false
        in: query
        description: Which field to use when ordering the results.
        schema:
          type: string
      - name: page
        required: false
        in: query
        description: A page number within the paginated result set.
        schema:
          type: integer
      - name: search
        required: false
        in: query
        description: A search term.
        schema:
          type: string
      tags:
      - Accounts
      security:
      - cookieAuth: []
      - tokenAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedUserProfileOutputList'
          description: ''
    post:
      operationId: v1_accounts_profiles_create
      description: Create a new user profile.
      summary: Create user profile
      tags:
      - Accounts
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UserProfileCreateInputRequest'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/UserProfileCreateInputRequest'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/UserProfileCreateInputRequest'
        required: true
      security:
      - cookieAuth: []
      - tokenAuth: []
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserProfileOutput'
          description: ''
  /api/v1/accounts/profiles/{id}/:
    get:
      operationId: v1_accounts_profiles_retrieve
      description: Retrieve a specific user profile by ID.
      summary: Get user profile
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this user profile.
        required: true
      tags:
      - Accounts
      security:
      - cookieAuth: []
      - tokenAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserProfileOutput'
          description: ''
    put:
      operationId: v1_accounts_profiles_update
      description: Update a user profile.
      summary: Update user profile
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this user profile.
        required: true
      tags:
      - Accounts
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UserProfileUpdateInputRequest'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/UserProfileUpdateInputRequest'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/UserProfileUpdateInputRequest'
        required: true
      security:
      - cookieAuth: []
      - tokenAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserProfileOutput'
          description: ''
    patch:
      operationId: v1_accounts_profiles_partial_update
      description: Partially update a user profile.
      summary: Partially update user profile
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this user profile.
        required: true
      tags:
      - Accounts
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PatchedUserProfileUpdateInputRequest'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/PatchedUserProfileUpdateInputRequest'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/PatchedUserProfileUpdateInputRequest'
      security:
      - cookieAuth: []
      - tokenAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserProfileOutput'
          description: ''
    delete:
      operationId: v1_accounts_profiles_destroy
      description: Delete a user profile.
      summary: Delete user profile
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this user profile.
        required: true
      tags:
      - Accounts
      security:
      - cookieAuth: []
      - tokenAuth: []
      responses:
        '204':
          description: No response body
  /api/v1/accounts/profiles/me/:
    get:
      operationId: v1_accounts_profiles_me_retrieve
      description: Retrieve the current authenticated user's profile.
      summary: Get current user's profile
      tags:
      - Accounts
      security:
      - cookieAuth: []
      - tokenAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserProfileOutput'
          description: ''
  /api/v1/accounts/toplist-items/:
    get:
      operationId: v1_accounts_toplist_items_list
      description: Retrieve a list of top list items.
      summary: List top list items
      parameters:
      - name: ordering
        required: false
        in: query
        description: Which field to use when ordering the results.
        schema:
          type: string
      - name: page
        required: false
        in: query
        description: A page number within the paginated result set.
        schema:
          type: integer
      - name: search
        required: false
        in: query
        description: A search term.
        schema:
          type: string
      tags:
      - Accounts
      security:
      - cookieAuth: []
      - tokenAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedTopListItemOutputList'
          description: ''
    post:
      operationId: v1_accounts_toplist_items_create
      description: Add a new item to a top list.
      summary: Create top list item
      tags:
      - Accounts
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TopListItemCreateInputRequest'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/TopListItemCreateInputRequest'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/TopListItemCreateInputRequest'
        required: true
      security:
      - cookieAuth: []
      - tokenAuth: []
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TopListItemOutput'
          description: ''
  /api/v1/accounts/toplist-items/{id}/:
    get:
      operationId: v1_accounts_toplist_items_retrieve
      description: Retrieve a specific top list item by ID.
      summary: Get top list item
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this top list item.
        required: true
      tags:
      - Accounts
      security:
      - cookieAuth: []
      - tokenAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TopListItemOutput'
          description: ''
    put:
      operationId: v1_accounts_toplist_items_update
      description: Update a top list item.
      summary: Update top list item
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this top list item.
        required: true
      tags:
      - Accounts
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TopListItemUpdateInputRequest'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/TopListItemUpdateInputRequest'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/TopListItemUpdateInputRequest'
        required: true
      security:
      - cookieAuth: []
      - tokenAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TopListItemOutput'
          description: ''
    patch:
      operationId: v1_accounts_toplist_items_partial_update
      description: Partially update a top list item.
      summary: Partially update top list item
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this top list item.
        required: true
      tags:
      - Accounts
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PatchedTopListItemUpdateInputRequest'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/PatchedTopListItemUpdateInputRequest'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/PatchedTopListItemUpdateInputRequest'
      security:
      - cookieAuth: []
      - tokenAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TopListItemOutput'
          description: ''
    delete:
      operationId: v1_accounts_toplist_items_destroy
      description: Remove an item from a top list.
      summary: Delete top list item
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this top list item.
        required: true
      tags:
      - Accounts
      security:
      - cookieAuth: []
      - tokenAuth: []
      responses:
        '204':
          description: No response body
  /api/v1/accounts/toplist-items/reorder/:
    post:
      operationId: v1_accounts_toplist_items_reorder_create
      description: Reorder items within a top list.
      summary: Reorder top list items
      tags:
      - Accounts
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TopListItemOutputRequest'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/TopListItemOutputRequest'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/TopListItemOutputRequest'
        required: true
      security:
      - cookieAuth: []
      - tokenAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
          description: ''
  /api/v1/accounts/toplists/:
    get:
      operationId: v1_accounts_toplists_list
      description: Retrieve a list of top lists.
      summary: List top lists
      parameters:
      - name: ordering
        required: false
        in: query
        description: Which field to use when ordering the results.
        schema:
          type: string
      - name: page
        required: false
        in: query
        description: A page number within the paginated result set.
        schema:
          type: integer
      - name: search
        required: false
        in: query
        description: A search term.
        schema:
          type: string
      tags:
      - Accounts
      security:
      - cookieAuth: []
      - tokenAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedTopListOutputList'
          description: ''
    post:
      operationId: v1_accounts_toplists_create
      description: Create a new top list.
      summary: Create top list
      tags:
      - Accounts
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TopListCreateInputRequest'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/TopListCreateInputRequest'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/TopListCreateInputRequest'
        required: true
      security:
      - cookieAuth: []
      - tokenAuth: []
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TopListOutput'
          description: ''
  /api/v1/accounts/toplists/{id}/:
    get:
      operationId: v1_accounts_toplists_retrieve
      description: Retrieve a specific top list by ID.
      summary: Get top list
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this top list.
        required: true
      tags:
      - Accounts
      security:
      - cookieAuth: []
      - tokenAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TopListOutput'
          description: ''
    put:
      operationId: v1_accounts_toplists_update
      description: Update a top list.
      summary: Update top list
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this top list.
        required: true
      tags:
      - Accounts
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TopListUpdateInputRequest'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/TopListUpdateInputRequest'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/TopListUpdateInputRequest'
        required: true
      security:
      - cookieAuth: []
      - tokenAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TopListOutput'
          description: ''
    patch:
      operationId: v1_accounts_toplists_partial_update
      description: Partially update a top list.
      summary: Partially update top list
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this top list.
        required: true
      tags:
      - Accounts
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PatchedTopListUpdateInputRequest'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/PatchedTopListUpdateInputRequest'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/PatchedTopListUpdateInputRequest'
      security:
      - cookieAuth: []
      - tokenAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TopListOutput'
          description: ''
    delete:
      operationId: v1_accounts_toplists_destroy
      description: Delete a top list.
      summary: Delete top list
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this top list.
        required: true
      tags:
      - Accounts
      security:
      - cookieAuth: []
      - tokenAuth: []
      responses:
        '204':
          description: No response body
  /api/v1/accounts/toplists/{id}/duplicate/:
    post:
      operationId: v1_accounts_toplists_duplicate_create
      description: Create a copy of an existing top list for the current user.
      summary: Duplicate top list
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this top list.
        required: true
      tags:
      - Accounts
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TopListOutputRequest'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/TopListOutputRequest'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/TopListOutputRequest'
        required: true
      security:
      - cookieAuth: []
      - tokenAuth: []
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TopListOutput'
          description: ''
  /api/v1/accounts/toplists/my_lists/:
    get:
      operationId: v1_accounts_toplists_my_lists_list
      description: Retrieve all top lists belonging to the current user.
      summary: Get current user's top lists
      parameters:
      - name: ordering
        required: false
        in: query
        description: Which field to use when ordering the results.
        schema:
          type: string
      - name: page
        required: false
        in: query
        description: A page number within the paginated result set.
        schema:
          type: integer
      - name: search
        required: false
        in: query
        description: A search term.
        schema:
          type: string
      tags:
      - Accounts
      security:
      - cookieAuth: []
      - tokenAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedTopListOutputList'
          description: ''
  /api/v1/auth/login/:
    post:
      operationId: v1_auth_login_create
      description: Authenticate user with username/email and password.
      summary: User login
      tags:
      - Authentication
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LoginInputRequest'
            examples:
              LoginInputExample:
                value:
                  username: thrillseeker
                  password: securepassword123
                summary: Example login request
                description: Login with username or email and password
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/LoginInputRequest'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/LoginInputRequest'
        required: true
      security:
      - {}
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LoginOutput'
              examples:
                LoginOutputExample:
                  value:
                    token: abc123def456ghi789
                    user:
                      id: 1
                      username: thrillseeker
                      email: user@example.com
                      first_name: John
                      last_name: Doe
                    message: Login successful
                  summary: Example login response
                  description: Successful login response with token and user data
          description: ''
        '400':
          content:
            application/json:
              schema:
                type: object
                additionalProperties: {}
                description: Unspecified response body
          description: ''
  /api/v1/auth/logout/:
    post:
      operationId: v1_auth_logout_create
      description: Logout the current user and invalidate their token.
      summary: User logout
      tags:
      - Authentication
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LogoutOutputRequest'
            examples:
              LogoutOutputExample:
                value:
                  message: Logout successful
                summary: Example logout response
                description: Successful logout response
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/LogoutOutputRequest'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/LogoutOutputRequest'
        required: true
      security:
      - cookieAuth: []
      - tokenAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LogoutOutput'
              examples:
                LogoutOutputExample:
                  value:
                    message: Logout successful
                  summary: Example logout response
                  description: Successful logout response
          description: ''
        '401':
          content:
            application/json:
              schema:
                type: object
                additionalProperties: {}
                description: Unspecified response body
          description: ''
  /api/v1/auth/password/change/:
    post:
      operationId: v1_auth_password_change_create
      description: Change the current user's password.
      summary: Change password
      tags:
      - Authentication
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PasswordChangeInputRequest'
            examples:
              PasswordChangeInputExample:
                value:
                  old_password: oldpassword123
                  new_password: newpassword456
                  new_password_confirm: newpassword456
                summary: Example password change request
                description: Change current user's password
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/PasswordChangeInputRequest'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/PasswordChangeInputRequest'
        required: true
      security:
      - cookieAuth: []
      - tokenAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PasswordChangeOutput'
              examples:
                PasswordChangeOutputExample:
                  value:
                    detail: Password changed successfully
                  summary: Example password change response
                  description: Password changed successfully response
          description: ''
        '400':
          content:
            application/json:
              schema:
                type: object
                additionalProperties: {}
                description: Unspecified response body
          description: ''
        '401':
          content:
            application/json:
              schema:
                type: object
                additionalProperties: {}
                description: Unspecified response body
          description: ''
  /api/v1/auth/password/reset/:
    post:
      operationId: v1_auth_password_reset_create
      description: Send a password reset email to the user.
      summary: Request password reset
      tags:
      - Authentication
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PasswordResetInputRequest'
            examples:
              PasswordResetInputExample:
                value:
                  email: user@example.com
                summary: Example password reset request
                description: Request password reset email
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/PasswordResetInputRequest'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/PasswordResetInputRequest'
        required: true
      security:
      - cookieAuth: []
      - tokenAuth: []
      - {}
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PasswordResetOutput'
              examples:
                PasswordResetOutputExample:
                  value:
                    detail: Password reset email sent
                  summary: Example password reset response
                  description: Password reset email sent response
          description: ''
        '400':
          content:
            application/json:
              schema:
                type: object
                additionalProperties: {}
                description: Unspecified response body
          description: ''
  /api/v1/auth/providers/:
    get:
      operationId: v1_auth_providers_retrieve
      description: Retrieve available social authentication providers.
      summary: Get social providers
      tags:
      - Authentication
      security:
      - cookieAuth: []
      - tokenAuth: []
      - {}
      responses:
        '200':
          content:
            application/json:
              schema:
                type: object
                additionalProperties: {}
                description: Unspecified response body
          description: ''
  /api/v1/auth/signup/:
    post:
      operationId: v1_auth_signup_create
      description: Register a new user account.
      summary: User registration
      tags:
      - Authentication
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SignupInputRequest'
            examples:
              SignupInputExample:
                value:
                  username: newuser
                  email: newuser@example.com
                  password: securepassword123
                  password_confirm: securepassword123
                  first_name: Jane
                  last_name: Smith
                summary: Example registration request
                description: Register a new user account
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/SignupInputRequest'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/SignupInputRequest'
        required: true
      security:
      - {}
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SignupOutput'
              examples:
                SignupOutputExample:
                  value:
                    token: abc123def456ghi789
                    user:
                      id: 2
                      username: newuser
                      email: newuser@example.com
                      first_name: Jane
                      last_name: Smith
                    message: Registration successful
                  summary: Example registration response
                  description: Successful registration response with token and user
                    data
          description: ''
        '400':
          content:
            application/json:
              schema:
                type: object
                additionalProperties: {}
                description: Unspecified response body
          description: ''
  /api/v1/auth/status/:
    post:
      operationId: v1_auth_status_create
      description: Check if user is authenticated and return user data.
      summary: Check authentication status
      tags:
      - Authentication
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AuthStatusOutputRequest'
            examples:
              AuthStatusAuthenticatedExample:
                value:
                  authenticated: true
                  user:
                    id: 1
                    username: thrillseeker
                    email: user@example.com
                    first_name: John
                    last_name: Doe
                summary: Example authenticated status
                description: Response when user is authenticated
              AuthStatusUnauthenticatedExample:
                value:
                  authenticated: false
                  user: null
                summary: Example unauthenticated status
                description: Response when user is not authenticated
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/AuthStatusOutputRequest'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/AuthStatusOutputRequest'
        required: true
      security:
      - cookieAuth: []
      - tokenAuth: []
      - {}
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthStatusOutput'
              examples:
                AuthStatusAuthenticatedExample:
                  value:
                    authenticated: true
                    user:
                      id: 1
                      username: thrillseeker
                      email: user@example.com
                      first_name: John
                      last_name: Doe
                  summary: Example authenticated status
                  description: Response when user is authenticated
                AuthStatusUnauthenticatedExample:
                  value:
                    authenticated: false
                    user: null
                  summary: Example unauthenticated status
                  description: Response when user is not authenticated
          description: ''
  /api/v1/auth/user/:
    get:
      operationId: v1_auth_user_retrieve
      description: Retrieve information about the currently authenticated user.
      summary: Get current user
      tags:
      - Authentication
      security:
      - cookieAuth: []
      - tokenAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserOutput'
              examples:
                UserOutputExample:
                  value:
                    id: 1
                    username: thrillseeker
                    email: user@example.com
                    first_name: John
                    last_name: Doe
                    is_active: true
                    date_joined: '2024-01-01T00:00:00Z'
                  summary: Example user response
                  description: A typical user object in API responses
          description: ''
        '401':
          content:
            application/json:
              schema:
                type: object
                additionalProperties: {}
                description: Unspecified response body
          description: ''
  /api/v1/core/entities/not-found/:
    post:
      operationId: v1_core_entities_not_found_create
      description: Handle entity not found scenarios with fuzzy matching suggestions
        and authentication prompts
      summary: Handle entity not found
      tags:
      - Core
      security:
      - cookieAuth: []
      - tokenAuth: []
      - {}
      responses:
        '200':
          description: No response body
  /api/v1/core/entities/search/:
    post:
      operationId: v1_core_entities_search_create
      description: Perform fuzzy entity search with authentication prompts for entity
        creation
      summary: Fuzzy entity search
      tags:
      - Core
      security:
      - cookieAuth: []
      - tokenAuth: []
      - {}
      responses:
        '200':
          description: No response body
  /api/v1/core/entities/suggestions/:
    get:
      operationId: v1_core_entities_suggestions_retrieve
      description: Lightweight endpoint for quick entity suggestions (e.g., autocomplete)
      summary: Quick entity suggestions
      tags:
      - Core
      security:
      - cookieAuth: []
      - tokenAuth: []
      - {}
      responses:
        '200':
          description: No response body
  /api/v1/email/send/:
    post:
      operationId: v1_email_send_create
      description: Send an email via the email service.
      summary: Send email
      tags:
      - Email
      requestBody:
        content:
          type:
            schema:
              type: object
              additionalProperties: {}
              description: Unspecified request body
          properties:
            schema:
              to:
                type: string
                format: email
                description: Recipient email address
              subject:
                type: string
                description: Email subject
              text:
                type: string
                description: Email body text
              from_email:
                type: string
                format: email
                description: Sender email address (optional)
          required:
            schema:
              type: object
              additionalProperties: {}
              description: Unspecified request body
      security:
      - cookieAuth: []
      - tokenAuth: []
      - {}
      responses:
        '200':
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                  response:
                    type: object
          description: ''
        '400':
          content:
            application/json:
              schema:
                type: object
                additionalProperties: {}
                description: Unspecified response body
          description: ''
        '500':
          content:
            application/json:
              schema:
                type: object
                additionalProperties: {}
                description: Unspecified response body
          description: ''
  /api/v1/health/:
    get:
      operationId: v1_health_retrieve
      description: Get comprehensive health check information including system metrics.
      summary: Health check
      tags:
      - Health
      security:
      - cookieAuth: []
      - tokenAuth: []
      - {}
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HealthCheckOutput'
          description: ''
        '503':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HealthCheckOutput'
          description: ''
  /api/v1/health/performance/:
    get:
      operationId: v1_health_performance_retrieve
      description: Get performance metrics and database analysis (debug mode only).
      summary: Performance metrics
      tags:
      - Health
      security:
      - cookieAuth: []
      - tokenAuth: []
      - {}
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PerformanceMetricsOutput'
          description: ''
        '403':
          content:
            application/json:
              schema:
                type: object
                additionalProperties: {}
                description: Unspecified response body
          description: ''
  /api/v1/health/simple/:
    get:
      operationId: v1_health_simple_retrieve
      description: Simple health check endpoint for load balancers.
      summary: Simple health check
      tags:
      - Health
      security:
      - cookieAuth: []
      - tokenAuth: []
      - {}
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SimpleHealthOutput'
          description: ''
        '503':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SimpleHealthOutput'
          description: ''
  /api/v1/history/parks/{park_slug}/:
    get:
      operationId: v1_history_parks_list
      description: Retrieve history timeline for a specific park including all changes
        over time.
      summary: Get park history
      parameters:
      - in: query
        name: end_date
        schema:
          type: string
          format: date
        description: Filter events before this date (YYYY-MM-DD)
      - in: query
        name: event_type
        schema:
          type: string
        description: Filter by event type (created, updated, deleted)
      - in: query
        name: limit
        schema:
          type: integer
        description: 'Number of history events to return (default: 50, max: 500)'
      - in: query
        name: offset
        schema:
          type: integer
        description: Offset for pagination
      - name: ordering
        required: false
        in: query
        description: Which field to use when ordering the results.
        schema:
          type: string
      - name: page
        required: false
        in: query
        description: A page number within the paginated result set.
        schema:
          type: integer
      - in: path
        name: park_slug
        schema:
          type: string
        required: true
      - in: query
        name: start_date
        schema:
          type: string
          format: date
        description: Filter events after this date (YYYY-MM-DD)
      tags:
      - History
      - Parks
      security:
      - cookieAuth: []
      - tokenAuth: []
      - {}
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedParkHistoryEventList'
          description: ''
  /api/v1/history/parks/{park_slug}/detail/:
    get:
      operationId: v1_history_parks_detail_retrieve
      description: Retrieve complete history for a park including current state and
        timeline.
      summary: Get complete park history
      parameters:
      - in: path
        name: park_slug
        schema:
          type: string
        required: true
      tags:
      - History
      - Parks
      security:
      - cookieAuth: []
      - tokenAuth: []
      - {}
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ParkHistoryOutput'
          description: ''
  /api/v1/history/parks/{park_slug}/rides/{ride_slug}/:
    get:
      operationId: v1_history_parks_rides_list
      description: Retrieve history timeline for a specific ride including all changes
        over time.
      summary: Get ride history
      parameters:
      - in: query
        name: end_date
        schema:
          type: string
          format: date
        description: Filter events before this date (YYYY-MM-DD)
      - in: query
        name: event_type
        schema:
          type: string
        description: Filter by event type (created, updated, deleted)
      - in: query
        name: limit
        schema:
          type: integer
        description: 'Number of history events to return (default: 50, max: 500)'
      - in: query
        name: offset
        schema:
          type: integer
        description: Offset for pagination
      - name: ordering
        required: false
        in: query
        description: Which field to use when ordering the results.
        schema:
          type: string
      - name: page
        required: false
        in: query
        description: A page number within the paginated result set.
        schema:
          type: integer
      - in: path
        name: park_slug
        schema:
          type: string
        required: true
      - in: path
        name: ride_slug
        schema:
          type: string
        required: true
      - in: query
        name: start_date
        schema:
          type: string
          format: date
        description: Filter events after this date (YYYY-MM-DD)
      tags:
      - History
      - Rides
      security:
      - cookieAuth: []
      - tokenAuth: []
      - {}
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedRideHistoryEventList'
          description: ''
  /api/v1/history/parks/{park_slug}/rides/{ride_slug}/detail/:
    get:
      operationId: v1_history_parks_rides_detail_retrieve
      description: Retrieve complete history for a ride including current state and
        timeline.
      summary: Get complete ride history
      parameters:
      - in: path
        name: park_slug
        schema:
          type: string
        required: true
      - in: path
        name: ride_slug
        schema:
          type: string
        required: true
      tags:
      - History
      - Rides
      security:
      - cookieAuth: []
      - tokenAuth: []
      - {}
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RideHistoryOutput'
          description: ''
  /api/v1/history/timeline/:
    get:
      operationId: v1_history_timeline_list
      description: Retrieve a unified timeline of all changes across parks, rides,
        and companies.
      summary: Unified history timeline
      parameters:
      - in: query
        name: end_date
        schema:
          type: string
          format: date
        description: Filter events before this date (YYYY-MM-DD)
      - in: query
        name: event_type
        schema:
          type: string
        description: Filter by event type (created, updated, deleted)
      - in: query
        name: limit
        schema:
          type: integer
        description: 'Number of history events to return (default: 100, max: 1000)'
      - in: query
        name: model_type
        schema:
          type: string
        description: Filter by model type (park, ride, company)
      - in: query
        name: offset
        schema:
          type: integer
        description: Offset for pagination
      - name: ordering
        required: false
        in: query
        description: Which field to use when ordering the results.
        schema:
          type: string
      - name: page
        required: false
        in: query
        description: A page number within the paginated result set.
        schema:
          type: integer
      - in: query
        name: significance
        schema:
          type: string
        description: Filter by change significance (major, minor, routine)
      - in: query
        name: start_date
        schema:
          type: string
          format: date
        description: Filter events after this date (YYYY-MM-DD)
      tags:
      - History
      security:
      - cookieAuth: []
      - tokenAuth: []
      - {}
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedUnifiedHistoryTimelineList'
          description: ''
  /api/v1/history/timeline/{id}/:
    get:
      operationId: v1_history_timeline_retrieve
      description: |-
        ViewSet for unified history timeline across all models.

        Provides a comprehensive view of all changes across
        parks, rides, and companies in chronological order.
      parameters:
      - in: path
        name: id
        schema:
          type: string
        required: true
      tags:
      - v1
      security:
      - cookieAuth: []
      - tokenAuth: []
      - {}
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnifiedHistoryTimeline'
          description: ''
  /api/v1/maps/bounds/:
    get:
      operationId: v1_maps_bounds_retrieve
      description: Get locations within specific geographic bounds.
      summary: Get locations within bounds
      parameters:
      - in: query
        name: east
        schema:
          type: number
        description: Eastern longitude bound
        required: true
      - in: query
        name: north
        schema:
          type: number
        description: Northern latitude bound
        required: true
      - in: query
        name: south
        schema:
          type: number
        description: Southern latitude bound
        required: true
      - in: query
        name: west
        schema:
          type: number
        description: Western longitude bound
        required: true
      tags:
      - Maps
      security:
      - cookieAuth: []
      - tokenAuth: []
      - {}
      responses:
        '200':
          content:
            application/json:
              schema:
                type: object
                additionalProperties: {}
          description: ''
        '400':
          content:
            application/json:
              schema:
                type: object
                additionalProperties: {}
          description: ''
  /api/v1/maps/cache/:
    post:
      operationId: v1_maps_cache_create
      description: Invalidate specific cache entries.
      summary: Invalidate specific cache entries
      tags:
      - Maps
      security:
      - cookieAuth: []
      - tokenAuth: []
      - {}
      responses:
        '200':
          content:
            application/json:
              schema:
                type: object
                additionalProperties: {}
          description: ''
    delete:
      operationId: v1_maps_cache_destroy
      description: Clear all map cache (admin only).
      summary: Clear map cache
      tags:
      - Maps
      security:
      - cookieAuth: []
      - tokenAuth: []
      - {}
      responses:
        '200':
          content:
            application/json:
              schema:
                type: object
                additionalProperties: {}
          description: ''
  /api/v1/maps/cache/invalidate/:
    post:
      operationId: v1_maps_cache_invalidate_create
      description: Invalidate specific cache entries.
      summary: Invalidate specific cache entries
      tags:
      - Maps
      security:
      - cookieAuth: []
      - tokenAuth: []
      - {}
      responses:
        '200':
          content:
            application/json:
              schema:
                type: object
                additionalProperties: {}
          description: ''
    delete:
      operationId: v1_maps_cache_invalidate_destroy
      description: Clear all map cache (admin only).
      summary: Clear map cache
      tags:
      - Maps
      security:
      - cookieAuth: []
      - tokenAuth: []
      - {}
      responses:
        '200':
          content:
            application/json:
              schema:
                type: object
                additionalProperties: {}
          description: ''
  /api/v1/maps/locations/:
    get:
      operationId: v1_maps_locations_retrieve
      description: Get map locations with optional clustering and filtering.
      summary: Get map locations
      parameters:
      - in: query
        name: cluster
        schema:
          type: boolean
        description: Enable clustering
      - in: query
        name: east
        schema:
          type: number
        description: Eastern longitude bound
      - in: query
        name: north
        schema:
          type: number
        description: Northern latitude bound
      - in: query
        name: q
        schema:
          type: string
        description: Text query
      - in: query
        name: south
        schema:
          type: number
        description: Southern latitude bound
      - in: query
        name: types
        schema:
          type: string
        description: Comma-separated location types
      - in: query
        name: west
        schema:
          type: number
        description: Western longitude bound
      - in: query
        name: zoom
        schema:
          type: integer
        description: Map zoom level
      tags:
      - Maps
      security:
      - cookieAuth: []
      - tokenAuth: []
      - {}
      responses:
        '200':
          content:
            application/json:
              schema:
                type: object
                additionalProperties: {}
          description: ''
  /api/v1/maps/locations/{location_type}/{location_id}/:
    get:
      operationId: v1_maps_locations_retrieve_2
      description: Get detailed information about a specific location.
      summary: Get location details
      parameters:
      - in: path
        name: location_id
        schema:
          type: integer
        description: ID of the location
        required: true
      - in: path
        name: location_type
        schema:
          type: string
        description: Type of location
        required: true
      tags:
      - Maps
      security:
      - cookieAuth: []
      - tokenAuth: []
      - {}
      responses:
        '200':
          content:
            application/json:
              schema:
                type: object
                additionalProperties: {}
          description: ''
        '404':
          content:
            application/json:
              schema:
                type: object
                additionalProperties: {}
          description: ''
  /api/v1/maps/search/:
    get:
      operationId: v1_maps_search_retrieve
      description: Search locations by text query with optional bounds filtering.
      summary: Search map locations
      parameters:
      - in: query
        name: q
        schema:
          type: string
        description: Search query
        required: true
      tags:
      - Maps
      security:
      - cookieAuth: []
      - tokenAuth: []
      - {}
      responses:
        '200':
          content:
            application/json:
              schema:
                type: object
                additionalProperties: {}
          description: ''
        '400':
          content:
            application/json:
              schema:
                type: object
                additionalProperties: {}
          description: ''
  /api/v1/maps/stats/:
    get:
      operationId: v1_maps_stats_retrieve
      description: Get map service statistics and performance metrics.
      summary: Get map service statistics
      tags:
      - Maps
      security:
      - cookieAuth: []
      - tokenAuth: []
      - {}
      responses:
        '200':
          content:
            application/json:
              schema:
                type: object
                additionalProperties: {}
          description: ''
  /api/v1/media/photos/:
    get:
      operationId: v1_media_photos_list
      description: Retrieve a list of photos with optional filtering
      summary: List photos
      parameters:
      - in: query
        name: content_type
        schema:
          type: string
        description: Filter by content type (e.g., 'parks.park', 'rides.ride')
      - in: query
        name: is_primary
        schema:
          type: boolean
        description: Filter by primary photos only
      - in: query
        name: object_id
        schema:
          type: integer
        description: Filter by object ID
      - name: ordering
        required: false
        in: query
        description: Which field to use when ordering the results.
        schema:
          type: string
      - name: page
        required: false
        in: query
        description: A page number within the paginated result set.
        schema:
          type: integer
      - name: search
        required: false
        in: query
        description: A search term.
        schema:
          type: string
      tags:
      - Media
      security:
      - cookieAuth: []
      - tokenAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedPhotoListOutputList'
          description: ''
    post:
      operationId: v1_media_photos_create
      description: ViewSet for managing photos across domains.
      tags:
      - v1
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PhotoDetailOutputRequest'
            examples:
              PhotoDetailExample:
                value:
                  id: 1
                  url: https://example.com/media/photos/ride123.jpg
                  thumbnail_url: https://example.com/media/thumbnails/ride123_thumb.jpg
                  caption: Amazing view of Steel Vengeance
                  alt_text: Steel Vengeance roller coaster with blue sky
                  is_primary: true
                  uploaded_at: '2024-08-15T10:30:00Z'
                  uploaded_by:
                    id: 1
                    username: coaster_photographer
                    display_name: Coaster Photographer
                  content_type: Ride
                  object_id: 123
                summary: Example photo detail response
                description: A photo with full details
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/PhotoDetailOutputRequest'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/PhotoDetailOutputRequest'
        required: true
      security:
      - cookieAuth: []
      - tokenAuth: []
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PhotoDetailOutput'
              examples:
                PhotoDetailExample:
                  value:
                    id: 1
                    url: https://example.com/media/photos/ride123.jpg
                    thumbnail_url: https://example.com/media/thumbnails/ride123_thumb.jpg
                    caption: Amazing view of Steel Vengeance
                    alt_text: Steel Vengeance roller coaster with blue sky
                    is_primary: true
                    uploaded_at: '2024-08-15T10:30:00Z'
                    uploaded_by:
                      id: 1
                      username: coaster_photographer
                      display_name: Coaster Photographer
                    content_type: Ride
                    object_id: 123
                  summary: Example photo detail response
                  description: A photo with full details
          description: ''
  /api/v1/media/photos/{id}/:
    get:
      operationId: v1_media_photos_retrieve
      description: Retrieve detailed information about a specific photo
      summary: Get photo details
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this park photo.
        required: true
      tags:
      - Media
      security:
      - cookieAuth: []
      - tokenAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PhotoDetailOutput'
              examples:
                PhotoDetailExample:
                  value:
                    id: 1
                    url: https://example.com/media/photos/ride123.jpg
                    thumbnail_url: https://example.com/media/thumbnails/ride123_thumb.jpg
                    caption: Amazing view of Steel Vengeance
                    alt_text: Steel Vengeance roller coaster with blue sky
                    is_primary: true
                    uploaded_at: '2024-08-15T10:30:00Z'
                    uploaded_by:
                      id: 1
                      username: coaster_photographer
                      display_name: Coaster Photographer
                    content_type: Ride
                    object_id: 123
                  summary: Example photo detail response
                  description: A photo with full details
          description: ''
        '404':
          content:
            application/json:
              schema:
                type: object
                additionalProperties: {}
          description: ''
    put:
      operationId: v1_media_photos_update
      description: Update photo information (caption, alt text, etc.)
      summary: Update photo
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this park photo.
        required: true
      tags:
      - Media
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PhotoUpdateInputRequest'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/PhotoUpdateInputRequest'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/PhotoUpdateInputRequest'
      security:
      - cookieAuth: []
      - tokenAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PhotoDetailOutput'
              examples:
                PhotoDetailExample:
                  value:
                    id: 1
                    url: https://example.com/media/photos/ride123.jpg
                    thumbnail_url: https://example.com/media/thumbnails/ride123_thumb.jpg
                    caption: Amazing view of Steel Vengeance
                    alt_text: Steel Vengeance roller coaster with blue sky
                    is_primary: true
                    uploaded_at: '2024-08-15T10:30:00Z'
                    uploaded_by:
                      id: 1
                      username: coaster_photographer
                      display_name: Coaster Photographer
                    content_type: Ride
                    object_id: 123
                  summary: Example photo detail response
                  description: A photo with full details
          description: ''
        '400':
          content:
            application/json:
              schema:
                type: object
                additionalProperties: {}
          description: ''
        '403':
          content:
            application/json:
              schema:
                type: object
                additionalProperties: {}
          description: ''
        '404':
          content:
            application/json:
              schema:
                type: object
                additionalProperties: {}
          description: ''
    patch:
      operationId: v1_media_photos_partial_update
      description: ViewSet for managing photos across domains.
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this park photo.
        required: true
      tags:
      - v1
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PatchedPhotoUpdateInputRequest'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/PatchedPhotoUpdateInputRequest'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/PatchedPhotoUpdateInputRequest'
      security:
      - cookieAuth: []
      - tokenAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PhotoUpdateInput'
          description: ''
    delete:
      operationId: v1_media_photos_destroy
      description: Delete a photo (only by owner or admin)
      summary: Delete photo
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this park photo.
        required: true
      tags:
      - Media
      security:
      - cookieAuth: []
      - tokenAuth: []
      responses:
        '204':
          description: No response body
        '403':
          content:
            application/json:
              schema:
                type: object
                additionalProperties: {}
          description: ''
        '404':
          content:
            application/json:
              schema:
                type: object
                additionalProperties: {}
          description: ''
  /api/v1/media/photos/{id}/set_primary/:
    post:
      operationId: v1_media_photos_set_primary_create
      description: Set this photo as the primary photo for its content object
      summary: Set photo as primary
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this park photo.
        required: true
      tags:
      - Media
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PhotoDetailOutputRequest'
            examples:
              PhotoDetailExample:
                value:
                  id: 1
                  url: https://example.com/media/photos/ride123.jpg
                  thumbnail_url: https://example.com/media/thumbnails/ride123_thumb.jpg
                  caption: Amazing view of Steel Vengeance
                  alt_text: Steel Vengeance roller coaster with blue sky
                  is_primary: true
                  uploaded_at: '2024-08-15T10:30:00Z'
                  uploaded_by:
                    id: 1
                    username: coaster_photographer
                    display_name: Coaster Photographer
                  content_type: Ride
                  object_id: 123
                summary: Example photo detail response
                description: A photo with full details
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/PhotoDetailOutputRequest'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/PhotoDetailOutputRequest'
        required: true
      security:
      - cookieAuth: []
      - tokenAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                type: object
                additionalProperties: {}
          description: ''
        '403':
          content:
            application/json:
              schema:
                type: object
                additionalProperties: {}
          description: ''
        '404':
          content:
            application/json:
              schema:
                type: object
                additionalProperties: {}
          description: ''
  /api/v1/media/photos/bulk-action/:
    post:
      operationId: v1_media_photos_bulk_action_create
      description: Perform bulk actions on multiple photos (delete, approve, etc.)
      summary: Bulk photo actions
      tags:
      - Media
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BulkPhotoActionInputRequest'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/BulkPhotoActionInputRequest'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/BulkPhotoActionInputRequest'
        required: true
      security:
      - cookieAuth: []
      - tokenAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BulkPhotoActionOutput'
          description: ''
        '400':
          content:
            application/json:
              schema:
                type: object
                additionalProperties: {}
          description: ''
        '403':
          content:
            application/json:
              schema:
                type: object
                additionalProperties: {}
          description: ''
  /api/v1/media/stats/:
    get:
      operationId: v1_media_stats_retrieve
      description: Retrieve statistics about photos and media usage
      summary: Get media statistics
      tags:
      - Media
      security:
      - cookieAuth: []
      - tokenAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MediaStatsOutput'
          description: ''
  /api/v1/media/upload/:
    post:
      operationId: v1_media_upload_create
      description: Upload a photo and associate it with a content object (park, ride,
        etc.)
      summary: Upload photo
      tags:
      - Media
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/PhotoUploadInputRequest'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/PhotoUploadInputRequest'
        required: true
      security:
      - cookieAuth: []
      - tokenAuth: []
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PhotoUploadOutput'
          description: ''
        '400':
          content:
            application/json:
              schema:
                type: object
                additionalProperties: {}
          description: ''
        '403':
          content:
            application/json:
              schema:
                type: object
                additionalProperties: {}
          description: ''
  /api/v1/parks/photos/:
    get:
      operationId: v1_parks_photos_list
      description: Retrieve a paginated list of park photos with filtering capabilities.
      summary: List park photos
      parameters:
      - name: ordering
        required: false
        in: query
        description: Which field to use when ordering the results.
        schema:
          type: string
      - name: page
        required: false
        in: query
        description: A page number within the paginated result set.
        schema:
          type: integer
      - name: search
        required: false
        in: query
        description: A search term.
        schema:
          type: string
      tags:
      - Park Media
      security:
      - cookieAuth: []
      - tokenAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedParkPhotoListOutputList'
          description: ''
    post:
      operationId: v1_parks_photos_create
      description: Upload a new photo for a park. Requires authentication.
      summary: Upload park photo
      tags:
      - Park Media
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ParkPhotoCreateInputRequest'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/ParkPhotoCreateInputRequest'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/ParkPhotoCreateInputRequest'
        required: true
      security:
      - cookieAuth: []
      - tokenAuth: []
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ParkPhotoOutput'
          description: ''
        '400':
          content:
            application/json:
              schema:
                type: object
                additionalProperties: {}
          description: ''
        '401':
          content:
            application/json:
              schema:
                type: object
                additionalProperties: {}
          description: ''
  /api/v1/parks/photos/{id}/:
    get:
      operationId: v1_parks_photos_retrieve
      description: Retrieve detailed information about a specific park photo.
      summary: Get park photo details
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this park photo.
        required: true
      tags:
      - Park Media
      security:
      - cookieAuth: []
      - tokenAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ParkPhotoOutput'
          description: ''
        '404':
          content:
            application/json:
              schema:
                type: object
                additionalProperties: {}
          description: ''
    put:
      operationId: v1_parks_photos_update
      description: Update park photo information. Requires authentication and ownership
        or admin privileges.
      summary: Update park photo
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this park photo.
        required: true
      tags:
      - Park Media
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ParkPhotoUpdateInputRequest'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/ParkPhotoUpdateInputRequest'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/ParkPhotoUpdateInputRequest'
      security:
      - cookieAuth: []
      - tokenAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ParkPhotoOutput'
          description: ''
        '400':
          content:
            application/json:
              schema:
                type: object
                additionalProperties: {}
          description: ''
        '401':
          content:
            application/json:
              schema:
                type: object
                additionalProperties: {}
          description: ''
        '403':
          content:
            application/json:
              schema:
                type: object
                additionalProperties: {}
          description: ''
        '404':
          content:
            application/json:
              schema:
                type: object
                additionalProperties: {}
          description: ''
    patch:
      operationId: v1_parks_photos_partial_update
      description: Partially update park photo information. Requires authentication
        and ownership or admin privileges.
      summary: Partially update park photo
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this park photo.
        required: true
      tags:
      - Park Media
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PatchedParkPhotoUpdateInputRequest'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/PatchedParkPhotoUpdateInputRequest'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/PatchedParkPhotoUpdateInputRequest'
      security:
      - cookieAuth: []
      - tokenAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ParkPhotoOutput'
          description: ''
        '400':
          content:
            application/json:
              schema:
                type: object
                additionalProperties: {}
          description: ''
        '401':
          content:
            application/json:
              schema:
                type: object
                additionalProperties: {}
          description: ''
        '403':
          content:
            application/json:
              schema:
                type: object
                additionalProperties: {}
          description: ''
        '404':
          content:
            application/json:
              schema:
                type: object
                additionalProperties: {}
          description: ''
    delete:
      operationId: v1_parks_photos_destroy
      description: Delete a park photo. Requires authentication and ownership or admin
        privileges.
      summary: Delete park photo
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this park photo.
        required: true
      tags:
      - Park Media
      security:
      - cookieAuth: []
      - tokenAuth: []
      responses:
        '204':
          description: No response body
        '401':
          content:
            application/json:
              schema:
                type: object
                additionalProperties: {}
          description: ''
        '403':
          content:
            application/json:
              schema:
                type: object
                additionalProperties: {}
          description: ''
        '404':
          content:
            application/json:
              schema:
                type: object
                additionalProperties: {}
          description: ''
  /api/v1/parks/photos/{id}/set_primary/:
    post:
      operationId: v1_parks_photos_set_primary_create
      description: Set this photo as the primary photo for the park.
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this park photo.
        required: true
      tags:
      - v1
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ParkPhotoOutputRequest'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/ParkPhotoOutputRequest'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/ParkPhotoOutputRequest'
        required: true
      security:
      - cookieAuth: []
      - tokenAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ParkPhotoOutput'
          description: ''
  /api/v1/parks/photos/{id}/set_primary_legacy/:
    post:
      operationId: v1_parks_photos_set_primary_legacy_create
      description: Legacy set primary action for backwards compatibility.
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this park photo.
        required: true
      tags:
      - v1
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ParkPhotoOutputRequest'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/ParkPhotoOutputRequest'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/ParkPhotoOutputRequest'
        required: true
      security:
      - cookieAuth: []
      - tokenAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ParkPhotoOutput'
          description: ''
  /api/v1/parks/photos/bulk_approve/:
    post:
      operationId: v1_parks_photos_bulk_approve_create
      description: Bulk approve or reject multiple photos (admin only).
      tags:
      - v1
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ParkPhotoOutputRequest'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/ParkPhotoOutputRequest'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/ParkPhotoOutputRequest'
        required: true
      security:
      - cookieAuth: []
      - tokenAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ParkPhotoOutput'
          description: ''
  /api/v1/parks/photos/stats/:
    get:
      operationId: v1_parks_photos_stats_retrieve
      description: Get photo statistics for the park.
      tags:
      - v1
      security:
      - cookieAuth: []
      - tokenAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ParkPhotoOutput'
          description: ''
  /api/v1/rankings/:
    get:
      operationId: v1_rankings_list
      description: Get the current ride rankings calculated using the Internet Roller
        Coaster Poll algorithm.
      summary: List ride rankings
      parameters:
      - in: query
        name: category
        schema:
          type: string
          enum:
          - DR
          - FR
          - OT
          - RC
          - TR
          - WR
        description: Filter by ride category (RC, DR, FR, WR, TR, OT)
      - in: query
        name: min_riders
        schema:
          type: integer
        description: Minimum number of mutual riders required
      - in: query
        name: ordering
        schema:
          type: string
        description: Order results (rank, -rank, winning_percentage, -winning_percentage)
      - name: page
        required: false
        in: query
        description: A page number within the paginated result set.
        schema:
          type: integer
      - in: query
        name: park
        schema:
          type: string
        description: Filter by park slug
      - in: query
        name: ride__category
        schema:
          type: string
          enum:
          - ''
          - DR
          - FR
          - OT
          - RC
          - TR
          - WR
        description: |-
          * `` - Select ride type
          * `RC` - Roller Coaster
          * `DR` - Dark Ride
          * `FR` - Flat Ride
          * `WR` - Water Ride
          * `TR` - Transport
          * `OT` - Other
      tags:
      - Rankings
      security:
      - cookieAuth: []
      - tokenAuth: []
      - {}
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedRideRankingList'
              examples:
                RideRankingExample:
                  value:
                    count: 123
                    next: http://api.example.org/accounts/?page=4
                    previous: http://api.example.org/accounts/?page=2
                    results:
                    - id: 1
                      rank: 1
                      ride:
                        id: 123
                        name: Steel Vengeance
                        slug: steel-vengeance
                        park:
                          id: 45
                          name: Cedar Point
                          slug: cedar-point
                        category: RC
                      wins: 523
                      losses: 87
                      ties: 45
                      winning_percentage: 0.8234
                      mutual_riders_count: 1250
                      comparison_count: 655
                      average_rating: 9.2
                      last_calculated: '2024-01-15T02:00:00Z'
                      rank_change: 2
                      previous_rank: 3
                  summary: Example ranking response
                  description: A ride ranking with all metrics
          description: ''
  /api/v1/rankings/{ride_slug}/:
    get:
      operationId: v1_rankings_retrieve
      description: Get detailed ranking information for a specific ride.
      summary: Get ranking details
      parameters:
      - in: path
        name: ride_slug
        schema:
          type: string
        required: true
      tags:
      - Rankings
      security:
      - cookieAuth: []
      - tokenAuth: []
      - {}
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RideRankingDetail'
          description: ''
        '404':
          content:
            application/json:
              schema:
                type: object
                additionalProperties: {}
          description: ''
  /api/v1/rankings/{ride_slug}/comparisons/:
    get:
      operationId: v1_rankings_comparisons_retrieve
      description: Get head-to-head comparisons for a specific ride.
      parameters:
      - in: path
        name: ride_slug
        schema:
          type: string
        required: true
      tags:
      - v1
      security:
      - cookieAuth: []
      - tokenAuth: []
      - {}
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RideRanking'
              examples:
                RideRankingExample:
                  value:
                    id: 1
                    rank: 1
                    ride:
                      id: 123
                      name: Steel Vengeance
                      slug: steel-vengeance
                      park:
                        id: 45
                        name: Cedar Point
                        slug: cedar-point
                      category: RC
                    wins: 523
                    losses: 87
                    ties: 45
                    winning_percentage: 0.8234
                    mutual_riders_count: 1250
                    comparison_count: 655
                    average_rating: 9.2
                    last_calculated: '2024-01-15T02:00:00Z'
                    rank_change: 2
                    previous_rank: 3
                  summary: Example ranking response
                  description: A ride ranking with all metrics
          description: ''
  /api/v1/rankings/{ride_slug}/history/:
    get:
      operationId: v1_rankings_history_list
      description: Get historical ranking data for a specific ride.
      summary: Get ranking history
      parameters:
      - name: ordering
        required: false
        in: query
        description: Which field to use when ordering the results.
        schema:
          type: string
      - name: page
        required: false
        in: query
        description: A page number within the paginated result set.
        schema:
          type: integer
      - in: query
        name: ride__category
        schema:
          type: string
          enum:
          - ''
          - DR
          - FR
          - OT
          - RC
          - TR
          - WR
        description: |-
          * `` - Select ride type
          * `RC` - Roller Coaster
          * `DR` - Dark Ride
          * `FR` - Flat Ride
          * `WR` - Water Ride
          * `TR` - Transport
          * `OT` - Other
      - in: path
        name: ride_slug
        schema:
          type: string
        required: true
      tags:
      - Rankings
      security:
      - cookieAuth: []
      - tokenAuth: []
      - {}
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedRankingSnapshotList'
          description: ''
  /api/v1/rankings/calculate/:
    post:
      operationId: v1_rankings_calculate_create
      description: Manually trigger a ranking calculation (admin only).
      summary: Trigger ranking calculation
      tags:
      - Rankings
      - Admin
      security:
      - cookieAuth: []
      - tokenAuth: []
      responses:
        '200':
          content:
            application/json:
              schema:
                type: object
                additionalProperties: {}
          description: ''
        '403':
          content:
            application/json:
              schema:
                type: object
                additionalProperties: {}
          description: ''
  /api/v1/rankings/statistics/:
    get:
      operationId: v1_rankings_statistics_retrieve
      description: Get overall statistics about the ranking system.
      summary: Get ranking statistics
      tags:
      - Rankings
      - Statistics
      security:
      - cookieAuth: []
      - tokenAuth: []
      - {}
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RankingStats'
          description: ''
  /api/v1/rides/:
    get:
      operationId: v1_rides_list
      description: List rides with basic filtering and pagination.
      summary: List rides or create a new ride
      tags:
      - Rides
      security:
      - cookieAuth: []
      - tokenAuth: []
      - {}
      responses:
        '200':
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/RideListOutput'
              examples:
                RideListExample:
                  value:
                  - id: 1
                    name: Steel Vengeance
                    slug: steel-vengeance
                    category: ROLLER_COASTER
                    status: OPERATING
                    description: Hybrid roller coaster
                    park:
                      id: 1
                      name: Cedar Point
                      slug: cedar-point
                    average_rating: 4.8
                    capacity_per_hour: 1200
                    opening_date: '2018-05-05'
                  summary: Example ride list response
                  description: A typical ride in the list view
          description: ''
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RideDetailOutput'
              examples:
                RideDetailExample:
                  value:
                    id: 1
                    name: Steel Vengeance
                    slug: steel-vengeance
                    category: ROLLER_COASTER
                    status: OPERATING
                    description: Hybrid roller coaster featuring RMC I-Box track
                    park:
                      id: 1
                      name: Cedar Point
                      slug: cedar-point
                    opening_date: '2018-05-05'
                    min_height_in: 48
                    capacity_per_hour: 1200
                    ride_duration_seconds: 150
                    average_rating: 4.8
                    manufacturer:
                      id: 1
                      name: Rocky Mountain Construction
                      slug: rocky-mountain-construction
                  summary: Example ride detail response
                  description: A complete ride detail response
          description: ''
    post:
      operationId: v1_rides_create
      description: Create a new ride.
      summary: List rides or create a new ride
      tags:
      - Rides
      security:
      - cookieAuth: []
      - tokenAuth: []
      - {}
      responses:
        '200':
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/RideListOutput'
              examples:
                RideListExample:
                  value:
                  - id: 1
                    name: Steel Vengeance
                    slug: steel-vengeance
                    category: ROLLER_COASTER
                    status: OPERATING
                    description: Hybrid roller coaster
                    park:
                      id: 1
                      name: Cedar Point
                      slug: cedar-point
                    average_rating: 4.8
                    capacity_per_hour: 1200
                    opening_date: '2018-05-05'
                  summary: Example ride list response
                  description: A typical ride in the list view
          description: ''
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RideDetailOutput'
              examples:
                RideDetailExample:
                  value:
                    id: 1
                    name: Steel Vengeance
                    slug: steel-vengeance
                    category: ROLLER_COASTER
                    status: OPERATING
                    description: Hybrid roller coaster featuring RMC I-Box track
                    park:
                      id: 1
                      name: Cedar Point
                      slug: cedar-point
                    opening_date: '2018-05-05'
                    min_height_in: 48
                    capacity_per_hour: 1200
                    ride_duration_seconds: 150
                    average_rating: 4.8
                    manufacturer:
                      id: 1
                      name: Rocky Mountain Construction
                      slug: rocky-mountain-construction
                  summary: Example ride detail response
                  description: A complete ride detail response
          description: ''
  /api/v1/rides/{id}/:
    get:
      operationId: v1_rides_retrieve
      summary: Retrieve, update or delete a ride
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        required: true
      tags:
      - Rides
      security:
      - cookieAuth: []
      - tokenAuth: []
      - {}
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RideDetailOutput'
              examples:
                RideDetailExample:
                  value:
                    id: 1
                    name: Steel Vengeance
                    slug: steel-vengeance
                    category: ROLLER_COASTER
                    status: OPERATING
                    description: Hybrid roller coaster featuring RMC I-Box track
                    park:
                      id: 1
                      name: Cedar Point
                      slug: cedar-point
                    opening_date: '2018-05-05'
                    min_height_in: 48
                    capacity_per_hour: 1200
                    ride_duration_seconds: 150
                    average_rating: 4.8
                    manufacturer:
                      id: 1
                      name: Rocky Mountain Construction
                      slug: rocky-mountain-construction
                  summary: Example ride detail response
                  description: A complete ride detail response
          description: ''
    put:
      operationId: v1_rides_update
      summary: Retrieve, update or delete a ride
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        required: true
      tags:
      - Rides
      security:
      - cookieAuth: []
      - tokenAuth: []
      - {}
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RideDetailOutput'
              examples:
                RideDetailExample:
                  value:
                    id: 1
                    name: Steel Vengeance
                    slug: steel-vengeance
                    category: ROLLER_COASTER
                    status: OPERATING
                    description: Hybrid roller coaster featuring RMC I-Box track
                    park:
                      id: 1
                      name: Cedar Point
                      slug: cedar-point
                    opening_date: '2018-05-05'
                    min_height_in: 48
                    capacity_per_hour: 1200
                    ride_duration_seconds: 150
                    average_rating: 4.8
                    manufacturer:
                      id: 1
                      name: Rocky Mountain Construction
                      slug: rocky-mountain-construction
                  summary: Example ride detail response
                  description: A complete ride detail response
          description: ''
    patch:
      operationId: v1_rides_partial_update
      summary: Retrieve, update or delete a ride
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        required: true
      tags:
      - Rides
      security:
      - cookieAuth: []
      - tokenAuth: []
      - {}
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RideDetailOutput'
              examples:
                RideDetailExample:
                  value:
                    id: 1
                    name: Steel Vengeance
                    slug: steel-vengeance
                    category: ROLLER_COASTER
                    status: OPERATING
                    description: Hybrid roller coaster featuring RMC I-Box track
                    park:
                      id: 1
                      name: Cedar Point
                      slug: cedar-point
                    opening_date: '2018-05-05'
                    min_height_in: 48
                    capacity_per_hour: 1200
                    ride_duration_seconds: 150
                    average_rating: 4.8
                    manufacturer:
                      id: 1
                      name: Rocky Mountain Construction
                      slug: rocky-mountain-construction
                  summary: Example ride detail response
                  description: A complete ride detail response
          description: ''
    delete:
      operationId: v1_rides_destroy
      summary: Retrieve, update or delete a ride
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        required: true
      tags:
      - Rides
      security:
      - cookieAuth: []
      - tokenAuth: []
      - {}
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RideDetailOutput'
              examples:
                RideDetailExample:
                  value:
                    id: 1
                    name: Steel Vengeance
                    slug: steel-vengeance
                    category: ROLLER_COASTER
                    status: OPERATING
                    description: Hybrid roller coaster featuring RMC I-Box track
                    park:
                      id: 1
                      name: Cedar Point
                      slug: cedar-point
                    opening_date: '2018-05-05'
                    min_height_in: 48
                    capacity_per_hour: 1200
                    ride_duration_seconds: 150
                    average_rating: 4.8
                    manufacturer:
                      id: 1
                      name: Rocky Mountain Construction
                      slug: rocky-mountain-construction
                  summary: Example ride detail response
                  description: A complete ride detail response
          description: ''
  /api/v1/rides/{id}/delete/:
    get:
      operationId: v1_rides_delete_retrieve
      summary: Retrieve, update or delete a ride
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        required: true
      tags:
      - Rides
      security:
      - cookieAuth: []
      - tokenAuth: []
      - {}
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RideDetailOutput'
              examples:
                RideDetailExample:
                  value:
                    id: 1
                    name: Steel Vengeance
                    slug: steel-vengeance
                    category: ROLLER_COASTER
                    status: OPERATING
                    description: Hybrid roller coaster featuring RMC I-Box track
                    park:
                      id: 1
                      name: Cedar Point
                      slug: cedar-point
                    opening_date: '2018-05-05'
                    min_height_in: 48
                    capacity_per_hour: 1200
                    ride_duration_seconds: 150
                    average_rating: 4.8
                    manufacturer:
                      id: 1
                      name: Rocky Mountain Construction
                      slug: rocky-mountain-construction
                  summary: Example ride detail response
                  description: A complete ride detail response
          description: ''
    put:
      operationId: v1_rides_delete_update
      summary: Retrieve, update or delete a ride
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        required: true
      tags:
      - Rides
      security:
      - cookieAuth: []
      - tokenAuth: []
      - {}
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RideDetailOutput'
              examples:
                RideDetailExample:
                  value:
                    id: 1
                    name: Steel Vengeance
                    slug: steel-vengeance
                    category: ROLLER_COASTER
                    status: OPERATING
                    description: Hybrid roller coaster featuring RMC I-Box track
                    park:
                      id: 1
                      name: Cedar Point
                      slug: cedar-point
                    opening_date: '2018-05-05'
                    min_height_in: 48
                    capacity_per_hour: 1200
                    ride_duration_seconds: 150
                    average_rating: 4.8
                    manufacturer:
                      id: 1
                      name: Rocky Mountain Construction
                      slug: rocky-mountain-construction
                  summary: Example ride detail response
                  description: A complete ride detail response
          description: ''
    patch:
      operationId: v1_rides_delete_partial_update
      summary: Retrieve, update or delete a ride
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        required: true
      tags:
      - Rides
      security:
      - cookieAuth: []
      - tokenAuth: []
      - {}
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RideDetailOutput'
              examples:
                RideDetailExample:
                  value:
                    id: 1
                    name: Steel Vengeance
                    slug: steel-vengeance
                    category: ROLLER_COASTER
                    status: OPERATING
                    description: Hybrid roller coaster featuring RMC I-Box track
                    park:
                      id: 1
                      name: Cedar Point
                      slug: cedar-point
                    opening_date: '2018-05-05'
                    min_height_in: 48
                    capacity_per_hour: 1200
                    ride_duration_seconds: 150
                    average_rating: 4.8
                    manufacturer:
                      id: 1
                      name: Rocky Mountain Construction
                      slug: rocky-mountain-construction
                  summary: Example ride detail response
                  description: A complete ride detail response
          description: ''
    delete:
      operationId: v1_rides_delete_destroy
      summary: Retrieve, update or delete a ride
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        required: true
      tags:
      - Rides
      security:
      - cookieAuth: []
      - tokenAuth: []
      - {}
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RideDetailOutput'
              examples:
                RideDetailExample:
                  value:
                    id: 1
                    name: Steel Vengeance
                    slug: steel-vengeance
                    category: ROLLER_COASTER
                    status: OPERATING
                    description: Hybrid roller coaster featuring RMC I-Box track
                    park:
                      id: 1
                      name: Cedar Point
                      slug: cedar-point
                    opening_date: '2018-05-05'
                    min_height_in: 48
                    capacity_per_hour: 1200
                    ride_duration_seconds: 150
                    average_rating: 4.8
                    manufacturer:
                      id: 1
                      name: Rocky Mountain Construction
                      slug: rocky-mountain-construction
                  summary: Example ride detail response
                  description: A complete ride detail response
          description: ''
  /api/v1/rides/{id}/duplicate/:
    get:
      operationId: v1_rides_duplicate_retrieve
      summary: Retrieve, update or delete a ride
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        required: true
      tags:
      - Rides
      security:
      - cookieAuth: []
      - tokenAuth: []
      - {}
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RideDetailOutput'
              examples:
                RideDetailExample:
                  value:
                    id: 1
                    name: Steel Vengeance
                    slug: steel-vengeance
                    category: ROLLER_COASTER
                    status: OPERATING
                    description: Hybrid roller coaster featuring RMC I-Box track
                    park:
                      id: 1
                      name: Cedar Point
                      slug: cedar-point
                    opening_date: '2018-05-05'
                    min_height_in: 48
                    capacity_per_hour: 1200
                    ride_duration_seconds: 150
                    average_rating: 4.8
                    manufacturer:
                      id: 1
                      name: Rocky Mountain Construction
                      slug: rocky-mountain-construction
                  summary: Example ride detail response
                  description: A complete ride detail response
          description: ''
    put:
      operationId: v1_rides_duplicate_update
      summary: Retrieve, update or delete a ride
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        required: true
      tags:
      - Rides
      security:
      - cookieAuth: []
      - tokenAuth: []
      - {}
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RideDetailOutput'
              examples:
                RideDetailExample:
                  value:
                    id: 1
                    name: Steel Vengeance
                    slug: steel-vengeance
                    category: ROLLER_COASTER
                    status: OPERATING
                    description: Hybrid roller coaster featuring RMC I-Box track
                    park:
                      id: 1
                      name: Cedar Point
                      slug: cedar-point
                    opening_date: '2018-05-05'
                    min_height_in: 48
                    capacity_per_hour: 1200
                    ride_duration_seconds: 150
                    average_rating: 4.8
                    manufacturer:
                      id: 1
                      name: Rocky Mountain Construction
                      slug: rocky-mountain-construction
                  summary: Example ride detail response
                  description: A complete ride detail response
          description: ''
    patch:
      operationId: v1_rides_duplicate_partial_update
      summary: Retrieve, update or delete a ride
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        required: true
      tags:
      - Rides
      security:
      - cookieAuth: []
      - tokenAuth: []
      - {}
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RideDetailOutput'
              examples:
                RideDetailExample:
                  value:
                    id: 1
                    name: Steel Vengeance
                    slug: steel-vengeance
                    category: ROLLER_COASTER
                    status: OPERATING
                    description: Hybrid roller coaster featuring RMC I-Box track
                    park:
                      id: 1
                      name: Cedar Point
                      slug: cedar-point
                    opening_date: '2018-05-05'
                    min_height_in: 48
                    capacity_per_hour: 1200
                    ride_duration_seconds: 150
                    average_rating: 4.8
                    manufacturer:
                      id: 1
                      name: Rocky Mountain Construction
                      slug: rocky-mountain-construction
                  summary: Example ride detail response
                  description: A complete ride detail response
          description: ''
    delete:
      operationId: v1_rides_duplicate_destroy
      summary: Retrieve, update or delete a ride
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        required: true
      tags:
      - Rides
      security:
      - cookieAuth: []
      - tokenAuth: []
      - {}
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RideDetailOutput'
              examples:
                RideDetailExample:
                  value:
                    id: 1
                    name: Steel Vengeance
                    slug: steel-vengeance
                    category: ROLLER_COASTER
                    status: OPERATING
                    description: Hybrid roller coaster featuring RMC I-Box track
                    park:
                      id: 1
                      name: Cedar Point
                      slug: cedar-point
                    opening_date: '2018-05-05'
                    min_height_in: 48
                    capacity_per_hour: 1200
                    ride_duration_seconds: 150
                    average_rating: 4.8
                    manufacturer:
                      id: 1
                      name: Rocky Mountain Construction
                      slug: rocky-mountain-construction
                  summary: Example ride detail response
                  description: A complete ride detail response
          description: ''
  /api/v1/rides/{id}/publish/:
    get:
      operationId: v1_rides_publish_retrieve
      summary: Retrieve, update or delete a ride
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        required: true
      tags:
      - Rides
      security:
      - cookieAuth: []
      - tokenAuth: []
      - {}
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RideDetailOutput'
              examples:
                RideDetailExample:
                  value:
                    id: 1
                    name: Steel Vengeance
                    slug: steel-vengeance
                    category: ROLLER_COASTER
                    status: OPERATING
                    description: Hybrid roller coaster featuring RMC I-Box track
                    park:
                      id: 1
                      name: Cedar Point
                      slug: cedar-point
                    opening_date: '2018-05-05'
                    min_height_in: 48
                    capacity_per_hour: 1200
                    ride_duration_seconds: 150
                    average_rating: 4.8
                    manufacturer:
                      id: 1
                      name: Rocky Mountain Construction
                      slug: rocky-mountain-construction
                  summary: Example ride detail response
                  description: A complete ride detail response
          description: ''
    put:
      operationId: v1_rides_publish_update
      summary: Retrieve, update or delete a ride
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        required: true
      tags:
      - Rides
      security:
      - cookieAuth: []
      - tokenAuth: []
      - {}
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RideDetailOutput'
              examples:
                RideDetailExample:
                  value:
                    id: 1
                    name: Steel Vengeance
                    slug: steel-vengeance
                    category: ROLLER_COASTER
                    status: OPERATING
                    description: Hybrid roller coaster featuring RMC I-Box track
                    park:
                      id: 1
                      name: Cedar Point
                      slug: cedar-point
                    opening_date: '2018-05-05'
                    min_height_in: 48
                    capacity_per_hour: 1200
                    ride_duration_seconds: 150
                    average_rating: 4.8
                    manufacturer:
                      id: 1
                      name: Rocky Mountain Construction
                      slug: rocky-mountain-construction
                  summary: Example ride detail response
                  description: A complete ride detail response
          description: ''
    patch:
      operationId: v1_rides_publish_partial_update
      summary: Retrieve, update or delete a ride
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        required: true
      tags:
      - Rides
      security:
      - cookieAuth: []
      - tokenAuth: []
      - {}
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RideDetailOutput'
              examples:
                RideDetailExample:
                  value:
                    id: 1
                    name: Steel Vengeance
                    slug: steel-vengeance
                    category: ROLLER_COASTER
                    status: OPERATING
                    description: Hybrid roller coaster featuring RMC I-Box track
                    park:
                      id: 1
                      name: Cedar Point
                      slug: cedar-point
                    opening_date: '2018-05-05'
                    min_height_in: 48
                    capacity_per_hour: 1200
                    ride_duration_seconds: 150
                    average_rating: 4.8
                    manufacturer:
                      id: 1
                      name: Rocky Mountain Construction
                      slug: rocky-mountain-construction
                  summary: Example ride detail response
                  description: A complete ride detail response
          description: ''
    delete:
      operationId: v1_rides_publish_destroy
      summary: Retrieve, update or delete a ride
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        required: true
      tags:
      - Rides
      security:
      - cookieAuth: []
      - tokenAuth: []
      - {}
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RideDetailOutput'
              examples:
                RideDetailExample:
                  value:
                    id: 1
                    name: Steel Vengeance
                    slug: steel-vengeance
                    category: ROLLER_COASTER
                    status: OPERATING
                    description: Hybrid roller coaster featuring RMC I-Box track
                    park:
                      id: 1
                      name: Cedar Point
                      slug: cedar-point
                    opening_date: '2018-05-05'
                    min_height_in: 48
                    capacity_per_hour: 1200
                    ride_duration_seconds: 150
                    average_rating: 4.8
                    manufacturer:
                      id: 1
                      name: Rocky Mountain Construction
                      slug: rocky-mountain-construction
                  summary: Example ride detail response
                  description: A complete ride detail response
          description: ''
  /api/v1/rides/{id}/unpublish/:
    get:
      operationId: v1_rides_unpublish_retrieve
      summary: Retrieve, update or delete a ride
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        required: true
      tags:
      - Rides
      security:
      - cookieAuth: []
      - tokenAuth: []
      - {}
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RideDetailOutput'
              examples:
                RideDetailExample:
                  value:
                    id: 1
                    name: Steel Vengeance
                    slug: steel-vengeance
                    category: ROLLER_COASTER
                    status: OPERATING
                    description: Hybrid roller coaster featuring RMC I-Box track
                    park:
                      id: 1
                      name: Cedar Point
                      slug: cedar-point
                    opening_date: '2018-05-05'
                    min_height_in: 48
                    capacity_per_hour: 1200
                    ride_duration_seconds: 150
                    average_rating: 4.8
                    manufacturer:
                      id: 1
                      name: Rocky Mountain Construction
                      slug: rocky-mountain-construction
                  summary: Example ride detail response
                  description: A complete ride detail response
          description: ''
    put:
      operationId: v1_rides_unpublish_update
      summary: Retrieve, update or delete a ride
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        required: true
      tags:
      - Rides
      security:
      - cookieAuth: []
      - tokenAuth: []
      - {}
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RideDetailOutput'
              examples:
                RideDetailExample:
                  value:
                    id: 1
                    name: Steel Vengeance
                    slug: steel-vengeance
                    category: ROLLER_COASTER
                    status: OPERATING
                    description: Hybrid roller coaster featuring RMC I-Box track
                    park:
                      id: 1
                      name: Cedar Point
                      slug: cedar-point
                    opening_date: '2018-05-05'
                    min_height_in: 48
                    capacity_per_hour: 1200
                    ride_duration_seconds: 150
                    average_rating: 4.8
                    manufacturer:
                      id: 1
                      name: Rocky Mountain Construction
                      slug: rocky-mountain-construction
                  summary: Example ride detail response
                  description: A complete ride detail response
          description: ''
    patch:
      operationId: v1_rides_unpublish_partial_update
      summary: Retrieve, update or delete a ride
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        required: true
      tags:
      - Rides
      security:
      - cookieAuth: []
      - tokenAuth: []
      - {}
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RideDetailOutput'
              examples:
                RideDetailExample:
                  value:
                    id: 1
                    name: Steel Vengeance
                    slug: steel-vengeance
                    category: ROLLER_COASTER
                    status: OPERATING
                    description: Hybrid roller coaster featuring RMC I-Box track
                    park:
                      id: 1
                      name: Cedar Point
                      slug: cedar-point
                    opening_date: '2018-05-05'
                    min_height_in: 48
                    capacity_per_hour: 1200
                    ride_duration_seconds: 150
                    average_rating: 4.8
                    manufacturer:
                      id: 1
                      name: Rocky Mountain Construction
                      slug: rocky-mountain-construction
                  summary: Example ride detail response
                  description: A complete ride detail response
          description: ''
    delete:
      operationId: v1_rides_unpublish_destroy
      summary: Retrieve, update or delete a ride
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        required: true
      tags:
      - Rides
      security:
      - cookieAuth: []
      - tokenAuth: []
      - {}
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RideDetailOutput'
              examples:
                RideDetailExample:
                  value:
                    id: 1
                    name: Steel Vengeance
                    slug: steel-vengeance
                    category: ROLLER_COASTER
                    status: OPERATING
                    description: Hybrid roller coaster featuring RMC I-Box track
                    park:
                      id: 1
                      name: Cedar Point
                      slug: cedar-point
                    opening_date: '2018-05-05'
                    min_height_in: 48
                    capacity_per_hour: 1200
                    ride_duration_seconds: 150
                    average_rating: 4.8
                    manufacturer:
                      id: 1
                      name: Rocky Mountain Construction
                      slug: rocky-mountain-construction
                  summary: Example ride detail response
                  description: A complete ride detail response
          description: ''
  /api/v1/rides/{id}/update/:
    get:
      operationId: v1_rides_update_retrieve
      summary: Retrieve, update or delete a ride
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        required: true
      tags:
      - Rides
      security:
      - cookieAuth: []
      - tokenAuth: []
      - {}
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RideDetailOutput'
              examples:
                RideDetailExample:
                  value:
                    id: 1
                    name: Steel Vengeance
                    slug: steel-vengeance
                    category: ROLLER_COASTER
                    status: OPERATING
                    description: Hybrid roller coaster featuring RMC I-Box track
                    park:
                      id: 1
                      name: Cedar Point
                      slug: cedar-point
                    opening_date: '2018-05-05'
                    min_height_in: 48
                    capacity_per_hour: 1200
                    ride_duration_seconds: 150
                    average_rating: 4.8
                    manufacturer:
                      id: 1
                      name: Rocky Mountain Construction
                      slug: rocky-mountain-construction
                  summary: Example ride detail response
                  description: A complete ride detail response
          description: ''
    put:
      operationId: v1_rides_update_update
      summary: Retrieve, update or delete a ride
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        required: true
      tags:
      - Rides
      security:
      - cookieAuth: []
      - tokenAuth: []
      - {}
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RideDetailOutput'
              examples:
                RideDetailExample:
                  value:
                    id: 1
                    name: Steel Vengeance
                    slug: steel-vengeance
                    category: ROLLER_COASTER
                    status: OPERATING
                    description: Hybrid roller coaster featuring RMC I-Box track
                    park:
                      id: 1
                      name: Cedar Point
                      slug: cedar-point
                    opening_date: '2018-05-05'
                    min_height_in: 48
                    capacity_per_hour: 1200
                    ride_duration_seconds: 150
                    average_rating: 4.8
                    manufacturer:
                      id: 1
                      name: Rocky Mountain Construction
                      slug: rocky-mountain-construction
                  summary: Example ride detail response
                  description: A complete ride detail response
          description: ''
    patch:
      operationId: v1_rides_update_partial_update
      summary: Retrieve, update or delete a ride
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        required: true
      tags:
      - Rides
      security:
      - cookieAuth: []
      - tokenAuth: []
      - {}
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RideDetailOutput'
              examples:
                RideDetailExample:
                  value:
                    id: 1
                    name: Steel Vengeance
                    slug: steel-vengeance
                    category: ROLLER_COASTER
                    status: OPERATING
                    description: Hybrid roller coaster featuring RMC I-Box track
                    park:
                      id: 1
                      name: Cedar Point
                      slug: cedar-point
                    opening_date: '2018-05-05'
                    min_height_in: 48
                    capacity_per_hour: 1200
                    ride_duration_seconds: 150
                    average_rating: 4.8
                    manufacturer:
                      id: 1
                      name: Rocky Mountain Construction
                      slug: rocky-mountain-construction
                  summary: Example ride detail response
                  description: A complete ride detail response
          description: ''
    delete:
      operationId: v1_rides_update_destroy
      summary: Retrieve, update or delete a ride
      parameters:
      - in: path
        name: id
        schema:
          type: integer
        required: true
      tags:
      - Rides
      security:
      - cookieAuth: []
      - tokenAuth: []
      - {}
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RideDetailOutput'
              examples:
                RideDetailExample:
                  value:
                    id: 1
                    name: Steel Vengeance
                    slug: steel-vengeance
                    category: ROLLER_COASTER
                    status: OPERATING
                    description: Hybrid roller coaster featuring RMC I-Box track
                    park:
                      id: 1
                      name: Cedar Point
                      slug: cedar-point
                    opening_date: '2018-05-05'
                    min_height_in: 48
                    capacity_per_hour: 1200
                    ride_duration_seconds: 150
                    average_rating: 4.8
                    manufacturer:
                      id: 1
                      name: Rocky Mountain Construction
                      slug: rocky-mountain-construction
                  summary: Example ride detail response
                  description: A complete ride detail response
          description: ''
  /api/v1/rides/bulk-create/:
    get:
      operationId: v1_rides_bulk_create_list
      description: List rides with basic filtering and pagination.
      summary: List rides or create a new ride
      tags:
      - Rides
      security:
      - cookieAuth: []
      - tokenAuth: []
      - {}
      responses:
        '200':
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/RideListOutput'
              examples:
                RideListExample:
                  value:
                  - id: 1
                    name: Steel Vengeance
                    slug: steel-vengeance
                    category: ROLLER_COASTER
                    status: OPERATING
                    description: Hybrid roller coaster
                    park:
                      id: 1
                      name: Cedar Point
                      slug: cedar-point
                    average_rating: 4.8
                    capacity_per_hour: 1200
                    opening_date: '2018-05-05'
                  summary: Example ride list response
                  description: A typical ride in the list view
          description: ''
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RideDetailOutput'
              examples:
                RideDetailExample:
                  value:
                    id: 1
                    name: Steel Vengeance
                    slug: steel-vengeance
                    category: ROLLER_COASTER
                    status: OPERATING
                    description: Hybrid roller coaster featuring RMC I-Box track
                    park:
                      id: 1
                      name: Cedar Point
                      slug: cedar-point
                    opening_date: '2018-05-05'
                    min_height_in: 48
                    capacity_per_hour: 1200
                    ride_duration_seconds: 150
                    average_rating: 4.8
                    manufacturer:
                      id: 1
                      name: Rocky Mountain Construction
                      slug: rocky-mountain-construction
                  summary: Example ride detail response
                  description: A complete ride detail response
          description: ''
    post:
      operationId: v1_rides_bulk_create_create
      description: Create a new ride.
      summary: List rides or create a new ride
      tags:
      - Rides
      security:
      - cookieAuth: []
      - tokenAuth: []
      - {}
      responses:
        '200':
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/RideListOutput'
              examples:
                RideListExample:
                  value:
                  - id: 1
                    name: Steel Vengeance
                    slug: steel-vengeance
                    category: ROLLER_COASTER
                    status: OPERATING
                    description: Hybrid roller coaster
                    park:
                      id: 1
                      name: Cedar Point
                      slug: cedar-point
                    average_rating: 4.8
                    capacity_per_hour: 1200
                    opening_date: '2018-05-05'
                  summary: Example ride list response
                  description: A typical ride in the list view
          description: ''
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RideDetailOutput'
              examples:
                RideDetailExample:
                  value:
                    id: 1
                    name: Steel Vengeance
                    slug: steel-vengeance
                    category: ROLLER_COASTER
                    status: OPERATING
                    description: Hybrid roller coaster featuring RMC I-Box track
                    park:
                      id: 1
                      name: Cedar Point
                      slug: cedar-point
                    opening_date: '2018-05-05'
                    min_height_in: 48
                    capacity_per_hour: 1200
                    ride_duration_seconds: 150
                    average_rating: 4.8
                    manufacturer:
                      id: 1
                      name: Rocky Mountain Construction
                      slug: rocky-mountain-construction
                  summary: Example ride detail response
                  description: A complete ride detail response
          description: ''
  /api/v1/rides/bulk-delete/:
    get:
      operationId: v1_rides_bulk_delete_list
      description: List rides with basic filtering and pagination.
      summary: List rides or create a new ride
      tags:
      - Rides
      security:
      - cookieAuth: []
      - tokenAuth: []
      - {}
      responses:
        '200':
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/RideListOutput'
              examples:
                RideListExample:
                  value:
                  - id: 1
                    name: Steel Vengeance
                    slug: steel-vengeance
                    category: ROLLER_COASTER
                    status: OPERATING
                    description: Hybrid roller coaster
                    park:
                      id: 1
                      name: Cedar Point
                      slug: cedar-point
                    average_rating: 4.8
                    capacity_per_hour: 1200
                    opening_date: '2018-05-05'
                  summary: Example ride list response
                  description: A typical ride in the list view
          description: ''
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RideDetailOutput'
              examples:
                RideDetailExample:
                  value:
                    id: 1
                    name: Steel Vengeance
                    slug: steel-vengeance
                    category: ROLLER_COASTER
                    status: OPERATING
                    description: Hybrid roller coaster featuring RMC I-Box track
                    park:
                      id: 1
                      name: Cedar Point
                      slug: cedar-point
                    opening_date: '2018-05-05'
                    min_height_in: 48
                    capacity_per_hour: 1200
                    ride_duration_seconds: 150
                    average_rating: 4.8
                    manufacturer:
                      id: 1
                      name: Rocky Mountain Construction
                      slug: rocky-mountain-construction
                  summary: Example ride detail response
                  description: A complete ride detail response
          description: ''
    post:
      operationId: v1_rides_bulk_delete_create
      description: Create a new ride.
      summary: List rides or create a new ride
      tags:
      - Rides
      security:
      - cookieAuth: []
      - tokenAuth: []
      - {}
      responses:
        '200':
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/RideListOutput'
              examples:
                RideListExample:
                  value:
                  - id: 1
                    name: Steel Vengeance
                    slug: steel-vengeance
                    category: ROLLER_COASTER
                    status: OPERATING
                    description: Hybrid roller coaster
                    park:
                      id: 1
                      name: Cedar Point
                      slug: cedar-point
                    average_rating: 4.8
                    capacity_per_hour: 1200
                    opening_date: '2018-05-05'
                  summary: Example ride list response
                  description: A typical ride in the list view
          description: ''
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RideDetailOutput'
              examples:
                RideDetailExample:
                  value:
                    id: 1
                    name: Steel Vengeance
                    slug: steel-vengeance
                    category: ROLLER_COASTER
                    status: OPERATING
                    description: Hybrid roller coaster featuring RMC I-Box track
                    park:
                      id: 1
                      name: Cedar Point
                      slug: cedar-point
                    opening_date: '2018-05-05'
                    min_height_in: 48
                    capacity_per_hour: 1200
                    ride_duration_seconds: 150
                    average_rating: 4.8
                    manufacturer:
                      id: 1
                      name: Rocky Mountain Construction
                      slug: rocky-mountain-construction
                  summary: Example ride detail response
                  description: A complete ride detail response
          description: ''
  /api/v1/rides/bulk-update/:
    get:
      operationId: v1_rides_bulk_update_list
      description: List rides with basic filtering and pagination.
      summary: List rides or create a new ride
      tags:
      - Rides
      security:
      - cookieAuth: []
      - tokenAuth: []
      - {}
      responses:
        '200':
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/RideListOutput'
              examples:
                RideListExample:
                  value:
                  - id: 1
                    name: Steel Vengeance
                    slug: steel-vengeance
                    category: ROLLER_COASTER
                    status: OPERATING
                    description: Hybrid roller coaster
                    park:
                      id: 1
                      name: Cedar Point
                      slug: cedar-point
                    average_rating: 4.8
                    capacity_per_hour: 1200
                    opening_date: '2018-05-05'
                  summary: Example ride list response
                  description: A typical ride in the list view
          description: ''
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RideDetailOutput'
              examples:
                RideDetailExample:
                  value:
                    id: 1
                    name: Steel Vengeance
                    slug: steel-vengeance
                    category: ROLLER_COASTER
                    status: OPERATING
                    description: Hybrid roller coaster featuring RMC I-Box track
                    park:
                      id: 1
                      name: Cedar Point
                      slug: cedar-point
                    opening_date: '2018-05-05'
                    min_height_in: 48
                    capacity_per_hour: 1200
                    ride_duration_seconds: 150
                    average_rating: 4.8
                    manufacturer:
                      id: 1
                      name: Rocky Mountain Construction
                      slug: rocky-mountain-construction
                  summary: Example ride detail response
                  description: A complete ride detail response
          description: ''
    post:
      operationId: v1_rides_bulk_update_create
      description: Create a new ride.
      summary: List rides or create a new ride
      tags:
      - Rides
      security:
      - cookieAuth: []
      - tokenAuth: []
      - {}
      responses:
        '200':
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/RideListOutput'
              examples:
                RideListExample:
                  value:
                  - id: 1
                    name: Steel Vengeance
                    slug: steel-vengeance
                    category: ROLLER_COASTER
                    status: OPERATING
                    description: Hybrid roller coaster
                    park:
                      id: 1
                      name: Cedar Point
                      slug: cedar-point
                    average_rating: 4.8
                    capacity_per_hour: 1200
                    opening_date: '2018-05-05'
                  summary: Example ride list response
                  description: A typical ride in the list view
          description: ''
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RideDetailOutput'
              examples:
                RideDetailExample:
                  value:
                    id: 1
                    name: Steel Vengeance
                    slug: steel-vengeance
                    category: ROLLER_COASTER
                    status: OPERATING
                    description: Hybrid roller coaster featuring RMC I-Box track
                    park:
                      id: 1
                      name: Cedar Point
                      slug: cedar-point
                    opening_date: '2018-05-05'
                    min_height_in: 48
                    capacity_per_hour: 1200
                    ride_duration_seconds: 150
                    average_rating: 4.8
                    manufacturer:
                      id: 1
                      name: Rocky Mountain Construction
                      slug: rocky-mountain-construction
                  summary: Example ride detail response
                  description: A complete ride detail response
          description: ''
  /api/v1/rides/create/:
    get:
      operationId: v1_rides_create_list
      description: List rides with basic filtering and pagination.
      summary: List rides or create a new ride
      tags:
      - Rides
      security:
      - cookieAuth: []
      - tokenAuth: []
      - {}
      responses:
        '200':
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/RideListOutput'
              examples:
                RideListExample:
                  value:
                  - id: 1
                    name: Steel Vengeance
                    slug: steel-vengeance
                    category: ROLLER_COASTER
                    status: OPERATING
                    description: Hybrid roller coaster
                    park:
                      id: 1
                      name: Cedar Point
                      slug: cedar-point
                    average_rating: 4.8
                    capacity_per_hour: 1200
                    opening_date: '2018-05-05'
                  summary: Example ride list response
                  description: A typical ride in the list view
          description: ''
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RideDetailOutput'
              examples:
                RideDetailExample:
                  value:
                    id: 1
                    name: Steel Vengeance
                    slug: steel-vengeance
                    category: ROLLER_COASTER
                    status: OPERATING
                    description: Hybrid roller coaster featuring RMC I-Box track
                    park:
                      id: 1
                      name: Cedar Point
                      slug: cedar-point
                    opening_date: '2018-05-05'
                    min_height_in: 48
                    capacity_per_hour: 1200
                    ride_duration_seconds: 150
                    average_rating: 4.8
                    manufacturer:
                      id: 1
                      name: Rocky Mountain Construction
                      slug: rocky-mountain-construction
                  summary: Example ride detail response
                  description: A complete ride detail response
          description: ''
    post:
      operationId: v1_rides_create_create
      description: Create a new ride.
      summary: List rides or create a new ride
      tags:
      - Rides
      security:
      - cookieAuth: []
      - tokenAuth: []
      - {}
      responses:
        '200':
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/RideListOutput'
              examples:
                RideListExample:
                  value:
                  - id: 1
                    name: Steel Vengeance
                    slug: steel-vengeance
                    category: ROLLER_COASTER
                    status: OPERATING
                    description: Hybrid roller coaster
                    park:
                      id: 1
                      name: Cedar Point
                      slug: cedar-point
                    average_rating: 4.8
                    capacity_per_hour: 1200
                    opening_date: '2018-05-05'
                  summary: Example ride list response
                  description: A typical ride in the list view
          description: ''
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RideDetailOutput'
              examples:
                RideDetailExample:
                  value:
                    id: 1
                    name: Steel Vengeance
                    slug: steel-vengeance
                    category: ROLLER_COASTER
                    status: OPERATING
                    description: Hybrid roller coaster featuring RMC I-Box track
                    park:
                      id: 1
                      name: Cedar Point
                      slug: cedar-point
                    opening_date: '2018-05-05'
                    min_height_in: 48
                    capacity_per_hour: 1200
                    ride_duration_seconds: 150
                    average_rating: 4.8
                    manufacturer:
                      id: 1
                      name: Rocky Mountain Construction
                      slug: rocky-mountain-construction
                  summary: Example ride detail response
                  description: A complete ride detail response
          description: ''
  /api/v1/rides/export/:
    get:
      operationId: v1_rides_export_list
      description: List rides with basic filtering and pagination.
      summary: List rides or create a new ride
      tags:
      - Rides
      security:
      - cookieAuth: []
      - tokenAuth: []
      - {}
      responses:
        '200':
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/RideListOutput'
              examples:
                RideListExample:
                  value:
                  - id: 1
                    name: Steel Vengeance
                    slug: steel-vengeance
                    category: ROLLER_COASTER
                    status: OPERATING
                    description: Hybrid roller coaster
                    park:
                      id: 1
                      name: Cedar Point
                      slug: cedar-point
                    average_rating: 4.8
                    capacity_per_hour: 1200
                    opening_date: '2018-05-05'
                  summary: Example ride list response
                  description: A typical ride in the list view
          description: ''
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RideDetailOutput'
              examples:
                RideDetailExample:
                  value:
                    id: 1
                    name: Steel Vengeance
                    slug: steel-vengeance
                    category: ROLLER_COASTER
                    status: OPERATING
                    description: Hybrid roller coaster featuring RMC I-Box track
                    park:
                      id: 1
                      name: Cedar Point
                      slug: cedar-point
                    opening_date: '2018-05-05'
                    min_height_in: 48
                    capacity_per_hour: 1200
                    ride_duration_seconds: 150
                    average_rating: 4.8
                    manufacturer:
                      id: 1
                      name: Rocky Mountain Construction
                      slug: rocky-mountain-construction
                  summary: Example ride detail response
                  description: A complete ride detail response
          description: ''
    post:
      operationId: v1_rides_export_create
      description: Create a new ride.
      summary: List rides or create a new ride
      tags:
      - Rides
      security:
      - cookieAuth: []
      - tokenAuth: []
      - {}
      responses:
        '200':
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/RideListOutput'
              examples:
                RideListExample:
                  value:
                  - id: 1
                    name: Steel Vengeance
                    slug: steel-vengeance
                    category: ROLLER_COASTER
                    status: OPERATING
                    description: Hybrid roller coaster
                    park:
                      id: 1
                      name: Cedar Point
                      slug: cedar-point
                    average_rating: 4.8
                    capacity_per_hour: 1200
                    opening_date: '2018-05-05'
                  summary: Example ride list response
                  description: A typical ride in the list view
          description: ''
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RideDetailOutput'
              examples:
                RideDetailExample:
                  value:
                    id: 1
                    name: Steel Vengeance
                    slug: steel-vengeance
                    category: ROLLER_COASTER
                    status: OPERATING
                    description: Hybrid roller coaster featuring RMC I-Box track
                    park:
                      id: 1
                      name: Cedar Point
                      slug: cedar-point
                    opening_date: '2018-05-05'
                    min_height_in: 48
                    capacity_per_hour: 1200
                    ride_duration_seconds: 150
                    average_rating: 4.8
                    manufacturer:
                      id: 1
                      name: Rocky Mountain Construction
                      slug: rocky-mountain-construction
                  summary: Example ride detail response
                  description: A complete ride detail response
          description: ''
  /api/v1/rides/featured/:
    get:
      operationId: v1_rides_featured_list
      description: List rides with basic filtering and pagination.
      summary: List rides or create a new ride
      tags:
      - Rides
      security:
      - cookieAuth: []
      - tokenAuth: []
      - {}
      responses:
        '200':
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/RideListOutput'
              examples:
                RideListExample:
                  value:
                  - id: 1
                    name: Steel Vengeance
                    slug: steel-vengeance
                    category: ROLLER_COASTER
                    status: OPERATING
                    description: Hybrid roller coaster
                    park:
                      id: 1
                      name: Cedar Point
                      slug: cedar-point
                    average_rating: 4.8
                    capacity_per_hour: 1200
                    opening_date: '2018-05-05'
                  summary: Example ride list response
                  description: A typical ride in the list view
          description: ''
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RideDetailOutput'
              examples:
                RideDetailExample:
                  value:
                    id: 1
                    name: Steel Vengeance
                    slug: steel-vengeance
                    category: ROLLER_COASTER
                    status: OPERATING
                    description: Hybrid roller coaster featuring RMC I-Box track
                    park:
                      id: 1
                      name: Cedar Point
                      slug: cedar-point
                    opening_date: '2018-05-05'
                    min_height_in: 48
                    capacity_per_hour: 1200
                    ride_duration_seconds: 150
                    average_rating: 4.8
                    manufacturer:
                      id: 1
                      name: Rocky Mountain Construction
                      slug: rocky-mountain-construction
                  summary: Example ride detail response
                  description: A complete ride detail response
          description: ''
    post:
      operationId: v1_rides_featured_create
      description: Create a new ride.
      summary: List rides or create a new ride
      tags:
      - Rides
      security:
      - cookieAuth: []
      - tokenAuth: []
      - {}
      responses:
        '200':
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/RideListOutput'
              examples:
                RideListExample:
                  value:
                  - id: 1
                    name: Steel Vengeance
                    slug: steel-vengeance
                    category: ROLLER_COASTER
                    status: OPERATING
                    description: Hybrid roller coaster
                    park:
                      id: 1
                      name: Cedar Point
                      slug: cedar-point
                    average_rating: 4.8
                    capacity_per_hour: 1200
                    opening_date: '2018-05-05'
                  summary: Example ride list response
                  description: A typical ride in the list view
          description: ''
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RideDetailOutput'
              examples:
                RideDetailExample:
                  value:
                    id: 1
                    name: Steel Vengeance
                    slug: steel-vengeance
                    category: ROLLER_COASTER
                    status: OPERATING
                    description: Hybrid roller coaster featuring RMC I-Box track
                    park:
                      id: 1
                      name: Cedar Point
                      slug: cedar-point
                    opening_date: '2018-05-05'
                    min_height_in: 48
                    capacity_per_hour: 1200
                    ride_duration_seconds: 150
                    average_rating: 4.8
                    manufacturer:
                      id: 1
                      name: Rocky Mountain Construction
                      slug: rocky-mountain-construction
                  summary: Example ride detail response
                  description: A complete ride detail response
          description: ''
  /api/v1/rides/filter-options/:
    get:
      operationId: v1_rides_filter_options_retrieve
      description: Return static/dynamic filter options used by the frontend.
      summary: Get filter options for rides
      tags:
      - Rides
      security:
      - cookieAuth: []
      - tokenAuth: []
      - {}
      responses:
        '200':
          content:
            application/json:
              schema:
                type: object
                additionalProperties: {}
          description: ''
  /api/v1/rides/import/:
    get:
      operationId: v1_rides_import_list
      description: List rides with basic filtering and pagination.
      summary: List rides or create a new ride
      tags:
      - Rides
      security:
      - cookieAuth: []
      - tokenAuth: []
      - {}
      responses:
        '200':
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/RideListOutput'
              examples:
                RideListExample:
                  value:
                  - id: 1
                    name: Steel Vengeance
                    slug: steel-vengeance
                    category: ROLLER_COASTER
                    status: OPERATING
                    description: Hybrid roller coaster
                    park:
                      id: 1
                      name: Cedar Point
                      slug: cedar-point
                    average_rating: 4.8
                    capacity_per_hour: 1200
                    opening_date: '2018-05-05'
                  summary: Example ride list response
                  description: A typical ride in the list view
          description: ''
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RideDetailOutput'
              examples:
                RideDetailExample:
                  value:
                    id: 1
                    name: Steel Vengeance
                    slug: steel-vengeance
                    category: ROLLER_COASTER
                    status: OPERATING
                    description: Hybrid roller coaster featuring RMC I-Box track
                    park:
                      id: 1
                      name: Cedar Point
                      slug: cedar-point
                    opening_date: '2018-05-05'
                    min_height_in: 48
                    capacity_per_hour: 1200
                    ride_duration_seconds: 150
                    average_rating: 4.8
                    manufacturer:
                      id: 1
                      name: Rocky Mountain Construction
                      slug: rocky-mountain-construction
                  summary: Example ride detail response
                  description: A complete ride detail response
          description: ''
    post:
      operationId: v1_rides_import_create
      description: Create a new ride.
      summary: List rides or create a new ride
      tags:
      - Rides
      security:
      - cookieAuth: []
      - tokenAuth: []
      - {}
      responses:
        '200':
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/RideListOutput'
              examples:
                RideListExample:
                  value:
                  - id: 1
                    name: Steel Vengeance
                    slug: steel-vengeance
                    category: ROLLER_COASTER
                    status: OPERATING
                    description: Hybrid roller coaster
                    park:
                      id: 1
                      name: Cedar Point
                      slug: cedar-point
                    average_rating: 4.8
                    capacity_per_hour: 1200
                    opening_date: '2018-05-05'
                  summary: Example ride list response
                  description: A typical ride in the list view
          description: ''
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RideDetailOutput'
              examples:
                RideDetailExample:
                  value:
                    id: 1
                    name: Steel Vengeance
                    slug: steel-vengeance
                    category: ROLLER_COASTER
                    status: OPERATING
                    description: Hybrid roller coaster featuring RMC I-Box track
                    park:
                      id: 1
                      name: Cedar Point
                      slug: cedar-point
                    opening_date: '2018-05-05'
                    min_height_in: 48
                    capacity_per_hour: 1200
                    ride_duration_seconds: 150
                    average_rating: 4.8
                    manufacturer:
                      id: 1
                      name: Rocky Mountain Construction
                      slug: rocky-mountain-construction
                  summary: Example ride detail response
                  description: A complete ride detail response
          description: ''
  /api/v1/rides/list/:
    get:
      operationId: v1_rides_list_list
      description: List rides with basic filtering and pagination.
      summary: List rides or create a new ride
      tags:
      - Rides
      security:
      - cookieAuth: []
      - tokenAuth: []
      - {}
      responses:
        '200':
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/RideListOutput'
              examples:
                RideListExample:
                  value:
                  - id: 1
                    name: Steel Vengeance
                    slug: steel-vengeance
                    category: ROLLER_COASTER
                    status: OPERATING
                    description: Hybrid roller coaster
                    park:
                      id: 1
                      name: Cedar Point
                      slug: cedar-point
                    average_rating: 4.8
                    capacity_per_hour: 1200
                    opening_date: '2018-05-05'
                  summary: Example ride list response
                  description: A typical ride in the list view
          description: ''
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RideDetailOutput'
              examples:
                RideDetailExample:
                  value:
                    id: 1
                    name: Steel Vengeance
                    slug: steel-vengeance
                    category: ROLLER_COASTER
                    status: OPERATING
                    description: Hybrid roller coaster featuring RMC I-Box track
                    park:
                      id: 1
                      name: Cedar Point
                      slug: cedar-point
                    opening_date: '2018-05-05'
                    min_height_in: 48
                    capacity_per_hour: 1200
                    ride_duration_seconds: 150
                    average_rating: 4.8
                    manufacturer:
                      id: 1
                      name: Rocky Mountain Construction
                      slug: rocky-mountain-construction
                  summary: Example ride detail response
                  description: A complete ride detail response
          description: ''
    post:
      operationId: v1_rides_list_create
      description: Create a new ride.
      summary: List rides or create a new ride
      tags:
      - Rides
      security:
      - cookieAuth: []
      - tokenAuth: []
      - {}
      responses:
        '200':
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/RideListOutput'
              examples:
                RideListExample:
                  value:
                  - id: 1
                    name: Steel Vengeance
                    slug: steel-vengeance
                    category: ROLLER_COASTER
                    status: OPERATING
                    description: Hybrid roller coaster
                    park:
                      id: 1
                      name: Cedar Point
                      slug: cedar-point
                    average_rating: 4.8
                    capacity_per_hour: 1200
                    opening_date: '2018-05-05'
                  summary: Example ride list response
                  description: A typical ride in the list view
          description: ''
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RideDetailOutput'
              examples:
                RideDetailExample:
                  value:
                    id: 1
                    name: Steel Vengeance
                    slug: steel-vengeance
                    category: ROLLER_COASTER
                    status: OPERATING
                    description: Hybrid roller coaster featuring RMC I-Box track
                    park:
                      id: 1
                      name: Cedar Point
                      slug: cedar-point
                    opening_date: '2018-05-05'
                    min_height_in: 48
                    capacity_per_hour: 1200
                    ride_duration_seconds: 150
                    average_rating: 4.8
                    manufacturer:
                      id: 1
                      name: Rocky Mountain Construction
                      slug: rocky-mountain-construction
                  summary: Example ride detail response
                  description: A complete ride detail response
          description: ''
  /api/v1/rides/recommendations/:
    get:
      operationId: v1_rides_recommendations_list
      description: List rides with basic filtering and pagination.
      summary: List rides or create a new ride
      tags:
      - Rides
      security:
      - cookieAuth: []
      - tokenAuth: []
      - {}
      responses:
        '200':
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/RideListOutput'
              examples:
                RideListExample:
                  value:
                  - id: 1
                    name: Steel Vengeance
                    slug: steel-vengeance
                    category: ROLLER_COASTER
                    status: OPERATING
                    description: Hybrid roller coaster
                    park:
                      id: 1
                      name: Cedar Point
                      slug: cedar-point
                    average_rating: 4.8
                    capacity_per_hour: 1200
                    opening_date: '2018-05-05'
                  summary: Example ride list response
                  description: A typical ride in the list view
          description: ''
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RideDetailOutput'
              examples:
                RideDetailExample:
                  value:
                    id: 1
                    name: Steel Vengeance
                    slug: steel-vengeance
                    category: ROLLER_COASTER
                    status: OPERATING
                    description: Hybrid roller coaster featuring RMC I-Box track
                    park:
                      id: 1
                      name: Cedar Point
                      slug: cedar-point
                    opening_date: '2018-05-05'
                    min_height_in: 48
                    capacity_per_hour: 1200
                    ride_duration_seconds: 150
                    average_rating: 4.8
                    manufacturer:
                      id: 1
                      name: Rocky Mountain Construction
                      slug: rocky-mountain-construction
                  summary: Example ride detail response
                  description: A complete ride detail response
          description: ''
    post:
      operationId: v1_rides_recommendations_create
      description: Create a new ride.
      summary: List rides or create a new ride
      tags:
      - Rides
      security:
      - cookieAuth: []
      - tokenAuth: []
      - {}
      responses:
        '200':
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/RideListOutput'
              examples:
                RideListExample:
                  value:
                  - id: 1
                    name: Steel Vengeance
                    slug: steel-vengeance
                    category: ROLLER_COASTER
                    status: OPERATING
                    description: Hybrid roller coaster
                    park:
                      id: 1
                      name: Cedar Point
                      slug: cedar-point
                    average_rating: 4.8
                    capacity_per_hour: 1200
                    opening_date: '2018-05-05'
                  summary: Example ride list response
                  description: A typical ride in the list view
          description: ''
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RideDetailOutput'
              examples:
                RideDetailExample:
                  value:
                    id: 1
                    name: Steel Vengeance
                    slug: steel-vengeance
                    category: ROLLER_COASTER
                    status: OPERATING
                    description: Hybrid roller coaster featuring RMC I-Box track
                    park:
                      id: 1
                      name: Cedar Point
                      slug: cedar-point
                    opening_date: '2018-05-05'
                    min_height_in: 48
                    capacity_per_hour: 1200
                    ride_duration_seconds: 150
                    average_rating: 4.8
                    manufacturer:
                      id: 1
                      name: Rocky Mountain Construction
                      slug: rocky-mountain-construction
                  summary: Example ride detail response
                  description: A complete ride detail response
          description: ''
  /api/v1/rides/related/:
    get:
      operationId: v1_rides_related_list
      description: List rides with basic filtering and pagination.
      summary: List rides or create a new ride
      tags:
      - Rides
      security:
      - cookieAuth: []
      - tokenAuth: []
      - {}
      responses:
        '200':
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/RideListOutput'
              examples:
                RideListExample:
                  value:
                  - id: 1
                    name: Steel Vengeance
                    slug: steel-vengeance
                    category: ROLLER_COASTER
                    status: OPERATING
                    description: Hybrid roller coaster
                    park:
                      id: 1
                      name: Cedar Point
                      slug: cedar-point
                    average_rating: 4.8
                    capacity_per_hour: 1200
                    opening_date: '2018-05-05'
                  summary: Example ride list response
                  description: A typical ride in the list view
          description: ''
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RideDetailOutput'
              examples:
                RideDetailExample:
                  value:
                    id: 1
                    name: Steel Vengeance
                    slug: steel-vengeance
                    category: ROLLER_COASTER
                    status: OPERATING
                    description: Hybrid roller coaster featuring RMC I-Box track
                    park:
                      id: 1
                      name: Cedar Point
                      slug: cedar-point
                    opening_date: '2018-05-05'
                    min_height_in: 48
                    capacity_per_hour: 1200
                    ride_duration_seconds: 150
                    average_rating: 4.8
                    manufacturer:
                      id: 1
                      name: Rocky Mountain Construction
                      slug: rocky-mountain-construction
                  summary: Example ride detail response
                  description: A complete ride detail response
          description: ''
    post:
      operationId: v1_rides_related_create
      description: Create a new ride.
      summary: List rides or create a new ride
      tags:
      - Rides
      security:
      - cookieAuth: []
      - tokenAuth: []
      - {}
      responses:
        '200':
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/RideListOutput'
              examples:
                RideListExample:
                  value:
                  - id: 1
                    name: Steel Vengeance
                    slug: steel-vengeance
                    category: ROLLER_COASTER
                    status: OPERATING
                    description: Hybrid roller coaster
                    park:
                      id: 1
                      name: Cedar Point
                      slug: cedar-point
                    average_rating: 4.8
                    capacity_per_hour: 1200
                    opening_date: '2018-05-05'
                  summary: Example ride list response
                  description: A typical ride in the list view
          description: ''
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RideDetailOutput'
              examples:
                RideDetailExample:
                  value:
                    id: 1
                    name: Steel Vengeance
                    slug: steel-vengeance
                    category: ROLLER_COASTER
                    status: OPERATING
                    description: Hybrid roller coaster featuring RMC I-Box track
                    park:
                      id: 1
                      name: Cedar Point
                      slug: cedar-point
                    opening_date: '2018-05-05'
                    min_height_in: 48
                    capacity_per_hour: 1200
                    ride_duration_seconds: 150
                    average_rating: 4.8
                    manufacturer:
                      id: 1
                      name: Rocky Mountain Construction
                      slug: rocky-mountain-construction
                  summary: Example ride detail response
                  description: A complete ride detail response
          description: ''
  /api/v1/rides/search/:
    get:
      operationId: v1_rides_search_list
      description: List rides with basic filtering and pagination.
      summary: List rides or create a new ride
      tags:
      - Rides
      security:
      - cookieAuth: []
      - tokenAuth: []
      - {}
      responses:
        '200':
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/RideListOutput'
              examples:
                RideListExample:
                  value:
                  - id: 1
                    name: Steel Vengeance
                    slug: steel-vengeance
                    category: ROLLER_COASTER
                    status: OPERATING
                    description: Hybrid roller coaster
                    park:
                      id: 1
                      name: Cedar Point
                      slug: cedar-point
                    average_rating: 4.8
                    capacity_per_hour: 1200
                    opening_date: '2018-05-05'
                  summary: Example ride list response
                  description: A typical ride in the list view
          description: ''
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RideDetailOutput'
              examples:
                RideDetailExample:
                  value:
                    id: 1
                    name: Steel Vengeance
                    slug: steel-vengeance
                    category: ROLLER_COASTER
                    status: OPERATING
                    description: Hybrid roller coaster featuring RMC I-Box track
                    park:
                      id: 1
                      name: Cedar Point
                      slug: cedar-point
                    opening_date: '2018-05-05'
                    min_height_in: 48
                    capacity_per_hour: 1200
                    ride_duration_seconds: 150
                    average_rating: 4.8
                    manufacturer:
                      id: 1
                      name: Rocky Mountain Construction
                      slug: rocky-mountain-construction
                  summary: Example ride detail response
                  description: A complete ride detail response
          description: ''
    post:
      operationId: v1_rides_search_create
      description: Create a new ride.
      summary: List rides or create a new ride
      tags:
      - Rides
      security:
      - cookieAuth: []
      - tokenAuth: []
      - {}
      responses:
        '200':
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/RideListOutput'
              examples:
                RideListExample:
                  value:
                  - id: 1
                    name: Steel Vengeance
                    slug: steel-vengeance
                    category: ROLLER_COASTER
                    status: OPERATING
                    description: Hybrid roller coaster
                    park:
                      id: 1
                      name: Cedar Point
                      slug: cedar-point
                    average_rating: 4.8
                    capacity_per_hour: 1200
                    opening_date: '2018-05-05'
                  summary: Example ride list response
                  description: A typical ride in the list view
          description: ''
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RideDetailOutput'
              examples:
                RideDetailExample:
                  value:
                    id: 1
                    name: Steel Vengeance
                    slug: steel-vengeance
                    category: ROLLER_COASTER
                    status: OPERATING
                    description: Hybrid roller coaster featuring RMC I-Box track
                    park:
                      id: 1
                      name: Cedar Point
                      slug: cedar-point
                    opening_date: '2018-05-05'
                    min_height_in: 48
                    capacity_per_hour: 1200
                    ride_duration_seconds: 150
                    average_rating: 4.8
                    manufacturer:
                      id: 1
                      name: Rocky Mountain Construction
                      slug: rocky-mountain-construction
                  summary: Example ride detail response
                  description: A complete ride detail response
          description: ''
  /api/v1/rides/search-suggestions/:
    get:
      operationId: v1_rides_search_suggestions_retrieve
      summary: Search suggestions for ride search box
      tags:
      - Rides
      security:
      - cookieAuth: []
      - tokenAuth: []
      - {}
      responses:
        '200':
          description: No response body
  /api/v1/rides/search/companies/:
    get:
      operationId: v1_rides_search_companies_retrieve
      summary: Search companies (manufacturers/designers) for autocomplete
      tags:
      - Rides
      security:
      - cookieAuth: []
      - tokenAuth: []
      - {}
      responses:
        '200':
          content:
            application/json:
              schema:
                type: object
                additionalProperties: {}
          description: ''
  /api/v1/rides/search/ride-models/:
    get:
      operationId: v1_rides_search_ride_models_retrieve
      summary: Search ride models for autocomplete
      tags:
      - Rides
      security:
      - cookieAuth: []
      - tokenAuth: []
      - {}
      responses:
        '200':
          description: No response body
  /api/v1/rides/stats/:
    get:
      operationId: v1_rides_stats_list
      description: List rides with basic filtering and pagination.
      summary: List rides or create a new ride
      tags:
      - Rides
      security:
      - cookieAuth: []
      - tokenAuth: []
      - {}
      responses:
        '200':
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/RideListOutput'
              examples:
                RideListExample:
                  value:
                  - id: 1
                    name: Steel Vengeance
                    slug: steel-vengeance
                    category: ROLLER_COASTER
                    status: OPERATING
                    description: Hybrid roller coaster
                    park:
                      id: 1
                      name: Cedar Point
                      slug: cedar-point
                    average_rating: 4.8
                    capacity_per_hour: 1200
                    opening_date: '2018-05-05'
                  summary: Example ride list response
                  description: A typical ride in the list view
          description: ''
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RideDetailOutput'
              examples:
                RideDetailExample:
                  value:
                    id: 1
                    name: Steel Vengeance
                    slug: steel-vengeance
                    category: ROLLER_COASTER
                    status: OPERATING
                    description: Hybrid roller coaster featuring RMC I-Box track
                    park:
                      id: 1
                      name: Cedar Point
                      slug: cedar-point
                    opening_date: '2018-05-05'
                    min_height_in: 48
                    capacity_per_hour: 1200
                    ride_duration_seconds: 150
                    average_rating: 4.8
                    manufacturer:
                      id: 1
                      name: Rocky Mountain Construction
                      slug: rocky-mountain-construction
                  summary: Example ride detail response
                  description: A complete ride detail response
          description: ''
    post:
      operationId: v1_rides_stats_create
      description: Create a new ride.
      summary: List rides or create a new ride
      tags:
      - Rides
      security:
      - cookieAuth: []
      - tokenAuth: []
      - {}
      responses:
        '200':
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/RideListOutput'
              examples:
                RideListExample:
                  value:
                  - id: 1
                    name: Steel Vengeance
                    slug: steel-vengeance
                    category: ROLLER_COASTER
                    status: OPERATING
                    description: Hybrid roller coaster
                    park:
                      id: 1
                      name: Cedar Point
                      slug: cedar-point
                    average_rating: 4.8
                    capacity_per_hour: 1200
                    opening_date: '2018-05-05'
                  summary: Example ride list response
                  description: A typical ride in the list view
          description: ''
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RideDetailOutput'
              examples:
                RideDetailExample:
                  value:
                    id: 1
                    name: Steel Vengeance
                    slug: steel-vengeance
                    category: ROLLER_COASTER
                    status: OPERATING
                    description: Hybrid roller coaster featuring RMC I-Box track
                    park:
                      id: 1
                      name: Cedar Point
                      slug: cedar-point
                    opening_date: '2018-05-05'
                    min_height_in: 48
                    capacity_per_hour: 1200
                    ride_duration_seconds: 150
                    average_rating: 4.8
                    manufacturer:
                      id: 1
                      name: Rocky Mountain Construction
                      slug: rocky-mountain-construction
                  summary: Example ride detail response
                  description: A complete ride detail response
          description: ''
  /api/v1/rides/trending/:
    get:
      operationId: v1_rides_trending_list
      description: List rides with basic filtering and pagination.
      summary: List rides or create a new ride
      tags:
      - Rides
      security:
      - cookieAuth: []
      - tokenAuth: []
      - {}
      responses:
        '200':
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/RideListOutput'
              examples:
                RideListExample:
                  value:
                  - id: 1
                    name: Steel Vengeance
                    slug: steel-vengeance
                    category: ROLLER_COASTER
                    status: OPERATING
                    description: Hybrid roller coaster
                    park:
                      id: 1
                      name: Cedar Point
                      slug: cedar-point
                    average_rating: 4.8
                    capacity_per_hour: 1200
                    opening_date: '2018-05-05'
                  summary: Example ride list response
                  description: A typical ride in the list view
          description: ''
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RideDetailOutput'
              examples:
                RideDetailExample:
                  value:
                    id: 1
                    name: Steel Vengeance
                    slug: steel-vengeance
                    category: ROLLER_COASTER
                    status: OPERATING
                    description: Hybrid roller coaster featuring RMC I-Box track
                    park:
                      id: 1
                      name: Cedar Point
                      slug: cedar-point
                    opening_date: '2018-05-05'
                    min_height_in: 48
                    capacity_per_hour: 1200
                    ride_duration_seconds: 150
                    average_rating: 4.8
                    manufacturer:
                      id: 1
                      name: Rocky Mountain Construction
                      slug: rocky-mountain-construction
                  summary: Example ride detail response
                  description: A complete ride detail response
          description: ''
    post:
      operationId: v1_rides_trending_create
      description: Create a new ride.
      summary: List rides or create a new ride
      tags:
      - Rides
      security:
      - cookieAuth: []
      - tokenAuth: []
      - {}
      responses:
        '200':
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/RideListOutput'
              examples:
                RideListExample:
                  value:
                  - id: 1
                    name: Steel Vengeance
                    slug: steel-vengeance
                    category: ROLLER_COASTER
                    status: OPERATING
                    description: Hybrid roller coaster
                    park:
                      id: 1
                      name: Cedar Point
                      slug: cedar-point
                    average_rating: 4.8
                    capacity_per_hour: 1200
                    opening_date: '2018-05-05'
                  summary: Example ride list response
                  description: A typical ride in the list view
          description: ''
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RideDetailOutput'
              examples:
                RideDetailExample:
                  value:
                    id: 1
                    name: Steel Vengeance
                    slug: steel-vengeance
                    category: ROLLER_COASTER
                    status: OPERATING
                    description: Hybrid roller coaster featuring RMC I-Box track
                    park:
                      id: 1
                      name: Cedar Point
                      slug: cedar-point
                    opening_date: '2018-05-05'
                    min_height_in: 48
                    capacity_per_hour: 1200
                    ride_duration_seconds: 150
                    average_rating: 4.8
                    manufacturer:
                      id: 1
                      name: Rocky Mountain Construction
                      slug: rocky-mountain-construction
                  summary: Example ride detail response
                  description: A complete ride detail response
          description: ''
  /api/v1/trending/content/:
    get:
      operationId: v1_trending_content_retrieve
      description: Retrieve trending parks and rides based on view counts, ratings,
        and recency.
      summary: Get trending content
      parameters:
      - in: query
        name: limit
        schema:
          type: integer
          default: 20
        description: 'Number of trending items to return (default: 20, max: 100)'
      - in: query
        name: timeframe
        schema:
          type: string
          enum:
          - day
          - month
          - week
          default: week
        description: 'Timeframe for trending calculation (day, week, month) - default:
          week'
      tags:
      - Trending
      security:
      - cookieAuth: []
      - tokenAuth: []
      - {}
      responses:
        '200':
          content:
            application/json:
              schema:
                type: object
                additionalProperties: {}
          description: ''
  /api/v1/trending/new/:
    get:
      operationId: v1_trending_new_retrieve
      description: Retrieve recently added parks and rides.
      summary: Get new content
      parameters:
      - in: query
        name: days
        schema:
          type: integer
          default: 30
        description: 'Number of days to look back for new content (default: 30, max:
          365)'
      - in: query
        name: limit
        schema:
          type: integer
          default: 20
        description: 'Number of new items to return (default: 20, max: 100)'
      tags:
      - Trending
      security:
      - cookieAuth: []
      - tokenAuth: []
      - {}
      responses:
        '200':
          content:
            application/json:
              schema:
                type: object
                additionalProperties: {}
          description: ''
components:
  schemas:
    ActionEnum:
      enum:
      - delete
      - approve
      - reject
      type: string
      description: |-
        * `delete` - Delete
        * `approve` - Approve
        * `reject` - Reject
    AuthStatusOutput:
      type: object
      description: Output serializer for authentication status.
      properties:
        authenticated:
          type: boolean
          description: Whether user is authenticated
        user:
          allOf:
          - $ref: '#/components/schemas/UserOutput'
          nullable: true
          description: User information if authenticated
      required:
      - authenticated
      - user
    AuthStatusOutputRequest:
      type: object
      description: Output serializer for authentication status.
      properties:
        authenticated:
          type: boolean
          description: Whether user is authenticated
        user:
          allOf:
          - $ref: '#/components/schemas/UserOutputRequest'
          nullable: true
          description: User information if authenticated
      required:
      - authenticated
      - user
    BulkPhotoActionInputRequest:
      type: object
      description: Input serializer for bulk photo actions.
      properties:
        photo_ids:
          type: array
          items:
            type: integer
          description: List of photo IDs to perform action on
        action:
          allOf:
          - $ref: '#/components/schemas/ActionEnum'
          description: |-
            Action to perform on selected photos

            * `delete` - Delete
            * `approve` - Approve
            * `reject` - Reject
      required:
      - action
      - photo_ids
    BulkPhotoActionOutput:
      type: object
      description: Output serializer for bulk photo actions.
      properties:
        success_count:
          type: integer
        failed_count:
          type: integer
        error_messages:
          type: array
          items:
            type: string
        message:
          type: string
      required:
      - failed_count
      - message
      - success_count
    CategoryEnum:
      enum:
      - RC
      - DR
      - FR
      - WR
      - PK
      type: string
      description: |-
        * `RC` - Roller Coaster
        * `DR` - Dark Ride
        * `FR` - Flat Ride
        * `WR` - Water Ride
        * `PK` - Park
    HealthCheckOutput:
      type: object
      description: Output serializer for health check responses.
      properties:
        status:
          $ref: '#/components/schemas/HealthCheckOutputStatusEnum'
        timestamp:
          type: string
          format: date-time
        version:
          type: string
        environment:
          type: string
        response_time_ms:
          type: number
          format: double
        checks:
          type: object
          additionalProperties: {}
        metrics:
          type: object
          additionalProperties: {}
      required:
      - checks
      - environment
      - metrics
      - response_time_ms
      - status
      - timestamp
      - version
    HealthCheckOutputStatusEnum:
      enum:
      - healthy
      - unhealthy
      type: string
      description: |-
        * `healthy` - healthy
        * `unhealthy` - unhealthy
    HistorySummary:
      type: object
      description: Serializer for history summary information.
      properties:
        total_events:
          type: integer
        first_recorded:
          type: string
          format: date-time
          nullable: true
        last_modified:
          type: string
          format: date-time
          nullable: true
      required:
      - first_recorded
      - last_modified
      - total_events
    LoginInputRequest:
      type: object
      description: Input serializer for user login.
      properties:
        username:
          type: string
          minLength: 1
          description: Username or email address
          maxLength: 150
        password:
          type: string
          writeOnly: true
          minLength: 1
          description: User password
      required:
      - password
      - username
    LoginOutput:
      type: object
      description: Output serializer for login response.
      properties:
        token:
          type: string
          description: Authentication token
        user:
          allOf:
          - $ref: '#/components/schemas/UserOutput'
          description: User information
        message:
          type: string
          description: Success message
      required:
      - message
      - token
      - user
    LogoutOutput:
      type: object
      description: Output serializer for logout response.
      properties:
        message:
          type: string
          description: Success message
      required:
      - message
    LogoutOutputRequest:
      type: object
      description: Output serializer for logout response.
      properties:
        message:
          type: string
          minLength: 1
          description: Success message
      required:
      - message
    MediaStatsOutput:
      type: object
      description: Output serializer for media statistics.
      properties:
        total_photos:
          type: integer
        photos_by_content_type:
          type: object
          additionalProperties: {}
        recent_uploads:
          type: integer
        top_uploaders:
          type: array
          items: {}
        storage_usage:
          type: object
          additionalProperties: {}
      required:
      - photos_by_content_type
      - recent_uploads
      - storage_usage
      - top_uploaders
      - total_photos
    PaginatedParkHistoryEventList:
      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/ParkHistoryEvent'
    PaginatedParkPhotoListOutputList:
      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/ParkPhotoListOutput'
    PaginatedPhotoListOutputList:
      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/PhotoListOutput'
    PaginatedRankingSnapshotList:
      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/RankingSnapshot'
    PaginatedRideHistoryEventList:
      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/RideHistoryEvent'
    PaginatedRideRankingList:
      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/RideRanking'
    PaginatedTopListItemOutputList:
      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/TopListItemOutput'
    PaginatedTopListOutputList:
      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/TopListOutput'
    PaginatedUnifiedHistoryTimelineList:
      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/UnifiedHistoryTimeline'
    PaginatedUserProfileOutputList:
      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/UserProfileOutput'
    ParkHistoryEvent:
      type: object
      description: Serializer for park history events.
      properties:
        pgh_id:
          type: integer
          readOnly: true
        pgh_created_at:
          type: string
          format: date-time
          readOnly: true
        pgh_label:
          type: string
          readOnly: true
        pgh_obj_id:
          type: integer
          readOnly: true
        pgh_context:
          readOnly: true
          nullable: true
        pgh_data:
          readOnly: true
        event_type:
          type: string
          readOnly: true
        changes:
          type: object
          additionalProperties: {}
          readOnly: true
      required:
      - changes
      - event_type
      - pgh_context
      - pgh_created_at
      - pgh_data
      - pgh_id
      - pgh_label
      - pgh_obj_id
    ParkHistoryOutput:
      type: object
      description: Output serializer for complete park history.
      properties:
        park:
          type: object
          additionalProperties: {}
          readOnly: true
        current_state:
          type: object
          additionalProperties: {}
          readOnly: true
        summary:
          $ref: '#/components/schemas/HistorySummary'
        events:
          type: array
          items:
            $ref: '#/components/schemas/ParkHistoryEvent'
      required:
      - current_state
      - events
      - park
      - summary
    ParkPhotoCreateInputRequest:
      type: object
      description: Input serializer for creating park photos.
      properties:
        image:
          type: string
          format: binary
        caption:
          type: string
          maxLength: 255
        alt_text:
          type: string
          maxLength: 255
        is_primary:
          type: boolean
      required:
      - image
    ParkPhotoListOutput:
      type: object
      description: Optimized output serializer for park photo lists.
      properties:
        id:
          type: integer
          readOnly: true
        image:
          type: string
          format: uri
          readOnly: true
        caption:
          type: string
          readOnly: true
        is_primary:
          type: boolean
          readOnly: true
        is_approved:
          type: boolean
          readOnly: true
        created_at:
          type: string
          format: date-time
          readOnly: true
        uploaded_by_username:
          type: string
          readOnly: true
      required:
      - caption
      - created_at
      - id
      - image
      - is_approved
      - is_primary
      - uploaded_by_username
    ParkPhotoOutput:
      type: object
      description: Enhanced output serializer for park photos with rich field structure.
      properties:
        id:
          type: integer
          readOnly: true
        image:
          type: string
          format: uri
        caption:
          type: string
          maxLength: 255
        alt_text:
          type: string
          maxLength: 255
        is_primary:
          type: boolean
        is_approved:
          type: boolean
        created_at:
          type: string
          format: date-time
          readOnly: true
        updated_at:
          type: string
          format: date-time
          readOnly: true
        date_taken:
          type: string
          format: date-time
          nullable: true
        uploaded_by_username:
          type: string
          readOnly: true
        file_size:
          type: integer
          nullable: true
          description: File size in bytes
          readOnly: true
        dimensions:
          type: array
          items:
            type: integer
          nullable: true
          description: Image dimensions as [width, height] in pixels
          readOnly: true
        park_slug:
          type: string
          readOnly: true
        park_name:
          type: string
          readOnly: true
      required:
      - created_at
      - dimensions
      - file_size
      - id
      - image
      - park_name
      - park_slug
      - updated_at
      - uploaded_by_username
    ParkPhotoOutputRequest:
      type: object
      description: Enhanced output serializer for park photos with rich field structure.
      properties:
        image:
          type: string
          format: binary
        caption:
          type: string
          maxLength: 255
        alt_text:
          type: string
          maxLength: 255
        is_primary:
          type: boolean
        is_approved:
          type: boolean
        date_taken:
          type: string
          format: date-time
          nullable: true
      required:
      - image
    ParkPhotoUpdateInputRequest:
      type: object
      description: Input serializer for updating park photos.
      properties:
        caption:
          type: string
          maxLength: 255
        alt_text:
          type: string
          maxLength: 255
        is_primary:
          type: boolean
    PasswordChangeInputRequest:
      type: object
      description: Input serializer for password change.
      properties:
        old_password:
          type: string
          writeOnly: true
          minLength: 1
          description: Current password
        new_password:
          type: string
          writeOnly: true
          minLength: 1
          description: New password
        new_password_confirm:
          type: string
          writeOnly: true
          minLength: 1
          description: New password confirmation
      required:
      - new_password
      - new_password_confirm
      - old_password
    PasswordChangeOutput:
      type: object
      description: Output serializer for password change response.
      properties:
        detail:
          type: string
          description: Success message
      required:
      - detail
    PasswordResetInputRequest:
      type: object
      description: Input serializer for password reset request.
      properties:
        email:
          type: string
          format: email
          minLength: 1
          description: Email address for password reset
      required:
      - email
    PasswordResetOutput:
      type: object
      description: Output serializer for password reset response.
      properties:
        detail:
          type: string
          description: Success message
      required:
      - detail
    PatchedParkPhotoUpdateInputRequest:
      type: object
      description: Input serializer for updating park photos.
      properties:
        caption:
          type: string
          maxLength: 255
        alt_text:
          type: string
          maxLength: 255
        is_primary:
          type: boolean
    PatchedPhotoUpdateInputRequest:
      type: object
      description: Input serializer for updating photos.
      properties:
        caption:
          type: string
          maxLength: 500
        alt_text:
          type: string
          maxLength: 255
        is_primary:
          type: boolean
    PatchedTopListItemUpdateInputRequest:
      type: object
      properties:
        object_id:
          type: integer
          maximum: 2147483647
          minimum: 0
        rank:
          type: integer
          maximum: 2147483647
          minimum: 0
        notes:
          type: string
        top_list:
          type: integer
        content_type:
          type: integer
    PatchedTopListUpdateInputRequest:
      type: object
      properties:
        title:
          type: string
          minLength: 1
          maxLength: 100
        category:
          $ref: '#/components/schemas/CategoryEnum'
        description:
          type: string
    PatchedUserProfileUpdateInputRequest:
      type: object
      properties:
        display_name:
          type: string
          minLength: 1
          description: This is the name that will be displayed on the site
          maxLength: 50
        avatar:
          type: string
          format: binary
        pronouns:
          type: string
          maxLength: 50
        bio:
          type: string
          maxLength: 500
        twitter:
          type: string
          format: uri
          maxLength: 200
        instagram:
          type: string
          format: uri
          maxLength: 200
        youtube:
          type: string
          format: uri
          maxLength: 200
        discord:
          type: string
          maxLength: 100
        coaster_credits:
          type: integer
          maximum: 2147483647
          minimum: -2147483648
        dark_ride_credits:
          type: integer
          maximum: 2147483647
          minimum: -2147483648
        flat_ride_credits:
          type: integer
          maximum: 2147483647
          minimum: -2147483648
        water_ride_credits:
          type: integer
          maximum: 2147483647
          minimum: -2147483648
    PerformanceMetricsOutput:
      type: object
      description: Output serializer for performance metrics.
      properties:
        timestamp:
          type: string
          format: date-time
        database_analysis:
          type: object
          additionalProperties: {}
        cache_performance:
          type: object
          additionalProperties: {}
        recent_slow_queries:
          type: array
          items: {}
      required:
      - cache_performance
      - database_analysis
      - recent_slow_queries
      - timestamp
    PhotoDetailOutput:
      type: object
      description: Output serializer for photo details.
      properties:
        id:
          type: integer
        url:
          type: string
          format: uri
        thumbnail_url:
          type: string
          format: uri
        caption:
          type: string
        alt_text:
          type: string
        is_primary:
          type: boolean
        uploaded_at:
          type: string
          format: date-time
        content_type:
          type: string
        object_id:
          type: integer
        file_size:
          type: integer
        width:
          type: integer
        height:
          type: integer
        format:
          type: string
        uploaded_by:
          type: object
          additionalProperties: {}
          readOnly: true
      required:
      - alt_text
      - caption
      - content_type
      - file_size
      - format
      - height
      - id
      - is_primary
      - object_id
      - uploaded_at
      - uploaded_by
      - url
      - width
    PhotoDetailOutputRequest:
      type: object
      description: Output serializer for photo details.
      properties:
        id:
          type: integer
        url:
          type: string
          format: uri
          minLength: 1
        thumbnail_url:
          type: string
          format: uri
          minLength: 1
        caption:
          type: string
          minLength: 1
        alt_text:
          type: string
          minLength: 1
        is_primary:
          type: boolean
        uploaded_at:
          type: string
          format: date-time
        content_type:
          type: string
          minLength: 1
        object_id:
          type: integer
        file_size:
          type: integer
        width:
          type: integer
        height:
          type: integer
        format:
          type: string
          minLength: 1
      required:
      - alt_text
      - caption
      - content_type
      - file_size
      - format
      - height
      - id
      - is_primary
      - object_id
      - uploaded_at
      - url
      - width
    PhotoListOutput:
      type: object
      description: Output serializer for photo list view.
      properties:
        id:
          type: integer
        url:
          type: string
          format: uri
        thumbnail_url:
          type: string
          format: uri
        caption:
          type: string
        is_primary:
          type: boolean
        uploaded_at:
          type: string
          format: date-time
        uploaded_by:
          type: object
          additionalProperties: {}
          readOnly: true
      required:
      - caption
      - id
      - is_primary
      - uploaded_at
      - uploaded_by
      - url
    PhotoUpdateInput:
      type: object
      description: Input serializer for updating photos.
      properties:
        caption:
          type: string
          maxLength: 500
        alt_text:
          type: string
          maxLength: 255
        is_primary:
          type: boolean
    PhotoUpdateInputRequest:
      type: object
      description: Input serializer for updating photos.
      properties:
        caption:
          type: string
          maxLength: 500
        alt_text:
          type: string
          maxLength: 255
        is_primary:
          type: boolean
    PhotoUploadInputRequest:
      type: object
      description: Input serializer for photo uploads.
      properties:
        photo:
          type: string
          format: binary
          description: The image file to upload
        app_label:
          type: string
          minLength: 1
          description: App label of the content object (e.g., 'parks', 'rides')
          maxLength: 100
        model:
          type: string
          minLength: 1
          description: Model name of the content object (e.g., 'park', 'ride')
          maxLength: 100
        object_id:
          type: integer
          description: ID of the content object
        caption:
          type: string
          description: Optional caption for the photo
          maxLength: 500
        alt_text:
          type: string
          description: Optional alt text for accessibility
          maxLength: 255
        is_primary:
          type: boolean
          default: false
          description: Whether this should be the primary photo
        photo_type:
          type: string
          minLength: 1
          default: general
          description: 'Type of photo (for rides: ''general'', ''on_ride'', ''construction'',
            etc.)'
          maxLength: 50
      required:
      - app_label
      - model
      - object_id
      - photo
    PhotoUploadOutput:
      type: object
      description: Output serializer for photo uploads.
      properties:
        id:
          type: integer
        url:
          type: string
        caption:
          type: string
        alt_text:
          type: string
        is_primary:
          type: boolean
        message:
          type: string
      required:
      - alt_text
      - caption
      - id
      - is_primary
      - message
      - url
    RankingSnapshot:
      type: object
      description: Serializer for ranking history snapshots.
      properties:
        id:
          type: integer
          readOnly: true
        ride:
          type: integer
        ride_name:
          type: string
          readOnly: true
        park_name:
          type: string
          readOnly: true
        rank:
          type: integer
          maximum: 2147483647
          minimum: 0
        winning_percentage:
          type: string
          format: decimal
          pattern: ^-?\d{0,1}(?:\.\d{0,4})?$
        snapshot_date:
          type: string
          format: date
          description: Date when this ranking snapshot was taken
      required:
      - id
      - park_name
      - rank
      - ride
      - ride_name
      - snapshot_date
      - winning_percentage
    RankingStats:
      type: object
      description: Serializer for ranking system statistics.
      properties:
        total_ranked_rides:
          type: integer
        total_comparisons:
          type: integer
        last_calculation_time:
          type: string
          format: date-time
        calculation_duration:
          type: number
          format: double
        top_rated_ride:
          type: object
          additionalProperties: {}
        most_compared_ride:
          type: object
          additionalProperties: {}
        biggest_rank_change:
          type: object
          additionalProperties: {}
      required:
      - biggest_rank_change
      - calculation_duration
      - last_calculation_time
      - most_compared_ride
      - top_rated_ride
      - total_comparisons
      - total_ranked_rides
    RideDetailOutput:
      type: object
      description: Output serializer for ride detail view.
      properties:
        id:
          type: integer
        name:
          type: string
        slug:
          type: string
        category:
          type: string
        status:
          type: string
        post_closing_status:
          type: string
          nullable: true
        description:
          type: string
        park:
          $ref: '#/components/schemas/RideParkOutput'
        park_area:
          type: object
          additionalProperties: {}
          nullable: true
          readOnly: true
        opening_date:
          type: string
          format: date
          nullable: true
        closing_date:
          type: string
          format: date
          nullable: true
        status_since:
          type: string
          format: date
          nullable: true
        min_height_in:
          type: integer
          nullable: true
        max_height_in:
          type: integer
          nullable: true
        capacity_per_hour:
          type: integer
          nullable: true
        ride_duration_seconds:
          type: integer
          nullable: true
        average_rating:
          type: string
          format: decimal
          pattern: ^-?\d{0,1}(?:\.\d{0,2})?$
          nullable: true
        manufacturer:
          type: object
          additionalProperties: {}
          nullable: true
          readOnly: true
        designer:
          type: object
          additionalProperties: {}
          nullable: true
          readOnly: true
        ride_model:
          allOf:
          - $ref: '#/components/schemas/RideModelOutput'
          nullable: true
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
      required:
      - average_rating
      - capacity_per_hour
      - category
      - closing_date
      - created_at
      - description
      - designer
      - id
      - manufacturer
      - max_height_in
      - min_height_in
      - name
      - opening_date
      - park
      - park_area
      - post_closing_status
      - ride_duration_seconds
      - ride_model
      - slug
      - status
      - status_since
      - updated_at
    RideHistoryEvent:
      type: object
      description: Serializer for ride history events.
      properties:
        pgh_id:
          type: integer
          readOnly: true
        pgh_created_at:
          type: string
          format: date-time
          readOnly: true
        pgh_label:
          type: string
          readOnly: true
        pgh_obj_id:
          type: integer
          readOnly: true
        pgh_context:
          readOnly: true
          nullable: true
        pgh_data:
          readOnly: true
        event_type:
          type: string
          readOnly: true
        changes:
          type: object
          additionalProperties: {}
          readOnly: true
      required:
      - changes
      - event_type
      - pgh_context
      - pgh_created_at
      - pgh_data
      - pgh_id
      - pgh_label
      - pgh_obj_id
    RideHistoryOutput:
      type: object
      description: Output serializer for complete ride history.
      properties:
        ride:
          type: object
          additionalProperties: {}
          readOnly: true
        current_state:
          type: object
          additionalProperties: {}
          readOnly: true
        summary:
          $ref: '#/components/schemas/HistorySummary'
        events:
          type: array
          items:
            $ref: '#/components/schemas/RideHistoryEvent'
      required:
      - current_state
      - events
      - ride
      - summary
    RideListOutput:
      type: object
      description: Output serializer for ride list view.
      properties:
        id:
          type: integer
        name:
          type: string
        slug:
          type: string
        category:
          type: string
        status:
          type: string
        description:
          type: string
        park:
          $ref: '#/components/schemas/RideParkOutput'
        average_rating:
          type: string
          format: decimal
          pattern: ^-?\d{0,1}(?:\.\d{0,2})?$
          nullable: true
        capacity_per_hour:
          type: integer
          nullable: true
        opening_date:
          type: string
          format: date
          nullable: true
        closing_date:
          type: string
          format: date
          nullable: true
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
      required:
      - average_rating
      - capacity_per_hour
      - category
      - closing_date
      - created_at
      - description
      - id
      - name
      - opening_date
      - park
      - slug
      - status
      - updated_at
    RideModelOutput:
      type: object
      description: Output serializer for ride model data.
      properties:
        id:
          type: integer
        name:
          type: string
        description:
          type: string
        category:
          type: string
        manufacturer:
          type: object
          additionalProperties: {}
          nullable: true
          readOnly: true
      required:
      - category
      - description
      - id
      - manufacturer
      - name
    RideParkOutput:
      type: object
      description: Output serializer for ride's park data.
      properties:
        id:
          type: integer
        name:
          type: string
        slug:
          type: string
      required:
      - id
      - name
      - slug
    RideRanking:
      type: object
      description: Serializer for ride rankings.
      properties:
        id:
          type: integer
          readOnly: true
        rank:
          type: integer
          maximum: 2147483647
          minimum: 0
          description: Overall rank position (1 = best)
        ride:
          type: object
          additionalProperties: {}
          readOnly: true
        wins:
          type: integer
          maximum: 2147483647
          minimum: 0
          description: Number of rides this ride beats in pairwise comparisons
        losses:
          type: integer
          maximum: 2147483647
          minimum: 0
          description: Number of rides that beat this ride in pairwise comparisons
        ties:
          type: integer
          maximum: 2147483647
          minimum: 0
          description: Number of rides with equal preference in pairwise comparisons
        winning_percentage:
          type: string
          format: decimal
          pattern: ^-?\d{0,1}(?:\.\d{0,4})?$
          description: Win percentage where ties count as 0.5
        mutual_riders_count:
          type: integer
          maximum: 2147483647
          minimum: 0
          description: Total number of users who have rated this ride
        comparison_count:
          type: integer
          maximum: 2147483647
          minimum: 0
          description: Number of other rides this was compared against
        average_rating:
          type: string
          format: decimal
          pattern: ^-?\d{0,1}(?:\.\d{0,2})?$
          nullable: true
          description: Average rating from all users who have rated this ride
        last_calculated:
          type: string
          format: date-time
          description: When this ranking was last calculated
        rank_change:
          type: integer
          nullable: true
          readOnly: true
        previous_rank:
          type: integer
          nullable: true
          readOnly: true
      required:
      - id
      - previous_rank
      - rank
      - rank_change
      - ride
      - winning_percentage
    RideRankingDetail:
      type: object
      description: Detailed serializer for a specific ride's ranking.
      properties:
        id:
          type: integer
          readOnly: true
        rank:
          type: integer
          maximum: 2147483647
          minimum: 0
          description: Overall rank position (1 = best)
        ride:
          type: object
          additionalProperties: {}
          readOnly: true
        wins:
          type: integer
          maximum: 2147483647
          minimum: 0
          description: Number of rides this ride beats in pairwise comparisons
        losses:
          type: integer
          maximum: 2147483647
          minimum: 0
          description: Number of rides that beat this ride in pairwise comparisons
        ties:
          type: integer
          maximum: 2147483647
          minimum: 0
          description: Number of rides with equal preference in pairwise comparisons
        winning_percentage:
          type: string
          format: decimal
          pattern: ^-?\d{0,1}(?:\.\d{0,4})?$
          description: Win percentage where ties count as 0.5
        mutual_riders_count:
          type: integer
          maximum: 2147483647
          minimum: 0
          description: Total number of users who have rated this ride
        comparison_count:
          type: integer
          maximum: 2147483647
          minimum: 0
          description: Number of other rides this was compared against
        average_rating:
          type: string
          format: decimal
          pattern: ^-?\d{0,1}(?:\.\d{0,2})?$
          nullable: true
          description: Average rating from all users who have rated this ride
        last_calculated:
          type: string
          format: date-time
          description: When this ranking was last calculated
        calculation_version:
          type: string
          description: Algorithm version used for calculation
          maxLength: 10
        head_to_head_comparisons:
          type: array
          items:
            type: object
            additionalProperties: {}
          readOnly: true
        ranking_history:
          type: array
          items:
            type: object
            additionalProperties: {}
          readOnly: true
      required:
      - head_to_head_comparisons
      - id
      - rank
      - ranking_history
      - ride
      - winning_percentage
    SignupInputRequest:
      type: object
      description: Input serializer for user registration.
      properties:
        username:
          type: string
          minLength: 1
          description: Required. 150 characters or fewer. Letters, digits and @/./+/-/_
            only.
          pattern: ^[\w.@+-]+$
          maxLength: 150
        email:
          type: string
          format: email
          title: Email address
          maxLength: 254
        password:
          type: string
          writeOnly: true
          minLength: 1
          description: User password
        password_confirm:
          type: string
          writeOnly: true
          minLength: 1
          description: Password confirmation
        first_name:
          type: string
          maxLength: 150
        last_name:
          type: string
          maxLength: 150
      required:
      - password
      - password_confirm
      - username
    SignupOutput:
      type: object
      description: Output serializer for registration response.
      properties:
        token:
          type: string
          description: Authentication token
        user:
          allOf:
          - $ref: '#/components/schemas/UserOutput'
          description: User information
        message:
          type: string
          description: Success message
      required:
      - message
      - token
      - user
    SimpleHealthOutput:
      type: object
      description: Output serializer for simple health check.
      properties:
        status:
          $ref: '#/components/schemas/SimpleHealthOutputStatusEnum'
        timestamp:
          type: string
          format: date-time
        error:
          type: string
      required:
      - status
      - timestamp
    SimpleHealthOutputStatusEnum:
      enum:
      - ok
      - error
      type: string
      description: |-
        * `ok` - ok
        * `error` - error
    TopListCreateInputRequest:
      type: object
      properties:
        title:
          type: string
          minLength: 1
          maxLength: 100
        category:
          $ref: '#/components/schemas/CategoryEnum'
        description:
          type: string
        user:
          type: integer
      required:
      - category
      - title
      - user
    TopListItemCreateInputRequest:
      type: object
      properties:
        object_id:
          type: integer
          maximum: 2147483647
          minimum: 0
        rank:
          type: integer
          maximum: 2147483647
          minimum: 0
        notes:
          type: string
        top_list:
          type: integer
        content_type:
          type: integer
      required:
      - content_type
      - object_id
      - rank
      - top_list
    TopListItemOutput:
      type: object
      properties:
        id:
          type: integer
          readOnly: true
        created_at:
          type: string
          format: date-time
          readOnly: true
        updated_at:
          type: string
          format: date-time
          readOnly: true
        object_id:
          type: integer
          maximum: 2147483647
          minimum: 0
        rank:
          type: integer
          maximum: 2147483647
          minimum: 0
        notes:
          type: string
        top_list:
          type: integer
        content_type:
          type: integer
      required:
      - content_type
      - created_at
      - id
      - object_id
      - rank
      - top_list
      - updated_at
    TopListItemOutputRequest:
      type: object
      properties:
        object_id:
          type: integer
          maximum: 2147483647
          minimum: 0
        rank:
          type: integer
          maximum: 2147483647
          minimum: 0
        notes:
          type: string
        top_list:
          type: integer
        content_type:
          type: integer
      required:
      - content_type
      - object_id
      - rank
      - top_list
    TopListItemUpdateInputRequest:
      type: object
      properties:
        object_id:
          type: integer
          maximum: 2147483647
          minimum: 0
        rank:
          type: integer
          maximum: 2147483647
          minimum: 0
        notes:
          type: string
        top_list:
          type: integer
        content_type:
          type: integer
      required:
      - content_type
      - object_id
      - rank
      - top_list
    TopListOutput:
      type: object
      properties:
        id:
          type: integer
          readOnly: true
        user:
          allOf:
          - $ref: '#/components/schemas/User'
          readOnly: true
        items:
          type: array
          items:
            $ref: '#/components/schemas/TopListItemOutput'
          readOnly: true
        title:
          type: string
          maxLength: 100
        category:
          $ref: '#/components/schemas/CategoryEnum'
        description:
          type: string
        created_at:
          type: string
          format: date-time
          readOnly: true
        updated_at:
          type: string
          format: date-time
          readOnly: true
      required:
      - category
      - created_at
      - id
      - items
      - title
      - updated_at
      - user
    TopListOutputRequest:
      type: object
      properties:
        title:
          type: string
          minLength: 1
          maxLength: 100
        category:
          $ref: '#/components/schemas/CategoryEnum'
        description:
          type: string
      required:
      - category
      - title
    TopListUpdateInputRequest:
      type: object
      properties:
        title:
          type: string
          minLength: 1
          maxLength: 100
        category:
          $ref: '#/components/schemas/CategoryEnum'
        description:
          type: string
      required:
      - category
      - title
    UnifiedHistoryTimeline:
      type: object
      description: Serializer for unified history timeline.
      properties:
        summary:
          type: object
          additionalProperties: {}
          readOnly: true
        events:
          type: array
          items:
            type: object
            additionalProperties: {}
          readOnly: true
      required:
      - events
      - summary
    User:
      type: object
      description: User serializer for API responses
      properties:
        id:
          type: integer
          readOnly: true
        username:
          type: string
          description: Required. 150 characters or fewer. Letters, digits and @/./+/-/_
            only.
          pattern: ^[\w.@+-]+$
          maxLength: 150
        email:
          type: string
          format: email
          title: Email address
          maxLength: 254
        first_name:
          type: string
          maxLength: 150
        last_name:
          type: string
          maxLength: 150
        date_joined:
          type: string
          format: date-time
          readOnly: true
        is_active:
          type: boolean
          readOnly: true
          title: Active
          description: Designates whether this user should be treated as active. Unselect
            this instead of deleting accounts.
        avatar_url:
          type: string
          nullable: true
          description: Get user avatar URL
          readOnly: true
      required:
      - avatar_url
      - date_joined
      - id
      - is_active
      - username
    UserOutput:
      type: object
      description: Output serializer for user data.
      properties:
        id:
          type: integer
          readOnly: true
        username:
          type: string
          description: Required. 150 characters or fewer. Letters, digits and @/./+/-/_
            only.
          pattern: ^[\w.@+-]+$
          maxLength: 150
        email:
          type: string
          format: email
          title: Email address
          maxLength: 254
        first_name:
          type: string
          maxLength: 150
        last_name:
          type: string
          maxLength: 150
        is_active:
          type: boolean
          title: Active
          description: Designates whether this user should be treated as active. Unselect
            this instead of deleting accounts.
        date_joined:
          type: string
          format: date-time
          readOnly: true
      required:
      - date_joined
      - id
      - username
    UserOutputRequest:
      type: object
      description: Output serializer for user data.
      properties:
        username:
          type: string
          minLength: 1
          description: Required. 150 characters or fewer. Letters, digits and @/./+/-/_
            only.
          pattern: ^[\w.@+-]+$
          maxLength: 150
        email:
          type: string
          format: email
          title: Email address
          maxLength: 254
        first_name:
          type: string
          maxLength: 150
        last_name:
          type: string
          maxLength: 150
        is_active:
          type: boolean
          title: Active
          description: Designates whether this user should be treated as active. Unselect
            this instead of deleting accounts.
      required:
      - username
    UserProfileCreateInputRequest:
      type: object
      properties:
        display_name:
          type: string
          minLength: 1
          description: This is the name that will be displayed on the site
          maxLength: 50
        avatar:
          type: string
          format: binary
        pronouns:
          type: string
          maxLength: 50
        bio:
          type: string
          maxLength: 500
        twitter:
          type: string
          format: uri
          maxLength: 200
        instagram:
          type: string
          format: uri
          maxLength: 200
        youtube:
          type: string
          format: uri
          maxLength: 200
        discord:
          type: string
          maxLength: 100
        coaster_credits:
          type: integer
          maximum: 2147483647
          minimum: -2147483648
        dark_ride_credits:
          type: integer
          maximum: 2147483647
          minimum: -2147483648
        flat_ride_credits:
          type: integer
          maximum: 2147483647
          minimum: -2147483648
        water_ride_credits:
          type: integer
          maximum: 2147483647
          minimum: -2147483648
        user:
          type: integer
      required:
      - display_name
      - user
    UserProfileOutput:
      type: object
      properties:
        id:
          type: integer
          readOnly: true
        user:
          allOf:
          - $ref: '#/components/schemas/User'
          readOnly: true
        avatar_url:
          type: string
          format: uri
          nullable: true
          readOnly: true
        profile_id:
          type: string
          readOnly: true
          description: Unique identifier for this profile that remains constant
        display_name:
          type: string
          description: This is the name that will be displayed on the site
          maxLength: 50
        avatar:
          type: string
          format: uri
        pronouns:
          type: string
          maxLength: 50
        bio:
          type: string
          maxLength: 500
        twitter:
          type: string
          format: uri
          maxLength: 200
        instagram:
          type: string
          format: uri
          maxLength: 200
        youtube:
          type: string
          format: uri
          maxLength: 200
        discord:
          type: string
          maxLength: 100
        coaster_credits:
          type: integer
          maximum: 2147483647
          minimum: -2147483648
        dark_ride_credits:
          type: integer
          maximum: 2147483647
          minimum: -2147483648
        flat_ride_credits:
          type: integer
          maximum: 2147483647
          minimum: -2147483648
        water_ride_credits:
          type: integer
          maximum: 2147483647
          minimum: -2147483648
      required:
      - avatar_url
      - display_name
      - id
      - profile_id
      - user
    UserProfileUpdateInputRequest:
      type: object
      properties:
        display_name:
          type: string
          minLength: 1
          description: This is the name that will be displayed on the site
          maxLength: 50
        avatar:
          type: string
          format: binary
        pronouns:
          type: string
          maxLength: 50
        bio:
          type: string
          maxLength: 500
        twitter:
          type: string
          format: uri
          maxLength: 200
        instagram:
          type: string
          format: uri
          maxLength: 200
        youtube:
          type: string
          format: uri
          maxLength: 200
        discord:
          type: string
          maxLength: 100
        coaster_credits:
          type: integer
          maximum: 2147483647
          minimum: -2147483648
        dark_ride_credits:
          type: integer
          maximum: 2147483647
          minimum: -2147483648
        flat_ride_credits:
          type: integer
          maximum: 2147483647
          minimum: -2147483648
        water_ride_credits:
          type: integer
          maximum: 2147483647
          minimum: -2147483648
      required:
      - display_name
    UserRequest:
      type: object
      description: User serializer for API responses
      properties:
        username:
          type: string
          minLength: 1
          description: Required. 150 characters or fewer. Letters, digits and @/./+/-/_
            only.
          pattern: ^[\w.@+-]+$
          maxLength: 150
        email:
          type: string
          format: email
          title: Email address
          maxLength: 254
        first_name:
          type: string
          maxLength: 150
        last_name:
          type: string
          maxLength: 150
      required:
      - username
  securitySchemes:
    cookieAuth:
      type: apiKey
      in: cookie
      name: sessionid
    tokenAuth:
      type: apiKey
      in: header
      name: Authorization
      description: Token-based authentication with required prefix "Token"
tags:
- name: Parks
  description: Theme park operations
- name: Rides
  description: Ride information and management
- name: Statistics
  description: Statistical endpoints providing aggregated data and insights
- name: Reviews
  description: User reviews and ratings for parks and rides
- name: locations
  description: Geographic location services
- name: accounts
  description: User account management
- name: media
  description: Media and image management
- name: moderation
  description: Content moderation
