Info
info:
title: Sample API
description: A short description of API.
termsOfService: http://example.com/terms/
contact:
name: API support
url: htttp://www.example.com/support
email: support@example.com
license:
name: Apache 2.0
url: http://www.apache.org/licenses/LICENSE-2.0.html
version: 1.0.0
servers
servers:
- url: https://dev.sample-server.com/v1
description: Development server
- url: https://stg.sample-server.com/v1
description: Staging server
- url: https://api.sample-server.com/v1
description: Production server
Path
paths:
/users:
get:
tags:
- users
summary: Get all users.
description: Returns an array of User model
parameters: []
response:
'200': # http status
description: A Json array of User model
content:
application/json: # レスポンスの形式指定
schema:
type: array
items:
$ref: '#/components/schemas/User' # 参照するモデル
example:
- id: 1
name: Jane Doe
- id: 2
name: Jane Doe
post:
tags:
- users
summary: Create a new User
descrpption: Create a new User
parameters: []
requestBody:
description: user to create
content:
application/json:
schema:
$ref: '#/components/schemas/User'
example:
id: 3
name: Richard Roe
responses:
'201':
description: CREATED
/users/{userId}:
get:
tags:
- users
summary: Get user by ID.
description: Returns a single User model
parameters: # リクエストパラメター
- name: userId
in: path # パラメータをパス内に含める
description: user id
required: true
schema:
type: integer
responses:
'200':
description: A single User model
content:
application/json:
schema:
type: object
items:
$ref: '#/components/schemas/User'
example:
id: 1
name: John Doe
components
L 定義したモデルは $ref: ‘#/components/schemas/User’ というように参照する
L modelエリアに表示され、構造やサンプル値が参照できる
components:
schemas:
User:
type: object # 型
required:
- id
properties:
id:
type: integer
format: int64
name:
type: string
Product:
type: object
required:
- id
- price
properties:
id:
type: integer
format: int64
example: 1
name:
type: string
example: Laptop
price:
type: integer
example: 1200
security
メソッド定義部分に鍵マークが表示される
security:
- api_key []
- users_auth:
- write:users
- read:users
externalDocs
exeternalDocs: description: Find more info here url: https://example.com
tags:
tags:
- name: users
description: Access to users
- name: products
descrption: Access to Products
なるほど、実際に書いてみると全然違うな…