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
なるほど、実際に書いてみると全然違うな…