金融機関コードAPI(BankCodeJP)のswaggerかいてみた

いつもお世話になってます。

- [BankCodeJP API — 金融機関コードAPI](https://bankcode-jp.com/)

見当たらなかったのでswaggerに起こしてみた。

```yaml:bankjp.swagger.yaml
openapi: 3.0.3
info:
  title: bankcode-jp Japan Financial institution Code Web API - OpenAPI 3.0
  description: |-
    [BankCodeJP API — 金融機関コードAPI](https://bankcode-jp.com/)
    
    金融機関検索APIのスタンダード

    銀行、信用金庫等の統一金融機関コード、名称を検索できる Web API。 毎月 8,000万を超える検索リクエストを処理し、トラフィック増加時にも優れた可用性とレイテンシを提供しています。
    
    see also:
    - [API v2 リファレンス – BankcodeJP API: API Documentation](https://api.docs.bankcode-jp.com/#api-v2)
  termsOfService: https://console.bankcode-jp.com/term
  version: 2.0.0
externalDocs:
  description: API v2 リファレンス
  url: https://api.docs.bankcode-jp.com/
servers:
  - url: https://apis.bankcode-jp.com/v2/
tags:
  - name: 金融機関API
    description: 金融機関APIは、日本の金融機関の一覧を閲覧したり、金融機関コード、金融機関名などから検索できるAPIです。 金融機関APIを利用すれば、金融機関を検索する機能をカスタムWebサイト、Webサーバやモバイルアプリケーションへシンプルに統合できます。
  - name: 支店API
    description: 支店APIは、特定の金融機関に所属する支店を検索できるAPIです。
  - name: 曖昧検索API
    description: 曖昧検索APIは、日本の金融機関名や支店名、カタカナ、ひらがなを対象に、検索文字列の部分一致で金融機関や支店を検索できるAPIです
  - name: 金融機関種別API
    description: 金融機関種別APIは、金融機関の分類の一覧を提供します。
  - name: バージョンAPI
    description: 取り扱っている金融機関データベースのバージョン情報を取得するAPIです。
paths:
  /banks:
    get:
      tags:
        - 金融機関API
      summary: 金融機関一覧を取得
      description: 金融機関名の完全一致や前方一致で金融機関リソースを検索します。
      operationId: GetBanks
      parameters:
        - name: apiKey
          in: query
          description: APIキー
          required: true
          schema:
            type: string
        - name: filter
          in: query
          description: リソースを検索する 構文:https://api.docs.bankcode-jp.com/#filter-grammar
          required: false
          schema:
            type: string
        - name: limit
          in: query
          description: 取得する最大件数。1～2000。(デフォルト:20)
          required: false
          schema:
            type: integer
        - name: cursor
          in: query
          description: APIキー
          schema:
            type: string
        - name: callback
          in: query
          description: JSONPを利用する場合のコールバック関数名。最大1000文字。
          schema:
            type: string
        - name: fields
          in: query
          description: レスポンスに含める項目。レスポンスに必要な項目のプロパティ名をカンマ区切りで指定します。
          schema:
            type: string
        - name: sort
          in: query
          description: リソースの並び替え順序。
          schema:
            type: string
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BanksResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/BanksResponse'
        '400':
          description: リクエストパラメータが不正です。
        '401':
          description: APIキーが不正です。
        '429':
          description: リクエストレート制限中です。
        '500':
          description: サーバに異常が発生しています。後でもう一度やり直してください
        '405':
          description: メンテナンスのため一時的にオフラインです。後でもう一度やり直してください。
  /banks/{code}:
    get:
      tags:
        - 金融機関API
      summary: 金融機関を取得
      description: 金融機関リソースを取得します。
      operationId: GetBankById
      parameters:
        - name: code
          in: path
          description: 金融機関コード
          required: true
          schema:
            type: string
        - name: apiKey
          in: query
          description: APIキー
          required: true
          schema:
            type: string
        - name: callback
          in: query
          description: JSONPを利用する場合のコールバック関数名。最大1000文字。
          schema:
            type: string
        - name: fields
          in: query
          description: レスポンスに含める項目。レスポンスに必要な項目のプロパティ名をカンマ区切りで指定します。
          schema:
            type: string
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Bank'          
            application/xml:
              schema:
                $ref: '#/components/schemas/Bank'
        '400':
          description: リクエストパラメータが不正です。
        '401':
          description: APIキーが不正です。
        '404':
          description: リソースが存在しません。
        '429':
          description: リクエストレート制限中です。
        '500':
          description: サーバに異常が発生しています。後でもう一度やり直してください
        '405':
          description: メンテナンスのため一時的にオフラインです。後でもう一度やり直してください。
  /banks/{bankCode}/branches:
    get:
      tags:
        - 支店API
      summary: 支店一覧を取得
      description: 特定の金融機関に所属する支店リソースを検索します。
      operationId: GetBranchesByBankCode
      parameters:
        - name: bankCode
          in: path
          description: 金融機関コード
          required: true
          schema:
            type: string
        - name: apiKey
          in: query
          description: APIキー
          required: true
          schema:
            type: string
        - name: filter
          in: query
          description: リソースを検索する 構文:https://api.docs.bankcode-jp.com/#filter-grammar
          required: false
          schema:
            type: string
        - name: limit
          in: query
          description: 取得する最大件数。1～2000。(デフォルト:20)
          required: false
          schema:
            type: integer
        - name: cursor
          in: query
          description: APIキー
          schema:
            type: string
        - name: callback
          in: query
          description: JSONPを利用する場合のコールバック関数名。最大1000文字。
          schema:
            type: string
        - name: fields
          in: query
          description: レスポンスに含める項目。レスポンスに必要な項目のプロパティ名をカンマ区切りで指定します。
          schema:
            type: string
        - name: sort
          in: query
          description: リソースの並び替え順序。
          schema:
            type: string            
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BranchesResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/BranchesResponse'
        '400':
          description: リクエストパラメータが不正です。
        '401':
          description: APIキーが不正です。
        '404':
          description: リソースが存在しません。
        '429':
          description: リクエストレート制限中です。
        '500':
          description: サーバに異常が発生しています。後でもう一度やり直してください
        '405':
          description: メンテナンスのため一時的にオフラインです。後でもう一度やり直してください。
  /banks/{bankCode}/branches/{code}:
    get:
      tags:
        - 支店API
      summary: 支店を取得
      description: 支店リソースを取得します。
      operationId: GetBranchOfBankById
      parameters:
        - name: bankCode
          in: path
          description: 金融機関コード
          required: true
          schema:
            type: string
        - name: code
          in: path
          description: 支店コード
          required: true
          schema:
            type: string
        - name: apiKey
          in: query
          description: APIキー
          required: true
          schema:
            type: string
        - name: callback
          in: query
          description: JSONPを利用する場合のコールバック関数名。最大1000文字。
          schema:
            type: string
        - name: fields
          in: query
          description: レスポンスに含める項目。レスポンスに必要な項目のプロパティ名をカンマ区切りで指定します。
          schema:
            type: string
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Branch'          
            application/xml:
              schema:
                $ref: '#/components/schemas/Branch'
        '400':
          description: リクエストパラメータが不正です。
        '401':
          description: APIキーが不正です。
        '404':
          description: リソースが存在しません。
        '429':
          description: リクエストレート制限中です。
        '500':
          description: サーバに異常が発生しています。後でもう一度やり直してください
        '405':
          description: メンテナンスのため一時的にオフラインです。後でもう一度やり直してください。
  /freeword/banks:
    get:
      tags:
        - 曖昧検索API
      summary: 金融機関曖昧検索API
      description: 金融機関名やふりがなに対して金融機関リソースを部分位置検索します。
      operationId: FindBanks
      parameters:
        - name: apiKey
          in: query
          description: APIキー
          required: true
          schema:
            type: string
        - name: freeword
          in: query
          description: 検索文字列
          required: true
          schema:
            type: string
        - name: businessTypeCode
          in: query
          description: 金融機関種別コード
          required: false
          schema:
            type: array
            items: 
              type: string
        - name: filter
          in: query
          description: リソースを検索する 構文:https://api.docs.bankcode-jp.com/#filter-grammar
          required: false
          schema:
            type: string
        - name: limit
          in: query
          description: 取得する最大件数。1～2000。(デフォルト:20)
          required: false
          schema:
            type: integer
        - name: cursor
          in: query
          description: APIキー
          schema:
            type: string
        - name: callback
          in: query
          description: JSONPを利用する場合のコールバック関数名。最大1000文字。
          schema:
            type: string
        - name: fields
          in: query
          description: レスポンスに含める項目。レスポンスに必要な項目のプロパティ名をカンマ区切りで指定します。
          schema:
            type: string
        - name: sort
          in: query
          description: リソースの並び替え順序。
          schema:
            type: string
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BanksResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/BanksResponse'
        '400':
          description: リクエストパラメータが不正です。
        '401':
          description: APIキーが不正です。
        '429':
          description: リクエストレート制限中です。
        '500':
          description: サーバに異常が発生しています。後でもう一度やり直してください
        '405':
          description: メンテナンスのため一時的にオフラインです。後でもう一度やり直してください。
  /freeword/banks/{bankCode}/branches:
    get:
      tags:
        - 曖昧検索API
      summary: 支店曖昧検索API
      description: 特定の金融機関に所属する支店名やふりがなに対して支店リソースを部分位置検索します。
      operationId: FindBranchesOfBankCode
      parameters:
        - name: bankCode
          in: path
          description: 金融機関コード
          required: true
          schema:
            type: string
        - name: apiKey
          in: query
          description: APIキー
          required: true
          schema:
            type: string
        - name: freeword
          in: query
          description: 検索文字列
          required: true
          schema:
            type: string
        - name: filter
          in: query
          description: リソースを検索する 構文:https://api.docs.bankcode-jp.com/#filter-grammar
          required: false
          schema:
            type: string
        - name: limit
          in: query
          description: 取得する最大件数。1～2000。(デフォルト:20)
          required: false
          schema:
            type: integer
        - name: cursor
          in: query
          description: APIキー
          schema:
            type: string
        - name: callback
          in: query
          description: JSONPを利用する場合のコールバック関数名。最大1000文字。
          schema:
            type: string
        - name: fields
          in: query
          description: レスポンスに含める項目。レスポンスに必要な項目のプロパティ名をカンマ区切りで指定します。
          schema:
            type: string
        - name: sort
          in: query
          description: リソースの並び替え順序。
          schema:
            type: string            
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BranchesResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/BranchesResponse'
        '400':
          description: リクエストパラメータが不正です。
        '401':
          description: APIキーが不正です。
        '404':
          description: リソースが存在しません。
        '429':
          description: リクエストレート制限中です。
        '500':
          description: サーバに異常が発生しています。後でもう一度やり直してください
        '405':
          description: メンテナンスのため一時的にオフラインです。後でもう一度やり直してください。
  /businessTypes:
    get:
      tags:
        - 金融機関種別API
      summary: 金融機関種別一覧API
      description: 金融機関種別リソースを一覧します。
      parameters:
        - name: apiKey
          in: query
          description: APIキー
          required: true
          schema:
            type: string
        - name: filter
          in: query
          description: リソースを検索する 構文:https://api.docs.bankcode-jp.com/#filter-grammar
          required: false
          schema:
            type: string
        - name: limit
          in: query
          description: 取得する最大件数。1～2000。(デフォルト:20)
          required: false
          schema:
            type: integer
        - name: cursor
          in: query
          description: APIキー
          schema:
            type: string
        - name: callback
          in: query
          description: JSONPを利用する場合のコールバック関数名。最大1000文字。
          schema:
            type: string
        - name: fields
          in: query
          description: レスポンスに含める項目。レスポンスに必要な項目のプロパティ名をカンマ区切りで指定します。
          schema:
            type: string
        - name: sort
          in: query
          description: リソースの並び替え順序。
          schema:
            type: string
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BusinessTypesResponse'
            application/xml:
              schema:
                $ref: '#/components/schemas/BusinessTypesResponse'
        '400':
          description: リクエストパラメータが不正です。
        '401':
          description: APIキーが不正です。
        '429':
          description: リクエストレート制限中です。
        '500':
          description: サーバに異常が発生しています。後でもう一度やり直してください
        '405':
          description: メンテナンスのため一時的にオフラインです。後でもう一度やり直してください。
  /version:
    get:
      tags:
        - バージョンAPI
      summary: バージョン取得
      description: APIバージョンを取得します。
      parameters:
        - name: apiKey
          in: query
          description: APIキー
          required: true
          schema:
            type: string
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Version'
            application/xml:
              schema:
                $ref: '#/components/schemas/Version'
        '400':
          description: リクエストパラメータが不正です。
        '401':
          description: APIキーが不正です。
        '429':
          description: リクエストレート制限中です。
        '500':
          description: サーバに異常が発生しています。後でもう一度やり直してください
        '405':
          description: メンテナンスのため一時的にオフラインです。後でもう一度やり直してください。
components:
  schemas:
    Bank:
      type: object
      properties:
        code:
          type: string
        name:
          type: string
        halfWidthKana:
          type: string
        fullWidthKana:
          type: string
        hiragana:
          type: string
        businessTypeCode:
          type: string
        businessType:
          type: string
      xml:
        name: bank
    Branch:
      type: object
      properties:
        code:
          type: string
        name:
          type: string
        halfWidthKana:
          type: string
        fullWidthKana:
          type: string
        hiragana:
          type: string
      xml:
        name: branch
    BusinessType:
      type: object
      properties:
        code:
          type: string
        name:
          type: string
      xml:
        name: bankType
    Version:
      type: object
      properties:
        version:
          type: string
      xml:
        name: '##default'
    BanksResponse:
      type: object
      properties:
        data:
          type: array
          items: 
            $ref: '#/components/schemas/Bank'
        size:
          type: integer
        limit:
          type: integer
        hasNext:
          type: boolean
        nextCursor:
          type: string
        hasPrev:
          type: boolean
        prevCursor:
          type: string
        version:
          type: string
      xml:
        name: '##default'
    BranchesResponse:
      type: object
      properties:
        data:
          type: array
          items: 
            $ref: '#/components/schemas/Branch'
        size:
          type: integer
        limit:
          type: integer
        hasNext:
          type: boolean
        nextCursor:
          type: string
        hasPrev:
          type: boolean
        prevCursor:
          type: string
        version:
          type: string
      xml:
        name: '##default'
    BusinessTypesResponse:
      type: object
      properties:
        data:
          type: array
          items: 
            $ref: '#/components/schemas/BusinessType'
        size:
          type: integer
        limit:
          type: integer
        hasNext:
          type: boolean
        nextCursor:
          type: string
        hasPrev:
          type: boolean
        prevCursor:
          type: string
        version:
          type: string
      xml:
        name: '##default'

```