openapi: 3.0.3 info: title: Pairent main backend description: |- This is basic Pairent API specs termsOfService: http://swagger.io/terms/ contact: email: devs@pairent.io license: name: MIT url: http://www.apache.org/licenses/LICENSE-2.0.html 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: description: Authentication data 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 /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' 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: {} 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)" 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