mirror of
https://github.com/pacnpal/thrillwiki_django_no_react.git
synced 2025-12-20 09:31:09 -05:00
- Centralize API endpoints in dedicated api app with v1 versioning - Remove individual API modules from parks and rides apps - Add event tracking system with analytics functionality - Integrate Vue.js frontend with Tailwind CSS v4 and TypeScript - Add comprehensive database migrations for event tracking - Implement user authentication and social provider setup - Add API schema documentation and serializers - Configure development environment with shared scripts - Update project structure for monorepo with frontend/backend separation
2989 lines
78 KiB
YAML
2989 lines
78 KiB
YAML
openapi: 3.0.3
|
|
info:
|
|
title: ThrillWiki API
|
|
version: 1.0.0
|
|
description: Comprehensive theme park and ride information API
|
|
contact:
|
|
name: ThrillWiki API Support
|
|
email: api@thrillwiki.com
|
|
url: https://thrillwiki.com/support
|
|
license:
|
|
name: MIT
|
|
url: https://opensource.org/licenses/MIT
|
|
paths:
|
|
/api/accounts/auth-status/:
|
|
post:
|
|
operationId: accounts_auth_status_create
|
|
description: Check if user is authenticated and return user data
|
|
tags:
|
|
- accounts
|
|
security:
|
|
- cookieAuth: []
|
|
- tokenAuth: []
|
|
- {}
|
|
responses:
|
|
'200':
|
|
description: No response body
|
|
/api/accounts/login/:
|
|
post:
|
|
operationId: accounts_login_create
|
|
description: API endpoint for user login
|
|
tags:
|
|
- accounts
|
|
security:
|
|
- {}
|
|
responses:
|
|
'200':
|
|
description: No response body
|
|
/api/accounts/logout/:
|
|
post:
|
|
operationId: accounts_logout_create
|
|
description: API endpoint for user logout
|
|
tags:
|
|
- accounts
|
|
security:
|
|
- cookieAuth: []
|
|
- tokenAuth: []
|
|
responses:
|
|
'200':
|
|
description: No response body
|
|
/api/accounts/password/change/:
|
|
post:
|
|
operationId: accounts_password_change_create
|
|
description: API endpoint to change password
|
|
tags:
|
|
- accounts
|
|
security:
|
|
- cookieAuth: []
|
|
- tokenAuth: []
|
|
responses:
|
|
'200':
|
|
description: No response body
|
|
/api/accounts/password/reset/:
|
|
post:
|
|
operationId: accounts_password_reset_create
|
|
description: API endpoint to request password reset
|
|
tags:
|
|
- accounts
|
|
security:
|
|
- cookieAuth: []
|
|
- tokenAuth: []
|
|
- {}
|
|
responses:
|
|
'200':
|
|
description: No response body
|
|
/api/accounts/signup/:
|
|
post:
|
|
operationId: accounts_signup_create
|
|
description: API endpoint for user registration
|
|
tags:
|
|
- accounts
|
|
security:
|
|
- {}
|
|
responses:
|
|
'200':
|
|
description: No response body
|
|
/api/accounts/social/providers/:
|
|
get:
|
|
operationId: accounts_social_providers_retrieve
|
|
description: API endpoint to get available social authentication providers
|
|
tags:
|
|
- accounts
|
|
security:
|
|
- cookieAuth: []
|
|
- tokenAuth: []
|
|
- {}
|
|
responses:
|
|
'200':
|
|
description: No response body
|
|
/api/accounts/user/:
|
|
get:
|
|
operationId: accounts_user_retrieve
|
|
description: API endpoint to get current user information
|
|
tags:
|
|
- accounts
|
|
security:
|
|
- cookieAuth: []
|
|
- tokenAuth: []
|
|
responses:
|
|
'200':
|
|
description: No response body
|
|
/api/legacy/v1/parks/:
|
|
get:
|
|
operationId: legacy_v1_parks_retrieve
|
|
description: Handle GET requests for listing resources.
|
|
tags:
|
|
- legacy
|
|
security:
|
|
- cookieAuth: []
|
|
- tokenAuth: []
|
|
- {}
|
|
responses:
|
|
'200':
|
|
description: No response body
|
|
post:
|
|
operationId: legacy_v1_parks_create
|
|
description: Handle POST requests for creating resources.
|
|
tags:
|
|
- legacy
|
|
security:
|
|
- cookieAuth: []
|
|
- tokenAuth: []
|
|
responses:
|
|
'201':
|
|
description: No response body
|
|
/api/legacy/v1/parks/{slug}/:
|
|
get:
|
|
operationId: legacy_v1_parks_retrieve_2
|
|
description: Handle GET requests for retrieving a single resource.
|
|
parameters:
|
|
- in: path
|
|
name: slug
|
|
schema:
|
|
type: string
|
|
required: true
|
|
tags:
|
|
- legacy
|
|
security:
|
|
- cookieAuth: []
|
|
- tokenAuth: []
|
|
- {}
|
|
responses:
|
|
'200':
|
|
description: No response body
|
|
put:
|
|
operationId: legacy_v1_parks_update
|
|
description: Handle PUT/PATCH requests for updating resources.
|
|
parameters:
|
|
- in: path
|
|
name: slug
|
|
schema:
|
|
type: string
|
|
required: true
|
|
tags:
|
|
- legacy
|
|
security:
|
|
- cookieAuth: []
|
|
- tokenAuth: []
|
|
responses:
|
|
'200':
|
|
description: No response body
|
|
delete:
|
|
operationId: legacy_v1_parks_destroy
|
|
description: Handle DELETE requests for destroying resources.
|
|
parameters:
|
|
- in: path
|
|
name: slug
|
|
schema:
|
|
type: string
|
|
required: true
|
|
tags:
|
|
- legacy
|
|
security:
|
|
- cookieAuth: []
|
|
- tokenAuth: []
|
|
responses:
|
|
'204':
|
|
description: No response body
|
|
/api/legacy/v1/parks/{slug}/reviews/:
|
|
get:
|
|
operationId: legacy_v1_parks_reviews_retrieve
|
|
description: |-
|
|
Get reviews for a specific park.
|
|
|
|
GET /api/v1/parks/{slug}/reviews/
|
|
parameters:
|
|
- in: path
|
|
name: slug
|
|
schema:
|
|
type: string
|
|
required: true
|
|
tags:
|
|
- legacy
|
|
security:
|
|
- cookieAuth: []
|
|
- tokenAuth: []
|
|
- {}
|
|
responses:
|
|
'200':
|
|
description: No response body
|
|
/api/legacy/v1/parks/stats/:
|
|
get:
|
|
operationId: legacy_v1_parks_stats_retrieve
|
|
description: |-
|
|
Get park statistics.
|
|
|
|
GET /api/v1/parks/stats/
|
|
tags:
|
|
- legacy
|
|
security:
|
|
- cookieAuth: []
|
|
- tokenAuth: []
|
|
- {}
|
|
responses:
|
|
'200':
|
|
description: No response body
|
|
/api/parks/:
|
|
get:
|
|
operationId: parks_list
|
|
description: |-
|
|
Frontend-compatible API endpoint for parks.
|
|
|
|
GET /api/parks/ - List all parks
|
|
GET /api/parks/{slug}/ - Get park detail
|
|
GET /api/search/parks/ - Search parks
|
|
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:
|
|
- parks
|
|
security:
|
|
- cookieAuth: []
|
|
- tokenAuth: []
|
|
- {}
|
|
responses:
|
|
'200':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/PaginatedParkFrontendList'
|
|
description: ''
|
|
/api/parks/{slug}/:
|
|
get:
|
|
operationId: parks_retrieve
|
|
description: |-
|
|
Frontend-compatible API endpoint for parks.
|
|
|
|
GET /api/parks/ - List all parks
|
|
GET /api/parks/{slug}/ - Get park detail
|
|
GET /api/search/parks/ - Search parks
|
|
parameters:
|
|
- in: path
|
|
name: slug
|
|
schema:
|
|
type: string
|
|
required: true
|
|
tags:
|
|
- parks
|
|
security:
|
|
- cookieAuth: []
|
|
- tokenAuth: []
|
|
- {}
|
|
responses:
|
|
'200':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/ParkDetailFrontend'
|
|
description: ''
|
|
/api/parks/{slug}/rides/:
|
|
get:
|
|
operationId: parks_rides_retrieve
|
|
description: |-
|
|
Get rides for a specific park.
|
|
|
|
GET /api/parks/{slug}/rides/
|
|
parameters:
|
|
- in: path
|
|
name: slug
|
|
schema:
|
|
type: string
|
|
required: true
|
|
tags:
|
|
- parks
|
|
security:
|
|
- cookieAuth: []
|
|
- tokenAuth: []
|
|
- {}
|
|
responses:
|
|
'200':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/ParkFrontend'
|
|
description: ''
|
|
/api/parks/search/:
|
|
get:
|
|
operationId: parks_search_retrieve
|
|
description: |-
|
|
Search parks endpoint for frontend.
|
|
|
|
GET /api/search/parks/?q=search_term
|
|
tags:
|
|
- parks
|
|
security:
|
|
- cookieAuth: []
|
|
- tokenAuth: []
|
|
- {}
|
|
responses:
|
|
'200':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/ParkFrontend'
|
|
description: ''
|
|
/api/rides/:
|
|
get:
|
|
operationId: rides_list
|
|
description: |-
|
|
Frontend-compatible API endpoint for rides.
|
|
|
|
GET /api/rides/ - List all rides
|
|
GET /api/rides/{park_slug}/{ride_slug}/ - Get ride detail
|
|
GET /api/search/rides/ - Search rides
|
|
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:
|
|
- rides
|
|
security:
|
|
- cookieAuth: []
|
|
- tokenAuth: []
|
|
- {}
|
|
responses:
|
|
'200':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/PaginatedRideFrontendList'
|
|
description: ''
|
|
/api/rides/{id}/:
|
|
get:
|
|
operationId: rides_retrieve
|
|
description: |-
|
|
Frontend-compatible API endpoint for rides.
|
|
|
|
GET /api/rides/ - List all rides
|
|
GET /api/rides/{park_slug}/{ride_slug}/ - Get ride detail
|
|
GET /api/search/rides/ - Search rides
|
|
parameters:
|
|
- in: path
|
|
name: id
|
|
schema:
|
|
type: integer
|
|
description: A unique integer value identifying this ride.
|
|
required: true
|
|
tags:
|
|
- rides
|
|
security:
|
|
- cookieAuth: []
|
|
- tokenAuth: []
|
|
- {}
|
|
responses:
|
|
'200':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/RideDetailFrontend'
|
|
description: ''
|
|
/api/rides/by-park/{park_slug}/:
|
|
get:
|
|
operationId: rides_by_park_retrieve
|
|
description: |-
|
|
Get rides for a specific park by park slug.
|
|
|
|
GET /api/rides/by-park/{park_slug}/
|
|
parameters:
|
|
- in: path
|
|
name: park_slug
|
|
schema:
|
|
type: string
|
|
required: true
|
|
tags:
|
|
- rides
|
|
security:
|
|
- cookieAuth: []
|
|
- tokenAuth: []
|
|
- {}
|
|
responses:
|
|
'200':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/RideFrontend'
|
|
description: ''
|
|
/api/rides/search/:
|
|
get:
|
|
operationId: rides_search_retrieve
|
|
description: |-
|
|
Search rides endpoint for frontend.
|
|
|
|
GET /api/search/rides/?q=search_term
|
|
tags:
|
|
- rides
|
|
security:
|
|
- cookieAuth: []
|
|
- tokenAuth: []
|
|
- {}
|
|
responses:
|
|
'200':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/RideFrontend'
|
|
description: ''
|
|
/api/v1/parks/:
|
|
get:
|
|
operationId: v1_parks_list
|
|
description: Retrieve a paginated list of theme parks with filtering and search
|
|
capabilities.
|
|
summary: List parks
|
|
parameters:
|
|
- in: query
|
|
name: country
|
|
schema:
|
|
type: string
|
|
description: Filter by country
|
|
- in: query
|
|
name: ordering
|
|
schema:
|
|
type: string
|
|
description: Order results by field (name, opening_date, average_rating, etc.)
|
|
- name: page
|
|
required: false
|
|
in: query
|
|
description: A page number within the paginated result set.
|
|
schema:
|
|
type: integer
|
|
- in: query
|
|
name: search
|
|
schema:
|
|
type: string
|
|
description: Search parks by name or description
|
|
- in: query
|
|
name: state
|
|
schema:
|
|
type: string
|
|
description: Filter by state/province
|
|
- in: query
|
|
name: status
|
|
schema:
|
|
type: string
|
|
description: Filter by park status (OPERATING, CLOSED_PERM, etc.)
|
|
tags:
|
|
- Parks
|
|
security:
|
|
- cookieAuth: []
|
|
- tokenAuth: []
|
|
- {}
|
|
responses:
|
|
'200':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/PaginatedParkListOutputList'
|
|
examples:
|
|
ParkListExample:
|
|
value:
|
|
count: 123
|
|
next: http://api.example.org/accounts/?page=4
|
|
previous: http://api.example.org/accounts/?page=2
|
|
results:
|
|
- id: 1
|
|
name: Cedar Point
|
|
slug: cedar-point
|
|
status: OPERATING
|
|
description: America's Roller Coast
|
|
average_rating: 4.5
|
|
coaster_count: 17
|
|
ride_count: 70
|
|
location:
|
|
city: Sandusky
|
|
state: Ohio
|
|
country: United States
|
|
operator:
|
|
id: 1
|
|
name: Cedar Fair
|
|
slug: cedar-fair
|
|
summary: Example park list response
|
|
description: A typical park in the list view
|
|
description: ''
|
|
post:
|
|
operationId: v1_parks_create
|
|
description: Create a new theme park. Requires authentication.
|
|
summary: Create park
|
|
tags:
|
|
- Parks
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/ParkCreateInputRequest'
|
|
application/x-www-form-urlencoded:
|
|
schema:
|
|
$ref: '#/components/schemas/ParkCreateInputRequest'
|
|
multipart/form-data:
|
|
schema:
|
|
$ref: '#/components/schemas/ParkCreateInputRequest'
|
|
required: true
|
|
security:
|
|
- cookieAuth: []
|
|
- tokenAuth: []
|
|
responses:
|
|
'201':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/ParkDetailOutput'
|
|
examples:
|
|
ParkDetailExample:
|
|
value:
|
|
id: 1
|
|
name: Cedar Point
|
|
slug: cedar-point
|
|
status: OPERATING
|
|
description: America's Roller Coast
|
|
opening_date: '1870-01-01'
|
|
website: https://cedarpoint.com
|
|
size_acres: 364.0
|
|
average_rating: 4.5
|
|
coaster_count: 17
|
|
ride_count: 70
|
|
location:
|
|
latitude: 41.4793
|
|
longitude: -82.6833
|
|
city: Sandusky
|
|
state: Ohio
|
|
country: United States
|
|
operator:
|
|
id: 1
|
|
name: Cedar Fair
|
|
slug: cedar-fair
|
|
summary: Example park detail response
|
|
description: A complete park detail response
|
|
description: ''
|
|
'400':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
additionalProperties: {}
|
|
description: ''
|
|
'401':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
additionalProperties: {}
|
|
description: ''
|
|
/api/v1/parks/{slug}/:
|
|
get:
|
|
operationId: v1_parks_retrieve
|
|
description: Retrieve detailed information about a specific park.
|
|
summary: Get park details
|
|
parameters:
|
|
- in: path
|
|
name: slug
|
|
schema:
|
|
type: string
|
|
required: true
|
|
tags:
|
|
- Parks
|
|
security:
|
|
- cookieAuth: []
|
|
- tokenAuth: []
|
|
- {}
|
|
responses:
|
|
'200':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/ParkDetailOutput'
|
|
examples:
|
|
ParkDetailExample:
|
|
value:
|
|
id: 1
|
|
name: Cedar Point
|
|
slug: cedar-point
|
|
status: OPERATING
|
|
description: America's Roller Coast
|
|
opening_date: '1870-01-01'
|
|
website: https://cedarpoint.com
|
|
size_acres: 364.0
|
|
average_rating: 4.5
|
|
coaster_count: 17
|
|
ride_count: 70
|
|
location:
|
|
latitude: 41.4793
|
|
longitude: -82.6833
|
|
city: Sandusky
|
|
state: Ohio
|
|
country: United States
|
|
operator:
|
|
id: 1
|
|
name: Cedar Fair
|
|
slug: cedar-fair
|
|
summary: Example park detail response
|
|
description: A complete park detail response
|
|
description: ''
|
|
'404':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
additionalProperties: {}
|
|
description: ''
|
|
put:
|
|
operationId: v1_parks_update
|
|
description: Update a park's information. Requires authentication.
|
|
summary: Update park
|
|
parameters:
|
|
- in: path
|
|
name: slug
|
|
schema:
|
|
type: string
|
|
required: true
|
|
tags:
|
|
- Parks
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/ParkUpdateInputRequest'
|
|
application/x-www-form-urlencoded:
|
|
schema:
|
|
$ref: '#/components/schemas/ParkUpdateInputRequest'
|
|
multipart/form-data:
|
|
schema:
|
|
$ref: '#/components/schemas/ParkUpdateInputRequest'
|
|
security:
|
|
- cookieAuth: []
|
|
- tokenAuth: []
|
|
responses:
|
|
'200':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/ParkDetailOutput'
|
|
examples:
|
|
ParkDetailExample:
|
|
value:
|
|
id: 1
|
|
name: Cedar Point
|
|
slug: cedar-point
|
|
status: OPERATING
|
|
description: America's Roller Coast
|
|
opening_date: '1870-01-01'
|
|
website: https://cedarpoint.com
|
|
size_acres: 364.0
|
|
average_rating: 4.5
|
|
coaster_count: 17
|
|
ride_count: 70
|
|
location:
|
|
latitude: 41.4793
|
|
longitude: -82.6833
|
|
city: Sandusky
|
|
state: Ohio
|
|
country: United States
|
|
operator:
|
|
id: 1
|
|
name: Cedar Fair
|
|
slug: cedar-fair
|
|
summary: Example park detail response
|
|
description: A complete park detail response
|
|
description: ''
|
|
'400':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
additionalProperties: {}
|
|
description: ''
|
|
'401':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
additionalProperties: {}
|
|
description: ''
|
|
'404':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
additionalProperties: {}
|
|
description: ''
|
|
patch:
|
|
operationId: v1_parks_partial_update
|
|
description: Partially update a park's information. Requires authentication.
|
|
summary: Partially update park
|
|
parameters:
|
|
- in: path
|
|
name: slug
|
|
schema:
|
|
type: string
|
|
required: true
|
|
tags:
|
|
- Parks
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/PatchedParkUpdateInputRequest'
|
|
application/x-www-form-urlencoded:
|
|
schema:
|
|
$ref: '#/components/schemas/PatchedParkUpdateInputRequest'
|
|
multipart/form-data:
|
|
schema:
|
|
$ref: '#/components/schemas/PatchedParkUpdateInputRequest'
|
|
security:
|
|
- cookieAuth: []
|
|
- tokenAuth: []
|
|
responses:
|
|
'200':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/ParkDetailOutput'
|
|
examples:
|
|
ParkDetailExample:
|
|
value:
|
|
id: 1
|
|
name: Cedar Point
|
|
slug: cedar-point
|
|
status: OPERATING
|
|
description: America's Roller Coast
|
|
opening_date: '1870-01-01'
|
|
website: https://cedarpoint.com
|
|
size_acres: 364.0
|
|
average_rating: 4.5
|
|
coaster_count: 17
|
|
ride_count: 70
|
|
location:
|
|
latitude: 41.4793
|
|
longitude: -82.6833
|
|
city: Sandusky
|
|
state: Ohio
|
|
country: United States
|
|
operator:
|
|
id: 1
|
|
name: Cedar Fair
|
|
slug: cedar-fair
|
|
summary: Example park detail response
|
|
description: A complete park detail response
|
|
description: ''
|
|
'400':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
additionalProperties: {}
|
|
description: ''
|
|
'401':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
additionalProperties: {}
|
|
description: ''
|
|
'404':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
additionalProperties: {}
|
|
description: ''
|
|
delete:
|
|
operationId: v1_parks_destroy
|
|
description: Delete a park. Requires authentication and appropriate permissions.
|
|
summary: Delete park
|
|
parameters:
|
|
- in: path
|
|
name: slug
|
|
schema:
|
|
type: string
|
|
required: true
|
|
tags:
|
|
- Parks
|
|
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/{slug}/reviews/:
|
|
get:
|
|
operationId: v1_parks_reviews_list
|
|
description: Retrieve reviews for a specific park.
|
|
summary: Get park reviews
|
|
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
|
|
- in: path
|
|
name: slug
|
|
schema:
|
|
type: string
|
|
required: true
|
|
tags:
|
|
- Parks
|
|
- Reviews
|
|
security:
|
|
- cookieAuth: []
|
|
- tokenAuth: []
|
|
- {}
|
|
responses:
|
|
'200':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/PaginatedParkReviewOutputList'
|
|
description: ''
|
|
/api/v1/parks/stats/:
|
|
get:
|
|
operationId: v1_parks_stats_retrieve
|
|
description: Retrieve global statistics about all parks in the system.
|
|
summary: Get park statistics
|
|
tags:
|
|
- Parks
|
|
- Statistics
|
|
security:
|
|
- cookieAuth: []
|
|
- tokenAuth: []
|
|
- {}
|
|
responses:
|
|
'200':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/ParkStatsOutput'
|
|
description: ''
|
|
/api/v1/ref/parks/:
|
|
get:
|
|
operationId: v1_ref_parks_list
|
|
description: |-
|
|
Read-only ViewSet for parks.
|
|
|
|
Provides list and retrieve operations for parks without
|
|
modification capabilities. Useful for reference data.
|
|
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:
|
|
- v1
|
|
security:
|
|
- cookieAuth: []
|
|
- tokenAuth: []
|
|
responses:
|
|
'200':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/PaginatedParkListOutputList'
|
|
examples:
|
|
ParkListExample:
|
|
value:
|
|
count: 123
|
|
next: http://api.example.org/accounts/?page=4
|
|
previous: http://api.example.org/accounts/?page=2
|
|
results:
|
|
- id: 1
|
|
name: Cedar Point
|
|
slug: cedar-point
|
|
status: OPERATING
|
|
description: America's Roller Coast
|
|
average_rating: 4.5
|
|
coaster_count: 17
|
|
ride_count: 70
|
|
location:
|
|
city: Sandusky
|
|
state: Ohio
|
|
country: United States
|
|
operator:
|
|
id: 1
|
|
name: Cedar Fair
|
|
slug: cedar-fair
|
|
summary: Example park list response
|
|
description: A typical park in the list view
|
|
description: ''
|
|
/api/v1/ref/parks/{slug}/:
|
|
get:
|
|
operationId: v1_ref_parks_retrieve
|
|
description: |-
|
|
Read-only ViewSet for parks.
|
|
|
|
Provides list and retrieve operations for parks without
|
|
modification capabilities. Useful for reference data.
|
|
parameters:
|
|
- in: path
|
|
name: slug
|
|
schema:
|
|
type: string
|
|
required: true
|
|
tags:
|
|
- v1
|
|
security:
|
|
- cookieAuth: []
|
|
- tokenAuth: []
|
|
responses:
|
|
'200':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/ParkDetailOutput'
|
|
examples:
|
|
ParkDetailExample:
|
|
value:
|
|
id: 1
|
|
name: Cedar Point
|
|
slug: cedar-point
|
|
status: OPERATING
|
|
description: America's Roller Coast
|
|
opening_date: '1870-01-01'
|
|
website: https://cedarpoint.com
|
|
size_acres: 364.0
|
|
average_rating: 4.5
|
|
coaster_count: 17
|
|
ride_count: 70
|
|
location:
|
|
latitude: 41.4793
|
|
longitude: -82.6833
|
|
city: Sandusky
|
|
state: Ohio
|
|
country: United States
|
|
operator:
|
|
id: 1
|
|
name: Cedar Fair
|
|
slug: cedar-fair
|
|
summary: Example park detail response
|
|
description: A complete park detail response
|
|
description: ''
|
|
/api/v1/ref/rides/:
|
|
get:
|
|
operationId: v1_ref_rides_list
|
|
description: |-
|
|
Read-only ViewSet for rides.
|
|
|
|
Provides list and retrieve operations for rides without
|
|
modification capabilities. Useful for reference data.
|
|
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:
|
|
- v1
|
|
security:
|
|
- cookieAuth: []
|
|
- tokenAuth: []
|
|
responses:
|
|
'200':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/PaginatedRideListOutputList'
|
|
examples:
|
|
RideListExample:
|
|
value:
|
|
count: 123
|
|
next: http://api.example.org/accounts/?page=4
|
|
previous: http://api.example.org/accounts/?page=2
|
|
results:
|
|
- 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: ''
|
|
/api/v1/ref/rides/{slug}/:
|
|
get:
|
|
operationId: v1_ref_rides_retrieve
|
|
description: |-
|
|
Read-only ViewSet for rides.
|
|
|
|
Provides list and retrieve operations for rides without
|
|
modification capabilities. Useful for reference data.
|
|
parameters:
|
|
- in: path
|
|
name: slug
|
|
schema:
|
|
type: string
|
|
required: true
|
|
tags:
|
|
- v1
|
|
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/:
|
|
get:
|
|
operationId: v1_rides_list
|
|
description: Retrieve a paginated list of rides with filtering and search capabilities.
|
|
summary: List rides
|
|
parameters:
|
|
- in: query
|
|
name: category
|
|
schema:
|
|
type: string
|
|
description: Filter by ride category (RC, DR, FR, WR, TR, OT)
|
|
- in: query
|
|
name: ordering
|
|
schema:
|
|
type: string
|
|
description: Order results by field (name, opening_date, average_rating, etc.)
|
|
- name: page
|
|
required: false
|
|
in: query
|
|
description: A page number within the paginated result set.
|
|
schema:
|
|
type: integer
|
|
- in: query
|
|
name: park_id
|
|
schema:
|
|
type: integer
|
|
description: Filter by park ID
|
|
- in: query
|
|
name: park_slug
|
|
schema:
|
|
type: string
|
|
description: Filter by park slug
|
|
- in: query
|
|
name: search
|
|
schema:
|
|
type: string
|
|
description: Search rides by name or description
|
|
- in: query
|
|
name: status
|
|
schema:
|
|
type: string
|
|
description: Filter by ride status
|
|
tags:
|
|
- Rides
|
|
security:
|
|
- cookieAuth: []
|
|
- tokenAuth: []
|
|
- {}
|
|
responses:
|
|
'200':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/PaginatedRideListOutputList'
|
|
examples:
|
|
RideListExample:
|
|
value:
|
|
count: 123
|
|
next: http://api.example.org/accounts/?page=4
|
|
previous: http://api.example.org/accounts/?page=2
|
|
results:
|
|
- 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: ''
|
|
post:
|
|
operationId: v1_rides_create
|
|
description: Create a new ride. Requires authentication.
|
|
summary: Create ride
|
|
tags:
|
|
- Rides
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/RideCreateInputRequest'
|
|
application/x-www-form-urlencoded:
|
|
schema:
|
|
$ref: '#/components/schemas/RideCreateInputRequest'
|
|
multipart/form-data:
|
|
schema:
|
|
$ref: '#/components/schemas/RideCreateInputRequest'
|
|
required: true
|
|
security:
|
|
- cookieAuth: []
|
|
- tokenAuth: []
|
|
responses:
|
|
'201':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/RideDetailOutput'
|
|
examples:
|
|
RideDetailExample:
|
|
value:
|
|
id: 1
|
|
name: Steel Vengeance
|
|
slug: steel-vengeance
|
|
category: ROLLER_COASTER
|
|
status: OPERATING
|
|
description: Hybrid roller coaster featuring RMC I-Box track
|
|
park:
|
|
id: 1
|
|
name: Cedar Point
|
|
slug: cedar-point
|
|
opening_date: '2018-05-05'
|
|
min_height_in: 48
|
|
capacity_per_hour: 1200
|
|
ride_duration_seconds: 150
|
|
average_rating: 4.8
|
|
manufacturer:
|
|
id: 1
|
|
name: Rocky Mountain Construction
|
|
slug: rocky-mountain-construction
|
|
summary: Example ride detail response
|
|
description: A complete ride detail response
|
|
description: ''
|
|
'400':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
additionalProperties: {}
|
|
description: ''
|
|
'401':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
additionalProperties: {}
|
|
description: ''
|
|
/api/v1/rides/{slug}/:
|
|
get:
|
|
operationId: v1_rides_retrieve
|
|
description: Retrieve detailed information about a specific ride.
|
|
summary: Get ride details
|
|
parameters:
|
|
- in: path
|
|
name: slug
|
|
schema:
|
|
type: string
|
|
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: ''
|
|
'404':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
additionalProperties: {}
|
|
description: ''
|
|
put:
|
|
operationId: v1_rides_update
|
|
description: Update a ride's information. Requires authentication.
|
|
summary: Update ride
|
|
parameters:
|
|
- in: path
|
|
name: slug
|
|
schema:
|
|
type: string
|
|
required: true
|
|
tags:
|
|
- Rides
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/RideUpdateInputRequest'
|
|
application/x-www-form-urlencoded:
|
|
schema:
|
|
$ref: '#/components/schemas/RideUpdateInputRequest'
|
|
multipart/form-data:
|
|
schema:
|
|
$ref: '#/components/schemas/RideUpdateInputRequest'
|
|
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: ''
|
|
'400':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
additionalProperties: {}
|
|
description: ''
|
|
'401':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
additionalProperties: {}
|
|
description: ''
|
|
'404':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
additionalProperties: {}
|
|
description: ''
|
|
patch:
|
|
operationId: v1_rides_partial_update
|
|
description: Partially update a ride's information. Requires authentication.
|
|
summary: Partially update ride
|
|
parameters:
|
|
- in: path
|
|
name: slug
|
|
schema:
|
|
type: string
|
|
required: true
|
|
tags:
|
|
- Rides
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/PatchedRideUpdateInputRequest'
|
|
application/x-www-form-urlencoded:
|
|
schema:
|
|
$ref: '#/components/schemas/PatchedRideUpdateInputRequest'
|
|
multipart/form-data:
|
|
schema:
|
|
$ref: '#/components/schemas/PatchedRideUpdateInputRequest'
|
|
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: ''
|
|
'400':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
additionalProperties: {}
|
|
description: ''
|
|
'401':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
additionalProperties: {}
|
|
description: ''
|
|
'404':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
additionalProperties: {}
|
|
description: ''
|
|
delete:
|
|
operationId: v1_rides_destroy
|
|
description: Delete a ride. Requires authentication and appropriate permissions.
|
|
summary: Delete ride
|
|
parameters:
|
|
- in: path
|
|
name: slug
|
|
schema:
|
|
type: string
|
|
required: true
|
|
tags:
|
|
- Rides
|
|
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/rides/stats/:
|
|
get:
|
|
operationId: v1_rides_stats_retrieve
|
|
description: Retrieve global statistics about all rides in the system.
|
|
summary: Get ride statistics
|
|
tags:
|
|
- Rides
|
|
- Statistics
|
|
security:
|
|
- cookieAuth: []
|
|
- tokenAuth: []
|
|
- {}
|
|
responses:
|
|
'200':
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: '#/components/schemas/RideStatsOutput'
|
|
description: ''
|
|
/health/api/:
|
|
get:
|
|
operationId: health_api_retrieve
|
|
description: Return comprehensive health check information
|
|
tags:
|
|
- health
|
|
security:
|
|
- cookieAuth: []
|
|
- tokenAuth: []
|
|
- {}
|
|
responses:
|
|
'200':
|
|
description: No response body
|
|
/health/metrics/:
|
|
get:
|
|
operationId: health_metrics_retrieve
|
|
description: Return performance metrics and analysis
|
|
tags:
|
|
- health
|
|
security:
|
|
- cookieAuth: []
|
|
- tokenAuth: []
|
|
- {}
|
|
responses:
|
|
'200':
|
|
description: No response body
|
|
components:
|
|
schemas:
|
|
CompanyOutput:
|
|
type: object
|
|
description: Shared serializer for company data.
|
|
properties:
|
|
id:
|
|
type: integer
|
|
name:
|
|
type: string
|
|
slug:
|
|
type: string
|
|
roles:
|
|
type: array
|
|
items:
|
|
type: string
|
|
required:
|
|
- id
|
|
- name
|
|
- slug
|
|
LocationOutput:
|
|
type: object
|
|
description: Shared serializer for location data.
|
|
properties:
|
|
latitude:
|
|
type: string
|
|
readOnly: true
|
|
longitude:
|
|
type: string
|
|
readOnly: true
|
|
city:
|
|
type: string
|
|
readOnly: true
|
|
state:
|
|
type: string
|
|
readOnly: true
|
|
country:
|
|
type: string
|
|
readOnly: true
|
|
formatted_address:
|
|
type: string
|
|
readOnly: true
|
|
required:
|
|
- city
|
|
- country
|
|
- formatted_address
|
|
- latitude
|
|
- longitude
|
|
- state
|
|
PaginatedParkFrontendList:
|
|
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/ParkFrontend'
|
|
PaginatedParkListOutputList:
|
|
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/ParkListOutput'
|
|
PaginatedParkReviewOutputList:
|
|
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/ParkReviewOutput'
|
|
PaginatedRideFrontendList:
|
|
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/RideFrontend'
|
|
PaginatedRideListOutputList:
|
|
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/RideListOutput'
|
|
ParkAreaOutput:
|
|
type: object
|
|
description: Output serializer for park area data.
|
|
properties:
|
|
id:
|
|
type: integer
|
|
name:
|
|
type: string
|
|
slug:
|
|
type: string
|
|
description:
|
|
type: string
|
|
required:
|
|
- description
|
|
- id
|
|
- name
|
|
- slug
|
|
ParkCreateInputRequest:
|
|
type: object
|
|
description: Input serializer for creating parks.
|
|
properties:
|
|
name:
|
|
type: string
|
|
minLength: 1
|
|
maxLength: 255
|
|
description:
|
|
type: string
|
|
default: ''
|
|
status:
|
|
enum:
|
|
- OPERATING
|
|
- CLOSED_TEMP
|
|
- CLOSED_PERM
|
|
- UNDER_CONSTRUCTION
|
|
- DEMOLISHED
|
|
- RELOCATED
|
|
type: string
|
|
description: |-
|
|
* `OPERATING` - Operating
|
|
* `CLOSED_TEMP` - Temporarily Closed
|
|
* `CLOSED_PERM` - Permanently Closed
|
|
* `UNDER_CONSTRUCTION` - Under Construction
|
|
* `DEMOLISHED` - Demolished
|
|
* `RELOCATED` - Relocated
|
|
x-spec-enum-id: 0e3d3f905847ed5f
|
|
default: OPERATING
|
|
opening_date:
|
|
type: string
|
|
format: date
|
|
nullable: true
|
|
closing_date:
|
|
type: string
|
|
format: date
|
|
nullable: true
|
|
operating_season:
|
|
type: string
|
|
maxLength: 255
|
|
size_acres:
|
|
type: string
|
|
format: decimal
|
|
pattern: ^-?\d{0,8}(?:\.\d{0,2})?$
|
|
nullable: true
|
|
website:
|
|
type: string
|
|
format: uri
|
|
operator_id:
|
|
type: integer
|
|
property_owner_id:
|
|
type: integer
|
|
nullable: true
|
|
required:
|
|
- name
|
|
- operator_id
|
|
ParkDetailFrontend:
|
|
type: object
|
|
description: |-
|
|
Extended frontend serializer for park details.
|
|
Includes additional fields needed for park detail view.
|
|
properties:
|
|
id:
|
|
type: integer
|
|
name:
|
|
type: string
|
|
slug:
|
|
type: string
|
|
location:
|
|
type: string
|
|
readOnly: true
|
|
operator:
|
|
type: string
|
|
readOnly: true
|
|
openingYear:
|
|
type: string
|
|
readOnly: true
|
|
status:
|
|
type: string
|
|
readOnly: true
|
|
description:
|
|
type: string
|
|
website:
|
|
type: string
|
|
format: uri
|
|
imageUrl:
|
|
type: string
|
|
readOnly: true
|
|
averageRating:
|
|
type: string
|
|
readOnly: true
|
|
rideCount:
|
|
type: integer
|
|
nullable: true
|
|
coasterCount:
|
|
type: integer
|
|
nullable: true
|
|
sizeAcres:
|
|
type: string
|
|
format: decimal
|
|
pattern: ^-?\d{0,8}(?:\.\d{0,2})?$
|
|
nullable: true
|
|
operatingSeason:
|
|
type: string
|
|
required:
|
|
- averageRating
|
|
- coasterCount
|
|
- description
|
|
- id
|
|
- imageUrl
|
|
- location
|
|
- name
|
|
- openingYear
|
|
- operatingSeason
|
|
- operator
|
|
- rideCount
|
|
- sizeAcres
|
|
- slug
|
|
- status
|
|
- website
|
|
ParkDetailOutput:
|
|
type: object
|
|
description: Output serializer for park detail view.
|
|
properties:
|
|
id:
|
|
type: integer
|
|
name:
|
|
type: string
|
|
slug:
|
|
type: string
|
|
status:
|
|
type: string
|
|
description:
|
|
type: string
|
|
opening_date:
|
|
type: string
|
|
format: date
|
|
nullable: true
|
|
closing_date:
|
|
type: string
|
|
format: date
|
|
nullable: true
|
|
operating_season:
|
|
type: string
|
|
size_acres:
|
|
type: string
|
|
format: decimal
|
|
pattern: ^-?\d{0,8}(?:\.\d{0,2})?$
|
|
nullable: true
|
|
website:
|
|
type: string
|
|
format: uri
|
|
average_rating:
|
|
type: string
|
|
format: decimal
|
|
pattern: ^-?\d{0,1}(?:\.\d{0,2})?$
|
|
nullable: true
|
|
coaster_count:
|
|
type: integer
|
|
nullable: true
|
|
ride_count:
|
|
type: integer
|
|
nullable: true
|
|
location:
|
|
allOf:
|
|
- $ref: '#/components/schemas/LocationOutput'
|
|
nullable: true
|
|
operator:
|
|
$ref: '#/components/schemas/CompanyOutput'
|
|
property_owner:
|
|
allOf:
|
|
- $ref: '#/components/schemas/CompanyOutput'
|
|
nullable: true
|
|
areas:
|
|
type: array
|
|
items:
|
|
$ref: '#/components/schemas/ParkAreaOutput'
|
|
created_at:
|
|
type: string
|
|
format: date-time
|
|
updated_at:
|
|
type: string
|
|
format: date-time
|
|
required:
|
|
- areas
|
|
- average_rating
|
|
- closing_date
|
|
- coaster_count
|
|
- created_at
|
|
- description
|
|
- id
|
|
- location
|
|
- name
|
|
- opening_date
|
|
- operating_season
|
|
- operator
|
|
- property_owner
|
|
- ride_count
|
|
- size_acres
|
|
- slug
|
|
- status
|
|
- updated_at
|
|
- website
|
|
ParkFrontend:
|
|
type: object
|
|
description: |-
|
|
Frontend-compatible serializer for parks.
|
|
Matches the Park interface in frontend/src/stores/parks.ts
|
|
properties:
|
|
id:
|
|
type: integer
|
|
name:
|
|
type: string
|
|
slug:
|
|
type: string
|
|
location:
|
|
type: string
|
|
readOnly: true
|
|
operator:
|
|
type: string
|
|
readOnly: true
|
|
openingYear:
|
|
type: string
|
|
readOnly: true
|
|
status:
|
|
type: string
|
|
readOnly: true
|
|
description:
|
|
type: string
|
|
website:
|
|
type: string
|
|
format: uri
|
|
imageUrl:
|
|
type: string
|
|
readOnly: true
|
|
required:
|
|
- description
|
|
- id
|
|
- imageUrl
|
|
- location
|
|
- name
|
|
- openingYear
|
|
- operator
|
|
- slug
|
|
- status
|
|
- website
|
|
ParkListOutput:
|
|
type: object
|
|
description: Output serializer for park list view.
|
|
properties:
|
|
id:
|
|
type: integer
|
|
name:
|
|
type: string
|
|
slug:
|
|
type: string
|
|
status:
|
|
type: string
|
|
description:
|
|
type: string
|
|
average_rating:
|
|
type: string
|
|
format: decimal
|
|
pattern: ^-?\d{0,1}(?:\.\d{0,2})?$
|
|
nullable: true
|
|
coaster_count:
|
|
type: integer
|
|
nullable: true
|
|
ride_count:
|
|
type: integer
|
|
nullable: true
|
|
location:
|
|
allOf:
|
|
- $ref: '#/components/schemas/LocationOutput'
|
|
nullable: true
|
|
operator:
|
|
$ref: '#/components/schemas/CompanyOutput'
|
|
created_at:
|
|
type: string
|
|
format: date-time
|
|
updated_at:
|
|
type: string
|
|
format: date-time
|
|
required:
|
|
- average_rating
|
|
- coaster_count
|
|
- created_at
|
|
- description
|
|
- id
|
|
- location
|
|
- name
|
|
- operator
|
|
- ride_count
|
|
- slug
|
|
- status
|
|
- updated_at
|
|
ParkReviewOutput:
|
|
type: object
|
|
description: Output serializer for park reviews.
|
|
properties:
|
|
id:
|
|
type: integer
|
|
rating:
|
|
type: integer
|
|
title:
|
|
type: string
|
|
content:
|
|
type: string
|
|
visit_date:
|
|
type: string
|
|
format: date
|
|
created_at:
|
|
type: string
|
|
format: date-time
|
|
user:
|
|
type: string
|
|
readOnly: true
|
|
required:
|
|
- content
|
|
- created_at
|
|
- id
|
|
- rating
|
|
- title
|
|
- user
|
|
- visit_date
|
|
ParkStatsOutput:
|
|
type: object
|
|
description: Output serializer for park statistics.
|
|
properties:
|
|
total_parks:
|
|
type: integer
|
|
operating_parks:
|
|
type: integer
|
|
closed_parks:
|
|
type: integer
|
|
under_construction:
|
|
type: integer
|
|
average_rating:
|
|
type: string
|
|
format: decimal
|
|
pattern: ^-?\d{0,1}(?:\.\d{0,2})?$
|
|
nullable: true
|
|
average_coaster_count:
|
|
type: string
|
|
format: decimal
|
|
pattern: ^-?\d{0,3}(?:\.\d{0,2})?$
|
|
nullable: true
|
|
top_countries:
|
|
type: array
|
|
items:
|
|
type: object
|
|
additionalProperties: {}
|
|
recently_added_count:
|
|
type: integer
|
|
required:
|
|
- average_coaster_count
|
|
- average_rating
|
|
- closed_parks
|
|
- operating_parks
|
|
- recently_added_count
|
|
- top_countries
|
|
- total_parks
|
|
- under_construction
|
|
ParkUpdateInputRequest:
|
|
type: object
|
|
description: Input serializer for updating parks.
|
|
properties:
|
|
name:
|
|
type: string
|
|
minLength: 1
|
|
maxLength: 255
|
|
description:
|
|
type: string
|
|
status:
|
|
enum:
|
|
- OPERATING
|
|
- CLOSED_TEMP
|
|
- CLOSED_PERM
|
|
- UNDER_CONSTRUCTION
|
|
- DEMOLISHED
|
|
- RELOCATED
|
|
type: string
|
|
description: |-
|
|
* `OPERATING` - Operating
|
|
* `CLOSED_TEMP` - Temporarily Closed
|
|
* `CLOSED_PERM` - Permanently Closed
|
|
* `UNDER_CONSTRUCTION` - Under Construction
|
|
* `DEMOLISHED` - Demolished
|
|
* `RELOCATED` - Relocated
|
|
x-spec-enum-id: 0e3d3f905847ed5f
|
|
opening_date:
|
|
type: string
|
|
format: date
|
|
nullable: true
|
|
closing_date:
|
|
type: string
|
|
format: date
|
|
nullable: true
|
|
operating_season:
|
|
type: string
|
|
maxLength: 255
|
|
size_acres:
|
|
type: string
|
|
format: decimal
|
|
pattern: ^-?\d{0,8}(?:\.\d{0,2})?$
|
|
nullable: true
|
|
website:
|
|
type: string
|
|
format: uri
|
|
operator_id:
|
|
type: integer
|
|
property_owner_id:
|
|
type: integer
|
|
nullable: true
|
|
PatchedParkUpdateInputRequest:
|
|
type: object
|
|
description: Input serializer for updating parks.
|
|
properties:
|
|
name:
|
|
type: string
|
|
minLength: 1
|
|
maxLength: 255
|
|
description:
|
|
type: string
|
|
status:
|
|
enum:
|
|
- OPERATING
|
|
- CLOSED_TEMP
|
|
- CLOSED_PERM
|
|
- UNDER_CONSTRUCTION
|
|
- DEMOLISHED
|
|
- RELOCATED
|
|
type: string
|
|
description: |-
|
|
* `OPERATING` - Operating
|
|
* `CLOSED_TEMP` - Temporarily Closed
|
|
* `CLOSED_PERM` - Permanently Closed
|
|
* `UNDER_CONSTRUCTION` - Under Construction
|
|
* `DEMOLISHED` - Demolished
|
|
* `RELOCATED` - Relocated
|
|
x-spec-enum-id: 0e3d3f905847ed5f
|
|
opening_date:
|
|
type: string
|
|
format: date
|
|
nullable: true
|
|
closing_date:
|
|
type: string
|
|
format: date
|
|
nullable: true
|
|
operating_season:
|
|
type: string
|
|
maxLength: 255
|
|
size_acres:
|
|
type: string
|
|
format: decimal
|
|
pattern: ^-?\d{0,8}(?:\.\d{0,2})?$
|
|
nullable: true
|
|
website:
|
|
type: string
|
|
format: uri
|
|
operator_id:
|
|
type: integer
|
|
property_owner_id:
|
|
type: integer
|
|
nullable: true
|
|
PatchedRideUpdateInputRequest:
|
|
type: object
|
|
description: Input serializer for updating rides.
|
|
properties:
|
|
name:
|
|
type: string
|
|
minLength: 1
|
|
maxLength: 255
|
|
description:
|
|
type: string
|
|
category:
|
|
enum:
|
|
- ''
|
|
- RC
|
|
- DR
|
|
- FR
|
|
- WR
|
|
- TR
|
|
- OT
|
|
type: string
|
|
description: |-
|
|
* `` - Select ride type
|
|
* `RC` - Roller Coaster
|
|
* `DR` - Dark Ride
|
|
* `FR` - Flat Ride
|
|
* `WR` - Water Ride
|
|
* `TR` - Transport
|
|
* `OT` - Other
|
|
x-spec-enum-id: 5c57e6fc7d8e9340
|
|
status:
|
|
enum:
|
|
- ''
|
|
- OPERATING
|
|
- CLOSED_TEMP
|
|
- SBNO
|
|
- CLOSING
|
|
- CLOSED_PERM
|
|
- UNDER_CONSTRUCTION
|
|
- DEMOLISHED
|
|
- RELOCATED
|
|
type: string
|
|
description: |-
|
|
* `` - Select status
|
|
* `OPERATING` - Operating
|
|
* `CLOSED_TEMP` - Temporarily Closed
|
|
* `SBNO` - Standing But Not Operating
|
|
* `CLOSING` - Closing
|
|
* `CLOSED_PERM` - Permanently Closed
|
|
* `UNDER_CONSTRUCTION` - Under Construction
|
|
* `DEMOLISHED` - Demolished
|
|
* `RELOCATED` - Relocated
|
|
x-spec-enum-id: 1479301ee25596a0
|
|
post_closing_status:
|
|
enum:
|
|
- SBNO
|
|
- CLOSED_PERM
|
|
- null
|
|
type: string
|
|
description: |-
|
|
* `SBNO` - Standing But Not Operating
|
|
* `CLOSED_PERM` - Permanently Closed
|
|
x-spec-enum-id: 6014d88333e8ac3f
|
|
nullable: true
|
|
park_id:
|
|
type: integer
|
|
park_area_id:
|
|
type: integer
|
|
nullable: 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
|
|
maximum: 90
|
|
minimum: 30
|
|
nullable: true
|
|
max_height_in:
|
|
type: integer
|
|
maximum: 90
|
|
minimum: 30
|
|
nullable: true
|
|
capacity_per_hour:
|
|
type: integer
|
|
minimum: 1
|
|
nullable: true
|
|
ride_duration_seconds:
|
|
type: integer
|
|
minimum: 1
|
|
nullable: true
|
|
manufacturer_id:
|
|
type: integer
|
|
nullable: true
|
|
designer_id:
|
|
type: integer
|
|
nullable: true
|
|
ride_model_id:
|
|
type: integer
|
|
nullable: true
|
|
RideCreateInputRequest:
|
|
type: object
|
|
description: Input serializer for creating rides.
|
|
properties:
|
|
name:
|
|
type: string
|
|
minLength: 1
|
|
maxLength: 255
|
|
description:
|
|
type: string
|
|
default: ''
|
|
category:
|
|
enum:
|
|
- ''
|
|
- RC
|
|
- DR
|
|
- FR
|
|
- WR
|
|
- TR
|
|
- OT
|
|
type: string
|
|
description: |-
|
|
* `` - Select ride type
|
|
* `RC` - Roller Coaster
|
|
* `DR` - Dark Ride
|
|
* `FR` - Flat Ride
|
|
* `WR` - Water Ride
|
|
* `TR` - Transport
|
|
* `OT` - Other
|
|
x-spec-enum-id: 5c57e6fc7d8e9340
|
|
status:
|
|
enum:
|
|
- ''
|
|
- OPERATING
|
|
- CLOSED_TEMP
|
|
- SBNO
|
|
- CLOSING
|
|
- CLOSED_PERM
|
|
- UNDER_CONSTRUCTION
|
|
- DEMOLISHED
|
|
- RELOCATED
|
|
type: string
|
|
description: |-
|
|
* `` - Select status
|
|
* `OPERATING` - Operating
|
|
* `CLOSED_TEMP` - Temporarily Closed
|
|
* `SBNO` - Standing But Not Operating
|
|
* `CLOSING` - Closing
|
|
* `CLOSED_PERM` - Permanently Closed
|
|
* `UNDER_CONSTRUCTION` - Under Construction
|
|
* `DEMOLISHED` - Demolished
|
|
* `RELOCATED` - Relocated
|
|
x-spec-enum-id: 1479301ee25596a0
|
|
default: OPERATING
|
|
park_id:
|
|
type: integer
|
|
park_area_id:
|
|
type: integer
|
|
nullable: 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
|
|
maximum: 90
|
|
minimum: 30
|
|
nullable: true
|
|
max_height_in:
|
|
type: integer
|
|
maximum: 90
|
|
minimum: 30
|
|
nullable: true
|
|
capacity_per_hour:
|
|
type: integer
|
|
minimum: 1
|
|
nullable: true
|
|
ride_duration_seconds:
|
|
type: integer
|
|
minimum: 1
|
|
nullable: true
|
|
manufacturer_id:
|
|
type: integer
|
|
nullable: true
|
|
designer_id:
|
|
type: integer
|
|
nullable: true
|
|
ride_model_id:
|
|
type: integer
|
|
nullable: true
|
|
required:
|
|
- category
|
|
- name
|
|
- park_id
|
|
RideDetailFrontend:
|
|
type: object
|
|
description: |-
|
|
Extended frontend serializer for ride details.
|
|
Includes additional fields needed for ride detail view.
|
|
properties:
|
|
id:
|
|
type: integer
|
|
name:
|
|
type: string
|
|
slug:
|
|
type: string
|
|
parkId:
|
|
type: integer
|
|
parkName:
|
|
type: string
|
|
parkSlug:
|
|
type: string
|
|
category:
|
|
type: string
|
|
readOnly: true
|
|
manufacturer:
|
|
type: string
|
|
readOnly: true
|
|
designer:
|
|
type: string
|
|
readOnly: true
|
|
openingYear:
|
|
type: string
|
|
readOnly: true
|
|
height:
|
|
type: string
|
|
readOnly: true
|
|
speed:
|
|
type: string
|
|
readOnly: true
|
|
length:
|
|
type: string
|
|
readOnly: true
|
|
inversions:
|
|
type: string
|
|
readOnly: true
|
|
status:
|
|
type: string
|
|
readOnly: true
|
|
description:
|
|
type: string
|
|
imageUrl:
|
|
type: string
|
|
readOnly: true
|
|
thrillLevel:
|
|
type: string
|
|
readOnly: true
|
|
minHeightIn:
|
|
type: integer
|
|
nullable: true
|
|
maxHeightIn:
|
|
type: integer
|
|
nullable: true
|
|
capacityPerHour:
|
|
type: integer
|
|
nullable: true
|
|
rideDurationSeconds:
|
|
type: integer
|
|
nullable: true
|
|
averageRating:
|
|
type: string
|
|
readOnly: true
|
|
closingDate:
|
|
type: string
|
|
format: date
|
|
nullable: true
|
|
statusSince:
|
|
type: string
|
|
format: date
|
|
nullable: true
|
|
coasterStats:
|
|
type: string
|
|
readOnly: true
|
|
required:
|
|
- averageRating
|
|
- capacityPerHour
|
|
- category
|
|
- closingDate
|
|
- coasterStats
|
|
- description
|
|
- designer
|
|
- height
|
|
- id
|
|
- imageUrl
|
|
- inversions
|
|
- length
|
|
- manufacturer
|
|
- maxHeightIn
|
|
- minHeightIn
|
|
- name
|
|
- openingYear
|
|
- parkId
|
|
- parkName
|
|
- parkSlug
|
|
- rideDurationSeconds
|
|
- slug
|
|
- speed
|
|
- status
|
|
- statusSince
|
|
- thrillLevel
|
|
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: string
|
|
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: string
|
|
readOnly: true
|
|
designer:
|
|
type: string
|
|
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
|
|
RideFrontend:
|
|
type: object
|
|
description: |-
|
|
Frontend-compatible serializer for rides.
|
|
Matches the Ride interface in frontend/src/stores/rides.ts
|
|
properties:
|
|
id:
|
|
type: integer
|
|
name:
|
|
type: string
|
|
slug:
|
|
type: string
|
|
parkId:
|
|
type: integer
|
|
parkName:
|
|
type: string
|
|
parkSlug:
|
|
type: string
|
|
category:
|
|
type: string
|
|
readOnly: true
|
|
manufacturer:
|
|
type: string
|
|
readOnly: true
|
|
designer:
|
|
type: string
|
|
readOnly: true
|
|
openingYear:
|
|
type: string
|
|
readOnly: true
|
|
height:
|
|
type: string
|
|
readOnly: true
|
|
speed:
|
|
type: string
|
|
readOnly: true
|
|
length:
|
|
type: string
|
|
readOnly: true
|
|
inversions:
|
|
type: string
|
|
readOnly: true
|
|
status:
|
|
type: string
|
|
readOnly: true
|
|
description:
|
|
type: string
|
|
imageUrl:
|
|
type: string
|
|
readOnly: true
|
|
thrillLevel:
|
|
type: string
|
|
readOnly: true
|
|
required:
|
|
- category
|
|
- description
|
|
- designer
|
|
- height
|
|
- id
|
|
- imageUrl
|
|
- inversions
|
|
- length
|
|
- manufacturer
|
|
- name
|
|
- openingYear
|
|
- parkId
|
|
- parkName
|
|
- parkSlug
|
|
- slug
|
|
- speed
|
|
- status
|
|
- thrillLevel
|
|
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: string
|
|
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
|
|
RideStatsOutput:
|
|
type: object
|
|
description: Output serializer for ride statistics.
|
|
properties:
|
|
total_rides:
|
|
type: integer
|
|
operating_rides:
|
|
type: integer
|
|
closed_rides:
|
|
type: integer
|
|
under_construction:
|
|
type: integer
|
|
rides_by_category:
|
|
type: object
|
|
additionalProperties: {}
|
|
average_rating:
|
|
type: string
|
|
format: decimal
|
|
pattern: ^-?\d{0,1}(?:\.\d{0,2})?$
|
|
nullable: true
|
|
average_capacity:
|
|
type: string
|
|
format: decimal
|
|
pattern: ^-?\d{0,6}(?:\.\d{0,2})?$
|
|
nullable: true
|
|
top_manufacturers:
|
|
type: array
|
|
items:
|
|
type: object
|
|
additionalProperties: {}
|
|
recently_added_count:
|
|
type: integer
|
|
required:
|
|
- average_capacity
|
|
- average_rating
|
|
- closed_rides
|
|
- operating_rides
|
|
- recently_added_count
|
|
- rides_by_category
|
|
- top_manufacturers
|
|
- total_rides
|
|
- under_construction
|
|
RideUpdateInputRequest:
|
|
type: object
|
|
description: Input serializer for updating rides.
|
|
properties:
|
|
name:
|
|
type: string
|
|
minLength: 1
|
|
maxLength: 255
|
|
description:
|
|
type: string
|
|
category:
|
|
enum:
|
|
- ''
|
|
- RC
|
|
- DR
|
|
- FR
|
|
- WR
|
|
- TR
|
|
- OT
|
|
type: string
|
|
description: |-
|
|
* `` - Select ride type
|
|
* `RC` - Roller Coaster
|
|
* `DR` - Dark Ride
|
|
* `FR` - Flat Ride
|
|
* `WR` - Water Ride
|
|
* `TR` - Transport
|
|
* `OT` - Other
|
|
x-spec-enum-id: 5c57e6fc7d8e9340
|
|
status:
|
|
enum:
|
|
- ''
|
|
- OPERATING
|
|
- CLOSED_TEMP
|
|
- SBNO
|
|
- CLOSING
|
|
- CLOSED_PERM
|
|
- UNDER_CONSTRUCTION
|
|
- DEMOLISHED
|
|
- RELOCATED
|
|
type: string
|
|
description: |-
|
|
* `` - Select status
|
|
* `OPERATING` - Operating
|
|
* `CLOSED_TEMP` - Temporarily Closed
|
|
* `SBNO` - Standing But Not Operating
|
|
* `CLOSING` - Closing
|
|
* `CLOSED_PERM` - Permanently Closed
|
|
* `UNDER_CONSTRUCTION` - Under Construction
|
|
* `DEMOLISHED` - Demolished
|
|
* `RELOCATED` - Relocated
|
|
x-spec-enum-id: 1479301ee25596a0
|
|
post_closing_status:
|
|
enum:
|
|
- SBNO
|
|
- CLOSED_PERM
|
|
- null
|
|
type: string
|
|
description: |-
|
|
* `SBNO` - Standing But Not Operating
|
|
* `CLOSED_PERM` - Permanently Closed
|
|
x-spec-enum-id: 6014d88333e8ac3f
|
|
nullable: true
|
|
park_id:
|
|
type: integer
|
|
park_area_id:
|
|
type: integer
|
|
nullable: 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
|
|
maximum: 90
|
|
minimum: 30
|
|
nullable: true
|
|
max_height_in:
|
|
type: integer
|
|
maximum: 90
|
|
minimum: 30
|
|
nullable: true
|
|
capacity_per_hour:
|
|
type: integer
|
|
minimum: 1
|
|
nullable: true
|
|
ride_duration_seconds:
|
|
type: integer
|
|
minimum: 1
|
|
nullable: true
|
|
manufacturer_id:
|
|
type: integer
|
|
nullable: true
|
|
designer_id:
|
|
type: integer
|
|
nullable: true
|
|
ride_model_id:
|
|
type: integer
|
|
nullable: true
|
|
securitySchemes:
|
|
cookieAuth:
|
|
type: apiKey
|
|
in: cookie
|
|
name: sessionid
|
|
tokenAuth:
|
|
type: apiKey
|
|
in: header
|
|
name: Authorization
|
|
description: Token-based authentication with required prefix "Token"
|
|
tags:
|
|
- name: Parks
|
|
description: Theme park operations
|
|
- name: Rides
|
|
description: Ride information and management
|
|
- name: Statistics
|
|
description: Statistical endpoints providing aggregated data and insights
|
|
- name: Reviews
|
|
description: User reviews and ratings for parks and rides
|
|
- name: locations
|
|
description: Geographic location services
|
|
- name: accounts
|
|
description: User account management
|
|
- name: media
|
|
description: Media and image management
|
|
- name: moderation
|
|
description: Content moderation
|
|
- name: Parks
|
|
description: Operations related to theme parks, including CRUD operations and statistics
|
|
- name: Rides
|
|
description: Operations related to rides and attractions within theme parks
|
|
- name: Statistics
|
|
description: Statistical endpoints providing aggregated data and insights
|
|
- name: Reviews
|
|
description: User reviews and ratings for parks and rides
|
|
servers:
|
|
- url: https://api.thrillwiki.com/v1
|
|
description: Production server
|
|
- url: https://staging-api.thrillwiki.com/v1
|
|
description: Staging server
|
|
- url: http://localhost:8000/api/v1
|
|
description: Development server
|