openapi: 3.0.0
info:
  title: Spotwork Business API
  description: API Key による company scope 付き Business API。共通仕様として RFC 7807、cursor pagination、X-Request-Id を採用する。
  version: 0.0.0
tags:
  - name: Orders
  - name: Works
  - name: Offers
  - name: Formats
  - name: Workers
  - name: MatchingHistories
  - name: Invoices
  - name: Company
  - name: Webhooks
  - name: ApiKeys
  - name: Spots
  - name: Schedules
  - name: RecruitRequirements
  - name: Messages
  - name: Reviews
  - name: Licenses
  - name: Seminars
  - name: RounderCards
  - name: OutputFolders
  - name: TextFieldNgLists
paths:
  /company:
    get:
      operationId: CompanyProfile_read
      parameters: []
      responses:
        '200':
          description: The request has succeeded.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.Company'
        '401':
          description: Access is unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnauthorizedError'
        '403':
          description: Access is forbidden.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.ForbiddenError'
        '404':
          description: The server cannot find the requested resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.NotFoundError'
      tags:
        - Company
    put:
      operationId: CompanyProfile_update
      parameters: []
      responses:
        '200':
          description: The request has succeeded.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.Company'
        '401':
          description: Access is unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnauthorizedError'
        '403':
          description: Access is forbidden.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.ForbiddenError'
        '404':
          description: The server cannot find the requested resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.NotFoundError'
        '422':
          description: Client error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnprocessableEntityError'
      tags:
        - Company
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Models.UpdateCompanyRequest'
  /company/api-keys/self:
    delete:
      operationId: CompanyApiKeys_revokeSelf
      description: 自キーを失効する
      parameters: []
      responses:
        '204':
          description: 'There is no content to send for this request, but the headers may be useful. '
        '401':
          description: Access is unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnauthorizedError'
      tags:
        - ApiKeys
  /company/members:
    get:
      operationId: CompanyMembers_list
      parameters: []
      responses:
        '200':
          description: The request has succeeded.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Models.CompanyMember'
        '401':
          description: Access is unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnauthorizedError'
        '403':
          description: Access is forbidden.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.ForbiddenError'
        '404':
          description: The server cannot find the requested resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.NotFoundError'
      tags:
        - Company
  /company/members/invite:
    post:
      operationId: CompanyMembers_invite
      parameters: []
      responses:
        '201':
          description: The request has succeeded and a new resource has been created as a result.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.CompanyInvitation'
        '401':
          description: Access is unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnauthorizedError'
        '403':
          description: Access is forbidden.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.ForbiddenError'
        '404':
          description: The server cannot find the requested resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.NotFoundError'
        '409':
          description: The request conflicts with the current state of the server.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.ConflictError'
        '422':
          description: Client error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnprocessableEntityError'
      tags:
        - Company
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Models.CreateCompanyInvitationRequest'
  /company/members/{memberId}:
    delete:
      operationId: CompanyMembers_remove
      parameters:
        - name: memberId
          in: path
          required: true
          schema:
            type: string
      responses:
        '204':
          description: 'There is no content to send for this request, but the headers may be useful. '
        '401':
          description: Access is unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnauthorizedError'
        '403':
          description: Access is forbidden.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.ForbiddenError'
        '404':
          description: The server cannot find the requested resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.NotFoundError'
        '409':
          description: The request conflicts with the current state of the server.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.ConflictError'
      tags:
        - Company
  /company/members/{memberId}/role:
    put:
      operationId: CompanyMembers_updateRole
      parameters:
        - name: memberId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The request has succeeded.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.CompanyMember'
        '401':
          description: Access is unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnauthorizedError'
        '403':
          description: Access is forbidden.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.ForbiddenError'
        '404':
          description: The server cannot find the requested resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.NotFoundError'
        '409':
          description: The request conflicts with the current state of the server.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.ConflictError'
      tags:
        - Company
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Models.UpdateCompanyMemberRoleRequest'
  /company/webhooks:
    get:
      operationId: CompanyWebhooks_list
      description: Webhook設定一覧取得
      parameters: []
      responses:
        '200':
          description: The request has succeeded.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Models.Webhook'
        '401':
          description: Access is unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnauthorizedError'
        '403':
          description: Access is forbidden.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.ForbiddenError'
      tags:
        - Webhooks
    post:
      operationId: CompanyWebhooks_create
      description: Webhook設定作成（secret は初回のみレスポンスに含まれる）
      parameters: []
      responses:
        '201':
          description: The request has succeeded and a new resource has been created as a result.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.CreateWebhookResponse'
        '401':
          description: Access is unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnauthorizedError'
        '403':
          description: Access is forbidden.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.ForbiddenError'
        '422':
          description: Client error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnprocessableEntityError'
      tags:
        - Webhooks
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Models.CreateWebhookRequest'
  /company/webhooks/{webhookId}:
    put:
      operationId: CompanyWebhooks_update
      description: Webhook設定更新
      parameters:
        - name: webhookId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The request has succeeded.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.Webhook'
        '401':
          description: Access is unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnauthorizedError'
        '403':
          description: Access is forbidden.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.ForbiddenError'
        '404':
          description: The server cannot find the requested resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.NotFoundError'
        '422':
          description: Client error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnprocessableEntityError'
      tags:
        - Webhooks
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Models.UpdateWebhookRequest'
    delete:
      operationId: CompanyWebhooks_remove
      description: Webhook設定無効化
      parameters:
        - name: webhookId
          in: path
          required: true
          schema:
            type: string
      responses:
        '204':
          description: 'There is no content to send for this request, but the headers may be useful. '
        '401':
          description: Access is unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnauthorizedError'
        '403':
          description: Access is forbidden.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.ForbiddenError'
        '404':
          description: The server cannot find the requested resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.NotFoundError'
      tags:
        - Webhooks
  /company/webhooks/{webhookId}/test:
    post:
      operationId: CompanyWebhooks_test
      description: テストイベント送信
      parameters:
        - name: webhookId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The request has succeeded.
          content:
            application/json:
              schema:
                type: object
                properties:
                  delivered:
                    type: boolean
                  statusCode:
                    type: integer
                    format: int32
                    nullable: true
                    description: Webhook endpoint が返した HTTP status。接続失敗時は null
                  error:
                    type: string
                    description: 接続失敗時のエラーメッセージ
                required:
                  - delivered
        '401':
          description: Access is unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnauthorizedError'
        '403':
          description: Access is forbidden.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.ForbiddenError'
        '404':
          description: The server cannot find the requested resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.NotFoundError'
      tags:
        - Webhooks
  /folders:
    get:
      operationId: OutputFolders_list
      parameters:
        - name: parentId
          in: query
          required: false
          schema:
            type: string
          explode: false
        - name: limit
          in: query
          required: false
          schema:
            type: integer
            format: int32
          explode: false
        - name: cursor
          in: query
          required: false
          schema:
            type: string
          explode: false
      responses:
        '200':
          description: The request has succeeded.
          content:
            application/json:
              schema:
                type: object
                required:
                  - items
                  - hasMore
                properties:
                  items:
                    type: array
                    items:
                      $ref: '#/components/schemas/Models.OutputFolderEntry'
                  nextCursor:
                    type: string
                    nullable: true
                  hasMore:
                    type: boolean
                description: ページネーション共通レスポンス
        '401':
          description: Access is unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnauthorizedError'
        '403':
          description: Access is forbidden.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.ForbiddenError'
      tags:
        - OutputFolders
    post:
      operationId: OutputFolders_create
      parameters: []
      responses:
        '201':
          description: The request has succeeded and a new resource has been created as a result.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.OutputFolder'
        '401':
          description: Access is unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnauthorizedError'
        '403':
          description: Access is forbidden.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.ForbiddenError'
        '422':
          description: Client error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnprocessableEntityError'
      tags:
        - OutputFolders
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Models.CreateOutputFolderRequest'
  /folders/{folderId}:
    get:
      operationId: OutputFolders_read
      parameters:
        - name: folderId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The request has succeeded.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.OutputFolder'
        '401':
          description: Access is unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnauthorizedError'
        '403':
          description: Access is forbidden.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.ForbiddenError'
        '404':
          description: The server cannot find the requested resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.NotFoundError'
      tags:
        - OutputFolders
    delete:
      operationId: OutputFolders_remove
      parameters:
        - name: folderId
          in: path
          required: true
          schema:
            type: string
      responses:
        '204':
          description: 'There is no content to send for this request, but the headers may be useful. '
        '401':
          description: Access is unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnauthorizedError'
        '403':
          description: Access is forbidden.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.ForbiddenError'
        '404':
          description: The server cannot find the requested resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.NotFoundError'
      tags:
        - OutputFolders
  /folders/{folderId}/download:
    get:
      operationId: OutputFolders_download
      parameters:
        - name: folderId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The request has succeeded.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.FolderDownloadManifest'
        '401':
          description: Access is unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnauthorizedError'
        '403':
          description: Access is forbidden.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.ForbiddenError'
        '404':
          description: The server cannot find the requested resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.NotFoundError'
      tags:
        - OutputFolders
  /folders/{folderId}/files:
    get:
      operationId: OutputFolders_listFiles
      parameters:
        - name: folderId
          in: path
          required: true
          schema:
            type: string
        - name: limit
          in: query
          required: false
          schema:
            type: integer
            format: int32
          explode: false
        - name: cursor
          in: query
          required: false
          schema:
            type: string
          explode: false
      responses:
        '200':
          description: The request has succeeded.
          content:
            application/json:
              schema:
                type: object
                required:
                  - items
                  - hasMore
                properties:
                  items:
                    type: array
                    items:
                      $ref: '#/components/schemas/Models.OutputFile'
                  nextCursor:
                    type: string
                    nullable: true
                  hasMore:
                    type: boolean
                description: ページネーション共通レスポンス
        '401':
          description: Access is unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnauthorizedError'
        '403':
          description: Access is forbidden.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.ForbiddenError'
        '404':
          description: The server cannot find the requested resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.NotFoundError'
      tags:
        - OutputFolders
  /folders/{folderId}/files/{fileId}/download:
    get:
      operationId: OutputFolders_downloadFile
      parameters:
        - name: folderId
          in: path
          required: true
          schema:
            type: string
        - name: fileId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The request has succeeded.
          content:
            application/octet-stream:
              schema:
                type: string
                format: binary
        '401':
          description: Access is unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnauthorizedError'
        '403':
          description: Access is forbidden.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.ForbiddenError'
        '404':
          description: The server cannot find the requested resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.NotFoundError'
      tags:
        - OutputFolders
  /formats:
    get:
      operationId: Formats_list
      description: フォーマット一覧取得
      parameters:
        - name: limit
          in: query
          required: false
          schema:
            type: integer
            format: int32
          explode: false
        - name: cursor
          in: query
          required: false
          schema:
            type: string
          explode: false
      responses:
        '200':
          description: The request has succeeded.
          content:
            application/json:
              schema:
                type: object
                required:
                  - items
                  - hasMore
                properties:
                  items:
                    type: array
                    items:
                      $ref: '#/components/schemas/Models.Format'
                  nextCursor:
                    type: string
                    nullable: true
                  hasMore:
                    type: boolean
                description: ページネーション共通レスポンス
        '401':
          description: Access is unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnauthorizedError'
        '403':
          description: Access is forbidden.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.ForbiddenError'
      tags:
        - Formats
    post:
      operationId: Formats_create
      description: フォーマット作成
      parameters: []
      responses:
        '201':
          description: The request has succeeded and a new resource has been created as a result.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.Format'
        '401':
          description: Access is unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnauthorizedError'
        '403':
          description: Access is forbidden.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.ForbiddenError'
        '422':
          description: Client error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnprocessableEntityError'
      tags:
        - Formats
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Models.CreateFormatRequest'
  /formats/{formatId}:
    get:
      operationId: Formats_read
      description: フォーマット詳細取得
      parameters:
        - name: formatId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The request has succeeded.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.Format'
        '401':
          description: Access is unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnauthorizedError'
        '403':
          description: Access is forbidden.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.ForbiddenError'
        '404':
          description: The server cannot find the requested resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.NotFoundError'
      tags:
        - Formats
    put:
      operationId: Formats_update
      description: フォーマット更新
      parameters:
        - name: formatId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The request has succeeded.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.Format'
        '401':
          description: Access is unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnauthorizedError'
        '403':
          description: Access is forbidden.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.ForbiddenError'
        '404':
          description: The server cannot find the requested resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.NotFoundError'
        '422':
          description: Client error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnprocessableEntityError'
      tags:
        - Formats
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Models.UpdateFormatRequest'
    delete:
      operationId: Formats_remove
      description: フォーマット削除
      parameters:
        - name: formatId
          in: path
          required: true
          schema:
            type: string
      responses:
        '204':
          description: 'There is no content to send for this request, but the headers may be useful. '
        '401':
          description: Access is unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnauthorizedError'
        '403':
          description: Access is forbidden.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.ForbiddenError'
        '404':
          description: The server cannot find the requested resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.NotFoundError'
      tags:
        - Formats
  /invoices:
    get:
      operationId: Invoices_list
      description: 請求一覧取得（月次サマリー）
      parameters:
        - name: year
          in: query
          required: false
          schema:
            type: integer
            format: int32
          explode: false
        - name: month
          in: query
          required: false
          schema:
            type: string
          explode: false
      responses:
        '200':
          description: The request has succeeded.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Models.Invoice'
        '401':
          description: Access is unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnauthorizedError'
        '403':
          description: Access is forbidden.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.ForbiddenError'
      tags:
        - Invoices
  /invoices/{year}/{month}:
    get:
      operationId: Invoices_read
      description: 月次請求詳細取得
      parameters:
        - name: year
          in: path
          required: true
          schema:
            type: integer
            format: int32
        - name: month
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The request has succeeded.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.Invoice'
        '401':
          description: Access is unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnauthorizedError'
        '403':
          description: Access is forbidden.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.ForbiddenError'
        '404':
          description: The server cannot find the requested resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.NotFoundError'
      tags:
        - Invoices
  /invoices/{year}/{month}/orders:
    get:
      operationId: Invoices_listOrders
      description: 請求対象発注一覧
      parameters:
        - name: year
          in: path
          required: true
          schema:
            type: integer
            format: int32
        - name: month
          in: path
          required: true
          schema:
            type: string
        - name: limit
          in: query
          required: false
          schema:
            type: integer
            format: int32
          explode: false
        - name: cursor
          in: query
          required: false
          schema:
            type: string
          explode: false
      responses:
        '200':
          description: The request has succeeded.
          content:
            application/json:
              schema:
                type: object
                required:
                  - items
                  - hasMore
                properties:
                  items:
                    type: array
                    items:
                      $ref: '#/components/schemas/Models.InvoiceOrderItem'
                  nextCursor:
                    type: string
                    nullable: true
                  hasMore:
                    type: boolean
                description: ページネーション共通レスポンス
        '401':
          description: Access is unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnauthorizedError'
        '403':
          description: Access is forbidden.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.ForbiddenError'
        '404':
          description: The server cannot find the requested resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.NotFoundError'
      tags:
        - Invoices
  /licenses:
    get:
      operationId: Licenses_list
      parameters:
        - name: status
          in: query
          required: false
          schema:
            $ref: '#/components/schemas/Models.LicenseStatus'
          explode: false
        - name: limit
          in: query
          required: false
          schema:
            type: integer
            format: int32
          explode: false
        - name: cursor
          in: query
          required: false
          schema:
            type: string
          explode: false
      responses:
        '200':
          description: The request has succeeded.
          content:
            application/json:
              schema:
                type: object
                required:
                  - items
                  - hasMore
                properties:
                  items:
                    type: array
                    items:
                      $ref: '#/components/schemas/Models.License'
                  nextCursor:
                    type: string
                    nullable: true
                  hasMore:
                    type: boolean
                description: ページネーション共通レスポンス
        '401':
          description: Access is unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnauthorizedError'
        '403':
          description: Access is forbidden.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.ForbiddenError'
      tags:
        - Licenses
    post:
      operationId: Licenses_create
      parameters: []
      responses:
        '201':
          description: The request has succeeded and a new resource has been created as a result.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.License'
        '401':
          description: Access is unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnauthorizedError'
        '403':
          description: Access is forbidden.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.ForbiddenError'
        '422':
          description: Client error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnprocessableEntityError'
      tags:
        - Licenses
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Models.CreateLicenseRequest'
  /licenses/{licenseId}:
    get:
      operationId: Licenses_read
      parameters:
        - name: licenseId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The request has succeeded.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.License'
        '401':
          description: Access is unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnauthorizedError'
        '403':
          description: Access is forbidden.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.ForbiddenError'
        '404':
          description: The server cannot find the requested resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.NotFoundError'
      tags:
        - Licenses
    put:
      operationId: Licenses_update
      parameters:
        - name: licenseId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The request has succeeded.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.License'
        '401':
          description: Access is unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnauthorizedError'
        '403':
          description: Access is forbidden.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.ForbiddenError'
        '404':
          description: The server cannot find the requested resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.NotFoundError'
        '422':
          description: Client error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnprocessableEntityError'
      tags:
        - Licenses
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Models.UpdateLicenseRequest'
    delete:
      operationId: Licenses_remove
      parameters:
        - name: licenseId
          in: path
          required: true
          schema:
            type: string
      responses:
        '204':
          description: 'There is no content to send for this request, but the headers may be useful. '
        '401':
          description: Access is unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnauthorizedError'
        '403':
          description: Access is forbidden.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.ForbiddenError'
        '404':
          description: The server cannot find the requested resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.NotFoundError'
      tags:
        - Licenses
  /licenses/{licenseId}/holders:
    get:
      operationId: Licenses_listHolders
      parameters:
        - name: licenseId
          in: path
          required: true
          schema:
            type: string
        - name: limit
          in: query
          required: false
          schema:
            type: integer
            format: int32
          explode: false
        - name: cursor
          in: query
          required: false
          schema:
            type: string
          explode: false
      responses:
        '200':
          description: The request has succeeded.
          content:
            application/json:
              schema:
                type: object
                required:
                  - items
                  - hasMore
                properties:
                  items:
                    type: array
                    items:
                      $ref: '#/components/schemas/Models.LicensedUser'
                  nextCursor:
                    type: string
                    nullable: true
                  hasMore:
                    type: boolean
                description: ページネーション共通レスポンス
        '401':
          description: Access is unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnauthorizedError'
        '403':
          description: Access is forbidden.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.ForbiddenError'
        '404':
          description: The server cannot find the requested resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.NotFoundError'
      tags:
        - Licenses
    post:
      operationId: Licenses_grant
      parameters:
        - name: licenseId
          in: path
          required: true
          schema:
            type: string
      responses:
        '201':
          description: The request has succeeded and a new resource has been created as a result.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.LicensedUser'
        '401':
          description: Access is unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnauthorizedError'
        '403':
          description: Access is forbidden.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.ForbiddenError'
        '404':
          description: The server cannot find the requested resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.NotFoundError'
        '409':
          description: The request conflicts with the current state of the server.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.ConflictError'
        '422':
          description: Client error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnprocessableEntityError'
      tags:
        - Licenses
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Models.GrantLicenseRequest'
  /licenses/{licenseId}/submissions:
    get:
      operationId: Licenses_listSubmissions
      parameters:
        - name: licenseId
          in: path
          required: true
          schema:
            type: string
        - name: status
          in: query
          required: false
          schema:
            $ref: '#/components/schemas/Models.LicenseSubmissionStatus'
          explode: false
        - name: limit
          in: query
          required: false
          schema:
            type: integer
            format: int32
          explode: false
        - name: cursor
          in: query
          required: false
          schema:
            type: string
          explode: false
      responses:
        '200':
          description: The request has succeeded.
          content:
            application/json:
              schema:
                type: object
                required:
                  - items
                  - hasMore
                properties:
                  items:
                    type: array
                    items:
                      $ref: '#/components/schemas/Models.LicenseSubmission'
                  nextCursor:
                    type: string
                    nullable: true
                  hasMore:
                    type: boolean
                description: ページネーション共通レスポンス
        '401':
          description: Access is unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnauthorizedError'
        '403':
          description: Access is forbidden.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.ForbiddenError'
        '404':
          description: The server cannot find the requested resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.NotFoundError'
      tags:
        - Licenses
  /licenses/{licenseId}/submissions/{submissionId}:
    get:
      operationId: Licenses_readSubmission
      parameters:
        - name: licenseId
          in: path
          required: true
          schema:
            type: string
        - name: submissionId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The request has succeeded.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.LicenseSubmission'
        '401':
          description: Access is unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnauthorizedError'
        '403':
          description: Access is forbidden.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.ForbiddenError'
        '404':
          description: The server cannot find the requested resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.NotFoundError'
      tags:
        - Licenses
  /licenses/{licenseId}/submissions/{submissionId}/approve:
    post:
      operationId: Licenses_approveSubmission
      parameters:
        - name: licenseId
          in: path
          required: true
          schema:
            type: string
        - name: submissionId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The request has succeeded.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.LicenseSubmission'
        '401':
          description: Access is unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnauthorizedError'
        '403':
          description: Access is forbidden.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.ForbiddenError'
        '404':
          description: The server cannot find the requested resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.NotFoundError'
        '409':
          description: The request conflicts with the current state of the server.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.ConflictError'
      tags:
        - Licenses
      requestBody:
        required: false
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Models.ReviewLicenseSubmissionRequest'
  /licenses/{licenseId}/submissions/{submissionId}/reject:
    post:
      operationId: Licenses_rejectSubmission
      parameters:
        - name: licenseId
          in: path
          required: true
          schema:
            type: string
        - name: submissionId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The request has succeeded.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.LicenseSubmission'
        '401':
          description: Access is unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnauthorizedError'
        '403':
          description: Access is forbidden.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.ForbiddenError'
        '404':
          description: The server cannot find the requested resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.NotFoundError'
        '409':
          description: The request conflicts with the current state of the server.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.ConflictError'
      tags:
        - Licenses
      requestBody:
        required: false
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Models.ReviewLicenseSubmissionRequest'
  /matching-histories:
    get:
      operationId: MatchingHistories_list
      description: 企業配下の MATCHING_HISTORY 一覧取得
      parameters:
        - name: workerId
          in: query
          required: false
          schema:
            type: string
          explode: false
        - name: status
          in: query
          required: false
          schema:
            type: string
          explode: false
        - name: formatId
          in: query
          required: false
          schema:
            type: string
          explode: false
        - name: spotId
          in: query
          required: false
          schema:
            type: string
          explode: false
        - name: from
          in: query
          required: false
          schema:
            type: string
            format: date-time
          explode: false
        - name: to
          in: query
          required: false
          schema:
            type: string
            format: date-time
          explode: false
        - name: limit
          in: query
          required: false
          schema:
            type: integer
            format: int32
          explode: false
        - name: cursor
          in: query
          required: false
          schema:
            type: string
          explode: false
      responses:
        '200':
          description: The request has succeeded.
          content:
            application/json:
              schema:
                type: object
                required:
                  - items
                  - hasMore
                properties:
                  items:
                    type: array
                    items:
                      $ref: '#/components/schemas/Models.WorkerWorkHistoryItem'
                  nextCursor:
                    type: string
                    nullable: true
                  hasMore:
                    type: boolean
                description: ページネーション共通レスポンス
        '401':
          description: Access is unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnauthorizedError'
        '403':
          description: Access is forbidden.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.ForbiddenError'
        '404':
          description: The server cannot find the requested resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.NotFoundError'
      tags:
        - MatchingHistories
  /messages/rooms:
    get:
      operationId: MessageRooms_list
      description: メッセージルーム一覧
      parameters:
        - name: status
          in: query
          required: false
          schema:
            $ref: '#/components/schemas/Models.MessageRoomStatus'
          explode: false
        - name: unreadOnly
          in: query
          required: false
          schema:
            type: boolean
          explode: false
        - name: limit
          in: query
          required: false
          schema:
            type: integer
            format: int32
          explode: false
        - name: cursor
          in: query
          required: false
          schema:
            type: string
          explode: false
      responses:
        '200':
          description: The request has succeeded.
          content:
            application/json:
              schema:
                type: object
                required:
                  - items
                  - hasMore
                properties:
                  items:
                    type: array
                    items:
                      $ref: '#/components/schemas/Models.MessageRoom'
                  nextCursor:
                    type: string
                    nullable: true
                  hasMore:
                    type: boolean
                description: ページネーション共通レスポンス
        '401':
          description: Access is unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnauthorizedError'
        '403':
          description: Access is forbidden.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.ForbiddenError'
      tags:
        - Messages
  /messages/rooms/{roomId}:
    get:
      operationId: MessageRooms_read
      description: メッセージルーム詳細
      parameters:
        - name: roomId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The request has succeeded.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.MessageRoom'
        '401':
          description: Access is unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnauthorizedError'
        '403':
          description: Access is forbidden.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.ForbiddenError'
        '404':
          description: The server cannot find the requested resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.NotFoundError'
      tags:
        - Messages
  /messages/rooms/{roomId}/messages:
    get:
      operationId: RoomMessages_list
      description: メッセージ一覧（本文取得）
      parameters:
        - name: roomId
          in: path
          required: true
          schema:
            type: string
        - name: from
          in: query
          required: false
          schema:
            type: string
            format: date-time
          explode: false
        - name: to
          in: query
          required: false
          schema:
            type: string
            format: date-time
          explode: false
        - name: limit
          in: query
          required: false
          schema:
            type: integer
            format: int32
          explode: false
        - name: cursor
          in: query
          required: false
          schema:
            type: string
          explode: false
      responses:
        '200':
          description: The request has succeeded.
          content:
            application/json:
              schema:
                type: object
                required:
                  - items
                  - hasMore
                properties:
                  items:
                    type: array
                    items:
                      $ref: '#/components/schemas/Models.Message'
                  nextCursor:
                    type: string
                    nullable: true
                  hasMore:
                    type: boolean
                description: ページネーション共通レスポンス
        '401':
          description: Access is unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnauthorizedError'
        '403':
          description: Access is forbidden.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.ForbiddenError'
        '404':
          description: The server cannot find the requested resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.NotFoundError'
      tags:
        - Messages
    post:
      operationId: RoomMessages_create
      description: メッセージ送信
      parameters:
        - name: roomId
          in: path
          required: true
          schema:
            type: string
      responses:
        '201':
          description: The request has succeeded and a new resource has been created as a result.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.Message'
        '401':
          description: Access is unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnauthorizedError'
        '403':
          description: Access is forbidden.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.ForbiddenError'
        '404':
          description: The server cannot find the requested resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.NotFoundError'
        '409':
          description: The request conflicts with the current state of the server.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.ConflictError'
        '422':
          description: Client error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnprocessableEntityError'
      tags:
        - Messages
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Models.CreateMessageRequest'
  /messages/rooms/{roomId}/messages/{messageId}:
    get:
      operationId: RoomMessages_read
      description: メッセージ詳細（本文取得）
      parameters:
        - name: roomId
          in: path
          required: true
          schema:
            type: string
        - name: messageId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The request has succeeded.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.Message'
        '401':
          description: Access is unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnauthorizedError'
        '403':
          description: Access is forbidden.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.ForbiddenError'
        '404':
          description: The server cannot find the requested resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.NotFoundError'
      tags:
        - Messages
  /offers:
    get:
      operationId: Offers_list
      description: オファー一覧取得
      parameters:
        - name: orderId
          in: query
          required: false
          schema:
            type: string
          explode: false
        - name: limit
          in: query
          required: false
          schema:
            type: integer
            format: int32
          explode: false
        - name: cursor
          in: query
          required: false
          schema:
            type: string
          explode: false
      responses:
        '200':
          description: The request has succeeded.
          content:
            application/json:
              schema:
                type: object
                required:
                  - items
                  - hasMore
                properties:
                  items:
                    type: array
                    items:
                      $ref: '#/components/schemas/Models.Offer'
                  nextCursor:
                    type: string
                    nullable: true
                  hasMore:
                    type: boolean
                description: ページネーション共通レスポンス
        '401':
          description: Access is unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnauthorizedError'
        '403':
          description: Access is forbidden.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.ForbiddenError'
      tags:
        - Offers
    post:
      operationId: Offers_create
      description: オファー送信
      parameters: []
      responses:
        '201':
          description: The request has succeeded and a new resource has been created as a result.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.Offer'
        '401':
          description: Access is unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnauthorizedError'
        '403':
          description: Access is forbidden.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.ForbiddenError'
        '404':
          description: The server cannot find the requested resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.NotFoundError'
        '409':
          description: The request conflicts with the current state of the server.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.ConflictError'
        '422':
          description: Client error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnprocessableEntityError'
      tags:
        - Offers
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Models.CreateOfferRequest'
  /offers/{offerId}:
    delete:
      operationId: Offers_remove
      description: オファー取り消し
      parameters:
        - name: offerId
          in: path
          required: true
          schema:
            type: string
      responses:
        '204':
          description: 'There is no content to send for this request, but the headers may be useful. '
        '401':
          description: Access is unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnauthorizedError'
        '403':
          description: Access is forbidden.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.ForbiddenError'
        '404':
          description: The server cannot find the requested resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.NotFoundError'
      tags:
        - Offers
  /orders:
    get:
      operationId: Orders_list
      description: 発注一覧取得
      parameters:
        - name: status
          in: query
          required: false
          description: 'ステータスフィルタ。複数指定は comma-separated で指定する。例: open,matched'
          schema:
            type: string
          explode: false
        - name: formatId
          in: query
          required: false
          schema:
            type: string
          explode: false
        - name: spotId
          in: query
          required: false
          schema:
            type: string
          explode: false
        - name: dateFrom
          in: query
          required: false
          schema:
            type: string
          explode: false
        - name: dateTo
          in: query
          required: false
          schema:
            type: string
          explode: false
        - name: limit
          in: query
          required: false
          schema:
            type: integer
            format: int32
          explode: false
        - name: cursor
          in: query
          required: false
          schema:
            type: string
          explode: false
      responses:
        '200':
          description: The request has succeeded.
          content:
            application/json:
              schema:
                type: object
                required:
                  - items
                  - hasMore
                properties:
                  items:
                    type: array
                    items:
                      $ref: '#/components/schemas/Models.Order'
                  nextCursor:
                    type: string
                    nullable: true
                  hasMore:
                    type: boolean
                description: ページネーション共通レスポンス
        '401':
          description: Access is unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnauthorizedError'
        '403':
          description: Access is forbidden.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.ForbiddenError'
      tags:
        - Orders
    post:
      operationId: Orders_create
      description: 発注作成
      parameters: []
      responses:
        '201':
          description: The request has succeeded and a new resource has been created as a result.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.Order'
        '401':
          description: Access is unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnauthorizedError'
        '403':
          description: Access is forbidden.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.ForbiddenError'
        '422':
          description: Client error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnprocessableEntityError'
      tags:
        - Orders
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Models.CreateOrderRequest'
  /orders/{orderId}:
    get:
      operationId: Orders_read
      description: 発注詳細取得
      parameters:
        - name: orderId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The request has succeeded.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.Order'
        '401':
          description: Access is unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnauthorizedError'
        '403':
          description: Access is forbidden.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.ForbiddenError'
        '404':
          description: The server cannot find the requested resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.NotFoundError'
      tags:
        - Orders
    put:
      operationId: Orders_update
      description: 発注更新
      parameters:
        - name: orderId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The request has succeeded.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.Order'
        '401':
          description: Access is unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnauthorizedError'
        '403':
          description: Access is forbidden.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.ForbiddenError'
        '404':
          description: The server cannot find the requested resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.NotFoundError'
        '422':
          description: Client error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnprocessableEntityError'
      tags:
        - Orders
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Models.UpdateOrderRequest'
    delete:
      operationId: Orders_remove
      description: 発注削除
      parameters:
        - name: orderId
          in: path
          required: true
          schema:
            type: string
      responses:
        '204':
          description: 'There is no content to send for this request, but the headers may be useful. '
        '401':
          description: Access is unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnauthorizedError'
        '403':
          description: Access is forbidden.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.ForbiddenError'
        '404':
          description: The server cannot find the requested resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.NotFoundError'
      tags:
        - Orders
  /orders/{orderId}/works:
    get:
      operationId: OrderWorks_list
      description: 作業一覧取得
      parameters:
        - name: orderId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The request has succeeded.
          content:
            application/json:
              schema:
                type: object
                required:
                  - items
                  - hasMore
                properties:
                  items:
                    type: array
                    items:
                      $ref: '#/components/schemas/Models.Work'
                  nextCursor:
                    type: string
                    nullable: true
                  hasMore:
                    type: boolean
                description: ページネーション共通レスポンス
        '401':
          description: Access is unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnauthorizedError'
        '403':
          description: Access is forbidden.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.ForbiddenError'
        '404':
          description: The server cannot find the requested resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.NotFoundError'
      tags:
        - Works
  /recruit-requirements:
    get:
      operationId: RecruitRequirements_list
      description: 募集要件一覧取得
      parameters:
        - name: status
          in: query
          required: false
          schema:
            $ref: '#/components/schemas/Models.RecruitRequirementStatus'
          explode: false
        - name: prefecture
          in: query
          required: false
          schema:
            type: string
          explode: false
        - name: hasInterest
          in: query
          required: false
          schema:
            type: boolean
          explode: false
        - name: limit
          in: query
          required: false
          schema:
            type: integer
            format: int32
          explode: false
        - name: cursor
          in: query
          required: false
          schema:
            type: string
          explode: false
      responses:
        '200':
          description: The request has succeeded.
          content:
            application/json:
              schema:
                type: object
                required:
                  - items
                  - hasMore
                properties:
                  items:
                    type: array
                    items:
                      $ref: '#/components/schemas/Models.RecruitRequirement'
                  nextCursor:
                    type: string
                    nullable: true
                  hasMore:
                    type: boolean
                description: ページネーション共通レスポンス
        '401':
          description: Access is unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnauthorizedError'
        '403':
          description: Access is forbidden.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.ForbiddenError'
      tags:
        - RecruitRequirements
    post:
      operationId: RecruitRequirements_create
      description: 募集要件作成
      parameters: []
      responses:
        '201':
          description: The request has succeeded and a new resource has been created as a result.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.RecruitRequirement'
        '401':
          description: Access is unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnauthorizedError'
        '403':
          description: Access is forbidden.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.ForbiddenError'
        '422':
          description: Client error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnprocessableEntityError'
      tags:
        - RecruitRequirements
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Models.CreateRecruitRequirementRequest'
  /recruit-requirements/{requirementId}:
    get:
      operationId: RecruitRequirements_read
      description: 募集要件詳細取得
      parameters:
        - name: requirementId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The request has succeeded.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.RecruitRequirement'
        '401':
          description: Access is unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnauthorizedError'
        '403':
          description: Access is forbidden.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.ForbiddenError'
        '404':
          description: The server cannot find the requested resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.NotFoundError'
      tags:
        - RecruitRequirements
    put:
      operationId: RecruitRequirements_update
      description: 募集要件更新
      parameters:
        - name: requirementId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The request has succeeded.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.RecruitRequirement'
        '401':
          description: Access is unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnauthorizedError'
        '403':
          description: Access is forbidden.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.ForbiddenError'
        '404':
          description: The server cannot find the requested resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.NotFoundError'
        '422':
          description: Client error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnprocessableEntityError'
      tags:
        - RecruitRequirements
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Models.UpdateRecruitRequirementRequest'
    delete:
      operationId: RecruitRequirements_remove
      description: 募集要件削除
      parameters:
        - name: requirementId
          in: path
          required: true
          schema:
            type: string
      responses:
        '204':
          description: 'There is no content to send for this request, but the headers may be useful. '
        '401':
          description: Access is unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnauthorizedError'
        '403':
          description: Access is forbidden.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.ForbiddenError'
        '404':
          description: The server cannot find the requested resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.NotFoundError'
      tags:
        - RecruitRequirements
  /recruit-requirements/{requirementId}/interests:
    get:
      operationId: RecruitRequirements_listInterests
      description: 興味ありワーカー一覧取得
      parameters:
        - name: requirementId
          in: path
          required: true
          schema:
            type: string
        - name: limit
          in: query
          required: false
          schema:
            type: integer
            format: int32
          explode: false
        - name: cursor
          in: query
          required: false
          schema:
            type: string
          explode: false
      responses:
        '200':
          description: The request has succeeded.
          content:
            application/json:
              schema:
                type: object
                required:
                  - items
                  - hasMore
                properties:
                  items:
                    type: array
                    items:
                      $ref: '#/components/schemas/Models.RecruitRequirementInterest'
                  nextCursor:
                    type: string
                    nullable: true
                  hasMore:
                    type: boolean
                description: ページネーション共通レスポンス
        '401':
          description: Access is unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnauthorizedError'
        '403':
          description: Access is forbidden.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.ForbiddenError'
        '404':
          description: The server cannot find the requested resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.NotFoundError'
      tags:
        - RecruitRequirements
  /reviews:
    get:
      operationId: Reviews_list
      description: 自社へのレビュー一覧取得
      parameters:
        - name: limit
          in: query
          required: false
          schema:
            type: integer
            format: int32
          explode: false
        - name: cursor
          in: query
          required: false
          schema:
            type: string
          explode: false
      responses:
        '200':
          description: The request has succeeded.
          content:
            application/json:
              schema:
                type: object
                required:
                  - items
                  - hasMore
                properties:
                  items:
                    type: array
                    items:
                      $ref: '#/components/schemas/Models.CompanyReview'
                  nextCursor:
                    type: string
                    nullable: true
                  hasMore:
                    type: boolean
                description: ページネーション共通レスポンス
        '401':
          description: Access is unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnauthorizedError'
        '403':
          description: Access is forbidden.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.ForbiddenError'
      tags:
        - Reviews
    post:
      operationId: Reviews_create
      description: ワーカーへのレビュー投稿
      parameters: []
      responses:
        '201':
          description: The request has succeeded and a new resource has been created as a result.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.WorkerReview'
        '401':
          description: Access is unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnauthorizedError'
        '403':
          description: Access is forbidden.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.ForbiddenError'
        '404':
          description: The server cannot find the requested resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.NotFoundError'
        '409':
          description: The request conflicts with the current state of the server.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.ConflictError'
        '422':
          description: Client error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnprocessableEntityError'
      tags:
        - Reviews
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Models.CreateWorkerReviewRequest'
  /reviews/summary:
    get:
      operationId: Reviews_summary
      description: 自社へのレビュー集計取得
      parameters: []
      responses:
        '200':
          description: The request has succeeded.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.ReviewSummary'
        '401':
          description: Access is unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnauthorizedError'
        '403':
          description: Access is forbidden.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.ForbiddenError'
      tags:
        - Reviews
  /rounder-cards:
    get:
      operationId: RounderCards_list
      parameters:
        - name: limit
          in: query
          required: false
          schema:
            type: integer
            format: int32
          explode: false
        - name: cursor
          in: query
          required: false
          schema:
            type: string
          explode: false
      responses:
        '200':
          description: The request has succeeded.
          content:
            application/json:
              schema:
                type: object
                required:
                  - items
                  - hasMore
                properties:
                  items:
                    type: array
                    items:
                      $ref: '#/components/schemas/Models.RounderCard'
                  nextCursor:
                    type: string
                    nullable: true
                  hasMore:
                    type: boolean
                description: ページネーション共通レスポンス
        '401':
          description: Access is unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnauthorizedError'
        '403':
          description: Access is forbidden.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.ForbiddenError'
      tags:
        - RounderCards
    post:
      operationId: RounderCards_create
      parameters: []
      responses:
        '201':
          description: The request has succeeded and a new resource has been created as a result.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.RounderCard'
        '401':
          description: Access is unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnauthorizedError'
        '403':
          description: Access is forbidden.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.ForbiddenError'
        '422':
          description: Client error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnprocessableEntityError'
      tags:
        - RounderCards
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Models.CreateRounderCardRequest'
  /rounder-cards/{cardId}:
    get:
      operationId: RounderCards_read
      parameters:
        - name: cardId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The request has succeeded.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.RounderCard'
        '401':
          description: Access is unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnauthorizedError'
        '403':
          description: Access is forbidden.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.ForbiddenError'
        '404':
          description: The server cannot find the requested resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.NotFoundError'
      tags:
        - RounderCards
    put:
      operationId: RounderCards_update
      parameters:
        - name: cardId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The request has succeeded.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.RounderCard'
        '401':
          description: Access is unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnauthorizedError'
        '403':
          description: Access is forbidden.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.ForbiddenError'
        '404':
          description: The server cannot find the requested resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.NotFoundError'
        '422':
          description: Client error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnprocessableEntityError'
      tags:
        - RounderCards
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Models.UpdateRounderCardRequest'
    delete:
      operationId: RounderCards_remove
      parameters:
        - name: cardId
          in: path
          required: true
          schema:
            type: string
      responses:
        '204':
          description: 'There is no content to send for this request, but the headers may be useful. '
        '401':
          description: Access is unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnauthorizedError'
        '403':
          description: Access is forbidden.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.ForbiddenError'
        '404':
          description: The server cannot find the requested resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.NotFoundError'
      tags:
        - RounderCards
  /schedules:
    get:
      operationId: Schedules_list
      description: スケジュール一覧取得
      parameters:
        - name: status
          in: query
          required: false
          schema:
            $ref: '#/components/schemas/Models.ScheduleStatus'
          explode: false
        - name: formatId
          in: query
          required: false
          schema:
            type: string
          explode: false
        - name: spotId
          in: query
          required: false
          schema:
            type: string
          explode: false
        - name: limit
          in: query
          required: false
          schema:
            type: integer
            format: int32
          explode: false
        - name: cursor
          in: query
          required: false
          schema:
            type: string
          explode: false
      responses:
        '200':
          description: The request has succeeded.
          content:
            application/json:
              schema:
                type: object
                required:
                  - items
                  - hasMore
                properties:
                  items:
                    type: array
                    items:
                      $ref: '#/components/schemas/Models.Schedule'
                  nextCursor:
                    type: string
                    nullable: true
                  hasMore:
                    type: boolean
                description: ページネーション共通レスポンス
        '401':
          description: Access is unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnauthorizedError'
        '403':
          description: Access is forbidden.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.ForbiddenError'
      tags:
        - Schedules
    post:
      operationId: Schedules_create
      description: スケジュール作成
      parameters: []
      responses:
        '201':
          description: The request has succeeded and a new resource has been created as a result.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.Schedule'
        '401':
          description: Access is unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnauthorizedError'
        '403':
          description: Access is forbidden.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.ForbiddenError'
        '422':
          description: Client error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnprocessableEntityError'
      tags:
        - Schedules
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Models.CreateScheduleRequest'
  /schedules/{scheduleId}:
    get:
      operationId: Schedules_read
      description: スケジュール詳細取得
      parameters:
        - name: scheduleId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The request has succeeded.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.Schedule'
        '401':
          description: Access is unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnauthorizedError'
        '403':
          description: Access is forbidden.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.ForbiddenError'
        '404':
          description: The server cannot find the requested resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.NotFoundError'
      tags:
        - Schedules
    put:
      operationId: Schedules_update
      description: スケジュール更新
      parameters:
        - name: scheduleId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The request has succeeded.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.Schedule'
        '401':
          description: Access is unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnauthorizedError'
        '403':
          description: Access is forbidden.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.ForbiddenError'
        '404':
          description: The server cannot find the requested resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.NotFoundError'
        '422':
          description: Client error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnprocessableEntityError'
      tags:
        - Schedules
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Models.UpdateScheduleRequest'
    delete:
      operationId: Schedules_remove
      description: スケジュール削除
      parameters:
        - name: scheduleId
          in: path
          required: true
          schema:
            type: string
      responses:
        '204':
          description: 'There is no content to send for this request, but the headers may be useful. '
        '401':
          description: Access is unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnauthorizedError'
        '403':
          description: Access is forbidden.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.ForbiddenError'
        '404':
          description: The server cannot find the requested resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.NotFoundError'
      tags:
        - Schedules
  /schedules/{scheduleId}/activate:
    post:
      operationId: Schedules_activate
      description: スケジュール再開
      parameters:
        - name: scheduleId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The request has succeeded.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.Schedule'
        '401':
          description: Access is unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnauthorizedError'
        '403':
          description: Access is forbidden.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.ForbiddenError'
        '404':
          description: The server cannot find the requested resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.NotFoundError'
        '409':
          description: The request conflicts with the current state of the server.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.ConflictError'
      tags:
        - Schedules
  /schedules/{scheduleId}/deactivate:
    post:
      operationId: Schedules_deactivate
      description: スケジュール停止
      parameters:
        - name: scheduleId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The request has succeeded.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.Schedule'
        '401':
          description: Access is unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnauthorizedError'
        '403':
          description: Access is forbidden.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.ForbiddenError'
        '404':
          description: The server cannot find the requested resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.NotFoundError'
        '409':
          description: The request conflicts with the current state of the server.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.ConflictError'
      tags:
        - Schedules
  /schedules/{scheduleId}/orders:
    get:
      operationId: Schedules_listOrders
      description: スケジュールから生成された発注一覧
      parameters:
        - name: scheduleId
          in: path
          required: true
          schema:
            type: string
        - name: limit
          in: query
          required: false
          schema:
            type: integer
            format: int32
          explode: false
        - name: cursor
          in: query
          required: false
          schema:
            type: string
          explode: false
      responses:
        '200':
          description: The request has succeeded.
          content:
            application/json:
              schema:
                type: object
                required:
                  - items
                  - hasMore
                properties:
                  items:
                    type: array
                    items:
                      $ref: '#/components/schemas/Models.Order'
                  nextCursor:
                    type: string
                    nullable: true
                  hasMore:
                    type: boolean
                description: ページネーション共通レスポンス
        '401':
          description: Access is unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnauthorizedError'
        '403':
          description: Access is forbidden.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.ForbiddenError'
        '404':
          description: The server cannot find the requested resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.NotFoundError'
      tags:
        - Schedules
  /schedules/{scheduleId}/skip:
    post:
      operationId: Schedules_skip
      description: 次回発注をスキップして nextOrderDate を次の候補日に進める
      parameters:
        - name: scheduleId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The request has succeeded.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.Schedule'
        '401':
          description: Access is unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnauthorizedError'
        '403':
          description: Access is forbidden.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.ForbiddenError'
        '404':
          description: The server cannot find the requested resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.NotFoundError'
        '409':
          description: The request conflicts with the current state of the server.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.ConflictError'
      tags:
        - Schedules
  /seminars:
    get:
      operationId: Seminars_list
      parameters:
        - name: licenseId
          in: query
          required: false
          schema:
            type: string
          explode: false
        - name: limit
          in: query
          required: false
          schema:
            type: integer
            format: int32
          explode: false
        - name: cursor
          in: query
          required: false
          schema:
            type: string
          explode: false
      responses:
        '200':
          description: The request has succeeded.
          content:
            application/json:
              schema:
                type: object
                required:
                  - items
                  - hasMore
                properties:
                  items:
                    type: array
                    items:
                      $ref: '#/components/schemas/Models.Seminar'
                  nextCursor:
                    type: string
                    nullable: true
                  hasMore:
                    type: boolean
                description: ページネーション共通レスポンス
        '401':
          description: Access is unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnauthorizedError'
        '403':
          description: Access is forbidden.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.ForbiddenError'
      tags:
        - Seminars
    post:
      operationId: Seminars_create
      parameters: []
      responses:
        '201':
          description: The request has succeeded and a new resource has been created as a result.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.Seminar'
        '401':
          description: Access is unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnauthorizedError'
        '403':
          description: Access is forbidden.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.ForbiddenError'
        '422':
          description: Client error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnprocessableEntityError'
      tags:
        - Seminars
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Models.CreateSeminarRequest'
  /seminars/{seminarId}:
    get:
      operationId: Seminars_read
      parameters:
        - name: seminarId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The request has succeeded.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.Seminar'
        '401':
          description: Access is unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnauthorizedError'
        '403':
          description: Access is forbidden.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.ForbiddenError'
        '404':
          description: The server cannot find the requested resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.NotFoundError'
      tags:
        - Seminars
    put:
      operationId: Seminars_update
      parameters:
        - name: seminarId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The request has succeeded.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.Seminar'
        '401':
          description: Access is unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnauthorizedError'
        '403':
          description: Access is forbidden.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.ForbiddenError'
        '404':
          description: The server cannot find the requested resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.NotFoundError'
        '422':
          description: Client error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnprocessableEntityError'
      tags:
        - Seminars
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Models.UpdateSeminarRequest'
    delete:
      operationId: Seminars_remove
      parameters:
        - name: seminarId
          in: path
          required: true
          schema:
            type: string
      responses:
        '204':
          description: 'There is no content to send for this request, but the headers may be useful. '
        '401':
          description: Access is unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnauthorizedError'
        '403':
          description: Access is forbidden.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.ForbiddenError'
        '404':
          description: The server cannot find the requested resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.NotFoundError'
      tags:
        - Seminars
  /seminars/{seminarId}/participants:
    get:
      operationId: Seminars_listParticipants
      parameters:
        - name: seminarId
          in: path
          required: true
          schema:
            type: string
        - name: limit
          in: query
          required: false
          schema:
            type: integer
            format: int32
          explode: false
        - name: cursor
          in: query
          required: false
          schema:
            type: string
          explode: false
      responses:
        '200':
          description: The request has succeeded.
          content:
            application/json:
              schema:
                type: object
                required:
                  - items
                  - hasMore
                properties:
                  items:
                    type: array
                    items:
                      $ref: '#/components/schemas/Models.SeminarParticipant'
                  nextCursor:
                    type: string
                    nullable: true
                  hasMore:
                    type: boolean
                description: ページネーション共通レスポンス
        '401':
          description: Access is unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnauthorizedError'
        '403':
          description: Access is forbidden.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.ForbiddenError'
        '404':
          description: The server cannot find the requested resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.NotFoundError'
      tags:
        - Seminars
  /seminars/{seminarId}/participants/complete:
    post:
      operationId: Seminars_confirmParticipantCompleted
      parameters:
        - name: seminarId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The request has succeeded.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.SeminarParticipant'
        '401':
          description: Access is unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnauthorizedError'
        '403':
          description: Access is forbidden.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.ForbiddenError'
        '404':
          description: The server cannot find the requested resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.NotFoundError'
        '409':
          description: The request conflicts with the current state of the server.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.ConflictError'
      tags:
        - Seminars
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Models.ConfirmSeminarParticipantRequest'
  /spots:
    get:
      operationId: Spots_list
      description: スポット一覧取得
      parameters:
        - name: limit
          in: query
          required: false
          schema:
            type: integer
            format: int32
          explode: false
        - name: cursor
          in: query
          required: false
          schema:
            type: string
          explode: false
      responses:
        '200':
          description: The request has succeeded.
          content:
            application/json:
              schema:
                type: object
                required:
                  - items
                  - hasMore
                properties:
                  items:
                    type: array
                    items:
                      $ref: '#/components/schemas/Models.Spot'
                  nextCursor:
                    type: string
                    nullable: true
                  hasMore:
                    type: boolean
                description: ページネーション共通レスポンス
        '401':
          description: Access is unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnauthorizedError'
        '403':
          description: Access is forbidden.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.ForbiddenError'
      tags:
        - Spots
    post:
      operationId: Spots_create
      description: スポット作成
      parameters: []
      responses:
        '201':
          description: The request has succeeded and a new resource has been created as a result.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.Spot'
        '401':
          description: Access is unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnauthorizedError'
        '403':
          description: Access is forbidden.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.ForbiddenError'
        '422':
          description: Client error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnprocessableEntityError'
      tags:
        - Spots
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Models.CreateSpotRequest'
  /spots/{spotId}:
    get:
      operationId: Spots_read
      description: スポット詳細取得
      parameters:
        - name: spotId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The request has succeeded.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.Spot'
        '401':
          description: Access is unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnauthorizedError'
        '403':
          description: Access is forbidden.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.ForbiddenError'
        '404':
          description: The server cannot find the requested resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.NotFoundError'
      tags:
        - Spots
    put:
      operationId: Spots_update
      description: スポット更新
      parameters:
        - name: spotId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The request has succeeded.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.Spot'
        '401':
          description: Access is unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnauthorizedError'
        '403':
          description: Access is forbidden.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.ForbiddenError'
        '404':
          description: The server cannot find the requested resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.NotFoundError'
        '422':
          description: Client error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnprocessableEntityError'
      tags:
        - Spots
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Models.UpdateSpotRequest'
    delete:
      operationId: Spots_remove
      description: スポット削除
      parameters:
        - name: spotId
          in: path
          required: true
          schema:
            type: string
      responses:
        '204':
          description: 'There is no content to send for this request, but the headers may be useful. '
        '401':
          description: Access is unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnauthorizedError'
        '403':
          description: Access is forbidden.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.ForbiddenError'
        '404':
          description: The server cannot find the requested resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.NotFoundError'
      tags:
        - Spots
  /text-field-ng-lists:
    get:
      operationId: TextFieldNgLists_list
      parameters:
        - name: limit
          in: query
          required: false
          schema:
            type: integer
            format: int32
          explode: false
        - name: cursor
          in: query
          required: false
          schema:
            type: string
          explode: false
      responses:
        '200':
          description: The request has succeeded.
          content:
            application/json:
              schema:
                type: object
                required:
                  - items
                  - hasMore
                properties:
                  items:
                    type: array
                    items:
                      $ref: '#/components/schemas/Models.TextFieldNgList'
                  nextCursor:
                    type: string
                    nullable: true
                  hasMore:
                    type: boolean
                description: ページネーション共通レスポンス
        '401':
          description: Access is unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnauthorizedError'
        '403':
          description: Access is forbidden.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.ForbiddenError'
      tags:
        - TextFieldNgLists
    post:
      operationId: TextFieldNgLists_create
      parameters: []
      responses:
        '201':
          description: The request has succeeded and a new resource has been created as a result.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.TextFieldNgList'
        '401':
          description: Access is unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnauthorizedError'
        '403':
          description: Access is forbidden.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.ForbiddenError'
        '422':
          description: Client error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnprocessableEntityError'
      tags:
        - TextFieldNgLists
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Models.CreateTextFieldNgListRequest'
  /text-field-ng-lists/{ngListId}:
    get:
      operationId: TextFieldNgLists_read
      parameters:
        - name: ngListId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The request has succeeded.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.TextFieldNgList'
        '401':
          description: Access is unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnauthorizedError'
        '403':
          description: Access is forbidden.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.ForbiddenError'
        '404':
          description: The server cannot find the requested resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.NotFoundError'
      tags:
        - TextFieldNgLists
    put:
      operationId: TextFieldNgLists_update
      parameters:
        - name: ngListId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The request has succeeded.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.TextFieldNgList'
        '401':
          description: Access is unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnauthorizedError'
        '403':
          description: Access is forbidden.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.ForbiddenError'
        '404':
          description: The server cannot find the requested resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.NotFoundError'
        '422':
          description: Client error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnprocessableEntityError'
      tags:
        - TextFieldNgLists
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Models.UpdateTextFieldNgListRequest'
    delete:
      operationId: TextFieldNgLists_remove
      parameters:
        - name: ngListId
          in: path
          required: true
          schema:
            type: string
      responses:
        '204':
          description: 'There is no content to send for this request, but the headers may be useful. '
        '401':
          description: Access is unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnauthorizedError'
        '403':
          description: Access is forbidden.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.ForbiddenError'
        '404':
          description: The server cannot find the requested resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.NotFoundError'
      tags:
        - TextFieldNgLists
  /text-field-ng-lists/{ngListId}/data:
    get:
      operationId: TextFieldNgListData_list
      parameters:
        - name: ngListId
          in: path
          required: true
          schema:
            type: string
        - name: limit
          in: query
          required: false
          schema:
            type: integer
            format: int32
          explode: false
        - name: cursor
          in: query
          required: false
          schema:
            type: string
          explode: false
      responses:
        '200':
          description: The request has succeeded.
          content:
            application/json:
              schema:
                type: object
                required:
                  - items
                  - hasMore
                properties:
                  items:
                    type: array
                    items:
                      $ref: '#/components/schemas/Models.TextFieldNgListData'
                  nextCursor:
                    type: string
                    nullable: true
                  hasMore:
                    type: boolean
                description: ページネーション共通レスポンス
        '401':
          description: Access is unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnauthorizedError'
        '403':
          description: Access is forbidden.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.ForbiddenError'
        '404':
          description: The server cannot find the requested resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.NotFoundError'
      tags:
        - TextFieldNgLists
    post:
      operationId: TextFieldNgListData_create
      parameters:
        - name: ngListId
          in: path
          required: true
          schema:
            type: string
      responses:
        '201':
          description: The request has succeeded and a new resource has been created as a result.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.TextFieldNgListData'
        '401':
          description: Access is unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnauthorizedError'
        '403':
          description: Access is forbidden.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.ForbiddenError'
        '404':
          description: The server cannot find the requested resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.NotFoundError'
        '422':
          description: Client error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnprocessableEntityError'
      tags:
        - TextFieldNgLists
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                text:
                  type: string
              required:
                - text
  /text-field-ng-lists/{ngListId}/data/{ngListDataId}:
    delete:
      operationId: TextFieldNgListData_remove
      parameters:
        - name: ngListId
          in: path
          required: true
          schema:
            type: string
        - name: ngListDataId
          in: path
          required: true
          schema:
            type: string
      responses:
        '204':
          description: 'There is no content to send for this request, but the headers may be useful. '
        '401':
          description: Access is unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnauthorizedError'
        '403':
          description: Access is forbidden.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.ForbiddenError'
        '404':
          description: The server cannot find the requested resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.NotFoundError'
      tags:
        - TextFieldNgLists
  /workers:
    get:
      operationId: Workers_list
      description: relatedSpower 一覧取得
      parameters:
        - name: isFavorite
          in: query
          required: false
          schema:
            type: boolean
          explode: false
        - name: isBlocked
          in: query
          required: false
          schema:
            type: boolean
          explode: false
        - name: tag
          in: query
          required: false
          schema:
            type: string
          explode: false
        - name: spotId
          in: query
          required: false
          schema:
            type: string
          explode: false
        - name: formatId
          in: query
          required: false
          schema:
            type: string
          explode: false
        - name: limit
          in: query
          required: false
          schema:
            type: integer
            format: int32
          explode: false
        - name: cursor
          in: query
          required: false
          schema:
            type: string
          explode: false
      responses:
        '200':
          description: The request has succeeded.
          content:
            application/json:
              schema:
                type: object
                required:
                  - items
                  - hasMore
                properties:
                  items:
                    type: array
                    items:
                      $ref: '#/components/schemas/Models.Worker'
                  nextCursor:
                    type: string
                    nullable: true
                  hasMore:
                    type: boolean
                description: ページネーション共通レスポンス
        '401':
          description: Access is unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnauthorizedError'
        '403':
          description: Access is forbidden.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.ForbiddenError'
      tags:
        - Workers
  /workers/register:
    post:
      operationId: Workers_register
      description: relatedSpower 登録
      parameters: []
      responses:
        '201':
          description: The request has succeeded and a new resource has been created as a result.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.Worker'
        '401':
          description: Access is unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnauthorizedError'
        '403':
          description: Access is forbidden.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.ForbiddenError'
        '409':
          description: The request conflicts with the current state of the server.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.ConflictError'
        '422':
          description: Client error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnprocessableEntityError'
      tags:
        - Workers
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Models.WorkerRegisterRequest'
  /workers/{workerId}:
    get:
      operationId: Workers_read
      description: worker 詳細取得
      parameters:
        - name: workerId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The request has succeeded.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.WorkerDetail'
        '401':
          description: Access is unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnauthorizedError'
        '403':
          description: Access is forbidden.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.ForbiddenError'
        '404':
          description: The server cannot find the requested resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.NotFoundError'
      tags:
        - Workers
  /workers/{workerId}/block:
    put:
      operationId: Workers_setBlock
      description: 企業ブロック設定/解除
      parameters:
        - name: workerId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The request has succeeded.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.Worker'
        '401':
          description: Access is unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnauthorizedError'
        '403':
          description: Access is forbidden.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.ForbiddenError'
        '404':
          description: The server cannot find the requested resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.NotFoundError'
      tags:
        - Workers
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Models.BooleanFlagRequest'
  /workers/{workerId}/favorite:
    put:
      operationId: Workers_setFavorite
      description: 企業お気に入り登録/解除
      parameters:
        - name: workerId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The request has succeeded.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.Worker'
        '401':
          description: Access is unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnauthorizedError'
        '403':
          description: Access is forbidden.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.ForbiddenError'
        '404':
          description: The server cannot find the requested resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.NotFoundError'
      tags:
        - Workers
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Models.BooleanFlagRequest'
  /workers/{workerId}/memo:
    put:
      operationId: Workers_updateMemo
      description: メモ/タグ更新
      parameters:
        - name: workerId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The request has succeeded.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.Worker'
        '401':
          description: Access is unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnauthorizedError'
        '403':
          description: Access is forbidden.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.ForbiddenError'
        '404':
          description: The server cannot find the requested resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.NotFoundError'
      tags:
        - Workers
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Models.UpdateWorkerMemoRequest'
  /works/{workId}:
    get:
      operationId: Works_read
      description: 作業詳細取得（横断参照）
      parameters:
        - name: workId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The request has succeeded.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.Work'
        '401':
          description: Access is unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnauthorizedError'
        '403':
          description: Access is forbidden.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.ForbiddenError'
        '404':
          description: The server cannot find the requested resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.NotFoundError'
      tags:
        - Works
  /works/{workId}/approve:
    post:
      operationId: Works_approve
      description: 作業承認
      parameters:
        - name: workId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The request has succeeded.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.Work'
        '401':
          description: Access is unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnauthorizedError'
        '403':
          description: Access is forbidden.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.ForbiddenError'
        '404':
          description: The server cannot find the requested resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.NotFoundError'
        '422':
          description: Client error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnprocessableEntityError'
      tags:
        - Works
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Models.WorkDecisionRequest'
  /works/{workId}/reject:
    post:
      operationId: Works_reject
      description: 作業差し戻し
      parameters:
        - name: workId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The request has succeeded.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.Work'
        '401':
          description: Access is unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.UnauthorizedError'
        '403':
          description: Access is forbidden.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.ForbiddenError'
        '404':
          description: The server cannot find the requested resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Models.NotFoundError'
      tags:
        - Works
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Models.WorkDecisionRequest'
security:
  - ApiKeyAuth: []
