openapi: 3.0.4
info:
  title: CS Producer
  description: Manage flow of work through a production facility and get reports.
  version: v1.0
  contact:
    name: Engineering Technology Support
    url: https://www.strongtie.com/
    email: engrtechsupport@strongtie.com
servers:
  - url: https://api.scheduler.strongtie.io
paths:
  /api/cards:
    get:
      tags:
        - Cards
      summary: Gets the list of card.
      operationId: GetCards
      responses:
        '200':
          description: Returns the list of cards.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: >-
                    #/components/schemas/ProductionSchedulerServer.Application.Features.Cards.Queries.GetCards.CardListResponse
        '404':
          description: If the list of cards is not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
        '500':
          description: If there was an internal server error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
  /api/cards/{id}:
    put:
      tags:
        - Cards
      summary: Updates a card by id.
      operationId: UpdateCard
      parameters:
        - name: id
          in: path
          description: The ID of the card to update.
          required: true
          schema:
            type: integer
      requestBody:
        description: The updated card dto.
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/ProductionSchedulerServer.Application.Features.Cards.Commands.UpdateCard.UpdateCardRequest
        required: true
      responses:
        '200':
          description: Returns the updated card.
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/ProductionSchedulerServer.Application.Features.Cards.Commands.UpdateCard.UpdateCardResponse
        '400':
          description: If the request is invalid.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
        '404':
          description: If the card is not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
        '500':
          description: If there was an internal server error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
    get:
      tags:
        - Cards
      summary: Gets a card by its ID.
      operationId: GetCardById
      parameters:
        - name: id
          in: path
          description: The ID of the card.
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: Returns the card with the specified ID.
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/ProductionSchedulerServer.Application.Features.Cards.Queries.GetCardDetail.CardDetailResponse
        '400':
          description: If the request is invalid.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
        '404':
          description: If the card is not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
        '500':
          description: If there was an internal server error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
    delete:
      tags:
        - Cards
      summary: Deletes a card by its ID.
      operationId: DeleteCard
      parameters:
        - name: id
          in: path
          description: The ID of the card to delete.
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: OK
          content:
            application/json: {}
        '204':
          description: Returns a response indicating the success of the deletion.
        '404':
          description: If the card is not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
        '500':
          description: If there was an internal server error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
  /api/cards/{id}/status:
    patch:
      tags:
        - Cards
      summary: Updates card status by id.
      operationId: UpdateCardStatus
      parameters:
        - name: id
          in: path
          description: The ID of the card to update status.
          required: true
          schema:
            type: integer
      requestBody:
        description: The updated card request
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/ProductionSchedulerServer.Application.Features.Cards.Commands.PatchCard.PatchCardRequest
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json: {}
        '204':
          description: Returns a response indicating the success of the update
        '400':
          description: If the request is invalid.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
        '404':
          description: If the card is not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
        '500':
          description: If there was an internal server error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
  /api/cards/{id}/order:
    patch:
      tags:
        - Cards
      summary: Updates card order by id.
      operationId: UpdateCardOrder
      parameters:
        - name: id
          in: path
          description: The ID of the card to update order.
          required: true
          schema:
            type: integer
      requestBody:
        description: Card order update request
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/ProductionSchedulerServer.Application.Features.Cards.Commands.PatchCard.UpdateCardOrderRequest
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json: {}
        '204':
          description: Returns a response indicating the success of the update
        '400':
          description: If the request is invalid.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
        '404':
          description: If the card is not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
        '409':
          description: If there was a conflict with a change made by another user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
        '500':
          description: If there was an internal server error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
  /api/cards/{id}/assigned-station:
    patch:
      tags:
        - Cards
      summary: Updates the assigned station of a card.
      operationId: UpdateCardAssignedStation
      parameters:
        - name: id
          in: path
          description: The unique identifier of the card to be updated.
          required: true
          schema:
            type: integer
      requestBody:
        description: The command containing the details for the update.
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/ProductionSchedulerServer.Application.Features.Cards.Commands.PatchCard.PatchCardAssignedStationCommand
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json: {}
        '204':
          description: Indicates that the assigned station was successfully updated.
        '400':
          description: If the request is invalid.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
        '404':
          description: If the card with the specified ID was not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
        '409':
          description: If there was a conflict with a change made by another user.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
        '500':
          description: If there was an internal server error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
  /api/cards-by-station/{stationId}:
    get:
      tags:
        - Cards
      summary: Retrieves a list of cards associated with a specific station ID.
      operationId: GetCardsByStation
      parameters:
        - name: stationId
          in: path
          description: >-
            The identifier of the station for which the cards are to be
            retrieved.
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Returns the list of cards associated with the specified station ID.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: >-
                    #/components/schemas/ProductionSchedulerServer.Application.Features.Cards.Queries.GetCardsByStation.CardByStationListResponse
        '400':
          description: If the request parameters are invalid.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
        '500':
          description: If there is an internal server error while processing the request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
  /api/status-by-ppg/{ppgId}:
    get:
      tags:
        - Cards
      summary: >-
        Retrieves a list of status DTOs for cards associated with a specific
        producer production group.
      operationId: GetStatusByPpg
      parameters:
        - name: ppgId
          in: path
          description: >-
            The identifier of the producer production group for which the
            statuses are to be retrieved.
          required: true
          schema:
            type: string
      responses:
        '200':
          description: >-
            Returns the list of status DTOs associated with the specified
            producer production group.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: >-
                    #/components/schemas/ProductionSchedulerServer.Application.Features.Cards.Queries.GetStatusByPpgForCards.StatusResponse
        '400':
          description: If the request parameters are invalid.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
        '500':
          description: If there is an internal server error while processing the request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
  /api/cards/completed-for-current-shift:
    get:
      tags:
        - Cards
      summary: Retrieves the list of completed cards for the current shift.
      operationId: GetCompletedCardsForCurrentShift
      responses:
        '200':
          description: Returns the list of completed cards.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: >-
                    #/components/schemas/ProductionSchedulerServer.Application.Features.Cards.Queries.GetCompletedCardsForShift.CompletedCardResponse
        '400':
          description: If the request is invalid.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
        '500':
          description: If there was an internal server error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
  /api/cards/completed-for-previous-shift:
    get:
      tags:
        - Cards
      summary: Retrieves the list of completed cards for the previous shift.
      operationId: GetCompletedCardsForPreviousShift
      responses:
        '200':
          description: Returns the list of completed cards.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: >-
                    #/components/schemas/ProductionSchedulerServer.Application.Features.Cards.Queries.GetCompletedCardsForShift.CompletedCardResponse
        '400':
          description: If the request is invalid.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
        '500':
          description: If there was an internal server error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
  /api/cards-by-project/{projectId}:
    get:
      tags:
        - Cards
      summary: Retrieves a list of cards associated with a specific project ID.
      operationId: GetCardsByProject
      parameters:
        - name: projectId
          in: path
          description: >-
            The identifier of the project for which the cards are to be
            retrieved.
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Returns the list of cards associated with the specified project ID.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: >-
                    #/components/schemas/ProductionSchedulerServer.Application.Features.Cards.Queries.GetCardsByProject.CardByProjectResponse
        '400':
          description: If the request parameters are invalid.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
        '500':
          description: If there is an internal server error while processing the request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
  /api/cards-by-stationtype-ppg:
    get:
      tags:
        - Cards
      summary: >-
        Retrieves a list of cards filtered by area type and producer production
        group ID.
      operationId: GetCardsByStationTypeAndPpg
      parameters:
        - name: stationTypeId
          in: query
          description: The station type identifier used to filter cards.
          required: true
          schema:
            type: integer
            format: int32
        - name: ppgId
          in: query
          description: >-
            The identifier of the producer production group for which the cards
            are to be retrieved.
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Returns the list of cards for the specified station type and PPG.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: >-
                    #/components/schemas/ProductionSchedulerServer.Application.Features.Cards.Queries.GetCardsByProject.CardByProjectResponse
        '400':
          description: If the request parameters are invalid.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
        '500':
          description: If there is an internal server error while processing the request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
  /api/cards-by-last-sync-date:
    get:
      tags:
        - Cards
      summary: Retrieves a list of cards from the last performed sync date.
      operationId: GetCardsByLastSyncDate
      responses:
        '200':
          description: Returns the list of cards associated with the specified project ID.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: >-
                    #/components/schemas/ProductionSchedulerServer.Application.Features.Cards.Queries.GetCardsByProject.CardByProjectResponse
        '400':
          description: If the request parameters are invalid.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
        '500':
          description: If there is an internal server error while processing the request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
  /company/{facilityId}/api/cards:
    get:
      tags:
        - Cards
      summary: Gets the list of card.
      operationId: GetCardsWithFacility
      parameters:
        - name: facilityId
          in: path
          description: The facility identifier.
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Returns the list of cards.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: >-
                    #/components/schemas/ProductionSchedulerServer.Application.Features.Cards.Queries.GetCards.CardListResponse
        '404':
          description: If the list of cards is not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
        '500':
          description: If there was an internal server error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
  /company/{facilityId}/api/cards/{id}:
    put:
      tags:
        - Cards
      summary: Updates a card by id.
      operationId: UpdateCardWithFacility
      parameters:
        - name: id
          in: path
          description: The ID of the card to update.
          required: true
          schema:
            type: integer
        - name: facilityId
          in: path
          description: The facility identifier.
          required: true
          schema:
            type: string
      requestBody:
        description: The updated card dto.
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/ProductionSchedulerServer.Application.Features.Cards.Commands.UpdateCard.UpdateCardRequest
        required: true
      responses:
        '200':
          description: Returns the updated card.
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/ProductionSchedulerServer.Application.Features.Cards.Commands.UpdateCard.UpdateCardResponse
        '400':
          description: If the request is invalid.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
        '404':
          description: If the card is not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
        '500':
          description: If there was an internal server error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
    get:
      tags:
        - Cards
      summary: Gets a card by its ID.
      operationId: GetCardByIdWithFacility
      parameters:
        - name: id
          in: path
          description: The ID of the card.
          required: true
          schema:
            type: integer
        - name: facilityId
          in: path
          description: The facility identifier.
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Returns the card with the specified ID.
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/ProductionSchedulerServer.Application.Features.Cards.Queries.GetCardDetail.CardDetailResponse
        '400':
          description: If the request is invalid.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
        '404':
          description: If the card is not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
        '500':
          description: If there was an internal server error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
    delete:
      tags:
        - Cards
      summary: Deletes a card by its ID.
      operationId: DeleteCardWithFacility
      parameters:
        - name: id
          in: path
          description: The ID of the card to delete.
          required: true
          schema:
            type: integer
        - name: facilityId
          in: path
          description: The facility identifier.
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json: {}
        '204':
          description: Returns a response indicating the success of the deletion.
        '404':
          description: If the card is not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
        '500':
          description: If there was an internal server error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
  /company/{facilityId}/api/cards/{id}/status:
    patch:
      tags:
        - Cards
      summary: Updates card status by id.
      operationId: UpdateCardStatusWithFacility
      parameters:
        - name: id
          in: path
          description: The ID of the card to update status.
          required: true
          schema:
            type: integer
        - name: facilityId
          in: path
          description: The facility identifier.
          required: true
          schema:
            type: string
      requestBody:
        description: The updated card request
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/ProductionSchedulerServer.Application.Features.Cards.Commands.PatchCard.PatchCardRequest
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json: {}
        '204':
          description: Returns a response indicating the success of the update
        '400':
          description: If the request is invalid.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
        '404':
          description: If the card is not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
        '500':
          description: If there was an internal server error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
  /company/{facilityId}/api/cards/{id}/order:
    patch:
      tags:
        - Cards
      summary: Updates card order by id.
      operationId: UpdateCardOrderWithFacility
      parameters:
        - name: id
          in: path
          description: The ID of the card to update order.
          required: true
          schema:
            type: integer
        - name: facilityId
          in: path
          description: The facility identifier.
          required: true
          schema:
            type: string
      requestBody:
        description: Card order update request
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/ProductionSchedulerServer.Application.Features.Cards.Commands.PatchCard.UpdateCardOrderRequest
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json: {}
        '204':
          description: Returns a response indicating the success of the update
        '400':
          description: If the request is invalid.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
        '404':
          description: If the card is not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
        '409':
          description: If there was a conflict with a change made by another user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
        '500':
          description: If there was an internal server error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
  /company/{facilityId}/api/cards/{id}/assigned-station:
    patch:
      tags:
        - Cards
      summary: Updates the assigned station of a card.
      operationId: UpdateCardAssignedStationWithFacility
      parameters:
        - name: id
          in: path
          description: The unique identifier of the card to be updated.
          required: true
          schema:
            type: integer
        - name: facilityId
          in: path
          description: The facility identifier.
          required: true
          schema:
            type: string
      requestBody:
        description: The command containing the details for the update.
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/ProductionSchedulerServer.Application.Features.Cards.Commands.PatchCard.PatchCardAssignedStationCommand
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json: {}
        '204':
          description: Indicates that the assigned station was successfully updated.
        '400':
          description: If the request is invalid.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
        '404':
          description: If the card with the specified ID was not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
        '409':
          description: If there was a conflict with a change made by another user.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
        '500':
          description: If there was an internal server error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
  /company/{facilityId}/api/cards-by-station/{stationId}:
    get:
      tags:
        - Cards
      summary: Retrieves a list of cards associated with a specific station ID.
      operationId: GetCardsByStationWithFacility
      parameters:
        - name: stationId
          in: path
          description: >-
            The identifier of the station for which the cards are to be
            retrieved.
          required: true
          schema:
            type: string
        - name: facilityId
          in: path
          description: The facility identifier.
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Returns the list of cards associated with the specified station ID.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: >-
                    #/components/schemas/ProductionSchedulerServer.Application.Features.Cards.Queries.GetCardsByStation.CardByStationListResponse
        '400':
          description: If the request parameters are invalid.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
        '500':
          description: If there is an internal server error while processing the request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
  /company/{facilityId}/api/status-by-ppg/{ppgId}:
    get:
      tags:
        - Cards
      summary: >-
        Retrieves a list of status DTOs for cards associated with a specific
        producer production group.
      operationId: GetStatusByPpgWithFacility
      parameters:
        - name: ppgId
          in: path
          description: >-
            The identifier of the producer production group for which the
            statuses are to be retrieved.
          required: true
          schema:
            type: string
        - name: facilityId
          in: path
          description: The facility identifier.
          required: true
          schema:
            type: string
      responses:
        '200':
          description: >-
            Returns the list of status DTOs associated with the specified
            producer production group.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: >-
                    #/components/schemas/ProductionSchedulerServer.Application.Features.Cards.Queries.GetStatusByPpgForCards.StatusResponse
        '400':
          description: If the request parameters are invalid.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
        '500':
          description: If there is an internal server error while processing the request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
  /company/{facilityId}/api/cards/completed-for-current-shift:
    get:
      tags:
        - Cards
      summary: Retrieves the list of completed cards for the current shift.
      operationId: GetCompletedCardsForCurrentShiftWithFacility
      parameters:
        - name: facilityId
          in: path
          description: The facility identifier.
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Returns the list of completed cards.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: >-
                    #/components/schemas/ProductionSchedulerServer.Application.Features.Cards.Queries.GetCompletedCardsForShift.CompletedCardResponse
        '400':
          description: If the request is invalid.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
        '500':
          description: If there was an internal server error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
  /company/{facilityId}/api/cards/completed-for-previous-shift:
    get:
      tags:
        - Cards
      summary: Retrieves the list of completed cards for the previous shift.
      operationId: GetCompletedCardsForPreviousShiftWithFacility
      parameters:
        - name: facilityId
          in: path
          description: The facility identifier.
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Returns the list of completed cards.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: >-
                    #/components/schemas/ProductionSchedulerServer.Application.Features.Cards.Queries.GetCompletedCardsForShift.CompletedCardResponse
        '400':
          description: If the request is invalid.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
        '500':
          description: If there was an internal server error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
  /company/{facilityId}/api/cards-by-project/{projectId}:
    get:
      tags:
        - Cards
      summary: Retrieves a list of cards associated with a specific project ID.
      operationId: GetCardsByProjectWithFacility
      parameters:
        - name: projectId
          in: path
          description: >-
            The identifier of the project for which the cards are to be
            retrieved.
          required: true
          schema:
            type: string
            format: uuid
        - name: facilityId
          in: path
          description: The facility identifier.
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Returns the list of cards associated with the specified project ID.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: >-
                    #/components/schemas/ProductionSchedulerServer.Application.Features.Cards.Queries.GetCardsByProject.CardByProjectResponse
        '400':
          description: If the request parameters are invalid.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
        '500':
          description: If there is an internal server error while processing the request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
  /company/{facilityId}/api/cards-by-stationtype-ppg:
    get:
      tags:
        - Cards
      summary: >-
        Retrieves a list of cards filtered by area type and producer production
        group ID.
      operationId: GetCardsByStationTypeAndPpgWithFacility
      parameters:
        - name: stationTypeId
          in: query
          description: The station type identifier used to filter cards.
          required: true
          schema:
            type: integer
            format: int32
        - name: ppgId
          in: query
          description: >-
            The identifier of the producer production group for which the cards
            are to be retrieved.
          required: true
          schema:
            type: string
        - name: facilityId
          in: path
          description: The facility identifier.
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Returns the list of cards for the specified station type and PPG.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: >-
                    #/components/schemas/ProductionSchedulerServer.Application.Features.Cards.Queries.GetCardsByProject.CardByProjectResponse
        '400':
          description: If the request parameters are invalid.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
        '500':
          description: If there is an internal server error while processing the request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
  /company/{facilityId}/api/cards-by-last-sync-date:
    get:
      tags:
        - Cards
      summary: Retrieves a list of cards from the last performed sync date.
      operationId: GetCardsByLastSyncDateWithFacility
      parameters:
        - name: facilityId
          in: path
          description: The facility identifier.
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Returns the list of cards associated with the specified project ID.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: >-
                    #/components/schemas/ProductionSchedulerServer.Application.Features.Cards.Queries.GetCardsByProject.CardByProjectResponse
        '400':
          description: If the request parameters are invalid.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
        '500':
          description: If there is an internal server error while processing the request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
  /api/producer-production-groups:
    post:
      tags:
        - ProducerProductionGroups
      summary: Creates a new producer production group.
      operationId: CreateProducerProductionGroup
      requestBody:
        description: The command to create the producer production group.
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/ProductionSchedulerServer.Application.Features.ProducerProductionGroups.Commands.CreateProducerProductionGroup.CreatePpgRequest
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json: {}
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/ProductionSchedulerServer.Application.Features.ProducerProductionGroups.Commands.CreateProducerProductionGroup.CreatePpgResponse
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
    get:
      tags:
        - ProducerProductionGroups
      summary: Gets the list of producer production groups.
      operationId: GetProducerProductionGroups
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: >-
                    #/components/schemas/ProductionSchedulerServer.Application.Features.ProducerProductionGroups.Queries.GetProducerProductionGroupDetail.PpgDetailResponse
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
  /api/producer-production-groups/{id}:
    get:
      tags:
        - ProducerProductionGroups
      summary: Gets a producer production group by its ID.
      operationId: GetProducerProductionGroupById
      parameters:
        - name: id
          in: path
          description: The ID of the producer production group.
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/ProductionSchedulerServer.Application.Features.ProducerProductionGroups.Queries.GetProducerProductionGroupDetail.PpgDetailResponse
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
    delete:
      tags:
        - ProducerProductionGroups
      summary: Deletes a producer production group by its ID.
      operationId: DeleteProducerProductionGroup
      parameters:
        - name: id
          in: path
          description: The ID of the producer production group to delete.
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: OK
          content:
            application/json: {}
        '204':
          description: No Content
          content:
            application/json:
              schema:
                type: boolean
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
  /api/producer-production-groups/{id}/due-date:
    patch:
      tags:
        - ProducerProductionGroups
      summary: Updates all due dates for producer production groups in a project.
      operationId: UpdateProducerProductionGroupDueDate
      parameters:
        - name: id
          in: path
          description: The ID of the producer production group.
          required: true
          schema:
            type: integer
      requestBody:
        description: The request to update ppg due date
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/ProductionSchedulerServer.Application.Features.ProducerProductionGroups.Commands.UpdateProducerProductionGroupDueDate.UpdatePpgDueDateRequest
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/ProductionSchedulerServer.Application.Features.ProducerProductionGroups.Commands.UpdateProducerProductionGroupDueDate.PatchPpgDueDateResponse
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
  /api/producer-production-groups/{id}/production-note:
    patch:
      tags:
        - ProducerProductionGroups
      summary: Updates the production note of a specified producer production group.
      operationId: UpdateProducerProductionGroupProductionNote
      parameters:
        - name: id
          in: path
          description: >-
            The unique identifier of the producer production group to be
            updated.
          required: true
          schema:
            type: integer
      requestBody:
        description: The object containing the updated production note information.
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/ProductionSchedulerServer.Application.Features.ProducerProductionGroups.Commands.UpdateProducerProductionGroupProductionNote.UpdatePpgProductionNoteRequest
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/ProductionSchedulerServer.Application.Features.ProducerProductionGroups.Commands.UpdateProducerProductionGroupDueDate.PatchPpgDueDateResponse
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
  /api/producer-production-groups-by-ids:
    post:
      tags:
        - ProducerProductionGroups
      summary: Gets all producer production groups by their IDs.
      operationId: GetProducerProductionGroupByIds
      requestBody:
        description: The Ids of the producer production groups.
        content:
          application/json:
            schema:
              type: array
              items:
                type: integer
                format: int32
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: >-
                    #/components/schemas/ProductionSchedulerServer.Application.Features.ProducerProductionGroups.Queries.GetProducerProductionGroupDetail.PpgDetailResponse
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
  /company/{facilityId}/api/producer-production-groups:
    post:
      tags:
        - ProducerProductionGroups
      summary: Creates a new producer production group.
      operationId: CreateProducerProductionGroupWithFacility
      parameters:
        - name: facilityId
          in: path
          description: The facility identifier.
          required: true
          schema:
            type: string
      requestBody:
        description: The command to create the producer production group.
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/ProductionSchedulerServer.Application.Features.ProducerProductionGroups.Commands.CreateProducerProductionGroup.CreatePpgRequest
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json: {}
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/ProductionSchedulerServer.Application.Features.ProducerProductionGroups.Commands.CreateProducerProductionGroup.CreatePpgResponse
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
    get:
      tags:
        - ProducerProductionGroups
      summary: Gets the list of producer production groups.
      operationId: GetProducerProductionGroupsWithFacility
      parameters:
        - name: facilityId
          in: path
          description: The facility identifier.
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: >-
                    #/components/schemas/ProductionSchedulerServer.Application.Features.ProducerProductionGroups.Queries.GetProducerProductionGroupDetail.PpgDetailResponse
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
  /company/{facilityId}/api/producer-production-groups/{id}:
    get:
      tags:
        - ProducerProductionGroups
      summary: Gets a producer production group by its ID.
      operationId: GetProducerProductionGroupByIdWithFacility
      parameters:
        - name: id
          in: path
          description: The ID of the producer production group.
          required: true
          schema:
            type: integer
        - name: facilityId
          in: path
          description: The facility identifier.
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/ProductionSchedulerServer.Application.Features.ProducerProductionGroups.Queries.GetProducerProductionGroupDetail.PpgDetailResponse
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
    delete:
      tags:
        - ProducerProductionGroups
      summary: Deletes a producer production group by its ID.
      operationId: DeleteProducerProductionGroupWithFacility
      parameters:
        - name: id
          in: path
          description: The ID of the producer production group to delete.
          required: true
          schema:
            type: integer
        - name: facilityId
          in: path
          description: The facility identifier.
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json: {}
        '204':
          description: No Content
          content:
            application/json:
              schema:
                type: boolean
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
  /company/{facilityId}/api/producer-production-groups/{id}/due-date:
    patch:
      tags:
        - ProducerProductionGroups
      summary: Updates all due dates for producer production groups in a project.
      operationId: UpdateProducerProductionGroupDueDateWithFacility
      parameters:
        - name: id
          in: path
          description: The ID of the producer production group.
          required: true
          schema:
            type: integer
        - name: facilityId
          in: path
          description: The facility identifier.
          required: true
          schema:
            type: string
      requestBody:
        description: The request to update ppg due date
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/ProductionSchedulerServer.Application.Features.ProducerProductionGroups.Commands.UpdateProducerProductionGroupDueDate.UpdatePpgDueDateRequest
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/ProductionSchedulerServer.Application.Features.ProducerProductionGroups.Commands.UpdateProducerProductionGroupDueDate.PatchPpgDueDateResponse
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
  /company/{facilityId}/api/producer-production-groups/{id}/production-note:
    patch:
      tags:
        - ProducerProductionGroups
      summary: Updates the production note of a specified producer production group.
      operationId: UpdateProducerProductionGroupProductionNoteWithFacility
      parameters:
        - name: id
          in: path
          description: >-
            The unique identifier of the producer production group to be
            updated.
          required: true
          schema:
            type: integer
        - name: facilityId
          in: path
          description: The facility identifier.
          required: true
          schema:
            type: string
      requestBody:
        description: The object containing the updated production note information.
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/ProductionSchedulerServer.Application.Features.ProducerProductionGroups.Commands.UpdateProducerProductionGroupProductionNote.UpdatePpgProductionNoteRequest
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/ProductionSchedulerServer.Application.Features.ProducerProductionGroups.Commands.UpdateProducerProductionGroupDueDate.PatchPpgDueDateResponse
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
  /company/{facilityId}/api/producer-production-groups-by-ids:
    post:
      tags:
        - ProducerProductionGroups
      summary: Gets all producer production groups by their IDs.
      operationId: GetProducerProductionGroupByIdsWithFacility
      parameters:
        - name: facilityId
          in: path
          description: The facility identifier.
          required: true
          schema:
            type: string
      requestBody:
        description: The Ids of the producer production groups.
        content:
          application/json:
            schema:
              type: array
              items:
                type: integer
                format: int32
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: >-
                    #/components/schemas/ProductionSchedulerServer.Application.Features.ProducerProductionGroups.Queries.GetProducerProductionGroupDetail.PpgDetailResponse
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
  /api/reports:
    post:
      tags:
        - Reports
      summary: Sends a Report file.
      operationId: SendReport
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: >-
                #/components/schemas/ProductionSchedulerServer.Application.Features.Reports.Commands.SendReportCommand.SendReportCommand
          application/x-www-form-urlencoded:
            schema:
              $ref: >-
                #/components/schemas/ProductionSchedulerServer.Application.Features.Reports.Commands.SendReportCommand.SendReportCommand
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json: {}
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/ProductionSchedulerServer.Application.Features.Reports.Commands.SendReportCommand.SendReportDto
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
  /api/reports-by-ppgId/{ppgId}:
    get:
      tags:
        - Reports
      summary: Retrieves the list of report paths by PPG ID.
      operationId: GetReportPathsByPpgId
      parameters:
        - name: ppgId
          in: path
          description: The PPG ID.
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: >-
                    #/components/schemas/ProductionSchedulerServer.Application.Features.Reports.Queries.GetReportPathsByPpgIdQuery.PpgReportPathDto
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
  /api/reports-by-id/{reportId}:
    get:
      tags:
        - Reports
      summary: Retrieves the report path by Report ID.
      operationId: GetReportPathById
      parameters:
        - name: reportId
          in: path
          description: The report ID.
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/ProductionSchedulerServer.Application.Features.Reports.Queries.GetReportPathByIdQuery.ReportPathDto
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
  /api/reports/telerik-report:
    get:
      tags:
        - Reports
      summary: Retrieves a list of Telerik reports.
      operationId: GetTelerikReports
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: >-
                    #/components/schemas/ProductionSchedulerServer.Application.Features.Reports.Queries.GetTelerikReportsQuery.GetTelerikReportsResponse
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
  /api/reports/production-reports:
    get:
      tags:
        - Reports
      summary: Retrieves a list of production reports.
      operationId: GetProductionReports
      parameters:
        - name: start
          in: query
          description: The start date in facility time.
          required: true
          schema:
            type: string
            format: date-time
        - name: end
          in: query
          description: The end date in facility time.
          required: true
          schema:
            type: string
            format: date-time
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/ProductionSchedulerServer.Application.Features.Reports.Queries.GetProductionReportsQuery.GetProductionReportsResponse
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
  /api/reports/production-summary:
    get:
      tags:
        - Reports
      summary: Retrieves a production summary.
      operationId: GetProductionSummary
      parameters:
        - name: start
          in: query
          description: The start date in facility time.
          required: true
          schema:
            type: string
            format: date-time
        - name: end
          in: query
          description: The end date in facility time.
          required: true
          schema:
            type: string
            format: date-time
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/ProductionSchedulerServer.Application.Features.Reports.Queries.GetProductionSummaryQuery.GetProductionSummaryResponse
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
  /api/reports/shift-reconciliation:
    get:
      tags:
        - Reports
      summary: Retrieves a shift reconciliation.
      operationId: GetShiftReconciliation
      parameters:
        - name: start
          in: query
          description: The start date in facility time.
          required: true
          schema:
            type: string
            format: date
        - name: end
          in: query
          description: The end date in facility time.
          required: true
          schema:
            type: string
            format: date
      responses:
        '200':
          description: The shift reconciliation was successfully retrieved.
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/ProductionSchedulerServer.Application.Features.Reports.Commands.GetShiftReconciliationCommand.GetShiftReconciliationResponse
        '500':
          description: An error occurred while retrieving the shift reconciliation.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
  /api/reports/cut-not-built:
    get:
      tags:
        - Reports
      summary: Retrieves a cut not built report.
      operationId: GetCutNotBuilt
      responses:
        '200':
          description: The report was successfully retrieved.
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/ProductionSchedulerServer.Application.Features.Reports.Queries.GetCutNotBuiltQuery.GetCutNotBuiltReportResponse
        '500':
          description: An error occurred while retrieving the report.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
  /company/{facilityId}/api/reports:
    post:
      tags:
        - Reports
      summary: Sends a Report file.
      operationId: SendReportWithFacility
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: >-
                #/components/schemas/ProductionSchedulerServer.Application.Features.Reports.Commands.SendReportCommand.SendReportCommand
          application/x-www-form-urlencoded:
            schema:
              $ref: >-
                #/components/schemas/ProductionSchedulerServer.Application.Features.Reports.Commands.SendReportCommand.SendReportCommand
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json: {}
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/ProductionSchedulerServer.Application.Features.Reports.Commands.SendReportCommand.SendReportDto
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
  /company/{facilityId}/api/reports-by-ppgId/{ppgId}:
    get:
      tags:
        - Reports
      summary: Retrieves the list of report paths by PPG ID.
      operationId: GetReportPathsByPpgIdWithFacility
      parameters:
        - name: ppgId
          in: path
          description: The PPG ID.
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: >-
                    #/components/schemas/ProductionSchedulerServer.Application.Features.Reports.Queries.GetReportPathsByPpgIdQuery.PpgReportPathDto
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
  /company/{facilityId}/api/reports-by-id/{reportId}:
    get:
      tags:
        - Reports
      summary: Retrieves the report path by Report ID.
      operationId: GetReportPathByIdWithFacility
      parameters:
        - name: reportId
          in: path
          description: The report ID.
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/ProductionSchedulerServer.Application.Features.Reports.Queries.GetReportPathByIdQuery.ReportPathDto
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
  /company/{facilityId}/api/reports/telerik-report:
    get:
      tags:
        - Reports
      summary: Retrieves a list of Telerik reports.
      operationId: GetTelerikReportsWithFacility
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: >-
                    #/components/schemas/ProductionSchedulerServer.Application.Features.Reports.Queries.GetTelerikReportsQuery.GetTelerikReportsResponse
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
  /company/{facilityId}/api/reports/production-reports:
    get:
      tags:
        - Reports
      summary: Retrieves a list of production reports.
      operationId: GetProductionReportsWithFacility
      parameters:
        - name: start
          in: query
          description: The start date in facility time.
          required: true
          schema:
            type: string
            format: date-time
        - name: end
          in: query
          description: The end date in facility time.
          required: true
          schema:
            type: string
            format: date-time
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/ProductionSchedulerServer.Application.Features.Reports.Queries.GetProductionReportsQuery.GetProductionReportsResponse
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
  /company/{facilityId}/api/reports/production-summary:
    get:
      tags:
        - Reports
      summary: Retrieves a production summary.
      operationId: GetProductionSummaryWithFacility
      parameters:
        - name: start
          in: query
          description: The start date in facility time.
          required: true
          schema:
            type: string
            format: date-time
        - name: end
          in: query
          description: The end date in facility time.
          required: true
          schema:
            type: string
            format: date-time
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/ProductionSchedulerServer.Application.Features.Reports.Queries.GetProductionSummaryQuery.GetProductionSummaryResponse
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
  /company/{facilityId}/api/reports/shift-reconciliation:
    get:
      tags:
        - Reports
      summary: Retrieves a shift reconciliation.
      operationId: GetShiftReconciliationWithFacility
      parameters:
        - name: start
          in: query
          description: The start date in facility time.
          required: true
          schema:
            type: string
            format: date
        - name: end
          in: query
          description: The end date in facility time.
          required: true
          schema:
            type: string
            format: date
      responses:
        '200':
          description: The shift reconciliation was successfully retrieved.
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/ProductionSchedulerServer.Application.Features.Reports.Commands.GetShiftReconciliationCommand.GetShiftReconciliationResponse
        '500':
          description: An error occurred while retrieving the shift reconciliation.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
  /company/{facilityId}/api/reports/cut-not-built:
    get:
      tags:
        - Reports
      summary: Retrieves a cut not built report.
      operationId: GetCutNotBuiltWithFacility
      responses:
        '200':
          description: The report was successfully retrieved.
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/ProductionSchedulerServer.Application.Features.Reports.Queries.GetCutNotBuiltQuery.GetCutNotBuiltReportResponse
        '500':
          description: An error occurred while retrieving the report.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
  /api/settings:
    put:
      tags:
        - Settings
      summary: Updates Producer setting.
      operationId: UpdateSettings
      requestBody:
        description: The command to create the producer production group.
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/ProductionSchedulerServer.Domain.Entities.Settings.UpdateSettingRequest
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json: {}
        '204':
          description: No Content
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
  /company/{facilityId}/api/settings:
    put:
      tags:
        - Settings
      summary: Updates Producer setting.
      operationId: UpdateSettingsWithFacility
      requestBody:
        description: The command to create the producer production group.
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/ProductionSchedulerServer.Domain.Entities.Settings.UpdateSettingRequest
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json: {}
        '204':
          description: No Content
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
  /api/shift-statistics/current:
    get:
      tags:
        - Shift Statistics
      summary: >-
        Retrieves production statistics for the current shift.

        If a stationId is provided, statistics are returned only for that
        station; otherwise, statistics for all stations are included.

        The backend determines the current active shift based on facility shift
        settings and returns its statistics.

        Only one shift's statistics are returned per request, including both
        current and target board feet metrics for each station.
      operationId: GetCurrentShiftStatistics
      parameters:
        - name: stationId
          in: query
          description: Optional station ID to filter statistics.
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/ProductionSchedulerServer.Application.Features.ShiftStatistics.Responses.ShiftStatisticsResponse
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
  /api/shift-statistics/previous:
    get:
      tags:
        - Shift Statistics
      summary: >-
        Retrieves production statistics for the previous shift.

        If a stationId is provided, statistics are returned only for that
        station; otherwise, statistics for all stations are included.

        The backend determines the previous shift based on facility shift
        settings and returns its statistics.

        Only one shift's statistics are returned per request, including both
        current and target board feet metrics for each station.
      operationId: GetPreviousShiftStatistics
      parameters:
        - name: stationId
          in: query
          description: Optional station ID to filter statistics.
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/ProductionSchedulerServer.Application.Features.ShiftStatistics.Responses.ShiftStatisticsResponse
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
  /company/{facilityId}/api/shift-statistics/current:
    get:
      tags:
        - Shift Statistics
      summary: >-
        Retrieves production statistics for the current shift.

        If a stationId is provided, statistics are returned only for that
        station; otherwise, statistics for all stations are included.

        The backend determines the current active shift based on facility shift
        settings and returns its statistics.

        Only one shift's statistics are returned per request, including both
        current and target board feet metrics for each station.
      operationId: GetCurrentShiftStatisticsWithFacility
      parameters:
        - name: stationId
          in: query
          description: Optional station ID to filter statistics.
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/ProductionSchedulerServer.Application.Features.ShiftStatistics.Responses.ShiftStatisticsResponse
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
  /company/{facilityId}/api/shift-statistics/previous:
    get:
      tags:
        - Shift Statistics
      summary: >-
        Retrieves production statistics for the previous shift.

        If a stationId is provided, statistics are returned only for that
        station; otherwise, statistics for all stations are included.

        The backend determines the previous shift based on facility shift
        settings and returns its statistics.

        Only one shift's statistics are returned per request, including both
        current and target board feet metrics for each station.
      operationId: GetPreviousShiftStatisticsWithFacility
      parameters:
        - name: stationId
          in: query
          description: Optional station ID to filter statistics.
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/ProductionSchedulerServer.Application.Features.ShiftStatistics.Responses.ShiftStatisticsResponse
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
  /api/stations/crew-size:
    post:
      tags:
        - Stations
      summary: >-
        Updates the crew size for a station and broadcasts the change via
        SignalR.
      operationId: UpdateStationCrewSize
      requestBody:
        description: The request containing area ID, station ID, and crew size.
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/ProductionSchedulerServer.Application.Features.Stations.Commands.UpdateStationCrewSize.UpdateStationCrewSizeRequest
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json: {}
        '204':
          description: Indicates that the crew size update was successfully broadcast.
        '400':
          description: If the request is invalid.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
        '401':
          description: If the user is not authorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
        '500':
          description: If there was an internal server error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
  /company/{facilityId}/api/stations/crew-size:
    post:
      tags:
        - Stations
      summary: >-
        Updates the crew size for a station and broadcasts the change via
        SignalR.
      operationId: UpdateStationCrewSizeWithFacility
      parameters:
        - name: facilityId
          in: path
          description: The facility identifier.
          required: true
          schema:
            type: string
      requestBody:
        description: The request containing area ID, station ID, and crew size.
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/ProductionSchedulerServer.Application.Features.Stations.Commands.UpdateStationCrewSize.UpdateStationCrewSizeRequest
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json: {}
        '204':
          description: Indicates that the crew size update was successfully broadcast.
        '400':
          description: If the request is invalid.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
        '401':
          description: If the user is not authorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
        '500':
          description: If there was an internal server error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
  /api/svgs:
    post:
      tags:
        - Svgs
      summary: Uploads an SVG file.
      operationId: UploadSvg
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: >-
                #/components/schemas/ProductionSchedulerServer.Application.Features.Svgs.Commands.UploadSvg.UploadSvgCommand
          application/x-www-form-urlencoded:
            schema:
              $ref: >-
                #/components/schemas/ProductionSchedulerServer.Application.Features.Svgs.Commands.UploadSvg.UploadSvgCommand
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json: {}
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/ProductionSchedulerServer.Application.Features.Svgs.Commands.UploadSvg.UploadSvgDto
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
  /api/svgs-by-ppgId/{ppgId}:
    get:
      tags:
        - Svgs
      summary: Retrieves SVG URLs by PPG ID.
      operationId: GetSvgUrlByPpgId
      parameters:
        - name: ppgId
          in: path
          description: The PPG ID for which to retrieve the SVG URLs.
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: >-
                    #/components/schemas/ProductionSchedulerServer.Application.Features.Svgs.Queries.GetSvgUrlByPpgId.SvgUrlByPpgDto
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
  /api/svgs-by-ppgId-componentId/{ppgId}/{componentId}:
    get:
      tags:
        - Svgs
      summary: Retrieves the SVG URL associated with a specific component ID.
      operationId: GetSvgUrlByPpgIdAndComponentId
      parameters:
        - name: ppgId
          in: path
          description: Producer Production Group Id
          required: true
          schema:
            type: integer
        - name: componentId
          in: path
          description: The unique identifier of the component.
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/ProductionSchedulerServer.Application.Features.Svgs.Queries.GetSvgUrlByPpgIdAndComponentId.SvgUrlResponse
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
  /company/{facilityId}/api/svgs:
    post:
      tags:
        - Svgs
      summary: Uploads an SVG file.
      operationId: UploadSvgWithFacility
      parameters:
        - name: facilityId
          in: path
          description: The facility identifier.
          required: true
          schema:
            type: string
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: >-
                #/components/schemas/ProductionSchedulerServer.Application.Features.Svgs.Commands.UploadSvg.UploadSvgCommand
          application/x-www-form-urlencoded:
            schema:
              $ref: >-
                #/components/schemas/ProductionSchedulerServer.Application.Features.Svgs.Commands.UploadSvg.UploadSvgCommand
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json: {}
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/ProductionSchedulerServer.Application.Features.Svgs.Commands.UploadSvg.UploadSvgDto
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
  /company/{facilityId}/api/svgs-by-ppgId/{ppgId}:
    get:
      tags:
        - Svgs
      summary: Retrieves SVG URLs by PPG ID.
      operationId: GetSvgUrlByPpgIdWithFacility
      parameters:
        - name: ppgId
          in: path
          description: The PPG ID for which to retrieve the SVG URLs.
          required: true
          schema:
            type: integer
        - name: facilityId
          in: path
          description: The facility identifier.
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: >-
                    #/components/schemas/ProductionSchedulerServer.Application.Features.Svgs.Queries.GetSvgUrlByPpgId.SvgUrlByPpgDto
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
  /company/{facilityId}/api/svgs-by-ppgId-componentId/{ppgId}/{componentId}:
    get:
      tags:
        - Svgs
      summary: Retrieves the SVG URL associated with a specific component ID.
      operationId: GetSvgUrlByPpgIdAndComponentIdWithFacility
      parameters:
        - name: ppgId
          in: path
          description: Producer Production Group Id
          required: true
          schema:
            type: integer
        - name: componentId
          in: path
          description: The unique identifier of the component.
          required: true
          schema:
            type: string
            format: uuid
        - name: facilityId
          in: path
          description: The facility identifier.
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/ProductionSchedulerServer.Application.Features.Svgs.Queries.GetSvgUrlByPpgIdAndComponentId.SvgUrlResponse
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Microsoft.AspNetCore.Mvc.ProblemDetails'
components:
  schemas:
    Microsoft.AspNetCore.Mvc.ProblemDetails:
      type: object
      properties:
        type:
          type: string
          nullable: true
        title:
          type: string
          nullable: true
        status:
          type: integer
          format: int32
          nullable: true
        detail:
          type: string
          nullable: true
        instance:
          type: string
          nullable: true
      additionalProperties: {}
    ProductionSchedulerServer.Application.Features.Cards.Commands.PatchCard.MoveToPosition:
      enum:
        - First
        - Last
        - Next
        - Previous
        - Specific
      type: string
      description: Enum for moving card order.
    ProductionSchedulerServer.Application.Features.Cards.Commands.PatchCard.PatchCardAssignedStationCommand:
      type: object
      properties:
        id:
          $ref: >-
            #/components/schemas/ProductionSchedulerServer.Domain.Entities.Cards.CardId
        stationId:
          $ref: >-
            #/components/schemas/ProductionSchedulerServer.Domain.Entities.StationId
      additionalProperties: false
      description: >-
        Represents a command to update the assigned station of a production
        card.

        The command includes the identifier of the card, the identifier of the
        station to assign,

        and the version of the card for concurrency control during updates.
    ProductionSchedulerServer.Application.Features.Cards.Commands.PatchCard.PatchCardRequest:
      type: object
      properties:
        action:
          $ref: >-
            #/components/schemas/ProductionSchedulerServer.Application.Features.Cards.Commands.UpdateAction
        crewSize:
          type: integer
          description: The crew size.
          format: int32
      additionalProperties: false
      description: The request to update a card partially.
    ProductionSchedulerServer.Application.Features.Cards.Commands.PatchCard.UpdateCardOrderRequest:
      type: object
      properties:
        moveToPosition:
          $ref: >-
            #/components/schemas/ProductionSchedulerServer.Application.Features.Cards.Commands.PatchCard.MoveToPosition
        specificPosition:
          type: integer
          description: |-
            Specific Position for the card. This is used only
            when MoveToPosition is set to Specific otherwise value is ignored.
          format: int32
      additionalProperties: false
      description: The request to update a card order.
    ProductionSchedulerServer.Application.Features.Cards.Commands.UpdateAction:
      enum:
        - Activate
        - Complete
        - Deactivate
        - ResetStatus
      type: string
      description: Update action for the card.
    ProductionSchedulerServer.Application.Features.Cards.Commands.UpdateCard.UpdateCardRequest:
      type: object
      properties:
        ppgId:
          $ref: >-
            #/components/schemas/ProductionSchedulerServer.Domain.Entities.ProducerProductionGroups.ProducerProductionGroupId
        label:
          type: string
          description: 'The label displayed as “PPG #” in the UI mockups.'
          nullable: true
        assignedStation:
          $ref: >-
            #/components/schemas/ProductionSchedulerServer.Domain.Entities.StationId
        order:
          type: integer
          description: The priority of the cards for each station.
          format: int32
        assignedSaw:
          type: string
          description: The assigned saw, used to display tags for each card.
          nullable: true
        assignedTable:
          type: string
          description: The assigned table, used to display tags for each card.
          nullable: true
        color:
          type: integer
          description: The color index into an array of colors.
          format: int32
        activatedDateTime:
          type: string
          description: The date and time when the card was activated.
          format: date-time
          nullable: true
        activatedByUser:
          type: string
          description: The user who activated the card.
          nullable: true
        completedDateTime:
          type: string
          description: The date and time when the card was completed.
          format: date-time
          nullable: true
        completedByUser:
          type: string
          description: The user who completed the card.
          nullable: true
        crewSize:
          type: integer
          description: The crew size.
          format: int32
          nullable: true
        createdDateTime:
          type: string
          description: The date and time when the card was created.
          format: date-time
        createdByUser:
          type: string
          description: The user who created the card.
          nullable: true
        bdft:
          type: number
          description: The board feet (BDFT) calculated by Batcher.
          format: float
        numPieces:
          type: integer
          description: The number of pieces calculated by Batcher.
          format: int32
        numUniquePieces:
          type: integer
          description: The number of unique pieces calculated by Batcher.
          format: int32
        numTotalComponents:
          type: integer
          description: The total number of components calculated by Batcher.
          format: int32
        numUniqueComponents:
          type: integer
          description: The number of unique components calculated by Batcher.
          format: int32
        maxHeight:
          type: number
          description: The maximum height calculated by Director.
          format: float
        maxLength:
          type: number
          description: The maximum length calculated by Director.
          format: float
        maxWeight:
          type: number
          description: The maximum weight calculated by Director.
          format: float
        totalWeight:
          type: number
          description: The total weight calculated by Director.
          format: float
        components:
          type: array
          items:
            $ref: >-
              #/components/schemas/ProductionSchedulerServer.Application.Features.ProducerProductionGroups.ComponentDto
          description: The list of components.
          nullable: true
        id:
          $ref: >-
            #/components/schemas/ProductionSchedulerServer.Domain.Entities.Cards.CardId
      additionalProperties: false
      description: Command to update a card.
    ProductionSchedulerServer.Application.Features.Cards.Commands.UpdateCard.UpdateCardResponse:
      type: object
      properties:
        ppgId:
          $ref: >-
            #/components/schemas/ProductionSchedulerServer.Domain.Entities.ProducerProductionGroups.ProducerProductionGroupId
        label:
          type: string
          description: 'The label displayed as “PPG #” in the UI mockups.'
          nullable: true
        assignedStation:
          $ref: >-
            #/components/schemas/ProductionSchedulerServer.Domain.Entities.StationId
        order:
          type: integer
          description: The priority of the cards for each station.
          format: int32
        assignedSaw:
          type: string
          description: The assigned saw, used to display tags for each card.
          nullable: true
        assignedTable:
          type: string
          description: The assigned table, used to display tags for each card.
          nullable: true
        color:
          type: integer
          description: The color index into an array of colors.
          format: int32
        activatedDateTime:
          type: string
          description: The date and time when the card was activated.
          format: date-time
          nullable: true
        activatedByUser:
          type: string
          description: The user who activated the card.
          nullable: true
        completedDateTime:
          type: string
          description: The date and time when the card was completed.
          format: date-time
          nullable: true
        completedByUser:
          type: string
          description: The user who completed the card.
          nullable: true
        crewSize:
          type: integer
          description: The crew size.
          format: int32
          nullable: true
        createdDateTime:
          type: string
          description: The date and time when the card was created.
          format: date-time
        createdByUser:
          type: string
          description: The user who created the card.
          nullable: true
        bdft:
          type: number
          description: The board feet (BDFT) calculated by Batcher.
          format: float
        numPieces:
          type: integer
          description: The number of pieces calculated by Batcher.
          format: int32
        numUniquePieces:
          type: integer
          description: The number of unique pieces calculated by Batcher.
          format: int32
        numTotalComponents:
          type: integer
          description: The total number of components calculated by Batcher.
          format: int32
        numUniqueComponents:
          type: integer
          description: The number of unique components calculated by Batcher.
          format: int32
        maxHeight:
          type: number
          description: The maximum height calculated by Director.
          format: float
        maxLength:
          type: number
          description: The maximum length calculated by Director.
          format: float
        maxWeight:
          type: number
          description: The maximum weight calculated by Director.
          format: float
        totalWeight:
          type: number
          description: The total weight calculated by Director.
          format: float
        components:
          type: array
          items:
            $ref: >-
              #/components/schemas/ProductionSchedulerServer.Application.Features.ProducerProductionGroups.ComponentDto
          description: The list of components.
          nullable: true
        id:
          $ref: >-
            #/components/schemas/ProductionSchedulerServer.Domain.Entities.Cards.CardId
        sawStationColorCode:
          type: integer
          description: The color code of the assigned saw station.
          format: int32
        tableStationColorCode:
          type: integer
          description: The color code of the assigned table station.
          format: int32
      additionalProperties: false
      description: Represents a DTO for a card with various properties.
    ProductionSchedulerServer.Application.Features.Cards.Queries.GetCardDetail.CardDetailResponse:
      type: object
      properties:
        ppgId:
          $ref: >-
            #/components/schemas/ProductionSchedulerServer.Domain.Entities.ProducerProductionGroups.ProducerProductionGroupId
        label:
          type: string
          description: 'The label displayed as “PPG #” in the UI mockups.'
          nullable: true
        assignedStation:
          $ref: >-
            #/components/schemas/ProductionSchedulerServer.Domain.Entities.StationId
        order:
          type: integer
          description: The priority of the cards for each station.
          format: int32
        assignedSaw:
          type: string
          description: The assigned saw, used to display tags for each card.
          nullable: true
        assignedTable:
          type: string
          description: The assigned table, used to display tags for each card.
          nullable: true
        color:
          type: integer
          description: The color index into an array of colors.
          format: int32
        activatedDateTime:
          type: string
          description: The date and time when the card was activated.
          format: date-time
          nullable: true
        activatedByUser:
          type: string
          description: The user who activated the card.
          nullable: true
        completedDateTime:
          type: string
          description: The date and time when the card was completed.
          format: date-time
          nullable: true
        completedByUser:
          type: string
          description: The user who completed the card.
          nullable: true
        crewSize:
          type: integer
          description: The crew size.
          format: int32
          nullable: true
        createdDateTime:
          type: string
          description: The date and time when the card was created.
          format: date-time
        createdByUser:
          type: string
          description: The user who created the card.
          nullable: true
        bdft:
          type: number
          description: The board feet (BDFT) calculated by Batcher.
          format: float
        numPieces:
          type: integer
          description: The number of pieces calculated by Batcher.
          format: int32
        numUniquePieces:
          type: integer
          description: The number of unique pieces calculated by Batcher.
          format: int32
        numTotalComponents:
          type: integer
          description: The total number of components calculated by Batcher.
          format: int32
        numUniqueComponents:
          type: integer
          description: The number of unique components calculated by Batcher.
          format: int32
        maxHeight:
          type: number
          description: The maximum height calculated by Director.
          format: float
        maxLength:
          type: number
          description: The maximum length calculated by Director.
          format: float
        maxWeight:
          type: number
          description: The maximum weight calculated by Director.
          format: float
        totalWeight:
          type: number
          description: The total weight calculated by Director.
          format: float
        components:
          type: array
          items:
            $ref: >-
              #/components/schemas/ProductionSchedulerServer.Application.Features.ProducerProductionGroups.ComponentDto
          description: The list of components.
          nullable: true
        id:
          $ref: >-
            #/components/schemas/ProductionSchedulerServer.Domain.Entities.Cards.CardId
        sawStationColorCode:
          type: integer
          description: The color code of the assigned saw station.
          format: int32
        tableStationColorCode:
          type: integer
          description: The color code of the assigned table station.
          format: int32
        version:
          type: string
          description: The ID of the producer production group associated with the card.
          format: byte
          nullable: true
        dueDate:
          type: string
          description: >-
            The due date of the producer production group associated with the
            card.
          format: date
          nullable: true
      additionalProperties: false
      description: Represents a DTO for a card with various properties.
    ProductionSchedulerServer.Application.Features.Cards.Queries.GetCards.CardListResponse:
      type: object
      properties:
        ppgId:
          $ref: >-
            #/components/schemas/ProductionSchedulerServer.Domain.Entities.ProducerProductionGroups.ProducerProductionGroupId
        label:
          type: string
          description: 'The label displayed as “PPG #” in the UI mockups.'
          nullable: true
        assignedStation:
          $ref: >-
            #/components/schemas/ProductionSchedulerServer.Domain.Entities.StationId
        order:
          type: integer
          description: The priority of the cards for each station.
          format: int32
        assignedSaw:
          type: string
          description: The assigned saw, used to display tags for each card.
          nullable: true
        assignedTable:
          type: string
          description: The assigned table, used to display tags for each card.
          nullable: true
        color:
          type: integer
          description: The color index into an array of colors.
          format: int32
        activatedDateTime:
          type: string
          description: The date and time when the card was activated.
          format: date-time
          nullable: true
        activatedByUser:
          type: string
          description: The user who activated the card.
          nullable: true
        completedDateTime:
          type: string
          description: The date and time when the card was completed.
          format: date-time
          nullable: true
        completedByUser:
          type: string
          description: The user who completed the card.
          nullable: true
        crewSize:
          type: integer
          description: The crew size.
          format: int32
          nullable: true
        createdDateTime:
          type: string
          description: The date and time when the card was created.
          format: date-time
        createdByUser:
          type: string
          description: The user who created the card.
          nullable: true
        bdft:
          type: number
          description: The board feet (BDFT) calculated by Batcher.
          format: float
        numPieces:
          type: integer
          description: The number of pieces calculated by Batcher.
          format: int32
        numUniquePieces:
          type: integer
          description: The number of unique pieces calculated by Batcher.
          format: int32
        numTotalComponents:
          type: integer
          description: The total number of components calculated by Batcher.
          format: int32
        numUniqueComponents:
          type: integer
          description: The number of unique components calculated by Batcher.
          format: int32
        maxHeight:
          type: number
          description: The maximum height calculated by Director.
          format: float
        maxLength:
          type: number
          description: The maximum length calculated by Director.
          format: float
        maxWeight:
          type: number
          description: The maximum weight calculated by Director.
          format: float
        totalWeight:
          type: number
          description: The total weight calculated by Director.
          format: float
        components:
          type: array
          items:
            $ref: >-
              #/components/schemas/ProductionSchedulerServer.Application.Features.ProducerProductionGroups.ComponentDto
          description: The list of components.
          nullable: true
        id:
          $ref: >-
            #/components/schemas/ProductionSchedulerServer.Domain.Entities.Cards.CardId
        sawStationColorCode:
          type: integer
          description: The color code of the assigned saw station.
          format: int32
        tableStationColorCode:
          type: integer
          description: The color code of the assigned table station.
          format: int32
        version:
          type: string
          description: >-
            The version of the card. 

            This value is used for optimistic concurrency control. Needs to be
            set to 

            the value of the entity's version property when updating/deleting
            the entity.
          format: byte
          nullable: true
      additionalProperties: false
      description: Represents a DTO for a card with various properties.
    ProductionSchedulerServer.Application.Features.Cards.Queries.GetCardsByProject.CardByProjectResponse:
      type: object
      properties:
        ppgId:
          $ref: >-
            #/components/schemas/ProductionSchedulerServer.Domain.Entities.ProducerProductionGroups.ProducerProductionGroupId
        label:
          type: string
          description: 'The label displayed as “PPG #” in the UI mockups.'
          nullable: true
        assignedStation:
          $ref: >-
            #/components/schemas/ProductionSchedulerServer.Domain.Entities.StationId
        order:
          type: integer
          description: The priority of the cards for each station.
          format: int32
        assignedSaw:
          type: string
          description: The assigned saw, used to display tags for each card.
          nullable: true
        assignedTable:
          type: string
          description: The assigned table, used to display tags for each card.
          nullable: true
        color:
          type: integer
          description: The color index into an array of colors.
          format: int32
        activatedDateTime:
          type: string
          description: The date and time when the card was activated.
          format: date-time
          nullable: true
        activatedByUser:
          type: string
          description: The user who activated the card.
          nullable: true
        completedDateTime:
          type: string
          description: The date and time when the card was completed.
          format: date-time
          nullable: true
        completedByUser:
          type: string
          description: The user who completed the card.
          nullable: true
        crewSize:
          type: integer
          description: The crew size.
          format: int32
          nullable: true
        createdDateTime:
          type: string
          description: The date and time when the card was created.
          format: date-time
        createdByUser:
          type: string
          description: The user who created the card.
          nullable: true
        bdft:
          type: number
          description: The board feet (BDFT) calculated by Batcher.
          format: float
        numPieces:
          type: integer
          description: The number of pieces calculated by Batcher.
          format: int32
        numUniquePieces:
          type: integer
          description: The number of unique pieces calculated by Batcher.
          format: int32
        numTotalComponents:
          type: integer
          description: The total number of components calculated by Batcher.
          format: int32
        numUniqueComponents:
          type: integer
          description: The number of unique components calculated by Batcher.
          format: int32
        maxHeight:
          type: number
          description: The maximum height calculated by Director.
          format: float
        maxLength:
          type: number
          description: The maximum length calculated by Director.
          format: float
        maxWeight:
          type: number
          description: The maximum weight calculated by Director.
          format: float
        totalWeight:
          type: number
          description: The total weight calculated by Director.
          format: float
        components:
          type: array
          items:
            $ref: >-
              #/components/schemas/ProductionSchedulerServer.Application.Features.ProducerProductionGroups.ComponentDto
          description: The list of components.
          nullable: true
        id:
          $ref: >-
            #/components/schemas/ProductionSchedulerServer.Domain.Entities.Cards.CardId
        projectId:
          type: string
          description: Project Id the card is associated with.
          format: uuid
          nullable: true
        areaName:
          type: string
          description: Area name the card is associated with.
          nullable: true
        stationName:
          type: string
          description: Station name the card is associated with.
          nullable: true
        version:
          type: string
          description: >-
            The version of the card. 

            This value is used for optimistic concurrency control. Needs to be
            set to 

            the value of the entity's version property when updating/deleting
            the entity.
          format: byte
          nullable: true
      additionalProperties: false
      description: Represents a card by project dto
    ProductionSchedulerServer.Application.Features.Cards.Queries.GetCardsByStation.CardByStationListResponse:
      type: object
      properties:
        ppgId:
          $ref: >-
            #/components/schemas/ProductionSchedulerServer.Domain.Entities.ProducerProductionGroups.ProducerProductionGroupId
        label:
          type: string
          description: 'The label displayed as “PPG #” in the UI mockups.'
          nullable: true
        assignedStation:
          $ref: >-
            #/components/schemas/ProductionSchedulerServer.Domain.Entities.StationId
        order:
          type: integer
          description: The priority of the cards for each station.
          format: int32
        assignedSaw:
          type: string
          description: The assigned saw, used to display tags for each card.
          nullable: true
        assignedTable:
          type: string
          description: The assigned table, used to display tags for each card.
          nullable: true
        color:
          type: integer
          description: The color index into an array of colors.
          format: int32
        activatedDateTime:
          type: string
          description: The date and time when the card was activated.
          format: date-time
          nullable: true
        activatedByUser:
          type: string
          description: The user who activated the card.
          nullable: true
        completedDateTime:
          type: string
          description: The date and time when the card was completed.
          format: date-time
          nullable: true
        completedByUser:
          type: string
          description: The user who completed the card.
          nullable: true
        crewSize:
          type: integer
          description: The crew size.
          format: int32
          nullable: true
        createdDateTime:
          type: string
          description: The date and time when the card was created.
          format: date-time
        createdByUser:
          type: string
          description: The user who created the card.
          nullable: true
        bdft:
          type: number
          description: The board feet (BDFT) calculated by Batcher.
          format: float
        numPieces:
          type: integer
          description: The number of pieces calculated by Batcher.
          format: int32
        numUniquePieces:
          type: integer
          description: The number of unique pieces calculated by Batcher.
          format: int32
        numTotalComponents:
          type: integer
          description: The total number of components calculated by Batcher.
          format: int32
        numUniqueComponents:
          type: integer
          description: The number of unique components calculated by Batcher.
          format: int32
        maxHeight:
          type: number
          description: The maximum height calculated by Director.
          format: float
        maxLength:
          type: number
          description: The maximum length calculated by Director.
          format: float
        maxWeight:
          type: number
          description: The maximum weight calculated by Director.
          format: float
        totalWeight:
          type: number
          description: The total weight calculated by Director.
          format: float
        components:
          type: array
          items:
            $ref: >-
              #/components/schemas/ProductionSchedulerServer.Application.Features.ProducerProductionGroups.ComponentDto
          description: The list of components.
          nullable: true
        id:
          $ref: >-
            #/components/schemas/ProductionSchedulerServer.Domain.Entities.Cards.CardId
        sawStationColorCode:
          type: integer
          description: The color code of the assigned saw station.
          format: int32
        tableStationColorCode:
          type: integer
          description: The color code of the assigned table station.
          format: int32
        version:
          type: string
          description: >-
            The version of the card. 

            This value is used for optimistic concurrency control. Needs to be
            set to 

            the value of the entity's version property when updating/deleting
            the entity.
          format: byte
          nullable: true
      additionalProperties: false
      description: Represents a DTO for a card with various properties.
    ProductionSchedulerServer.Application.Features.Cards.Queries.GetCompletedCardsForShift.CompletedCardResponse:
      type: object
      properties:
        ppgId:
          $ref: >-
            #/components/schemas/ProductionSchedulerServer.Domain.Entities.ProducerProductionGroups.ProducerProductionGroupId
        label:
          type: string
          description: 'The label displayed as “PPG #” in the UI mockups.'
          nullable: true
        assignedStation:
          $ref: >-
            #/components/schemas/ProductionSchedulerServer.Domain.Entities.StationId
        order:
          type: integer
          description: The priority of the cards for each station.
          format: int32
        assignedSaw:
          type: string
          description: The assigned saw, used to display tags for each card.
          nullable: true
        assignedTable:
          type: string
          description: The assigned table, used to display tags for each card.
          nullable: true
        color:
          type: integer
          description: The color index into an array of colors.
          format: int32
        activatedDateTime:
          type: string
          description: The date and time when the card was activated.
          format: date-time
          nullable: true
        activatedByUser:
          type: string
          description: The user who activated the card.
          nullable: true
        completedDateTime:
          type: string
          description: The date and time when the card was completed.
          format: date-time
          nullable: true
        completedByUser:
          type: string
          description: The user who completed the card.
          nullable: true
        crewSize:
          type: integer
          description: The crew size.
          format: int32
          nullable: true
        createdDateTime:
          type: string
          description: The date and time when the card was created.
          format: date-time
        createdByUser:
          type: string
          description: The user who created the card.
          nullable: true
        bdft:
          type: number
          description: The board feet (BDFT) calculated by Batcher.
          format: float
        numPieces:
          type: integer
          description: The number of pieces calculated by Batcher.
          format: int32
        numUniquePieces:
          type: integer
          description: The number of unique pieces calculated by Batcher.
          format: int32
        numTotalComponents:
          type: integer
          description: The total number of components calculated by Batcher.
          format: int32
        numUniqueComponents:
          type: integer
          description: The number of unique components calculated by Batcher.
          format: int32
        maxHeight:
          type: number
          description: The maximum height calculated by Director.
          format: float
        maxLength:
          type: number
          description: The maximum length calculated by Director.
          format: float
        maxWeight:
          type: number
          description: The maximum weight calculated by Director.
          format: float
        totalWeight:
          type: number
          description: The total weight calculated by Director.
          format: float
        components:
          type: array
          items:
            $ref: >-
              #/components/schemas/ProductionSchedulerServer.Application.Features.ProducerProductionGroups.ComponentDto
          description: The list of components.
          nullable: true
        id:
          $ref: >-
            #/components/schemas/ProductionSchedulerServer.Domain.Entities.Cards.CardId
        sawStationColorCode:
          type: integer
          description: The color code of the assigned saw station.
          format: int32
        tableStationColorCode:
          type: integer
          description: The color code of the assigned table station.
          format: int32
      additionalProperties: false
      description: Represents a DTO for a card with various properties.
    ProductionSchedulerServer.Application.Features.Cards.Queries.GetStatusByPpgForCards.CardStatus:
      enum:
        - NotStarted
        - InProgress
        - Done
      type: string
      description: The status of a card.
    ProductionSchedulerServer.Application.Features.Cards.Queries.GetStatusByPpgForCards.StatusResponse:
      type: object
      properties:
        name:
          type: string
          description: The Card's assigned saw or table.
          nullable: true
        status:
          $ref: >-
            #/components/schemas/ProductionSchedulerServer.Application.Features.Cards.Queries.GetStatusByPpgForCards.CardStatus
      additionalProperties: false
      description: A status for a card.
    ProductionSchedulerServer.Application.Features.ProducerProductionGroups.BatchPieceDto:
      type: object
      properties:
        consolidatedPieceKey:
          type: string
          description: Key for the consolidated piece.
          nullable: true
        componentKey:
          type: string
          description: Key for the component.
          nullable: true
        cutSequence:
          type: integer
          description: Cut sequence number.
          format: int32
        distinctCutSequence:
          type: integer
          description: Distinct cut sequence number.
          format: int32
        productionLabel:
          type: string
          description: Production label for the batch piece.
          nullable: true
        quantity:
          type: integer
          description: Quantity of batch pieces.
          format: int32
        overallLengthInches:
          type: number
          description: Overall length in inches.
          format: double
        lumberNdsDescription:
          type: string
          description: NDS lumber description.
          nullable: true
        lumberGrade:
          type: string
          description: Lumber grade.
          nullable: true
        lumberSpecies:
          type: string
          description: Lumber species.
          nullable: true
        lumberSize:
          type: string
          description: Lumber size.
          nullable: true
      additionalProperties: false
      description: Represents a batch piece in a sub-production group (DTO).
    ProductionSchedulerServer.Application.Features.ProducerProductionGroups.Commands.CreateProducerProductionGroup.CreatePpgRequest:
      type: object
      properties:
        projectId:
          type: string
          description: >-
            Gets or sets the project id associated with the producer production
            group.
          format: uuid
        name:
          type: string
          description: The name of the producer production group.
          nullable: true
        projectNumber:
          type: string
          description: Gets or sets the project number.
          nullable: true
        projectName:
          type: string
          description: Project name.
          nullable: true
        customerName:
          type: string
          description: Gets or sets the customer name.
          nullable: true
        deliveryDate:
          type: string
          description: Gets or sets the estimated delivery date.
          format: date
          nullable: true
        maxHeight:
          type: number
          description: Gets or sets the height of the tallest component.
          format: float
          nullable: true
        maxSpan:
          type: number
          description: Gets or sets the maximum span of the group.
          format: float
          nullable: true
        maxWeight:
          type: number
          description: Gets or sets the weight of the heaviest component.
          format: float
          nullable: true
        totalBdft:
          type: number
          description: >-
            Gets or sets the total board feet (BDFT) of the producer production
            group.
          format: float
          nullable: true
        totalComponents:
          type: integer
          description: >-
            Gets or sets the total number of components in the producer
            production group.
          format: int32
          nullable: true
        totalLft:
          type: number
          description: >-
            Gets or sets the total linear feet (LFT) of the producer production
            group.
          format: float
          nullable: true
        totalPieces:
          type: integer
          description: >-
            Gets or sets the total number of pieces in the producer production
            group.
          format: int32
          nullable: true
        totalWeight:
          type: number
          description: Gets or sets the total weight of the producer production group.
          format: float
          nullable: true
        uniquePieceCount:
          type: integer
          description: >-
            Gets or sets the number of unique pieces in the producer production
            group.
          format: int32
        components:
          type: array
          items:
            $ref: >-
              #/components/schemas/ProductionSchedulerServer.Application.Features.ProducerProductionGroups.ComponentDto
          description: Gets or sets the components of the producer production group.
          nullable: true
        subPpgs:
          type: array
          items:
            $ref: >-
              #/components/schemas/ProductionSchedulerServer.Application.Features.ProducerProductionGroups.SubPpgDto
          description: >-
            Gets or sets the sub producer production groups of the producer
            production group.
          nullable: true
        productionNote:
          maxLength: 256
          type: string
          description: >-
            Gets or sets the production notes associated with the producer
            production group.

            This property allows for adding additional information or context
            related to production.
          nullable: true
        files:
          type: array
          items:
            type: string
          description: List of batcher output files from Director.
          nullable: true
      additionalProperties: false
      description: >-
        Represents the data transfer object used for creating a producer
        production group.
    ProductionSchedulerServer.Application.Features.ProducerProductionGroups.Commands.CreateProducerProductionGroup.CreatePpgResponse:
      type: object
      properties:
        projectId:
          type: string
          description: >-
            Gets or sets the project id associated with the producer production
            group.
          format: uuid
        name:
          type: string
          description: The name of the producer production group.
          nullable: true
        projectNumber:
          type: string
          description: Gets or sets the project number.
          nullable: true
        projectName:
          type: string
          description: Project name.
          nullable: true
        customerName:
          type: string
          description: Gets or sets the customer name.
          nullable: true
        deliveryDate:
          type: string
          description: Gets or sets the estimated delivery date.
          format: date
          nullable: true
        maxHeight:
          type: number
          description: Gets or sets the height of the tallest component.
          format: float
          nullable: true
        maxSpan:
          type: number
          description: Gets or sets the maximum span of the group.
          format: float
          nullable: true
        maxWeight:
          type: number
          description: Gets or sets the weight of the heaviest component.
          format: float
          nullable: true
        totalBdft:
          type: number
          description: >-
            Gets or sets the total board feet (BDFT) of the producer production
            group.
          format: float
          nullable: true
        totalComponents:
          type: integer
          description: >-
            Gets or sets the total number of components in the producer
            production group.
          format: int32
          nullable: true
        totalLft:
          type: number
          description: >-
            Gets or sets the total linear feet (LFT) of the producer production
            group.
          format: float
          nullable: true
        totalPieces:
          type: integer
          description: >-
            Gets or sets the total number of pieces in the producer production
            group.
          format: int32
          nullable: true
        totalWeight:
          type: number
          description: Gets or sets the total weight of the producer production group.
          format: float
          nullable: true
        uniquePieceCount:
          type: integer
          description: >-
            Gets or sets the number of unique pieces in the producer production
            group.
          format: int32
        components:
          type: array
          items:
            $ref: >-
              #/components/schemas/ProductionSchedulerServer.Application.Features.ProducerProductionGroups.ComponentDto
          description: Gets or sets the components of the producer production group.
          nullable: true
        subPpgs:
          type: array
          items:
            $ref: >-
              #/components/schemas/ProductionSchedulerServer.Application.Features.ProducerProductionGroups.SubPpgDto
          description: >-
            Gets or sets the sub producer production groups of the producer
            production group.
          nullable: true
        productionNote:
          maxLength: 256
          type: string
          description: >-
            Gets or sets the production notes associated with the producer
            production group.

            This property allows for adding additional information or context
            related to production.
          nullable: true
        files:
          type: array
          items:
            type: string
          description: List of batcher output files from Director.
          nullable: true
        id:
          $ref: >-
            #/components/schemas/ProductionSchedulerServer.Domain.Entities.ProducerProductionGroups.ProducerProductionGroupId
        version:
          type: string
          description: The version property. Used for optimistic concurrency control.
          format: byte
          nullable: true
      additionalProperties: false
      description: >-
        Represents the data transfer object returned after creating a producer
        production group.
    ProductionSchedulerServer.Application.Features.ProducerProductionGroups.Commands.UpdateProducerProductionGroupDueDate.PatchPpgDueDateResponse:
      type: object
      properties:
        updatedPpgCount:
          type: integer
          description: >-
            Represents the number of producer production groups that were
            updated.
          format: int32
      additionalProperties: false
      description: >-
        Represents the response of updating the due date of all producer
        production groups in a project.
    ProductionSchedulerServer.Application.Features.ProducerProductionGroups.Commands.UpdateProducerProductionGroupDueDate.UpdatePpgDueDateRequest:
      required:
        - dueDate
      type: object
      properties:
        applyToAllPpgInProject:
          type: boolean
          description: >-
            Determines if the new due date should be applied to all producer
            production groups in the project.
        dueDate:
          type: string
          description: New due date of the producer production group.
          format: date
      additionalProperties: false
      description: Represents a command to update Ppg due dates.
    ProductionSchedulerServer.Application.Features.ProducerProductionGroups.Commands.UpdateProducerProductionGroupProductionNote.UpdatePpgProductionNoteRequest:
      type: object
      properties:
        productionNote:
          type: string
          description: |-
            Gets or sets the note associated with the production process.
            This property is used to provide detailed information or updates
            regarding the production within a producer's production group.
          nullable: true
      additionalProperties: false
      description: >-
        Represents the request to update a production note in a producer's
        production group.
    ProductionSchedulerServer.Application.Features.ProducerProductionGroups.ComponentDto:
      required:
        - id
        - name
        - quantity
      type: object
      properties:
        id:
          type: string
          description: Unique identifier for the component.
          format: uuid
        name:
          type: string
          description: Name of the component.
          nullable: true
        quantity:
          type: integer
          description: Required quantity of the component.
          format: int32
        order:
          type: integer
          description: Order of the component.
          format: int32
        numPlies:
          type: integer
          description: Number of plies of the component.
          format: int32
        pieces:
          type: array
          items:
            $ref: >-
              #/components/schemas/ProductionSchedulerServer.Application.Features.ProducerProductionGroups.PieceDto
          description: Collection of piece data associated with the component.
          nullable: true
        plates:
          type: array
          items:
            $ref: >-
              #/components/schemas/ProductionSchedulerServer.Application.Features.ProducerProductionGroups.PlateDto
          description: Collection of plate data associated with the component.
          nullable: true
      additionalProperties: false
      description: Represents a data transfer object for a component.
    ProductionSchedulerServer.Application.Features.ProducerProductionGroups.PieceDto:
      required:
        - label
        - overallLengthInches
        - quantity
      type: object
      properties:
        label:
          minLength: 1
          type: string
          description: Label of the piece.
        overallLengthInches:
          type: number
          description: Overall length of the piece in decimal inches.
          format: double
        quantity:
          type: integer
          description: Build quantity of the piece.
          format: int32
        pieceKey:
          type: string
          description: Unique key for the piece.
          nullable: true
        endCapPositive:
          type: string
          description: End cap positive vector for the piece.
          nullable: true
        endCapNegative:
          type: string
          description: End cap negative vector for the piece.
          nullable: true
        lumberNdsDescription:
          type: string
          description: NDS lumber description for the piece.
          nullable: true
        lumberGrade:
          type: string
          description: Lumber grade for the piece.
          nullable: true
        lumberSpecies:
          type: string
          description: Lumber species for the piece.
          nullable: true
        lumberSize:
          type: string
          description: Lumber size for the piece.
          nullable: true
        startPly:
          type: integer
          description: Start ply for the piece.
          format: int32
          nullable: true
        plyCount:
          type: integer
          description: Ply count for the piece.
          format: int32
          nullable: true
      additionalProperties: false
      description: Represents a data transfer object for a piece
    ProductionSchedulerServer.Application.Features.ProducerProductionGroups.PlateDto:
      type: object
      properties:
        label:
          type: string
          description: Label of the plate.
          nullable: true
        quantity:
          type: integer
          description: Quantity of plates.
          format: int32
        description:
          type: string
          description: Description of the plate.
          nullable: true
        thicknessGauge:
          type: string
          description: Thickness gauge of the plate.
          nullable: true
        lengthInches:
          type: number
          description: Length of the plate in inches.
          format: double
        widthInches:
          type: number
          description: Width of the plate in inches.
          format: double
        gauge:
          type: string
          description: Gauge value of the plate.
          nullable: true
        reportHighlightArgb:
          type: integer
          description: ARGB value for report highlight.
          format: int32
          nullable: true
        colorArgb:
          type: integer
          description: ARGB color value for the plate.
          format: int32
          nullable: true
        translateVector:
          type: string
          description: Translation vector for the plate.
          nullable: true
        rotateVector:
          type: string
          description: Rotation vector for the plate.
          nullable: true
        jointLabel:
          type: string
          description: Joint label for the plate.
          nullable: true
        jointLocation:
          type: string
          description: Joint location for the plate.
          nullable: true
        jointStartPly:
          type: integer
          description: Start ply for the joint.
          format: int32
        jointPlyCount:
          type: integer
          description: Ply count for the joint.
          format: int32
      additionalProperties: false
      description: Represents a plate used in a component for production (DTO).
    ProductionSchedulerServer.Application.Features.ProducerProductionGroups.Queries.GetProducerProductionGroupDetail.PpgDetailResponse:
      type: object
      properties:
        projectId:
          type: string
          description: >-
            Gets or sets the project id associated with the producer production
            group.
          format: uuid
        name:
          type: string
          description: The name of the producer production group.
          nullable: true
        projectNumber:
          type: string
          description: Gets or sets the project number.
          nullable: true
        projectName:
          type: string
          description: Project name.
          nullable: true
        customerName:
          type: string
          description: Gets or sets the customer name.
          nullable: true
        deliveryDate:
          type: string
          description: Gets or sets the estimated delivery date.
          format: date
          nullable: true
        maxHeight:
          type: number
          description: Gets or sets the height of the tallest component.
          format: float
          nullable: true
        maxSpan:
          type: number
          description: Gets or sets the maximum span of the group.
          format: float
          nullable: true
        maxWeight:
          type: number
          description: Gets or sets the weight of the heaviest component.
          format: float
          nullable: true
        totalBdft:
          type: number
          description: >-
            Gets or sets the total board feet (BDFT) of the producer production
            group.
          format: float
          nullable: true
        totalComponents:
          type: integer
          description: >-
            Gets or sets the total number of components in the producer
            production group.
          format: int32
          nullable: true
        totalLft:
          type: number
          description: >-
            Gets or sets the total linear feet (LFT) of the producer production
            group.
          format: float
          nullable: true
        totalPieces:
          type: integer
          description: >-
            Gets or sets the total number of pieces in the producer production
            group.
          format: int32
          nullable: true
        totalWeight:
          type: number
          description: Gets or sets the total weight of the producer production group.
          format: float
          nullable: true
        uniquePieceCount:
          type: integer
          description: >-
            Gets or sets the number of unique pieces in the producer production
            group.
          format: int32
        components:
          type: array
          items:
            $ref: >-
              #/components/schemas/ProductionSchedulerServer.Application.Features.ProducerProductionGroups.ComponentDto
          description: Gets or sets the components of the producer production group.
          nullable: true
        subPpgs:
          type: array
          items:
            $ref: >-
              #/components/schemas/ProductionSchedulerServer.Application.Features.ProducerProductionGroups.SubPpgDto
          description: >-
            Gets or sets the sub producer production groups of the producer
            production group.
          nullable: true
        productionNote:
          maxLength: 256
          type: string
          description: >-
            Gets or sets the production notes associated with the producer
            production group.

            This property allows for adding additional information or context
            related to production.
          nullable: true
        files:
          type: array
          items:
            type: string
          description: List of batcher output files from Director.
          nullable: true
        id:
          $ref: >-
            #/components/schemas/ProductionSchedulerServer.Domain.Entities.ProducerProductionGroups.ProducerProductionGroupId
        reports:
          type: array
          items:
            $ref: >-
              #/components/schemas/ProductionSchedulerServer.Application.Features.ProducerProductionGroups.Queries.GetProducerProductionGroupDetail.PpgReportDto
          description: Reports of the producer production group.
          nullable: true
        version:
          type: string
          description: The version property. Used for optimistic concurrency control.
          format: byte
          nullable: true
      additionalProperties: false
      description: Represents the detailed information of a producer production group.
    ProductionSchedulerServer.Application.Features.ProducerProductionGroups.Queries.GetProducerProductionGroupDetail.PpgReportDto:
      type: object
      properties:
        reportName:
          type: string
          description: Gets or sets the Report Name of the report.
          nullable: true
        reportPath:
          type: string
          description: |-
            Gets or sets the blob storage identifier of the report.
            {PpgId}/reports/{generated GUID}.pdf
          nullable: true
      additionalProperties: false
      description: Represents the DTO (Data Transfer Object) for Report belonging to a PPG.
    ProductionSchedulerServer.Application.Features.ProducerProductionGroups.SubPpgDto:
      type: object
      properties:
        name:
          type: string
          description: Name of the sub-production group.
          nullable: true
        assignedSaw:
          type: string
          description: Assigned saw.
          nullable: true
        assignedTable:
          type: string
          description: Assigned table.
          nullable: true
        totalBdft:
          type: number
          description: Total board feet.
          format: float
        totalLft:
          type: number
          description: Total linear feet (LFT) of the producer production group.
          format: float
        totalPieces:
          type: integer
          description: Total number of pieces in the sub-production group.
          format: int32
        uniquePiecesCount:
          type: integer
          description: The number of unique pieces in the producer production group.
          format: int32
        totalComponents:
          type: integer
          description: Total number of components in the sub-production group.
          format: int32
        uniqueComponentsCount:
          type: integer
          description: Number of unique components in the sub-production group.
          format: int32
        maxHeight:
          type: number
          description: >-
            The maximum height of the components within the sub-production
            group.
          format: double
        maxSpan:
          type: number
          description: Maximum span of the sub-production group components.
          format: double
        maxWeight:
          type: number
          description: Maximum weight of the sub-production group.
          format: double
        totalWeight:
          type: number
          description: Total weight of the sub-production group.
          format: double
        components:
          type: array
          items:
            $ref: >-
              #/components/schemas/ProductionSchedulerServer.Application.Features.ProducerProductionGroups.ComponentDto
          description: List of components associated with the sub-production group.
          nullable: true
        batchPieces:
          type: array
          items:
            $ref: >-
              #/components/schemas/ProductionSchedulerServer.Application.Features.ProducerProductionGroups.BatchPieceDto
          description: List of batch pieces associated with the sub-production group.
          nullable: true
      additionalProperties: false
      description: Represents a sub-group within a producer production group.
    ProductionSchedulerServer.Application.Features.Reports.Commands.GetShiftReconciliationCommand.GetShiftReconciliationResponse:
      required:
        - data
        - metadata
      type: object
      properties:
        metadata:
          $ref: >-
            #/components/schemas/ProductionSchedulerServer.Application.Features.Reports.ResponseMetadata
        data:
          $ref: >-
            #/components/schemas/ProductionSchedulerServer.Application.Features.Reports.Commands.GetShiftReconciliationCommand.ReconciliationData
      additionalProperties: false
      description: >-
        Response model that includes metadata and the list of production
        summaries for each station
    ProductionSchedulerServer.Application.Features.Reports.Commands.GetShiftReconciliationCommand.ReconciliationData:
      required:
        - reportCreationTime
        - stations
        - status
      type: object
      properties:
        reportCreationTime:
          type: string
          description: >-
            Date and time the report was generated in the timezone of the
            facility with no timezone offset indicator (ISO 8601 format, e.g.,
            2024-10-31T14:30:00)
          nullable: true
        stations:
          type: array
          items:
            type: string
          description: >-
            List of all stations returned, in the same order they will be
            reported for each PPG
          nullable: true
          example:
            - Plate Pick
            - Lumber Pick
            - Blade Saw
            - DeRobo
            - Floor
            - N. Assembly
        status:
          type: array
          items:
            $ref: >-
              #/components/schemas/ProductionSchedulerServer.Application.Features.Reports.Commands.GetShiftReconciliationCommand.ReconciliationProjects
          description: Data about the PPGs from this project
          nullable: true
      additionalProperties: false
      description: List of projects included in this response
    ProductionSchedulerServer.Application.Features.Reports.Commands.GetShiftReconciliationCommand.ReconciliationPpgs:
      required:
        - ppgName
        - stationStatus
      type: object
      properties:
        ppgName:
          type: string
          description: Name of a PPG associated with a project
          nullable: true
          example: ABC123
        stationStatus:
          type: array
          items:
            $ref: >-
              #/components/schemas/ProductionSchedulerServer.Application.Features.Reports.Commands.GetShiftReconciliationCommand.ReconciliationStationStatus
          description: >-
            Status of stations in this PPG, in the same order that these
            stations are returned in the stations block.
          nullable: true
        ppgId:
          $ref: >-
            #/components/schemas/ProductionSchedulerServer.Domain.Entities.ProducerProductionGroups.ProducerProductionGroupId
        created:
          type: string
          description: When the PPG was created
          format: date-time
        createdBy:
          type: string
          description: Who created the PPG
          nullable: true
        customerName:
          type: string
          description: The name of the customer associated with this PPG
          nullable: true
        dueDate:
          type: string
          description: When the PPG is due
          format: date
          nullable: true
      additionalProperties: false
      description: Report model for PPGs in reconciliation
    ProductionSchedulerServer.Application.Features.Reports.Commands.GetShiftReconciliationCommand.ReconciliationProjects:
      required:
        - ppgData
        - projectName
        - projectNumber
      type: object
      properties:
        projectName:
          type: string
          description: The name of a project
          nullable: true
          example: Washington St. Apartment
        projectComplete:
          type: boolean
          description: Whether the entire project is complete or not.
          example: true
        projectId:
          type: string
          description: The ID of the project
          format: uuid
        projectNumber:
          type: string
          description: The number of the project
          nullable: true
        ppgData:
          type: array
          items:
            $ref: >-
              #/components/schemas/ProductionSchedulerServer.Application.Features.Reports.Commands.GetShiftReconciliationCommand.ReconciliationPpgs
          description: Data about the PPGs from this project
          nullable: true
      additionalProperties: false
      description: List of projects included in this response
    ProductionSchedulerServer.Application.Features.Reports.Commands.GetShiftReconciliationCommand.ReconciliationStationStatus:
      required:
        - stationName
      type: object
      properties:
        stationName:
          type: string
          description: The name of a station
          nullable: true
          example: '''Plate Pick'', ''Blade Saw'''
        stationState:
          $ref: >-
            #/components/schemas/ProductionSchedulerServer.Domain.ValueTypes.StationState
      additionalProperties: false
      description: Report model for station status in reconciliation
    ProductionSchedulerServer.Application.Features.Reports.Commands.SendReportCommand.SendReportCommand:
      required:
        - file
      type: object
      properties:
        ppgId:
          $ref: >-
            #/components/schemas/ProductionSchedulerServer.Domain.Entities.ProducerProductionGroups.ProducerProductionGroupId
        reportName:
          type: string
          description: The ID of the report.
          nullable: true
        file:
          type: string
          description: The file containing the report.
          format: binary
          nullable: true
      additionalProperties: false
      description: Represents a command to receive a report.
    ProductionSchedulerServer.Application.Features.Reports.Commands.SendReportCommand.SendReportDto:
      type: object
      properties:
        id:
          $ref: >-
            #/components/schemas/ProductionSchedulerServer.Domain.Entities.Reports.ReportId
        ppgId:
          $ref: >-
            #/components/schemas/ProductionSchedulerServer.Domain.Entities.ProducerProductionGroups.ProducerProductionGroupId
        reportName:
          type: string
          description: Gets or sets the report path of the report.
          nullable: true
        reportPath:
          type: string
          description: Gets or sets the report path of the report.
          nullable: true
      additionalProperties: false
      description: Represents the data transfer object for receiving a report.
    ProductionSchedulerServer.Application.Features.Reports.Queries.GetCutNotBuiltQuery.CutNotBuiltData:
      type: object
      properties:
        reportCreationTime:
          type: string
          description: >-
            Date and time the report was generated in the timezone of the
            facility with no timezone offset indicator (ISO 8601 format, e.g.,
            2024-10-31T14:30:00)
          nullable: true
        totalBdFt:
          type: number
          description: Total board feet processed during production
          format: float
          readOnly: true
        totalLFt:
          type: number
          description: Total linear feet processed during production
          format: float
          readOnly: true
        totalComponents:
          type: integer
          description: Total number of components produced
          format: int32
          readOnly: true
        totalPieces:
          type: integer
          description: Total number of pieces produced
          format: int32
          readOnly: true
        projects:
          type: array
          items:
            $ref: >-
              #/components/schemas/ProductionSchedulerServer.Application.Features.Reports.Queries.GetCutNotBuiltQuery.CutNotBuiltProject
          description: List of projects with cut not built items
          nullable: true
      additionalProperties: false
      description: The data object for the cut not built report.
    ProductionSchedulerServer.Application.Features.Reports.Queries.GetCutNotBuiltQuery.CutNotBuiltProject:
      type: object
      properties:
        projectName:
          type: string
          description: The name of the project
          nullable: true
        projectNumber:
          type: string
          description: The number of the project
          nullable: true
        totalBdFt:
          type: number
          description: Total board feet processed during production
          format: float
          readOnly: true
        totalLFt:
          type: number
          description: Total linear feet processed during production
          format: float
          readOnly: true
        totalComponents:
          type: integer
          description: Total number of components produced
          format: int32
          readOnly: true
        totalPieces:
          type: integer
          description: Total number of pieces produced
          format: int32
          readOnly: true
        items:
          type: array
          items:
            $ref: >-
              #/components/schemas/ProductionSchedulerServer.Application.Features.Reports.Queries.GetCutNotBuiltQuery.CutNotBuiltReportItem
          description: List of cut not built items for the project
          nullable: true
      additionalProperties: false
      description: The data object for a cut not built project.
    ProductionSchedulerServer.Application.Features.Reports.Queries.GetCutNotBuiltQuery.CutNotBuiltReportItem:
      type: object
      properties:
        ppgId:
          type: integer
          description: The PPG ID number
          format: int32
        ppgName:
          type: string
          description: The PPG Name associated with the project
          nullable: true
        totalBdFt:
          type: number
          description: Total board feet processed during production
          format: float
        totalLFt:
          type: number
          description: Total linear feet processed during production
          format: float
        totalComponents:
          type: integer
          description: Total number of components produced
          format: int32
        totalPieces:
          type: integer
          description: Total number of pieces produced
          format: int32
      additionalProperties: false
      description: The data object for a cut not built report item.
    ProductionSchedulerServer.Application.Features.Reports.Queries.GetCutNotBuiltQuery.GetCutNotBuiltReportResponse:
      type: object
      properties:
        metadata:
          $ref: >-
            #/components/schemas/ProductionSchedulerServer.Application.Features.Reports.ResponseMetadata
        data:
          $ref: >-
            #/components/schemas/ProductionSchedulerServer.Application.Features.Reports.Queries.GetCutNotBuiltQuery.CutNotBuiltData
      additionalProperties: false
      description: The response received after retrieving cut not built reports.
    ProductionSchedulerServer.Application.Features.Reports.Queries.GetProductionReportsQuery.DailyProductionReport:
      type: object
      properties:
        stationType:
          $ref: >-
            #/components/schemas/ProductionSchedulerServer.Domain.ValueTypes.ReportingStationType
        stationName:
          type: string
          description: The station name.
          nullable: true
        shift:
          type: string
          description: The shift.
          nullable: true
        crewSize:
          type: integer
          description: The size of the crew.
          format: int32
        manHours:
          type: number
          description: The number of man-hours.
          format: float
        totalPieces:
          type: integer
          description: The total number of pieces.
          format: int32
        bdft:
          type: number
          description: The total board feet processed during production.
          format: float
        componentCount:
          type: integer
          description: The total number of components produced.
          format: int32
        bdFtPerManHour:
          type: number
          description: The BDFT per man hour.
          format: float
        uniqueComponentCount:
          type: integer
          description: The number of unique components processed.
          format: int32
        uniquePieceCount:
          type: integer
          description: Unique piece count.
          format: int32
        reportCreationDate:
          type: string
          description: The report creation date.
          format: date-time
      additionalProperties: false
      description: The daily production report.
    ProductionSchedulerServer.Application.Features.Reports.Queries.GetProductionReportsQuery.DailyProductionReportData:
      type: object
      properties:
        reportCreationTime:
          type: string
          description: >-
            Date and time the report was generated in the timezone of the
            facility with no timezone offset indicator (ISO 8601 format, e.g.,
            2024-10-31T14:30:00)
          nullable: true
        reports:
          type: array
          items:
            $ref: >-
              #/components/schemas/ProductionSchedulerServer.Application.Features.Reports.Queries.GetProductionReportsQuery.DailyProductionReport
          description: The data associated with the response.
          nullable: true
      additionalProperties: false
      description: The data associated with the response.
    ProductionSchedulerServer.Application.Features.Reports.Queries.GetProductionReportsQuery.GetProductionReportsResponse:
      type: object
      properties:
        metadata:
          $ref: >-
            #/components/schemas/ProductionSchedulerServer.Application.Features.Reports.ResponseMetadata
        data:
          $ref: >-
            #/components/schemas/ProductionSchedulerServer.Application.Features.Reports.Queries.GetProductionReportsQuery.DailyProductionReportData
      additionalProperties: false
      description: The response received after retrieving production reports.
    ProductionSchedulerServer.Application.Features.Reports.Queries.GetProductionSummaryQuery.GetProductionSummaryResponse:
      required:
        - data
        - metadata
      type: object
      properties:
        metadata:
          $ref: >-
            #/components/schemas/ProductionSchedulerServer.Application.Features.Reports.ResponseMetadata
        data:
          $ref: >-
            #/components/schemas/ProductionSchedulerServer.Application.Features.Reports.Queries.GetProductionSummaryQuery.ProductionReportData
      additionalProperties: false
      description: A response for the production summary.
    ProductionSchedulerServer.Application.Features.Reports.Queries.GetProductionSummaryQuery.ProductionReportData:
      required:
        - reportCreationTime
        - reports
      type: object
      properties:
        reportCreationTime:
          type: string
          description: >-
            Date and time the report was generated in the timezone of the
            facility with no timezone offset indicator (ISO 8601 format, e.g.,
            2024-10-31T14:30:00)
          nullable: true
        reports:
          type: array
          items:
            $ref: >-
              #/components/schemas/ProductionSchedulerServer.Application.Features.Reports.Queries.GetProductionSummaryQuery.ProductionSummaryTotals
          description: The data for the response.
          nullable: true
      additionalProperties: false
      description: The report data for the production summary.
    ProductionSchedulerServer.Application.Features.Reports.Queries.GetProductionSummaryQuery.ProductionSummaryTotals:
      required:
        - stationName
        - stationType
      type: object
      properties:
        stationType:
          $ref: >-
            #/components/schemas/ProductionSchedulerServer.Domain.ValueTypes.ReportingStationType
        stationName:
          type: string
          description: The station name.
          nullable: true
        shift:
          type: string
          description: The shift.
          nullable: true
        crewSize:
          type: integer
          description: The size of the crew.
          format: int32
        totalTrusses:
          type: integer
          description: The total number of trusses.
          format: int32
        totalBdFt:
          type: number
          description: The total board feet.
          format: float
        totalPieces:
          type: integer
          description: The total number of pieces.
          format: int32
        totalManHours:
          type: number
          description: The total man-hours for this station and shift.
          format: float
        bdFtPerManHour:
          type: number
          description: The board feet per man-hour.
          format: float
      additionalProperties: false
      description: ''
    ProductionSchedulerServer.Application.Features.Reports.Queries.GetReportPathByIdQuery.ReportPathDto:
      type: object
      properties:
        ppgId:
          $ref: >-
            #/components/schemas/ProductionSchedulerServer.Domain.Entities.ProducerProductionGroups.ProducerProductionGroupId
        reportName:
          type: string
          description: Gets or sets the name of the report provided by sender.
          nullable: true
        reportPath:
          type: string
          description: |-
            Gets or sets the blob storage identifier of the report.
            {PpgId}/reports/{generated GUID}.pdf
          nullable: true
      additionalProperties: false
      description: Represents the DTO (Data Transfer Object) for report path.
    ProductionSchedulerServer.Application.Features.Reports.Queries.GetReportPathsByPpgIdQuery.PpgReportPathDto:
      type: object
      properties:
        reportName:
          type: string
          description: Gets or sets the Report Name of the report.
          nullable: true
        reportPath:
          type: string
          description: |-
            Gets or sets the blob storage identifier of the report.
            {PpgId}/reports/{generated GUID}.pdf
          nullable: true
      additionalProperties: false
      description: Represents the DTO (Data Transfer Object) for Report belonging to a PPG.
    ProductionSchedulerServer.Application.Features.Reports.Queries.GetTelerikReportsQuery.GetTelerikReportsResponse:
      type: object
      properties:
        name:
          type: string
          description: Gets or sets the name associated with the Telerik report.
          nullable: true
      additionalProperties: false
      description: Represents the response received after generating a Telerik report.
    ProductionSchedulerServer.Application.Features.Reports.ResponseMetadata:
      type: object
      properties:
        requestDate:
          type: string
          description: The date the request was made.
          format: date-time
        version:
          type: string
          description: The version of the response.
          nullable: true
      additionalProperties: false
      description: The metadata associated with the response.
    ProductionSchedulerServer.Application.Features.ShiftStatistics.Models.StationShiftStatistic:
      type: object
      properties:
        stationId:
          $ref: >-
            #/components/schemas/ProductionSchedulerServer.Domain.Entities.StationId
        stationName:
          type: string
          description: Station name.
          nullable: true
        currentBDFT:
          type: number
          description: Completed BDFT at the station.
          format: float
        targetBDFT:
          type: number
          description: Target BDFT at the station.
          format: float
      additionalProperties: false
      description: Station shift statistics.
    ProductionSchedulerServer.Application.Features.ShiftStatistics.Responses.ResponseMetadata:
      type: object
      properties:
        requestDate:
          type: string
          description: Request date.
          format: date-time
        version:
          type: string
          description: API version.
          nullable: true
      additionalProperties: false
      description: Metadata about the response, including the request date and API version.
    ProductionSchedulerServer.Application.Features.ShiftStatistics.Responses.ShiftStatisticsResponse:
      type: object
      properties:
        metadata:
          $ref: >-
            #/components/schemas/ProductionSchedulerServer.Application.Features.ShiftStatistics.Responses.ResponseMetadata
        data:
          type: array
          items:
            $ref: >-
              #/components/schemas/ProductionSchedulerServer.Application.Features.ShiftStatistics.Models.StationShiftStatistic
          description: List of station shift statistics.
          nullable: true
      additionalProperties: false
      description: >-
        Current shift statistics for a station, including the daily production
        target.
    ProductionSchedulerServer.Application.Features.Stations.Commands.UpdateStationCrewSize.UpdateStationCrewSizeRequest:
      required:
        - areaId
        - stationId
      type: object
      properties:
        areaId:
          $ref: >-
            #/components/schemas/ProductionSchedulerServer.Domain.Entities.AreaId
        stationId:
          $ref: >-
            #/components/schemas/ProductionSchedulerServer.Domain.Entities.StationId
        crewSize:
          type: integer
          description: Gets or sets the crew size.
          format: int32
      additionalProperties: false
      description: Request to update the crew size for a station.
    ProductionSchedulerServer.Application.Features.Svgs.Commands.UploadSvg.UploadSvgCommand:
      required:
        - file
      type: object
      properties:
        ppgId:
          $ref: >-
            #/components/schemas/ProductionSchedulerServer.Domain.Entities.ProducerProductionGroups.ProducerProductionGroupId
        componentId:
          type: string
          description: Gets or sets the Component Id of the SVG.
          format: uuid
        file:
          type: string
          description: The SVG file to upload to Azure Front Door.
          format: binary
          nullable: true
      additionalProperties: false
      description: Represents a command to upload a Card SVG file.
    ProductionSchedulerServer.Application.Features.Svgs.Commands.UploadSvg.UploadSvgDto:
      type: object
      properties:
        id:
          $ref: >-
            #/components/schemas/ProductionSchedulerServer.Domain.Entities.Svgs.SvgId
        ppgId:
          $ref: >-
            #/components/schemas/ProductionSchedulerServer.Domain.Entities.ProducerProductionGroups.ProducerProductionGroupId
        componentId:
          type: string
          description: Gets or sets the Component Id of the SVG.
          format: uuid
        url:
          type: string
          description: Gets or sets the URL of the SVG.
          nullable: true
      additionalProperties: false
      description: DTO for uploading an SVG.
    ProductionSchedulerServer.Application.Features.Svgs.Queries.GetSvgUrlByPpgId.SvgUrlByPpgDto:
      type: object
      properties:
        ppgId:
          $ref: >-
            #/components/schemas/ProductionSchedulerServer.Domain.Entities.ProducerProductionGroups.ProducerProductionGroupId
        componentId:
          type: string
          description: Gets or sets the component id of the SVG.
          format: uuid
        url:
          type: string
          description: Gets or sets the URL of the SVG.
          nullable: true
      additionalProperties: false
      description: Represents the DTO (Data Transfer Object) for SVG URL.
    ProductionSchedulerServer.Application.Features.Svgs.Queries.GetSvgUrlByPpgIdAndComponentId.SvgUrlResponse:
      type: object
      properties:
        url:
          type: string
          description: The URL to the SVG resource for a specified component identifier.
          nullable: true
      additionalProperties: false
      description: >-
        Represents the response containing the URL to an SVG resource for a
        specified component identifier.
    ProductionSchedulerServer.Domain.Entities.AreaId:
      type: object
      properties:
        value:
          type: string
          format: uuid
      additionalProperties: false
    ProductionSchedulerServer.Domain.Entities.Cards.CardId:
      type: integer
      additionalProperties: false
      format: int32
    ProductionSchedulerServer.Domain.Entities.ProducerProductionGroups.ProducerProductionGroupId:
      type: integer
      additionalProperties: false
      format: int32
    ProductionSchedulerServer.Domain.Entities.Reports.ReportId:
      type: integer
      additionalProperties: false
      format: int32
    ProductionSchedulerServer.Domain.Entities.Settings.UpdateSettingRequest:
      type: object
      properties:
        setting:
          type: string
          nullable: true
        value:
          type: string
          nullable: true
      additionalProperties: false
    ProductionSchedulerServer.Domain.Entities.StationId:
      type: object
      properties:
        value:
          type: string
          format: uuid
      additionalProperties: false
    ProductionSchedulerServer.Domain.Entities.Svgs.SvgId:
      type: integer
      additionalProperties: false
      format: int32
    ProductionSchedulerServer.Domain.ValueTypes.ReportingStationType:
      enum:
        - Saw
        - FloorTable
        - RoofTable
        - Support
      type: string
    ProductionSchedulerServer.Domain.ValueTypes.StationState:
      enum:
        - ''
        - waiting
        - in progress
        - complete
      type: string
  securitySchemes:
    Bearer:
      type: apiKey
      description: JSON Web Token based security
      name: Authorization
      in: header
security:
  - Bearer:
      - ''
