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: Retrieve a specific item from the unified history timeline. summary: Get unified history timeline item parameters: - in: path name: id schema: type: string required: true tags: - History 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: 'Create a new photo entry (note: use PhotoUploadAPIView for actual file uploads)' summary: Create photo 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: '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: '' '400': content: application/json: schema: type: object additionalProperties: {} description: '' '403': content: application/json: schema: type: object additionalProperties: {} 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: Partially update photo information (caption, alt text, etc.) summary: Partially 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/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/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: '' 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 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: - Park Media 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: type: object additionalProperties: {} 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: '' /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 summary: Set photo as primary (legacy) 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/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: type: object additionalProperties: {} description: '' '400': content: application/json: schema: type: object additionalProperties: {} description: '' '403': content: application/json: schema: type: object additionalProperties: {} description: '' /api/v1/parks/photos/bulk_approve/: post: operationId: v1_parks_photos_bulk_approve_create description: Bulk approve or reject multiple park photos (admin only) summary: Bulk approve/reject photos tags: - Park Media requestBody: content: application/json: schema: $ref: '#/components/schemas/ParkPhotoApprovalInputRequest' application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/ParkPhotoApprovalInputRequest' multipart/form-data: schema: $ref: '#/components/schemas/ParkPhotoApprovalInputRequest' required: true security: - cookieAuth: [] - tokenAuth: [] responses: '200': content: application/json: schema: type: object additionalProperties: {} description: '' '400': content: application/json: schema: type: object additionalProperties: {} description: '' '403': content: application/json: schema: type: object additionalProperties: {} description: '' /api/v1/parks/photos/stats/: get: operationId: v1_parks_photos_stats_retrieve description: Get photo statistics for the park summary: Get park photo statistics tags: - Park Media security: - cookieAuth: [] - tokenAuth: [] responses: '200': content: application/json: schema: $ref: '#/components/schemas/ParkPhotoStatsOutput' description: '' '404': content: application/json: schema: type: object additionalProperties: {} description: '' '500': content: application/json: schema: type: object additionalProperties: {} 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 summary: Get ride comparisons parameters: - in: path name: ride_slug schema: type: string required: true tags: - Rankings security: - cookieAuth: [] - tokenAuth: [] - {} responses: '200': content: application/json: schema: type: object additionalProperties: {} 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/: post: operationId: v1_rides_duplicate_create description: Duplicate an existing ride. summary: Duplicate a ride parameters: - in: path name: id schema: type: integer required: true tags: - Rides security: - cookieAuth: [] - tokenAuth: [] - {} responses: '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}/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 ParkPhotoApprovalInputRequest: type: object description: Input serializer for bulk photo approval operations. properties: photo_ids: type: array items: type: integer description: List of photo IDs to approve approve: type: boolean default: true description: Whether to approve (True) or reject (False) the photos required: - photo_ids 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 ParkPhotoStatsOutput: type: object description: Output serializer for park photo statistics. properties: total_photos: type: integer approved_photos: type: integer pending_photos: type: integer has_primary: type: boolean recent_uploads: type: integer required: - approved_photos - has_primary - pending_photos - recent_uploads - total_photos 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 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