openapi: 3.0.3 info: title: Comprehensive API Test Collection description: A comprehensive API for testing OpenAPI v3 imports with various features version: 2.1.0 contact: name: API Support email: support@example.com license: name: MIT url: https://opensource.org/licenses/MIT servers: - url: https://api.example.com/v1 description: Production server - url: https://staging-api.example.com/v1 description: Staging server - url: http://localhost:3000/v1 description: Development server security: - bearerAuth: [] - apiKey: [] paths: /users: get: summary: Get all users description: Retrieve a paginated list of all users tags: - Users parameters: - name: page in: query description: Page number for pagination schema: type: integer minimum: 1 default: 1 - name: limit in: query description: Number of items per page schema: type: integer minimum: 1 maximum: 100 default: 20 - name: filter in: query description: Filter users by name or email schema: type: string responses: '200': description: List of users retrieved successfully content: application/json: schema: type: object properties: users: type: array items: $ref: '#/components/schemas/User' pagination: $ref: '#/components/schemas/Pagination' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' post: summary: Create a new user description: Create a new user account tags: - Users requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreateUserRequest' responses: '201': description: User created successfully content: application/json: schema: $ref: '#/components/schemas/User' '400': $ref: '#/components/responses/BadRequest' '409': description: User already exists /users/{userId}: get: summary: Get user by ID description: Retrieve a specific user by their ID tags: - Users parameters: - name: userId in: path required: true description: The user ID schema: type: string format: uuid responses: '200': description: User retrieved successfully content: application/json: schema: $ref: '#/components/schemas/User' '404': $ref: '#/components/responses/NotFound' put: summary: Update user description: Update an existing user tags: - Users parameters: - name: userId in: path required: true description: The user ID schema: type: string format: uuid requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/UpdateUserRequest' responses: '200': description: User updated successfully content: application/json: schema: $ref: '#/components/schemas/User' '404': $ref: '#/components/responses/NotFound' delete: summary: Delete user description: Delete a user account tags: - Users parameters: - name: userId in: path required: true description: The user ID schema: type: string format: uuid responses: '204': description: User deleted successfully '404': $ref: '#/components/responses/NotFound' /auth/login: post: summary: User login description: Authenticate user and get access token tags: - Authentication security: [] # No security required for login requestBody: required: true content: application/json: schema: type: object required: - email - password properties: email: type: string format: email password: type: string minLength: 8 responses: '200': description: Login successful content: application/json: schema: type: object properties: token: type: string expiresIn: type: integer user: $ref: '#/components/schemas/User' '401': description: Invalid credentials /posts: get: summary: Get all posts description: Retrieve all blog posts tags: - Posts parameters: - name: author in: query description: Filter by author ID schema: type: string - name: category in: query description: Filter by category schema: type: string responses: '200': description: List of posts content: application/json: schema: type: array items: $ref: '#/components/schemas/Post' post: summary: Create a new post description: Create a new blog post tags: - Posts requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreatePostRequest' responses: '201': description: Post created successfully content: application/json: schema: $ref: '#/components/schemas/Post' components: securitySchemes: bearerAuth: type: http scheme: bearer bearerFormat: JWT apiKey: type: apiKey in: header name: X-API-Key schemas: User: type: object properties: id: type: string format: uuid email: type: string format: email name: type: string avatar: type: string format: uri createdAt: type: string format: date-time updatedAt: type: string format: date-time CreateUserRequest: type: object required: - email - name - password properties: email: type: string format: email name: type: string minLength: 2 password: type: string minLength: 8 avatar: type: string format: uri UpdateUserRequest: type: object properties: name: type: string minLength: 2 avatar: type: string format: uri Post: type: object properties: id: type: string format: uuid title: type: string content: type: string author: $ref: '#/components/schemas/User' category: type: string publishedAt: type: string format: date-time createdAt: type: string format: date-time CreatePostRequest: type: object required: - title - content - category properties: title: type: string minLength: 5 content: type: string minLength: 10 category: type: string Pagination: type: object properties: page: type: integer limit: type: integer total: type: integer totalPages: type: integer Error: type: object properties: error: type: string message: type: string code: type: integer responses: BadRequest: description: Bad request content: application/json: schema: $ref: '#/components/schemas/Error' Unauthorized: description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Error' NotFound: description: Resource not found content: application/json: schema: $ref: '#/components/schemas/Error'