legacy/docs/swagger.yml

297 lines
7.9 KiB
YAML
Raw Normal View History

2023-04-08 15:27:44 +02:00
openapi: 3.0.3
info:
title: Pairent main backend
description: |-
This is basic Pairent API specs
2023-04-24 12:43:46 +02:00
termsOfService: http://swagger.io/terms/
2023-04-08 15:27:44 +02:00
contact:
email: devs@pairent.io
license:
2023-04-24 12:43:46 +02:00
name: MIT
url: http://www.apache.org/licenses/LICENSE-2.0.html
2023-04-08 15:27:44 +02:00
version: INDEV
servers:
- url: https://pairent.io/api/v3
- url: https://pairent-api-dev-unstable.blek.codes/api/v3
tags:
- name: Offers
description: Offers interaction
- name: Users
description: User profile interaction
- name: Account
description: Personal account interaction
- name: Auth
description: Authentication API
paths:
/offer/fetch_offer_data:
post:
tags:
- Offers
summary: Get offer data according to access permissions
description: Get offer data according to access permissions
operationId: fetchOffer
requestBody:
2023-04-24 12:43:46 +02:00
description: Authentication data
2023-04-08 15:27:44 +02:00
content:
application/json:
schema:
$ref: '#/components/schemas/FetchRequest'
application/xml:
schema:
$ref: '#/components/schemas/FetchRequest'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/FetchRequest'
required: true
parameters:
- name: id
in: query
description: ID of offer to get data
required: true
schema:
type: integer
format: int64
default: 1
responses:
'200':
description: Successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/Offer'
application/xml:
schema:
$ref: '#/components/schemas/Offer'
'400':
description: Invalid ID supplied
'404':
description: Pet not found
'405':
description: Validation exception
security:
- user_auth:
- read:offer
2023-04-24 12:43:46 +02:00
/offer/edit_offer:
post:
tags:
- Offers
requestBody:
description: |-
Not all fields are required.
content:
application/json:
schema:
$ref: '#/components/schemas/EditRequest'
application/xml:
schema:
$ref: '#/components/schemas/EditRequest'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/EditRequest'
responses:
'200':
description: 'Old offer data'
content:
application/json:
schema:
$ref: '#/components/schemas/Offer'
application/xml:
schema:
$ref: '#/components/schemas/Offer'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/Offer'
/users/get_profile_data:
post:
tags:
- Users
requestBody:
description: |-
A simple fetch request, gets someone's profile data according to privacy settings.
content:
application/json:
schema:
$ref: '#/components/schemas/FetchRequest'
parameters:
- name: id
in: query
description: ID of user
required: true
schema:
type: integer
format: int64
example: 42
responses:
'200':
description: 'A user object'
content:
application/json:
schema:
$ref: '#/components/schemas/User'
2023-04-08 15:27:44 +02:00
components:
schemas:
FetchRequest:
type: object
properties:
api_auth_token:
type: string
format: string
example: Z29ubmEgZ28ga2lsbCBteXNlbGYgVXdV
csrf:
type: string
format: string
example: DVMXSNWQmijGiExuOFYQsViJOwpBDnPodLWqGGJCnjTQHGRpxolPDKdtwiGjXDrt
meta:
type: object
format: object
example:
sent_at: 1680925159
Offer:
type: object
properties:
id:
type: integer
format: int64
example: 42
title:
type: string
format: string
example: "Уютная гостинка близко к ВВГУ"
description:
type: object
format: object
example:
allow_pets: false
allow_kids: false
furniture:
- Кровать
- Учебный стол
- Кухонный гарнитур
- Холодильник
- Духовка с плитой
- Шкаф
- Стиральная машина
is_furnished: true
is_renovated: false
price:
type: object
format: object
example:
per_month: 20000
communal: 2000
agency_comission: 12000
deposit: 15000
currency: 'RUB'
has_water:
type: boolean
format: boolean
example: true
has_electricity:
type: boolean
format: boolean
example: true
has_internet:
type: boolean
format: boolean
example: true
ceil_height:
type: number
format: number
example: 2.5
beds_count:
type: integer
format: int32
example: 1
creator: # User who created the offer
type: integer
format: int32
example: 6
house:
type: integer
format: int32
example: 32
meta:
type: object
format: object
example: {}
2023-04-24 12:43:46 +02:00
User:
type: object
properties:
name:
type: object
format: object
example:
properties:
firstName: 'Константин'
lastName: 'Константинов'
middleName: 'Константинович'
gender:
type: 'string'
format: 'string'
example: 'M'
personality:
$ref: '#/components/schemas/Personality'
profilePic:
type: 'string'
format: 'string'
example: 'https://cdn.pairent.io/usercontent/USER_ID_HERE/pfp'
description:
type: 'object'
format: 'object'
example:
userDescription: 'Боюсь WSL и не хочу использовать докеры'
Personality:
type: object
properties:
TODO:
type: string
format: string
example: 'Make a personality image object'
EditRequest:
type: object
properties:
api_auth_token:
type: string
format: string
example: Z29ubmEgZ28ga2lsbCBteXNlbGYgVXdV
csrf:
type: string
format: string
example: DVMXSNWQmijGiExuOFYQsViJOwpBDnPodLWqGGJCnjTQHGRpxolPDKdtwiGjXDrt
new_data:
type: object
format: object
example:
fill_this: according to obj_type
obj_type:
type: string
format: string
example: "A schema name ('Offer', for example)"
2023-04-08 15:27:44 +02:00
requestBodies:
FetchRequest:
description: Request to fetch some data
content:
application/json:
schema:
$ref: '#/components/schemas/FetchRequest'
application/xml:
schema:
$ref: '#/components/schemas/FetchRequest'
application/x-urlencoded:
schema:
$ref: '#/components/schemas/FetchRequest'
securitySchemes:
user_auth:
type: oauth2
flows:
implicit:
authorizationUrl: https://lk.vvsu.ru/oauth/authorize
scopes:
read:offer: Read offer data
api_key:
type: apiKey
name: api_key
in: header