---
openapi: 3.0.3
info:
  title: Get Production Forecast
  version: v2
servers:
- url: catenax.io/api/v2
  variables:
    api-version:
      default: v2
paths:
  /{tenant-id}/get-production-forecast:
    get:
      tags:
      - GetProductionForecast
      operationId: getGetProductionForecast
      parameters:
      - name: tenant-id
        in: path
        description: The ID of the tenant owning the requested Twin.
        required: true
        schema:
          type: string
          format: uuid
      responses:
        "200":
          $ref: '#/components/responses/GetProductionForecast'
        "401":
          $ref: '#/components/responses/ClientError'
        "402":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFoundError'
  /relatedMessageId/{messageId}:
    delete:
      summary: Client unsubscribing from information pushes
      operationId: Unsubscribe
      parameters:
        - name: messageId
          in: path
          description: which message to unsubscribe from
          required: true
          schema:
            type: string
            format: uuid4
      responses:
        "200":
          $ref: '#/components/responses/GetProductionForecast'
        "401":
          $ref: '#/components/responses/ClientError'
        "402":
          $ref: '#/components/responses/Unauthorized'
        "403":
          $ref: '#/components/responses/Forbidden'
        "404":
          $ref: '#/components/responses/NotFoundError'
components:
  schemas:
    ErrorResponse:
      type: object
      required:
      - error
      properties:
        error:
          $ref: '#/components/schemas/Error'
    Error:
      type: object
      required:
      - details
      properties:
        message:
          type: string
          minLength: 1
        path:
          type: string
          minLength: 1
        details:
          type: object
          minLength: 1
          additionalProperties:
            type: object
        code:
          type: string
          nullable: true
    urn_samm_io.catenax.shared.shopfloor_information_types_2.0.0_TimeUnitEnum:
      type: string
      pattern: "[a-zA-Z]*:[a-zA-Z]+"
      description: Enumerates all time units
      enum:
      - unit:secondUnitOfTime
      - unit:minuteUnitOfTime
      - unit:hour
      - unit:day
      - unit:week
      - unit:month
      - unit:year
    urn_samm_io.catenax.shared.shopfloor_information_types_2.0.0_IntegerValueCharacteristic:
      type: number
      description: The value of the specified timeUnit as an integer value
    urn_samm_io.catenax.shared.shopfloor_information_types_2.0.0_TimeValueCharacteristic:
      description: Link to the  TimeUnit Data Type
      type: object
      properties:
        timeUnit:
          description: Specifies the unit in which the time is represented
          $ref: '#/components/schemas/urn_samm_io.catenax.shared.shopfloor_information_types_2.0.0_TimeUnitEnum'
        value:
          description: The amount of timeUnits considered
          $ref: '#/components/schemas/urn_samm_io.catenax.shared.shopfloor_information_types_2.0.0_IntegerValueCharacteristic'
      required:
      - timeUnit
      - value
    urn_samm_io.catenax.shared.business_partner_number_1.0.0_BpnlTrait:
      type: string
      description: "The provided regular expression ensures that the BPNL is composed\
        \ of prefix 'BPNL', 10 digits and two uppercase letters."
      pattern: "^BPNL[0-9]{8}[a-zA-Z0-9]{4}$"
    urn_samm_org.eclipse.esmf.samm_characteristic_2.1.0_Boolean:
      type: boolean
      description: Represents a boolean value (i.e. a "flag").
    urn_samm_io.catenax.shared.uuid_1.0.0_UuidV4Trait:
      type: string
      description: "The provided regular expression ensures that the UUID is composed\
        \ of five groups of characters separated by hyphens, in the form 8-4-4-4-12\
        \ for a total of 36 characters (32 hexadecimal characters and 4 hyphens),\
        \ optionally prefixed by \"urn:uuid:\" to make it an IRI."
      pattern: "(^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$)|(^urn:uuid:[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$)"
    urn_samm_io.catenax.shared.shopfloor_information_types_2.0.0_CommunicationModeEnum:
      type: string
      description: Enumerates all possible communication modes
      enum:
      - synchronous
      - cyclic
      - notification
    urn_samm_io.catenax.shared.message_header_2.0.0_SemanticVersioningTrait:
      type: string
      description: Constraint for defining a SemVer version.
      pattern: "^(0|[1-9][0-9]*).(0|[1-9][0-9]*).(0|[1-9][0-9]*)(-(0|[1-9A-Za-z-][0-9A-Za-z-]*)(.[0-9A-Za-z-]+)*)?([0-9A-Za-z-]+(.[0-9A-Za-z-]+)*)?$"
    urn_samm_io.catenax.shopfloor_information.get_production_forecast_2.0.0_RequestCharacteristic:
      description: Data type for a request
      type: object
      properties:
        offset:
          description: |-
            Send/start time of the first message/notification
            - "0" ==> immediate response
          $ref: '#/components/schemas/urn_samm_io.catenax.shared.shopfloor_information_types_2.0.0_TimeValueCharacteristic'
        customerId:
          description: Internal customer Id
          $ref: '#/components/schemas/urn_samm_io.catenax.shared.business_partner_number_1.0.0_BpnlTrait'
        precisionOfForecast:
          description: |-
            Accuracy of the time specification of the completion date.
            - default: implicitly defined by production
            - only as a REQUEST of the requester since it cannot be guaranteed that the store floor can provide the data in this accuracy.
          $ref: '#/components/schemas/urn_samm_io.catenax.shared.shopfloor_information_types_2.0.0_TimeValueCharacteristic'
        productionForecastForAll:
          description: "Boolean variable that detemines whether the customer request\
            \ information about each position of an order, or information about the\
            \ complete order"
          $ref: '#/components/schemas/urn_samm_org.eclipse.esmf.samm_characteristic_2.1.0_Boolean'
        orderId:
          description: The Id identifying subject of the request
          $ref: '#/components/schemas/urn_samm_io.catenax.shared.uuid_1.0.0_UuidV4Trait'
        deviationOfSchedule:
          description: |-
            Mandatory property for the notification mode. The property specifies the deviation from targeted delivery date that must be met to send a notification to a subscriber

            mandatory for CommunicationMode = "notification"
          $ref: '#/components/schemas/urn_samm_io.catenax.shared.shopfloor_information_types_2.0.0_TimeValueCharacteristic'
        notificationInterval:
          description: |-
            Interval time that either specifies the cyclic send time or limits the notification time
            mandatory for CommunicationMode = "cyclic"
          $ref: '#/components/schemas/urn_samm_io.catenax.shared.shopfloor_information_types_2.0.0_TimeValueCharacteristic'
        communicationMode:
          description: Specification of the communication mode
          $ref: '#/components/schemas/urn_samm_io.catenax.shared.shopfloor_information_types_2.0.0_CommunicationModeEnum'
        version:
          description: The unique identifier of the aspect model defining the structure
            and the semantics of the message's header. The version number should reflect
            the versioning schema of aspect models in Catena-X.
          $ref: '#/components/schemas/urn_samm_io.catenax.shared.message_header_2.0.0_SemanticVersioningTrait'
      required:
      - offset
      - customerId
      - productionForecastForAll
      - orderId
      - communicationMode
      - version
    urn_samm_io.catenax.shared.message_header_2.0.0_ContextCharacteristic:
      type: string
      description: Defining a string value for the context
    urn_samm_org.eclipse.esmf.samm_characteristic_2.1.0_Timestamp:
      type: string
      pattern: "-?([1-9][0-9]{3,}|0[0-9]{3})-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])T(([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](\\\
        .[0-9]+)?|(24:00:00(\\.0+)?))(Z|(\\+|-)((0[0-9]|1[0-3]):[0-5][0-9]|14:00))?"
      description: Describes a Property which contains the date and time with an optional
        timezone.
    urn_samm_io.catenax.shared.message_header_2.0.0_HeaderCharacteristic:
      description: Characteristic describing the common shared aspect Message Header
      type: object
      properties:
        messageId:
          description: "Unique ID identifying the message. The purpose of the ID is\
            \ to uniquely identify a single message, therefore it MUST not be reused."
          $ref: '#/components/schemas/urn_samm_io.catenax.shared.uuid_1.0.0_UuidV4Trait'
        context:
          description: |-
            Information about the context the message should be considered in.
            The value MUST consist of two parts: an identifier of the context (e.g. business domain, etc.) followed by a version number.
            Both the identifier and the version number MUST correspond to the content of the message.
            If the content of a message is described by an aspect model available in the Catena-X Semantic Hub, then the unique identifier of this semantic model (e.g. urn:samm:io.catenax.<ASPECT-MODEL-NAME>:1.x.x) MUST be used as a value of the context field. This is considered the default case.
            In all other cases the value of the context field MUST follow the pattern <domain>-<subdomain>-<object>:<[major] version> (e.g. TRACE-QM-Alert:1.x.x).
            Versioning only refers to major versions in both default and fallback cases.
            Note: The version of the message's header is specified in the version field.
          $ref: '#/components/schemas/urn_samm_io.catenax.shared.message_header_2.0.0_ContextCharacteristic'
        sentDateTime:
          description: Time zone aware timestamp holding the date and the time the
            message was sent by the sending party. The value MUST be formatted according
            to the ISO 8601 standard
          $ref: '#/components/schemas/urn_samm_org.eclipse.esmf.samm_characteristic_2.1.0_Timestamp'
        senderBpn:
          description: The Business Partner Number of the sending party. The value
            MUST be a valid BPN. BPNA and BPNS are not allowed. Applicable constraints
            are defined in the corresponding standard
          $ref: '#/components/schemas/urn_samm_io.catenax.shared.business_partner_number_1.0.0_BpnlTrait'
        receiverBpn:
          description: The Business Partner Number of the receiving party. The value
            MUST be a valid BPN. BPNA and BPNS are not allowed. Applicable constraints
            are defined in the corresponding standard.
          $ref: '#/components/schemas/urn_samm_io.catenax.shared.business_partner_number_1.0.0_BpnlTrait'
        expectedResponseBy:
          description: Time zone aware timestamp holding the date and time by which
            the sending party expects a certain type of response from the receiving
            party. The meaning and interpretation of the fields's value are context-bound
            and MUST therefore be defined by any business domain or platform capability
            making use of it. The value MUST be formatted according to the ISO 8601
            standard
          $ref: '#/components/schemas/urn_samm_org.eclipse.esmf.samm_characteristic_2.1.0_Timestamp'
        relatedMessageId:
          description: Unique ID identifying a message somehow related to the current
            one
          $ref: '#/components/schemas/urn_samm_io.catenax.shared.uuid_1.0.0_UuidV4Trait'
        version:
          description: The unique identifier of the aspect model defining the structure
            and the semantics of the message's header. The version number should reflect
            the versioning schema of aspect models in Catena-X.
          $ref: '#/components/schemas/urn_samm_io.catenax.shared.message_header_2.0.0_SemanticVersioningTrait'
      required:
      - messageId
      - context
      - sentDateTime
      - senderBpn
      - receiverBpn
      - version
    GetProductionForecast:
      description: Aspect Model to request a production forecast
      type: object
      properties:
        request:
          description: Data model for a request
          $ref: '#/components/schemas/urn_samm_io.catenax.shopfloor_information.get_production_forecast_2.0.0_RequestCharacteristic'
        header:
          description: Contains standardized attributes for message processing common
            across several use cases.
          $ref: '#/components/schemas/urn_samm_io.catenax.shared.message_header_2.0.0_HeaderCharacteristic'
      required:
      - header
  responses:
    Unauthorized:
      description: The requesting user or client is not authenticated.
    Forbidden:
      description: The requesting user or client is not authorized to access resources
        for the given tenant.
    NotFoundError:
      description: The requested Twin has not been found.
    ClientError:
      description: Payload or user input is invalid. See error details in the payload
        for more.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    GetProductionForecast:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/GetProductionForecast'
      description: The request was successful.
  requestBodies:
    GetProductionForecast:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/GetProductionForecast'
