This repository has been archived on 2024-04-25. You can view files and clone it, but cannot push or open issues or pull requests.
golang-rest-example/api/openapi.yaml
2024-02-02 15:39:13 +01:00

338 lines
7.8 KiB
YAML

openapi: 3.0.0
info:
version: 1.0.0
title: golang-rest-example
license:
name: MIT
url: https://opensource.org/license/MIT/
description: >
Example OpenAPI Golang server.
servers:
- url: http://localhost:1234
description: Local server
tags:
- name: health
description: Health check
- name: users
description: User management
- name: groups
description: Group management
paths:
/healthz:
description: Health check
get:
tags:
- health
responses:
'200':
$ref: '#/components/responses/Ok'
default:
$ref: '#/components/responses/UnexpectedError'
/users:
get:
description: Get all users
tags:
- users
responses:
'200':
description: OK
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/User'
default:
$ref: '#/components/responses/UnexpectedError'
post:
description: Create user
tags:
- users
requestBody:
description: User object
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UserUpdate'
responses:
'201':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/User'
default:
$ref: '#/components/responses/UnexpectedError'
/users/{id}:
get:
description: Get user by id
tags:
- users
parameters:
- name: id
in: path
required: true
schema:
$ref: '#/components/schemas/Id'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/User'
'404':
$ref: '#/components/responses/NotFound'
default:
$ref: '#/components/responses/UnexpectedError'
put:
description: Update user by id
tags:
- users
parameters:
- name: id
in: path
required: true
schema:
$ref: '#/components/schemas/Id'
requestBody:
description: User object
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UserUpdate'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/User'
'404':
$ref: '#/components/responses/NotFound'
default:
$ref: '#/components/responses/UnexpectedError'
delete:
description: Delete user by id
tags:
- users
parameters:
- name: id
in: path
required: true
schema:
$ref: '#/components/schemas/Id'
responses:
'200':
$ref: '#/components/responses/Ok'
'404':
$ref: '#/components/responses/NotFound'
default:
$ref: '#/components/responses/UnexpectedError'
/groups:
get:
description: Get all groups
tags:
- groups
responses:
'200':
description: OK
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Group'
default:
$ref: '#/components/responses/UnexpectedError'
post:
description: Create group
tags:
- groups
requestBody:
description: Group object
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/GroupUpdate'
responses:
'201':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/Group'
default:
$ref: '#/components/responses/UnexpectedError'
/groups/{id}:
get:
description: Get group by id
tags:
- groups
parameters:
- name: id
in: path
required: true
schema:
$ref: '#/components/schemas/Id'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/Group'
'404':
$ref: '#/components/responses/NotFound'
default:
$ref: '#/components/responses/UnexpectedError'
put:
description: Update group by id
tags:
- groups
parameters:
- name: id
in: path
required: true
schema:
$ref: '#/components/schemas/Id'
requestBody:
description: Group object
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/GroupUpdate'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/Group'
'404':
$ref: '#/components/responses/NotFound'
default:
$ref: '#/components/responses/UnexpectedError'
delete:
description: Delete group by id
tags:
- groups
parameters:
- name: id
in: path
required: true
schema:
$ref: '#/components/schemas/Id'
responses:
'200':
$ref: '#/components/responses/Ok'
'404':
$ref: '#/components/responses/NotFound'
default:
$ref: '#/components/responses/UnexpectedError'
components:
responses:
Ok:
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/Ok'
NotFound:
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
UnexpectedError:
description: Unexpected error
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
schemas:
Ok:
type: object
required:
- message
properties:
message:
type: string
example: OK
Error:
type: object
required:
- message
- code
properties:
message:
type: string
example: Not found
code:
type: integer
example: 404
Id:
type: integer
format: int64
example: 1
User:
type: object
required:
- id
- name
- email
- group_id
properties:
id:
$ref: '#/components/schemas/Id'
name:
type: string
example: John
email:
type: string
example: john@example.com
group_id:
$ref: '#/components/schemas/Id'
UserUpdate:
type: object
required:
- name
- email
- group_id
properties:
name:
type: string
example: John
email:
type: string
example: john@example.com
group_id:
$ref: '#/components/schemas/Id'
Group:
type: object
required:
- id
- name
- user_ids
properties:
id:
$ref: '#/components/schemas/Id'
name:
type: string
example: admins
user_ids:
type: array
items:
$ref: '#/components/schemas/Id'
GroupUpdate:
type: object
required:
- name
properties:
name:
type: string
example: admins