openapi: 3.1.1 info: title: Titles, Users, Reviews, Tags, and Media API version: 1.0.0 servers: - url: https://api.example.com paths: /title: get: summary: Get titles parameters: - in: query name: query schema: type: string - in: query name: limit schema: type: integer default: 10 - in: query name: offset schema: type: integer default: 0 - in: query name: fields schema: type: string default: all responses: '200': description: List of titles content: application/json: schema: type: array items: $ref: '#/components/schemas/Title' '204': description: No titles found /title/{title_id}: get: summary: Get title description parameters: - in: path name: title_id required: true schema: type: string - in: query name: fields schema: type: string default: all responses: '200': description: Title description content: application/json: schema: $ref: '#/components/schemas/Title' '404': description: Title not found patch: summary: Update title info parameters: - in: path name: title_id required: true schema: type: string requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/Title' responses: '200': description: Update result content: application/json: schema: type: object properties: success: type: boolean error: type: string user_json: $ref: '#/components/schemas/User' /title/{title_id}/reviews: get: summary: Get title reviews parameters: - in: path name: title_id required: true schema: type: string - in: query name: limit schema: type: integer default: 10 - in: query name: offset schema: type: integer default: 0 responses: '200': description: List of reviews content: application/json: schema: type: array items: $ref: '#/components/schemas/Review' '204': description: No reviews found /users/{user_id}: get: summary: Get user info parameters: - in: path name: user_id required: true schema: type: string - in: query name: fields schema: type: string default: all responses: '200': description: User info content: application/json: schema: $ref: '#/components/schemas/User' '404': description: User not found patch: summary: Update user parameters: - in: path name: user_id required: true schema: type: string requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/User' responses: '200': description: Update result content: application/json: schema: type: object properties: success: type: boolean error: type: string delete: summary: Delete user parameters: - in: path name: user_id required: true schema: type: string responses: '200': description: Delete result content: application/json: schema: type: object properties: success: type: boolean error: type: string /users: get: summary: Search user parameters: - in: query name: query schema: type: string - in: query name: fields schema: type: string responses: '200': description: List of users content: application/json: schema: type: array items: $ref: '#/components/schemas/User' post: summary: Add new user requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/User' responses: '200': description: Add result content: application/json: schema: type: object properties: success: type: boolean error: type: string user_json: $ref: '#/components/schemas/User' /users/{user_id}/titles: get: summary: Get user titles parameters: - in: path name: user_id required: true schema: type: string - in: query name: query schema: type: string - in: query name: limit schema: type: integer default: 10 - in: query name: offset schema: type: integer default: 0 - in: query name: fields schema: type: string default: all responses: '200': description: List of user titles content: application/json: schema: type: array items: $ref: '#/components/schemas/UserTitle' '204': description: No titles found post: summary: Add user title parameters: - in: path name: user_id required: true schema: type: string requestBody: required: true content: application/json: schema: type: object properties: title_id: type: string status: type: string responses: '200': description: Add result content: application/json: schema: type: object properties: success: type: boolean error: type: string patch: summary: Update user title parameters: - in: path name: user_id required: true schema: type: string requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/UserTitle' responses: '200': description: Update result content: application/json: schema: type: object properties: success: type: boolean error: type: string delete: summary: Delete user title parameters: - in: path name: user_id required: true schema: type: string - in: query name: title_id schema: type: string responses: '200': description: Delete result content: application/json: schema: type: object properties: success: type: boolean error: type: string /users/{user_id}/reviews: get: summary: Get user reviews parameters: - in: path name: user_id required: true schema: type: string - in: query name: limit schema: type: integer default: 10 - in: query name: offset schema: type: integer default: 0 responses: '200': description: List of reviews content: application/json: schema: type: array items: $ref: '#/components/schemas/Review' /reviews: post: summary: Add review requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/Review' responses: '200': description: Add result content: application/json: schema: type: object properties: success: type: boolean error: type: string /reviews/{review_id}: patch: summary: Update review parameters: - in: path name: review_id required: true schema: type: string requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/Review' responses: '200': description: Update result content: application/json: schema: type: object properties: success: type: boolean error: type: string delete: summary: Delete review parameters: - in: path name: review_id required: true schema: type: string responses: '200': description: Delete result content: application/json: schema: type: object properties: success: type: boolean error: type: string /tags: get: summary: Get tags parameters: - in: query name: limit schema: type: integer default: 10 - in: query name: offset schema: type: integer default: 0 - in: query name: fields schema: type: string responses: '200': description: List of tags content: application/json: schema: type: array items: $ref: '#/components/schemas/Tag' /media: post: summary: Upload image responses: '200': description: Upload result content: application/json: schema: type: object properties: success: type: boolean error: type: string image_id: type: string get: summary: Get image path parameters: - in: query name: image_id required: true schema: type: string responses: '200': description: Image path content: application/json: schema: type: object properties: success: type: boolean error: type: string image_path: type: string components: schemas: Title: type: object additionalProperties: true User: type: object additionalProperties: true UserTitle: type: object additionalProperties: true Review: type: object additionalProperties: true Tag: type: object additionalProperties: true