mirror of
https://github.com/pacnpal/thrillwiki_django_no_react.git
synced 2025-12-20 03:51:09 -05:00
8321 lines
243 KiB
YAML
8321 lines
243 KiB
YAML
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/:
|
|
get:
|
|
operationId: v1_rides_duplicate_retrieve
|
|
summary: Retrieve, update or delete a ride
|
|
parameters:
|
|
- in: path
|
|
name: id
|
|
schema:
|
|
type: integer
|
|
required: true
|
|
tags:
|
|
- Rides
|
|
security:
|
|
- cookieAuth: []
|
|
- tokenAuth: []
|
|
- {}
|
|
responses:
|
|
'200':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/RideDetailOutput'
|
|
examples:
|
|
RideDetailExample:
|
|
value:
|
|
id: 1
|
|
name: Steel Vengeance
|
|
slug: steel-vengeance
|
|
category: ROLLER_COASTER
|
|
status: OPERATING
|
|
description: Hybrid roller coaster featuring RMC I-Box track
|
|
park:
|
|
id: 1
|
|
name: Cedar Point
|
|
slug: cedar-point
|
|
opening_date: '2018-05-05'
|
|
min_height_in: 48
|
|
capacity_per_hour: 1200
|
|
ride_duration_seconds: 150
|
|
average_rating: 4.8
|
|
manufacturer:
|
|
id: 1
|
|
name: Rocky Mountain Construction
|
|
slug: rocky-mountain-construction
|
|
summary: Example ride detail response
|
|
description: A complete ride detail response
|
|
description: ''
|
|
put:
|
|
operationId: v1_rides_duplicate_update
|
|
summary: Retrieve, update or delete a ride
|
|
parameters:
|
|
- in: path
|
|
name: id
|
|
schema:
|
|
type: integer
|
|
required: true
|
|
tags:
|
|
- Rides
|
|
security:
|
|
- cookieAuth: []
|
|
- tokenAuth: []
|
|
- {}
|
|
responses:
|
|
'200':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/RideDetailOutput'
|
|
examples:
|
|
RideDetailExample:
|
|
value:
|
|
id: 1
|
|
name: Steel Vengeance
|
|
slug: steel-vengeance
|
|
category: ROLLER_COASTER
|
|
status: OPERATING
|
|
description: Hybrid roller coaster featuring RMC I-Box track
|
|
park:
|
|
id: 1
|
|
name: Cedar Point
|
|
slug: cedar-point
|
|
opening_date: '2018-05-05'
|
|
min_height_in: 48
|
|
capacity_per_hour: 1200
|
|
ride_duration_seconds: 150
|
|
average_rating: 4.8
|
|
manufacturer:
|
|
id: 1
|
|
name: Rocky Mountain Construction
|
|
slug: rocky-mountain-construction
|
|
summary: Example ride detail response
|
|
description: A complete ride detail response
|
|
description: ''
|
|
patch:
|
|
operationId: v1_rides_duplicate_partial_update
|
|
summary: Retrieve, update or delete a ride
|
|
parameters:
|
|
- in: path
|
|
name: id
|
|
schema:
|
|
type: integer
|
|
required: true
|
|
tags:
|
|
- Rides
|
|
security:
|
|
- cookieAuth: []
|
|
- tokenAuth: []
|
|
- {}
|
|
responses:
|
|
'200':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/RideDetailOutput'
|
|
examples:
|
|
RideDetailExample:
|
|
value:
|
|
id: 1
|
|
name: Steel Vengeance
|
|
slug: steel-vengeance
|
|
category: ROLLER_COASTER
|
|
status: OPERATING
|
|
description: Hybrid roller coaster featuring RMC I-Box track
|
|
park:
|
|
id: 1
|
|
name: Cedar Point
|
|
slug: cedar-point
|
|
opening_date: '2018-05-05'
|
|
min_height_in: 48
|
|
capacity_per_hour: 1200
|
|
ride_duration_seconds: 150
|
|
average_rating: 4.8
|
|
manufacturer:
|
|
id: 1
|
|
name: Rocky Mountain Construction
|
|
slug: rocky-mountain-construction
|
|
summary: Example ride detail response
|
|
description: A complete ride detail response
|
|
description: ''
|
|
delete:
|
|
operationId: v1_rides_duplicate_destroy
|
|
summary: Retrieve, update or delete a ride
|
|
parameters:
|
|
- in: path
|
|
name: id
|
|
schema:
|
|
type: integer
|
|
required: true
|
|
tags:
|
|
- Rides
|
|
security:
|
|
- cookieAuth: []
|
|
- tokenAuth: []
|
|
- {}
|
|
responses:
|
|
'200':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/RideDetailOutput'
|
|
examples:
|
|
RideDetailExample:
|
|
value:
|
|
id: 1
|
|
name: Steel Vengeance
|
|
slug: steel-vengeance
|
|
category: ROLLER_COASTER
|
|
status: OPERATING
|
|
description: Hybrid roller coaster featuring RMC I-Box track
|
|
park:
|
|
id: 1
|
|
name: Cedar Point
|
|
slug: cedar-point
|
|
opening_date: '2018-05-05'
|
|
min_height_in: 48
|
|
capacity_per_hour: 1200
|
|
ride_duration_seconds: 150
|
|
average_rating: 4.8
|
|
manufacturer:
|
|
id: 1
|
|
name: Rocky Mountain Construction
|
|
slug: rocky-mountain-construction
|
|
summary: Example ride detail response
|
|
description: A complete ride detail response
|
|
description: ''
|
|
/api/v1/rides/{id}/publish/:
|
|
get:
|
|
operationId: v1_rides_publish_retrieve
|
|
summary: Retrieve, update or delete a ride
|
|
parameters:
|
|
- in: path
|
|
name: id
|
|
schema:
|
|
type: integer
|
|
required: true
|
|
tags:
|
|
- Rides
|
|
security:
|
|
- cookieAuth: []
|
|
- tokenAuth: []
|
|
- {}
|
|
responses:
|
|
'200':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/RideDetailOutput'
|
|
examples:
|
|
RideDetailExample:
|
|
value:
|
|
id: 1
|
|
name: Steel Vengeance
|
|
slug: steel-vengeance
|
|
category: ROLLER_COASTER
|
|
status: OPERATING
|
|
description: Hybrid roller coaster featuring RMC I-Box track
|
|
park:
|
|
id: 1
|
|
name: Cedar Point
|
|
slug: cedar-point
|
|
opening_date: '2018-05-05'
|
|
min_height_in: 48
|
|
capacity_per_hour: 1200
|
|
ride_duration_seconds: 150
|
|
average_rating: 4.8
|
|
manufacturer:
|
|
id: 1
|
|
name: Rocky Mountain Construction
|
|
slug: rocky-mountain-construction
|
|
summary: Example ride detail response
|
|
description: A complete ride detail response
|
|
description: ''
|
|
put:
|
|
operationId: v1_rides_publish_update
|
|
summary: Retrieve, update or delete a ride
|
|
parameters:
|
|
- in: path
|
|
name: id
|
|
schema:
|
|
type: integer
|
|
required: true
|
|
tags:
|
|
- Rides
|
|
security:
|
|
- cookieAuth: []
|
|
- tokenAuth: []
|
|
- {}
|
|
responses:
|
|
'200':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/RideDetailOutput'
|
|
examples:
|
|
RideDetailExample:
|
|
value:
|
|
id: 1
|
|
name: Steel Vengeance
|
|
slug: steel-vengeance
|
|
category: ROLLER_COASTER
|
|
status: OPERATING
|
|
description: Hybrid roller coaster featuring RMC I-Box track
|
|
park:
|
|
id: 1
|
|
name: Cedar Point
|
|
slug: cedar-point
|
|
opening_date: '2018-05-05'
|
|
min_height_in: 48
|
|
capacity_per_hour: 1200
|
|
ride_duration_seconds: 150
|
|
average_rating: 4.8
|
|
manufacturer:
|
|
id: 1
|
|
name: Rocky Mountain Construction
|
|
slug: rocky-mountain-construction
|
|
summary: Example ride detail response
|
|
description: A complete ride detail response
|
|
description: ''
|
|
patch:
|
|
operationId: v1_rides_publish_partial_update
|
|
summary: Retrieve, update or delete a ride
|
|
parameters:
|
|
- in: path
|
|
name: id
|
|
schema:
|
|
type: integer
|
|
required: true
|
|
tags:
|
|
- Rides
|
|
security:
|
|
- cookieAuth: []
|
|
- tokenAuth: []
|
|
- {}
|
|
responses:
|
|
'200':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/RideDetailOutput'
|
|
examples:
|
|
RideDetailExample:
|
|
value:
|
|
id: 1
|
|
name: Steel Vengeance
|
|
slug: steel-vengeance
|
|
category: ROLLER_COASTER
|
|
status: OPERATING
|
|
description: Hybrid roller coaster featuring RMC I-Box track
|
|
park:
|
|
id: 1
|
|
name: Cedar Point
|
|
slug: cedar-point
|
|
opening_date: '2018-05-05'
|
|
min_height_in: 48
|
|
capacity_per_hour: 1200
|
|
ride_duration_seconds: 150
|
|
average_rating: 4.8
|
|
manufacturer:
|
|
id: 1
|
|
name: Rocky Mountain Construction
|
|
slug: rocky-mountain-construction
|
|
summary: Example ride detail response
|
|
description: A complete ride detail response
|
|
description: ''
|
|
delete:
|
|
operationId: v1_rides_publish_destroy
|
|
summary: Retrieve, update or delete a ride
|
|
parameters:
|
|
- in: path
|
|
name: id
|
|
schema:
|
|
type: integer
|
|
required: true
|
|
tags:
|
|
- Rides
|
|
security:
|
|
- cookieAuth: []
|
|
- tokenAuth: []
|
|
- {}
|
|
responses:
|
|
'200':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/RideDetailOutput'
|
|
examples:
|
|
RideDetailExample:
|
|
value:
|
|
id: 1
|
|
name: Steel Vengeance
|
|
slug: steel-vengeance
|
|
category: ROLLER_COASTER
|
|
status: OPERATING
|
|
description: Hybrid roller coaster featuring RMC I-Box track
|
|
park:
|
|
id: 1
|
|
name: Cedar Point
|
|
slug: cedar-point
|
|
opening_date: '2018-05-05'
|
|
min_height_in: 48
|
|
capacity_per_hour: 1200
|
|
ride_duration_seconds: 150
|
|
average_rating: 4.8
|
|
manufacturer:
|
|
id: 1
|
|
name: Rocky Mountain Construction
|
|
slug: rocky-mountain-construction
|
|
summary: Example ride detail response
|
|
description: A complete ride detail response
|
|
description: ''
|
|
/api/v1/rides/{id}/unpublish/:
|
|
get:
|
|
operationId: v1_rides_unpublish_retrieve
|
|
summary: Retrieve, update or delete a ride
|
|
parameters:
|
|
- in: path
|
|
name: id
|
|
schema:
|
|
type: integer
|
|
required: true
|
|
tags:
|
|
- Rides
|
|
security:
|
|
- cookieAuth: []
|
|
- tokenAuth: []
|
|
- {}
|
|
responses:
|
|
'200':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/RideDetailOutput'
|
|
examples:
|
|
RideDetailExample:
|
|
value:
|
|
id: 1
|
|
name: Steel Vengeance
|
|
slug: steel-vengeance
|
|
category: ROLLER_COASTER
|
|
status: OPERATING
|
|
description: Hybrid roller coaster featuring RMC I-Box track
|
|
park:
|
|
id: 1
|
|
name: Cedar Point
|
|
slug: cedar-point
|
|
opening_date: '2018-05-05'
|
|
min_height_in: 48
|
|
capacity_per_hour: 1200
|
|
ride_duration_seconds: 150
|
|
average_rating: 4.8
|
|
manufacturer:
|
|
id: 1
|
|
name: Rocky Mountain Construction
|
|
slug: rocky-mountain-construction
|
|
summary: Example ride detail response
|
|
description: A complete ride detail response
|
|
description: ''
|
|
put:
|
|
operationId: v1_rides_unpublish_update
|
|
summary: Retrieve, update or delete a ride
|
|
parameters:
|
|
- in: path
|
|
name: id
|
|
schema:
|
|
type: integer
|
|
required: true
|
|
tags:
|
|
- Rides
|
|
security:
|
|
- cookieAuth: []
|
|
- tokenAuth: []
|
|
- {}
|
|
responses:
|
|
'200':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/RideDetailOutput'
|
|
examples:
|
|
RideDetailExample:
|
|
value:
|
|
id: 1
|
|
name: Steel Vengeance
|
|
slug: steel-vengeance
|
|
category: ROLLER_COASTER
|
|
status: OPERATING
|
|
description: Hybrid roller coaster featuring RMC I-Box track
|
|
park:
|
|
id: 1
|
|
name: Cedar Point
|
|
slug: cedar-point
|
|
opening_date: '2018-05-05'
|
|
min_height_in: 48
|
|
capacity_per_hour: 1200
|
|
ride_duration_seconds: 150
|
|
average_rating: 4.8
|
|
manufacturer:
|
|
id: 1
|
|
name: Rocky Mountain Construction
|
|
slug: rocky-mountain-construction
|
|
summary: Example ride detail response
|
|
description: A complete ride detail response
|
|
description: ''
|
|
patch:
|
|
operationId: v1_rides_unpublish_partial_update
|
|
summary: Retrieve, update or delete a ride
|
|
parameters:
|
|
- in: path
|
|
name: id
|
|
schema:
|
|
type: integer
|
|
required: true
|
|
tags:
|
|
- Rides
|
|
security:
|
|
- cookieAuth: []
|
|
- tokenAuth: []
|
|
- {}
|
|
responses:
|
|
'200':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/RideDetailOutput'
|
|
examples:
|
|
RideDetailExample:
|
|
value:
|
|
id: 1
|
|
name: Steel Vengeance
|
|
slug: steel-vengeance
|
|
category: ROLLER_COASTER
|
|
status: OPERATING
|
|
description: Hybrid roller coaster featuring RMC I-Box track
|
|
park:
|
|
id: 1
|
|
name: Cedar Point
|
|
slug: cedar-point
|
|
opening_date: '2018-05-05'
|
|
min_height_in: 48
|
|
capacity_per_hour: 1200
|
|
ride_duration_seconds: 150
|
|
average_rating: 4.8
|
|
manufacturer:
|
|
id: 1
|
|
name: Rocky Mountain Construction
|
|
slug: rocky-mountain-construction
|
|
summary: Example ride detail response
|
|
description: A complete ride detail response
|
|
description: ''
|
|
delete:
|
|
operationId: v1_rides_unpublish_destroy
|
|
summary: Retrieve, update or delete a ride
|
|
parameters:
|
|
- in: path
|
|
name: id
|
|
schema:
|
|
type: integer
|
|
required: true
|
|
tags:
|
|
- Rides
|
|
security:
|
|
- cookieAuth: []
|
|
- tokenAuth: []
|
|
- {}
|
|
responses:
|
|
'200':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/RideDetailOutput'
|
|
examples:
|
|
RideDetailExample:
|
|
value:
|
|
id: 1
|
|
name: Steel Vengeance
|
|
slug: steel-vengeance
|
|
category: ROLLER_COASTER
|
|
status: OPERATING
|
|
description: Hybrid roller coaster featuring RMC I-Box track
|
|
park:
|
|
id: 1
|
|
name: Cedar Point
|
|
slug: cedar-point
|
|
opening_date: '2018-05-05'
|
|
min_height_in: 48
|
|
capacity_per_hour: 1200
|
|
ride_duration_seconds: 150
|
|
average_rating: 4.8
|
|
manufacturer:
|
|
id: 1
|
|
name: Rocky Mountain Construction
|
|
slug: rocky-mountain-construction
|
|
summary: Example ride detail response
|
|
description: A complete ride detail response
|
|
description: ''
|
|
/api/v1/rides/{id}/update/:
|
|
get:
|
|
operationId: v1_rides_update_retrieve
|
|
summary: Retrieve, update or delete a ride
|
|
parameters:
|
|
- in: path
|
|
name: id
|
|
schema:
|
|
type: integer
|
|
required: true
|
|
tags:
|
|
- Rides
|
|
security:
|
|
- cookieAuth: []
|
|
- tokenAuth: []
|
|
- {}
|
|
responses:
|
|
'200':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/RideDetailOutput'
|
|
examples:
|
|
RideDetailExample:
|
|
value:
|
|
id: 1
|
|
name: Steel Vengeance
|
|
slug: steel-vengeance
|
|
category: ROLLER_COASTER
|
|
status: OPERATING
|
|
description: Hybrid roller coaster featuring RMC I-Box track
|
|
park:
|
|
id: 1
|
|
name: Cedar Point
|
|
slug: cedar-point
|
|
opening_date: '2018-05-05'
|
|
min_height_in: 48
|
|
capacity_per_hour: 1200
|
|
ride_duration_seconds: 150
|
|
average_rating: 4.8
|
|
manufacturer:
|
|
id: 1
|
|
name: Rocky Mountain Construction
|
|
slug: rocky-mountain-construction
|
|
summary: Example ride detail response
|
|
description: A complete ride detail response
|
|
description: ''
|
|
put:
|
|
operationId: v1_rides_update_update
|
|
summary: Retrieve, update or delete a ride
|
|
parameters:
|
|
- in: path
|
|
name: id
|
|
schema:
|
|
type: integer
|
|
required: true
|
|
tags:
|
|
- Rides
|
|
security:
|
|
- cookieAuth: []
|
|
- tokenAuth: []
|
|
- {}
|
|
responses:
|
|
'200':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/RideDetailOutput'
|
|
examples:
|
|
RideDetailExample:
|
|
value:
|
|
id: 1
|
|
name: Steel Vengeance
|
|
slug: steel-vengeance
|
|
category: ROLLER_COASTER
|
|
status: OPERATING
|
|
description: Hybrid roller coaster featuring RMC I-Box track
|
|
park:
|
|
id: 1
|
|
name: Cedar Point
|
|
slug: cedar-point
|
|
opening_date: '2018-05-05'
|
|
min_height_in: 48
|
|
capacity_per_hour: 1200
|
|
ride_duration_seconds: 150
|
|
average_rating: 4.8
|
|
manufacturer:
|
|
id: 1
|
|
name: Rocky Mountain Construction
|
|
slug: rocky-mountain-construction
|
|
summary: Example ride detail response
|
|
description: A complete ride detail response
|
|
description: ''
|
|
patch:
|
|
operationId: v1_rides_update_partial_update
|
|
summary: Retrieve, update or delete a ride
|
|
parameters:
|
|
- in: path
|
|
name: id
|
|
schema:
|
|
type: integer
|
|
required: true
|
|
tags:
|
|
- Rides
|
|
security:
|
|
- cookieAuth: []
|
|
- tokenAuth: []
|
|
- {}
|
|
responses:
|
|
'200':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/RideDetailOutput'
|
|
examples:
|
|
RideDetailExample:
|
|
value:
|
|
id: 1
|
|
name: Steel Vengeance
|
|
slug: steel-vengeance
|
|
category: ROLLER_COASTER
|
|
status: OPERATING
|
|
description: Hybrid roller coaster featuring RMC I-Box track
|
|
park:
|
|
id: 1
|
|
name: Cedar Point
|
|
slug: cedar-point
|
|
opening_date: '2018-05-05'
|
|
min_height_in: 48
|
|
capacity_per_hour: 1200
|
|
ride_duration_seconds: 150
|
|
average_rating: 4.8
|
|
manufacturer:
|
|
id: 1
|
|
name: Rocky Mountain Construction
|
|
slug: rocky-mountain-construction
|
|
summary: Example ride detail response
|
|
description: A complete ride detail response
|
|
description: ''
|
|
delete:
|
|
operationId: v1_rides_update_destroy
|
|
summary: Retrieve, update or delete a ride
|
|
parameters:
|
|
- in: path
|
|
name: id
|
|
schema:
|
|
type: integer
|
|
required: true
|
|
tags:
|
|
- Rides
|
|
security:
|
|
- cookieAuth: []
|
|
- tokenAuth: []
|
|
- {}
|
|
responses:
|
|
'200':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/RideDetailOutput'
|
|
examples:
|
|
RideDetailExample:
|
|
value:
|
|
id: 1
|
|
name: Steel Vengeance
|
|
slug: steel-vengeance
|
|
category: ROLLER_COASTER
|
|
status: OPERATING
|
|
description: Hybrid roller coaster featuring RMC I-Box track
|
|
park:
|
|
id: 1
|
|
name: Cedar Point
|
|
slug: cedar-point
|
|
opening_date: '2018-05-05'
|
|
min_height_in: 48
|
|
capacity_per_hour: 1200
|
|
ride_duration_seconds: 150
|
|
average_rating: 4.8
|
|
manufacturer:
|
|
id: 1
|
|
name: Rocky Mountain Construction
|
|
slug: rocky-mountain-construction
|
|
summary: Example ride detail response
|
|
description: A complete ride detail response
|
|
description: ''
|
|
/api/v1/rides/bulk-create/:
|
|
get:
|
|
operationId: v1_rides_bulk_create_list
|
|
description: List rides with basic filtering and pagination.
|
|
summary: List rides or create a new ride
|
|
tags:
|
|
- Rides
|
|
security:
|
|
- cookieAuth: []
|
|
- tokenAuth: []
|
|
- {}
|
|
responses:
|
|
'200':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/RideListOutput'
|
|
examples:
|
|
RideListExample:
|
|
value:
|
|
- id: 1
|
|
name: Steel Vengeance
|
|
slug: steel-vengeance
|
|
category: ROLLER_COASTER
|
|
status: OPERATING
|
|
description: Hybrid roller coaster
|
|
park:
|
|
id: 1
|
|
name: Cedar Point
|
|
slug: cedar-point
|
|
average_rating: 4.8
|
|
capacity_per_hour: 1200
|
|
opening_date: '2018-05-05'
|
|
summary: Example ride list response
|
|
description: A typical ride in the list view
|
|
description: ''
|
|
'201':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/RideDetailOutput'
|
|
examples:
|
|
RideDetailExample:
|
|
value:
|
|
id: 1
|
|
name: Steel Vengeance
|
|
slug: steel-vengeance
|
|
category: ROLLER_COASTER
|
|
status: OPERATING
|
|
description: Hybrid roller coaster featuring RMC I-Box track
|
|
park:
|
|
id: 1
|
|
name: Cedar Point
|
|
slug: cedar-point
|
|
opening_date: '2018-05-05'
|
|
min_height_in: 48
|
|
capacity_per_hour: 1200
|
|
ride_duration_seconds: 150
|
|
average_rating: 4.8
|
|
manufacturer:
|
|
id: 1
|
|
name: Rocky Mountain Construction
|
|
slug: rocky-mountain-construction
|
|
summary: Example ride detail response
|
|
description: A complete ride detail response
|
|
description: ''
|
|
post:
|
|
operationId: v1_rides_bulk_create_create
|
|
description: Create a new ride.
|
|
summary: List rides or create a new ride
|
|
tags:
|
|
- Rides
|
|
security:
|
|
- cookieAuth: []
|
|
- tokenAuth: []
|
|
- {}
|
|
responses:
|
|
'200':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/RideListOutput'
|
|
examples:
|
|
RideListExample:
|
|
value:
|
|
- id: 1
|
|
name: Steel Vengeance
|
|
slug: steel-vengeance
|
|
category: ROLLER_COASTER
|
|
status: OPERATING
|
|
description: Hybrid roller coaster
|
|
park:
|
|
id: 1
|
|
name: Cedar Point
|
|
slug: cedar-point
|
|
average_rating: 4.8
|
|
capacity_per_hour: 1200
|
|
opening_date: '2018-05-05'
|
|
summary: Example ride list response
|
|
description: A typical ride in the list view
|
|
description: ''
|
|
'201':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/RideDetailOutput'
|
|
examples:
|
|
RideDetailExample:
|
|
value:
|
|
id: 1
|
|
name: Steel Vengeance
|
|
slug: steel-vengeance
|
|
category: ROLLER_COASTER
|
|
status: OPERATING
|
|
description: Hybrid roller coaster featuring RMC I-Box track
|
|
park:
|
|
id: 1
|
|
name: Cedar Point
|
|
slug: cedar-point
|
|
opening_date: '2018-05-05'
|
|
min_height_in: 48
|
|
capacity_per_hour: 1200
|
|
ride_duration_seconds: 150
|
|
average_rating: 4.8
|
|
manufacturer:
|
|
id: 1
|
|
name: Rocky Mountain Construction
|
|
slug: rocky-mountain-construction
|
|
summary: Example ride detail response
|
|
description: A complete ride detail response
|
|
description: ''
|
|
/api/v1/rides/bulk-delete/:
|
|
get:
|
|
operationId: v1_rides_bulk_delete_list
|
|
description: List rides with basic filtering and pagination.
|
|
summary: List rides or create a new ride
|
|
tags:
|
|
- Rides
|
|
security:
|
|
- cookieAuth: []
|
|
- tokenAuth: []
|
|
- {}
|
|
responses:
|
|
'200':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/RideListOutput'
|
|
examples:
|
|
RideListExample:
|
|
value:
|
|
- id: 1
|
|
name: Steel Vengeance
|
|
slug: steel-vengeance
|
|
category: ROLLER_COASTER
|
|
status: OPERATING
|
|
description: Hybrid roller coaster
|
|
park:
|
|
id: 1
|
|
name: Cedar Point
|
|
slug: cedar-point
|
|
average_rating: 4.8
|
|
capacity_per_hour: 1200
|
|
opening_date: '2018-05-05'
|
|
summary: Example ride list response
|
|
description: A typical ride in the list view
|
|
description: ''
|
|
'201':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/RideDetailOutput'
|
|
examples:
|
|
RideDetailExample:
|
|
value:
|
|
id: 1
|
|
name: Steel Vengeance
|
|
slug: steel-vengeance
|
|
category: ROLLER_COASTER
|
|
status: OPERATING
|
|
description: Hybrid roller coaster featuring RMC I-Box track
|
|
park:
|
|
id: 1
|
|
name: Cedar Point
|
|
slug: cedar-point
|
|
opening_date: '2018-05-05'
|
|
min_height_in: 48
|
|
capacity_per_hour: 1200
|
|
ride_duration_seconds: 150
|
|
average_rating: 4.8
|
|
manufacturer:
|
|
id: 1
|
|
name: Rocky Mountain Construction
|
|
slug: rocky-mountain-construction
|
|
summary: Example ride detail response
|
|
description: A complete ride detail response
|
|
description: ''
|
|
post:
|
|
operationId: v1_rides_bulk_delete_create
|
|
description: Create a new ride.
|
|
summary: List rides or create a new ride
|
|
tags:
|
|
- Rides
|
|
security:
|
|
- cookieAuth: []
|
|
- tokenAuth: []
|
|
- {}
|
|
responses:
|
|
'200':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/RideListOutput'
|
|
examples:
|
|
RideListExample:
|
|
value:
|
|
- id: 1
|
|
name: Steel Vengeance
|
|
slug: steel-vengeance
|
|
category: ROLLER_COASTER
|
|
status: OPERATING
|
|
description: Hybrid roller coaster
|
|
park:
|
|
id: 1
|
|
name: Cedar Point
|
|
slug: cedar-point
|
|
average_rating: 4.8
|
|
capacity_per_hour: 1200
|
|
opening_date: '2018-05-05'
|
|
summary: Example ride list response
|
|
description: A typical ride in the list view
|
|
description: ''
|
|
'201':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/RideDetailOutput'
|
|
examples:
|
|
RideDetailExample:
|
|
value:
|
|
id: 1
|
|
name: Steel Vengeance
|
|
slug: steel-vengeance
|
|
category: ROLLER_COASTER
|
|
status: OPERATING
|
|
description: Hybrid roller coaster featuring RMC I-Box track
|
|
park:
|
|
id: 1
|
|
name: Cedar Point
|
|
slug: cedar-point
|
|
opening_date: '2018-05-05'
|
|
min_height_in: 48
|
|
capacity_per_hour: 1200
|
|
ride_duration_seconds: 150
|
|
average_rating: 4.8
|
|
manufacturer:
|
|
id: 1
|
|
name: Rocky Mountain Construction
|
|
slug: rocky-mountain-construction
|
|
summary: Example ride detail response
|
|
description: A complete ride detail response
|
|
description: ''
|
|
/api/v1/rides/bulk-update/:
|
|
get:
|
|
operationId: v1_rides_bulk_update_list
|
|
description: List rides with basic filtering and pagination.
|
|
summary: List rides or create a new ride
|
|
tags:
|
|
- Rides
|
|
security:
|
|
- cookieAuth: []
|
|
- tokenAuth: []
|
|
- {}
|
|
responses:
|
|
'200':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/RideListOutput'
|
|
examples:
|
|
RideListExample:
|
|
value:
|
|
- id: 1
|
|
name: Steel Vengeance
|
|
slug: steel-vengeance
|
|
category: ROLLER_COASTER
|
|
status: OPERATING
|
|
description: Hybrid roller coaster
|
|
park:
|
|
id: 1
|
|
name: Cedar Point
|
|
slug: cedar-point
|
|
average_rating: 4.8
|
|
capacity_per_hour: 1200
|
|
opening_date: '2018-05-05'
|
|
summary: Example ride list response
|
|
description: A typical ride in the list view
|
|
description: ''
|
|
'201':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/RideDetailOutput'
|
|
examples:
|
|
RideDetailExample:
|
|
value:
|
|
id: 1
|
|
name: Steel Vengeance
|
|
slug: steel-vengeance
|
|
category: ROLLER_COASTER
|
|
status: OPERATING
|
|
description: Hybrid roller coaster featuring RMC I-Box track
|
|
park:
|
|
id: 1
|
|
name: Cedar Point
|
|
slug: cedar-point
|
|
opening_date: '2018-05-05'
|
|
min_height_in: 48
|
|
capacity_per_hour: 1200
|
|
ride_duration_seconds: 150
|
|
average_rating: 4.8
|
|
manufacturer:
|
|
id: 1
|
|
name: Rocky Mountain Construction
|
|
slug: rocky-mountain-construction
|
|
summary: Example ride detail response
|
|
description: A complete ride detail response
|
|
description: ''
|
|
post:
|
|
operationId: v1_rides_bulk_update_create
|
|
description: Create a new ride.
|
|
summary: List rides or create a new ride
|
|
tags:
|
|
- Rides
|
|
security:
|
|
- cookieAuth: []
|
|
- tokenAuth: []
|
|
- {}
|
|
responses:
|
|
'200':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/RideListOutput'
|
|
examples:
|
|
RideListExample:
|
|
value:
|
|
- id: 1
|
|
name: Steel Vengeance
|
|
slug: steel-vengeance
|
|
category: ROLLER_COASTER
|
|
status: OPERATING
|
|
description: Hybrid roller coaster
|
|
park:
|
|
id: 1
|
|
name: Cedar Point
|
|
slug: cedar-point
|
|
average_rating: 4.8
|
|
capacity_per_hour: 1200
|
|
opening_date: '2018-05-05'
|
|
summary: Example ride list response
|
|
description: A typical ride in the list view
|
|
description: ''
|
|
'201':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/RideDetailOutput'
|
|
examples:
|
|
RideDetailExample:
|
|
value:
|
|
id: 1
|
|
name: Steel Vengeance
|
|
slug: steel-vengeance
|
|
category: ROLLER_COASTER
|
|
status: OPERATING
|
|
description: Hybrid roller coaster featuring RMC I-Box track
|
|
park:
|
|
id: 1
|
|
name: Cedar Point
|
|
slug: cedar-point
|
|
opening_date: '2018-05-05'
|
|
min_height_in: 48
|
|
capacity_per_hour: 1200
|
|
ride_duration_seconds: 150
|
|
average_rating: 4.8
|
|
manufacturer:
|
|
id: 1
|
|
name: Rocky Mountain Construction
|
|
slug: rocky-mountain-construction
|
|
summary: Example ride detail response
|
|
description: A complete ride detail response
|
|
description: ''
|
|
/api/v1/rides/create/:
|
|
get:
|
|
operationId: v1_rides_create_list
|
|
description: List rides with basic filtering and pagination.
|
|
summary: List rides or create a new ride
|
|
tags:
|
|
- Rides
|
|
security:
|
|
- cookieAuth: []
|
|
- tokenAuth: []
|
|
- {}
|
|
responses:
|
|
'200':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/RideListOutput'
|
|
examples:
|
|
RideListExample:
|
|
value:
|
|
- id: 1
|
|
name: Steel Vengeance
|
|
slug: steel-vengeance
|
|
category: ROLLER_COASTER
|
|
status: OPERATING
|
|
description: Hybrid roller coaster
|
|
park:
|
|
id: 1
|
|
name: Cedar Point
|
|
slug: cedar-point
|
|
average_rating: 4.8
|
|
capacity_per_hour: 1200
|
|
opening_date: '2018-05-05'
|
|
summary: Example ride list response
|
|
description: A typical ride in the list view
|
|
description: ''
|
|
'201':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/RideDetailOutput'
|
|
examples:
|
|
RideDetailExample:
|
|
value:
|
|
id: 1
|
|
name: Steel Vengeance
|
|
slug: steel-vengeance
|
|
category: ROLLER_COASTER
|
|
status: OPERATING
|
|
description: Hybrid roller coaster featuring RMC I-Box track
|
|
park:
|
|
id: 1
|
|
name: Cedar Point
|
|
slug: cedar-point
|
|
opening_date: '2018-05-05'
|
|
min_height_in: 48
|
|
capacity_per_hour: 1200
|
|
ride_duration_seconds: 150
|
|
average_rating: 4.8
|
|
manufacturer:
|
|
id: 1
|
|
name: Rocky Mountain Construction
|
|
slug: rocky-mountain-construction
|
|
summary: Example ride detail response
|
|
description: A complete ride detail response
|
|
description: ''
|
|
post:
|
|
operationId: v1_rides_create_create
|
|
description: Create a new ride.
|
|
summary: List rides or create a new ride
|
|
tags:
|
|
- Rides
|
|
security:
|
|
- cookieAuth: []
|
|
- tokenAuth: []
|
|
- {}
|
|
responses:
|
|
'200':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/RideListOutput'
|
|
examples:
|
|
RideListExample:
|
|
value:
|
|
- id: 1
|
|
name: Steel Vengeance
|
|
slug: steel-vengeance
|
|
category: ROLLER_COASTER
|
|
status: OPERATING
|
|
description: Hybrid roller coaster
|
|
park:
|
|
id: 1
|
|
name: Cedar Point
|
|
slug: cedar-point
|
|
average_rating: 4.8
|
|
capacity_per_hour: 1200
|
|
opening_date: '2018-05-05'
|
|
summary: Example ride list response
|
|
description: A typical ride in the list view
|
|
description: ''
|
|
'201':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/RideDetailOutput'
|
|
examples:
|
|
RideDetailExample:
|
|
value:
|
|
id: 1
|
|
name: Steel Vengeance
|
|
slug: steel-vengeance
|
|
category: ROLLER_COASTER
|
|
status: OPERATING
|
|
description: Hybrid roller coaster featuring RMC I-Box track
|
|
park:
|
|
id: 1
|
|
name: Cedar Point
|
|
slug: cedar-point
|
|
opening_date: '2018-05-05'
|
|
min_height_in: 48
|
|
capacity_per_hour: 1200
|
|
ride_duration_seconds: 150
|
|
average_rating: 4.8
|
|
manufacturer:
|
|
id: 1
|
|
name: Rocky Mountain Construction
|
|
slug: rocky-mountain-construction
|
|
summary: Example ride detail response
|
|
description: A complete ride detail response
|
|
description: ''
|
|
/api/v1/rides/export/:
|
|
get:
|
|
operationId: v1_rides_export_list
|
|
description: List rides with basic filtering and pagination.
|
|
summary: List rides or create a new ride
|
|
tags:
|
|
- Rides
|
|
security:
|
|
- cookieAuth: []
|
|
- tokenAuth: []
|
|
- {}
|
|
responses:
|
|
'200':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/RideListOutput'
|
|
examples:
|
|
RideListExample:
|
|
value:
|
|
- id: 1
|
|
name: Steel Vengeance
|
|
slug: steel-vengeance
|
|
category: ROLLER_COASTER
|
|
status: OPERATING
|
|
description: Hybrid roller coaster
|
|
park:
|
|
id: 1
|
|
name: Cedar Point
|
|
slug: cedar-point
|
|
average_rating: 4.8
|
|
capacity_per_hour: 1200
|
|
opening_date: '2018-05-05'
|
|
summary: Example ride list response
|
|
description: A typical ride in the list view
|
|
description: ''
|
|
'201':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/RideDetailOutput'
|
|
examples:
|
|
RideDetailExample:
|
|
value:
|
|
id: 1
|
|
name: Steel Vengeance
|
|
slug: steel-vengeance
|
|
category: ROLLER_COASTER
|
|
status: OPERATING
|
|
description: Hybrid roller coaster featuring RMC I-Box track
|
|
park:
|
|
id: 1
|
|
name: Cedar Point
|
|
slug: cedar-point
|
|
opening_date: '2018-05-05'
|
|
min_height_in: 48
|
|
capacity_per_hour: 1200
|
|
ride_duration_seconds: 150
|
|
average_rating: 4.8
|
|
manufacturer:
|
|
id: 1
|
|
name: Rocky Mountain Construction
|
|
slug: rocky-mountain-construction
|
|
summary: Example ride detail response
|
|
description: A complete ride detail response
|
|
description: ''
|
|
post:
|
|
operationId: v1_rides_export_create
|
|
description: Create a new ride.
|
|
summary: List rides or create a new ride
|
|
tags:
|
|
- Rides
|
|
security:
|
|
- cookieAuth: []
|
|
- tokenAuth: []
|
|
- {}
|
|
responses:
|
|
'200':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/RideListOutput'
|
|
examples:
|
|
RideListExample:
|
|
value:
|
|
- id: 1
|
|
name: Steel Vengeance
|
|
slug: steel-vengeance
|
|
category: ROLLER_COASTER
|
|
status: OPERATING
|
|
description: Hybrid roller coaster
|
|
park:
|
|
id: 1
|
|
name: Cedar Point
|
|
slug: cedar-point
|
|
average_rating: 4.8
|
|
capacity_per_hour: 1200
|
|
opening_date: '2018-05-05'
|
|
summary: Example ride list response
|
|
description: A typical ride in the list view
|
|
description: ''
|
|
'201':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/RideDetailOutput'
|
|
examples:
|
|
RideDetailExample:
|
|
value:
|
|
id: 1
|
|
name: Steel Vengeance
|
|
slug: steel-vengeance
|
|
category: ROLLER_COASTER
|
|
status: OPERATING
|
|
description: Hybrid roller coaster featuring RMC I-Box track
|
|
park:
|
|
id: 1
|
|
name: Cedar Point
|
|
slug: cedar-point
|
|
opening_date: '2018-05-05'
|
|
min_height_in: 48
|
|
capacity_per_hour: 1200
|
|
ride_duration_seconds: 150
|
|
average_rating: 4.8
|
|
manufacturer:
|
|
id: 1
|
|
name: Rocky Mountain Construction
|
|
slug: rocky-mountain-construction
|
|
summary: Example ride detail response
|
|
description: A complete ride detail response
|
|
description: ''
|
|
/api/v1/rides/featured/:
|
|
get:
|
|
operationId: v1_rides_featured_list
|
|
description: List rides with basic filtering and pagination.
|
|
summary: List rides or create a new ride
|
|
tags:
|
|
- Rides
|
|
security:
|
|
- cookieAuth: []
|
|
- tokenAuth: []
|
|
- {}
|
|
responses:
|
|
'200':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/RideListOutput'
|
|
examples:
|
|
RideListExample:
|
|
value:
|
|
- id: 1
|
|
name: Steel Vengeance
|
|
slug: steel-vengeance
|
|
category: ROLLER_COASTER
|
|
status: OPERATING
|
|
description: Hybrid roller coaster
|
|
park:
|
|
id: 1
|
|
name: Cedar Point
|
|
slug: cedar-point
|
|
average_rating: 4.8
|
|
capacity_per_hour: 1200
|
|
opening_date: '2018-05-05'
|
|
summary: Example ride list response
|
|
description: A typical ride in the list view
|
|
description: ''
|
|
'201':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/RideDetailOutput'
|
|
examples:
|
|
RideDetailExample:
|
|
value:
|
|
id: 1
|
|
name: Steel Vengeance
|
|
slug: steel-vengeance
|
|
category: ROLLER_COASTER
|
|
status: OPERATING
|
|
description: Hybrid roller coaster featuring RMC I-Box track
|
|
park:
|
|
id: 1
|
|
name: Cedar Point
|
|
slug: cedar-point
|
|
opening_date: '2018-05-05'
|
|
min_height_in: 48
|
|
capacity_per_hour: 1200
|
|
ride_duration_seconds: 150
|
|
average_rating: 4.8
|
|
manufacturer:
|
|
id: 1
|
|
name: Rocky Mountain Construction
|
|
slug: rocky-mountain-construction
|
|
summary: Example ride detail response
|
|
description: A complete ride detail response
|
|
description: ''
|
|
post:
|
|
operationId: v1_rides_featured_create
|
|
description: Create a new ride.
|
|
summary: List rides or create a new ride
|
|
tags:
|
|
- Rides
|
|
security:
|
|
- cookieAuth: []
|
|
- tokenAuth: []
|
|
- {}
|
|
responses:
|
|
'200':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/RideListOutput'
|
|
examples:
|
|
RideListExample:
|
|
value:
|
|
- id: 1
|
|
name: Steel Vengeance
|
|
slug: steel-vengeance
|
|
category: ROLLER_COASTER
|
|
status: OPERATING
|
|
description: Hybrid roller coaster
|
|
park:
|
|
id: 1
|
|
name: Cedar Point
|
|
slug: cedar-point
|
|
average_rating: 4.8
|
|
capacity_per_hour: 1200
|
|
opening_date: '2018-05-05'
|
|
summary: Example ride list response
|
|
description: A typical ride in the list view
|
|
description: ''
|
|
'201':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/RideDetailOutput'
|
|
examples:
|
|
RideDetailExample:
|
|
value:
|
|
id: 1
|
|
name: Steel Vengeance
|
|
slug: steel-vengeance
|
|
category: ROLLER_COASTER
|
|
status: OPERATING
|
|
description: Hybrid roller coaster featuring RMC I-Box track
|
|
park:
|
|
id: 1
|
|
name: Cedar Point
|
|
slug: cedar-point
|
|
opening_date: '2018-05-05'
|
|
min_height_in: 48
|
|
capacity_per_hour: 1200
|
|
ride_duration_seconds: 150
|
|
average_rating: 4.8
|
|
manufacturer:
|
|
id: 1
|
|
name: Rocky Mountain Construction
|
|
slug: rocky-mountain-construction
|
|
summary: Example ride detail response
|
|
description: A complete ride detail response
|
|
description: ''
|
|
/api/v1/rides/filter-options/:
|
|
get:
|
|
operationId: v1_rides_filter_options_retrieve
|
|
description: Return static/dynamic filter options used by the frontend.
|
|
summary: Get filter options for rides
|
|
tags:
|
|
- Rides
|
|
security:
|
|
- cookieAuth: []
|
|
- tokenAuth: []
|
|
- {}
|
|
responses:
|
|
'200':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
additionalProperties: {}
|
|
description: ''
|
|
/api/v1/rides/import/:
|
|
get:
|
|
operationId: v1_rides_import_list
|
|
description: List rides with basic filtering and pagination.
|
|
summary: List rides or create a new ride
|
|
tags:
|
|
- Rides
|
|
security:
|
|
- cookieAuth: []
|
|
- tokenAuth: []
|
|
- {}
|
|
responses:
|
|
'200':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/RideListOutput'
|
|
examples:
|
|
RideListExample:
|
|
value:
|
|
- id: 1
|
|
name: Steel Vengeance
|
|
slug: steel-vengeance
|
|
category: ROLLER_COASTER
|
|
status: OPERATING
|
|
description: Hybrid roller coaster
|
|
park:
|
|
id: 1
|
|
name: Cedar Point
|
|
slug: cedar-point
|
|
average_rating: 4.8
|
|
capacity_per_hour: 1200
|
|
opening_date: '2018-05-05'
|
|
summary: Example ride list response
|
|
description: A typical ride in the list view
|
|
description: ''
|
|
'201':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/RideDetailOutput'
|
|
examples:
|
|
RideDetailExample:
|
|
value:
|
|
id: 1
|
|
name: Steel Vengeance
|
|
slug: steel-vengeance
|
|
category: ROLLER_COASTER
|
|
status: OPERATING
|
|
description: Hybrid roller coaster featuring RMC I-Box track
|
|
park:
|
|
id: 1
|
|
name: Cedar Point
|
|
slug: cedar-point
|
|
opening_date: '2018-05-05'
|
|
min_height_in: 48
|
|
capacity_per_hour: 1200
|
|
ride_duration_seconds: 150
|
|
average_rating: 4.8
|
|
manufacturer:
|
|
id: 1
|
|
name: Rocky Mountain Construction
|
|
slug: rocky-mountain-construction
|
|
summary: Example ride detail response
|
|
description: A complete ride detail response
|
|
description: ''
|
|
post:
|
|
operationId: v1_rides_import_create
|
|
description: Create a new ride.
|
|
summary: List rides or create a new ride
|
|
tags:
|
|
- Rides
|
|
security:
|
|
- cookieAuth: []
|
|
- tokenAuth: []
|
|
- {}
|
|
responses:
|
|
'200':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/RideListOutput'
|
|
examples:
|
|
RideListExample:
|
|
value:
|
|
- id: 1
|
|
name: Steel Vengeance
|
|
slug: steel-vengeance
|
|
category: ROLLER_COASTER
|
|
status: OPERATING
|
|
description: Hybrid roller coaster
|
|
park:
|
|
id: 1
|
|
name: Cedar Point
|
|
slug: cedar-point
|
|
average_rating: 4.8
|
|
capacity_per_hour: 1200
|
|
opening_date: '2018-05-05'
|
|
summary: Example ride list response
|
|
description: A typical ride in the list view
|
|
description: ''
|
|
'201':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/RideDetailOutput'
|
|
examples:
|
|
RideDetailExample:
|
|
value:
|
|
id: 1
|
|
name: Steel Vengeance
|
|
slug: steel-vengeance
|
|
category: ROLLER_COASTER
|
|
status: OPERATING
|
|
description: Hybrid roller coaster featuring RMC I-Box track
|
|
park:
|
|
id: 1
|
|
name: Cedar Point
|
|
slug: cedar-point
|
|
opening_date: '2018-05-05'
|
|
min_height_in: 48
|
|
capacity_per_hour: 1200
|
|
ride_duration_seconds: 150
|
|
average_rating: 4.8
|
|
manufacturer:
|
|
id: 1
|
|
name: Rocky Mountain Construction
|
|
slug: rocky-mountain-construction
|
|
summary: Example ride detail response
|
|
description: A complete ride detail response
|
|
description: ''
|
|
/api/v1/rides/list/:
|
|
get:
|
|
operationId: v1_rides_list_list
|
|
description: List rides with basic filtering and pagination.
|
|
summary: List rides or create a new ride
|
|
tags:
|
|
- Rides
|
|
security:
|
|
- cookieAuth: []
|
|
- tokenAuth: []
|
|
- {}
|
|
responses:
|
|
'200':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/RideListOutput'
|
|
examples:
|
|
RideListExample:
|
|
value:
|
|
- id: 1
|
|
name: Steel Vengeance
|
|
slug: steel-vengeance
|
|
category: ROLLER_COASTER
|
|
status: OPERATING
|
|
description: Hybrid roller coaster
|
|
park:
|
|
id: 1
|
|
name: Cedar Point
|
|
slug: cedar-point
|
|
average_rating: 4.8
|
|
capacity_per_hour: 1200
|
|
opening_date: '2018-05-05'
|
|
summary: Example ride list response
|
|
description: A typical ride in the list view
|
|
description: ''
|
|
'201':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/RideDetailOutput'
|
|
examples:
|
|
RideDetailExample:
|
|
value:
|
|
id: 1
|
|
name: Steel Vengeance
|
|
slug: steel-vengeance
|
|
category: ROLLER_COASTER
|
|
status: OPERATING
|
|
description: Hybrid roller coaster featuring RMC I-Box track
|
|
park:
|
|
id: 1
|
|
name: Cedar Point
|
|
slug: cedar-point
|
|
opening_date: '2018-05-05'
|
|
min_height_in: 48
|
|
capacity_per_hour: 1200
|
|
ride_duration_seconds: 150
|
|
average_rating: 4.8
|
|
manufacturer:
|
|
id: 1
|
|
name: Rocky Mountain Construction
|
|
slug: rocky-mountain-construction
|
|
summary: Example ride detail response
|
|
description: A complete ride detail response
|
|
description: ''
|
|
post:
|
|
operationId: v1_rides_list_create
|
|
description: Create a new ride.
|
|
summary: List rides or create a new ride
|
|
tags:
|
|
- Rides
|
|
security:
|
|
- cookieAuth: []
|
|
- tokenAuth: []
|
|
- {}
|
|
responses:
|
|
'200':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/RideListOutput'
|
|
examples:
|
|
RideListExample:
|
|
value:
|
|
- id: 1
|
|
name: Steel Vengeance
|
|
slug: steel-vengeance
|
|
category: ROLLER_COASTER
|
|
status: OPERATING
|
|
description: Hybrid roller coaster
|
|
park:
|
|
id: 1
|
|
name: Cedar Point
|
|
slug: cedar-point
|
|
average_rating: 4.8
|
|
capacity_per_hour: 1200
|
|
opening_date: '2018-05-05'
|
|
summary: Example ride list response
|
|
description: A typical ride in the list view
|
|
description: ''
|
|
'201':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/RideDetailOutput'
|
|
examples:
|
|
RideDetailExample:
|
|
value:
|
|
id: 1
|
|
name: Steel Vengeance
|
|
slug: steel-vengeance
|
|
category: ROLLER_COASTER
|
|
status: OPERATING
|
|
description: Hybrid roller coaster featuring RMC I-Box track
|
|
park:
|
|
id: 1
|
|
name: Cedar Point
|
|
slug: cedar-point
|
|
opening_date: '2018-05-05'
|
|
min_height_in: 48
|
|
capacity_per_hour: 1200
|
|
ride_duration_seconds: 150
|
|
average_rating: 4.8
|
|
manufacturer:
|
|
id: 1
|
|
name: Rocky Mountain Construction
|
|
slug: rocky-mountain-construction
|
|
summary: Example ride detail response
|
|
description: A complete ride detail response
|
|
description: ''
|
|
/api/v1/rides/recommendations/:
|
|
get:
|
|
operationId: v1_rides_recommendations_list
|
|
description: List rides with basic filtering and pagination.
|
|
summary: List rides or create a new ride
|
|
tags:
|
|
- Rides
|
|
security:
|
|
- cookieAuth: []
|
|
- tokenAuth: []
|
|
- {}
|
|
responses:
|
|
'200':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/RideListOutput'
|
|
examples:
|
|
RideListExample:
|
|
value:
|
|
- id: 1
|
|
name: Steel Vengeance
|
|
slug: steel-vengeance
|
|
category: ROLLER_COASTER
|
|
status: OPERATING
|
|
description: Hybrid roller coaster
|
|
park:
|
|
id: 1
|
|
name: Cedar Point
|
|
slug: cedar-point
|
|
average_rating: 4.8
|
|
capacity_per_hour: 1200
|
|
opening_date: '2018-05-05'
|
|
summary: Example ride list response
|
|
description: A typical ride in the list view
|
|
description: ''
|
|
'201':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/RideDetailOutput'
|
|
examples:
|
|
RideDetailExample:
|
|
value:
|
|
id: 1
|
|
name: Steel Vengeance
|
|
slug: steel-vengeance
|
|
category: ROLLER_COASTER
|
|
status: OPERATING
|
|
description: Hybrid roller coaster featuring RMC I-Box track
|
|
park:
|
|
id: 1
|
|
name: Cedar Point
|
|
slug: cedar-point
|
|
opening_date: '2018-05-05'
|
|
min_height_in: 48
|
|
capacity_per_hour: 1200
|
|
ride_duration_seconds: 150
|
|
average_rating: 4.8
|
|
manufacturer:
|
|
id: 1
|
|
name: Rocky Mountain Construction
|
|
slug: rocky-mountain-construction
|
|
summary: Example ride detail response
|
|
description: A complete ride detail response
|
|
description: ''
|
|
post:
|
|
operationId: v1_rides_recommendations_create
|
|
description: Create a new ride.
|
|
summary: List rides or create a new ride
|
|
tags:
|
|
- Rides
|
|
security:
|
|
- cookieAuth: []
|
|
- tokenAuth: []
|
|
- {}
|
|
responses:
|
|
'200':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/RideListOutput'
|
|
examples:
|
|
RideListExample:
|
|
value:
|
|
- id: 1
|
|
name: Steel Vengeance
|
|
slug: steel-vengeance
|
|
category: ROLLER_COASTER
|
|
status: OPERATING
|
|
description: Hybrid roller coaster
|
|
park:
|
|
id: 1
|
|
name: Cedar Point
|
|
slug: cedar-point
|
|
average_rating: 4.8
|
|
capacity_per_hour: 1200
|
|
opening_date: '2018-05-05'
|
|
summary: Example ride list response
|
|
description: A typical ride in the list view
|
|
description: ''
|
|
'201':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/RideDetailOutput'
|
|
examples:
|
|
RideDetailExample:
|
|
value:
|
|
id: 1
|
|
name: Steel Vengeance
|
|
slug: steel-vengeance
|
|
category: ROLLER_COASTER
|
|
status: OPERATING
|
|
description: Hybrid roller coaster featuring RMC I-Box track
|
|
park:
|
|
id: 1
|
|
name: Cedar Point
|
|
slug: cedar-point
|
|
opening_date: '2018-05-05'
|
|
min_height_in: 48
|
|
capacity_per_hour: 1200
|
|
ride_duration_seconds: 150
|
|
average_rating: 4.8
|
|
manufacturer:
|
|
id: 1
|
|
name: Rocky Mountain Construction
|
|
slug: rocky-mountain-construction
|
|
summary: Example ride detail response
|
|
description: A complete ride detail response
|
|
description: ''
|
|
/api/v1/rides/related/:
|
|
get:
|
|
operationId: v1_rides_related_list
|
|
description: List rides with basic filtering and pagination.
|
|
summary: List rides or create a new ride
|
|
tags:
|
|
- Rides
|
|
security:
|
|
- cookieAuth: []
|
|
- tokenAuth: []
|
|
- {}
|
|
responses:
|
|
'200':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/RideListOutput'
|
|
examples:
|
|
RideListExample:
|
|
value:
|
|
- id: 1
|
|
name: Steel Vengeance
|
|
slug: steel-vengeance
|
|
category: ROLLER_COASTER
|
|
status: OPERATING
|
|
description: Hybrid roller coaster
|
|
park:
|
|
id: 1
|
|
name: Cedar Point
|
|
slug: cedar-point
|
|
average_rating: 4.8
|
|
capacity_per_hour: 1200
|
|
opening_date: '2018-05-05'
|
|
summary: Example ride list response
|
|
description: A typical ride in the list view
|
|
description: ''
|
|
'201':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/RideDetailOutput'
|
|
examples:
|
|
RideDetailExample:
|
|
value:
|
|
id: 1
|
|
name: Steel Vengeance
|
|
slug: steel-vengeance
|
|
category: ROLLER_COASTER
|
|
status: OPERATING
|
|
description: Hybrid roller coaster featuring RMC I-Box track
|
|
park:
|
|
id: 1
|
|
name: Cedar Point
|
|
slug: cedar-point
|
|
opening_date: '2018-05-05'
|
|
min_height_in: 48
|
|
capacity_per_hour: 1200
|
|
ride_duration_seconds: 150
|
|
average_rating: 4.8
|
|
manufacturer:
|
|
id: 1
|
|
name: Rocky Mountain Construction
|
|
slug: rocky-mountain-construction
|
|
summary: Example ride detail response
|
|
description: A complete ride detail response
|
|
description: ''
|
|
post:
|
|
operationId: v1_rides_related_create
|
|
description: Create a new ride.
|
|
summary: List rides or create a new ride
|
|
tags:
|
|
- Rides
|
|
security:
|
|
- cookieAuth: []
|
|
- tokenAuth: []
|
|
- {}
|
|
responses:
|
|
'200':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/RideListOutput'
|
|
examples:
|
|
RideListExample:
|
|
value:
|
|
- id: 1
|
|
name: Steel Vengeance
|
|
slug: steel-vengeance
|
|
category: ROLLER_COASTER
|
|
status: OPERATING
|
|
description: Hybrid roller coaster
|
|
park:
|
|
id: 1
|
|
name: Cedar Point
|
|
slug: cedar-point
|
|
average_rating: 4.8
|
|
capacity_per_hour: 1200
|
|
opening_date: '2018-05-05'
|
|
summary: Example ride list response
|
|
description: A typical ride in the list view
|
|
description: ''
|
|
'201':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/RideDetailOutput'
|
|
examples:
|
|
RideDetailExample:
|
|
value:
|
|
id: 1
|
|
name: Steel Vengeance
|
|
slug: steel-vengeance
|
|
category: ROLLER_COASTER
|
|
status: OPERATING
|
|
description: Hybrid roller coaster featuring RMC I-Box track
|
|
park:
|
|
id: 1
|
|
name: Cedar Point
|
|
slug: cedar-point
|
|
opening_date: '2018-05-05'
|
|
min_height_in: 48
|
|
capacity_per_hour: 1200
|
|
ride_duration_seconds: 150
|
|
average_rating: 4.8
|
|
manufacturer:
|
|
id: 1
|
|
name: Rocky Mountain Construction
|
|
slug: rocky-mountain-construction
|
|
summary: Example ride detail response
|
|
description: A complete ride detail response
|
|
description: ''
|
|
/api/v1/rides/search/:
|
|
get:
|
|
operationId: v1_rides_search_list
|
|
description: List rides with basic filtering and pagination.
|
|
summary: List rides or create a new ride
|
|
tags:
|
|
- Rides
|
|
security:
|
|
- cookieAuth: []
|
|
- tokenAuth: []
|
|
- {}
|
|
responses:
|
|
'200':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/RideListOutput'
|
|
examples:
|
|
RideListExample:
|
|
value:
|
|
- id: 1
|
|
name: Steel Vengeance
|
|
slug: steel-vengeance
|
|
category: ROLLER_COASTER
|
|
status: OPERATING
|
|
description: Hybrid roller coaster
|
|
park:
|
|
id: 1
|
|
name: Cedar Point
|
|
slug: cedar-point
|
|
average_rating: 4.8
|
|
capacity_per_hour: 1200
|
|
opening_date: '2018-05-05'
|
|
summary: Example ride list response
|
|
description: A typical ride in the list view
|
|
description: ''
|
|
'201':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/RideDetailOutput'
|
|
examples:
|
|
RideDetailExample:
|
|
value:
|
|
id: 1
|
|
name: Steel Vengeance
|
|
slug: steel-vengeance
|
|
category: ROLLER_COASTER
|
|
status: OPERATING
|
|
description: Hybrid roller coaster featuring RMC I-Box track
|
|
park:
|
|
id: 1
|
|
name: Cedar Point
|
|
slug: cedar-point
|
|
opening_date: '2018-05-05'
|
|
min_height_in: 48
|
|
capacity_per_hour: 1200
|
|
ride_duration_seconds: 150
|
|
average_rating: 4.8
|
|
manufacturer:
|
|
id: 1
|
|
name: Rocky Mountain Construction
|
|
slug: rocky-mountain-construction
|
|
summary: Example ride detail response
|
|
description: A complete ride detail response
|
|
description: ''
|
|
post:
|
|
operationId: v1_rides_search_create
|
|
description: Create a new ride.
|
|
summary: List rides or create a new ride
|
|
tags:
|
|
- Rides
|
|
security:
|
|
- cookieAuth: []
|
|
- tokenAuth: []
|
|
- {}
|
|
responses:
|
|
'200':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/RideListOutput'
|
|
examples:
|
|
RideListExample:
|
|
value:
|
|
- id: 1
|
|
name: Steel Vengeance
|
|
slug: steel-vengeance
|
|
category: ROLLER_COASTER
|
|
status: OPERATING
|
|
description: Hybrid roller coaster
|
|
park:
|
|
id: 1
|
|
name: Cedar Point
|
|
slug: cedar-point
|
|
average_rating: 4.8
|
|
capacity_per_hour: 1200
|
|
opening_date: '2018-05-05'
|
|
summary: Example ride list response
|
|
description: A typical ride in the list view
|
|
description: ''
|
|
'201':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/RideDetailOutput'
|
|
examples:
|
|
RideDetailExample:
|
|
value:
|
|
id: 1
|
|
name: Steel Vengeance
|
|
slug: steel-vengeance
|
|
category: ROLLER_COASTER
|
|
status: OPERATING
|
|
description: Hybrid roller coaster featuring RMC I-Box track
|
|
park:
|
|
id: 1
|
|
name: Cedar Point
|
|
slug: cedar-point
|
|
opening_date: '2018-05-05'
|
|
min_height_in: 48
|
|
capacity_per_hour: 1200
|
|
ride_duration_seconds: 150
|
|
average_rating: 4.8
|
|
manufacturer:
|
|
id: 1
|
|
name: Rocky Mountain Construction
|
|
slug: rocky-mountain-construction
|
|
summary: Example ride detail response
|
|
description: A complete ride detail response
|
|
description: ''
|
|
/api/v1/rides/search-suggestions/:
|
|
get:
|
|
operationId: v1_rides_search_suggestions_retrieve
|
|
summary: Search suggestions for ride search box
|
|
tags:
|
|
- Rides
|
|
security:
|
|
- cookieAuth: []
|
|
- tokenAuth: []
|
|
- {}
|
|
responses:
|
|
'200':
|
|
description: No response body
|
|
/api/v1/rides/search/companies/:
|
|
get:
|
|
operationId: v1_rides_search_companies_retrieve
|
|
summary: Search companies (manufacturers/designers) for autocomplete
|
|
tags:
|
|
- Rides
|
|
security:
|
|
- cookieAuth: []
|
|
- tokenAuth: []
|
|
- {}
|
|
responses:
|
|
'200':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
additionalProperties: {}
|
|
description: ''
|
|
/api/v1/rides/search/ride-models/:
|
|
get:
|
|
operationId: v1_rides_search_ride_models_retrieve
|
|
summary: Search ride models for autocomplete
|
|
tags:
|
|
- Rides
|
|
security:
|
|
- cookieAuth: []
|
|
- tokenAuth: []
|
|
- {}
|
|
responses:
|
|
'200':
|
|
description: No response body
|
|
/api/v1/rides/stats/:
|
|
get:
|
|
operationId: v1_rides_stats_list
|
|
description: List rides with basic filtering and pagination.
|
|
summary: List rides or create a new ride
|
|
tags:
|
|
- Rides
|
|
security:
|
|
- cookieAuth: []
|
|
- tokenAuth: []
|
|
- {}
|
|
responses:
|
|
'200':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/RideListOutput'
|
|
examples:
|
|
RideListExample:
|
|
value:
|
|
- id: 1
|
|
name: Steel Vengeance
|
|
slug: steel-vengeance
|
|
category: ROLLER_COASTER
|
|
status: OPERATING
|
|
description: Hybrid roller coaster
|
|
park:
|
|
id: 1
|
|
name: Cedar Point
|
|
slug: cedar-point
|
|
average_rating: 4.8
|
|
capacity_per_hour: 1200
|
|
opening_date: '2018-05-05'
|
|
summary: Example ride list response
|
|
description: A typical ride in the list view
|
|
description: ''
|
|
'201':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/RideDetailOutput'
|
|
examples:
|
|
RideDetailExample:
|
|
value:
|
|
id: 1
|
|
name: Steel Vengeance
|
|
slug: steel-vengeance
|
|
category: ROLLER_COASTER
|
|
status: OPERATING
|
|
description: Hybrid roller coaster featuring RMC I-Box track
|
|
park:
|
|
id: 1
|
|
name: Cedar Point
|
|
slug: cedar-point
|
|
opening_date: '2018-05-05'
|
|
min_height_in: 48
|
|
capacity_per_hour: 1200
|
|
ride_duration_seconds: 150
|
|
average_rating: 4.8
|
|
manufacturer:
|
|
id: 1
|
|
name: Rocky Mountain Construction
|
|
slug: rocky-mountain-construction
|
|
summary: Example ride detail response
|
|
description: A complete ride detail response
|
|
description: ''
|
|
post:
|
|
operationId: v1_rides_stats_create
|
|
description: Create a new ride.
|
|
summary: List rides or create a new ride
|
|
tags:
|
|
- Rides
|
|
security:
|
|
- cookieAuth: []
|
|
- tokenAuth: []
|
|
- {}
|
|
responses:
|
|
'200':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/RideListOutput'
|
|
examples:
|
|
RideListExample:
|
|
value:
|
|
- id: 1
|
|
name: Steel Vengeance
|
|
slug: steel-vengeance
|
|
category: ROLLER_COASTER
|
|
status: OPERATING
|
|
description: Hybrid roller coaster
|
|
park:
|
|
id: 1
|
|
name: Cedar Point
|
|
slug: cedar-point
|
|
average_rating: 4.8
|
|
capacity_per_hour: 1200
|
|
opening_date: '2018-05-05'
|
|
summary: Example ride list response
|
|
description: A typical ride in the list view
|
|
description: ''
|
|
'201':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/RideDetailOutput'
|
|
examples:
|
|
RideDetailExample:
|
|
value:
|
|
id: 1
|
|
name: Steel Vengeance
|
|
slug: steel-vengeance
|
|
category: ROLLER_COASTER
|
|
status: OPERATING
|
|
description: Hybrid roller coaster featuring RMC I-Box track
|
|
park:
|
|
id: 1
|
|
name: Cedar Point
|
|
slug: cedar-point
|
|
opening_date: '2018-05-05'
|
|
min_height_in: 48
|
|
capacity_per_hour: 1200
|
|
ride_duration_seconds: 150
|
|
average_rating: 4.8
|
|
manufacturer:
|
|
id: 1
|
|
name: Rocky Mountain Construction
|
|
slug: rocky-mountain-construction
|
|
summary: Example ride detail response
|
|
description: A complete ride detail response
|
|
description: ''
|
|
/api/v1/rides/trending/:
|
|
get:
|
|
operationId: v1_rides_trending_list
|
|
description: List rides with basic filtering and pagination.
|
|
summary: List rides or create a new ride
|
|
tags:
|
|
- Rides
|
|
security:
|
|
- cookieAuth: []
|
|
- tokenAuth: []
|
|
- {}
|
|
responses:
|
|
'200':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/RideListOutput'
|
|
examples:
|
|
RideListExample:
|
|
value:
|
|
- id: 1
|
|
name: Steel Vengeance
|
|
slug: steel-vengeance
|
|
category: ROLLER_COASTER
|
|
status: OPERATING
|
|
description: Hybrid roller coaster
|
|
park:
|
|
id: 1
|
|
name: Cedar Point
|
|
slug: cedar-point
|
|
average_rating: 4.8
|
|
capacity_per_hour: 1200
|
|
opening_date: '2018-05-05'
|
|
summary: Example ride list response
|
|
description: A typical ride in the list view
|
|
description: ''
|
|
'201':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/RideDetailOutput'
|
|
examples:
|
|
RideDetailExample:
|
|
value:
|
|
id: 1
|
|
name: Steel Vengeance
|
|
slug: steel-vengeance
|
|
category: ROLLER_COASTER
|
|
status: OPERATING
|
|
description: Hybrid roller coaster featuring RMC I-Box track
|
|
park:
|
|
id: 1
|
|
name: Cedar Point
|
|
slug: cedar-point
|
|
opening_date: '2018-05-05'
|
|
min_height_in: 48
|
|
capacity_per_hour: 1200
|
|
ride_duration_seconds: 150
|
|
average_rating: 4.8
|
|
manufacturer:
|
|
id: 1
|
|
name: Rocky Mountain Construction
|
|
slug: rocky-mountain-construction
|
|
summary: Example ride detail response
|
|
description: A complete ride detail response
|
|
description: ''
|
|
post:
|
|
operationId: v1_rides_trending_create
|
|
description: Create a new ride.
|
|
summary: List rides or create a new ride
|
|
tags:
|
|
- Rides
|
|
security:
|
|
- cookieAuth: []
|
|
- tokenAuth: []
|
|
- {}
|
|
responses:
|
|
'200':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/RideListOutput'
|
|
examples:
|
|
RideListExample:
|
|
value:
|
|
- id: 1
|
|
name: Steel Vengeance
|
|
slug: steel-vengeance
|
|
category: ROLLER_COASTER
|
|
status: OPERATING
|
|
description: Hybrid roller coaster
|
|
park:
|
|
id: 1
|
|
name: Cedar Point
|
|
slug: cedar-point
|
|
average_rating: 4.8
|
|
capacity_per_hour: 1200
|
|
opening_date: '2018-05-05'
|
|
summary: Example ride list response
|
|
description: A typical ride in the list view
|
|
description: ''
|
|
'201':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/RideDetailOutput'
|
|
examples:
|
|
RideDetailExample:
|
|
value:
|
|
id: 1
|
|
name: Steel Vengeance
|
|
slug: steel-vengeance
|
|
category: ROLLER_COASTER
|
|
status: OPERATING
|
|
description: Hybrid roller coaster featuring RMC I-Box track
|
|
park:
|
|
id: 1
|
|
name: Cedar Point
|
|
slug: cedar-point
|
|
opening_date: '2018-05-05'
|
|
min_height_in: 48
|
|
capacity_per_hour: 1200
|
|
ride_duration_seconds: 150
|
|
average_rating: 4.8
|
|
manufacturer:
|
|
id: 1
|
|
name: Rocky Mountain Construction
|
|
slug: rocky-mountain-construction
|
|
summary: Example ride detail response
|
|
description: A complete ride detail response
|
|
description: ''
|
|
/api/v1/trending/content/:
|
|
get:
|
|
operationId: v1_trending_content_retrieve
|
|
description: Retrieve trending parks and rides based on view counts, ratings,
|
|
and recency.
|
|
summary: Get trending content
|
|
parameters:
|
|
- in: query
|
|
name: limit
|
|
schema:
|
|
type: integer
|
|
default: 20
|
|
description: 'Number of trending items to return (default: 20, max: 100)'
|
|
- in: query
|
|
name: timeframe
|
|
schema:
|
|
type: string
|
|
enum:
|
|
- day
|
|
- month
|
|
- week
|
|
default: week
|
|
description: 'Timeframe for trending calculation (day, week, month) - default:
|
|
week'
|
|
tags:
|
|
- Trending
|
|
security:
|
|
- cookieAuth: []
|
|
- tokenAuth: []
|
|
- {}
|
|
responses:
|
|
'200':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
additionalProperties: {}
|
|
description: ''
|
|
/api/v1/trending/new/:
|
|
get:
|
|
operationId: v1_trending_new_retrieve
|
|
description: Retrieve recently added parks and rides.
|
|
summary: Get new content
|
|
parameters:
|
|
- in: query
|
|
name: days
|
|
schema:
|
|
type: integer
|
|
default: 30
|
|
description: 'Number of days to look back for new content (default: 30, max:
|
|
365)'
|
|
- in: query
|
|
name: limit
|
|
schema:
|
|
type: integer
|
|
default: 20
|
|
description: 'Number of new items to return (default: 20, max: 100)'
|
|
tags:
|
|
- Trending
|
|
security:
|
|
- cookieAuth: []
|
|
- tokenAuth: []
|
|
- {}
|
|
responses:
|
|
'200':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
additionalProperties: {}
|
|
description: ''
|
|
components:
|
|
schemas:
|
|
ActionEnum:
|
|
enum:
|
|
- delete
|
|
- approve
|
|
- reject
|
|
type: string
|
|
description: |-
|
|
* `delete` - Delete
|
|
* `approve` - Approve
|
|
* `reject` - Reject
|
|
AuthStatusOutput:
|
|
type: object
|
|
description: Output serializer for authentication status.
|
|
properties:
|
|
authenticated:
|
|
type: boolean
|
|
description: Whether user is authenticated
|
|
user:
|
|
allOf:
|
|
- $ref: '#/components/schemas/UserOutput'
|
|
nullable: true
|
|
description: User information if authenticated
|
|
required:
|
|
- authenticated
|
|
- user
|
|
AuthStatusOutputRequest:
|
|
type: object
|
|
description: Output serializer for authentication status.
|
|
properties:
|
|
authenticated:
|
|
type: boolean
|
|
description: Whether user is authenticated
|
|
user:
|
|
allOf:
|
|
- $ref: '#/components/schemas/UserOutputRequest'
|
|
nullable: true
|
|
description: User information if authenticated
|
|
required:
|
|
- authenticated
|
|
- user
|
|
BulkPhotoActionInputRequest:
|
|
type: object
|
|
description: Input serializer for bulk photo actions.
|
|
properties:
|
|
photo_ids:
|
|
type: array
|
|
items:
|
|
type: integer
|
|
description: List of photo IDs to perform action on
|
|
action:
|
|
allOf:
|
|
- $ref: '#/components/schemas/ActionEnum'
|
|
description: |-
|
|
Action to perform on selected photos
|
|
|
|
* `delete` - Delete
|
|
* `approve` - Approve
|
|
* `reject` - Reject
|
|
required:
|
|
- action
|
|
- photo_ids
|
|
BulkPhotoActionOutput:
|
|
type: object
|
|
description: Output serializer for bulk photo actions.
|
|
properties:
|
|
success_count:
|
|
type: integer
|
|
failed_count:
|
|
type: integer
|
|
error_messages:
|
|
type: array
|
|
items:
|
|
type: string
|
|
message:
|
|
type: string
|
|
required:
|
|
- failed_count
|
|
- message
|
|
- success_count
|
|
CategoryEnum:
|
|
enum:
|
|
- RC
|
|
- DR
|
|
- FR
|
|
- WR
|
|
- PK
|
|
type: string
|
|
description: |-
|
|
* `RC` - Roller Coaster
|
|
* `DR` - Dark Ride
|
|
* `FR` - Flat Ride
|
|
* `WR` - Water Ride
|
|
* `PK` - Park
|
|
HealthCheckOutput:
|
|
type: object
|
|
description: Output serializer for health check responses.
|
|
properties:
|
|
status:
|
|
$ref: '#/components/schemas/HealthCheckOutputStatusEnum'
|
|
timestamp:
|
|
type: string
|
|
format: date-time
|
|
version:
|
|
type: string
|
|
environment:
|
|
type: string
|
|
response_time_ms:
|
|
type: number
|
|
format: double
|
|
checks:
|
|
type: object
|
|
additionalProperties: {}
|
|
metrics:
|
|
type: object
|
|
additionalProperties: {}
|
|
required:
|
|
- checks
|
|
- environment
|
|
- metrics
|
|
- response_time_ms
|
|
- status
|
|
- timestamp
|
|
- version
|
|
HealthCheckOutputStatusEnum:
|
|
enum:
|
|
- healthy
|
|
- unhealthy
|
|
type: string
|
|
description: |-
|
|
* `healthy` - healthy
|
|
* `unhealthy` - unhealthy
|
|
HistorySummary:
|
|
type: object
|
|
description: Serializer for history summary information.
|
|
properties:
|
|
total_events:
|
|
type: integer
|
|
first_recorded:
|
|
type: string
|
|
format: date-time
|
|
nullable: true
|
|
last_modified:
|
|
type: string
|
|
format: date-time
|
|
nullable: true
|
|
required:
|
|
- first_recorded
|
|
- last_modified
|
|
- total_events
|
|
LoginInputRequest:
|
|
type: object
|
|
description: Input serializer for user login.
|
|
properties:
|
|
username:
|
|
type: string
|
|
minLength: 1
|
|
description: Username or email address
|
|
maxLength: 150
|
|
password:
|
|
type: string
|
|
writeOnly: true
|
|
minLength: 1
|
|
description: User password
|
|
required:
|
|
- password
|
|
- username
|
|
LoginOutput:
|
|
type: object
|
|
description: Output serializer for login response.
|
|
properties:
|
|
token:
|
|
type: string
|
|
description: Authentication token
|
|
user:
|
|
allOf:
|
|
- $ref: '#/components/schemas/UserOutput'
|
|
description: User information
|
|
message:
|
|
type: string
|
|
description: Success message
|
|
required:
|
|
- message
|
|
- token
|
|
- user
|
|
LogoutOutput:
|
|
type: object
|
|
description: Output serializer for logout response.
|
|
properties:
|
|
message:
|
|
type: string
|
|
description: Success message
|
|
required:
|
|
- message
|
|
LogoutOutputRequest:
|
|
type: object
|
|
description: Output serializer for logout response.
|
|
properties:
|
|
message:
|
|
type: string
|
|
minLength: 1
|
|
description: Success message
|
|
required:
|
|
- message
|
|
MediaStatsOutput:
|
|
type: object
|
|
description: Output serializer for media statistics.
|
|
properties:
|
|
total_photos:
|
|
type: integer
|
|
photos_by_content_type:
|
|
type: object
|
|
additionalProperties: {}
|
|
recent_uploads:
|
|
type: integer
|
|
top_uploaders:
|
|
type: array
|
|
items: {}
|
|
storage_usage:
|
|
type: object
|
|
additionalProperties: {}
|
|
required:
|
|
- photos_by_content_type
|
|
- recent_uploads
|
|
- storage_usage
|
|
- top_uploaders
|
|
- total_photos
|
|
PaginatedParkHistoryEventList:
|
|
type: object
|
|
required:
|
|
- count
|
|
- results
|
|
properties:
|
|
count:
|
|
type: integer
|
|
example: 123
|
|
next:
|
|
type: string
|
|
nullable: true
|
|
format: uri
|
|
example: http://api.example.org/accounts/?page=4
|
|
previous:
|
|
type: string
|
|
nullable: true
|
|
format: uri
|
|
example: http://api.example.org/accounts/?page=2
|
|
results:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/ParkHistoryEvent'
|
|
PaginatedParkPhotoListOutputList:
|
|
type: object
|
|
required:
|
|
- count
|
|
- results
|
|
properties:
|
|
count:
|
|
type: integer
|
|
example: 123
|
|
next:
|
|
type: string
|
|
nullable: true
|
|
format: uri
|
|
example: http://api.example.org/accounts/?page=4
|
|
previous:
|
|
type: string
|
|
nullable: true
|
|
format: uri
|
|
example: http://api.example.org/accounts/?page=2
|
|
results:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/ParkPhotoListOutput'
|
|
PaginatedPhotoListOutputList:
|
|
type: object
|
|
required:
|
|
- count
|
|
- results
|
|
properties:
|
|
count:
|
|
type: integer
|
|
example: 123
|
|
next:
|
|
type: string
|
|
nullable: true
|
|
format: uri
|
|
example: http://api.example.org/accounts/?page=4
|
|
previous:
|
|
type: string
|
|
nullable: true
|
|
format: uri
|
|
example: http://api.example.org/accounts/?page=2
|
|
results:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/PhotoListOutput'
|
|
PaginatedRankingSnapshotList:
|
|
type: object
|
|
required:
|
|
- count
|
|
- results
|
|
properties:
|
|
count:
|
|
type: integer
|
|
example: 123
|
|
next:
|
|
type: string
|
|
nullable: true
|
|
format: uri
|
|
example: http://api.example.org/accounts/?page=4
|
|
previous:
|
|
type: string
|
|
nullable: true
|
|
format: uri
|
|
example: http://api.example.org/accounts/?page=2
|
|
results:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/RankingSnapshot'
|
|
PaginatedRideHistoryEventList:
|
|
type: object
|
|
required:
|
|
- count
|
|
- results
|
|
properties:
|
|
count:
|
|
type: integer
|
|
example: 123
|
|
next:
|
|
type: string
|
|
nullable: true
|
|
format: uri
|
|
example: http://api.example.org/accounts/?page=4
|
|
previous:
|
|
type: string
|
|
nullable: true
|
|
format: uri
|
|
example: http://api.example.org/accounts/?page=2
|
|
results:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/RideHistoryEvent'
|
|
PaginatedRideRankingList:
|
|
type: object
|
|
required:
|
|
- count
|
|
- results
|
|
properties:
|
|
count:
|
|
type: integer
|
|
example: 123
|
|
next:
|
|
type: string
|
|
nullable: true
|
|
format: uri
|
|
example: http://api.example.org/accounts/?page=4
|
|
previous:
|
|
type: string
|
|
nullable: true
|
|
format: uri
|
|
example: http://api.example.org/accounts/?page=2
|
|
results:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/RideRanking'
|
|
PaginatedTopListItemOutputList:
|
|
type: object
|
|
required:
|
|
- count
|
|
- results
|
|
properties:
|
|
count:
|
|
type: integer
|
|
example: 123
|
|
next:
|
|
type: string
|
|
nullable: true
|
|
format: uri
|
|
example: http://api.example.org/accounts/?page=4
|
|
previous:
|
|
type: string
|
|
nullable: true
|
|
format: uri
|
|
example: http://api.example.org/accounts/?page=2
|
|
results:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/TopListItemOutput'
|
|
PaginatedTopListOutputList:
|
|
type: object
|
|
required:
|
|
- count
|
|
- results
|
|
properties:
|
|
count:
|
|
type: integer
|
|
example: 123
|
|
next:
|
|
type: string
|
|
nullable: true
|
|
format: uri
|
|
example: http://api.example.org/accounts/?page=4
|
|
previous:
|
|
type: string
|
|
nullable: true
|
|
format: uri
|
|
example: http://api.example.org/accounts/?page=2
|
|
results:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/TopListOutput'
|
|
PaginatedUnifiedHistoryTimelineList:
|
|
type: object
|
|
required:
|
|
- count
|
|
- results
|
|
properties:
|
|
count:
|
|
type: integer
|
|
example: 123
|
|
next:
|
|
type: string
|
|
nullable: true
|
|
format: uri
|
|
example: http://api.example.org/accounts/?page=4
|
|
previous:
|
|
type: string
|
|
nullable: true
|
|
format: uri
|
|
example: http://api.example.org/accounts/?page=2
|
|
results:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/UnifiedHistoryTimeline'
|
|
PaginatedUserProfileOutputList:
|
|
type: object
|
|
required:
|
|
- count
|
|
- results
|
|
properties:
|
|
count:
|
|
type: integer
|
|
example: 123
|
|
next:
|
|
type: string
|
|
nullable: true
|
|
format: uri
|
|
example: http://api.example.org/accounts/?page=4
|
|
previous:
|
|
type: string
|
|
nullable: true
|
|
format: uri
|
|
example: http://api.example.org/accounts/?page=2
|
|
results:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/UserProfileOutput'
|
|
ParkHistoryEvent:
|
|
type: object
|
|
description: Serializer for park history events.
|
|
properties:
|
|
pgh_id:
|
|
type: integer
|
|
readOnly: true
|
|
pgh_created_at:
|
|
type: string
|
|
format: date-time
|
|
readOnly: true
|
|
pgh_label:
|
|
type: string
|
|
readOnly: true
|
|
pgh_obj_id:
|
|
type: integer
|
|
readOnly: true
|
|
pgh_context:
|
|
readOnly: true
|
|
nullable: true
|
|
pgh_data:
|
|
readOnly: true
|
|
event_type:
|
|
type: string
|
|
readOnly: true
|
|
changes:
|
|
type: object
|
|
additionalProperties: {}
|
|
readOnly: true
|
|
required:
|
|
- changes
|
|
- event_type
|
|
- pgh_context
|
|
- pgh_created_at
|
|
- pgh_data
|
|
- pgh_id
|
|
- pgh_label
|
|
- pgh_obj_id
|
|
ParkHistoryOutput:
|
|
type: object
|
|
description: Output serializer for complete park history.
|
|
properties:
|
|
park:
|
|
type: object
|
|
additionalProperties: {}
|
|
readOnly: true
|
|
current_state:
|
|
type: object
|
|
additionalProperties: {}
|
|
readOnly: true
|
|
summary:
|
|
$ref: '#/components/schemas/HistorySummary'
|
|
events:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/ParkHistoryEvent'
|
|
required:
|
|
- current_state
|
|
- events
|
|
- park
|
|
- summary
|
|
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
|