components:
  schemas:
    Models.AvailableTimeHours:
      type: object
      properties:
        start:
          type: integer
          format: int32
          nullable: true
        end:
          type: integer
          format: int32
          nullable: true
      description: 作業可能時間（通常モード）
    Models.AvailableTimeRange:
      type: object
      required:
        - start
        - end
      properties:
        start:
          type: string
          format: date-time
        end:
          type: string
          format: date-time
      description: 作業可能時間（カスタムモード）
    Models.AvailableTimeType:
      type: string
      enum:
        - nothing
        - normal
        - custom
      description: 作業可能時間タイプ
    Models.BooleanFlagRequest:
      type: object
      required:
        - value
      properties:
        value:
          type: boolean
      description: boolean フラグ更新リクエスト
    Models.CheckType:
      type: string
      enum:
        - all
        - nothing
        - auto
      description: 審査設定
    Models.Company:
      type: object
      required:
        - companyId
        - name
      properties:
        companyId:
          type: string
        name:
          type: string
        shopName:
          type: string
          nullable: true
        postalCode:
          type: string
          nullable: true
        address:
          type: string
          nullable: true
        building:
          type: string
          nullable: true
        iconUrl:
          type: string
          nullable: true
        verificationStatus:
          type: string
          nullable: true
        contactEmails:
          type: array
          items:
            type: string
          nullable: true
        createdAt:
          type: string
          format: date-time
          nullable: true
        createdBy:
          type: string
          nullable: true
        updatedAt:
          type: string
          format: date-time
          nullable: true
    Models.CompanyInvitation:
      type: object
      required:
        - invitationId
        - companyId
        - email
        - permission
      properties:
        invitationId:
          type: string
        companyId:
          type: string
        email:
          type: string
        permission:
          $ref: '#/components/schemas/Models.CompanyMemberRole'
        name:
          type: string
          nullable: true
        createdAt:
          type: string
          format: date-time
          nullable: true
    Models.CompanyMember:
      type: object
      required:
        - userId
        - permission
      properties:
        userId:
          type: string
        email:
          type: string
          nullable: true
        name:
          type: string
          nullable: true
        iconUrl:
          type: string
          nullable: true
        permission:
          $ref: '#/components/schemas/Models.CompanyMemberRole'
    Models.CompanyMemberRole:
      type: string
      enum:
        - admin
        - member
    Models.CompanyReview:
      type: object
      required:
        - reviewId
        - companyId
        - workId
        - overallRating
        - createdAt
      properties:
        reviewId:
          type: string
          description: REVIEW_OF_COMPANY のドキュメントID
        companyId:
          type: string
        workId:
          type: string
        orderId:
          type: string
          nullable: true
        formatId:
          type: string
          nullable: true
        formatVersion:
          type: integer
          format: int32
          nullable: true
        spotId:
          type: string
          nullable: true
        workName:
          type: string
          nullable: true
        companyName:
          type: string
          nullable: true
        rewardPrice:
          type: number
          format: float
          nullable: true
        workerId:
          type: string
          nullable: true
        overallRating:
          type: integer
          format: int32
          minimum: 1
          maximum: 5
        tags:
          type: array
          items:
            type: string
          nullable: true
        comment:
          type: string
          nullable: true
        work:
          type: object
          allOf:
            - $ref: '#/components/schemas/Models.ReviewWorkSummary'
          nullable: true
        createdAt:
          type: string
          format: date-time
      description: 自社が受け取ったレビュー
    Models.ConfirmSeminarParticipantRequest:
      type: object
      required:
        - userId
      properties:
        userId:
          type: string
          description: 完了対象 worker の公開 userId
    Models.ConflictError:
      type: object
      required:
        - body
      properties:
        body:
          $ref: '#/components/schemas/Models.ProblemDetails'
    Models.CreateCompanyInvitationRequest:
      type: object
      required:
        - email
        - permission
      properties:
        email:
          type: string
        permission:
          $ref: '#/components/schemas/Models.CompanyMemberRole'
    Models.CreateFormatRequest:
      type: object
      required:
        - name
        - workflow
        - pages
      properties:
        name:
          type: string
        status:
          $ref: '#/components/schemas/Models.FormatStatus'
        defaultIcon:
          type: string
        defaultColor:
          type: string
        defaultOrderName:
          type: string
        defaultDescription:
          type: string
        defaultNotation:
          type: string
        defaultOrderPrice:
          type: integer
          format: int32
        defaultCheckType:
          $ref: '#/components/schemas/Models.CheckType'
        defaultAutoCheckConditions:
          type: array
          items:
            type: string
          description: defaultCheckType=auto のとき必須。現状の UI では reportPos のみ使用
        defaultMatchMessage:
          type: string
        defaultCanShowRounderCard:
          type: boolean
          description: true の場合 defaultRounderCardId が必須
        defaultRounderCardId:
          type: string
          nullable: true
        defaultIsNeededLicense:
          type: boolean
          description: true の場合 defaultLicenseId が必須
        defaultLicenseId:
          type: string
          nullable: true
        memoForMember:
          type: string
        manualUrl:
          type: string
        defaultThumbnailUrl:
          type: string
        autoDelete:
          type: boolean
        hasDeadlineNotification:
          type: boolean
        hasMatchingCancelNotification:
          type: boolean
        hasCancelWaiting:
          type: boolean
        hasSelection:
          type: boolean
        isNeededScheduling:
          type: boolean
        requiredWorkTime:
          type: integer
          format: int32
          nullable: true
        canReserveHours:
          type: integer
          format: int32
          nullable: true
        isEnabledExpenses:
          type: boolean
        price:
          type: integer
          format: int32
        maxDoneCount:
          type: integer
          format: int32
        availableTimeType:
          allOf:
            - $ref: '#/components/schemas/Models.AvailableTimeType'
          description: spotwork-for-business の保存実装は主に normal/nothing を使用
        availableTimeDayOfWeek:
          type: array
          items:
            type: integer
            format: int32
        availableTimeHours:
          type: object
          allOf:
            - $ref: '#/components/schemas/Models.AvailableTimeHours'
          nullable: true
        workflow:
          type: array
          items:
            $ref: '#/components/schemas/Models.WorkflowStepInput'
          description: elementId / imageId / optionId は指定不要。指定されてもサーバー側で再生成する
        pages:
          type: array
          items:
            $ref: '#/components/schemas/Models.FormPage'
          description: 最低 1 つは nextPage=null の完了ページが必要。1 ページに条件分岐要素は 1 つまで
      description: フォーマット作成リクエスト
    Models.CreateLicenseRequest:
      type: object
      required:
        - name
        - detail
        - acquisitionMethods
      properties:
        name:
          type: string
        image:
          type: string
          nullable: true
        detail:
          type: string
        acquisitionMethods:
          type: array
          items:
            $ref: '#/components/schemas/Models.LicenseAcquisitionMethod'
        hasExpiration:
          type: boolean
        expirationMonths:
          anyOf:
            - type: integer
              format: int32
            - type: string
          nullable: true
        memo:
          type: string
          nullable: true
    Models.CreateMessageRequest:
      anyOf:
        - $ref: '#/components/schemas/Models.SendTextMessageRequest'
        - $ref: '#/components/schemas/Models.SendImageMessageRequest'
        - $ref: '#/components/schemas/Models.SendFileMessageRequest'
    Models.CreateOfferRequest:
      type: object
      required:
        - orderId
        - workerId
        - responseDeadline
      properties:
        orderId:
          type: string
          description: 紐づく発注ID
        workerId:
          type: string
          description: 送信先ワーカーの workerId
        message:
          type: string
          nullable: true
        responseDeadline:
          type: string
          format: date-time
    Models.CreateOrderRequest:
      type: object
      required:
        - orderType
        - formatId
        - name
        - orderPrice
        - checkType
      properties:
        orderType:
          allOf:
            - $ref: '#/components/schemas/Models.OrderType'
          description: 依頼種別
        formatId:
          type: string
          description: 依頼作成に利用したテンプレートID
        name:
          type: string
          description: 案件名
        category:
          type: string
          description: 業務画面での固定文言。spotwork-for-business では通常 '企業依頼'
        notation:
          type: string
          description: 注意事項（公開情報）
        description:
          type: string
          description: 仕事内容詳細（公開情報）
        controlNumber:
          type: string
          nullable: true
          description: 社内管理番号。未設定時は null
        orderPrice:
          type: integer
          format: int32
          description: 発注金額（税抜）。クライアントが主入力する項目
        price:
          type: integer
          format: int32
          description: 基本報酬（税抜）。orderPrice の 75%
        checkType:
          allOf:
            - $ref: '#/components/schemas/Models.CheckType'
          description: 審査設定。spotwork-for-business では lookingForOrder の場合 all / nothing のみ使用
        autoCheckConditions:
          type: array
          items:
            type: string
          nullable: true
          description: checkType=auto のときの自動審査条件。現状の UI では reportPos のみ使用
        deadline:
          type: string
          format: date-time
          nullable: true
          description: 作業期日。超過した open な Order はスポワさん画面に表示されなくなる
        manualUrl:
          type: string
          description: 公開マニュアルURL
        autoDelete:
          type: boolean
          description: 期限切れかつ未マッチ時に自動削除するか
          default: false
        hasDeadlineNotification:
          type: boolean
          description: 期日通知を送るか
          default: false
        hasMatchingCancelNotification:
          type: boolean
          description: マッチングキャンセル時に通知を送るか
          default: false
        matchingType:
          allOf:
            - $ref: '#/components/schemas/Models.MatchingType'
          description: マッチ対象の絞り込み方法
        favoriteOptions:
          type: array
          items:
            $ref: '#/components/schemas/Models.FavoriteOption'
          description: matchingType=favorite 時のみ有効
        selectedSpowers:
          type: array
          items:
            type: string
          description: matchingType=select のときに指定するスポワさん一覧
        matchMessage:
          type: string
          description: マッチング時に送る初回メッセージ
        maxDoneCount:
          type: integer
          format: int32
          description: Format 単位の最大完了数
        maxDoneCountStartDate:
          type: string
          format: date-time
          nullable: true
          description: maxDoneCount 集計の開始日
        thumbnailUrl:
          type: string
          description: スポワアプリ公開サムネイルURL
        canShowRounderCard:
          type: boolean
          description: デジタル身分証を表示するか。false の場合 rounderCardId は null
          default: false
        rounderCardId:
          type: string
          nullable: true
          description: 表示対象ラウンダーカードID
        isNeededLicense:
          type: boolean
          description: 資格を必須にするか。false の場合 licenseId は null
          default: false
        licenseId:
          type: string
          nullable: true
          description: 必須資格ID
        isEnabledExpenses:
          type: boolean
          description: 経費申請を許可するか
          default: false
        spotId:
          type: string
          description: customOrder のみ対象
        address:
          type: string
          description: customOrder の表示用住所。orderType=customOrder のとき必須。未使用の optional 項目はサーバー側で null / false / [] に初期化して保存する
        inputAddress:
          type: string
          description: customOrder のマッピング用住所。orderType=customOrder のとき必須
        workArea:
          type: string
          description: lookingForOrder の作業エリア
        maxDelivery:
          type: integer
          format: int32
          description: lookingForOrder の最大納品数。orderType=lookingForOrder のとき必須
        ngList:
          type: array
          items:
            $ref: '#/components/schemas/Models.OrderNgListAssignment'
          description: lookingForOrder の textField ごとの NG リスト紐づけ
        highestOrderPrice:
          type: integer
          format: int32
          description: lookingForOrder で page.price を含めた単価上限。通常はサーバー側で再計算する
        availableTimeType:
          allOf:
            - $ref: '#/components/schemas/Models.AvailableTimeType'
          description: 作業可能時間タイプ
        availableTimeDayOfWeek:
          type: array
          items:
            type: integer
            format: int32
          description: 作業可能曜日（0=日〜6=土）
        availableTimeHours:
          $ref: '#/components/schemas/Models.AvailableTimeHours'
        availableTimeStartDate:
          type: string
          format: date-time
          nullable: true
        availableTimeEndDate:
          type: string
          format: date-time
          nullable: true
        availableTimeCustom:
          type: array
          items:
            $ref: '#/components/schemas/Models.AvailableTimeRange'
          description: availableTimeType=custom のとき必須
      description: Order 作成リクエスト
    Models.CreateOutputFolderRequest:
      type: object
      required:
        - displayName
      properties:
        displayName:
          type: string
        parentId:
          type: string
          nullable: true
          description: 親フォルダのドキュメントID。省略時はルート直下に作成
    Models.CreateRecruitRequirementRequest:
      type: object
      required:
        - title
        - expiredAt
      properties:
        title:
          type: string
        description:
          type: string
          nullable: true
        workCategoryIds:
          type: array
          items:
            type: string
          nullable: true
        requirementSkillIds:
          type: array
          items:
            type: string
          nullable: true
        recommendedSkillIds:
          type: array
          items:
            type: string
          nullable: true
        prefectures:
          type: array
          items:
            type: string
          nullable: true
        estimatedUnitPrice:
          type: number
          format: double
          nullable: true
        estimatedWorkTime:
          type: number
          format: double
          nullable: true
        expiredAt:
          type: string
          format: date-time
        status:
          allOf:
            - $ref: '#/components/schemas/Models.RecruitRequirementStatus'
          default: open
    Models.CreateRounderCardRequest:
      type: object
      required:
        - name
        - companyName
        - position
        - address
        - zipCode
        - tel
        - logoImage
      properties:
        name:
          type: string
        companyName:
          type: string
        position:
          type: string
        address:
          type: string
        zipCode:
          type: string
        tel:
          type: string
        logoImage:
          type: string
        memo:
          type: string
          nullable: true
    Models.CreateScheduleRequest:
      type: object
      required:
        - name
        - orderName
        - orderType
        - formatId
        - price
        - checkType
        - spotId
        - scheduleType
        - orderHour
        - orderMinute
        - nextOrderDate
      properties:
        name:
          type: string
        orderName:
          type: string
        category:
          type: string
          nullable: true
        controlNumber:
          type: string
          nullable: true
        notation:
          type: string
          nullable: true
        description:
          type: string
          nullable: true
        memo:
          type: string
          nullable: true
        orderType:
          $ref: '#/components/schemas/Models.OrderType'
        formatId:
          type: string
        formatVersion:
          type: integer
          format: int32
          default: 0
        price:
          type: integer
          format: int32
        orderPrice:
          type: integer
          format: int32
          nullable: true
        checkType:
          $ref: '#/components/schemas/Models.CheckType'
        autoCheckConditions:
          type: array
          items:
            type: string
          nullable: true
        icon:
          type: string
          nullable: true
        color:
          type: string
          nullable: true
        thumbnailUrl:
          type: string
          nullable: true
        isEnabledExpenses:
          type: boolean
          default: false
        hasSelection:
          type: boolean
          default: false
        matchingType:
          allOf:
            - $ref: '#/components/schemas/Models.MatchingType'
          nullable: true
        favoriteOptions:
          type: array
          items:
            $ref: '#/components/schemas/Models.FavoriteOption'
          nullable: true
        selectedSpowers:
          type: array
          items:
            type: string
          nullable: true
          description: matchingType=select のときに指定するスポワさん一覧
        matchMessage:
          type: string
          nullable: true
        offeredUserId:
          type: string
          nullable: true
        offerMessage:
          type: string
          nullable: true
        offerDeadlineDay:
          type: integer
          format: int32
          nullable: true
        offerDeadlineHour:
          type: integer
          format: int32
          nullable: true
        offerDeadlineMinute:
          type: integer
          format: int32
          nullable: true
        canShowRounderCard:
          type: boolean
          default: false
        rounderCardId:
          type: string
          nullable: true
        isNeededLicense:
          type: boolean
          default: false
        licenseId:
          type: string
          nullable: true
        hasCancelWaiting:
          type: boolean
          default: false
        hasDeadlineNotification:
          type: boolean
          default: false
        hasMatchingCancelNotification:
          type: boolean
          default: false
        autoDelete:
          type: boolean
          default: false
        manualUrl:
          type: string
          nullable: true
        spotId:
          type: string
        address:
          type: string
          nullable: true
        inputAddress:
          type: string
          nullable: true
        scheduleType:
          $ref: '#/components/schemas/Models.ScheduleType'
        orderHour:
          type: integer
          format: int32
        orderMinute:
          type: integer
          format: int32
        nextOrderDate:
          type: string
          format: date-time
        status:
          allOf:
            - $ref: '#/components/schemas/Models.ScheduleStatus'
          default: active
        period:
          type: integer
          format: int32
          nullable: true
        daysOfWeek:
          type: array
          items:
            type: integer
            format: int32
          nullable: true
        orderDates:
          type: array
          items:
            type: integer
            format: int32
          nullable: true
        daysAfterDone:
          type: integer
          format: int32
          nullable: true
        deadlineDay:
          type: integer
          format: int32
          nullable: true
        deadlineHour:
          type: integer
          format: int32
          nullable: true
        deadlineMinute:
          type: integer
          format: int32
          nullable: true
        isNeededScheduling:
          type: boolean
          default: false
        requiredWorkTime:
          type: integer
          format: int32
          nullable: true
        canReserveHours:
          type: integer
          format: int32
          nullable: true
        maxDoneCount:
          type: integer
          format: int32
          nullable: true
        availableTimeType:
          allOf:
            - $ref: '#/components/schemas/Models.AvailableTimeType'
          default: nothing
        availableTimeDayOfWeek:
          type: array
          items:
            type: integer
            format: int32
          nullable: true
        availableTimeHours:
          type: object
          allOf:
            - $ref: '#/components/schemas/Models.AvailableTimeHours'
          nullable: true
        availableTimeStartOffsetDays:
          type: integer
          format: int32
          nullable: true
        availableTimeStartHour:
          type: integer
          format: int32
          nullable: true
        availableTimeStartMinute:
          type: integer
          format: int32
          nullable: true
        availableTimeEndOffsetDays:
          type: integer
          format: int32
          nullable: true
        availableTimeEndHour:
          type: integer
          format: int32
          nullable: true
        availableTimeEndMinute:
          type: integer
          format: int32
          nullable: true
    Models.CreateSeminarRequest:
      type: object
      required:
        - licenseId
        - type
        - datetime
        - maxParticipants
      properties:
        licenseId:
          type: string
        type:
          $ref: '#/components/schemas/Models.SeminarType'
        datetime:
          type: string
          format: date-time
        maxParticipants:
          type: integer
          format: int32
        address:
          type: string
          nullable: true
        url:
          type: string
          nullable: true
        memo:
          type: string
          nullable: true
    Models.CreateSpotRequest:
      type: object
      required:
        - name
        - address
        - inputAddress
      properties:
        name:
          type: string
          description: スポット名
        address:
          type: string
          description: スポワさん向け表示住所
        inputAddress:
          type: string
          description: 地図・ジオコーディング用住所。番地までを入力
        controlNumber:
          type: string
          nullable: true
        memo:
          type: string
          nullable: true
        tags:
          type: array
          items:
            type: string
          nullable: true
      description: スポット作成リクエスト
    Models.CreateTextFieldNgListRequest:
      type: object
      required:
        - name
      properties:
        ngListId:
          type: string
        name:
          type: string
        memoForMember:
          type: string
          nullable: true
    Models.CreateWebhookRequest:
      type: object
      required:
        - url
        - eventTypes
      properties:
        url:
          type: string
        eventTypes:
          type: array
          items:
            $ref: '#/components/schemas/Models.WebhookEventType'
        description:
          type: string
          nullable: true
      description: Webhook作成リクエスト
    Models.CreateWebhookResponse:
      type: object
      required:
        - webhookId
        - companyId
        - url
        - eventTypes
        - isActive
        - createdAt
        - updatedAt
        - secret
      properties:
        webhookId:
          type: string
        companyId:
          type: string
        url:
          type: string
        eventTypes:
          type: array
          items:
            $ref: '#/components/schemas/Models.WebhookEventType'
          description: 購読するイベント種別
        description:
          type: string
          nullable: true
        isActive:
          type: boolean
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
        secret:
          type: string
          description: 署名検証用シークレット。このレスポンスにのみ含まれる。
      description: Webhook作成レスポンス（secret は初回のみ返却）
    Models.CreateWorkerReviewRequest:
      type: object
      required:
        - workId
        - workerId
        - overallRating
      properties:
        workId:
          type: string
        workerId:
          type: string
        workTags:
          type: array
          items:
            type: string
          nullable: true
        spowerTags:
          type: array
          items:
            type: string
          nullable: true
        overallRating:
          type: integer
          format: int32
          minimum: 1
          maximum: 5
        comment:
          type: string
          nullable: true
        addToFavorites:
          type: boolean
          default: false
    Models.ExpenseApprovalStatus:
      type: string
      enum:
        - pending
        - approved
        - rejected
      description: 経費承認状態
    Models.FavoriteOption:
      type: string
      enum:
        - spotFavorite
        - formatFavorite
      description: お気に入り絞り込み条件
    Models.FileType:
      type: string
      enum:
        - video
        - image
        - audio
        - csv
        - pdf
        - all
      description: ファイル種別
    Models.FolderDownloadEntry:
      anyOf:
        - $ref: '#/components/schemas/Models.FolderDownloadFolderEntry'
        - $ref: '#/components/schemas/Models.FolderDownloadFileEntry'
    Models.FolderDownloadFileEntry:
      type: object
      required:
        - type
        - id
        - displayName
        - relativePath
        - downloadPath
      properties:
        type:
          type: string
          enum:
            - file
          description: file 固定
        id:
          type: string
          description: BUSINESS_OUTPUT_FOLDER のドキュメントID
        displayName:
          type: string
          description: 表示名
        fileType:
          type: string
          nullable: true
          description: image / video / audio / pdf / document / spreadsheet / presentation / archive など
        relativePath:
          type: string
          description: '取得対象フォルダからの相対パス。例: 2026/06/image1.jpg'
        downloadPath:
          type: string
          description: ファイル実体を取得する API path
        contentType:
          type: string
          nullable: true
          description: Storage 上の content-type
        size:
          type: integer
          format: int64
          nullable: true
          description: Storage 上のサイズ（bytes）
    Models.FolderDownloadFolderEntry:
      type: object
      required:
        - type
        - id
        - displayName
        - relativePath
      properties:
        type:
          type: string
          enum:
            - folder
          description: folder 固定
        id:
          type: string
          description: BUSINESS_OUTPUT_FOLDER のドキュメントID
        displayName:
          type: string
          description: 表示名
        relativePath:
          type: string
          description: '取得対象フォルダからの相対パス。例: 2026/06'
    Models.FolderDownloadManifest:
      type: object
      required:
        - folderId
        - folderName
        - downloadType
        - rootPath
        - totalFileCount
        - entries
      properties:
        folderId:
          type: string
        folderName:
          type: string
        downloadType:
          type: string
          enum:
            - manifest
        rootPath:
          type: string
          description: manifest 生成の基準となる folder.path
        totalFileCount:
          type: integer
          format: int32
        entries:
          type: array
          items:
            $ref: '#/components/schemas/Models.FolderDownloadEntry'
    Models.ForbiddenError:
      type: object
      required:
        - body
      properties:
        body:
          $ref: '#/components/schemas/Models.ProblemDetails'
    Models.FormPage:
      type: object
      required:
        - page
        - title
        - price
        - hasCondition
      properties:
        page:
          type: integer
          format: int32
          description: 1 始まりのページ番号
        title:
          type: string
        price:
          type: integer
          format: int32
          description: page 完了時に発生する追加金額（税抜）。発注時は全 page の price 合計を orderPrice に加算した最大値で発注される
        nextPage:
          type: integer
          format: int32
          nullable: true
          description: 次ページ。null は完了。自ページは指定不可
        hasCondition:
          type: boolean
          description: このページで条件分岐を持つか。workflow 側の radio.hasCondition と連動する
        conditionElementId:
          anyOf:
            - type: string
            - type: integer
          nullable: true
          description: 条件分岐を担当する workflow.elementId。1 ページにつき 1 要素まで
      description: フォームページ定義
    Models.Format:
      type: object
      required:
        - formatId
        - type
        - name
        - status
        - version
        - defaultOrderPrice
        - workflow
        - pages
        - createdAt
        - updatedAt
      properties:
        formatId:
          type: string
        type:
          type: string
          description: API 経由では常に business
        name:
          type: string
        status:
          $ref: '#/components/schemas/Models.FormatStatus'
        version:
          type: integer
          format: int32
          description: active 保存時にインクリメントされる版数
        defaultIcon:
          type: string
          description: MDI ライブラリ準拠のアイコン
        defaultColor:
          type: string
          description: hex カラー値
        defaultOrderName:
          type: string
          nullable: true
        defaultDescription:
          type: string
          nullable: true
          description: 依頼作成時のデフォルト仕事内容（公開情報）
        defaultNotation:
          type: string
          nullable: true
          description: 依頼作成時のデフォルト注意事項（公開情報）
        defaultOrderPrice:
          type: integer
          format: int32
          description: 依頼作成時のデフォルト発注金額（税抜）
        defaultCheckType:
          allOf:
            - $ref: '#/components/schemas/Models.CheckType'
          nullable: true
          description: 審査設定
        defaultAutoCheckConditions:
          type: array
          items:
            type: string
          nullable: true
          description: defaultCheckType=auto の場合の自動審査条件
        defaultMatchMessage:
          type: string
          nullable: true
          description: マッチング時の初回メッセージ
        defaultCanShowRounderCard:
          type: boolean
          description: デジタル身分証を表示するか
        defaultRounderCardId:
          type: string
          nullable: true
          description: defaultCanShowRounderCard=true のとき必須
        defaultIsNeededLicense:
          type: boolean
          description: 資格を必要とするか
        defaultLicenseId:
          type: string
          nullable: true
          description: defaultIsNeededLicense=true のとき必須
        memoForMember:
          type: string
          nullable: true
          description: ワーカー向け公開メモ
        manualUrl:
          type: string
          nullable: true
          description: 依頼作成時に引き継ぐ公開マニュアルURL
        defaultThumbnailUrl:
          type: string
          nullable: true
        autoDelete:
          type: boolean
        hasDeadlineNotification:
          type: boolean
        hasMatchingCancelNotification:
          type: boolean
        hasMatchingDeadlineNotification:
          type: boolean
        hasCancelWaiting:
          type: boolean
        hasSelection:
          type: boolean
        isNeededScheduling:
          type: boolean
        requiredWorkTime:
          type: integer
          format: int32
          nullable: true
        canReserveHours:
          type: integer
          format: int32
          nullable: true
        maxReserveCount:
          type: integer
          format: int32
          nullable: true
        maxReserveCountStartDate:
          type: string
          format: date-time
          nullable: true
        isEnabledExpenses:
          type: boolean
        price:
          type: integer
          format: int32
          nullable: true
          description: page 完了時に発生する追加金額（税抜）
        maxDoneCount:
          type: integer
          format: int32
          nullable: true
        availableTimeType:
          allOf:
            - $ref: '#/components/schemas/Models.AvailableTimeType'
          nullable: true
          description: テンプレート既定の作業可能時間タイプ。spotwork-for-business の保存実装は主に normal/nothing を使用
        availableTimeDayOfWeek:
          type: array
          items:
            type: integer
            format: int32
          description: availableTimeType=normal の曜日条件
        availableTimeHours:
          type: object
          allOf:
            - $ref: '#/components/schemas/Models.AvailableTimeHours'
          nullable: true
          description: availableTimeType=normal の時間帯条件
        workflow:
          type: array
          items:
            $ref: '#/components/schemas/Models.WorkflowStep'
          description: 作業フロー定義。各ページに description 以外の入力要素を 1 つ以上含める必要がある
        pages:
          type: array
          items:
            $ref: '#/components/schemas/Models.FormPage'
          description: workflow とセットの画面遷移定義。最低 1 つは nextPage=null の完了ページが必要
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
      description: フォーマット（依頼テンプレート）
    Models.FormatStatus:
      type: string
      enum:
        - creating
        - draft
        - active
        - deleted
      description: フォーマットステータス
    Models.GoalResultItem:
      type: object
      required:
        - elementId
        - index
        - title
        - type
      properties:
        elementId:
          anyOf:
            - type: string
            - type: integer
        index:
          type: integer
          format: int32
          minimum: 0
        title:
          type: string
        type:
          $ref: '#/components/schemas/Models.WorkflowType'
        data:
          nullable: true
          description: |2-
              type 別の正規化後データ:
              - description: null
              - textField / textArea: string
              - checkbox: { selectedValues: [{optionId, value}], etcText? }（processData と同じ）
              - radio: { selectedValue: {optionId, value}, etcText? }（processData と同じ）
              - image: ProcessDataImageItem[]（processData.photoList をそのまま使用）
              - file: { url: string, fileName: string }
      description: Work 提出時に processData を正規化した結果の1要素
    Models.GrantLicenseRequest:
      type: object
      required:
        - userId
      properties:
        userId:
          type: string
          description: 直接付与対象 worker の公開 userId
    Models.InternalServerError:
      type: object
      required:
        - body
      properties:
        body:
          $ref: '#/components/schemas/Models.ProblemDetails'
    Models.Invoice:
      type: object
      required:
        - year
        - month
        - orderAmount
        - orderAmountWithTax
        - orderCount
        - expenseAmount
        - expenseAmountWithoutTax
        - expenseCount
        - depositAmount
        - depositAmountWithTax
        - depositPoint
        - chargeCount
      properties:
        year:
          type: integer
          format: int32
        month:
          type: integer
          format: int32
        orderAmount:
          type: integer
          format: int32
          description: 発注金額合計（税抜）
        orderAmountWithTax:
          type: integer
          format: int32
          description: 発注金額合計（税込）
        orderCount:
          type: integer
          format: int32
          description: 完了発注件数（invoiceType=order の件数）
        expenseAmount:
          type: integer
          format: int32
          description: 経費合計（税込）
        expenseAmountWithoutTax:
          type: integer
          format: int32
          description: 経費合計（税抜）
        expenseCount:
          type: integer
          format: int32
          description: 経費申請件数
        depositAmount:
          type: integer
          format: int32
          description: 入金合計（税抜）
        depositAmountWithTax:
          type: integer
          format: int32
          description: 入金合計（税込）
        depositPoint:
          type: integer
          format: int32
          description: チャージされたポイント合計
        chargeCount:
          type: integer
          format: int32
          description: 入金回数
      description: |-
        月次請求サマリー
        spotwork-batch-server の InvoiceSummaryData に対応
    Models.InvoiceOrderItem:
      type: object
      required:
        - invoiceLogId
        - invoiceType
        - orderId
        - name
        - price
        - createdAt
      properties:
        invoiceLogId:
          type: string
        invoiceType:
          $ref: '#/components/schemas/Models.InvoiceType'
        orderId:
          type: string
        workId:
          type: string
          nullable: true
        name:
          type: string
          description: 発注名（order.name）
        category:
          type: string
          nullable: true
          description: 社内分類（非公開フィールド）
        price:
          type: integer
          format: int32
          description: 金額（order は税抜、expense は税込）
        priceWithTax:
          type: integer
          format: int32
          nullable: true
          description: 税込金額（invoiceType=order のみ）
        priceWithoutTax:
          type: integer
          format: int32
          nullable: true
          description: 税抜金額（invoiceType=expense のみ）
        createdAt:
          type: string
          format: date-time
      description: |-
        請求明細アイテム
        INVOICE_LOG の1ドキュメントに対応。invoiceType=order または expense のみ返却。
    Models.InvoiceType:
      type: string
      enum:
        - order
        - expense
      description: 請求種別
    Models.License:
      type: object
      required:
        - licenseId
        - companyId
        - name
        - detail
        - acquisitionMethods
      properties:
        licenseId:
          type: string
          description: BUSINESS_LICENSE のドキュメントID
        companyId:
          type: string
        name:
          type: string
          description: 資格名
        image:
          type: string
          nullable: true
          description: 資格画像URL
        detail:
          type: string
          description: 資格詳細
        acquisitionMethods:
          type: array
          items:
            $ref: '#/components/schemas/Models.LicenseAcquisitionMethod'
          description: 取得方法
        hasExpiration:
          type: boolean
          description: 有効期限ありか
        expirationMonths:
          anyOf:
            - type: integer
              format: int32
            - type: string
          nullable: true
          description: 有効期限（月）
        memo:
          type: string
          nullable: true
          description: 社内メモ
        testVersion:
          type: integer
          format: int32
          nullable: true
          description: 有効なテストバージョン。未設定時は null
        checkingCount:
          type: integer
          format: int32
          nullable: true
          description: 審査中件数。集計値
        status:
          allOf:
            - $ref: '#/components/schemas/Models.LicenseStatus'
          nullable: true
          description: 状態（logical delete 含む）
        createdAt:
          type: string
          format: date-time
          nullable: true
        deletedAt:
          type: string
          format: date-time
          nullable: true
        updatedAt:
          type: string
          format: date-time
          nullable: true
        updatedBy:
          type: string
          nullable: true
      description: '企業配下ライセンス（資格）（Firestore: SERVICE/business/BUSINESS_COMPANY/{companyId}/BUSINESS_LICENSE/{licenseId}）'
    Models.LicenseAcquisitionMethod:
      type: string
      enum:
        - test
        - seminar
      description: 資格取得方法
    Models.LicenseStatus:
      type: string
      enum:
        - draft
        - active
        - archive
        - deleted
      description: 資格ステータス
    Models.LicenseSubmission:
      type: object
      required:
        - submissionId
        - licenseId
        - userId
        - status
      properties:
        submissionId:
          type: string
        licenseId:
          type: string
        userId:
          type: string
          description: worker 用の公開 userId。内部保存の worker uid を公開用に正規化した値
        userName:
          type: string
          nullable: true
        testVersion:
          anyOf:
            - type: integer
              format: int32
            - type: string
          nullable: true
        status:
          $ref: '#/components/schemas/Models.LicenseSubmissionStatus'
        score:
          type: integer
          format: int32
          nullable: true
        autoScoredScore:
          type: integer
          format: int32
          nullable: true
        checkedScore:
          type: integer
          format: int32
          nullable: true
        submittedAt:
          type: string
          format: date-time
          nullable: true
        processData:
          type: array
          items: {}
          nullable: true
        testResults:
          type: array
          items:
            $ref: '#/components/schemas/Models.LicenseSubmissionTestResult'
          nullable: true
    Models.LicenseSubmissionStatus:
      type: string
      enum:
        - checking
        - passed
        - failed
    Models.LicenseSubmissionTestResult:
      type: object
      required:
        - elementId
      properties:
        elementId:
          anyOf:
            - type: string
            - type: integer
        elementType:
          type: string
          nullable: true
        checkedScore:
          type: integer
          format: int32
          nullable: true
        isCorrect:
          type: boolean
          nullable: true
    Models.LicensedUser:
      type: object
      required:
        - licenseId
        - userId
      properties:
        licenseId:
          type: string
        userId:
          type: string
          description: worker 用の公開 userId。内部保持の accessibleUserId / worker uid から正規化した値
        userName:
          type: string
          nullable: true
        userNickName:
          type: string
          nullable: true
        grantedBy:
          type: string
          nullable: true
        grantedBySubmissionId:
          type: string
          nullable: true
        grantedAt:
          type: string
          format: date-time
          nullable: true
        status:
          type: string
          nullable: true
        expiresAt:
          type: string
          format: date-time
          nullable: true
        createdAt:
          type: string
          format: date-time
          nullable: true
        updatedAt:
          type: string
          format: date-time
          nullable: true
    Models.MatchingType:
      type: string
      enum:
        - nothing
        - companyFavorite
        - favorite
        - select
      description: マッチング方式
    Models.Message:
      type: object
      required:
        - messageId
        - messageRoomId
        - type
        - content
        - createdAt
      properties:
        messageId:
          type: string
        messageRoomId:
          type: string
        roomId:
          type: string
          nullable: true
        type:
          $ref: '#/components/schemas/Models.MessageType'
        senderType:
          allOf:
            - $ref: '#/components/schemas/Models.MessageSenderType'
          nullable: true
        sentBy:
          type: string
          nullable: true
        name:
          type: string
          nullable: true
        iconUrl:
          type: string
          nullable: true
        sentByCompanyId:
          type: string
          nullable: true
        sentByCompanyName:
          type: string
          nullable: true
        content:
          $ref: '#/components/schemas/Models.MessageContent'
        createdAt:
          type: string
          format: date-time
    Models.MessageContent:
      anyOf:
        - $ref: '#/components/schemas/Models.MessageTextContent'
        - $ref: '#/components/schemas/Models.MessageImageContent'
        - $ref: '#/components/schemas/Models.MessageFileContent'
    Models.MessageFileContent:
      type: object
      required:
        - fileName
        - fileUrl
      properties:
        fileName:
          type: string
        fileSize:
          type: string
          nullable: true
        fileUrl:
          type: string
    Models.MessageImageContent:
      type: object
      required:
        - imageName
        - imageUrl
      properties:
        imageName:
          type: string
        imageSize:
          type: string
          nullable: true
        imageUrl:
          type: string
    Models.MessageRoom:
      type: object
      required:
        - messageRoomId
        - companyId
        - status
        - title
        - unreadCount
      properties:
        messageRoomId:
          type: string
        roomId:
          type: string
          nullable: true
        companyId:
          type: string
        orderId:
          type: string
          nullable: true
        workId:
          type: string
          nullable: true
        workerIds:
          type: array
          items:
            type: string
        lastMessageSenderWorkerId:
          type: string
          nullable: true
        workIds:
          type: array
          items:
            type: string
        type:
          allOf:
            - $ref: '#/components/schemas/Models.MessageRoomType'
          nullable: true
        status:
          $ref: '#/components/schemas/Models.MessageRoomStatus'
        ref:
          type: string
          nullable: true
        title:
          type: string
        latestMessageId:
          type: string
          nullable: true
        latestMessageSentAt:
          type: string
          format: date-time
          nullable: true
        closedAt:
          type: string
          format: date-time
          nullable: true
        unreadCount:
          type: integer
          format: int32
    Models.MessageRoomStatus:
      type: string
      enum:
        - open
        - closed
    Models.MessageRoomType:
      type: string
      enum:
        - orderDM
    Models.MessageSenderType:
      type: string
      enum:
        - company
        - worker
        - system
    Models.MessageTextContent:
      type: object
      required:
        - text
      properties:
        text:
          type: string
    Models.MessageType:
      type: string
      enum:
        - text
        - image
        - file
    Models.NotFoundError:
      type: object
      required:
        - body
      properties:
        body:
          $ref: '#/components/schemas/Models.ProblemDetails'
    Models.Offer:
      type: object
      required:
        - offerId
        - orderId
        - companyId
        - workerId
        - status
        - responseDeadline
        - createdAt
        - updatedAt
      properties:
        offerId:
          type: string
          description: BUSINESS_ORDER_OFFER のドキュメントID
        orderId:
          type: string
        companyId:
          type: string
        workerId:
          type: string
          description: 公開用の worker 識別子
        spowerName:
          type: string
          nullable: true
        status:
          $ref: '#/components/schemas/Models.OfferStatus'
        message:
          type: string
          nullable: true
        responseDeadline:
          type: string
          format: date-time
        acceptedAt:
          type: string
          format: date-time
          nullable: true
        rejectedAt:
          type: string
          format: date-time
          nullable: true
        canceledAt:
          type: string
          format: date-time
          nullable: true
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
    Models.OfferStatus:
      type: string
      enum:
        - pending
        - accepted
        - rejected
        - expired
        - open
        - canceled
    Models.Order:
      type: object
      required:
        - orderId
        - customer
        - name
        - formatId
        - formatVersion
        - orderType
        - price
        - orderPrice
        - status
        - checkType
        - createdAt
        - updatedAt
      properties:
        orderId:
          type: string
          description: 依頼ID
        customer:
          type: string
          description: 依頼を所有する会社ID。Firestore ORDER.customer に対応
        customerName:
          type: string
          nullable: true
          description: 企業名。内部的に company.name / shopName から補完される表示用項目
        category:
          type: string
          nullable: true
          description: 業務画面での固定文言。spotwork-for-business では通常 '企業依頼'
        name:
          type: string
          description: スポワさんに表示される案件名
        controlNumber:
          type: string
          nullable: true
          description: 社内管理番号。UI の一覧・CSV・詳細で参照される
        notation:
          type: string
          nullable: true
          description: 注意事項（公開情報）
        formatId:
          type: string
          description: 依頼作成に利用したテンプレートID
        formatType:
          type: string
          nullable: true
          description: 依頼作成時のテンプレート種別。business または default
        formatVersion:
          type: integer
          format: int32
          description: 作成時に採用した format のバージョン固定値
        orderType:
          allOf:
            - $ref: '#/components/schemas/Models.OrderType'
          description: 依頼種別
        price:
          type: integer
          format: int32
          description: 基本報酬（税抜）。orderPrice の 75%
        orderPrice:
          type: integer
          format: int32
          description: 発注金額（税抜）。クライアントが主入力する項目
        status:
          allOf:
            - $ref: '#/components/schemas/Models.OrderStatus'
          description: 依頼ステータス
        checkType:
          allOf:
            - $ref: '#/components/schemas/Models.CheckType'
          description: 審査設定。spotwork-for-business では lookingForOrder の場合 all / nothing のみ使用
        autoCheckConditions:
          type: array
          items:
            type: string
          nullable: true
          description: checkType=auto のときの自動審査条件。現状の UI では reportPos のみ使用
        thumbnailUrl:
          type: string
          nullable: true
          description: スポワアプリ公開サムネイルURL
        icon:
          type: string
          nullable: true
          description: MDI ライブラリ準拠のアイコン（mdi- 以降の文字列）
        color:
          type: string
          nullable: true
          description: 'hex カラー値（例: #FF5733）'
        canShowRounderCard:
          type: boolean
          nullable: true
          description: デジタル身分証を表示するか。false の場合 rounderCardId は null
        rounderCardId:
          type: string
          nullable: true
          description: 表示対象ラウンダーカードID
        isNeededLicense:
          type: boolean
          nullable: true
          description: 資格を必須にするか。false の場合 licenseId は null
        licenseId:
          type: string
          nullable: true
          description: 必須資格ID
        isEnabledExpenses:
          type: boolean
          nullable: true
          description: 経費申請を許可するか
        favoriteOptions:
          type: array
          items:
            $ref: '#/components/schemas/Models.FavoriteOption'
          description: matchingType=favorite 時のみ有効。お気に入りスポワさんの絞り込み条件
        matchingType:
          allOf:
            - $ref: '#/components/schemas/Models.MatchingType'
          nullable: true
          description: マッチ対象の絞り込み方法
        selectedSpowers:
          type: array
          items:
            type: string
          nullable: true
          description: matchingType=select のときに指定するスポワさん一覧
        workerId:
          type: string
          nullable: true
          description: customOrder で現在マッチしている worker の workerId
        workerIds:
          type: array
          items:
            type: string
          description: lookingForOrder でマッチしたことがある workerId 一覧
        matchMessage:
          type: string
          nullable: true
          description: マッチング時に送る初回メッセージ
        maxDoneCount:
          type: integer
          format: int32
          nullable: true
          description: Format 単位の最大完了数
        maxDoneCountStartDate:
          type: string
          format: date-time
          nullable: true
          description: maxDoneCount 集計の開始日
        deadline:
          type: string
          format: date-time
          nullable: true
          description: 作業期日。超過した open な Order はスポワさん画面に表示されなくなる
        manualUrl:
          type: string
          nullable: true
          description: 公開マニュアルURL
        autoDelete:
          type: boolean
          description: 期限切れかつ未マッチ時に自動削除するか
        hasDeadlineNotification:
          type: boolean
          description: 期日通知を送るか
        hasMatchingCancelNotification:
          type: boolean
          description: マッチングキャンセル時に通知を送るか
        spotId:
          type: string
          nullable: true
          description: customOrder のみ対象
        address:
          type: string
          nullable: true
          description: customOrder の表示用住所
        inputAddress:
          type: string
          nullable: true
          description: customOrder のマッピング用住所
        workArea:
          type: string
          nullable: true
          description: lookingForOrder の作業エリア
        maxDelivery:
          type: integer
          format: int32
          nullable: true
          description: lookingForOrder の最大納品数
        highestOrderPrice:
          type: integer
          format: int32
          nullable: true
          description: lookingForOrder で page.price を含めた単価上限。spotwork-for-business の金額表示・差分検知で使用
        ngList:
          type: array
          items:
            $ref: '#/components/schemas/Models.OrderNgListAssignment'
          nullable: true
          description: lookingForOrder の textField ごとの NG リスト紐づけ
        schedulingDate:
          type: string
          format: date-time
          nullable: true
          description: 作業開始予定日時（Work 作成時にセット・Work 削除時にクリア）
        matchedAt:
          type: string
          format: date-time
          nullable: true
          description: 最後の Work がマッチした日時（Work 作成時にセット・Work 削除時にクリア）
        endedAt:
          type: string
          format: date-time
          nullable: true
          description: Work が approved になった日時
        availableTimeType:
          allOf:
            - $ref: '#/components/schemas/Models.AvailableTimeType'
          nullable: true
          description: 作業可能時間タイプ
        availableTimeDayOfWeek:
          type: array
          items:
            type: integer
            format: int32
          description: 作業可能曜日（0=日〜6=土の AND 条件）
        availableTimeHours:
          type: object
          allOf:
            - $ref: '#/components/schemas/Models.AvailableTimeHours'
          nullable: true
        availableTimeStartDate:
          type: string
          format: date-time
          nullable: true
          description: availableTimeDayOfWeek / availableTimeStartDate / availableTimeEndDate との AND 条件で制御する開始日
        availableTimeEndDate:
          type: string
          format: date-time
          nullable: true
          description: 作業可能期間終了日
        availableTimeCustom:
          type: array
          items:
            $ref: '#/components/schemas/Models.AvailableTimeRange'
          description: availableTimeType=custom のとき必須
        workIds:
          type: array
          items:
            type: string
        doneWorkIds:
          type: array
          items:
            type: string
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
      description: 発注（ORDER）ドキュメント
    Models.OrderNgListAssignment:
      type: object
      required:
        - elementId
        - ngListId
      properties:
        elementId:
          anyOf:
            - type: string
            - type: integer
          description: NG チェック対象の workflow.elementId。textField かつ hasNgListCheck=true の要素を指定する
        ngListId:
          type: string
          description: 紐づける TEXT_FIELD_NG_LIST のドキュメントID
      description: Order に紐づく NG リスト設定
    Models.OrderStatus:
      type: string
      enum:
        - open
        - matched
        - done
        - checking
        - offered
      description: 依頼ステータス
    Models.OrderType:
      type: string
      enum:
        - customOrder
        - lookingForOrder
      description: 依頼種別
    Models.OutputFile:
      type: object
      required:
        - type
      properties:
        type:
          type: string
          enum:
            - file
          description: file 固定
        fileType:
          type: string
          nullable: true
          description: image / video / audio / pdf / document / spreadsheet / presentation / archive など
        url:
          type: string
          nullable: true
          description: 画像ファイルの圧縮されたサムネイル URL
        elementId:
          anyOf:
            - type: string
            - type: integer
          nullable: true
          description: workflowのフローID
        formatId:
          type: string
          nullable: true
          description: テンプレートID
        formatVersion:
          type: integer
          format: int32
          nullable: true
        orderId:
          type: string
          nullable: true
        workId:
          type: string
          nullable: true
        orderName:
          type: string
          nullable: true
          description: 案件名
      allOf:
        - $ref: '#/components/schemas/Models.OutputFolderBase'
      description: 'アウトプットファイル（Firestore: SERVICE/business/BUSINESS_COMPANY/{companyId}/BUSINESS_OUTPUT_FOLDER/{id}）'
    Models.OutputFolder:
      type: object
      required:
        - type
      properties:
        type:
          type: string
          enum:
            - folder
          description: folder 固定
      allOf:
        - $ref: '#/components/schemas/Models.OutputFolderBase'
      description: 'アウトプットフォルダ（Firestore: SERVICE/business/BUSINESS_COMPANY/{companyId}/BUSINESS_OUTPUT_FOLDER/{id}）'
    Models.OutputFolderBase:
      type: object
      required:
        - id
        - displayName
        - path
      properties:
        id:
          type: string
          description: BUSINESS_OUTPUT_FOLDER のドキュメントID
        displayName:
          type: string
          description: 表示名
        parentId:
          type: string
          nullable: true
          description: 親フォルダのドキュメントID。ルート直下は null
        path:
          type: string
          description: フォルダパス（範囲クエリ用）
        ancestors:
          type: array
          items:
            type: string
          description: 祖先フォルダIDの配列
        createdAt:
          type: string
          format: date-time
          nullable: true
        updatedAt:
          type: string
          format: date-time
          nullable: true
        updatedBy:
          type: string
          nullable: true
    Models.OutputFolderEntry:
      anyOf:
        - $ref: '#/components/schemas/Models.OutputFolder'
        - $ref: '#/components/schemas/Models.OutputFile'
    Models.ProblemDetails:
      type: object
      required:
        - title
        - status
      properties:
        type:
          type: string
        title:
          type: string
        status:
          type: integer
          format: int32
        detail:
          type: string
        instance:
          type: string
        code:
          type: string
      description: エラーレスポンス
    Models.ProcessDataImageItem:
      type: object
      required:
        - index
        - imageId
        - photoUrl
        - comment
      properties:
        index:
          type: integer
          format: int32
        imageId:
          anyOf:
            - type: string
            - type: integer
        photoUrl:
          type: string
          description: Firebase Storage アップロード済み画像URL
        comment:
          type: string
        exif:
          type: object
          additionalProperties: {}
          nullable: true
          description: 画像の EXIF メタデータ
      description: processData 画像要素
    Models.ProcessDataItem:
      type: object
      required:
        - elementId
        - index
        - title
        - type
        - isValid
      properties:
        elementId:
          anyOf:
            - type: string
            - type: integer
        index:
          type: integer
          format: int32
          minimum: 0
        title:
          type: string
        type:
          $ref: '#/components/schemas/Models.WorkflowType'
        isValid:
          type: boolean
        data:
          nullable: true
          description: |2-
              type 別の入力値:
              - description: null（表示専用）
              - textField / textArea: string
              - checkbox: { selectedValues: [{optionId, value}], etcText? }
              - radio: { selectedValue: {optionId, value}, etcText? }
              - image: { selectedIndex: number, photoList: ProcessDataImageItem[] }
              - file: { url: string, fileName: string }
      description: スポワさんがフロー実行時に入力した生データの1要素
    Models.RecruitRequirement:
      type: object
      required:
        - recruitRequirementId
        - companyId
        - title
        - expiredAt
        - status
        - createdAt
        - updatedAt
      properties:
        recruitRequirementId:
          type: string
          description: RECRUIT_REQUIREMENT のドキュメントID
        companyId:
          type: string
        title:
          type: string
        description:
          type: string
          nullable: true
        workCategoryIds:
          type: array
          items:
            type: string
          nullable: true
        requirementSkillIds:
          type: array
          items:
            type: string
          nullable: true
        recommendedSkillIds:
          type: array
          items:
            type: string
          nullable: true
        prefectures:
          type: array
          items:
            type: string
          nullable: true
        estimatedUnitPrice:
          type: number
          format: double
          nullable: true
        estimatedWorkTime:
          type: number
          format: double
          nullable: true
        expiredAt:
          type: string
          format: date-time
        status:
          $ref: '#/components/schemas/Models.RecruitRequirementStatus'
        readCount:
          type: integer
          format: int32
          nullable: true
        interestedSpowers:
          type: object
          allOf:
            - $ref: '#/components/schemas/Models.RecruitRequirementInterestSummary'
          nullable: true
          description: UI 集計用の興味ありサマリー
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
      description: 募集要件本体
    Models.RecruitRequirementInterest:
      type: object
      required:
        - interestId
        - recruitRequirementId
        - workerId
        - createdAt
      properties:
        interestId:
          type: string
          description: INTEREST のドキュメントID。通常は workerId ベース
        recruitRequirementId:
          type: string
        workerId:
          type: string
        user:
          type: object
          allOf:
            - $ref: '#/components/schemas/Models.RecruitRequirementInterestUser'
          nullable: true
        createdAt:
          type: string
          format: date-time
      description: 興味ありスポワ
    Models.RecruitRequirementInterestSummary:
      type: object
      required:
        - count
      properties:
        count:
          type: integer
          format: int32
        lastActionAt:
          type: string
          format: date-time
          nullable: true
    Models.RecruitRequirementInterestUser:
      type: object
      properties:
        name:
          type: string
          nullable: true
        prefecture:
          type: string
          nullable: true
        interestedWorkCategoryIds:
          type: array
          items:
            type: string
          nullable: true
        skills:
          type: array
          items:
            $ref: '#/components/schemas/Models.RecruitRequirementInterestUserSkill'
          nullable: true
        lastSignInTime:
          type: string
          format: date-time
          nullable: true
    Models.RecruitRequirementInterestUserSkill:
      type: object
      required:
        - skillId
      properties:
        skillId:
          type: string
    Models.RecruitRequirementStatus:
      type: string
      enum:
        - open
        - closed
        - expired
    Models.ReviewLicenseSubmissionRequest:
      type: object
      properties:
        checkedScore:
          type: integer
          format: int32
          nullable: true
        testResults:
          type: array
          items:
            $ref: '#/components/schemas/Models.LicenseSubmissionTestResult'
          nullable: true
    Models.ReviewRatingDistribution:
      type: object
      required:
        - oneStar
        - twoStar
        - threeStar
        - fourStar
        - fiveStar
      properties:
        oneStar:
          type: integer
          format: int32
        twoStar:
          type: integer
          format: int32
        threeStar:
          type: integer
          format: int32
        fourStar:
          type: integer
          format: int32
        fiveStar:
          type: integer
          format: int32
    Models.ReviewSummary:
      type: object
      required:
        - totalCount
        - averageRating
        - distribution
      properties:
        totalCount:
          type: integer
          format: int32
        averageRating:
          type: number
          format: float
        distribution:
          $ref: '#/components/schemas/Models.ReviewRatingDistribution'
        tagCounts:
          type: object
          additionalProperties:
            type: integer
            format: int32
          nullable: true
    Models.ReviewWorkSummary:
      type: object
      required:
        - workId
      properties:
        workId:
          type: string
        orderId:
          type: string
          nullable: true
        workType:
          type: string
          nullable: true
        title:
          type: string
          nullable: true
        address:
          type: string
          nullable: true
        endedAt:
          type: string
          format: date-time
          nullable: true
      description: レビュー一覧で併せて返す Work の最小スナップショット
    Models.RounderCard:
      type: object
      required:
        - cardId
        - name
        - companyName
        - position
        - address
        - zipCode
        - tel
        - logoImage
      properties:
        cardId:
          type: string
          description: ROUNDER_CARD のドキュメントID
        name:
          type: string
          description: カード名
        companyName:
          type: string
          description: 表示する会社名
        position:
          type: string
          description: 表示する役職
        address:
          type: string
        zipCode:
          type: string
        tel:
          type: string
        logoImage:
          type: string
          description: ロゴ画像URL
        memo:
          type: string
          nullable: true
        status:
          type: string
          nullable: true
          description: 論理削除時のみ deleted
        createdAt:
          type: string
          format: date-time
          nullable: true
        updatedAt:
          type: string
          format: date-time
          nullable: true
        updatedBy:
          type: string
          nullable: true
      description: '企業配下ラウンダーカード（Firestore: SERVICE/business/BUSINESS_COMPANY/{companyId}/ROUNDER_CARD/{cardId}）'
    Models.Schedule:
      type: object
      required:
        - scheduleId
        - companyId
        - name
        - orderName
        - status
        - orderType
        - formatId
        - formatVersion
        - price
        - checkType
        - scheduleType
        - orderHour
        - orderMinute
        - nextOrderDate
        - createdAt
        - updatedAt
      properties:
        scheduleId:
          type: string
          description: ORDER_SCHEDULE のドキュメントID
        companyId:
          type: string
        name:
          type: string
        orderName:
          type: string
        category:
          type: string
          nullable: true
          description: 業務画面では通常「企業依頼」
        controlNumber:
          type: string
          nullable: true
        notation:
          type: string
          nullable: true
        description:
          type: string
          nullable: true
        memo:
          type: string
          nullable: true
        status:
          $ref: '#/components/schemas/Models.ScheduleStatus'
        orderType:
          $ref: '#/components/schemas/Models.OrderType'
        formatId:
          type: string
        formatType:
          type: string
          nullable: true
          description: business または default
        formatVersion:
          type: integer
          format: int32
          description: 最新指定は 0 で保存される
        price:
          type: integer
          format: int32
        orderPrice:
          type: integer
          format: int32
          nullable: true
        checkType:
          $ref: '#/components/schemas/Models.CheckType'
        autoCheckConditions:
          type: array
          items:
            type: string
          nullable: true
        icon:
          type: string
          nullable: true
        color:
          type: string
          nullable: true
        thumbnailUrl:
          type: string
          nullable: true
        customerName:
          type: string
          nullable: true
        isEnabledExpenses:
          type: boolean
          nullable: true
        hasSelection:
          type: boolean
          nullable: true
        matchingType:
          allOf:
            - $ref: '#/components/schemas/Models.MatchingType'
          nullable: true
        favoriteOptions:
          type: array
          items:
            $ref: '#/components/schemas/Models.FavoriteOption'
          nullable: true
        selectedSpowers:
          type: array
          items:
            type: string
          nullable: true
          description: matchingType=select のときに指定するスポワさん一覧
        matchMessage:
          type: string
          nullable: true
        offeredUserId:
          type: string
          nullable: true
        offerMessage:
          type: string
          nullable: true
        offerDeadlineDay:
          type: integer
          format: int32
          nullable: true
        offerDeadlineHour:
          type: integer
          format: int32
          nullable: true
        offerDeadlineMinute:
          type: integer
          format: int32
          nullable: true
        canShowRounderCard:
          type: boolean
          nullable: true
        rounderCardId:
          type: string
          nullable: true
        isNeededLicense:
          type: boolean
          nullable: true
        licenseId:
          type: string
          nullable: true
        hasCancelWaiting:
          type: boolean
          nullable: true
        hasDeadlineNotification:
          type: boolean
          nullable: true
        hasMatchingCancelNotification:
          type: boolean
          nullable: true
        autoDelete:
          type: boolean
          nullable: true
        manualUrl:
          type: string
          nullable: true
        spotId:
          type: string
          nullable: true
        address:
          type: string
          nullable: true
        inputAddress:
          type: string
          nullable: true
        lat:
          type: number
          format: double
          nullable: true
        lng:
          type: number
          format: double
          nullable: true
        geoHash:
          type: string
          nullable: true
        scheduleType:
          $ref: '#/components/schemas/Models.ScheduleType'
        orderHour:
          type: integer
          format: int32
          description: 発注時刻（0-23）
        orderMinute:
          type: integer
          format: int32
          description: 発注分（0-59）
        nextOrderDate:
          type: string
          format: date-time
          description: 次回発注予定日時
        period:
          type: integer
          format: int32
          nullable: true
          description: scheduleType=period のとき使用
        daysOfWeek:
          type: array
          items:
            type: integer
            format: int32
          nullable: true
          description: scheduleType=dayOfWeek のとき使用。0=日〜6=土
        orderDates:
          type: array
          items:
            type: integer
            format: int32
          nullable: true
          description: scheduleType=date のとき使用。月内の日付一覧
        daysAfterDone:
          type: integer
          format: int32
          nullable: true
          description: scheduleType=afterDone のとき使用
        deadlineDay:
          type: integer
          format: int32
          nullable: true
        deadlineHour:
          type: integer
          format: int32
          nullable: true
        deadlineMinute:
          type: integer
          format: int32
          nullable: true
        isNeededScheduling:
          type: boolean
          nullable: true
        requiredWorkTime:
          type: integer
          format: int32
          nullable: true
        canReserveHours:
          type: integer
          format: int32
          nullable: true
        maxDoneCount:
          type: integer
          format: int32
          nullable: true
        availableTimeType:
          allOf:
            - $ref: '#/components/schemas/Models.AvailableTimeType'
          nullable: true
        availableTimeDayOfWeek:
          type: array
          items:
            type: integer
            format: int32
          nullable: true
        availableTimeHours:
          type: object
          allOf:
            - $ref: '#/components/schemas/Models.AvailableTimeHours'
          nullable: true
        availableTimeStartOffsetDays:
          type: integer
          format: int32
          nullable: true
          description: 発注から何日後から作業可能か
        availableTimeStartHour:
          type: integer
          format: int32
          nullable: true
        availableTimeStartMinute:
          type: integer
          format: int32
          nullable: true
        availableTimeEndOffsetDays:
          type: integer
          format: int32
          nullable: true
          description: 発注から何日後まで作業可能か
        availableTimeEndHour:
          type: integer
          format: int32
          nullable: true
        availableTimeEndMinute:
          type: integer
          format: int32
          nullable: true
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
      description: スケジュール本体（ORDER_SCHEDULE）
    Models.ScheduleStatus:
      type: string
      enum:
        - active
        - inactive
        - error
        - deleted
      description: スケジュール状態
    Models.ScheduleType:
      type: string
      enum:
        - period
        - dayOfWeek
        - date
        - afterDone
      description: スケジュールの繰り返し種別
    Models.Seminar:
      type: object
      required:
        - seminarId
        - companyId
        - licenseId
        - type
        - datetime
        - maxParticipants
      properties:
        seminarId:
          type: string
        companyId:
          type: string
        licenseId:
          type: string
        licenseName:
          type: string
          nullable: true
        type:
          $ref: '#/components/schemas/Models.SeminarType'
        datetime:
          type: string
          format: date-time
        maxParticipants:
          type: integer
          format: int32
        participantsCount:
          type: integer
          format: int32
          nullable: true
        participants:
          type: integer
          format: int32
          nullable: true
        address:
          type: string
          nullable: true
        url:
          type: string
          nullable: true
        memo:
          type: string
          nullable: true
        status:
          type: string
          nullable: true
        passcode:
          type: string
          nullable: true
        createdAt:
          type: string
          format: date-time
          nullable: true
        updatedAt:
          type: string
          format: date-time
          nullable: true
        updatedBy:
          type: string
          nullable: true
    Models.SeminarParticipant:
      type: object
      required:
        - seminarId
        - userId
        - status
      properties:
        seminarId:
          type: string
        userId:
          type: string
          description: worker 用の公開 userId。内部保存の worker uid を公開用に正規化した値
        name:
          type: string
          nullable: true
        status:
          $ref: '#/components/schemas/Models.SeminarParticipantStatus'
        reservedAt:
          type: string
          format: date-time
          nullable: true
        completedAt:
          type: string
          format: date-time
          nullable: true
    Models.SeminarParticipantStatus:
      type: string
      enum:
        - reserved
        - completed
        - canceled
    Models.SeminarType:
      type: string
      enum:
        - online
        - offline
    Models.SendFileMessageRequest:
      type: object
      required:
        - type
        - content
      properties:
        type:
          type: string
          enum:
            - file
        content:
          $ref: '#/components/schemas/Models.MessageFileContent'
    Models.SendImageMessageRequest:
      type: object
      required:
        - type
        - content
      properties:
        type:
          type: string
          enum:
            - image
        content:
          $ref: '#/components/schemas/Models.MessageImageContent'
    Models.SendTextMessageRequest:
      type: object
      required:
        - type
        - content
      properties:
        type:
          type: string
          enum:
            - text
        content:
          $ref: '#/components/schemas/Models.MessageTextContent'
    Models.Spot:
      type: object
      required:
        - spotId
        - name
        - address
        - inputAddress
        - lat
        - lng
        - createdAt
        - updatedAt
      properties:
        spotId:
          type: string
          description: SPOT のドキュメントID
        controlNumber:
          type: string
          nullable: true
          description: 社内管理番号。未設定時は null
        name:
          type: string
          description: スポット名
        address:
          type: string
          description: スポワさん向け表示住所
        inputAddress:
          type: string
          description: 地図・ジオコーディング用住所。番地までを入力
        lat:
          type: number
          format: double
          description: inputAddress から算出された緯度
        lng:
          type: number
          format: double
          description: inputAddress から算出された経度
        memo:
          type: string
          nullable: true
          description: 企業内メモ
        tags:
          type: array
          items:
            type: string
          nullable: true
          description: タグ（重複不可）
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
      description: '企業配下スポット（Firestore: SERVICE/business/BUSINESS_COMPANY/{companyId}/SPOT/{spotId}）'
    Models.TextFieldNgList:
      type: object
      required:
        - ngListId
        - name
        - updatedAt
      properties:
        ngListId:
          type: string
          description: TEXT_FIELD_NG_LIST のドキュメントID
        name:
          type: string
        memoForMember:
          type: string
          nullable: true
          description: 社内用メモ。ワーカーには非公開
        createdAt:
          type: string
          format: date-time
          nullable: true
        updatedAt:
          type: string
          format: date-time
      description: 'テキストフィールドNGリスト（Firestore: SERVICE/business/BUSINESS_COMPANY/{companyId}/TEXT_FIELD_NG_LIST/{ngListId}）'
    Models.TextFieldNgListData:
      type: object
      required:
        - ngListDataId
        - text
      properties:
        ngListDataId:
          type: string
          description: TEXT_FIELD_NG_LIST_DATA のドキュメントID
        text:
          type: string
        createdAt:
          type: string
          format: date-time
          nullable: true
      description: 'NGワードデータ（Firestore: .../TEXT_FIELD_NG_LIST/{ngListId}/TEXT_FIELD_NG_LIST_DATA/{dataId}）'
    Models.UnauthorizedError:
      type: object
      required:
        - body
      properties:
        body:
          $ref: '#/components/schemas/Models.ProblemDetails'
    Models.UnprocessableEntityError:
      type: object
      required:
        - body
      properties:
        body:
          $ref: '#/components/schemas/Models.ProblemDetails'
    Models.UpdateCompanyMemberRoleRequest:
      type: object
      required:
        - permission
      properties:
        permission:
          $ref: '#/components/schemas/Models.CompanyMemberRole'
    Models.UpdateCompanyRequest:
      type: object
      properties:
        name:
          type: string
        shopName:
          type: string
          nullable: true
        postalCode:
          type: string
          nullable: true
        address:
          type: string
          nullable: true
        building:
          type: string
          nullable: true
        iconUrl:
          type: string
          nullable: true
        contactEmails:
          type: array
          items:
            type: string
          nullable: true
    Models.UpdateFormatRequest:
      type: object
      properties:
        name:
          type: string
        status:
          $ref: '#/components/schemas/Models.FormatStatus'
        defaultIcon:
          type: string
        defaultColor:
          type: string
        defaultOrderName:
          type: string
        defaultDescription:
          type: string
        defaultNotation:
          type: string
        defaultOrderPrice:
          type: integer
          format: int32
        defaultCheckType:
          $ref: '#/components/schemas/Models.CheckType'
        defaultAutoCheckConditions:
          type: array
          items:
            type: string
          description: defaultCheckType=auto のとき必須。現状の UI では reportPos のみ使用
        defaultMatchMessage:
          type: string
        defaultCanShowRounderCard:
          type: boolean
          description: true の場合 defaultRounderCardId が必須
        defaultRounderCardId:
          type: string
          nullable: true
        defaultIsNeededLicense:
          type: boolean
          description: true の場合 defaultLicenseId が必須
        defaultLicenseId:
          type: string
          nullable: true
        memoForMember:
          type: string
        manualUrl:
          type: string
        defaultThumbnailUrl:
          type: string
        autoDelete:
          type: boolean
        hasDeadlineNotification:
          type: boolean
        hasMatchingCancelNotification:
          type: boolean
        hasCancelWaiting:
          type: boolean
        hasSelection:
          type: boolean
        isNeededScheduling:
          type: boolean
        requiredWorkTime:
          type: integer
          format: int32
          nullable: true
        canReserveHours:
          type: integer
          format: int32
          nullable: true
        isEnabledExpenses:
          type: boolean
        price:
          type: integer
          format: int32
        maxDoneCount:
          type: integer
          format: int32
        availableTimeType:
          allOf:
            - $ref: '#/components/schemas/Models.AvailableTimeType'
          description: spotwork-for-business の保存実装は主に normal/nothing を使用
        availableTimeDayOfWeek:
          type: array
          items:
            type: integer
            format: int32
        availableTimeHours:
          type: object
          allOf:
            - $ref: '#/components/schemas/Models.AvailableTimeHours'
          nullable: true
        workflow:
          type: array
          items:
            $ref: '#/components/schemas/Models.WorkflowStepInput'
          description: elementId / imageId / optionId は指定不要。指定されてもサーバー側で再生成する
        pages:
          type: array
          items:
            $ref: '#/components/schemas/Models.FormPage'
          description: 最低 1 つは nextPage=null の完了ページが必要。1 ページに条件分岐要素は 1 つまで
      description: フォーマット更新リクエスト
    Models.UpdateLicenseRequest:
      type: object
      properties:
        name:
          type: string
        image:
          type: string
          nullable: true
        detail:
          type: string
        acquisitionMethods:
          type: array
          items:
            $ref: '#/components/schemas/Models.LicenseAcquisitionMethod'
        hasExpiration:
          type: boolean
        expirationMonths:
          anyOf:
            - type: integer
              format: int32
            - type: string
          nullable: true
        memo:
          type: string
          nullable: true
        testVersion:
          type: integer
          format: int32
          nullable: true
        status:
          $ref: '#/components/schemas/Models.LicenseStatus'
    Models.UpdateOrderRequest:
      type: object
      properties:
        name:
          type: string
        category:
          type: string
          description: 業務画面での固定文言。spotwork-for-business では通常 '企業依頼'
        notation:
          type: string
        description:
          type: string
        controlNumber:
          type: string
          nullable: true
          description: 社内管理番号。空にする場合は null
        orderPrice:
          type: integer
          format: int32
          description: 発注金額（税抜）。クライアントが主入力する項目
        price:
          type: integer
          format: int32
          description: 基本報酬（税抜）。orderPrice の 75%
        checkType:
          allOf:
            - $ref: '#/components/schemas/Models.CheckType'
          description: 審査設定。spotwork-for-business では lookingForOrder の場合 all / nothing のみ使用
        autoCheckConditions:
          type: array
          items:
            type: string
          nullable: true
          description: checkType=auto のときの自動審査条件。現状の UI では reportPos のみ使用
        deadline:
          type: string
          format: date-time
          nullable: true
          description: 作業期日。超過した open な Order はスポワさん画面に表示されなくなる
        manualUrl:
          type: string
        autoDelete:
          type: boolean
        hasDeadlineNotification:
          type: boolean
        hasMatchingCancelNotification:
          type: boolean
        matchingType:
          $ref: '#/components/schemas/Models.MatchingType'
        favoriteOptions:
          type: array
          items:
            $ref: '#/components/schemas/Models.FavoriteOption'
          description: matchingType=favorite 時のみ有効
        selectedSpowers:
          type: array
          items:
            type: string
          nullable: true
          description: matchingType=select のときに指定するスポワさん一覧
        matchMessage:
          type: string
          nullable: true
          description: マッチング時に送る初回メッセージ
        maxDoneCount:
          type: integer
          format: int32
        maxDoneCountStartDate:
          type: string
          format: date-time
          nullable: true
        thumbnailUrl:
          type: string
          description: スポワアプリ公開サムネイルURL
        canShowRounderCard:
          type: boolean
          description: デジタル身分証を表示するか。false の場合 rounderCardId は null
        rounderCardId:
          type: string
          nullable: true
          description: 表示対象ラウンダーカードID
        isNeededLicense:
          type: boolean
          description: 資格を必須にするか。false の場合 licenseId は null
        licenseId:
          type: string
          nullable: true
          description: 必須資格ID
        isEnabledExpenses:
          type: boolean
          description: 経費申請を許可するか
        maxDelivery:
          type: integer
          format: int32
          description: lookingForOrder の最大納品数
        ngList:
          type: array
          items:
            $ref: '#/components/schemas/Models.OrderNgListAssignment'
          nullable: true
          description: lookingForOrder の textField ごとの NG リスト紐づけ
        highestOrderPrice:
          type: integer
          format: int32
          nullable: true
          description: lookingForOrder で page.price を含めた単価上限。通常はサーバー側で再計算する
        availableTimeType:
          $ref: '#/components/schemas/Models.AvailableTimeType'
        availableTimeDayOfWeek:
          type: array
          items:
            type: integer
            format: int32
        availableTimeHours:
          $ref: '#/components/schemas/Models.AvailableTimeHours'
        availableTimeStartDate:
          type: string
          format: date-time
          nullable: true
        availableTimeEndDate:
          type: string
          format: date-time
          nullable: true
        availableTimeCustom:
          type: array
          items:
            $ref: '#/components/schemas/Models.AvailableTimeRange'
          description: availableTimeType=custom のとき必須
      description: Order 更新リクエスト（指定した項目のみ上書き）
    Models.UpdateRecruitRequirementRequest:
      type: object
      properties:
        title:
          type: string
        description:
          type: string
          nullable: true
        workCategoryIds:
          type: array
          items:
            type: string
          nullable: true
        requirementSkillIds:
          type: array
          items:
            type: string
          nullable: true
        recommendedSkillIds:
          type: array
          items:
            type: string
          nullable: true
        prefectures:
          type: array
          items:
            type: string
          nullable: true
        estimatedUnitPrice:
          type: number
          format: double
          nullable: true
        estimatedWorkTime:
          type: number
          format: double
          nullable: true
        expiredAt:
          type: string
          format: date-time
        status:
          $ref: '#/components/schemas/Models.RecruitRequirementStatus'
    Models.UpdateRounderCardRequest:
      type: object
      properties:
        name:
          type: string
        companyName:
          type: string
        position:
          type: string
        address:
          type: string
        zipCode:
          type: string
        tel:
          type: string
        logoImage:
          type: string
        memo:
          type: string
          nullable: true
    Models.UpdateScheduleRequest:
      type: object
      properties:
        name:
          type: string
        orderName:
          type: string
        category:
          type: string
          nullable: true
        controlNumber:
          type: string
          nullable: true
        notation:
          type: string
          nullable: true
        description:
          type: string
          nullable: true
        memo:
          type: string
          nullable: true
        formatId:
          type: string
        formatVersion:
          type: integer
          format: int32
        price:
          type: integer
          format: int32
        orderPrice:
          type: integer
          format: int32
          nullable: true
        checkType:
          $ref: '#/components/schemas/Models.CheckType'
        autoCheckConditions:
          type: array
          items:
            type: string
          nullable: true
        icon:
          type: string
          nullable: true
        color:
          type: string
          nullable: true
        thumbnailUrl:
          type: string
          nullable: true
        isEnabledExpenses:
          type: boolean
        hasSelection:
          type: boolean
        matchingType:
          allOf:
            - $ref: '#/components/schemas/Models.MatchingType'
          nullable: true
        favoriteOptions:
          type: array
          items:
            $ref: '#/components/schemas/Models.FavoriteOption'
          nullable: true
        selectedSpowers:
          type: array
          items:
            type: string
          nullable: true
          description: matchingType=select のときに指定するスポワさん一覧
        matchMessage:
          type: string
          nullable: true
        offeredUserId:
          type: string
          nullable: true
        offerMessage:
          type: string
          nullable: true
        offerDeadlineDay:
          type: integer
          format: int32
          nullable: true
        offerDeadlineHour:
          type: integer
          format: int32
          nullable: true
        offerDeadlineMinute:
          type: integer
          format: int32
          nullable: true
        canShowRounderCard:
          type: boolean
        rounderCardId:
          type: string
          nullable: true
        isNeededLicense:
          type: boolean
        licenseId:
          type: string
          nullable: true
        hasCancelWaiting:
          type: boolean
        hasDeadlineNotification:
          type: boolean
        hasMatchingCancelNotification:
          type: boolean
        autoDelete:
          type: boolean
        manualUrl:
          type: string
          nullable: true
        spotId:
          type: string
        address:
          type: string
          nullable: true
        inputAddress:
          type: string
          nullable: true
        scheduleType:
          $ref: '#/components/schemas/Models.ScheduleType'
        orderHour:
          type: integer
          format: int32
        orderMinute:
          type: integer
          format: int32
        period:
          type: integer
          format: int32
          nullable: true
        daysOfWeek:
          type: array
          items:
            type: integer
            format: int32
          nullable: true
        orderDates:
          type: array
          items:
            type: integer
            format: int32
          nullable: true
        daysAfterDone:
          type: integer
          format: int32
          nullable: true
        deadlineDay:
          type: integer
          format: int32
          nullable: true
        deadlineHour:
          type: integer
          format: int32
          nullable: true
        deadlineMinute:
          type: integer
          format: int32
          nullable: true
        isNeededScheduling:
          type: boolean
        requiredWorkTime:
          type: integer
          format: int32
          nullable: true
        canReserveHours:
          type: integer
          format: int32
          nullable: true
        maxDoneCount:
          type: integer
          format: int32
          nullable: true
        availableTimeType:
          $ref: '#/components/schemas/Models.AvailableTimeType'
        availableTimeDayOfWeek:
          type: array
          items:
            type: integer
            format: int32
          nullable: true
        availableTimeHours:
          type: object
          allOf:
            - $ref: '#/components/schemas/Models.AvailableTimeHours'
          nullable: true
        availableTimeStartOffsetDays:
          type: integer
          format: int32
          nullable: true
        availableTimeStartHour:
          type: integer
          format: int32
          nullable: true
        availableTimeStartMinute:
          type: integer
          format: int32
          nullable: true
        availableTimeEndOffsetDays:
          type: integer
          format: int32
          nullable: true
        availableTimeEndHour:
          type: integer
          format: int32
          nullable: true
        availableTimeEndMinute:
          type: integer
          format: int32
          nullable: true
    Models.UpdateSeminarRequest:
      type: object
      properties:
        type:
          $ref: '#/components/schemas/Models.SeminarType'
        datetime:
          type: string
          format: date-time
        maxParticipants:
          type: integer
          format: int32
        address:
          type: string
          nullable: true
        url:
          type: string
          nullable: true
        memo:
          type: string
          nullable: true
    Models.UpdateSpotRequest:
      type: object
      properties:
        controlNumber:
          type: string
          nullable: true
        name:
          type: string
        address:
          type: string
        inputAddress:
          type: string
        memo:
          type: string
          nullable: true
        tags:
          type: array
          items:
            type: string
          nullable: true
      description: スポット更新リクエスト（指定した項目のみ上書き）
    Models.UpdateTextFieldNgListRequest:
      type: object
      properties:
        name:
          type: string
        memoForMember:
          type: string
          nullable: true
    Models.UpdateWebhookRequest:
      type: object
      properties:
        url:
          type: string
        eventTypes:
          type: array
          items:
            $ref: '#/components/schemas/Models.WebhookEventType'
        description:
          type: string
          nullable: true
        isActive:
          type: boolean
      description: Webhook更新リクエスト
    Models.UpdateWorkerMemoRequest:
      type: object
      required:
        - tags
      properties:
        memo:
          type: string
        tags:
          type: array
          items:
            type: string
          description: company 独自タグ。重複不可。このリストで上書きする
      description: スポワさんメモ・タグ更新リクエスト
    Models.UserExperience:
      type: object
      required:
        - industry
        - job
      properties:
        industry:
          type: string
        job:
          type: string
        year:
          type: integer
          format: int32
          nullable: true
        description:
          type: string
          nullable: true
    Models.UserSkill:
      type: object
      required:
        - skillId
        - skillName
      properties:
        skillId:
          type: string
        skillName:
          type: string
        addedAt:
          type: string
          format: date-time
      description: スキル情報
    Models.UserSummary:
      type: object
      required:
        - agreed
        - skills
      properties:
        agreed:
          type: boolean
        displayName:
          type: string
          nullable: true
          description: user の表示名。同意未済ユーザーでは返さない
        avatarUrl:
          type: string
          nullable: true
        prefecture:
          type: string
          nullable: true
        city:
          type: string
          nullable: true
        skills:
          type: array
          items:
            $ref: '#/components/schemas/Models.UserSkill'
        skillIds:
          type: array
          items:
            type: string
          nullable: true
        gender:
          type: string
          nullable: true
        selfPr:
          type: string
          nullable: true
        transport:
          type: array
          items:
            type: string
          nullable: true
        experiences:
          type: array
          items:
            $ref: '#/components/schemas/Models.UserExperience'
        licenses:
          type: array
          items:
            type: string
          nullable: true
        workStyles:
          type: array
          items:
            type: string
          nullable: true
        lastSignInTime:
          type: string
          format: date-time
          nullable: true
        rating:
          type: number
          format: float
          nullable: true
        completedWorksCount:
          type: integer
          format: int32
          nullable: true
      description: Workerレスポンスに同梱する user の最小情報
    Models.Webhook:
      type: object
      required:
        - webhookId
        - companyId
        - url
        - eventTypes
        - isActive
        - createdAt
        - updatedAt
      properties:
        webhookId:
          type: string
        companyId:
          type: string
        url:
          type: string
        eventTypes:
          type: array
          items:
            $ref: '#/components/schemas/Models.WebhookEventType'
          description: 購読するイベント種別
        description:
          type: string
          nullable: true
        isActive:
          type: boolean
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
      description: Webhook設定
    Models.WebhookEventType:
      type: string
      enum:
        - order.matched
        - order.reopened
        - work.done
        - work.approved
        - message.worker_sent
      description: Webhookイベント種別
    Models.Work:
      type: object
      required:
        - workId
        - orderId
        - customer
        - workType
        - status
        - goalSpot
      properties:
        workId:
          type: string
          description: 作業ID
        orderId:
          type: string
          description: 紐づくOrder ID
        companyId:
          type: string
          nullable: true
        workerId:
          type: string
          nullable: true
          description: 公開用の worker 識別子
        customer:
          type: string
        workType:
          allOf:
            - $ref: '#/components/schemas/Models.OrderType'
          description: 作業種別（Order種別と一致）
        status:
          allOf:
            - $ref: '#/components/schemas/Models.WorkStatus'
          description: 作業状態
        approvalStatus:
          allOf:
            - $ref: '#/components/schemas/Models.WorkApprovalStatus'
          nullable: true
          description: 納品審査状態
        distance:
          type: object
          allOf:
            - $ref: '#/components/schemas/Models.WorkDistance'
          nullable: true
        workflow:
          type: array
          items:
            $ref: '#/components/schemas/Models.WorkflowStep'
          nullable: true
          description: 作成時の format スナップショット（ワークフロー定義）
        pages:
          type: array
          items:
            $ref: '#/components/schemas/Models.FormPage'
          nullable: true
          description: 作成時の format スナップショット（画面遷移定義）
        processData:
          type: array
          items:
            $ref: '#/components/schemas/Models.ProcessDataItem'
          nullable: true
          description: 各フロー入力の生データ（スポワさんが入力した値をそのまま保持）
        goalResult:
          type: array
          items:
            $ref: '#/components/schemas/Models.GoalResultItem'
          nullable: true
          description: processData を正規化した提出結果。Work 承認の判定に使用する
        goalSpot:
          anyOf:
            - $ref: '#/components/schemas/Models.WorkGoalSpotCustomOrder'
            - $ref: '#/components/schemas/Models.WorkGoalSpotLookingForOrder'
        schedulingDate:
          type: string
          format: date-time
          nullable: true
        reWorkDeadline:
          type: string
          format: date-time
          nullable: true
        endedAt:
          type: string
          format: date-time
          nullable: true
        arrivalTime:
          type: string
          format: date-time
          nullable: true
        reviewingComment:
          type: string
          nullable: true
          description: 審査時コメント
        expenses:
          type: array
          items:
            $ref: '#/components/schemas/Models.WorkExpense'
      description: 実際にスポワさんが実行する作業単位
    Models.WorkApprovalStatus:
      type: string
      enum:
        - checking
        - approved
        - rejected
      description: 審査状態
    Models.WorkDecisionRequest:
      type: object
      properties:
        reviewingComment:
          type: string
          description: 審査時コメント
      description: Work 審査リクエスト
    Models.WorkDistance:
      type: object
      properties:
        myPosToGoal:
          type: number
          format: float
          nullable: true
          description: 現在地から目標地点までの距離（m）
      description: 距離情報
    Models.WorkExpense:
      type: object
      required:
        - expenseId
        - category
        - amount
        - approvalStatus
      properties:
        expenseId:
          type: string
          description: 経費申請ID
        category:
          type: string
          description: 経費カテゴリ
        amount:
          type: integer
          format: int32
          minimum: 0
          description: 申請金額（税込）
        approvalStatus:
          allOf:
            - $ref: '#/components/schemas/Models.ExpenseApprovalStatus'
          description: 承認状態
        receiptUrl:
          type: string
          nullable: true
      description: Workに紐づく経費申請
    Models.WorkGoalSpotBase:
      type: object
      required:
        - orderId
        - orderType
        - customer
      properties:
        orderId:
          type: string
        orderType:
          $ref: '#/components/schemas/Models.OrderType'
        name:
          type: string
        category:
          type: string
        customer:
          type: string
        customerName:
          type: string
          nullable: true
        formatId:
          type: string
        formatVersion:
          type: integer
          format: int32
          nullable: true
        price:
          type: number
          format: float
          nullable: true
        orderPrice:
          type: number
          format: float
          nullable: true
        description:
          type: string
          nullable: true
        notation:
          type: string
          nullable: true
        status:
          type: string
        createdAt:
          type: string
          format: date-time
          nullable: true
        deadline:
          type: string
          format: date-time
          nullable: true
      description: Work作成時点のOrder情報スナップショット（共通）
    Models.WorkGoalSpotCustomOrder:
      type: object
      required:
        - orderId
        - orderType
        - customer
      properties:
        orderId:
          type: string
        orderType:
          $ref: '#/components/schemas/Models.OrderType'
        name:
          type: string
        category:
          type: string
        customer:
          type: string
        customerName:
          type: string
          nullable: true
        formatId:
          type: string
        formatVersion:
          type: integer
          format: int32
          nullable: true
        price:
          type: number
          format: float
          nullable: true
        orderPrice:
          type: number
          format: float
          nullable: true
        description:
          type: string
          nullable: true
        notation:
          type: string
          nullable: true
        status:
          type: string
        createdAt:
          type: string
          format: date-time
          nullable: true
        deadline:
          type: string
          format: date-time
          nullable: true
        address:
          type: string
        inputAddress:
          type: string
          nullable: true
          description: customOrderの入力住所（spotId未指定時）
        lat:
          type: number
          format: float
          nullable: true
        lng:
          type: number
          format: float
          nullable: true
        geoHash:
          type: string
          nullable: true
        isNeededScheduling:
          type: boolean
          nullable: true
        requiredWorkTime:
          type: integer
          format: int32
          nullable: true
        canReserveHours:
          type: integer
          format: int32
          nullable: true
        maxDoneCount:
          type: integer
          format: int32
          nullable: true
        maxDoneCountStartDate:
          type: string
          format: date-time
          nullable: true
        hasSelection:
          type: boolean
          nullable: true
      description: Work作成時点のOrder情報スナップショット（customOrder）
    Models.WorkGoalSpotLookingForOrder:
      type: object
      required:
        - orderId
        - orderType
        - customer
      properties:
        orderId:
          type: string
        orderType:
          $ref: '#/components/schemas/Models.OrderType'
        name:
          type: string
        category:
          type: string
        customer:
          type: string
        customerName:
          type: string
          nullable: true
        formatId:
          type: string
        formatVersion:
          type: integer
          format: int32
          nullable: true
        price:
          type: number
          format: float
          nullable: true
        orderPrice:
          type: number
          format: float
          nullable: true
        description:
          type: string
          nullable: true
        notation:
          type: string
          nullable: true
        status:
          type: string
        createdAt:
          type: string
          format: date-time
          nullable: true
        deadline:
          type: string
          format: date-time
          nullable: true
        workArea:
          type: string
          nullable: true
        maxDelivery:
          type: integer
          format: int32
          nullable: true
        highestOrderPrice:
          type: number
          format: float
          nullable: true
      description: Work作成時点のOrder情報スナップショット（lookingForOrder）
    Models.WorkStatus:
      type: string
      enum:
        - doing
        - done
      description: 作業状態
    Models.Worker:
      type: object
      required:
        - workerId
        - isFavorite
        - isBlocked
      properties:
        workerId:
          type: string
          description: BUSINESS_RELATED_SPOWER を表す公開 worker 識別子
        spowerId:
          type: string
          description: スポワさんユーザーID（互換）
        nickName:
          type: string
          nullable: true
          description: 自由に設定できる呼称
        displayName:
          type: string
          description: スポワさん自身の表示名。company からは編集不可
        avatarUrl:
          type: string
          nullable: true
        banned:
          type: boolean
          nullable: true
        tags:
          type: array
          items:
            type: string
          description: 自由に設定できるタグ。重複不可、件数制限なし
        memo:
          type: string
          nullable: true
          description: 企業内メモ
        recentActivityAt:
          type: string
          format: date-time
          nullable: true
          description: Work 作成時・提出時に更新される直近アクティビティ日時
        recentWorkName:
          type: string
          nullable: true
          description: 直近アクティビティの案件名
        isFavorite:
          type: boolean
        isBlocked:
          type: boolean
      description: BUSINESS_RELATED_SPOWER を基準に取得する連携スポワさん
    Models.WorkerDetail:
      type: object
      properties:
        user:
          $ref: '#/components/schemas/Models.UserSummary'
      allOf:
        - $ref: '#/components/schemas/Models.Worker'
      description: worker 詳細
    Models.WorkerRegisterRequest:
      type: object
      required:
        - email
      properties:
        email:
          type: string
          format: email
        spowerId:
          type: string
      description: スポワさん登録リクエスト
    Models.WorkerReview:
      type: object
      required:
        - reviewId
        - companyId
        - workId
        - workerId
        - overallRating
        - createdAt
      properties:
        reviewId:
          type: string
          description: REVIEW_OF_SPOWER のドキュメントID
        companyId:
          type: string
        workId:
          type: string
        orderId:
          type: string
          nullable: true
        workerId:
          type: string
        spowerName:
          type: string
          nullable: true
        workTags:
          type: array
          items:
            type: string
          nullable: true
        spowerTags:
          type: array
          items:
            type: string
          nullable: true
        overallRating:
          type: integer
          format: int32
          minimum: 1
          maximum: 5
        comment:
          type: string
          nullable: true
        work:
          type: object
          allOf:
            - $ref: '#/components/schemas/Models.ReviewWorkSummary'
          nullable: true
        createdAt:
          type: string
          format: date-time
      description: 自社がワーカーへ送ったレビュー
    Models.WorkerWorkHistoryItem:
      type: object
      required:
        - matchingHistoryId
        - orderId
        - workerId
      properties:
        matchingHistoryId:
          type: string
          description: MATCHING_HISTORY のドキュメントID
        workId:
          type: string
          nullable: true
          description: WORK のドキュメントID。通常は matchingHistoryId と同一
        orderId:
          type: string
        workName:
          type: string
          nullable: true
        workerId:
          type: string
          description: 公開用の worker 識別子
        formatId:
          type: string
          nullable: true
        formatType:
          type: string
          nullable: true
        workType:
          type: string
          nullable: true
        status:
          type: string
          nullable: true
          description: MATCHING_HISTORY.status
        spotId:
          type: string
          nullable: true
        address:
          type: string
          nullable: true
        workArea:
          type: string
          nullable: true
        matchedAt:
          type: string
          format: date-time
          nullable: true
          description: マッチング日時。MATCHING_HISTORY.matchedAt または createdAt
        workedAt:
          type: string
          format: date-time
          nullable: true
          description: 作業完了日時。未完了の場合は null
        createdAt:
          type: string
          format: date-time
          nullable: true
        endedAt:
          type: string
          format: date-time
          nullable: true
        approvalStatus:
          type: string
          nullable: true
      description: 作業履歴アイテム
    Models.WorkflowCheckboxData:
      type: object
      required:
        - hasEtc
        - options
      properties:
        about:
          type: string
          nullable: true
        hasEtc:
          type: boolean
          description: 「その他」選択肢の有無
        options:
          type: array
          items:
            $ref: '#/components/schemas/Models.WorkflowOption'
      description: 'ワークフロー: 複数選択'
    Models.WorkflowCheckboxDataInput:
      type: object
      required:
        - hasEtc
        - options
      properties:
        about:
          type: string
          nullable: true
        hasEtc:
          type: boolean
          description: 「その他」選択肢の有無
        options:
          type: array
          items:
            $ref: '#/components/schemas/Models.WorkflowOptionInput'
      description: 'ワークフロー: 複数選択（作成/更新入力）'
    Models.WorkflowDescriptionData:
      type: object
      required:
        - description
        - imageUrls
      properties:
        description:
          type: string
        imageUrls:
          type: array
          items:
            type: string
      description: 'ワークフロー: 説明要素'
    Models.WorkflowFileData:
      type: object
      required:
        - path
        - fileType
      properties:
        about:
          type: string
          nullable: true
        path:
          type: string
        fileType:
          $ref: '#/components/schemas/Models.FileType'
      description: 'ワークフロー: ファイルアップロード'
    Models.WorkflowImageData:
      type: object
      required:
        - images
        - canAddImageFromUser
      properties:
        about:
          type: string
          nullable: true
        images:
          type: array
          items:
            $ref: '#/components/schemas/Models.WorkflowImageItem'
        canAddImageFromUser:
          type: boolean
          description: スポワさんが写真を追加できるか
        imageAddPath:
          type: string
          nullable: true
      description: 'ワークフロー: 画像撮影'
    Models.WorkflowImageDataInput:
      type: object
      required:
        - images
        - canAddImageFromUser
      properties:
        about:
          type: string
          nullable: true
        images:
          type: array
          items:
            $ref: '#/components/schemas/Models.WorkflowImageItemInput'
        canAddImageFromUser:
          type: boolean
          description: スポワさんが写真を追加できるか
        imageAddPath:
          type: string
          nullable: true
      description: 'ワークフロー: 画像撮影（作成/更新入力）'
    Models.WorkflowImageItem:
      type: object
      required:
        - imageId
        - title
        - path
        - photoUrl
        - index
        - shouldFill
      properties:
        imageId:
          anyOf:
            - type: string
            - type: integer
        title:
          type: string
        path:
          type: string
        photoUrl:
          type: string
        index:
          type: integer
          format: int32
        shouldFill:
          type: boolean
      description: 'ワークフロー: 画像アイテム定義'
    Models.WorkflowImageItemInput:
      type: object
      required:
        - title
        - path
        - photoUrl
        - index
        - shouldFill
      properties:
        imageId:
          anyOf:
            - type: string
            - type: integer
          description: 入力時は不要。指定されてもサーバー側で再生成する
        title:
          type: string
        path:
          type: string
        photoUrl:
          type: string
        index:
          type: integer
          format: int32
        shouldFill:
          type: boolean
      description: 'ワークフロー: 画像アイテム定義（作成/更新入力）'
    Models.WorkflowOption:
      type: object
      required:
        - optionId
        - value
      properties:
        optionId:
          anyOf:
            - type: string
            - type: integer
        value:
          type: string
      description: ワークフロー選択肢
    Models.WorkflowOptionInput:
      type: object
      required:
        - value
      properties:
        optionId:
          anyOf:
            - type: string
            - type: integer
          description: 入力時は不要。conditions で参照する場合だけ一時IDとして指定でき、保存時はサーバー側で再生成する
        value:
          type: string
      description: ワークフロー選択肢（作成/更新入力）
    Models.WorkflowRadioData:
      type: object
      required:
        - hasEtc
        - options
        - hasCondition
      properties:
        about:
          type: string
          nullable: true
        hasEtc:
          type: boolean
          description: 「その他」選択肢の有無
        options:
          type: array
          items:
            $ref: '#/components/schemas/Models.WorkflowOption'
        hasCondition:
          type: boolean
        conditions:
          type: object
          additionalProperties:
            type: integer
            nullable: true
          description: '{ [optionId]: 遷移先ページ番号 | null } の map'
      description: 'ワークフロー: 単一選択'
    Models.WorkflowRadioDataInput:
      type: object
      required:
        - hasEtc
        - options
        - hasCondition
      properties:
        about:
          type: string
          nullable: true
        hasEtc:
          type: boolean
          description: 「その他」選択肢の有無
        options:
          type: array
          items:
            $ref: '#/components/schemas/Models.WorkflowOptionInput'
        hasCondition:
          type: boolean
        conditions:
          type: object
          additionalProperties:
            type: integer
            nullable: true
          description: '{ [入力時の optionId]: 遷移先ページ番号 | null } の map。保存時は再生成後の optionId に置換される'
      description: 'ワークフロー: 単一選択（作成/更新入力）'
    Models.WorkflowStep:
      type: object
      required:
        - elementId
        - type
        - title
        - page
        - index
        - shouldFill
      properties:
        elementId:
          anyOf:
            - type: string
            - type: integer
          description: workflow 要素ID。ページ遷移条件や Order.ngList の参照先になる
        formatId:
          type: string
        type:
          $ref: '#/components/schemas/Models.WorkflowType'
        title:
          type: string
        page:
          type: integer
          format: int32
          description: 属するページ番号。pages.page と対応する
        index:
          type: integer
          format: int32
          description: 同一ページ内の表示順
        shouldFill:
          type: boolean
          description: スポワさんの入力必須項目か
        editedAt:
          type: string
          format: date-time
          nullable: true
        data:
          nullable: true
          description: type 別のワークフロー設定。description だけのページは業務画面で保存不可
      description: ワークフローステップ
    Models.WorkflowStepInput:
      type: object
      required:
        - type
        - title
        - page
        - index
        - shouldFill
      properties:
        elementId:
          anyOf:
            - type: string
            - type: integer
          description: 入力時は不要。pages.conditionElementId で参照する場合だけ一時IDとして指定でき、保存時はサーバー側で再生成する
        formatId:
          type: string
        type:
          $ref: '#/components/schemas/Models.WorkflowType'
        title:
          type: string
        page:
          type: integer
          format: int32
        index:
          type: integer
          format: int32
        shouldFill:
          type: boolean
        editedAt:
          type: string
          format: date-time
          nullable: true
        data:
          anyOf:
            - type: object
              allOf:
                - $ref: '#/components/schemas/Models.WorkflowDescriptionData'
              nullable: true
            - type: object
              allOf:
                - $ref: '#/components/schemas/Models.WorkflowTextFieldData'
              nullable: true
            - type: object
              allOf:
                - $ref: '#/components/schemas/Models.WorkflowTextAreaData'
              nullable: true
            - type: object
              allOf:
                - $ref: '#/components/schemas/Models.WorkflowCheckboxDataInput'
              nullable: true
            - type: object
              allOf:
                - $ref: '#/components/schemas/Models.WorkflowRadioDataInput'
              nullable: true
            - type: object
              allOf:
                - $ref: '#/components/schemas/Models.WorkflowImageDataInput'
              nullable: true
            - type: object
              allOf:
                - $ref: '#/components/schemas/Models.WorkflowFileData'
              nullable: true
          description: type 別のワークフロー設定
      description: ワークフローステップ（作成/更新入力）
    Models.WorkflowTextAreaData:
      type: object
      properties:
        about:
          type: string
          nullable: true
      description: 'ワークフロー: 長文入力'
    Models.WorkflowTextFieldData:
      type: object
      required:
        - hasDuplicationCheck
        - hasNgListCheck
      properties:
        about:
          type: string
          nullable: true
        hasDuplicationCheck:
          type: boolean
          description: 同じ依頼内での重複入力を禁止するか
        hasNgListCheck:
          type: boolean
          description: TEXT_FIELD_NG_LIST と連携して NG ワードチェックを行うか
      description: 'ワークフロー: 短文入力'
    Models.WorkflowType:
      type: string
      enum:
        - description
        - textField
        - textArea
        - checkbox
        - radio
        - image
        - file
      description: ワークフロー要素タイプ
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: X-Api-Key
servers:
  - url: https://spotwork-open-api-portal.spotwork.biz/v1
    description: Mock
    variables: {}
