DRF_Template/backend/schema.yml

1090 lines
27 KiB
YAML
Raw Normal View History

2024-01-06 12:13:39 +08:00
openapi: 3.0.3
info:
title: DRF-Template
2024-01-06 12:13:39 +08:00
version: 1.0.0
description: A Template Project by Keannu Bernasol
2024-01-06 12:13:39 +08:00
paths:
/api/v1/accounts/jwt/create/:
post:
operationId: accounts_jwt_create_create
2024-01-06 12:13:39 +08:00
description: |-
Takes a set of user credentials and returns an access and refresh JSON web
token pair to prove the authentication of those credentials.
tags:
- accounts
2024-01-06 12:13:39 +08:00
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/TokenObtainPair'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/TokenObtainPair'
multipart/form-data:
schema:
$ref: '#/components/schemas/TokenObtainPair'
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/TokenObtainPair'
description: ''
/api/v1/accounts/jwt/refresh/:
post:
operationId: accounts_jwt_refresh_create
2024-01-06 12:13:39 +08:00
description: |-
Takes a refresh type JSON web token and returns an access type JSON web
token if the refresh token is valid.
tags:
- accounts
2024-01-06 12:13:39 +08:00
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/TokenRefresh'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/TokenRefresh'
multipart/form-data:
schema:
$ref: '#/components/schemas/TokenRefresh'
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/TokenRefresh'
description: ''
/api/v1/accounts/jwt/verify/:
post:
operationId: accounts_jwt_verify_create
2024-01-06 12:13:39 +08:00
description: |-
Takes a token and indicates if it is valid. This view provides no
information about a token's fitness for a particular use.
tags:
- accounts
2024-01-06 12:13:39 +08:00
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/TokenVerify'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/TokenVerify'
multipart/form-data:
schema:
$ref: '#/components/schemas/TokenVerify'
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/TokenVerify'
description: ''
/api/v1/accounts/users/:
get:
operationId: accounts_users_list
2024-01-06 12:13:39 +08:00
tags:
- accounts
2024-01-06 12:13:39 +08:00
security:
- jwtAuth: []
responses:
'200':
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/CustomUser'
description: ''
post:
operationId: accounts_users_create
2024-01-06 12:13:39 +08:00
tags:
- accounts
2024-01-06 12:13:39 +08:00
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/UserRegistration'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/UserRegistration'
multipart/form-data:
schema:
$ref: '#/components/schemas/UserRegistration'
required: true
security:
- jwtAuth: []
- {}
responses:
'201':
content:
application/json:
schema:
$ref: '#/components/schemas/UserRegistration'
description: ''
/api/v1/accounts/users/{id}/:
get:
operationId: accounts_users_retrieve
2024-01-06 12:13:39 +08:00
parameters:
- in: path
name: id
schema:
type: integer
description: A unique integer value identifying this user.
required: true
tags:
- accounts
2024-01-06 12:13:39 +08:00
security:
- jwtAuth: []
- {}
2024-01-06 12:13:39 +08:00
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/CustomUser'
description: ''
put:
operationId: accounts_users_update
2024-01-06 12:13:39 +08:00
parameters:
- in: path
name: id
schema:
type: integer
description: A unique integer value identifying this user.
required: true
tags:
- accounts
2024-01-06 12:13:39 +08:00
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CustomUser'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/CustomUser'
multipart/form-data:
schema:
$ref: '#/components/schemas/CustomUser'
required: true
security:
- jwtAuth: []
- {}
2024-01-06 12:13:39 +08:00
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/CustomUser'
description: ''
patch:
operationId: accounts_users_partial_update
2024-01-06 12:13:39 +08:00
parameters:
- in: path
name: id
schema:
type: integer
description: A unique integer value identifying this user.
required: true
tags:
- accounts
2024-01-06 12:13:39 +08:00
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/PatchedCustomUser'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/PatchedCustomUser'
multipart/form-data:
schema:
$ref: '#/components/schemas/PatchedCustomUser'
security:
- jwtAuth: []
- {}
2024-01-06 12:13:39 +08:00
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/CustomUser'
description: ''
delete:
operationId: accounts_users_destroy
2024-01-06 12:13:39 +08:00
parameters:
- in: path
name: id
schema:
type: integer
description: A unique integer value identifying this user.
required: true
tags:
- accounts
2024-01-06 12:13:39 +08:00
security:
- jwtAuth: []
responses:
'204':
description: No response body
/api/v1/accounts/users/activation/:
post:
operationId: accounts_users_activation_create
2024-01-06 12:13:39 +08:00
tags:
- accounts
2024-01-06 12:13:39 +08:00
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/Activation'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/Activation'
multipart/form-data:
schema:
$ref: '#/components/schemas/Activation'
required: true
security:
- jwtAuth: []
- {}
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Activation'
description: ''
/api/v1/accounts/users/me/:
get:
operationId: accounts_users_me_retrieve
2024-01-06 12:13:39 +08:00
tags:
- accounts
2024-01-06 12:13:39 +08:00
security:
- jwtAuth: []
- {}
2024-01-06 12:13:39 +08:00
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/CustomUser'
description: ''
put:
operationId: accounts_users_me_update
2024-01-06 12:13:39 +08:00
tags:
- accounts
2024-01-06 12:13:39 +08:00
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CustomUser'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/CustomUser'
multipart/form-data:
schema:
$ref: '#/components/schemas/CustomUser'
required: true
security:
- jwtAuth: []
- {}
2024-01-06 12:13:39 +08:00
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/CustomUser'
description: ''
patch:
operationId: accounts_users_me_partial_update
2024-01-06 12:13:39 +08:00
tags:
- accounts
2024-01-06 12:13:39 +08:00
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/PatchedCustomUser'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/PatchedCustomUser'
multipart/form-data:
schema:
$ref: '#/components/schemas/PatchedCustomUser'
security:
- jwtAuth: []
- {}
2024-01-06 12:13:39 +08:00
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/CustomUser'
description: ''
delete:
operationId: accounts_users_me_destroy
2024-01-06 12:13:39 +08:00
tags:
- accounts
2024-01-06 12:13:39 +08:00
security:
- jwtAuth: []
responses:
'204':
description: No response body
/api/v1/accounts/users/resend_activation/:
post:
operationId: accounts_users_resend_activation_create
2024-01-06 12:13:39 +08:00
tags:
- accounts
2024-01-06 12:13:39 +08:00
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/SendEmailReset'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/SendEmailReset'
multipart/form-data:
schema:
$ref: '#/components/schemas/SendEmailReset'
required: true
security:
- jwtAuth: []
- {}
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/SendEmailReset'
description: ''
/api/v1/accounts/users/reset_password/:
post:
operationId: accounts_users_reset_password_create
2024-01-06 12:13:39 +08:00
tags:
- accounts
2024-01-06 12:13:39 +08:00
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/SendEmailReset'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/SendEmailReset'
multipart/form-data:
schema:
$ref: '#/components/schemas/SendEmailReset'
required: true
security:
- jwtAuth: []
- {}
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/SendEmailReset'
description: ''
/api/v1/accounts/users/reset_password_confirm/:
post:
operationId: accounts_users_reset_password_confirm_create
2024-01-06 12:13:39 +08:00
tags:
- accounts
2024-01-06 12:13:39 +08:00
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/PasswordResetConfirm'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/PasswordResetConfirm'
multipart/form-data:
schema:
$ref: '#/components/schemas/PasswordResetConfirm'
required: true
security:
- jwtAuth: []
- {}
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/PasswordResetConfirm'
description: ''
/api/v1/accounts/users/reset_username/:
post:
operationId: accounts_users_reset_username_create
2024-01-06 12:13:39 +08:00
tags:
- accounts
2024-01-06 12:13:39 +08:00
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/SendEmailReset'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/SendEmailReset'
multipart/form-data:
schema:
$ref: '#/components/schemas/SendEmailReset'
required: true
security:
- jwtAuth: []
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/SendEmailReset'
description: ''
/api/v1/accounts/users/reset_username_confirm/:
post:
operationId: accounts_users_reset_username_confirm_create
2024-01-06 12:13:39 +08:00
tags:
- accounts
2024-01-06 12:13:39 +08:00
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/UsernameResetConfirm'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/UsernameResetConfirm'
multipart/form-data:
schema:
$ref: '#/components/schemas/UsernameResetConfirm'
required: true
security:
- jwtAuth: []
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/UsernameResetConfirm'
description: ''
/api/v1/accounts/users/set_password/:
post:
operationId: accounts_users_set_password_create
2024-01-06 12:13:39 +08:00
tags:
- accounts
2024-01-06 12:13:39 +08:00
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/SetPassword'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/SetPassword'
multipart/form-data:
schema:
$ref: '#/components/schemas/SetPassword'
required: true
security:
- jwtAuth: []
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/SetPassword'
description: ''
/api/v1/accounts/users/set_username/:
post:
operationId: accounts_users_set_username_create
2024-01-06 12:13:39 +08:00
tags:
- accounts
2024-01-06 12:13:39 +08:00
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/SetUsername'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/SetUsername'
multipart/form-data:
schema:
$ref: '#/components/schemas/SetUsername'
required: true
security:
- jwtAuth: []
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/SetUsername'
description: ''
/api/v1/billing/:
get:
operationId: billing_retrieve
tags:
- billing
security:
- jwtAuth: []
responses:
'200':
description: No response body
/api/v1/notifications/:
get:
operationId: notifications_list
tags:
- notifications
security:
- jwtAuth: []
- {}
responses:
'200':
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Notification'
description: ''
/api/v1/notifications/{id}/:
get:
operationId: notifications_retrieve
parameters:
- in: path
name: id
schema:
type: integer
description: A unique integer value identifying this notification.
required: true
tags:
- notifications
security:
- jwtAuth: []
- {}
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Notification'
description: ''
patch:
operationId: notifications_partial_update
parameters:
- in: path
name: id
schema:
type: integer
description: A unique integer value identifying this notification.
required: true
tags:
- notifications
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/PatchedNotification'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/PatchedNotification'
multipart/form-data:
schema:
$ref: '#/components/schemas/PatchedNotification'
security:
- jwtAuth: []
- {}
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Notification'
description: ''
delete:
operationId: notifications_destroy
parameters:
- in: path
name: id
schema:
type: integer
description: A unique integer value identifying this notification.
required: true
tags:
- notifications
security:
- jwtAuth: []
- {}
responses:
'204':
description: No response body
/api/v1/stripe/checkout_session/:
post:
operationId: stripe_checkout_session_create
tags:
- stripe
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/Checkout'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/Checkout'
multipart/form-data:
schema:
$ref: '#/components/schemas/Checkout'
required: true
security:
- jwtAuth: []
responses:
'200':
description: No response body
/api/v1/stripe/webhook/:
post:
operationId: stripe_webhook_create
tags:
- stripe
security:
- jwtAuth: []
- {}
responses:
'200':
description: No response body
/api/v1/subscriptions/plans/:
get:
operationId: subscriptions_plans_list
tags:
- subscriptions
security:
- jwtAuth: []
- {}
responses:
'200':
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/SubscriptionPlan'
description: ''
/api/v1/subscriptions/plans/{id}/:
get:
operationId: subscriptions_plans_retrieve
parameters:
- in: path
name: id
schema:
type: integer
description: A unique integer value identifying this subscription plan.
required: true
tags:
- subscriptions
security:
- jwtAuth: []
- {}
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/SubscriptionPlan'
description: ''
/api/v1/subscriptions/self/:
get:
operationId: subscriptions_self_list
tags:
- subscriptions
security:
- jwtAuth: []
responses:
'200':
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/UserSubscription'
description: ''
/api/v1/subscriptions/self/{id}/:
get:
operationId: subscriptions_self_retrieve
parameters:
- in: path
name: id
schema:
type: integer
description: A unique integer value identifying this user subscription.
required: true
tags:
- subscriptions
security:
- jwtAuth: []
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/UserSubscription'
description: ''
/api/v1/subscriptions/user_group/:
get:
operationId: subscriptions_user_group_list
tags:
- subscriptions
security:
- jwtAuth: []
responses:
'200':
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/UserSubscription'
description: ''
/api/v1/subscriptions/user_group/{id}/:
get:
operationId: subscriptions_user_group_retrieve
parameters:
- in: path
name: id
schema:
type: integer
description: A unique integer value identifying this user subscription.
required: true
tags:
- subscriptions
security:
- jwtAuth: []
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/UserSubscription'
description: ''
2024-01-06 12:13:39 +08:00
components:
schemas:
Activation:
type: object
properties:
uid:
type: string
token:
type: string
required:
- token
- uid
Checkout:
type: object
properties:
subscription_id:
type: integer
annual:
type: boolean
required:
- annual
- subscription_id
2024-01-06 12:13:39 +08:00
CustomUser:
type: object
properties:
id:
type: integer
readOnly: true
username:
type: string
readOnly: true
description: Required. 150 characters or fewer. Letters, digits and @/./+/-/_
only.
email:
type: string
format: email
readOnly: true
2024-01-06 12:13:39 +08:00
title: Email address
avatar:
type: string
format: uri
first_name:
type: string
maxLength: 150
is_new:
type: string
readOnly: true
2024-01-06 12:13:39 +08:00
last_name:
type: string
maxLength: 150
user_group:
type: integer
readOnly: true
nullable: true
group_member:
type: string
readOnly: true
group_owner:
type: string
readOnly: true
2024-01-06 12:13:39 +08:00
required:
- avatar
- email
- group_member
- group_owner
2024-01-06 12:13:39 +08:00
- id
- is_new
- user_group
2024-01-06 12:13:39 +08:00
- username
Notification:
type: object
properties:
id:
type: integer
readOnly: true
timestamp:
type: string
format: date-time
readOnly: true
content:
type: string
readOnly: true
nullable: true
dismissed:
type: boolean
recipient:
type: integer
readOnly: true
required:
- content
- id
- recipient
- timestamp
2024-01-06 12:13:39 +08:00
PasswordResetConfirm:
type: object
properties:
uid:
type: string
token:
type: string
new_password:
type: string
required:
- new_password
- token
- uid
PatchedCustomUser:
type: object
properties:
id:
type: integer
readOnly: true
username:
type: string
readOnly: true
description: Required. 150 characters or fewer. Letters, digits and @/./+/-/_
only.
email:
type: string
format: email
readOnly: true
2024-01-06 12:13:39 +08:00
title: Email address
avatar:
type: string
format: uri
first_name:
type: string
maxLength: 150
is_new:
type: string
readOnly: true
2024-01-06 12:13:39 +08:00
last_name:
type: string
maxLength: 150
user_group:
type: integer
readOnly: true
nullable: true
group_member:
type: string
readOnly: true
group_owner:
type: string
readOnly: true
PatchedNotification:
type: object
properties:
id:
type: integer
readOnly: true
timestamp:
type: string
format: date-time
readOnly: true
content:
type: string
readOnly: true
nullable: true
dismissed:
type: boolean
recipient:
type: integer
readOnly: true
2024-01-06 12:13:39 +08:00
SendEmailReset:
type: object
properties:
email:
type: string
format: email
required:
- email
SetPassword:
type: object
properties:
new_password:
type: string
current_password:
type: string
required:
- current_password
- new_password
SetUsername:
type: object
properties:
current_password:
type: string
new_username:
type: string
title: Username
description: Required. 150 characters or fewer. Letters, digits and @/./+/-/_
only.
pattern: ^[\w.@+-]+$
maxLength: 150
required:
- current_password
- new_username
SubscriptionPlan:
type: object
properties:
id:
type: integer
readOnly: true
name:
type: string
maxLength: 100
description:
type: string
nullable: true
maxLength: 1024
annual_price:
type: integer
nullable: true
monthly_price:
type: integer
nullable: true
group_exclusive:
type: boolean
required:
- id
- name
2024-01-06 12:13:39 +08:00
TokenObtainPair:
type: object
properties:
username:
type: string
writeOnly: true
password:
type: string
writeOnly: true
access:
type: string
readOnly: true
refresh:
type: string
readOnly: true
required:
- access
- password
- refresh
- username
TokenRefresh:
type: object
properties:
access:
type: string
readOnly: true
refresh:
type: string
writeOnly: true
required:
- access
- refresh
TokenVerify:
type: object
properties:
token:
type: string
writeOnly: true
required:
- token
UserRegistration:
type: object
properties:
email:
type: string
format: email
username:
type: string
2024-01-06 12:13:39 +08:00
password:
type: string
writeOnly: true
first_name:
type: string
last_name:
type: string
required:
- email
- first_name
- last_name
2024-01-06 12:13:39 +08:00
- password
- username
UserSubscription:
type: object
properties:
id:
type: integer
readOnly: true
user:
type: integer
nullable: true
user_group:
type: integer
nullable: true
subscription:
type: integer
nullable: true
date:
type: string
format: date-time
readOnly: true
valid:
type: boolean
annual:
type: boolean
required:
- annual
- date
- id
- valid
2024-01-06 12:13:39 +08:00
UsernameResetConfirm:
type: object
properties:
new_username:
type: string
title: Username
description: Required. 150 characters or fewer. Letters, digits and @/./+/-/_
only.
pattern: ^[\w.@+-]+$
maxLength: 150
required:
- new_username
securitySchemes:
jwtAuth:
type: http
scheme: bearer
bearerFormat: JWT