{
  "openapi": "3.0.0",
  "paths": {
    "/health": {
      "get": {
        "operationId": "checkHealth",
        "summary": "",
        "parameters": [],
        "responses": { "200": { "description": "" } }
      }
    },
    "/auth/token": {
      "post": {
        "operationId": "token",
        "summary": "",
        "description": "AzureADB2Cでのサインイン後に払いだされるIDトークンを元に認証用のアクセストークンとリフレッシュトークンを生成します",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/TokenRequest" }
            }
          }
        },
        "responses": {
          "200": {
            "description": "成功時のレスポンス",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/TokenResponse" }
              }
            }
          },
          "401": {
            "description": "認証エラー",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/ErrorResponse" }
              }
            }
          },
          "500": {
            "description": "想定外のサーバーエラー",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/ErrorResponse" }
              }
            }
          }
        },
        "tags": ["auth"]
      }
    },
    "/auth/accessToken": {
      "post": {
        "operationId": "accessToken",
        "summary": "",
        "description": "リフレッシュトークンを元にアクセストークンを再生成します",
        "parameters": [],
        "responses": {
          "200": {
            "description": "成功時のレスポンス",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/AccessTokenResponse" }
              }
            }
          },
          "401": {
            "description": "認証エラー",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/ErrorResponse" }
              }
            }
          },
          "500": {
            "description": "想定外のサーバーエラー",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/ErrorResponse" }
              }
            }
          }
        },
        "tags": ["auth"],
        "security": [{ "bearer": [] }]
      }
    },
    "/accounts": {
      "post": {
        "operationId": "createAccount",
        "summary": "",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/CreateAccountRequest" }
            }
          }
        },
        "responses": {
          "200": {
            "description": "成功時のレスポンス",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateAccountResponse"
                }
              }
            }
          },
          "400": {
            "description": "登録済みユーザーからの登録など",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/ErrorResponse" }
              }
            }
          },
          "500": {
            "description": "想定外のサーバーエラー",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/ErrorResponse" }
              }
            }
          }
        },
        "tags": ["accounts"]
      }
    },
    "/accounts/licenses/summary": {
      "post": {
        "operationId": "getLicenseSummary",
        "summary": "",
        "description": "指定したアカウントのライセンス集計情報を取得します",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GetLicenseSummaryRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "成功時のレスポンス",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetLicenseSummaryResponse"
                }
              }
            }
          },
          "401": {
            "description": "認証エラー",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/ErrorResponse" }
              }
            }
          },
          "500": {
            "description": "想定外のサーバーエラー",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/ErrorResponse" }
              }
            }
          }
        },
        "tags": ["accounts"],
        "security": [{ "bearer": [] }]
      }
    },
    "/accounts/me": {
      "get": {
        "operationId": "getMyAccount",
        "summary": "",
        "description": "ログインしているユーザーのアカウント情報を取得します",
        "parameters": [],
        "responses": {
          "200": {
            "description": "成功時のレスポンス",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetMyAccountResponse"
                }
              }
            }
          },
          "400": {
            "description": "該当アカウントがDBに存在しない場合",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/ErrorResponse" }
              }
            }
          },
          "401": {
            "description": "認証エラー",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/ErrorResponse" }
              }
            }
          },
          "500": {
            "description": "想定外のサーバーエラー",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/ErrorResponse" }
              }
            }
          }
        },
        "tags": ["accounts"],
        "security": [{ "bearer": [] }]
      }
    },
    "/accounts/typists": {
      "get": {
        "operationId": "getTypists",
        "summary": "",
        "description": "ログインしているユーザーのアカウント配下のタイピスト一覧を取得します",
        "parameters": [],
        "responses": {
          "200": {
            "description": "成功時のレスポンス",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/GetTypistsResponse" }
              }
            }
          },
          "401": {
            "description": "認証エラー",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/ErrorResponse" }
              }
            }
          },
          "500": {
            "description": "想定外のサーバーエラー",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/ErrorResponse" }
              }
            }
          }
        },
        "tags": ["accounts"],
        "security": [{ "bearer": [] }]
      }
    },
    "/accounts/typist-groups": {
      "get": {
        "operationId": "getTypistGroups",
        "summary": "",
        "description": "ログインしているユーザーのアカウント配下のタイピストグループ一覧を取得します",
        "parameters": [],
        "responses": {
          "200": {
            "description": "成功時のレスポンス",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetTypistGroupsResponse"
                }
              }
            }
          },
          "401": {
            "description": "認証エラー",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/ErrorResponse" }
              }
            }
          },
          "500": {
            "description": "想定外のサーバーエラー",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/ErrorResponse" }
              }
            }
          }
        },
        "tags": ["accounts"],
        "security": [{ "bearer": [] }]
      }
    },
    "/accounts/partner": {
      "post": {
        "operationId": "createPartnerAccount",
        "summary": "",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreatePartnerAccountRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "成功時のレスポンス",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatePartnerAccountResponse"
                }
              }
            }
          },
          "400": {
            "description": "登録済みユーザーからの登録など",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/ErrorResponse" }
              }
            }
          },
          "401": {
            "description": "認証エラー",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/ErrorResponse" }
              }
            }
          },
          "500": {
            "description": "想定外のサーバーエラー",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/ErrorResponse" }
              }
            }
          }
        },
        "tags": ["accounts"],
        "security": [{ "bearer": [] }]
      }
    },
    "/accounts/partner-licenses": {
      "post": {
        "operationId": "getPartnerLicenses",
        "summary": "",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GetPartnerLicensesRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "成功時のレスポンス",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetPartnerLicensesResponse"
                }
              }
            }
          },
          "401": {
            "description": "認証エラー",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/ErrorResponse" }
              }
            }
          },
          "500": {
            "description": "想定外のサーバーエラー",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/ErrorResponse" }
              }
            }
          }
        },
        "tags": ["accounts"],
        "security": [{ "bearer": [] }]
      }
    },
    "/users/confirm": {
      "post": {
        "operationId": "confirmUser",
        "summary": "",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/ConfirmRequest" }
            }
          }
        },
        "responses": {
          "200": {
            "description": "成功時のレスポンス",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/ConfirmResponse" }
              }
            }
          },
          "400": {
            "description": "不正なトークン",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/ErrorResponse" }
              }
            }
          },
          "500": {
            "description": "想定外のサーバーエラー",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/ErrorResponse" }
              }
            }
          }
        },
        "tags": ["users"]
      }
    },
    "/users/confirm/initpassword": {
      "post": {
        "operationId": "confirmUserAndInitPassword",
        "summary": "",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/ConfirmRequest" }
            }
          }
        },
        "responses": {
          "200": {
            "description": "成功時のレスポンス",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/ConfirmResponse" }
              }
            }
          },
          "400": {
            "description": "不正なトークン",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/ErrorResponse" }
              }
            }
          },
          "500": {
            "description": "想定外のサーバーエラー",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/ErrorResponse" }
              }
            }
          }
        },
        "tags": ["users"]
      }
    },
    "/users": {
      "get": {
        "operationId": "getUsers",
        "summary": "",
        "parameters": [],
        "responses": {
          "200": {
            "description": "成功時のレスポンス",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/GetUsersResponse" }
              }
            }
          },
          "401": {
            "description": "認証エラー",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/ErrorResponse" }
              }
            }
          },
          "500": {
            "description": "想定外のサーバーエラー",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/ErrorResponse" }
              }
            }
          }
        },
        "tags": ["users"],
        "security": [{ "bearer": [] }]
      }
    },
    "/users/signup": {
      "post": {
        "operationId": "signup",
        "summary": "",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/SignupRequest" }
            }
          }
        },
        "responses": {
          "200": {
            "description": "成功時のレスポンス",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/SignupResponse" }
              }
            }
          },
          "400": {
            "description": "登録済みメールによる再登録、AuthorIDの重複など",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/ErrorResponse" }
              }
            }
          },
          "401": {
            "description": "認証エラー",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/ErrorResponse" }
              }
            }
          },
          "500": {
            "description": "想定外のサーバーエラー",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/ErrorResponse" }
              }
            }
          }
        },
        "tags": ["users"],
        "security": [{ "bearer": [] }]
      }
    },
    "/users/relations": {
      "get": {
        "operationId": "getRelations",
        "summary": "",
        "description": "ログインしているユーザーに関連する各種情報を取得します",
        "parameters": [],
        "responses": {
          "200": {
            "description": "成功時のレスポンス",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetRelationsResponse"
                }
              }
            }
          },
          "401": {
            "description": "認証エラー",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/ErrorResponse" }
              }
            }
          },
          "500": {
            "description": "想定外のサーバーエラー",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/ErrorResponse" }
              }
            }
          }
        },
        "tags": ["users"],
        "security": [{ "bearer": [] }]
      }
    },
    "/users/sort-criteria": {
      "post": {
        "operationId": "updateSortCriteria",
        "summary": "",
        "description": "ログインしているユーザーのタスクソート条件を更新します",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostSortCriteriaRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "成功時のレスポンス",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostSortCriteriaResponse"
                }
              }
            }
          },
          "400": {
            "description": "不正なパラメータ",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/ErrorResponse" }
              }
            }
          },
          "401": {
            "description": "認証エラー",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/ErrorResponse" }
              }
            }
          },
          "500": {
            "description": "想定外のサーバーエラー",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/ErrorResponse" }
              }
            }
          }
        },
        "tags": ["users"],
        "security": [{ "bearer": [] }]
      },
      "get": {
        "operationId": "getSortCriteria",
        "summary": "",
        "description": "ログインしているユーザーのタスクソート条件を取得します",
        "parameters": [],
        "responses": {
          "200": {
            "description": "成功時のレスポンス",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetSortCriteriaResponse"
                }
              }
            }
          },
          "401": {
            "description": "認証エラー",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/ErrorResponse" }
              }
            }
          },
          "500": {
            "description": "想定外のサーバーエラー",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/ErrorResponse" }
              }
            }
          }
        },
        "tags": ["users"],
        "security": [{ "bearer": [] }]
      }
    },
    "/files/audio/upload-finished": {
      "post": {
        "operationId": "uploadFinished",
        "summary": "",
        "description": "アップロードが完了した音声ファイルの情報を登録し、文字起こしタスクを生成します",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AudioUploadFinishedRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "成功時のレスポンス",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AudioUploadFinishedResponse"
                }
              }
            }
          },
          "400": {
            "description": "不正なパラメータ",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/ErrorResponse" }
              }
            }
          },
          "401": {
            "description": "認証エラー",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/ErrorResponse" }
              }
            }
          },
          "500": {
            "description": "想定外のサーバーエラー",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/ErrorResponse" }
              }
            }
          }
        },
        "tags": ["files"],
        "security": [{ "bearer": [] }]
      }
    },
    "/files/audio/upload-location": {
      "get": {
        "operationId": "uploadLocation",
        "summary": "",
        "description": "ログイン中ユーザー用のBlob Storage上の音声ファイルのアップロード先アクセスURLを取得します",
        "parameters": [],
        "responses": {
          "200": {
            "description": "成功時のレスポンス",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AudioUploadLocationResponse"
                }
              }
            }
          },
          "401": {
            "description": "認証エラー",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/ErrorResponse" }
              }
            }
          },
          "500": {
            "description": "想定外のサーバーエラー",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/ErrorResponse" }
              }
            }
          }
        },
        "tags": ["files"],
        "security": [{ "bearer": [] }]
      }
    },
    "/files/audio/download-location": {
      "get": {
        "operationId": "downloadLocation",
        "summary": "",
        "description": "指定した音声ファイルのBlob Storage上のダウンロード先アクセスURLを取得します",
        "parameters": [
          {
            "name": "audioFileId",
            "required": true,
            "in": "query",
            "description": "ODMSCloud上で管理する音声ファイルのID",
            "schema": { "type": "number" }
          }
        ],
        "responses": {
          "200": {
            "description": "成功時のレスポンス",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AudioDownloadLocationResponse"
                }
              }
            }
          },
          "400": {
            "description": "不正なパラメータ",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/ErrorResponse" }
              }
            }
          },
          "401": {
            "description": "認証エラー",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/ErrorResponse" }
              }
            }
          },
          "500": {
            "description": "想定外のサーバーエラー",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/ErrorResponse" }
              }
            }
          }
        },
        "tags": ["files"],
        "security": [{ "bearer": [] }]
      }
    },
    "/files/template/download-location": {
      "get": {
        "operationId": "downloadTemplateLocation",
        "summary": "",
        "description": "指定した音声ファイルに対応したテンプレートファイルのBlob Storage上のダウンロード先アクセスURLを取得します",
        "parameters": [
          {
            "name": "audioFileId",
            "required": true,
            "in": "query",
            "description": "文字起こし対象の音声ファイルID",
            "schema": { "type": "number" }
          }
        ],
        "responses": {
          "200": {
            "description": "成功時のレスポンス",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TemplateDownloadLocationResponse"
                }
              }
            }
          },
          "400": {
            "description": "不正なパラメータ",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/ErrorResponse" }
              }
            }
          },
          "401": {
            "description": "認証エラー",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/ErrorResponse" }
              }
            }
          },
          "500": {
            "description": "想定外のサーバーエラー",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/ErrorResponse" }
              }
            }
          }
        },
        "tags": ["files"],
        "security": [{ "bearer": [] }]
      }
    },
    "/tasks": {
      "get": {
        "operationId": "getTasks",
        "summary": "",
        "description": "音声ファイル・文字起こしタスク情報をページ指定して取得します",
        "parameters": [
          {
            "name": "limit",
            "required": false,
            "in": "query",
            "description": "タスクの取得件数（指定しない場合はデフォルト値）",
            "schema": { "default": 200, "type": "number" }
          },
          {
            "name": "offset",
            "required": false,
            "in": "query",
            "description": "オフセット（何件目から取得するか　設定しない場合はデフォルト値）",
            "schema": { "default": 0, "type": "number" }
          },
          {
            "name": "status",
            "required": false,
            "in": "query",
            "description": "取得対象とするタスクのステータス。カンマ(,)区切りで複数指定可能。設定されない場合はすべてのステータスを取得対象とする。許容するステータスの値は次の通り: Uploaded / Pending / InProgress / Finished / Backup",
            "example": "Uploaded,Pending,InProgress",
            "schema": { "type": "string" }
          },
          {
            "name": "direction",
            "required": false,
            "in": "query",
            "description": "ASC/DESC",
            "schema": { "type": "string" }
          },
          {
            "name": "paramName",
            "required": false,
            "in": "query",
            "description": "JOB_NUMBER/STATUS/ENCRYPTION/AUTHOR_ID/WORK_TYPE/FILE_NAME/FILE_LENGTH/FILE_SIZE/RECORDING_STARTED_DATE/RECORDING_FINISHED_DATE/UPLOAD_DATE/TRANSCRIPTION_STARTED_DATE/TRANSCRIPTION_FINISHED_DATE",
            "schema": { "type": "string" }
          }
        ],
        "responses": {
          "200": {
            "description": "成功時のレスポンス",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/TasksResponse" }
              }
            }
          },
          "400": {
            "description": "不正なパラメータ",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/ErrorResponse" }
              }
            }
          },
          "401": {
            "description": "認証エラー",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/ErrorResponse" }
              }
            }
          },
          "500": {
            "description": "想定外のサーバーエラー",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/ErrorResponse" }
              }
            }
          }
        },
        "tags": ["tasks"],
        "security": [{ "bearer": [] }]
      }
    },
    "/tasks/next": {
      "get": {
        "operationId": "getNextAudioFile",
        "summary": "",
        "description": "指定した文字起こしタスクの次のタスクに紐づく音声ファイルIDを取得します",
        "parameters": [
          {
            "name": "endedFileId",
            "required": true,
            "in": "query",
            "description": "文字起こし完了したタスクの音声ファイルID",
            "schema": { "type": "number" }
          }
        ],
        "responses": {
          "200": {
            "description": "成功時のレスポンス",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/AudioNextResponse" }
              }
            }
          },
          "400": {
            "description": "不正なパラメータ",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/ErrorResponse" }
              }
            }
          },
          "401": {
            "description": "認証エラー",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/ErrorResponse" }
              }
            }
          },
          "500": {
            "description": "想定外のサーバーエラー",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/ErrorResponse" }
              }
            }
          }
        },
        "tags": ["tasks"],
        "security": [{ "bearer": [] }]
      }
    },
    "/tasks/{audioFileId}/checkout": {
      "post": {
        "operationId": "checkout",
        "summary": "",
        "description": "指定した文字起こしタスクをチェックアウトします（ステータスをInprogressにします）",
        "parameters": [
          {
            "name": "audioFileId",
            "required": true,
            "in": "path",
            "description": "ODMS Cloud上の音声ファイルID",
            "schema": { "type": "number" }
          }
        ],
        "responses": {
          "200": {
            "description": "成功時のレスポンス",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ChangeStatusResponse"
                }
              }
            }
          },
          "400": {
            "description": "不正なパラメータ",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/ErrorResponse" }
              }
            }
          },
          "401": {
            "description": "認証エラー",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/ErrorResponse" }
              }
            }
          },
          "404": {
            "description": "指定したIDの音声ファイルが存在しない場合",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/ErrorResponse" }
              }
            }
          },
          "500": {
            "description": "想定外のサーバーエラー",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/ErrorResponse" }
              }
            }
          }
        },
        "tags": ["tasks"],
        "security": [{ "bearer": [] }]
      }
    },
    "/tasks/{audioFileId}/checkin": {
      "post": {
        "operationId": "checkin",
        "summary": "",
        "description": "指定した文字起こしタスクをチェックインします（ステータスをFinishedにします）",
        "parameters": [
          {
            "name": "audioFileId",
            "required": true,
            "in": "path",
            "description": "ODMS Cloud上の音声ファイルID",
            "schema": { "type": "number" }
          }
        ],
        "responses": {
          "200": {
            "description": "成功時のレスポンス",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ChangeStatusResponse"
                }
              }
            }
          },
          "400": {
            "description": "不正なパラメータ",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/ErrorResponse" }
              }
            }
          },
          "401": {
            "description": "認証エラー",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/ErrorResponse" }
              }
            }
          },
          "404": {
            "description": "指定したIDの音声ファイルが存在しない場合",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/ErrorResponse" }
              }
            }
          },
          "500": {
            "description": "想定外のサーバーエラー",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/ErrorResponse" }
              }
            }
          }
        },
        "tags": ["tasks"],
        "security": [{ "bearer": [] }]
      }
    },
    "/tasks/{audioFileId}/cancel": {
      "post": {
        "operationId": "cancel",
        "summary": "",
        "description": "指定した文字起こしタスクをキャンセルします（ステータスをUploadedにします）",
        "parameters": [
          {
            "name": "audioFileId",
            "required": true,
            "in": "path",
            "description": "ODMS Cloud上の音声ファイルID",
            "schema": { "type": "number" }
          }
        ],
        "responses": {
          "200": {
            "description": "成功時のレスポンス",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ChangeStatusResponse"
                }
              }
            }
          },
          "400": {
            "description": "不正なパラメータ",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/ErrorResponse" }
              }
            }
          },
          "401": {
            "description": "認証エラー",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/ErrorResponse" }
              }
            }
          },
          "404": {
            "description": "指定したIDの音声ファイルが存在しない場合",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/ErrorResponse" }
              }
            }
          },
          "500": {
            "description": "想定外のサーバーエラー",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/ErrorResponse" }
              }
            }
          }
        },
        "tags": ["tasks"],
        "security": [{ "bearer": [] }]
      }
    },
    "/tasks/{audioFileId}/suspend": {
      "post": {
        "operationId": "suspend",
        "summary": "",
        "description": "指定した文字起こしタスクを一時中断します（ステータスをPendingにします）",
        "parameters": [
          {
            "name": "audioFileId",
            "required": true,
            "in": "path",
            "description": "ODMS Cloud上の音声ファイルID",
            "schema": { "type": "number" }
          }
        ],
        "responses": {
          "200": {
            "description": "成功時のレスポンス",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ChangeStatusResponse"
                }
              }
            }
          },
          "400": {
            "description": "不正なパラメータ",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/ErrorResponse" }
              }
            }
          },
          "401": {
            "description": "認証エラー",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/ErrorResponse" }
              }
            }
          },
          "404": {
            "description": "指定したIDの音声ファイルが存在しない場合",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/ErrorResponse" }
              }
            }
          },
          "500": {
            "description": "想定外のサーバーエラー",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/ErrorResponse" }
              }
            }
          }
        },
        "tags": ["tasks"],
        "security": [{ "bearer": [] }]
      }
    },
    "/tasks/{audioFileId}/send-back": {
      "post": {
        "operationId": "sendBack",
        "summary": "",
        "description": "指定した文字起こしタスクを差し戻します（ステータスをPendingにします）",
        "parameters": [
          {
            "name": "audioFileId",
            "required": true,
            "in": "path",
            "description": "ODMS Cloud上の音声ファイルID",
            "schema": { "type": "number" }
          }
        ],
        "responses": {
          "200": {
            "description": "成功時のレスポンス",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ChangeStatusResponse"
                }
              }
            }
          },
          "400": {
            "description": "不正なパラメータ",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/ErrorResponse" }
              }
            }
          },
          "401": {
            "description": "認証エラー",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/ErrorResponse" }
              }
            }
          },
          "404": {
            "description": "指定したIDの音声ファイルが存在しない場合",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/ErrorResponse" }
              }
            }
          },
          "500": {
            "description": "想定外のサーバーエラー",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/ErrorResponse" }
              }
            }
          }
        },
        "tags": ["tasks"],
        "security": [{ "bearer": [] }]
      }
    },
    "/tasks/{audioFileId}/backup": {
      "post": {
        "operationId": "backup",
        "summary": "",
        "description": "指定した文字起こしタスクをバックアップします（ステータスをBackupにします）",
        "parameters": [
          {
            "name": "audioFileId",
            "required": true,
            "in": "path",
            "description": "ODMS Cloud上の音声ファイルID",
            "schema": { "type": "number" }
          }
        ],
        "responses": {
          "200": {
            "description": "成功時のレスポンス",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ChangeStatusResponse"
                }
              }
            }
          },
          "400": {
            "description": "不正なパラメータ",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/ErrorResponse" }
              }
            }
          },
          "401": {
            "description": "認証エラー",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/ErrorResponse" }
              }
            }
          },
          "404": {
            "description": "指定したIDの音声ファイルが存在しない場合",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/ErrorResponse" }
              }
            }
          },
          "500": {
            "description": "想定外のサーバーエラー",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/ErrorResponse" }
              }
            }
          }
        },
        "tags": ["tasks"],
        "security": [{ "bearer": [] }]
      }
    },
    "/tasks/{audioFileId}/checkout-permission": {
      "post": {
        "operationId": "changeCheckoutPermission",
        "summary": "",
        "description": "指定した文字起こしタスクのチェックアウト候補を変更します。",
        "parameters": [
          {
            "name": "audioFileId",
            "required": true,
            "in": "path",
            "description": "ODMS Cloud上の音声ファイルID",
            "schema": { "type": "number" }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PostCheckoutPermissionRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "成功時のレスポンス",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PostCheckoutPermissionResponse"
                }
              }
            }
          },
          "400": {
            "description": "不正なパラメータ（タスクのステータス不正、指定ユーザー不正など）",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/ErrorResponse" }
              }
            }
          },
          "401": {
            "description": "認証エラー",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/ErrorResponse" }
              }
            }
          },
          "404": {
            "description": "指定したIDの音声ファイルが存在しない",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/ErrorResponse" }
              }
            }
          },
          "500": {
            "description": "想定外のサーバーエラー",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/ErrorResponse" }
              }
            }
          }
        },
        "tags": ["tasks"],
        "security": [{ "bearer": [] }]
      }
    },
    "/licenses/orders": {
      "post": {
        "operationId": "createOrders",
        "summary": "",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/CreateOrdersRequest" }
            }
          }
        },
        "responses": {
          "200": {
            "description": "成功時のレスポンス",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateOrdersResponse"
                }
              }
            }
          },
          "400": {
            "description": "同一PONumberの注文がすでに存在する場合など",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/ErrorResponse" }
              }
            }
          },
          "401": {
            "description": "認証エラー",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/ErrorResponse" }
              }
            }
          },
          "500": {
            "description": "想定外のサーバーエラー",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/ErrorResponse" }
              }
            }
          }
        },
        "tags": ["licenses"],
        "security": [{ "bearer": [] }]
      }
    },
    "/licenses/cards": {
      "post": {
        "operationId": "issueCardLicenses",
        "summary": "",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/IssueCardLicensesRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "成功時のレスポンス",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/IssueCardLicensesResponse"
                }
              }
            }
          },
          "401": {
            "description": "認証エラー",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/ErrorResponse" }
              }
            }
          },
          "500": {
            "description": "想定外のサーバーエラー",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/ErrorResponse" }
              }
            }
          }
        },
        "tags": ["licenses"],
        "security": [{ "bearer": [] }]
      }
    },
    "/licenses/cards/activate": {
      "post": {
        "operationId": "activateCardLicenses",
        "summary": "",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ActivateCardLicensesRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "成功時のレスポンス",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ActivateCardLicensesResponse"
                }
              }
            }
          },
          "400": {
            "description": "パラメータのライセンスキーが不正な内容の場合/存在しない場合/登録済みの場合",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/ErrorResponse" }
              }
            }
          },
          "401": {
            "description": "認証エラー",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/ErrorResponse" }
              }
            }
          },
          "500": {
            "description": "想定外のサーバーエラー",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/ErrorResponse" }
              }
            }
          }
        },
        "tags": ["licenses"],
        "security": [{ "bearer": [] }]
      }
    },
    "/notification/register": {
      "post": {
        "operationId": "register",
        "summary": "",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": { "$ref": "#/components/schemas/RegisterRequest" }
            }
          }
        },
        "responses": {
          "200": {
            "description": "成功時のレスポンス",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/RegisterResponse" }
              }
            }
          },
          "400": {
            "description": "不正なパラメータ",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/ErrorResponse" }
              }
            }
          },
          "401": {
            "description": "認証エラー",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/ErrorResponse" }
              }
            }
          },
          "500": {
            "description": "想定外のサーバーエラー",
            "content": {
              "application/json": {
                "schema": { "$ref": "#/components/schemas/ErrorResponse" }
              }
            }
          }
        },
        "tags": ["notification"],
        "security": [{ "bearer": [] }]
      }
    }
  },
  "info": {
    "title": "ODMSOpenAPI",
    "description": "",
    "version": "1.0.0",
    "contact": {}
  },
  "tags": [],
  "servers": [],
  "components": {
    "securitySchemes": {
      "bearer": { "scheme": "bearer", "bearerFormat": "JWT", "type": "http" }
    },
    "schemas": {
      "TokenRequest": {
        "type": "object",
        "properties": {
          "idToken": { "type": "string" },
          "type": {
            "type": "string",
            "description": "web or mobile or desktop"
          }
        },
        "required": ["idToken", "type"]
      },
      "TokenResponse": {
        "type": "object",
        "properties": {
          "refreshToken": { "type": "string" },
          "accessToken": { "type": "string" }
        },
        "required": ["refreshToken", "accessToken"]
      },
      "ErrorResponse": {
        "type": "object",
        "properties": {
          "message": { "type": "string" },
          "code": { "type": "string" }
        },
        "required": ["message", "code"]
      },
      "AccessTokenResponse": {
        "type": "object",
        "properties": { "accessToken": { "type": "string" } },
        "required": ["accessToken"]
      },
      "CreateAccountRequest": {
        "type": "object",
        "properties": {
          "companyName": { "type": "string" },
          "country": {
            "type": "string",
            "description": "国名(ISO 3166-1 alpha-2)",
            "minLength": 2,
            "maxLength": 2
          },
          "dealerAccountId": { "type": "number", "nullable": true },
          "adminName": { "type": "string" },
          "adminMail": { "type": "string" },
          "adminPassword": { "type": "string" },
          "acceptedTermsVersion": {
            "type": "string",
            "description": "同意済み利用規約のバージョン"
          },
          "token": { "type": "string", "description": "reCAPTCHA Token" }
        },
        "required": [
          "companyName",
          "country",
          "dealerAccountId",
          "adminName",
          "adminMail",
          "adminPassword",
          "acceptedTermsVersion",
          "token"
        ]
      },
      "CreateAccountResponse": { "type": "object", "properties": {} },
      "GetLicenseSummaryRequest": {
        "type": "object",
        "properties": { "accountId": { "type": "number" } },
        "required": ["accountId"]
      },
      "GetLicenseSummaryResponse": {
        "type": "object",
        "properties": {
          "totalLicense": { "type": "number" },
          "allocatedLicense": { "type": "number" },
          "reusableLicense": { "type": "number" },
          "freeLicense": { "type": "number" },
          "expiringWithin14daysLicense": { "type": "number" },
          "issueRequesting": { "type": "number" },
          "numberOfRequesting": { "type": "number" },
          "shortage": { "type": "number" },
          "storageSize": { "type": "number" },
          "usedSize": { "type": "number" },
          "isStorageAvailable": { "type": "boolean" }
        },
        "required": [
          "totalLicense",
          "allocatedLicense",
          "reusableLicense",
          "freeLicense",
          "expiringWithin14daysLicense",
          "issueRequesting",
          "numberOfRequesting",
          "shortage",
          "storageSize",
          "usedSize",
          "isStorageAvailable"
        ]
      },
      "Account": {
        "type": "object",
        "properties": { "accountId": { "type": "number" } },
        "required": ["accountId"]
      },
      "GetMyAccountResponse": {
        "type": "object",
        "properties": { "account": { "$ref": "#/components/schemas/Account" } },
        "required": ["account"]
      },
      "Typist": {
        "type": "object",
        "properties": {
          "id": { "type": "number", "description": "TypistのユーザーID" },
          "name": { "type": "string", "description": "Typistのユーザー名" }
        },
        "required": ["id", "name"]
      },
      "GetTypistsResponse": {
        "type": "object",
        "properties": {
          "typists": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/Typist" }
          }
        },
        "required": ["typists"]
      },
      "TypistGroup": {
        "type": "object",
        "properties": {
          "id": { "type": "number", "description": "TypistGroupのID" },
          "name": { "type": "string", "description": "TypistGroup名" }
        },
        "required": ["id", "name"]
      },
      "GetTypistGroupsResponse": {
        "type": "object",
        "properties": {
          "typistGroups": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/TypistGroup" }
          }
        },
        "required": ["typistGroups"]
      },
      "CreatePartnerAccountRequest": {
        "type": "object",
        "properties": {
          "companyName": { "type": "string" },
          "country": {
            "type": "string",
            "description": "国名(ISO 3166-1 alpha-2)",
            "minLength": 2,
            "maxLength": 2
          },
          "adminName": { "type": "string" },
          "email": { "type": "string" }
        },
        "required": ["companyName", "country", "adminName", "email"]
      },
      "CreatePartnerAccountResponse": { "type": "object", "properties": {} },
      "GetPartnerLicensesRequest": {
        "type": "object",
        "properties": {
          "limit": { "type": "number" },
          "offset": { "type": "number" },
          "accountId": { "type": "number" }
        },
        "required": ["limit", "offset", "accountId"]
      },
      "PartnerLicenseInfo": {
        "type": "object",
        "properties": {
          "accountId": { "type": "number", "description": "アカウントID" },
          "tier": { "type": "number", "description": "階層" },
          "companyName": { "type": "string", "description": "アカウント名" },
          "stockLicense": {
            "type": "number",
            "description": "保有している有効期限が未設定あるいは有効期限内のライセンス数"
          },
          "issuedRequested": {
            "type": "number",
            "description": "子アカウントからの、未発行状態あるいは発行キャンセルされた注文の総ライセンス数"
          },
          "shortage": {
            "type": "number",
            "description": "不足数（{Stock license} - {Issue Requested}）"
          },
          "issueRequesting": {
            "type": "number",
            "description": "未発行状態あるいは発行キャンセルされた注文の総ライセンス数（=IssueRequestingのStatusの注文の総ライセンス数）"
          }
        },
        "required": [
          "accountId",
          "tier",
          "companyName",
          "stockLicense",
          "issuedRequested",
          "shortage",
          "issueRequesting"
        ]
      },
      "GetPartnerLicensesResponse": {
        "type": "object",
        "properties": {
          "total": { "type": "number" },
          "ownPartnerLicense": {
            "$ref": "#/components/schemas/PartnerLicenseInfo"
          },
          "childrenPartnerLicenses": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/PartnerLicenseInfo" }
          }
        },
        "required": ["total", "ownPartnerLicense", "childrenPartnerLicenses"]
      },
      "ConfirmRequest": {
        "type": "object",
        "properties": { "token": { "type": "string" } },
        "required": ["token"]
      },
      "ConfirmResponse": { "type": "object", "properties": {} },
      "User": {
        "type": "object",
        "properties": {
          "name": { "type": "string" },
          "role": { "type": "string", "description": "none/author/typist" },
          "authorId": { "type": "string", "nullable": true },
          "typistGroupName": { "type": "string", "nullable": true },
          "email": { "type": "string" },
          "emailVerified": { "type": "boolean" },
          "autoRenew": { "type": "boolean" },
          "licenseAlert": { "type": "boolean" },
          "notification": { "type": "boolean" }
        },
        "required": [
          "name",
          "role",
          "authorId",
          "typistGroupName",
          "email",
          "emailVerified",
          "autoRenew",
          "licenseAlert",
          "notification"
        ]
      },
      "GetUsersResponse": {
        "type": "object",
        "properties": {
          "users": {
            "type": "array",
            "items": { "$ref": "#/components/schemas/User" }
          }
        },
        "required": ["users"]
      },
      "SignupRequest": {
        "type": "object",
        "properties": {
          "name": { "type": "string" },
          "role": { "type": "string", "description": "none/author/typist" },
          "authorId": { "type": "string" },
          "typistGroupId": { "type": "number" },
          "email": { "type": "string" },
          "autoRenew": { "type": "boolean" },
          "licenseAlert": { "type": "boolean" },
          "notification": { "type": "boolean" }
        },
        "required": [
          "name",
          "role",
          "email",
          "autoRenew",
          "licenseAlert",
          "notification"
        ]
      },
      "SignupResponse": { "type": "object", "properties": {} },
      "OptionItem": {
        "type": "object",
        "properties": {
          "label": {
            "type": "string",
            "minLength": 1,
            "maxLength": 16,
            "description": "Option Itemのラベル"
          },
          "initialValueType": {
            "type": "number",
            "description": "項目タイプ 1:Blank/2:Default/3:前の値"
          },
          "defaultValue": {
            "type": "string",
            "minLength": 1,
            "maxLength": 20,
            "description": "typeでDefaultを選択した場合のデフォルト値"
          }
        },
        "required": ["label", "initialValueType", "defaultValue"]
      },
      "OptionItemList": {
        "type": "object",
        "properties": {
          "workTypeId": { "type": "string" },
          "optionItemList": {
            "maxItems": 10,
            "description": "1WorkTypeIDにつき、10個まで登録可能",
            "type": "array",
            "items": { "$ref": "#/components/schemas/OptionItem" }
          }
        },
        "required": ["workTypeId", "optionItemList"]
      },
      "GetRelationsResponse": {
        "type": "object",
        "properties": {
          "authorId": {
            "type": "string",
            "description": "ログインしたユーザーのAuthorID（Authorでない場合は空文字）"
          },
          "authorIdList": {
            "description": "属しているアカウントのAuthorID List(全て)",
            "type": "array",
            "items": { "type": "string" }
          },
          "workTypeList": {
            "maxItems": 20,
            "description": "アカウントに設定されているWorktypeIDのリスト（最大20個）",
            "type": "array",
            "items": { "$ref": "#/components/schemas/OptionItemList" }
          },
          "isEncrypted": {
            "type": "boolean",
            "description": "ユーザーが音声ファイルを暗号化するかどうか"
          },
          "encryptionPassword": {
            "type": "string",
            "description": "ユーザーが暗号化を掛ける場合のパスワード",
            "nullable": true
          },
          "activeWorktype": {
            "type": "string",
            "description": "アカウントがデフォルトで利用するWorkTypeID（アカウントに紐づくWorkTypeIDから一つ指定）"
          },
          "audioFormat": {
            "type": "string",
            "description": "録音形式: DSS/DS2(SP)/DS2(QP)： DS2固定"
          },
          "prompt": {
            "type": "boolean",
            "description": "デバイス上で自動的にWorkTypeの選択画面を表示するかどうかのユーザーごとの設定（Authorでない場合はfalse）"
          }
        },
        "required": [
          "authorId",
          "authorIdList",
          "workTypeList",
          "isEncrypted",
          "encryptionPassword",
          "activeWorktype",
          "audioFormat",
          "prompt"
        ]
      },
      "PostSortCriteriaRequest": {
        "type": "object",
        "properties": {
          "direction": { "type": "string", "description": "ASC/DESC" },
          "paramName": {
            "type": "string",
            "description": "JOB_NUMBER/STATUS/ENCRYPTION/AUTHOR_ID/WORK_TYPE/FILE_NAME/FILE_LENGTH/FILE_SIZE/RECORDING_STARTED_DATE/RECORDING_FINISHED_DATE/UPLOAD_DATE/TRANSCRIPTION_STARTED_DATE/TRANSCRIPTION_FINISHED_DATE"
          }
        },
        "required": ["direction", "paramName"]
      },
      "PostSortCriteriaResponse": { "type": "object", "properties": {} },
      "GetSortCriteriaResponse": {
        "type": "object",
        "properties": {
          "direction": { "type": "string", "description": "ASC/DESC" },
          "paramName": {
            "type": "string",
            "description": "JOB_NUMBER/STATUS/ENCRYPTION/AUTHOR_ID/WORK_TYPE/FILE_NAME/FILE_LENGTH/FILE_SIZE/RECORDING_STARTED_DATE/RECORDING_FINISHED_DATE/UPLOAD_DATE/TRANSCRIPTION_STARTED_DATE/TRANSCRIPTION_FINISHED_DATE"
          }
        },
        "required": ["direction", "paramName"]
      },
      "AudioOptionItem": {
        "type": "object",
        "properties": {
          "optionItemLabel": {
            "type": "string",
            "minLength": 1,
            "maxLength": 16
          },
          "optionItemValue": {
            "type": "string",
            "minLength": 1,
            "maxLength": 20
          }
        },
        "required": ["optionItemLabel", "optionItemValue"]
      },
      "AudioUploadFinishedRequest": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "アップロード先Blob Storage(ファイル名含む)"
          },
          "authorId": {
            "type": "string",
            "description": "自分自身(ログイン認証)したAuthorID"
          },
          "fileName": { "type": "string", "description": "音声ファイル名" },
          "duration": {
            "type": "string",
            "description": "音声ファイルの録音時間（ミリ秒の整数値）"
          },
          "createdDate": {
            "type": "string",
            "description": "音声ファイルの録音作成日時(開始日時)（yyyy-mm-ddThh:mm:ss.sss）"
          },
          "finishedDate": {
            "type": "string",
            "description": "音声ファイルの録音作成終了日時（yyyy-mm-ddThh:mm:ss.sss）"
          },
          "uploadedDate": {
            "type": "string",
            "description": "音声ファイルのアップロード日時（yyyy-mm-ddThh:mm:ss.sss）"
          },
          "fileSize": {
            "type": "number",
            "description": "音声ファイルのファイルサイズ（Byte）"
          },
          "priority": {
            "type": "string",
            "description": "優先度 \"00\":Normal / \"01\":High"
          },
          "audioFormat": {
            "type": "string",
            "description": "録音形式: DSS/DS2(SP)/DS2(QP)"
          },
          "comment": { "type": "string" },
          "workType": { "type": "string" },
          "optionItemList": {
            "maxItems": 10,
            "minItems": 10,
            "description": "音声ファイルに紐づくOption Itemの一覧（10個固定）",
            "type": "array",
            "items": { "$ref": "#/components/schemas/AudioOptionItem" }
          },
          "isEncrypted": { "type": "boolean" }
        },
        "required": [
          "url",
          "authorId",
          "fileName",
          "duration",
          "createdDate",
          "finishedDate",
          "uploadedDate",
          "fileSize",
          "priority",
          "audioFormat",
          "comment",
          "workType",
          "optionItemList",
          "isEncrypted"
        ]
      },
      "AudioUploadFinishedResponse": {
        "type": "object",
        "properties": {
          "jobNumber": { "type": "string", "description": "8桁固定の数字" }
        },
        "required": ["jobNumber"]
      },
      "AudioUploadLocationResponse": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "Blob StorageにアクセスするためのSASトークン入りのアクセスURL"
          }
        },
        "required": ["url"]
      },
      "AudioDownloadLocationResponse": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "Blob StorageにアクセスするためのSASトークン入りのアクセスURL"
          }
        },
        "required": ["url"]
      },
      "TemplateDownloadLocationResponse": {
        "type": "object",
        "properties": { "url": { "type": "string" } },
        "required": ["url"]
      },
      "Assignee": {
        "type": "object",
        "properties": {
          "typistUserId": {
            "type": "number",
            "description": "TypistID（TypistIDかTypistGroupIDのどちらかに値が入る）"
          },
          "typistGroupId": {
            "type": "number",
            "description": "TypistGroupID（TypistGroupIDかTypistIDのどちらかに値が入る）"
          },
          "typistName": {
            "type": "string",
            "description": "Typist名 / TypistGroup名"
          }
        },
        "required": ["typistName"]
      },
      "Task": {
        "type": "object",
        "properties": {
          "audioFileId": {
            "type": "number",
            "description": "ODMS Cloud上の音声ファイルID"
          },
          "authorId": { "type": "string", "description": "AuthorID" },
          "workType": { "type": "string" },
          "optionItemList": {
            "maxItems": 10,
            "minItems": 10,
            "description": "音声ファイルに紐づくOption Itemの一覧（10個固定）",
            "type": "array",
            "items": { "$ref": "#/components/schemas/AudioOptionItem" }
          },
          "url": {
            "type": "string",
            "description": "音声ファイルのBlob Storage上での保存場所(ファイル名含む)のURL"
          },
          "fileName": { "type": "string", "description": "音声ファイル名" },
          "audioDuration": {
            "type": "string",
            "description": "音声ファイルの録音時間（ミリ秒の整数値）"
          },
          "audioCreatedDate": {
            "type": "string",
            "description": "音声ファイルの録音開始日時（yyyy-mm-ddThh:mm:ss.sss）"
          },
          "audioFinishedDate": {
            "type": "string",
            "description": "音声ファイルの録音終了日時（yyyy-mm-ddThh:mm:ss.sss）"
          },
          "audioUploadedDate": {
            "type": "string",
            "description": "音声ファイルのアップロード日時（yyyy-mm-ddThh:mm:ss.sss）"
          },
          "fileSize": {
            "type": "number",
            "description": "音声ファイルのファイルサイズ（Byte）"
          },
          "priority": {
            "type": "string",
            "description": "音声ファイルの優先度 \"00\":Normal / \"01\":High"
          },
          "audioFormat": {
            "type": "string",
            "description": "録音形式: DSS/DS2(SP)/DS2(QP)"
          },
          "comment": { "type": "string", "description": "コメント" },
          "isEncrypted": { "type": "boolean" },
          "jobNumber": { "type": "string", "description": "JOBナンバー" },
          "typist": {
            "description": "割り当てられたユーザー",
            "allOf": [{ "$ref": "#/components/schemas/Typist" }]
          },
          "assignees": {
            "description": "文字起こしに着手できる（チェックアウト可能な）、タスクにアサインされているグループ/個人の一覧",
            "type": "array",
            "items": { "$ref": "#/components/schemas/Assignee" }
          },
          "status": {
            "type": "string",
            "description": "音声ファイルのファイルステータス Uploaded / Pending / InProgress / Finished / Backup"
          },
          "transcriptionStartedDate": {
            "type": "string",
            "description": "文字起こし開始日時（yyyy-mm-ddThh:mm:ss.sss）"
          },
          "transcriptionFinishedDate": {
            "type": "string",
            "description": "文字起こし終了日時（yyyy-mm-ddThh:mm:ss.sss）"
          }
        },
        "required": [
          "audioFileId",
          "authorId",
          "workType",
          "optionItemList",
          "url",
          "fileName",
          "audioDuration",
          "audioCreatedDate",
          "audioFinishedDate",
          "audioUploadedDate",
          "fileSize",
          "priority",
          "audioFormat",
          "comment",
          "isEncrypted",
          "jobNumber",
          "assignees",
          "status"
        ]
      },
      "TasksResponse": {
        "type": "object",
        "properties": {
          "limit": {
            "type": "number",
            "description": "タスクの取得件数（指定しない場合はデフォルト値）"
          },
          "offset": {
            "type": "number",
            "description": "オフセット（何件目から取得するか　設定しない場合はデフォルト値）"
          },
          "total": { "type": "number", "description": "タスクの総件数" },
          "tasks": {
            "description": "音声ファイル/タスク一覧",
            "type": "array",
            "items": { "$ref": "#/components/schemas/Task" }
          }
        },
        "required": ["limit", "offset", "total", "tasks"]
      },
      "AudioNextResponse": {
        "type": "object",
        "properties": {
          "nextFileId": {
            "type": "number",
            "description": "ODMS Cloud上の次の音声ファイルID（存在しなければundefind）"
          }
        }
      },
      "ChangeStatusResponse": { "type": "object", "properties": {} },
      "PostCheckoutPermissionRequest": {
        "type": "object",
        "properties": {
          "assignees": {
            "description": "文字起こしに着手可能（チェックアウト可能）にしたい、グループ個人の一覧",
            "type": "array",
            "items": { "$ref": "#/components/schemas/Assignee" }
          }
        },
        "required": ["assignees"]
      },
      "PostCheckoutPermissionResponse": { "type": "object", "properties": {} },
      "CreateOrdersRequest": {
        "type": "object",
        "properties": {
          "poNumber": { "type": "string" },
          "orderCount": { "type": "number" }
        },
        "required": ["poNumber", "orderCount"]
      },
      "CreateOrdersResponse": { "type": "object", "properties": {} },
      "IssueCardLicensesRequest": {
        "type": "object",
        "properties": { "createCount": { "type": "number" } },
        "required": ["createCount"]
      },
      "IssueCardLicensesResponse": {
        "type": "object",
        "properties": {
          "cardLicenseKeys": { "type": "array", "items": { "type": "string" } }
        },
        "required": ["cardLicenseKeys"]
      },
      "ActivateCardLicensesRequest": {
        "type": "object",
        "properties": { "cardLicenseKey": { "type": "string" } },
        "required": ["cardLicenseKey"]
      },
      "ActivateCardLicensesResponse": { "type": "object", "properties": {} },
      "RegisterRequest": {
        "type": "object",
        "properties": {
          "pns": { "type": "string", "description": "wns or apns" },
          "handler": {
            "type": "string",
            "description": "wnsのチャネルURI or apnsのデバイストークン"
          }
        },
        "required": ["pns", "handler"]
      },
      "RegisterResponse": { "type": "object", "properties": {} }
    }
  }
}
