パスと操作
OpenAPI の用語では、パスは /users や /reports/summary/ など、API が公開するエンドポイント(リソース)であり、操作は GET、POST、DELETE など、これらのパスを操作するために使用される HTTP メソッドです。
パス
API のパスと操作は、API 仕様のグローバル paths セクションで定義されます。
1paths:2  /ping: ...3  /users: ...4  /users/{id}: ...すべてのパスは API サーバーの URL に対する相対パスです。完全なリクエスト URL は <server-url>/path として構築されます。グローバル servers は、パスレベルまたは操作レベルでオーバーライドすることもできます(詳細については以下を参照)。パスには、ドキュメント作成のためにオプションの短い summary と長い description を含めることができます。この情報は、このパス内のすべての操作に関連するものとします。description は複数行に対応し、リッチテキスト表現のためにMarkdown(CommonMark)をサポートしています。
1paths:2  /users/{id}:3    summary: Represents a user4    description: >5      This resource represents an individual user in the system.6      Each user is identified by a numeric `id`.7
8    get: ...9    patch: ...10    delete: ...パスのテンプレート化
中括弧 {} を使用して、URL の一部をパスパラメータとしてマークできます。
1/users/{id}2/organizations/{orgId}/members/{memberId}3/report.{format}API クライアントは、/users/5 や /users/12 などの API 呼び出しを行う際に、適切なパラメータ値を提供する必要があります。
操作
各パスについて、そのパスにアクセスするために使用できる操作(HTTP メソッド)を定義します。OpenAPI 3.0 は get、post、put、patch、delete、head、options、trace をサポートしています。単一のパスで複数の操作をサポートできます。たとえば、ユーザーのリストを取得するための GET /users と、新しいユーザーを追加するための POST /users などです。OpenAPI は、パスと HTTP メソッドの組み合わせとして一意の操作を定義します。これは、同じパスに対して 2 つの GET メソッドや 2 つの POST メソッドは許可されないことを意味します。たとえ異なるパラメータを持っていても(パラメータは一意性には影響しません)。以下は操作の最小限の例です。
1paths:2  /ping:3    get:4      responses:5        "200":6          description: OK以下は、パラメータとレスポンススキーマを含むより詳細な例です。
1paths:2  /users/{id}:3    get:4      tags:5        - Users6      summary: Gets a user by ID.7      description: >8        A detailed description of the operation.9        Use markdown for rich text representation,10        such as **bold**, *italic*, and [links](https://swagger.dokyumento.jp).11      operationId: getUserById12      parameters:13        - name: id14          in: path15          description: User ID16          required: true17          schema:18            type: integer19            format: int6420      responses:21        "200":22          description: Successful operation23          content:24            application/json:25              schema:26                $ref: "#/components/schemas/User"27      externalDocs:28        description: Learn more about user operations provided by this API.29        url: http://api.example.com/docs/user-operations/30
31components:32  schemas:33    User:34      type: object35      properties:36        id:37          type: integer38          format: int6439        name:40          type: string41      required:42        - id43        - name操作は、ドキュメント作成のためにいくつかのオプション要素もサポートしています。
- 操作の内容を示す短い summaryと長いdescription。descriptionは複数行に対応し、リッチテキスト表現のためにMarkdown(CommonMark)をサポートしています。
- tags– リソースまたはその他の修飾子によって操作を論理的にグループ化するために使用されます。タグを使用した操作のグループ化を参照してください。
- externalDocs– 追加のドキュメントを含む外部リソースを参照するために使用されます。
操作パラメータ
OpenAPI 3.0 は、パス、クエリ文字列、ヘッダー、およびクッキーを介して渡される操作パラメータをサポートしています。また、POST、PUT、PATCH など、サーバーにデータを送信する操作の要求本文を定義することもできます。詳細については、パラメータの記述と要求本文の記述を参照してください。
パスのクエリ文字列
クエリ文字列パラメータはパスに含めないでください。代わりにクエリパラメータとして定義する必要があります。
不正確
1paths:2  /users?role={role}:正しい
1paths:2  /users:3    get:4      parameters:5        - in: query6          name: role7          schema:8            type: string9            enum: [user, poweruser, admin]10          required: trueこれは、クエリ文字列のみが異なる複数のパスを持つことができないことも意味します。例:
1GET /users?firstName=value&lastName=value2GET /users?role=valueこれは、OpenAPI が一意の操作をパスと HTTP メソッドの組み合わせと見なすためであり、追加のパラメータは操作を一意にしないためです。代わりに、次のような一意のパスを使用する必要があります。
1GET /users/findByName?firstName=value&lastName=value2GET /users/findByRole?role=valueoperationId
operationId は、操作を識別するために使用されるオプションの一意の文字列です。提供される場合、これらの ID は API で記述されたすべての操作間で一意である必要があります。
1/users:2  get:3    operationId: getUsers4    summary: Gets all users5    ...6  post:7    operationId: addUser8    summary: Adds a new user9    ...10/user/{id}:11  get:12    operationId: getUserById13    summary: Gets a user by user ID14    ...operationId の一般的な使用例は次のとおりです。
- 一部のコードジェネレーターは、この値を使用してコード内の対応するメソッドに名前を付けます。
- リンクは、operationIdを使用してリンクされた操作を参照できます。
非推奨の操作
特定の操作を deprecated としてマークして、使用を停止する必要があることを示すことができます。
1/pet/findByTags:2  get:3    deprecated: trueツールは、非推奨の操作を特定の方法で処理する場合があります。たとえば、Swagger UI は異なるスタイルで表示します。

グローバルサーバーのオーバーライド
グローバル servers 配列は、パスレベルまたは操作レベルでオーバーライドできます。これは、一部のエンドポイントが API の残りの部分とは異なるサーバーまたはベースパスを使用する場合に役立ちます。一般的な例は次のとおりです。
- 
ファイルアップロードおよびダウンロード操作のベース URL が異なる。 
- 
非推奨だがまだ機能しているエンドポイント。 servers 
1paths:2  /files:3    description: File upload and download operations4    servers:5      - url: https://files.example.com6        description: Override base path for all operations with the /files path7    ...8
9/ping:10    get:11      servers:12        - url: https://echo.example.com13          description: Override base path for the GET /ping operationお探しのものが見つかりませんでしたか?コミュニティに尋ねる間違いを見つけましたか?お知らせください