openapi: 3.0.0
info:
title: Users API
version: 2.0.0
description: API for managing user accounts and profiles within the system. It supports operations like retrieving, creating, and viewing individual users.
servers:
- url: https://api.example.com/users/v2
description: User management production server.
paths:
/users:
get:
summary: Retrieve all users
operationId: getAllUsers
parameters:
- name: limit
in: query
description: Maximum number of users to return.
required: false
schema:
type: integer
format: int32
minimum: 1
maximum: 100
- name: offset
in: query
description: Number of users to skip for pagination.
required: false
schema:
type: integer
format: int32
minimum: 0
responses:
'200':
description: A list of users successfully retrieved.
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/User'
post:
summary: Create a new user
operationId: createUser
requestBody:
required: true
description: User data to be created.
content:
application/json:
schema:
$ref: '#/components/schemas/UserInput'
responses:
'201':
description: User successfully created.
content:
application/json:
schema:
$ref: '#/components/schemas/User'
'400':
description: Invalid user data provided for creation.
/users/{userId}:
get:
summary: Retrieve a user by ID
operationId: getUserById
parameters:
- name: userId
in: path
required: true
description: Unique identifier of the user to retrieve.
schema:
type: string
format: uuid
responses:
'200':
description: User details successfully retrieved.
content:
application/json:
schema:
$ref: '#/components/schemas/User'
'404':
description: User not found with the given ID.
components:
schemas:
User:
type: object
required:
- id
- username
- email
properties:
id:
type: string
format: uuid
description: Unique user identifier.
username:
type: string
description: User's chosen username.
email:
type: string
format: email
description: User's email address.
firstName:
type: string
nullable: true
description: User's first name.
lastName:
type: string
nullable: true
description: User's last name.
createdAt:
type: string
format: date-time
description: Timestamp of user creation.
UserInput:
type: object
required:
- username
- email
- password
properties:
username:
type: string
description: User's chosen username.
email:
type: string
format: email
description: User's email address.
password:
type: string
format: password
description: User's password (should be hashed in real systems).
firstName:
type: string
nullable: true
description: User's first name.
lastName:
type: string
nullable: true
description: User's last name.