mirror of
https://github.com/usebruno/bruno.git
synced 2026-06-15 11:51:30 +00:00
* fix: openapi request import * fix: js sandbox mode selector doesn't show up while opening new collections in playwright tests --------- Co-authored-by: Bijin Bruno <bijin@usebruno.com>
375 lines
8.9 KiB
YAML
375 lines
8.9 KiB
YAML
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'
|