openapi: 3.1.0
info:
  title: FIT Appointment Management
  description: "An Appointment is an arrangement to do something or meet someone at a particular time and place. It is previously made during an interaction or may be necessary to solve a customer problem or to deliver a product order item. The appointment API goal is to manage an appointment with all the necessary characteristics. First, the API consists in searching free time slots based on given parameters.\n\n#### TMF API Reference\n   TMF 646 - Appointment v4.0.0\t(01-Jul-2021)\n\n#### FIT Adaptations\n  Appointment: PATCH & DELETE are not used for FIT\n\n  SearchTimeSlot: PATCH & DELETE are not used for FIT\n\n#### Sources\n  The source API definition can be found at [fit-tmf646.yaml](https://bitbucket.org/fit-api/fit-api/src/tmf646_v1.0.0/tmf646/oas/fit-tmf646.yaml)"
  version: '1.0.0'
servers:
  - url: https://api.example.com/tmf-api/appointmentManagement/v5
  - url: http://localhost:8080/tmf-api/appointmentManagement/v5
security:
  - OAuth2ClientCredentials:
      - read
      - write
tags:
  - name: appointment
  - name: searchTimeSlot
  - name: notification listeners (client side)
paths:
  /appointment:
    get:
      operationId: listAppointment
      summary: List or find Appointment objects
      description: This operation list or find Appointment entities
      parameters:
        - $ref: '#/components/parameters/Fields'
        - $ref: '#/components/parameters/Offset'
        - $ref: '#/components/parameters/Limit'
      responses:
        '200':
          $ref: '#/components/responses/200AppointmentArray'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '405':
          $ref: '#/components/responses/405'
        '500':
          $ref: '#/components/responses/500'
        '501':
          $ref: '#/components/responses/501'
        '503':
          $ref: '#/components/responses/503'
      security:
        - OAuth2ClientCredentials:
            - read
      tags:
        - appointment
    post:
      operationId: createAppointment
      summary: Creates a Appointment
      description: This operation creates a Appointment entity.
      parameters:
        - $ref: '#/components/parameters/Fields'
      requestBody:
        $ref: '#/components/requestBodies/Appointment_FVO'
      responses:
        '201':
          $ref: '#/components/responses/201Appointment'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '405':
          $ref: '#/components/responses/405'
        '409':
          $ref: '#/components/responses/409'
        '500':
          $ref: '#/components/responses/500'
        '501':
          $ref: '#/components/responses/501'
        '503':
          $ref: '#/components/responses/503'
      security:
        - OAuth2ClientCredentials:
            - write
      tags:
        - appointment
  /appointment/{id}:
    get:
      operationId: retrieveAppointment
      summary: Retrieves a Appointment by ID
      description: This operation retrieves a Appointment entity. Attribute selection is enabled for all first level attributes.
      parameters:
        - $ref: '#/components/parameters/Id'
        - $ref: '#/components/parameters/Fields'
      responses:
        '200':
          $ref: '#/components/responses/200Appointment_Get'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '405':
          $ref: '#/components/responses/405'
        '500':
          $ref: '#/components/responses/500'
        '501':
          $ref: '#/components/responses/501'
        '503':
          $ref: '#/components/responses/503'
      security:
        - OAuth2ClientCredentials:
            - read
      tags:
        - appointment
  /searchTimeSlot:
    get:
      operationId: listSearchTimeSlot
      summary: List or find SearchTimeSlot objects
      description: This operation list or find SearchTimeSlot entities
      parameters:
        - $ref: '#/components/parameters/Fields'
        - $ref: '#/components/parameters/Offset'
        - $ref: '#/components/parameters/Limit'
      responses:
        '200':
          $ref: '#/components/responses/200SearchTimeSlotArray'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '405':
          $ref: '#/components/responses/405'
        '500':
          $ref: '#/components/responses/500'
        '501':
          $ref: '#/components/responses/501'
        '503':
          $ref: '#/components/responses/503'
      security:
        - OAuth2ClientCredentials:
            - read
      tags:
        - searchTimeSlot
    post:
      operationId: createSearchTimeSlot
      summary: Creates a SearchTimeSlot
      description: This operation creates a SearchTimeSlot entity.
      parameters:
        - $ref: '#/components/parameters/Fields'
      requestBody:
        $ref: '#/components/requestBodies/SearchTimeSlot_FVO'
      responses:
        '201':
          $ref: '#/components/responses/201SearchTimeSlot'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '405':
          $ref: '#/components/responses/405'
        '409':
          $ref: '#/components/responses/409'
        '500':
          $ref: '#/components/responses/500'
        '501':
          $ref: '#/components/responses/501'
        '503':
          $ref: '#/components/responses/503'
      security:
        - OAuth2ClientCredentials:
            - write
      tags:
        - searchTimeSlot
  /searchTimeSlot/{id}:
    get:
      operationId: retrieveSearchTimeSlot
      summary: Retrieves a SearchTimeSlot by ID
      description: This operation retrieves a SearchTimeSlot entity. Attribute selection is enabled for all first level attributes.
      parameters:
        - $ref: '#/components/parameters/Id'
        - $ref: '#/components/parameters/Fields'
      responses:
        '200':
          $ref: '#/components/responses/200SearchTimeSlot_Get'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '405':
          $ref: '#/components/responses/405'
        '500':
          $ref: '#/components/responses/500'
        '501':
          $ref: '#/components/responses/501'
        '503':
          $ref: '#/components/responses/503'
      security:
        - OAuth2ClientCredentials:
            - read
      tags:
        - searchTimeSlot
  /listener/appointmentCreateEvent:
    post:
      operationId: listenToAppointmentCreateEvent
      summary: Client listener for entity AppointmentCreateEvent
      description: Example of a client listener for receiving the notification AppointmentCreateEvent
      requestBody:
        $ref: '#/components/requestBodies/AppointmentCreateEvent'
      responses:
        '204':
          $ref: '#/components/responses/204Notified'
        default:
          $ref: '#/components/responses/DefaultError'
      tags:
        - notification listeners (client side)
  /listener/appointmentAttributeValueChangeEvent:
    post:
      operationId: listenToAppointmentAttributeValueChangeEvent
      summary: Client listener for entity AppointmentAttributeValueChangeEvent
      description: Example of a client listener for receiving the notification AppointmentAttributeValueChangeEvent
      requestBody:
        $ref: '#/components/requestBodies/AppointmentAttributeValueChangeEvent'
      responses:
        '204':
          $ref: '#/components/responses/204Notified'
        default:
          $ref: '#/components/responses/DefaultError'
      tags:
        - notification listeners (client side)
  /listener/appointmentStateChangeEvent:
    post:
      operationId: listenToAppointmentStateChangeEvent
      summary: Client listener for entity AppointmentStateChangeEvent
      description: Example of a client listener for receiving the notification AppointmentStateChangeEvent
      requestBody:
        $ref: '#/components/requestBodies/AppointmentStateChangeEvent'
      responses:
        '204':
          $ref: '#/components/responses/204Notified'
        default:
          $ref: '#/components/responses/DefaultError'
      tags:
        - notification listeners (client side)
  /listener/appointmentDeleteEvent:
    post:
      operationId: listenToAppointmentDeleteEvent
      summary: Client listener for entity AppointmentDeleteEvent
      description: Example of a client listener for receiving the notification AppointmentDeleteEvent
      requestBody:
        $ref: '#/components/requestBodies/AppointmentDeleteEvent'
      responses:
        '204':
          $ref: '#/components/responses/204Notified'
        default:
          $ref: '#/components/responses/DefaultError'
      tags:
        - notification listeners (client side)
  /listener/searchTimeSlotAttributeValueChangeEvent:
    post:
      operationId: listenToSearchTimeSlotAttributeValueChangeEvent
      summary: Client listener for entity SearchTimeSlotAttributeValueChangeEvent
      description: Example of a client listener for receiving the notification SearchTimeSlotAttributeValueChangeEvent
      requestBody:
        $ref: '#/components/requestBodies/SearchTimeSlotAttributeValueChangeEvent'
      responses:
        '204':
          $ref: '#/components/responses/204Notified'
        default:
          $ref: '#/components/responses/DefaultError'
      tags:
        - notification listeners (client side)
  /listener/searchTimeSlotStateChangeEvent:
    post:
      operationId: listenToSearchTimeSlotStateChangeEvent
      summary: Client listener for entity SearchTimeSlotStateChangeEvent
      description: Example of a client listener for receiving the notification SearchTimeSlotStateChangeEvent
      requestBody:
        $ref: '#/components/requestBodies/SearchTimeSlotStateChangeEvent'
      responses:
        '204':
          $ref: '#/components/responses/204Notified'
        default:
          $ref: '#/components/responses/DefaultError'
      tags:
        - notification listeners (client side)
components:
  schemas:
    Appointment:
      description: An Appointment is an arrangement to do something or meet someone at a particular time, at a place (for face to face appointment) or in a contact medium (for phone appointment).
      type: object
      properties:
        category:
          description: 'Business category : intervention for example or to be more precise after SalesIntervention, orderDeliveryIntervention,...'
          type: string
        creationDate:
          description: Appointment creation date
          type: string
          format: date-time
        description:
          description: Short free text describing the appointment
          type: string
        externalId:
          type: string
        externalIdentifier:
          type: array
          items:
            $ref: '#/components/schemas/ExternalIdentifier'
        lastUpdate:
          description: Date of last appointment update
          type: string
          format: date-time
        attachment:
          type: array
          items:
            $ref: '#/components/schemas/AttachmentRefOrValue'
        note:
          type: array
          items:
            $ref: '#/components/schemas/Note'
        relatedEntity:
          type: array
          items:
            $ref: '#/components/schemas/AppointmentRelatedEntityRefOrValue'
        status:
          $ref: '#/components/schemas/AppointmentStatusType'
        validFor:
          $ref: '#/components/schemas/TimePeriod'
      allOf:
        - $ref: '#/components/schemas/Entity'
      discriminator:
        propertyName: '@type'
        mapping:
          Appointment: '#/components/schemas/Appointment'
      required:
        - validFor
    Appointment_FVO:
      description: |-
        An Appointment is an arrangement to do something or meet someone at a particular time, at a place (for face to face appointment) or in a contact medium (for phone appointment).
        Skipped properties: id,href,status,creationDate,lastUpdate
      type: object
      properties:
        category:
          description: 'Business category : intervention for example or to be more precise after SalesIntervention, orderDeliveryIntervention,...'
          type: string
        description:
          description: Short free text describing the appointment
          type: string
        externalId:
          type: string
        externalIdentifier:
          type: array
          items:
            $ref: '#/components/schemas/ExternalIdentifier'
        attachment:
          type: array
          items:
            $ref: '#/components/schemas/AttachmentRefOrValue'
        note:
          type: array
          items:
            $ref: '#/components/schemas/Note'
        relatedEntity:
          type: array
          items:
            $ref: '#/components/schemas/AppointmentRelatedEntityRefOrValue'
        validFor:
          $ref: '#/components/schemas/TimePeriod'
      allOf:
        - $ref: '#/components/schemas/Entity'
      discriminator:
        propertyName: '@type'
        mapping:
          Appointment_FVO: '#/components/schemas/Appointment_FVO'
      required:
        - validFor
    AppointmentStatusType:
      description: Valid values for the lifecycle state of the appointment
      type: string
      enum:
        - initialized
        - confirmed
        - cancelled
        - completed
        - failed
    SearchTimeSlot:
      description: This task resource is used to retrieve available time slots. One of this available time slot is after used to create or reschedule an appointment
      type: object
      properties:
        appointmentCategory:
          description: defines the category of appointment time slots are searched for
          type: string
        externalIdentifier:
          type: array
          items:
            $ref: '#/components/schemas/ExternalIdentifier'
        requestDate:
          description: Date when the search time slot was requested
          type: string
          format: date-time
        requestPostedDate:
          description: Date when the request was posted
          type: string
          format: date-time
        searchResult:
          description: Result of the search time slot (success or fail for example)
          type: string
        state:
          $ref: '#/components/schemas/TaskStateType'
        stateChangeDate:
          description: The date and time the state changed.
          type: string
          format: date-time
        stateChangeMessage:
          description: Message for the state change described as a combination of a text and a code.
          type: array
          items:
            $ref: '#/components/schemas/Message'
          example: []
        stateChangeHistory:
          type: array
          items:
            $ref: '#/components/schemas/StateChange'
        availableTimeSlot:
          type: array
          items:
            $ref: '#/components/schemas/TimeSlot'
        relatedEntity:
          type: array
          items:
            $ref: '#/components/schemas/SearchTimeSlotRelatedEntityRefOrValue'
        requestedTimeSlot:
          type: array
          items:
            $ref: '#/components/schemas/TimeSlot'
      allOf:
        - $ref: '#/components/schemas/Entity'
      discriminator:
        propertyName: '@type'
        mapping:
          SearchTimeSlot: '#/components/schemas/SearchTimeSlot'
    SearchTimeSlot_FVO:
      description: |-
        This task resource is used to retrieve available time slots. One of this available time slot is after used to create or reschedule an appointment
        Skipped properties: id,href,searchResult,availableTimeSlot,requestPostedDate,state,stateChangeDate,stateChangeMessage,stateChangeHistory
      type: object
      properties:
        appointmentCategory:
          description: defines the category of appointment time slots are searched for
          type: string
        externalIdentifier:
          type: array
          items:
            $ref: '#/components/schemas/ExternalIdentifier'
        requestDate:
          description: Date when the search time slot was requested
          type: string
          format: date-time
        relatedEntity:
          type: array
          items:
            $ref: '#/components/schemas/SearchTimeSlotRelatedEntityRefOrValue'
        requestedTimeSlot:
          type: array
          items:
            $ref: '#/components/schemas/TimeSlot'
      allOf:
        - $ref: '#/components/schemas/Entity'
      discriminator:
        propertyName: '@type'
        mapping:
          SearchTimeSlot_FVO: '#/components/schemas/SearchTimeSlot_FVO'
    AppointmentCreateEvent:
      description: The notification data structure
      type: object
      properties:
        event:
          $ref: '#/components/schemas/AppointmentCreateEventPayload'
      allOf:
        - $ref: '#/components/schemas/Event'
      discriminator:
        propertyName: '@type'
        mapping:
          AppointmentCreateEvent: '#/components/schemas/AppointmentCreateEvent'
    AppointmentCreateEventPayload:
      description: The event data structure
      type: object
      properties:
        appointment:
          $ref: '#/components/schemas/Appointment'
    AppointmentAttributeValueChangeEvent:
      description: The notification data structure
      type: object
      properties:
        event:
          $ref: '#/components/schemas/AppointmentAttributeValueChangeEventPayload'
      allOf:
        - $ref: '#/components/schemas/Event'
      discriminator:
        propertyName: '@type'
        mapping:
          AppointmentAttributeValueChangeEvent: '#/components/schemas/AppointmentAttributeValueChangeEvent'
    AppointmentAttributeValueChangeEventPayload:
      description: The event data structure
      type: object
      properties:
        appointment:
          $ref: '#/components/schemas/Appointment'
    AppointmentStateChangeEvent:
      description: The notification data structure
      type: object
      properties:
        event:
          $ref: '#/components/schemas/AppointmentStateChangeEventPayload'
      allOf:
        - $ref: '#/components/schemas/Event'
      discriminator:
        propertyName: '@type'
        mapping:
          AppointmentStateChangeEvent: '#/components/schemas/AppointmentStateChangeEvent'
    AppointmentStateChangeEventPayload:
      description: The event data structure
      type: object
      properties:
        appointment:
          $ref: '#/components/schemas/Appointment'
    AppointmentDeleteEvent:
      description: The notification data structure
      type: object
      properties:
        event:
          $ref: '#/components/schemas/AppointmentDeleteEventPayload'
      allOf:
        - $ref: '#/components/schemas/Event'
      discriminator:
        propertyName: '@type'
        mapping:
          AppointmentDeleteEvent: '#/components/schemas/AppointmentDeleteEvent'
    AppointmentDeleteEventPayload:
      description: The event data structure
      type: object
      properties:
        appointment:
          $ref: '#/components/schemas/Appointment'
    SearchTimeSlotAttributeValueChangeEvent:
      description: The notification data structure
      type: object
      properties:
        event:
          $ref: '#/components/schemas/SearchTimeSlotAttributeValueChangeEventPayload'
      allOf:
        - $ref: '#/components/schemas/Event'
      discriminator:
        propertyName: '@type'
        mapping:
          SearchTimeSlotAttributeValueChangeEvent: '#/components/schemas/SearchTimeSlotAttributeValueChangeEvent'
    SearchTimeSlotAttributeValueChangeEventPayload:
      description: The event data structure
      type: object
      properties:
        searchTimeSlot:
          $ref: '#/components/schemas/SearchTimeSlot'
    SearchTimeSlotStateChangeEvent:
      description: The notification data structure
      type: object
      properties:
        event:
          $ref: '#/components/schemas/SearchTimeSlotStateChangeEventPayload'
      allOf:
        - $ref: '#/components/schemas/Event'
      discriminator:
        propertyName: '@type'
        mapping:
          SearchTimeSlotStateChangeEvent: '#/components/schemas/SearchTimeSlotStateChangeEvent'
    SearchTimeSlotStateChangeEventPayload:
      description: The event data structure
      type: object
      properties:
        searchTimeSlot:
          $ref: '#/components/schemas/SearchTimeSlot'
    AppointmentRelatedEntityRefOrValue:
      description: A reference to an entity, where the type of the entity is not known in advance. A related entity defines a entity described by reference or by value linked to a specific entity. The polymorphic attributes @type, @schemaLocation & @referredType are related to the Entity and not the RelatedEntityRefOrValue class itself. Related entities are differentiated by role (e.g., affectedProduct, troubleTicket, searchTimeSlot, availableTimeSlot, buyerServiceContract, ordererServiceContract, singleContract, productOrder). The role-to-entity mapping is documented but not enforced in the schema.
      type: object
      allOf:
        - $ref: '#/components/schemas/Extensible'
        - type: object
          required:
            - role
            - entity
          properties:
            role:
              description: Role played by the related entity
              type: string
            entity:
              $ref: '#/components/schemas/AppointmentEntityRefOrValue'
    AppointmentEntityRefOrValue:
      description: An entity ref or value (Appointment)
      type: object
      discriminator:
        propertyName: '@type'
      oneOf:
        - $ref: '#/components/schemas/Agreement'
        - $ref: '#/components/schemas/ProductRef'
        - $ref: '#/components/schemas/TroubleTicketRef'
        - $ref: '#/components/schemas/SearchTimeslotRef'
        - $ref: '#/components/schemas/AvailableTimeslotRef'
        - $ref: '#/components/schemas/ProductOrderRef'
    SearchTimeSlotRelatedEntityRefOrValue:
      description: A reference to an entity, where the type of the entity is not known in advance. A related entity defines a entity described by reference or by value linked to a specific entity. The polymorphic attributes @type, @schemaLocation & @referredType are related to the Entity and not the RelatedEntityRefOrValue class itself. Related entities are differentiated by role (e.g., affectedProduct, troubleTicket, buyerServiceContract, ordererServiceContract, optionalServices, affectedQualification, affectedQualificationItem, affectedProductOrder). The role-to-entity mapping is documented but not enforced in the schema.
      type: object
      allOf:
        - $ref: '#/components/schemas/Extensible'
        - type: object
          required:
            - role
            - entity
          properties:
            role:
              description: Role played by the related entity
              type: string
            entity:
              $ref: '#/components/schemas/SearchTimeSlotEntityRefOrValue'
    SearchTimeSlotEntityRefOrValue:
      description: An entity ref or value (SearchTimeSlot)
      type: object
      discriminator:
        propertyName: '@type'
      oneOf:
        - $ref: '#/components/schemas/ProductOffering'
        - $ref: '#/components/schemas/Agreement'
        - $ref: '#/components/schemas/ProductRef'
        - $ref: '#/components/schemas/TroubleTicketRef'
        - $ref: '#/components/schemas/QueryProductOfferingQualificationRef'
        - $ref: '#/components/schemas/QueryProductOfferingQualificationItemRef'
        - $ref: '#/components/schemas/ProductOrderRef'
    SearchTimeslotRef:
      description: SearchTimeslot reference.
      type: object
      allOf:
        - $ref: '#/components/schemas/EntityRef'
    AvailableTimeslotRef:
      description: AvailableTimeslot reference.
      type: object
      allOf:
        - $ref: '#/components/schemas/EntityRef'
    QueryProductOfferingQualificationRef:
      description: QueryProductOfferingQualification reference.
      type: object
      allOf:
        - $ref: '#/components/schemas/EntityRef'
    QueryProductOfferingQualificationItemRef:
      description: QueryProductOfferingQualificationItem reference.
      type: object
      allOf:
        - $ref: '#/components/schemas/EntityRef'
    ProductOrderRef:
      description: ProductOrder reference.
      type: object
      allOf:
        - $ref: '#/components/schemas/EntityRef'
    Extensible:
      description: Base Extensible schema for use in TMForum Open-APIs - When used for in a schema it means that the Entity described by the schema  MUST be extended with the @type
      type: object
      properties:
        '@type':
          description: When sub-classing, this defines the sub-class Extensible name
          type: string
          example: ''
        '@baseType':
          description: When sub-classing, this defines the super-class
          type: string
          example: ''
        '@schemaLocation':
          description: A URI to a JSON-Schema file that defines additional attributes and relationships
          type: string
          example: ''
      discriminator:
        propertyName: '@type'
      required:
        - '@type'
    Entity:
      description: Base entity schema for use in TMForum Open-APIs.
      allOf:
        - $ref: '#/components/schemas/Extensible'
        - type: object
          properties:
            id:
              description: Unique identifier
              type: string
              example: 2d7ed5fd-9f62-4211-bc84-357f5f7b80f5
            href:
              description: Hyperlink reference
              type: string
              format: uri
              example: https://api.example.org/resource/id
    ExternalIdentifier:
      description: An identification of an entity that is owned by or originates in a software system different from the current system, for example a ProductOrder handed off from a commerce platform into an order handling system. The structure identifies the system itself, the nature of the entity within the system (e.g. class name) and the unique ID of the entity within the system. It is anticipated that multiple external IDs can be held for a single entity, e.g. if the entity passed through multiple systems on the way to the current system. In this case the consumer is expected to sequence the IDs in the array in reverse order of provenance, i.e. most recent system first in the list.
      allOf:
        - $ref: '#/components/schemas/Extensible'
        - type: object
          properties:
            id:
              description: Unique identifier
              type: string
              example: 2d7ed5fd-9f62-4211-bc84-357f5f7b80f5
            externalIdentifierType:
              description: Type of the identification, typically would be the type of the entity within the external system
              type: string
              example: ProductOrder
            owner:
              description: Name of the external system that owns the entity.
              type: string
              example: AcmeCommerce
    EntityRef:
      description: Entity reference schema to be use for all entityRef class.
      allOf:
        - $ref: '#/components/schemas/Extensible'
        - type: object
          required:
            - id
          properties:
            id:
              description: Identifier of the referred entity.
              type: string
              example: 2d7ed5fd-9f62-4211-bc84-357f5f7b80f5
            href:
              description: Hyperlink reference
              type: string
              format: uri
              example: https://api.example.org/resource/id
            name:
              description: Name of the referred entity.
              type: string
              example: EntityName
            '@referredType':
              description: The actual type of the target instance when needed for disambiguation.
              type: string
              example: ''
    AttachmentRef:
      description: Attachment reference.
      type: object
      allOf:
        - $ref: '#/components/schemas/EntityRef'
    Quantity:
      description: An amount in a given unit
      type: object
      properties:
        amount:
          description: Numeric value in a given unit
          type: number
          format: float
          example: 20
          default: 1
        units:
          description: Unit
          type: string
          example: MBit/s
    TimePeriod:
      description: A period of time, either as a deadline (endDateTime only) a startDateTime only, or both
      type: object
      properties:
        startDateTime:
          description: Start of the time period, using IETC-RFC-3339 format. If you define a start, you must also define an end
          type: string
          format: date-time
          example: '2023-01-01T08:00:00+01:00'
        endDateTime:
          description: End of the time period, using IETC-RFC-3339 format
          type: string
          format: date-time
          example: '2025-12-24T19:30:00+01:00'
    Attachment:
      description: Complements the description of an element (for instance a product) through video, pictures...
      allOf:
        - $ref: '#/components/schemas/Entity'
        - type: object
          properties:
            attachmentType:
              description: Attachment type such as video, picture
              type: string
              example: video
            content:
              description: The actual contents of the attachment object, if embedded, encoded as base64
              example: ''
              format: base64
              type: string
            description:
              description: A narrative text describing the content of the attachment
              type: string
              example: Photograph of the Product
            mimeType:
              description: Attachment mime type such as extension file for video, picture and document
              type: string
              example: image/AVIF
            name:
              description: The name of the attachment
              type: string
              example: attachment.file
            url:
              description: Uniform Resource Locator, is a web page address (a subset of URI)
              type: string
              format: uri
              example: https://api.example.org/content/4aafacbd-11ff-4dc8-b445-305f2215715f
            size:
              description: The size of the attachment.
              $ref: '#/components/schemas/Quantity'
            validFor:
              description: The period of time for which the attachment is valid
              $ref: '#/components/schemas/TimePeriod'
    AttachmentRefOrValue:
      description: Attachment reference or value
      type: object
      discriminator:
        propertyName: '@type'
      oneOf:
        - $ref: '#/components/schemas/AttachmentRef'
        - $ref: '#/components/schemas/Attachment'
    Note:
      description: Extra information about a given entity
      allOf:
        - $ref: '#/components/schemas/Entity'
        - type: object
          required:
            - text
          properties:
            author:
              description: Author of the note
              type: string
              example: jarvis
            date:
              description: Date of the note
              type: string
              format: date-time
              example: '2023-01-01T08:00:00+01:00'
            text:
              description: Text of the note
              type: string
              example: Lorem ipsum dolor
    ContactMedium:
      description: Indicates the contact medium that could be used to contact the party.
      allOf:
        - $ref: '#/components/schemas/Extensible'
        - type: object
          properties:
            contactMediumIdentifier:
              description: Identifier for this contact medium.
              type: string
              example: '123'
            contactType:
              description: Type of the contact medium to qualifiy it like pro email / personal email. This is not used to define the contact medium used.
              type: string
              example: personal email
            preferred:
              description: If true, indicates that is the preferred contact medium
              type: boolean
              example: true
            validFor:
              $ref: '#/components/schemas/TimePeriod'
      discriminator:
        propertyName: '@type'
        mapping:
          PhoneContactMedium: '#/components/schemas/PhoneContactMedium'
          EmailContactMedium: '#/components/schemas/EmailContactMedium'
          PostalAddressContactMedium: '#/components/schemas/PostalAddressContactMedium'
    PhoneContactMedium:
      description: Describes a phone number that could be used to contact a party (an individual or an organization).
      allOf:
        - $ref: '#/components/schemas/ContactMedium'
        - type: object
          properties:
            phoneNumber:
              description: The phone number of the contact
              type: string
              example: +49 30 1234567
    EmailContactMedium:
      description: Describes a email that could be used to contact a party (an individual or an organization).
      allOf:
        - $ref: '#/components/schemas/ContactMedium'
        - type: object
          properties:
            emailAddress:
              description: Full email address in standard format
              type: string
              example: info@example.net
    PostalAddressContactMedium:
      description: Describes a email that could be used to contact a party (an individual or an organization).
      allOf:
        - $ref: '#/components/schemas/ContactMedium'
        - type: object
          properties:
            city:
              description: Full city name
              type: string
              example: Berlin
            country:
              description: Country that the address is in (ISO-3166-1 ALPHA-2)
              type: string
              example: DE
            locality:
              description: Locality
              type: string
              example: ''
            postcode:
              description: Postcode
              type: string
              example: '10117'
            streetName:
              description: StreetName
              type: string
              example: Reinhardtstr.
            streetNr:
              description: StreetNr
              type: string
              example: '31'
            streetNrSuffix:
              description: StreetNrSuffix
              type: string
              example: a
    Characteristic:
      description: Describes a given characteristic of an object or entity through a name/value pair.
      allOf:
        - $ref: '#/components/schemas/Extensible'
        - type: object
          properties:
            id:
              description: Unique identifier of the characteristic
              type: string
              example: 2d7ed5fd-9f62-4211-bc84-357f5f7b80f5
            name:
              description: Name of the characteristic
              type: string
              example: characteristic name
            valueType:
              description: Data type of the value of the characteristic
              type: string
              example: string
      discriminator:
        propertyName: '@type'
        mapping:
          Characteristic: '#/components/schemas/Characteristic'
          StringCharacteristic: '#/components/schemas/StringCharacteristic'
          StringArrayCharacteristic: '#/components/schemas/StringArrayCharacteristic'
          ObjectCharacteristic: '#/components/schemas/ObjectCharacteristic'
          ObjectArrayCharacteristic: '#/components/schemas/ObjectArrayCharacteristic'
          NumberCharacteristic: '#/components/schemas/NumberCharacteristic'
          NumberArrayCharacteristic: '#/components/schemas/NumberArrayCharacteristic'
          IntegerCharacteristic: '#/components/schemas/IntegerCharacteristic'
          IntegerArrayCharacteristic: '#/components/schemas/IntegerArrayCharacteristic'
          BooleanCharacteristic: '#/components/schemas/BooleanCharacteristic'
          BooleanArrayCharacteristic: '#/components/schemas/BooleanArrayCharacteristic'
    StringCharacteristic:
      description: A characteristic which value is a String.
      allOf:
        - $ref: '#/components/schemas/Characteristic'
        - type: object
          required:
            - value
          properties:
            value:
              description: Value of the characteristic
              type: string
              example: Lorem ipsum dolor
    StringArrayCharacteristic:
      description: A characteristic which value is a String.
      allOf:
        - $ref: '#/components/schemas/Characteristic'
        - type: object
          properties:
            value:
              description: Value of the characteristic
              type: array
              items:
                type: string
              example: []
    ObjectCharacteristic:
      description: A characteristic which value is an Object.
      allOf:
        - $ref: '#/components/schemas/Characteristic'
        - type: object
          required:
            - value
          properties:
            value:
              description: Value of the characteristic
              type: object
    ObjectArrayCharacteristic:
      description: A characteristic which value is an Object.
      allOf:
        - $ref: '#/components/schemas/Characteristic'
        - type: object
          properties:
            value:
              description: Value of the characteristic
              type: array
              items:
                type: object
              example: []
    NumberCharacteristic:
      description: A characteristic which value is a Number.
      allOf:
        - $ref: '#/components/schemas/Characteristic'
        - type: object
          required:
            - value
          properties:
            value:
              description: Value of the characteristic
              type: number
              example: 1
    NumberArrayCharacteristic:
      description: A characteristic which value is a Number.
      allOf:
        - $ref: '#/components/schemas/Characteristic'
        - type: object
          properties:
            value:
              description: Value of the characteristic
              type: array
              items:
                type: number
              example: []
    IntegerCharacteristic:
      description: A characteristic which value is an Integer.
      allOf:
        - $ref: '#/components/schemas/Characteristic'
        - type: object
          required:
            - value
          properties:
            value:
              description: Value of the characteristic
              type: integer
              example: 1
    IntegerArrayCharacteristic:
      description: A characteristic which value is an Integer.
      allOf:
        - $ref: '#/components/schemas/Characteristic'
        - type: object
          properties:
            value:
              description: Value of the characteristic
              type: array
              items:
                type: integer
              example: []
    BooleanCharacteristic:
      description: A characteristic which value is a Boolean.
      allOf:
        - $ref: '#/components/schemas/Characteristic'
        - type: object
          required:
            - value
          properties:
            value:
              description: Value of the characteristic
              type: boolean
              example: true
    BooleanArrayCharacteristic:
      description: A characteristic which value is a Boolean.
      allOf:
        - $ref: '#/components/schemas/Characteristic'
        - type: object
          properties:
            value:
              description: Value of the characteristic
              type: array
              items:
                type: boolean
              example: []
    Party:
      description: Generic Party structure used to define commonalities between sub concepts of Individual and Organization.
      allOf:
        - $ref: '#/components/schemas/Entity'
        - type: object
          properties:
            contactMedium:
              description: List of means for contacting the party, e.g. mobile phone, email address
              type: array
              items:
                $ref: '#/components/schemas/ContactMedium'
              example: []
            externalReference:
              description: List of identifiers of the Party in an external system, for example when party information is imported from a commerce system
              type: array
              items:
                $ref: '#/components/schemas/ExternalIdentifier'
              example: []
            businessId:
              description: A business relevant identifier when different from the technical identifier documented with the .id property
              type: string
              example: '1234'
            partyCharacteristic:
              description: List of additional characteristics that a Party can take on.
              type: array
              items:
                $ref: '#/components/schemas/Characteristic'
              example: []
    Individual:
      description: Individual represents a single human being (a man, woman or child). The individual can be a customer, an employee or any other person that the organization needs to store information about.
      allOf:
        - $ref: '#/components/schemas/Party'
        - type: object
          properties:
            familyName:
              description: Contains the non-chosen or inherited name. Also known as last name in the Western context
              type: string
              example: Muster
            salutation:
              description: Standard wording used to address an individual
              type: string
              example: Ms
            givenName:
              description: First name of the individual
              type: string
              example: Melanie
            title:
              description: Useful for titles (aristocratic, social,...) Pr, Dr, Sir, ...
              type: string
              example: Dr.
    Organization:
      description: Organization represents a group of people identified by shared interests or purpose. Examples include business, department and enterprise. Because of the complex nature of many businesses, both organizations and organization units are represented by the same data.
      allOf:
        - $ref: '#/components/schemas/Party'
        - type: object
          properties:
            name:
              description: Organization name (department name for example)
              type: string
              example: Acme Corp.
    PartyRef:
      description: Party reference.
      type: object
      allOf:
        - $ref: '#/components/schemas/EntityRef'
    PartyRoleRef:
      description: Party role reference.
      type: object
      allOf:
        - $ref: '#/components/schemas/EntityRef'
    AccountRef:
      description: Account reference. A account may be a party account or a financial account.
      allOf:
        - $ref: '#/components/schemas/EntityRef'
        - type: object
          properties:
            description:
              description: Detailed description of the account
              type: string
              example: lorem ipsum dolor
    AgreementRef:
      description: Agreement reference. An agreement represents a contract or arrangement, either written or verbal and sometimes enforceable by law, such as a service level agreement or a customer price agreement. An agreement involves a number of other business entities, such as products, services, and resources and/or their specifications.
      type: object
      allOf:
        - $ref: '#/components/schemas/EntityRef'
    PartyOrPartyRole:
      description: A Party or PartyRole or Ref
      type: object
      discriminator:
        propertyName: '@type'
      oneOf:
        - $ref: '#/components/schemas/Individual'
        - $ref: '#/components/schemas/Organization'
        - $ref: '#/components/schemas/PartyRef'
        - $ref: '#/components/schemas/PartyRoleRef'
        - $ref: '#/components/schemas/PartyRole'
    RelatedPartyOrPartyRole:
      description: RelatedParty reference. A related party defines party or party role or its reference, linked to a specific entity
      allOf:
        - $ref: '#/components/schemas/Extensible'
        - type: object
          required:
            - role
            - partyOrPartyRole
          properties:
            role:
              description: Role played by the related party or party role in the context of the specific entity it is linked to. Such as 'initiator', 'customer',  'salesAgent', 'user'
              type: string
              example: ''
            partyOrPartyRole:
              $ref: '#/components/schemas/PartyOrPartyRole'
    PartyRole:
      description: The part played by a party in a given context.
      allOf:
        - $ref: '#/components/schemas/Entity'
        - type: object
          required:
            - name
            - engagedParty
          properties:
            businessId:
              description: A business relevant identifier when different from the technical identifier documented with the .id property
              type: string
              example: '1234'
            name:
              description: A word, term, or phrase by which the PartyRole is known and distinguished from other PartyRoles. It's the name of the PartyRole unique entity.
              type: string
              example: PartyRoleName
            description:
              description: A description of the PartyRole.
              type: string
              example: Lorem ipsum dolor
            role:
              description: Role played by the engagedParty in this context. As role is defined by partyRoleSpecification, this role attribute can be used to precise the role defined by partyRoleSpecification, or it can be used to define the role in case there is no partyRoleSpecification.
              type: string
              example: ''
            engagedParty:
              $ref: '#/components/schemas/PartyRef'
            characteristic:
              description: Describes the characteristic of a party role.
              type: array
              items:
                $ref: '#/components/schemas/Characteristic'
              example: []
            account:
              description: Account
              type: array
              items:
                $ref: '#/components/schemas/AccountRef'
              example: []
            agreement:
              description: Agreement
              type: array
              items:
                $ref: '#/components/schemas/AgreementRef'
              example: []
            contactMedium:
              description: Contact medium
              type: array
              items:
                $ref: '#/components/schemas/ContactMedium'
              example: []
            relatedParty:
              description: Related party
              type: array
              items:
                $ref: '#/components/schemas/RelatedPartyOrPartyRole'
              example: []
            status:
              description: Used to track the lifecycle status of the party role.
              type: string
              example: ''
            statusReason:
              description: A string providing an explanation on the value of the status lifecycle. For instance if the status is Rejected, statusReason will provide the reason for rejection.
              type: string
              example: ''
            validFor:
              $ref: '#/components/schemas/TimePeriod'
    Agreement:
      description: An agreement represents a contract or arrangement, either written or verbal and sometimes enforceable by law, such as a service level agreement or a customer price agreement. An agreement involves a number of other business entities, such as products, services, and resources and/or their specifications.
      allOf:
        - $ref: '#/components/schemas/Entity'
        - type: object
          required:
            - agreementType
          properties:
            name:
              description: A human-readable name for the agreement
              type: string
              example: contract no. 42
            engagedParty:
              description: Engaged party
              type: array
              items:
                $ref: '#/components/schemas/PartyOrPartyRole'
              example: []
            relatedParty:
              description: Related party
              type: array
              items:
                $ref: '#/components/schemas/RelatedPartyOrPartyRole'
              example: []
            businessId:
              description: A business relevant identifier when different from the technical identifier documented with the .id property
              type: string
              example: '1234'
            agreementType:
              description: Type of the agreement (e.g. witaContract, ServiceContractCustomer, ServiceContractOrderer, SingleContract, PreAgreement, witaContract,...)
              type: string
              example: ServiceContractOrderer
    ProductRef:
      description: Product reference.
      type: object
      allOf:
        - $ref: '#/components/schemas/EntityRef'
    TroubleTicketRef:
      description: TroubleTicket reference.
      type: object
      allOf:
        - $ref: '#/components/schemas/EntityRef'
    ErrorMessage:
      description: Used when an API throws an Error, typically with a HTTP error response-code (3xx, 4xx, 5xx)
      allOf:
        - $ref: '#/components/schemas/Extensible'
        - type: object
          required:
            - code
            - reason
          properties:
            code:
              description: Application relevant detail, defined in the API or a common list.
              type: string
              example: '0995'
            reason:
              description: Explanation of the reason for the error which can be shown to a client user.
              type: string
              example: human error
            message:
              description: More details and corrective actions related to the error which can be shown to a client user.
              type: string
              example: Datenstruktur unzulässig.
            status:
              description: HTTP Error code extension
              type: string
              example: not found
            referenceError:
              description: URI of documentation describing the error.
              type: string
              format: uri
              example: https://api.example.org/error/id
          example:
            '@type': ErrorMessage
            code: '0995'
            reason: human error
            message: Datenstruktur unzulässig.
            status: not found
            referenceError: https://api.example.org/error/id
    TaskStateType:
      description: |-
        Possible values for the state of a task are:<ul>
        <li>*acknowledged*: The acknowledged state is used if a task resource has been received and has passed message and basic business validations.</li>
        <li>*rejected*: The task has been rejected during validation or processing.</li>
        <li>*inProgress*: The InProgress state is used while the task is being processed.</li>
        <li>*done*: The task has been completed and a result is available.</li>
        </ul>
      type: string
      enum:
        - acknowledged
        - rejected
        - inProgress
        - done
    Message:
      description: A message described as a combination of a text and a code with additional info where required.
      type: object
      properties:
        code:
          description: Predefined code corresponding to the message
          type: string
          example: '00'
        text:
          description: Predefined text describing the message corresponding to the code
          type: string
          example: Lorem ipsum dolor
        additionalInformation:
          description: additional textual information for the message
          type: string
          example: Lorem ipsum dolor
        messageSource:
          description: Predefined text describing the message corresponding to the code (e.g. Related)
          type: string
          example: Related
    StateChange:
      description: Holds the state notification message and associated date the state changed, populated by the server
      allOf:
        - $ref: '#/components/schemas/Extensible'
        - type: object
          required:
            - stateChangeDate
            - state
          properties:
            stateChangeDate:
              description: The date and time the state changed.
              type: string
              format: date-time
              example: '2023-01-01T08:00:00+01:00'
            stateChangeMessage:
              description: Message for the state change described as a combination of a text and a code.
              type: array
              items:
                $ref: '#/components/schemas/Message'
              example: []
            state:
              description: The state of the API resource
              type: string
              example: ''
    TimeSlot:
      allOf:
        - $ref: '#/components/schemas/Extensible'
        - type: object
          required:
            - validFor
          properties:
            id:
              description: Unique identifier of the TimeSlot
              type: string
              example: 2d7ed5fd-9f62-4211-bc84-357f5f7b80f5
            href:
              description: Reference of the TimeSlot
              type: string
              example: https://api.example.org/timeslot/id
            relatedParty:
              description: RelatedParty reference. A related party defines party or party role linked to a specific entity.
              $ref: '#/components/schemas/RelatedPartyOrPartyRole'
            validFor:
              description: Start date and end date of the timeSlot
              $ref: '#/components/schemas/TimePeriod'
    TargetProductSchema:
      description: The reference object to the schema and type of target product which is described by product specification
      type: object
      properties:
        '@schemaLocation':
          description: This field provides a link to the schema describing the target product
          type: string
          example: https://schemas.example.com/example/schema
        '@type':
          description: Class type of the target product
          type: string
          example: ''
      required:
        - '@schemaLocation'
        - '@type'
    ProductSpecificationRef:
      description: 'Product specification reference: A ProductSpecification is a detailed description of a tangible or intangible object made available externally in the form of a ProductOffering to customers or other parties playing a party role.'
      allOf:
        - $ref: '#/components/schemas/EntityRef'
        - type: object
          properties:
            version:
              description: Version of the product specification
              type: string
              example: '1.0'
            targetProductSchema:
              $ref: '#/components/schemas/TargetProductSchema'
    ProductOffering:
      description: Represents entities that are orderable from the provider of the catalog, this resource includes pricing information.
      allOf:
        - $ref: '#/components/schemas/Entity'
        - type: object
          properties:
            description:
              description: Description of the productOffering
              type: string
              example: Lorem ipsum dolor
            version:
              description: ProductOffering version
              type: string
              example: '1.0'
            lifecycleStatus:
              description: Used to indicate the current lifecycle status
              type: string
              example: created
            name:
              description: Name of the productOffering
              type: string
              example: product offering name
            productSpecification:
              description: A ProductSpecification is a detailed description of a tangible or intangible object made available externally in the form of a ProductOffering to customers or other parties playing a party role.
              $ref: '#/components/schemas/ProductSpecificationRef'
    Event:
      description: event with common attributes.
      allOf:
        - $ref: '#/components/schemas/Extensible'
        - type: object
          properties:
            eventId:
              description: The identifier of the notification.
              type: string
              example: 2d7ed5fd-9f62-4211-bc84-357f5f7b80f5
            eventTime:
              description: Time of the event occurrence.
              type: string
              format: date-time
              example: '2023-01-01T08:00:00+01:00'
            eventType:
              description: The type of the notification.
              type: string
              example: ''
            description:
              description: An explanatory of the event.
              type: string
              example: Lorem ipsum dolor
            timeOccurred:
              description: The time the event occurred.
              type: string
              format: date-time
              example: '2023-01-01T08:00:00+01:00'
            source:
              description: Source Entity described by EntityRef
              $ref: '#/components/schemas/EntityRef'
            reportingSystem:
              description: Reporting System described by EntityRef
              $ref: '#/components/schemas/EntityRef'
          required:
            - eventId
            - eventTime
            - eventType
            - event
  examples:
    EntstoerungVorSearchTimeSlotRequest:
      description: POST SearchTimeSlot Example - Entstoerung vor Beauftragung (Use Case 1)
      value:
        $schema: '##SCHEMA_PATH##'
        '@type': SearchTimeSlot_FVO
        appointmentCategory: beforeFaultTicket
        requestDate: '2024-02-01T10:30:00+01:00'
        relatedEntity:
          - '@type': SearchTimeSlotRelatedEntityRefOrValue
            role: buyerServiceContract
            entity:
              '@type': Agreement
              name: buyerServiceContract
              engagedParty:
                - '@type': Organization
                  businessId: '500011'
              businessId: '500012'
              agreementType: buyerServiceContract
          - '@type': SearchTimeSlotRelatedEntityRefOrValue
            role: ordererServiceContract
            entity:
              '@type': Agreement
              name: ordererServiceContract
              engagedParty:
                - '@type': Organization
                  businessId: '500014'
              businessId: '500013'
              agreementType: ordererServiceContract
          - '@type': SearchTimeSlotRelatedEntityRefOrValue
            role: affectedProduct
            entity:
              '@type': ProductRef
              id: 922ebf01-e930-47a0-842e-059d1f188a15
              '@referredType': Product
          - '@type': SearchTimeSlotRelatedEntityRefOrValue
            role: singleContract
            entity:
              '@type': Agreement
              name: singleContract
              businessId: '555001'
              agreementType: singleContract
          - '@type': SearchTimeSlotRelatedEntityRefOrValue
            role: optionalServices
            entity:
              '@type': ProductOffering
              name: Ganzheitliche Entstoerung
        requestedTimeSlot:
          - '@type': TimeSlot
            validFor:
              startDateTime: '2024-02-02T08:00:00+01:00'
              endDateTime: '2024-02-02T12:00:00+01:00'
    EntstoerungNachSearchTimeSlotRequest:
      description: POST SearchTimeSlot Example - Entstoerung nach Beauftragung (Use Case 2)
      value:
        $schema: '##SCHEMA_PATH##'
        '@type': SearchTimeSlot_FVO
        appointmentCategory: duringFaultTicket
        requestDate: '2024-02-01T10:30:00+01:00'
        relatedEntity:
          - '@type': SearchTimeSlotRelatedEntityRefOrValue
            role: buyerServiceContract
            entity:
              '@type': Agreement
              name: buyerServiceContract
              engagedParty:
                - '@type': Organization
                  businessId: '500011'
              businessId: '500012'
              agreementType: buyerServiceContract
          - '@type': SearchTimeSlotRelatedEntityRefOrValue
            role: ordererServiceContract
            entity:
              '@type': Agreement
              name: ordererServiceContract
              engagedParty:
                - '@type': Organization
                  businessId: '500014'
              businessId: '500013'
              agreementType: ordererServiceContract
          - '@type': SearchTimeSlotRelatedEntityRefOrValue
            role: troubleTicket
            entity:
              '@type': TroubleTicketRef
              id: 922ebf01-e930-47a0-842e-059d1f188a15
              '@referredType': TroubleTicket
          - '@type': SearchTimeSlotRelatedEntityRefOrValue
            role: optionalServices
            entity:
              '@type': ProductOffering
              name: Ganzheitliche Entstoerung
        requestedTimeSlot:
          - '@type': TimeSlot
            validFor:
              startDateTime: '2024-02-02T08:00:00+01:00'
              endDateTime: '2024-02-02T12:00:00+01:00'
    BereitstellungVorSearchTimeSlotRequest:
      description: POST SearchTimeSlot Example - Bereitstellung vor Beauftragung (Use Case 3)
      value:
        $schema: '##SCHEMA_PATH##'
        '@type': SearchTimeSlot_FVO
        appointmentCategory: beforeProductOrder
        requestDate: '2024-02-01T10:30:00+01:00'
        relatedEntity:
          - '@type': SearchTimeSlotRelatedEntityRefOrValue
            role: buyerServiceContract
            entity:
              '@type': Agreement
              name: buyerServiceContract
              engagedParty:
                - '@type': Organization
                  businessId: '500011'
              businessId: '500012'
              agreementType: buyerServiceContract
          - '@type': SearchTimeSlotRelatedEntityRefOrValue
            role: ordererServiceContract
            entity:
              '@type': Agreement
              name: ordererServiceContract
              engagedParty:
                - '@type': Organization
                  businessId: '500014'
              businessId: '500013'
              agreementType: ordererServiceContract
          - '@type': SearchTimeSlotRelatedEntityRefOrValue
            role: affectedQualification
            entity:
              '@type': QueryProductOfferingQualificationRef
              id: 922ebf01-e930-47a0-842e-059d1f188a15
              '@referredType': QueryProductOfferingQualification
          - '@type': SearchTimeSlotRelatedEntityRefOrValue
            role: affectedQualificationItem
            entity:
              '@type': QueryProductOfferingQualificationItemRef
              id: '1'
              '@referredType': QueryProductOfferingQualificationItem
          - '@type': SearchTimeSlotRelatedEntityRefOrValue
            role: singleContract
            entity:
              '@type': Agreement
              name: singleContract
              businessId: '555001'
              agreementType: singleContract
          - '@type': SearchTimeSlotRelatedEntityRefOrValue
            role: optionalServices
            entity:
              '@type': ProductOffering
              name: Ganzheitliche Bereitstellung
        requestedTimeSlot:
          - '@type': TimeSlot
            validFor:
              startDateTime: '2024-02-02T08:00:00+01:00'
              endDateTime: '2024-02-02T12:00:00+01:00'
    BereitstellungNachSearchTimeSlotRequest:
      description: POST SearchTimeSlot Example - Bereitstellung nach Beauftragung (Use Case 4)
      value:
        $schema: '##SCHEMA_PATH##'
        '@type': SearchTimeSlot_FVO
        appointmentCategory: duringProductOrder
        requestDate: '2024-02-01T10:30:00+01:00'
        relatedEntity:
          - '@type': SearchTimeSlotRelatedEntityRefOrValue
            role: buyerServiceContract
            entity:
              '@type': Agreement
              name: buyerServiceContract
              engagedParty:
                - '@type': Organization
                  businessId: '500011'
              businessId: '500012'
              agreementType: buyerServiceContract
          - '@type': SearchTimeSlotRelatedEntityRefOrValue
            role: ordererServiceContract
            entity:
              '@type': Agreement
              name: ordererServiceContract
              engagedParty:
                - '@type': Organization
                  businessId: '500014'
              businessId: '500013'
              agreementType: ordererServiceContract
          - '@type': SearchTimeSlotRelatedEntityRefOrValue
            role: affectedProductOrder
            entity:
              '@type': ProductOrderRef
              id: 922ebf01-e930-47a0-842e-059d1f188a15
              '@referredType': ProductOrder
          - '@type': SearchTimeSlotRelatedEntityRefOrValue
            role: optionalServices
            entity:
              '@type': ProductOffering
              name: Ganzheitliche Bereitstellung
        requestedTimeSlot:
          - '@type': TimeSlot
            validFor:
              startDateTime: '2024-02-02T08:00:00+01:00'
              endDateTime: '2024-02-02T12:00:00+01:00'
    EntstoerungVorSearchTimeSlotCreatedAcknowledged:
      description: 201 Created (acknowledged) - Use Case 1
      value:
        $schema: '##SCHEMA_PATH##'
        '@type': SearchTimeSlot
        id: 158ecded-6aca-4f83-a54e-f35cc53be128
        href: https://api.example.com/searchTimeSlot/158ecded-6aca-4f83-a54e-f35cc53be128
        appointmentCategory: beforeFaultTicket
        requestDate: '2024-02-01T10:30:00+01:00'
        requestPostedDate: '2024-02-01T10:30:30+01:00'
        state: acknowledged
        stateChangeDate: '2024-02-01T10:30:15+01:00'
        relatedEntity:
          - '@type': SearchTimeSlotRelatedEntityRefOrValue
            role: buyerServiceContract
            entity:
              '@type': Agreement
              name: buyerServiceContract
              engagedParty:
                - '@type': Organization
                  businessId: '500011'
              businessId: '500012'
              agreementType: buyerServiceContract
          - '@type': SearchTimeSlotRelatedEntityRefOrValue
            role: ordererServiceContract
            entity:
              '@type': Agreement
              name: ordererServiceContract
              engagedParty:
                - '@type': Organization
                  businessId: '500014'
              businessId: '500013'
              agreementType: ordererServiceContract
          - '@type': SearchTimeSlotRelatedEntityRefOrValue
            role: affectedProduct
            entity:
              '@type': ProductRef
              id: 922ebf01-e930-47a0-842e-059d1f188a15
              '@referredType': Product
          - '@type': SearchTimeSlotRelatedEntityRefOrValue
            role: singleContract
            entity:
              '@type': Agreement
              name: singleContract
              businessId: '555001'
              agreementType: singleContract
          - '@type': SearchTimeSlotRelatedEntityRefOrValue
            role: optionalServices
            entity:
              '@type': ProductOffering
              name: Ganzheitliche Entstoerung
        requestedTimeSlot:
          - '@type': TimeSlot
            validFor:
              startDateTime: '2024-02-02T08:00:00+01:00'
              endDateTime: '2024-02-02T12:00:00+01:00'
    EntstoerungNachSearchTimeSlotCreatedAcknowledged:
      description: 201 Created (acknowledged) - Use Case 2
      value:
        $schema: '##SCHEMA_PATH##'
        '@type': SearchTimeSlot
        id: 158ecded-6aca-4f83-a54e-f35cc53be128
        href: https://api.example.com/searchTimeSlot/158ecded-6aca-4f83-a54e-f35cc53be128
        appointmentCategory: duringFaultTicket
        requestDate: '2024-02-01T10:30:00+01:00'
        requestPostedDate: '2024-02-01T10:30:30+01:00'
        state: acknowledged
        stateChangeDate: '2024-02-01T10:30:15+01:00'
        relatedEntity:
          - '@type': SearchTimeSlotRelatedEntityRefOrValue
            role: buyerServiceContract
            entity:
              '@type': Agreement
              name: buyerServiceContract
              engagedParty:
                - '@type': Organization
                  businessId: '500011'
              businessId: '500012'
              agreementType: buyerServiceContract
          - '@type': SearchTimeSlotRelatedEntityRefOrValue
            role: ordererServiceContract
            entity:
              '@type': Agreement
              name: ordererServiceContract
              engagedParty:
                - '@type': Organization
                  businessId: '500014'
              businessId: '500013'
              agreementType: ordererServiceContract
          - '@type': SearchTimeSlotRelatedEntityRefOrValue
            role: troubleTicket
            entity:
              '@type': TroubleTicketRef
              id: 922ebf01-e930-47a0-842e-059d1f188a15
              '@referredType': TroubleTicket
          - '@type': SearchTimeSlotRelatedEntityRefOrValue
            role: optionalServices
            entity:
              '@type': ProductOffering
              name: Ganzheitliche Entstoerung
        requestedTimeSlot:
          - '@type': TimeSlot
            validFor:
              startDateTime: '2024-02-02T08:00:00+01:00'
              endDateTime: '2024-02-02T12:00:00+01:00'
    BereitstellungVorSearchTimeSlotCreatedAcknowledged:
      description: 201 Created (acknowledged) - Use Case 3
      value:
        $schema: '##SCHEMA_PATH##'
        '@type': SearchTimeSlot
        id: 158ecded-6aca-4f83-a54e-f35cc53be128
        href: https://api.example.com/searchTimeSlot/158ecded-6aca-4f83-a54e-f35cc53be128
        appointmentCategory: beforeProductOrder
        requestDate: '2024-02-01T10:30:00+01:00'
        requestPostedDate: '2024-02-01T10:30:30+01:00'
        state: acknowledged
        stateChangeDate: '2024-02-01T10:30:15+01:00'
        relatedEntity:
          - '@type': SearchTimeSlotRelatedEntityRefOrValue
            role: buyerServiceContract
            entity:
              '@type': Agreement
              name: buyerServiceContract
              engagedParty:
                - '@type': Organization
                  businessId: '500011'
              businessId: '500012'
              agreementType: buyerServiceContract
          - '@type': SearchTimeSlotRelatedEntityRefOrValue
            role: ordererServiceContract
            entity:
              '@type': Agreement
              name: ordererServiceContract
              engagedParty:
                - '@type': Organization
                  businessId: '500014'
              businessId: '500013'
              agreementType: ordererServiceContract
          - '@type': SearchTimeSlotRelatedEntityRefOrValue
            role: affectedQualification
            entity:
              '@type': QueryProductOfferingQualificationRef
              id: 922ebf01-e930-47a0-842e-059d1f188a15
              '@referredType': QueryProductOfferingQualification
          - '@type': SearchTimeSlotRelatedEntityRefOrValue
            role: affectedQualificationItem
            entity:
              '@type': QueryProductOfferingQualificationItemRef
              id: '1'
              '@referredType': QueryProductOfferingQualificationItem
          - '@type': SearchTimeSlotRelatedEntityRefOrValue
            role: singleContract
            entity:
              '@type': Agreement
              name: singleContract
              businessId: '555001'
              agreementType: singleContract
          - '@type': SearchTimeSlotRelatedEntityRefOrValue
            role: optionalServices
            entity:
              '@type': ProductOffering
              name: Ganzheitliche Bereitstellung
        requestedTimeSlot:
          - '@type': TimeSlot
            validFor:
              startDateTime: '2024-02-02T08:00:00+01:00'
              endDateTime: '2024-02-02T12:00:00+01:00'
    BereitstellungNachSearchTimeSlotCreatedAcknowledged:
      description: 201 Created (acknowledged) - Use Case 4
      value:
        $schema: '##SCHEMA_PATH##'
        '@type': SearchTimeSlot
        id: 158ecded-6aca-4f83-a54e-f35cc53be128
        href: https://api.example.com/searchTimeSlot/158ecded-6aca-4f83-a54e-f35cc53be128
        appointmentCategory: duringProductOrder
        requestDate: '2024-02-01T10:30:00+01:00'
        requestPostedDate: '2024-02-01T10:30:30+01:00'
        state: acknowledged
        stateChangeDate: '2024-02-01T10:30:15+01:00'
        relatedEntity:
          - '@type': SearchTimeSlotRelatedEntityRefOrValue
            role: buyerServiceContract
            entity:
              '@type': Agreement
              name: buyerServiceContract
              engagedParty:
                - '@type': Organization
                  businessId: '500011'
              businessId: '500012'
              agreementType: buyerServiceContract
          - '@type': SearchTimeSlotRelatedEntityRefOrValue
            role: ordererServiceContract
            entity:
              '@type': Agreement
              name: ordererServiceContract
              engagedParty:
                - '@type': Organization
                  businessId: '500014'
              businessId: '500013'
              agreementType: ordererServiceContract
          - '@type': SearchTimeSlotRelatedEntityRefOrValue
            role: affectedProductOrder
            entity:
              '@type': ProductOrderRef
              id: 922ebf01-e930-47a0-842e-059d1f188a15
              '@referredType': ProductOrder
          - '@type': SearchTimeSlotRelatedEntityRefOrValue
            role: optionalServices
            entity:
              '@type': ProductOffering
              name: Ganzheitliche Bereitstellung
        requestedTimeSlot:
          - '@type': TimeSlot
            validFor:
              startDateTime: '2024-02-02T08:00:00+01:00'
              endDateTime: '2024-02-02T12:00:00+01:00'
    EntstoerungVorAppointmentRequest:
      description: POST Appointment Example - Entstoerung vor Beauftragung (Use Case 1)
      value:
        $schema: '##SCHEMA_PATH##'
        '@type': Appointment_FVO
        category: beforeFaultTicket
        relatedEntity:
          - '@type': AppointmentRelatedEntityRefOrValue
            role: buyerServiceContract
            entity:
              '@type': Agreement
              name: buyerServiceContract
              engagedParty:
                - '@type': Organization
                  businessId: '500011'
              businessId: '500012'
              agreementType: buyerServiceContract
          - '@type': AppointmentRelatedEntityRefOrValue
            role: ordererServiceContract
            entity:
              '@type': Agreement
              name: ordererServiceContract
              engagedParty:
                - '@type': Organization
                  businessId: '500014'
              businessId: '500013'
              agreementType: ordererServiceContract
          - '@type': AppointmentRelatedEntityRefOrValue
            role: affectedProduct
            entity:
              '@type': ProductRef
              id: 922ebf01-e930-47a0-842e-059d1f188a15
              '@referredType': Product
          - '@type': AppointmentRelatedEntityRefOrValue
            role: singleContract
            entity:
              '@type': Agreement
              name: singleContract
              businessId: '555001'
              agreementType: singleContract
          - '@type': AppointmentRelatedEntityRefOrValue
            role: searchTimeSlot
            entity:
              '@type': SearchTimeslotRef
              id: 158ecded-6aca-4f83-a54e-f35cc53be128
              '@referredType': SearchTimeslot
          - '@type': AppointmentRelatedEntityRefOrValue
            role: availableTimeSlot
            entity:
              '@type': AvailableTimeslotRef
              id: 321e0c9d-1112-41ac-9251-45fe542f92
              '@referredType': AvailableTimeslot
        validFor:
          startDateTime: '2024-02-02T14:00:00+01:00'
          endDateTime: '2024-02-02T15:00:00+01:00'
    EntstoerungNachAppointmentRequest:
      description: POST Appointment Example - Entstoerung nach Beauftragung (Use Case 2)
      value:
        $schema: '##SCHEMA_PATH##'
        '@type': Appointment_FVO
        category: duringFaultTicket
        relatedEntity:
          - '@type': AppointmentRelatedEntityRefOrValue
            role: buyerServiceContract
            entity:
              '@type': Agreement
              name: buyerServiceContract
              engagedParty:
                - '@type': Organization
                  businessId: '500011'
              businessId: '500012'
              agreementType: buyerServiceContract
          - '@type': AppointmentRelatedEntityRefOrValue
            role: ordererServiceContract
            entity:
              '@type': Agreement
              name: ordererServiceContract
              engagedParty:
                - '@type': Organization
                  businessId: '500014'
              businessId: '500013'
              agreementType: ordererServiceContract
          - '@type': AppointmentRelatedEntityRefOrValue
            role: singleContract
            entity:
              '@type': Agreement
              name: singleContract
              businessId: '555001'
              agreementType: singleContract
          - '@type': AppointmentRelatedEntityRefOrValue
            role: troubleTicket
            entity:
              '@type': TroubleTicketRef
              id: 922ebf01-e930-47a0-842e-059d1f188a15
              '@referredType': TroubleTicket
          - '@type': AppointmentRelatedEntityRefOrValue
            role: searchTimeSlot
            entity:
              '@type': SearchTimeslotRef
              id: 158ecded-6aca-4f83-a54e-f35cc53be128
              '@referredType': SearchTimeslot
          - '@type': AppointmentRelatedEntityRefOrValue
            role: availableTimeSlot
            entity:
              '@type': AvailableTimeslotRef
              id: 321e0c9d-1112-41ac-9251-45fe542f92
              '@referredType': AvailableTimeslot
        validFor:
          startDateTime: '2024-02-02T14:00:00+01:00'
          endDateTime: '2024-02-02T15:00:00+01:00'
    BereitstellungVorAppointmentRequest:
      description: POST Appointment Example - Bereitstellung vor Beauftragung (Use Case 3)
      value:
        $schema: '##SCHEMA_PATH##'
        '@type': Appointment_FVO
        category: beforeProductOrder
        relatedEntity:
          - '@type': AppointmentRelatedEntityRefOrValue
            role: buyerServiceContract
            entity:
              '@type': Agreement
              name: buyerServiceContract
              engagedParty:
                - '@type': Organization
                  businessId: '500011'
              businessId: '500012'
              agreementType: buyerServiceContract
          - '@type': AppointmentRelatedEntityRefOrValue
            role: ordererServiceContract
            entity:
              '@type': Agreement
              name: ordererServiceContract
              engagedParty:
                - '@type': Organization
                  businessId: '500014'
              businessId: '500013'
              agreementType: ordererServiceContract
          - '@type': AppointmentRelatedEntityRefOrValue
            role: singleContract
            entity:
              '@type': Agreement
              name: singleContract
              businessId: '555001'
              agreementType: singleContract
          - '@type': AppointmentRelatedEntityRefOrValue
            role: searchTimeSlot
            entity:
              '@type': SearchTimeslotRef
              id: 158ecded-6aca-4f83-a54e-f35cc53be128
              '@referredType': SearchTimeslot
          - '@type': AppointmentRelatedEntityRefOrValue
            role: availableTimeSlot
            entity:
              '@type': AvailableTimeslotRef
              id: 321e0c9d-1112-41ac-9251-45fe542f92
              '@referredType': AvailableTimeslot
        validFor:
          startDateTime: '2024-02-02T14:00:00+01:00'
          endDateTime: '2024-02-02T15:00:00+01:00'
    BereitstellungNachAppointmentRequest:
      description: POST Appointment Example - Bereitstellung nach Beauftragung (Use Case 4)
      value:
        $schema: '##SCHEMA_PATH##'
        '@type': Appointment_FVO
        category: duringProductOrder
        relatedEntity:
          - '@type': AppointmentRelatedEntityRefOrValue
            role: buyerServiceContract
            entity:
              '@type': Agreement
              name: buyerServiceContract
              engagedParty:
                - '@type': Organization
                  businessId: '500011'
              businessId: '500012'
              agreementType: buyerServiceContract
          - '@type': AppointmentRelatedEntityRefOrValue
            role: ordererServiceContract
            entity:
              '@type': Agreement
              name: ordererServiceContract
              engagedParty:
                - '@type': Organization
                  businessId: '500014'
              businessId: '500013'
              agreementType: ordererServiceContract
          - '@type': AppointmentRelatedEntityRefOrValue
            role: singleContract
            entity:
              '@type': Agreement
              name: singleContract
              businessId: '555001'
              agreementType: singleContract
          - '@type': AppointmentRelatedEntityRefOrValue
            role: productOrder
            entity:
              '@type': ProductOrderRef
              id: 922ebf01-e930-47a0-842e-059d1f188a15
              '@referredType': ProductOrder
          - '@type': AppointmentRelatedEntityRefOrValue
            role: searchTimeSlot
            entity:
              '@type': SearchTimeslotRef
              id: 158ecded-6aca-4f83-a54e-f35cc53be128
              '@referredType': SearchTimeslot
          - '@type': AppointmentRelatedEntityRefOrValue
            role: availableTimeSlot
            entity:
              '@type': AvailableTimeslotRef
              id: 321e0c9d-1112-41ac-9251-45fe542f92
              '@referredType': AvailableTimeslot
        validFor:
          startDateTime: '2024-02-02T14:00:00+01:00'
          endDateTime: '2024-02-02T15:00:00+01:00'
    EntstoerungVorAppointmentCreatedInitialized:
      description: 201 Created (initialized) - Use Case 1
      value:
        $schema: '##SCHEMA_PATH##'
        '@type': Appointment
        id: 6c792dbc-abad-464d-843b-42cd7444edeb
        href: https://api.example.com/appointment/6c792dbc-abad-464d-843b-42cd7444edeb
        category: beforeFaultTicket
        lastUpdate: '2024-02-01T10:59:00+01:00'
        relatedEntity:
          - '@type': AppointmentRelatedEntityRefOrValue
            role: buyerServiceContract
            entity:
              '@type': Agreement
              name: buyerServiceContract
              engagedParty:
                - '@type': Organization
                  businessId: '500011'
              businessId: '500012'
              agreementType: buyerServiceContract
          - '@type': AppointmentRelatedEntityRefOrValue
            role: ordererServiceContract
            entity:
              '@type': Agreement
              name: ordererServiceContract
              engagedParty:
                - '@type': Organization
                  businessId: '500014'
              businessId: '500013'
              agreementType: ordererServiceContract
          - '@type': AppointmentRelatedEntityRefOrValue
            role: affectedProduct
            entity:
              '@type': ProductRef
              id: 922ebf01-e930-47a0-842e-059d1f188a15
              '@referredType': Product
          - '@type': AppointmentRelatedEntityRefOrValue
            role: singleContract
            entity:
              '@type': Agreement
              name: singleContract
              businessId: '555001'
              agreementType: singleContract
          - '@type': AppointmentRelatedEntityRefOrValue
            role: searchTimeSlot
            entity:
              '@type': SearchTimeslotRef
              id: 158ecded-6aca-4f83-a54e-f35cc53be128
              '@referredType': SearchTimeslot
          - '@type': AppointmentRelatedEntityRefOrValue
            role: availableTimeSlot
            entity:
              '@type': AvailableTimeslotRef
              id: 321e0c9d-1112-41ac-9251-45fe542f92
              '@referredType': AvailableTimeslot
        status: initialized
        validFor:
          startDateTime: '2024-02-02T14:00:00+01:00'
          endDateTime: '2024-02-02T15:00:00+01:00'
    EntstoerungNachAppointmentCreatedInitialized:
      description: 201 Created (initialized) - Use Case 2
      value:
        $schema: '##SCHEMA_PATH##'
        '@type': Appointment
        id: 6c792dbc-abad-464d-843b-42cd7444edeb
        href: https://api.example.com/appointment/6c792dbc-abad-464d-843b-42cd7444edeb
        category: duringFaultTicket
        lastUpdate: '2024-02-01T10:59:00+01:00'
        relatedEntity:
          - '@type': AppointmentRelatedEntityRefOrValue
            role: buyerServiceContract
            entity:
              '@type': Agreement
              name: buyerServiceContract
              engagedParty:
                - '@type': Organization
                  businessId: '500011'
              businessId: '500012'
              agreementType: buyerServiceContract
          - '@type': AppointmentRelatedEntityRefOrValue
            role: ordererServiceContract
            entity:
              '@type': Agreement
              name: ordererServiceContract
              engagedParty:
                - '@type': Organization
                  businessId: '500014'
              businessId: '500013'
              agreementType: ordererServiceContract
          - '@type': AppointmentRelatedEntityRefOrValue
            role: singleContract
            entity:
              '@type': Agreement
              name: singleContract
              businessId: '555001'
              agreementType: singleContract
          - '@type': AppointmentRelatedEntityRefOrValue
            role: troubleTicket
            entity:
              '@type': TroubleTicketRef
              id: 922ebf01-e930-47a0-842e-059d1f188a15
              '@referredType': TroubleTicket
          - '@type': AppointmentRelatedEntityRefOrValue
            role: searchTimeSlot
            entity:
              '@type': SearchTimeslotRef
              id: 158ecded-6aca-4f83-a54e-f35cc53be128
              '@referredType': SearchTimeslot
          - '@type': AppointmentRelatedEntityRefOrValue
            role: availableTimeSlot
            entity:
              '@type': AvailableTimeslotRef
              id: 321e0c9d-1112-41ac-9251-45fe542f92
              '@referredType': AvailableTimeslot
        status: initialized
        validFor:
          startDateTime: '2024-02-02T14:00:00+01:00'
          endDateTime: '2024-02-02T15:00:00+01:00'
    BereitstellungVorAppointmentCreatedInitialized:
      description: 201 Created (initialized) - Use Case 3
      value:
        $schema: '##SCHEMA_PATH##'
        '@type': Appointment
        id: 6c792dbc-abad-464d-843b-42cd7444edeb
        href: https://api.example.com/appointment/6c792dbc-abad-464d-843b-42cd7444edeb
        category: beforeProductOrder
        lastUpdate: '2024-02-01T10:59:00+01:00'
        relatedEntity:
          - '@type': AppointmentRelatedEntityRefOrValue
            role: buyerServiceContract
            entity:
              '@type': Agreement
              name: buyerServiceContract
              engagedParty:
                - '@type': Organization
                  businessId: '500011'
              businessId: '500012'
              agreementType: buyerServiceContract
          - '@type': AppointmentRelatedEntityRefOrValue
            role: ordererServiceContract
            entity:
              '@type': Agreement
              name: ordererServiceContract
              engagedParty:
                - '@type': Organization
                  businessId: '500014'
              businessId: '500013'
              agreementType: ordererServiceContract
          - '@type': AppointmentRelatedEntityRefOrValue
            role: singleContract
            entity:
              '@type': Agreement
              name: singleContract
              businessId: '555001'
              agreementType: singleContract
          - '@type': AppointmentRelatedEntityRefOrValue
            role: troubleTicket
            entity:
              '@type': TroubleTicketRef
              id: 922ebf01-e930-47a0-842e-059d1f188a15
              '@referredType': TroubleTicket
          - '@type': AppointmentRelatedEntityRefOrValue
            role: searchTimeSlot
            entity:
              '@type': SearchTimeslotRef
              id: 158ecded-6aca-4f83-a54e-f35cc53be128
              '@referredType': SearchTimeslot
          - '@type': AppointmentRelatedEntityRefOrValue
            role: availableTimeSlot
            entity:
              '@type': AvailableTimeslotRef
              id: 321e0c9d-1112-41ac-9251-45fe542f92
              '@referredType': AvailableTimeslot
        status: initialized
        validFor:
          startDateTime: '2024-02-02T14:00:00+01:00'
          endDateTime: '2024-02-02T15:00:00+01:00'
    BereitstellungNachAppointmentCreatedInitialized:
      description: 201 Created (initialized) - Use Case 4
      value:
        $schema: '##SCHEMA_PATH##'
        '@type': Appointment
        id: 6c792dbc-abad-464d-843b-42cd7444edeb
        href: https://api.example.com/appointment/6c792dbc-abad-464d-843b-42cd7444edeb
        category: duringProductOrder
        lastUpdate: '2024-02-01T10:59:00+01:00'
        relatedEntity:
          - '@type': AppointmentRelatedEntityRefOrValue
            role: buyerServiceContract
            entity:
              '@type': Agreement
              name: buyerServiceContract
              engagedParty:
                - '@type': Organization
                  businessId: '500011'
              businessId: '500012'
              agreementType: buyerServiceContract
          - '@type': AppointmentRelatedEntityRefOrValue
            role: ordererServiceContract
            entity:
              '@type': Agreement
              name: ordererServiceContract
              engagedParty:
                - '@type': Organization
                  businessId: '500014'
              businessId: '500013'
              agreementType: ordererServiceContract
          - '@type': AppointmentRelatedEntityRefOrValue
            role: singleContract
            entity:
              '@type': Agreement
              name: singleContract
              businessId: '555001'
              agreementType: singleContract
          - '@type': AppointmentRelatedEntityRefOrValue
            role: productOrder
            entity:
              '@type': ProductOrderRef
              id: 922ebf01-e930-47a0-842e-059d1f188a15
              '@referredType': ProductOrder
          - '@type': AppointmentRelatedEntityRefOrValue
            role: searchTimeSlot
            entity:
              '@type': SearchTimeslotRef
              id: 158ecded-6aca-4f83-a54e-f35cc53be128
              '@referredType': SearchTimeslot
          - '@type': AppointmentRelatedEntityRefOrValue
            role: availableTimeSlot
            entity:
              '@type': AvailableTimeslotRef
              id: 321e0c9d-1112-41ac-9251-45fe542f92
              '@referredType': AvailableTimeslot
        status: initialized
        validFor:
          startDateTime: '2024-02-02T14:00:00+01:00'
          endDateTime: '2024-02-02T15:00:00+01:00'
    EntstoerungVorSearchTimeSlotStateChangeInProgressEvent:
      description: SearchTimeSlotStateChangeEvent (inProgress) - Use Case 1
      value:
        $schema: '##SCHEMA_PATH##'
        '@type': SearchTimeSlotStateChangeEvent
        eventId: entstoerung-vor-3-searchtimeslot-state-change-in-progress
        eventTime: '2024-02-01T10:31:00+01:00'
        eventType: SearchTimeSlotStateChangeEvent
        event:
          searchTimeSlot:
            '@type': SearchTimeSlot
            id: 158ecded-6aca-4f83-a54e-f35cc53be128
            href: https://api.example.com/searchTimeSlot/158ecded-6aca-4f83-a54e-f35cc53be128
            appointmentCategory: beforeFaultTicket
            requestDate: '2024-02-01T10:30:00+01:00'
            requestPostedDate: '2024-02-01T10:30:30+01:00'
            state: inProgress
            stateChangeDate: '2024-02-01T10:31:00+01:00'
            relatedEntity:
              - '@type': SearchTimeSlotRelatedEntityRefOrValue
                role: buyerServiceContract
                entity:
                  '@type': Agreement
                  name: buyerServiceContract
                  engagedParty:
                    - '@type': Organization
                      businessId: '500011'
                  businessId: '500012'
                  agreementType: buyerServiceContract
              - '@type': SearchTimeSlotRelatedEntityRefOrValue
                role: ordererServiceContract
                entity:
                  '@type': Agreement
                  name: ordererServiceContract
                  engagedParty:
                    - '@type': Organization
                      businessId: '500014'
                  businessId: '500013'
                  agreementType: ordererServiceContract
              - '@type': SearchTimeSlotRelatedEntityRefOrValue
                role: affectedProduct
                entity:
                  '@type': ProductRef
                  id: 922ebf01-e930-47a0-842e-059d1f188a15
                  '@referredType': Product
              - '@type': SearchTimeSlotRelatedEntityRefOrValue
                role: singleContract
                entity:
                  '@type': Agreement
                  name: singleContract
                  businessId: '555001'
                  agreementType: singleContract
              - '@type': SearchTimeSlotRelatedEntityRefOrValue
                role: optionalServices
                entity:
                  '@type': ProductOffering
                  name: Ganzheitliche Entstoerung
            requestedTimeSlot:
              - '@type': TimeSlot
                validFor:
                  startDateTime: '2024-02-02T08:00:00+01:00'
                  endDateTime: '2024-02-02T12:00:00+01:00'
    EntstoerungVorSearchTimeSlotStateChangeDoneEvent:
      description: SearchTimeSlotStateChangeEvent (done) - Use Case 1
      value:
        $schema: '##SCHEMA_PATH##'
        '@type': SearchTimeSlotStateChangeEvent
        eventId: entstoerung-vor-5-searchtimeslot-state-change-done
        eventTime: '2024-02-01T10:32:00+01:00'
        eventType: SearchTimeSlotStateChangeEvent
        event:
          searchTimeSlot:
            '@type': SearchTimeSlot
            id: 158ecded-6aca-4f83-a54e-f35cc53be128
            href: https://api.example.com/searchTimeSlot/158ecded-6aca-4f83-a54e-f35cc53be128
            appointmentCategory: beforeFaultTicket
            requestDate: '2024-02-01T10:30:00+01:00'
            requestPostedDate: '2024-02-01T10:30:30+01:00'
            state: done
            stateChangeDate: '2024-02-01T10:32:00+01:00'
            availableTimeSlot:
              - '@type': TimeSlot
                id: e2cd000f-4731-4036-b481-d70d7617c70e
                validFor:
                  startDateTime: '2024-02-02T14:00:00+01:00'
                  endDateTime: '2024-02-02T15:00:00+01:00'
              - '@type': TimeSlot
                id: 321e0c9d-1112-41ac-9251-45fe542f92
                validFor:
                  startDateTime: '2024-02-03T08:00:00+01:00'
                  endDateTime: '2024-02-03T12:00:00+01:00'
            relatedEntity:
              - '@type': SearchTimeSlotRelatedEntityRefOrValue
                role: buyerServiceContract
                entity:
                  '@type': Agreement
                  name: buyerServiceContract
                  engagedParty:
                    - '@type': Organization
                      businessId: '500011'
                  businessId: '500012'
                  agreementType: buyerServiceContract
              - '@type': SearchTimeSlotRelatedEntityRefOrValue
                role: ordererServiceContract
                entity:
                  '@type': Agreement
                  name: ordererServiceContract
                  engagedParty:
                    - '@type': Organization
                      businessId: '500014'
                  businessId: '500013'
                  agreementType: ordererServiceContract
              - '@type': SearchTimeSlotRelatedEntityRefOrValue
                role: affectedProduct
                entity:
                  '@type': ProductRef
                  id: 922ebf01-e930-47a0-842e-059d1f188a15
                  '@referredType': Product
              - '@type': SearchTimeSlotRelatedEntityRefOrValue
                role: singleContract
                entity:
                  '@type': Agreement
                  name: singleContract
                  businessId: '555001'
                  agreementType: singleContract
              - '@type': SearchTimeSlotRelatedEntityRefOrValue
                role: optionalServices
                entity:
                  '@type': ProductOffering
                  name: Ganzheitliche Entstoerung
            requestedTimeSlot:
              - '@type': TimeSlot
                validFor:
                  startDateTime: '2024-02-02T08:00:00+01:00'
                  endDateTime: '2024-02-02T12:00:00+01:00'
    EntstoerungNachSearchTimeSlotStateChangeInProgressEvent:
      description: SearchTimeSlotStateChangeEvent (inProgress) - Use Case 2
      value:
        $schema: '##SCHEMA_PATH##'
        '@type': SearchTimeSlotStateChangeEvent
        eventId: entstoerung-nach-3-searchtimeslot-state-change-in-progress
        eventTime: '2024-02-01T10:31:00+01:00'
        eventType: SearchTimeSlotStateChangeEvent
        event:
          searchTimeSlot:
            '@type': SearchTimeSlot
            id: 158ecded-6aca-4f83-a54e-f35cc53be128
            href: https://api.example.com/searchTimeSlot/158ecded-6aca-4f83-a54e-f35cc53be128
            appointmentCategory: duringFaultTicket
            requestDate: '2024-02-01T10:30:00+01:00'
            requestPostedDate: '2024-02-01T10:30:30+01:00'
            state: inProgress
            stateChangeDate: '2024-02-01T10:31:00+01:00'
            relatedEntity:
              - '@type': SearchTimeSlotRelatedEntityRefOrValue
                role: buyerServiceContract
                entity:
                  '@type': Agreement
                  name: buyerServiceContract
                  engagedParty:
                    - '@type': Organization
                      businessId: '500011'
                  businessId: '500012'
                  agreementType: buyerServiceContract
              - '@type': SearchTimeSlotRelatedEntityRefOrValue
                role: ordererServiceContract
                entity:
                  '@type': Agreement
                  name: ordererServiceContract
                  engagedParty:
                    - '@type': Organization
                      businessId: '500014'
                  businessId: '500013'
                  agreementType: ordererServiceContract
              - '@type': SearchTimeSlotRelatedEntityRefOrValue
                role: troubleTicket
                entity:
                  '@type': TroubleTicketRef
                  id: 922ebf01-e930-47a0-842e-059d1f188a15
                  '@referredType': TroubleTicket
              - '@type': SearchTimeSlotRelatedEntityRefOrValue
                role: optionalServices
                entity:
                  '@type': ProductOffering
                  name: Ganzheitliche Entstoerung
            requestedTimeSlot:
              - '@type': TimeSlot
                validFor:
                  startDateTime: '2024-02-02T08:00:00+01:00'
                  endDateTime: '2024-02-02T12:00:00+01:00'
    EntstoerungNachSearchTimeSlotStateChangeDoneEvent:
      description: SearchTimeSlotStateChangeEvent (done) - Use Case 2
      value:
        $schema: '##SCHEMA_PATH##'
        '@type': SearchTimeSlotStateChangeEvent
        eventId: entstoerung-nach-5-searchtimeslot-state-change-done
        eventTime: '2024-02-01T10:32:00+01:00'
        eventType: SearchTimeSlotStateChangeEvent
        event:
          searchTimeSlot:
            '@type': SearchTimeSlot
            id: 158ecded-6aca-4f83-a54e-f35cc53be128
            href: https://api.example.com/searchTimeSlot/158ecded-6aca-4f83-a54e-f35cc53be128
            appointmentCategory: duringFaultTicket
            requestDate: '2024-02-01T10:30:00+01:00'
            requestPostedDate: '2024-02-01T10:30:30+01:00'
            state: done
            stateChangeDate: '2024-02-01T10:32:00+01:00'
            availableTimeSlot:
              - '@type': TimeSlot
                id: e2cd000f-4731-4036-b481-d70d7617c70e
                validFor:
                  startDateTime: '2024-02-02T14:00:00+01:00'
                  endDateTime: '2024-02-02T15:00:00+01:00'
              - '@type': TimeSlot
                id: 321e0c9d-1112-41ac-9251-45fe542f92
                validFor:
                  startDateTime: '2024-02-03T08:00:00+01:00'
                  endDateTime: '2024-02-03T12:00:00+01:00'
            relatedEntity:
              - '@type': SearchTimeSlotRelatedEntityRefOrValue
                role: buyerServiceContract
                entity:
                  '@type': Agreement
                  name: buyerServiceContract
                  engagedParty:
                    - '@type': Organization
                      businessId: '500011'
                  businessId: '500012'
                  agreementType: buyerServiceContract
              - '@type': SearchTimeSlotRelatedEntityRefOrValue
                role: ordererServiceContract
                entity:
                  '@type': Agreement
                  name: ordererServiceContract
                  engagedParty:
                    - '@type': Organization
                      businessId: '500014'
                  businessId: '500013'
                  agreementType: ordererServiceContract
              - '@type': SearchTimeSlotRelatedEntityRefOrValue
                role: troubleTicket
                entity:
                  '@type': TroubleTicketRef
                  id: 922ebf01-e930-47a0-842e-059d1f188a15
                  '@referredType': TroubleTicket
              - '@type': SearchTimeSlotRelatedEntityRefOrValue
                role: optionalServices
                entity:
                  '@type': ProductOffering
                  name: Ganzheitliche Entstoerung
            requestedTimeSlot:
              - '@type': TimeSlot
                validFor:
                  startDateTime: '2024-02-02T08:00:00+01:00'
                  endDateTime: '2024-02-02T12:00:00+01:00'
    BereitstellungVorSearchTimeSlotStateChangeInProgressEvent:
      description: SearchTimeSlotStateChangeEvent (inProgress) - Use Case 3
      value:
        $schema: '##SCHEMA_PATH##'
        '@type': SearchTimeSlotStateChangeEvent
        eventId: bereitstellung-vor-3-searchtimeslot-state-change-in-progress
        eventTime: '2024-02-01T10:31:00+01:00'
        eventType: SearchTimeSlotStateChangeEvent
        event:
          searchTimeSlot:
            '@type': SearchTimeSlot
            id: 158ecded-6aca-4f83-a54e-f35cc53be128
            href: https://api.example.com/searchTimeSlot/158ecded-6aca-4f83-a54e-f35cc53be128
            appointmentCategory: beforeProductOrder
            requestDate: '2024-02-01T10:30:00+01:00'
            requestPostedDate: '2024-02-01T10:30:30+01:00'
            state: inProgress
            stateChangeDate: '2024-02-01T10:31:00+01:00'
            relatedEntity:
              - '@type': SearchTimeSlotRelatedEntityRefOrValue
                role: buyerServiceContract
                entity:
                  '@type': Agreement
                  name: buyerServiceContract
                  engagedParty:
                    - '@type': Organization
                      businessId: '500011'
                  businessId: '500012'
                  agreementType: buyerServiceContract
              - '@type': SearchTimeSlotRelatedEntityRefOrValue
                role: ordererServiceContract
                entity:
                  '@type': Agreement
                  name: ordererServiceContract
                  engagedParty:
                    - '@type': Organization
                      businessId: '500014'
                  businessId: '500013'
                  agreementType: ordererServiceContract
              - '@type': SearchTimeSlotRelatedEntityRefOrValue
                role: affectedQualification
                entity:
                  '@type': QueryProductOfferingQualificationRef
                  id: 922ebf01-e930-47a0-842e-059d1f188a15
                  '@referredType': QueryProductOfferingQualification
              - '@type': SearchTimeSlotRelatedEntityRefOrValue
                role: affectedQualificationItem
                entity:
                  '@type': QueryProductOfferingQualificationItemRef
                  id: '1'
                  '@referredType': QueryProductOfferingQualificationItem
              - '@type': SearchTimeSlotRelatedEntityRefOrValue
                role: singleContract
                entity:
                  '@type': Agreement
                  name: singleContract
                  businessId: '555001'
                  agreementType: singleContract
              - '@type': SearchTimeSlotRelatedEntityRefOrValue
                role: optionalServices
                entity:
                  '@type': ProductOffering
                  name: Ganzheitliche Bereitstellung
            requestedTimeSlot:
              - '@type': TimeSlot
                validFor:
                  startDateTime: '2024-02-02T08:00:00+01:00'
                  endDateTime: '2024-02-02T12:00:00+01:00'
    BereitstellungVorSearchTimeSlotStateChangeDoneEvent:
      description: SearchTimeSlotStateChangeEvent (done) - Use Case 3
      value:
        $schema: '##SCHEMA_PATH##'
        '@type': SearchTimeSlotStateChangeEvent
        eventId: bereitstellung-vor-5-searchtimeslot-state-change-done
        eventTime: '2024-02-01T10:32:00+01:00'
        eventType: SearchTimeSlotStateChangeEvent
        event:
          searchTimeSlot:
            '@type': SearchTimeSlot
            id: 158ecded-6aca-4f83-a54e-f35cc53be128
            href: https://api.example.com/searchTimeSlot/158ecded-6aca-4f83-a54e-f35cc53be128
            appointmentCategory: beforeProductOrder
            requestDate: '2024-02-01T10:30:00+01:00'
            requestPostedDate: '2024-02-01T10:30:30+01:00'
            state: done
            stateChangeDate: '2024-02-01T10:32:00+01:00'
            availableTimeSlot:
              - '@type': TimeSlot
                id: e2cd000f-4731-4036-b481-d70d7617c70e
                validFor:
                  startDateTime: '2024-02-02T14:00:00+01:00'
                  endDateTime: '2024-02-02T15:00:00+01:00'
              - '@type': TimeSlot
                id: 321e0c9d-1112-41ac-9251-45fe542f92
                validFor:
                  startDateTime: '2024-02-03T08:00:00+01:00'
                  endDateTime: '2024-02-03T12:00:00+01:00'
            relatedEntity:
              - '@type': SearchTimeSlotRelatedEntityRefOrValue
                role: buyerServiceContract
                entity:
                  '@type': Agreement
                  name: buyerServiceContract
                  engagedParty:
                    - '@type': Organization
                      businessId: '500011'
                  businessId: '500012'
                  agreementType: buyerServiceContract
              - '@type': SearchTimeSlotRelatedEntityRefOrValue
                role: ordererServiceContract
                entity:
                  '@type': Agreement
                  name: ordererServiceContract
                  engagedParty:
                    - '@type': Organization
                      businessId: '500014'
                  businessId: '500013'
                  agreementType: ordererServiceContract
              - '@type': SearchTimeSlotRelatedEntityRefOrValue
                role: affectedQualification
                entity:
                  '@type': QueryProductOfferingQualificationRef
                  id: 922ebf01-e930-47a0-842e-059d1f188a15
                  '@referredType': QueryProductOfferingQualification
              - '@type': SearchTimeSlotRelatedEntityRefOrValue
                role: affectedQualificationItem
                entity:
                  '@type': QueryProductOfferingQualificationItemRef
                  id: '1'
                  '@referredType': QueryProductOfferingQualificationItem
              - '@type': SearchTimeSlotRelatedEntityRefOrValue
                role: singleContract
                entity:
                  '@type': Agreement
                  name: singleContract
                  businessId: '555001'
                  agreementType: singleContract
              - '@type': SearchTimeSlotRelatedEntityRefOrValue
                role: optionalServices
                entity:
                  '@type': ProductOffering
                  name: Ganzheitliche Bereitstellung
            requestedTimeSlot:
              - '@type': TimeSlot
                validFor:
                  startDateTime: '2024-02-02T08:00:00+01:00'
                  endDateTime: '2024-02-02T12:00:00+01:00'
    BereitstellungNachSearchTimeSlotStateChangeInProgressEvent:
      description: SearchTimeSlotStateChangeEvent (inProgress) - Use Case 4
      value:
        $schema: '##SCHEMA_PATH##'
        '@type': SearchTimeSlotStateChangeEvent
        eventId: bereitstellung-nach-3-searchtimeslot-state-change-in-progress
        eventTime: '2024-02-01T10:31:00+01:00'
        eventType: SearchTimeSlotStateChangeEvent
        event:
          searchTimeSlot:
            '@type': SearchTimeSlot
            id: 158ecded-6aca-4f83-a54e-f35cc53be128
            href: https://api.example.com/searchTimeSlot/158ecded-6aca-4f83-a54e-f35cc53be128
            appointmentCategory: duringProductOrder
            requestDate: '2024-02-01T10:30:00+01:00'
            requestPostedDate: '2024-02-01T10:30:30+01:00'
            state: inProgress
            stateChangeDate: '2024-02-01T10:31:00+01:00'
            relatedEntity:
              - '@type': SearchTimeSlotRelatedEntityRefOrValue
                role: buyerServiceContract
                entity:
                  '@type': Agreement
                  name: buyerServiceContract
                  engagedParty:
                    - '@type': Organization
                      businessId: '500011'
                  businessId: '500012'
                  agreementType: buyerServiceContract
              - '@type': SearchTimeSlotRelatedEntityRefOrValue
                role: ordererServiceContract
                entity:
                  '@type': Agreement
                  name: ordererServiceContract
                  engagedParty:
                    - '@type': Organization
                      businessId: '500014'
                  businessId: '500013'
                  agreementType: ordererServiceContract
              - '@type': SearchTimeSlotRelatedEntityRefOrValue
                role: affectedProductOrder
                entity:
                  '@type': ProductOrderRef
                  id: 922ebf01-e930-47a0-842e-059d1f188a15
                  '@referredType': ProductOrder
              - '@type': SearchTimeSlotRelatedEntityRefOrValue
                role: optionalServices
                entity:
                  '@type': ProductOffering
                  name: Ganzheitliche Bereitstellung
            requestedTimeSlot:
              - '@type': TimeSlot
                validFor:
                  startDateTime: '2024-02-02T08:00:00+01:00'
                  endDateTime: '2024-02-02T12:00:00+01:00'
    BereitstellungNachSearchTimeSlotStateChangeDoneEvent:
      description: SearchTimeSlotStateChangeEvent (done) - Use Case 4
      value:
        $schema: '##SCHEMA_PATH##'
        '@type': SearchTimeSlotStateChangeEvent
        eventId: bereitstellung-nach-5-searchtimeslot-state-change-done
        eventTime: '2024-02-01T10:32:00+01:00'
        eventType: SearchTimeSlotStateChangeEvent
        event:
          searchTimeSlot:
            '@type': SearchTimeSlot
            id: 158ecded-6aca-4f83-a54e-f35cc53be128
            href: https://api.example.com/searchTimeSlot/158ecded-6aca-4f83-a54e-f35cc53be128
            appointmentCategory: duringProductOrder
            requestDate: '2024-02-01T10:30:00+01:00'
            requestPostedDate: '2024-02-01T10:30:30+01:00'
            state: done
            stateChangeDate: '2024-02-01T10:32:00+01:00'
            availableTimeSlot:
              - '@type': TimeSlot
                id: e2cd000f-4731-4036-b481-d70d7617c70e
                validFor:
                  startDateTime: '2024-02-02T14:00:00+01:00'
                  endDateTime: '2024-02-02T15:00:00+01:00'
              - '@type': TimeSlot
                id: 321e0c9d-1112-41ac-9251-45fe542f92
                validFor:
                  startDateTime: '2024-02-03T08:00:00+01:00'
                  endDateTime: '2024-02-03T12:00:00+01:00'
            relatedEntity:
              - '@type': SearchTimeSlotRelatedEntityRefOrValue
                role: buyerServiceContract
                entity:
                  '@type': Agreement
                  name: buyerServiceContract
                  engagedParty:
                    - '@type': Organization
                      businessId: '500011'
                  businessId: '500012'
                  agreementType: buyerServiceContract
              - '@type': SearchTimeSlotRelatedEntityRefOrValue
                role: ordererServiceContract
                entity:
                  '@type': Agreement
                  name: ordererServiceContract
                  engagedParty:
                    - '@type': Organization
                      businessId: '500014'
                  businessId: '500013'
                  agreementType: ordererServiceContract
              - '@type': SearchTimeSlotRelatedEntityRefOrValue
                role: affectedProductOrder
                entity:
                  '@type': ProductOrderRef
                  id: 922ebf01-e930-47a0-842e-059d1f188a15
                  '@referredType': ProductOrder
              - '@type': SearchTimeSlotRelatedEntityRefOrValue
                role: optionalServices
                entity:
                  '@type': ProductOffering
                  name: Ganzheitliche Bereitstellung
            requestedTimeSlot:
              - '@type': TimeSlot
                validFor:
                  startDateTime: '2024-02-02T08:00:00+01:00'
                  endDateTime: '2024-02-02T12:00:00+01:00'
    EntstoerungVorSearchTimeSlotAttributeValueChangeEvent:
      description: SearchTimeSlotAttributeValueChangeEvent - Use Case 1
      value:
        $schema: '##SCHEMA_PATH##'
        '@type': SearchTimeSlotAttributeValueChangeEvent
        eventId: entstoerung-vor-4-searchtimeslot-attribute-value-change
        eventTime: '2024-02-01T10:31:30+01:00'
        eventType: SearchTimeSlotAttributeValueChangeEvent
        event:
          searchTimeSlot:
            '@type': SearchTimeSlot
            id: 158ecded-6aca-4f83-a54e-f35cc53be128
            href: https://api.example.com/searchTimeSlot/158ecded-6aca-4f83-a54e-f35cc53be128
            appointmentCategory: beforeFaultTicket
            requestDate: '2024-02-01T10:30:00+01:00'
            requestPostedDate: '2024-02-01T10:30:30+01:00'
            state: inProgress
            stateChangeDate: '2024-02-01T10:31:30+01:00'
            availableTimeSlot:
              - '@type': TimeSlot
                id: e2cd000f-4731-4036-b481-d70d7617c70e
                validFor:
                  startDateTime: '2024-02-02T14:00:00+01:00'
                  endDateTime: '2024-02-02T15:00:00+01:00'
              - '@type': TimeSlot
                id: 321e0c9d-1112-41ac-9251-45fe542f92
                validFor:
                  startDateTime: '2024-02-03T08:00:00+01:00'
                  endDateTime: '2024-02-03T12:00:00+01:00'
            relatedEntity:
              - '@type': SearchTimeSlotRelatedEntityRefOrValue
                role: buyerServiceContract
                entity:
                  '@type': Agreement
                  name: buyerServiceContract
                  engagedParty:
                    - '@type': Organization
                      businessId: '500011'
                  businessId: '500012'
                  agreementType: buyerServiceContract
              - '@type': SearchTimeSlotRelatedEntityRefOrValue
                role: ordererServiceContract
                entity:
                  '@type': Agreement
                  name: ordererServiceContract
                  engagedParty:
                    - '@type': Organization
                      businessId: '500014'
                  businessId: '500013'
                  agreementType: ordererServiceContract
              - '@type': SearchTimeSlotRelatedEntityRefOrValue
                role: affectedProduct
                entity:
                  '@type': ProductRef
                  id: 922ebf01-e930-47a0-842e-059d1f188a15
                  '@referredType': Product
              - '@type': SearchTimeSlotRelatedEntityRefOrValue
                role: singleContract
                entity:
                  '@type': Agreement
                  name: singleContract
                  businessId: '555001'
                  agreementType: singleContract
              - '@type': SearchTimeSlotRelatedEntityRefOrValue
                role: optionalServices
                entity:
                  '@type': ProductOffering
                  name: Ganzheitliche Entstoerung
            requestedTimeSlot:
              - '@type': TimeSlot
                validFor:
                  startDateTime: '2024-02-02T08:00:00+01:00'
                  endDateTime: '2024-02-02T12:00:00+01:00'
    EntstoerungNachSearchTimeSlotAttributeValueChangeEvent:
      description: SearchTimeSlotAttributeValueChangeEvent - Use Case 2
      value:
        $schema: '##SCHEMA_PATH##'
        '@type': SearchTimeSlotAttributeValueChangeEvent
        eventId: entstoerung-nach-4-searchtimeslot-attribute-value-change
        eventTime: '2024-02-01T10:31:30+01:00'
        eventType: SearchTimeSlotAttributeValueChangeEvent
        event:
          searchTimeSlot:
            '@type': SearchTimeSlot
            id: 158ecded-6aca-4f83-a54e-f35cc53be128
            href: https://api.example.com/searchTimeSlot/158ecded-6aca-4f83-a54e-f35cc53be128
            appointmentCategory: duringFaultTicket
            requestDate: '2024-02-01T10:30:00+01:00'
            requestPostedDate: '2024-02-01T10:30:30+01:00'
            state: inProgress
            stateChangeDate: '2024-02-01T10:31:30+01:00'
            availableTimeSlot:
              - '@type': TimeSlot
                id: e2cd000f-4731-4036-b481-d70d7617c70e
                validFor:
                  startDateTime: '2024-02-02T14:00:00+01:00'
                  endDateTime: '2024-02-02T15:00:00+01:00'
              - '@type': TimeSlot
                id: 321e0c9d-1112-41ac-9251-45fe542f92
                validFor:
                  startDateTime: '2024-02-03T08:00:00+01:00'
                  endDateTime: '2024-02-03T12:00:00+01:00'
            relatedEntity:
              - '@type': SearchTimeSlotRelatedEntityRefOrValue
                role: buyerServiceContract
                entity:
                  '@type': Agreement
                  name: buyerServiceContract
                  engagedParty:
                    - '@type': Organization
                      businessId: '500011'
                  businessId: '500012'
                  agreementType: buyerServiceContract
              - '@type': SearchTimeSlotRelatedEntityRefOrValue
                role: ordererServiceContract
                entity:
                  '@type': Agreement
                  name: ordererServiceContract
                  engagedParty:
                    - '@type': Organization
                      businessId: '500014'
                  businessId: '500013'
                  agreementType: ordererServiceContract
              - '@type': SearchTimeSlotRelatedEntityRefOrValue
                role: troubleTicket
                entity:
                  '@type': TroubleTicketRef
                  id: 922ebf01-e930-47a0-842e-059d1f188a15
                  '@referredType': TroubleTicket
              - '@type': SearchTimeSlotRelatedEntityRefOrValue
                role: optionalServices
                entity:
                  '@type': ProductOffering
                  name: Ganzheitliche Entstoerung
            requestedTimeSlot:
              - '@type': TimeSlot
                validFor:
                  startDateTime: '2024-02-02T08:00:00+01:00'
                  endDateTime: '2024-02-02T12:00:00+01:00'
    BereitstellungVorSearchTimeSlotAttributeValueChangeEvent:
      description: SearchTimeSlotAttributeValueChangeEvent - Use Case 3
      value:
        $schema: '##SCHEMA_PATH##'
        '@type': SearchTimeSlotAttributeValueChangeEvent
        eventId: bereitstellung-vor-4-searchtimeslot-attribute-value-change
        eventTime: '2024-02-01T10:31:30+01:00'
        eventType: SearchTimeSlotAttributeValueChangeEvent
        event:
          searchTimeSlot:
            '@type': SearchTimeSlot
            id: 158ecded-6aca-4f83-a54e-f35cc53be128
            href: https://api.example.com/searchTimeSlot/158ecded-6aca-4f83-a54e-f35cc53be128
            appointmentCategory: beforeProductOrder
            requestDate: '2024-02-01T10:30:00+01:00'
            requestPostedDate: '2024-02-01T10:30:30+01:00'
            state: inProgress
            stateChangeDate: '2024-02-01T10:31:30+01:00'
            availableTimeSlot:
              - '@type': TimeSlot
                id: e2cd000f-4731-4036-b481-d70d7617c70e
                validFor:
                  startDateTime: '2024-02-02T14:00:00+01:00'
                  endDateTime: '2024-02-02T15:00:00+01:00'
              - '@type': TimeSlot
                id: 321e0c9d-1112-41ac-9251-45fe542f92
                validFor:
                  startDateTime: '2024-02-03T08:00:00+01:00'
                  endDateTime: '2024-02-03T12:00:00+01:00'
            relatedEntity:
              - '@type': SearchTimeSlotRelatedEntityRefOrValue
                role: buyerServiceContract
                entity:
                  '@type': Agreement
                  name: buyerServiceContract
                  engagedParty:
                    - '@type': Organization
                      businessId: '500011'
                  businessId: '500012'
                  agreementType: buyerServiceContract
              - '@type': SearchTimeSlotRelatedEntityRefOrValue
                role: ordererServiceContract
                entity:
                  '@type': Agreement
                  name: ordererServiceContract
                  engagedParty:
                    - '@type': Organization
                      businessId: '500014'
                  businessId: '500013'
                  agreementType: ordererServiceContract
              - '@type': SearchTimeSlotRelatedEntityRefOrValue
                role: affectedQualification
                entity:
                  '@type': QueryProductOfferingQualificationRef
                  id: 922ebf01-e930-47a0-842e-059d1f188a15
                  '@referredType': QueryProductOfferingQualification
              - '@type': SearchTimeSlotRelatedEntityRefOrValue
                role: affectedQualificationItem
                entity:
                  '@type': QueryProductOfferingQualificationItemRef
                  id: '1'
                  '@referredType': QueryProductOfferingQualificationItem
              - '@type': SearchTimeSlotRelatedEntityRefOrValue
                role: singleContract
                entity:
                  '@type': Agreement
                  name: singleContract
                  businessId: '555001'
                  agreementType: singleContract
              - '@type': SearchTimeSlotRelatedEntityRefOrValue
                role: optionalServices
                entity:
                  '@type': ProductOffering
                  name: Ganzheitliche Bereitstellung
            requestedTimeSlot:
              - '@type': TimeSlot
                validFor:
                  startDateTime: '2024-02-02T08:00:00+01:00'
                  endDateTime: '2024-02-02T12:00:00+01:00'
    BereitstellungNachSearchTimeSlotAttributeValueChangeEvent:
      description: SearchTimeSlotAttributeValueChangeEvent - Use Case 4
      value:
        $schema: '##SCHEMA_PATH##'
        '@type': SearchTimeSlotAttributeValueChangeEvent
        eventId: bereitstellung-nach-4-searchtimeslot-attribute-value-change
        eventTime: '2024-02-01T10:31:30+01:00'
        eventType: SearchTimeSlotAttributeValueChangeEvent
        event:
          searchTimeSlot:
            '@type': SearchTimeSlot
            id: 158ecded-6aca-4f83-a54e-f35cc53be128
            href: https://api.example.com/searchTimeSlot/158ecded-6aca-4f83-a54e-f35cc53be128
            appointmentCategory: duringProductOrder
            requestDate: '2024-02-01T10:30:00+01:00'
            requestPostedDate: '2024-02-01T10:30:30+01:00'
            state: inProgress
            stateChangeDate: '2024-02-01T10:31:30+01:00'
            availableTimeSlot:
              - '@type': TimeSlot
                id: e2cd000f-4731-4036-b481-d70d7617c70e
                validFor:
                  startDateTime: '2024-02-02T14:00:00+01:00'
                  endDateTime: '2024-02-02T15:00:00+01:00'
              - '@type': TimeSlot
                id: 321e0c9d-1112-41ac-9251-45fe542f92
                validFor:
                  startDateTime: '2024-02-03T08:00:00+01:00'
                  endDateTime: '2024-02-03T12:00:00+01:00'
            relatedEntity:
              - '@type': SearchTimeSlotRelatedEntityRefOrValue
                role: buyerServiceContract
                entity:
                  '@type': Agreement
                  name: buyerServiceContract
                  engagedParty:
                    - '@type': Organization
                      businessId: '500011'
                  businessId: '500012'
                  agreementType: buyerServiceContract
              - '@type': SearchTimeSlotRelatedEntityRefOrValue
                role: ordererServiceContract
                entity:
                  '@type': Agreement
                  name: ordererServiceContract
                  engagedParty:
                    - '@type': Organization
                      businessId: '500014'
                  businessId: '500013'
                  agreementType: ordererServiceContract
              - '@type': SearchTimeSlotRelatedEntityRefOrValue
                role: affectedProductOrder
                entity:
                  '@type': ProductOrderRef
                  id: 922ebf01-e930-47a0-842e-059d1f188a15
                  '@referredType': ProductOrder
              - '@type': SearchTimeSlotRelatedEntityRefOrValue
                role: optionalServices
                entity:
                  '@type': ProductOffering
                  name: Ganzheitliche Bereitstellung
            requestedTimeSlot:
              - '@type': TimeSlot
                validFor:
                  startDateTime: '2024-02-02T08:00:00+01:00'
                  endDateTime: '2024-02-02T12:00:00+01:00'
    EntstoerungVorAppointmentStateChangeConfirmedEvent:
      description: AppointmentStateChangeEvent (confirmed) - Use Case 1
      value:
        $schema: '##SCHEMA_PATH##'
        '@type': AppointmentStateChangeEvent
        eventId: entstoerung-vor-8-appointment-state-change-confirmed
        eventTime: '2024-02-01T11:00:00+01:00'
        eventType: AppointmentStateChangeEvent
        event:
          appointment:
            '@type': Appointment
            id: 6c792dbc-abad-464d-843b-42cd7444edeb
            href: https://api.example.com/appointment/6c792dbc-abad-464d-843b-42cd7444edeb
            category: beforeFaultTicket
            lastUpdate: '2024-02-01T11:00:00+01:00'
            relatedEntity:
              - '@type': AppointmentRelatedEntityRefOrValue
                role: buyerServiceContract
                entity:
                  '@type': Agreement
                  name: buyerServiceContract
                  engagedParty:
                    - '@type': Organization
                      businessId: '500011'
                  businessId: '500012'
                  agreementType: buyerServiceContract
              - '@type': AppointmentRelatedEntityRefOrValue
                role: ordererServiceContract
                entity:
                  '@type': Agreement
                  name: ordererServiceContract
                  engagedParty:
                    - '@type': Organization
                      businessId: '500014'
                  businessId: '500013'
                  agreementType: ordererServiceContract
              - '@type': AppointmentRelatedEntityRefOrValue
                role: affectedProduct
                entity:
                  '@type': ProductRef
                  id: 922ebf01-e930-47a0-842e-059d1f188a15
                  '@referredType': Product
              - '@type': AppointmentRelatedEntityRefOrValue
                role: singleContract
                entity:
                  '@type': Agreement
                  name: singleContract
                  businessId: '555001'
                  agreementType: singleContract
              - '@type': AppointmentRelatedEntityRefOrValue
                role: searchTimeSlot
                entity:
                  '@type': SearchTimeslotRef
                  id: 158ecded-6aca-4f83-a54e-f35cc53be128
                  '@referredType': SearchTimeslot
              - '@type': AppointmentRelatedEntityRefOrValue
                role: availableTimeSlot
                entity:
                  '@type': AvailableTimeslotRef
                  id: 321e0c9d-1112-41ac-9251-45fe542f92
                  '@referredType': AvailableTimeslot
            status: confirmed
            validFor:
              startDateTime: '2024-02-02T14:00:00+01:00'
              endDateTime: '2024-02-02T15:00:00+01:00'
    EntstoerungNachAppointmentStateChangeConfirmedEvent:
      description: AppointmentStateChangeEvent (confirmed) - Use Case 2
      value:
        $schema: '##SCHEMA_PATH##'
        '@type': AppointmentStateChangeEvent
        eventId: entstoerung-nach-8-appointment-state-change-confirmed
        eventTime: '2024-02-01T11:00:00+01:00'
        eventType: AppointmentStateChangeEvent
        event:
          appointment:
            '@type': Appointment
            id: 6c792dbc-abad-464d-843b-42cd7444edeb
            href: https://api.example.com/appointment/6c792dbc-abad-464d-843b-42cd7444edeb
            category: duringFaultTicket
            lastUpdate: '2024-02-01T11:00:00+01:00'
            relatedEntity:
              - '@type': AppointmentRelatedEntityRefOrValue
                role: buyerServiceContract
                entity:
                  '@type': Agreement
                  name: buyerServiceContract
                  engagedParty:
                    - '@type': Organization
                      businessId: '500011'
                  businessId: '500012'
                  agreementType: buyerServiceContract
              - '@type': AppointmentRelatedEntityRefOrValue
                role: ordererServiceContract
                entity:
                  '@type': Agreement
                  name: ordererServiceContract
                  engagedParty:
                    - '@type': Organization
                      businessId: '500014'
                  businessId: '500013'
                  agreementType: ordererServiceContract
              - '@type': AppointmentRelatedEntityRefOrValue
                role: singleContract
                entity:
                  '@type': Agreement
                  name: singleContract
                  businessId: '555001'
                  agreementType: singleContract
              - '@type': AppointmentRelatedEntityRefOrValue
                role: troubleTicket
                entity:
                  '@type': TroubleTicketRef
                  id: 922ebf01-e930-47a0-842e-059d1f188a15
                  '@referredType': TroubleTicket
              - '@type': AppointmentRelatedEntityRefOrValue
                role: searchTimeSlot
                entity:
                  '@type': SearchTimeslotRef
                  id: 158ecded-6aca-4f83-a54e-f35cc53be128
                  '@referredType': SearchTimeslot
              - '@type': AppointmentRelatedEntityRefOrValue
                role: availableTimeSlot
                entity:
                  '@type': AvailableTimeslotRef
                  id: 321e0c9d-1112-41ac-9251-45fe542f92
                  '@referredType': AvailableTimeslot
            status: confirmed
            validFor:
              startDateTime: '2024-02-02T14:00:00+01:00'
              endDateTime: '2024-02-02T15:00:00+01:00'
    BereitstellungVorAppointmentStateChangeConfirmedEvent:
      description: AppointmentStateChangeEvent (confirmed) - Use Case 3
      value:
        $schema: '##SCHEMA_PATH##'
        '@type': AppointmentStateChangeEvent
        eventId: bereitstellung-vor-8-appointment-state-change-confirmed
        eventTime: '2024-02-01T11:00:00+01:00'
        eventType: AppointmentStateChangeEvent
        event:
          appointment:
            '@type': Appointment
            id: 6c792dbc-abad-464d-843b-42cd7444edeb
            href: https://api.example.com/appointment/6c792dbc-abad-464d-843b-42cd7444edeb
            category: beforeProductOrder
            lastUpdate: '2024-02-01T11:00:00+01:00'
            relatedEntity:
              - '@type': AppointmentRelatedEntityRefOrValue
                role: buyerServiceContract
                entity:
                  '@type': Agreement
                  name: buyerServiceContract
                  engagedParty:
                    - '@type': Organization
                      businessId: '500011'
                  businessId: '500012'
                  agreementType: buyerServiceContract
              - '@type': AppointmentRelatedEntityRefOrValue
                role: ordererServiceContract
                entity:
                  '@type': Agreement
                  name: ordererServiceContract
                  engagedParty:
                    - '@type': Organization
                      businessId: '500014'
                  businessId: '500013'
                  agreementType: ordererServiceContract
              - '@type': AppointmentRelatedEntityRefOrValue
                role: singleContract
                entity:
                  '@type': Agreement
                  name: singleContract
                  businessId: '555001'
                  agreementType: singleContract
              - '@type': AppointmentRelatedEntityRefOrValue
                role: troubleTicket
                entity:
                  '@type': TroubleTicketRef
                  id: 922ebf01-e930-47a0-842e-059d1f188a15
                  '@referredType': TroubleTicket
              - '@type': AppointmentRelatedEntityRefOrValue
                role: searchTimeSlot
                entity:
                  '@type': SearchTimeslotRef
                  id: 158ecded-6aca-4f83-a54e-f35cc53be128
                  '@referredType': SearchTimeslot
              - '@type': AppointmentRelatedEntityRefOrValue
                role: availableTimeSlot
                entity:
                  '@type': AvailableTimeslotRef
                  id: 321e0c9d-1112-41ac-9251-45fe542f92
                  '@referredType': AvailableTimeslot
            status: confirmed
            validFor:
              startDateTime: '2024-02-02T14:00:00+01:00'
              endDateTime: '2024-02-02T15:00:00+01:00'
    BereitstellungNachAppointmentStateChangeConfirmedEvent:
      description: AppointmentStateChangeEvent (confirmed) - Use Case 4
      value:
        $schema: '##SCHEMA_PATH##'
        '@type': AppointmentStateChangeEvent
        eventId: bereitstellung-nach-8-appointment-state-change-confirmed
        eventTime: '2024-02-01T11:00:00+01:00'
        eventType: AppointmentStateChangeEvent
        event:
          appointment:
            '@type': Appointment
            id: 6c792dbc-abad-464d-843b-42cd7444edeb
            href: https://api.example.com/appointment/6c792dbc-abad-464d-843b-42cd7444edeb
            category: duringProductOrder
            lastUpdate: '2024-02-01T11:00:00+01:00'
            relatedEntity:
              - '@type': AppointmentRelatedEntityRefOrValue
                role: buyerServiceContract
                entity:
                  '@type': Agreement
                  name: buyerServiceContract
                  engagedParty:
                    - '@type': Organization
                      businessId: '500011'
                  businessId: '500012'
                  agreementType: buyerServiceContract
              - '@type': AppointmentRelatedEntityRefOrValue
                role: ordererServiceContract
                entity:
                  '@type': Agreement
                  name: ordererServiceContract
                  engagedParty:
                    - '@type': Organization
                      businessId: '500014'
                  businessId: '500013'
                  agreementType: ordererServiceContract
              - '@type': AppointmentRelatedEntityRefOrValue
                role: singleContract
                entity:
                  '@type': Agreement
                  name: singleContract
                  businessId: '555001'
                  agreementType: singleContract
              - '@type': AppointmentRelatedEntityRefOrValue
                role: productOrder
                entity:
                  '@type': ProductOrderRef
                  id: 922ebf01-e930-47a0-842e-059d1f188a15
                  '@referredType': ProductOrder
              - '@type': AppointmentRelatedEntityRefOrValue
                role: searchTimeSlot
                entity:
                  '@type': SearchTimeslotRef
                  id: 158ecded-6aca-4f83-a54e-f35cc53be128
                  '@referredType': SearchTimeslot
              - '@type': AppointmentRelatedEntityRefOrValue
                role: availableTimeSlot
                entity:
                  '@type': AvailableTimeslotRef
                  id: 321e0c9d-1112-41ac-9251-45fe542f92
                  '@referredType': AvailableTimeslot
            status: confirmed
            validFor:
              startDateTime: '2024-02-02T14:00:00+01:00'
              endDateTime: '2024-02-02T15:00:00+01:00'
  requestBodies:
    Appointment_FVO:
      description: The Appointment to be created
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Appointment_FVO'
          examples:
            EntstoerungVorAppointmentRequest:
              $ref: '#/components/examples/EntstoerungVorAppointmentRequest'
            EntstoerungNachAppointmentRequest:
              $ref: '#/components/examples/EntstoerungNachAppointmentRequest'
            BereitstellungVorAppointmentRequest:
              $ref: '#/components/examples/BereitstellungVorAppointmentRequest'
            BereitstellungNachAppointmentRequest:
              $ref: '#/components/examples/BereitstellungNachAppointmentRequest'
      required: true
    SearchTimeSlot_FVO:
      description: The SearchTimeSlot to be created
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/SearchTimeSlot_FVO'
          examples:
            EntstoerungVorSearchTimeSlotRequest:
              $ref: '#/components/examples/EntstoerungVorSearchTimeSlotRequest'
            EntstoerungNachSearchTimeSlotRequest:
              $ref: '#/components/examples/EntstoerungNachSearchTimeSlotRequest'
            BereitstellungVorSearchTimeSlotRequest:
              $ref: '#/components/examples/BereitstellungVorSearchTimeSlotRequest'
            BereitstellungNachSearchTimeSlotRequest:
              $ref: '#/components/examples/BereitstellungNachSearchTimeSlotRequest'
      required: true
    AppointmentStateChangeEvent:
      description: Appointment stateChange Event payload
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/AppointmentStateChangeEvent'
          examples:
            EntstoerungVorAppointmentStateChangeConfirmed:
              $ref: '#/components/examples/EntstoerungVorAppointmentStateChangeConfirmedEvent'
            EntstoerungNachAppointmentStateChangeConfirmed:
              $ref: '#/components/examples/EntstoerungNachAppointmentStateChangeConfirmedEvent'
            BereitstellungVorAppointmentStateChangeConfirmed:
              $ref: '#/components/examples/BereitstellungVorAppointmentStateChangeConfirmedEvent'
            BereitstellungNachAppointmentStateChangeConfirmed:
              $ref: '#/components/examples/BereitstellungNachAppointmentStateChangeConfirmedEvent'
      required: true
    AppointmentCreateEvent:
      description: Appointment Create Event payload
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/AppointmentCreateEvent'
      required: true
    AppointmentAttributeValueChangeEvent:
      description: Appointment attributeValueChange Event payload
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/AppointmentAttributeValueChangeEvent'
      required: true
    AppointmentDeleteEvent:
      description: Appointment delete Event payload
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/AppointmentDeleteEvent'
      required: true
    SearchTimeSlotStateChangeEvent:
      description: SearchTimeSlot stateChange Event payload
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/SearchTimeSlotStateChangeEvent'
          examples:
            EntstoerungVorSearchTimeSlotStateChangeInProgress:
              $ref: '#/components/examples/EntstoerungVorSearchTimeSlotStateChangeInProgressEvent'
            EntstoerungVorSearchTimeSlotStateChangeDone:
              $ref: '#/components/examples/EntstoerungVorSearchTimeSlotStateChangeDoneEvent'
            EntstoerungNachSearchTimeSlotStateChangeInProgress:
              $ref: '#/components/examples/EntstoerungNachSearchTimeSlotStateChangeInProgressEvent'
            EntstoerungNachSearchTimeSlotStateChangeDone:
              $ref: '#/components/examples/EntstoerungNachSearchTimeSlotStateChangeDoneEvent'
            BereitstellungVorSearchTimeSlotStateChangeInProgress:
              $ref: '#/components/examples/BereitstellungVorSearchTimeSlotStateChangeInProgressEvent'
            BereitstellungVorSearchTimeSlotStateChangeDone:
              $ref: '#/components/examples/BereitstellungVorSearchTimeSlotStateChangeDoneEvent'
            BereitstellungNachSearchTimeSlotStateChangeInProgress:
              $ref: '#/components/examples/BereitstellungNachSearchTimeSlotStateChangeInProgressEvent'
            BereitstellungNachSearchTimeSlotStateChangeDone:
              $ref: '#/components/examples/BereitstellungNachSearchTimeSlotStateChangeDoneEvent'
      required: true
    SearchTimeSlotAttributeValueChangeEvent:
      description: Appointment attributeValueChange Event payload
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/SearchTimeSlotAttributeValueChangeEvent'
          examples:
            EntstoerungVorSearchTimeSlotAttributeValueChange:
              $ref: '#/components/examples/EntstoerungVorSearchTimeSlotAttributeValueChangeEvent'
            EntstoerungNachSearchTimeSlotAttributeValueChange:
              $ref: '#/components/examples/EntstoerungNachSearchTimeSlotAttributeValueChangeEvent'
            BereitstellungVorSearchTimeSlotAttributeValueChange:
              $ref: '#/components/examples/BereitstellungVorSearchTimeSlotAttributeValueChangeEvent'
            BereitstellungNachSearchTimeSlotAttributeValueChange:
              $ref: '#/components/examples/BereitstellungNachSearchTimeSlotAttributeValueChangeEvent'
      required: true
  responses:
    '400':
      description: Bad Request
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorMessage'
    '401':
      description: Unauthorized
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorMessage'
    '403':
      description: Forbidden
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorMessage'
    '404':
      description: Not Found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorMessage'
    '405':
      description: Method Not allowed
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorMessage'
    '409':
      description: Conflict
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorMessage'
    '500':
      description: Internal Server Error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorMessage'
    '501':
      description: Not Implemented
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorMessage'
    '503':
      description: Service Unavailable
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorMessage'
    200AppointmentArray:
      description: Success
      headers:
        X-Total-Count:
          $ref: '#/components/headers/X-Total-Count'
        X-Result-Count:
          $ref: '#/components/headers/X-Result-Count'
      content:
        application/json:
          schema:
            type: array
            items:
              $ref: '#/components/schemas/Appointment'
    201Appointment:
      description: Created
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Appointment'
          examples:
            EntstoerungVorCreated:
              $ref: '#/components/examples/EntstoerungVorAppointmentCreatedInitialized'
            EntstoerungNachCreated:
              $ref: '#/components/examples/EntstoerungNachAppointmentCreatedInitialized'
            BereitstellungVorCreated:
              $ref: '#/components/examples/BereitstellungVorAppointmentCreatedInitialized'
            BereitstellungNachCreated:
              $ref: '#/components/examples/BereitstellungNachAppointmentCreatedInitialized'
    200Appointment_Get:
      description: Success
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Appointment'
    200SearchTimeSlotArray:
      description: Success
      headers:
        X-Total-Count:
          $ref: '#/components/headers/X-Total-Count'
        X-Result-Count:
          $ref: '#/components/headers/X-Result-Count'
      content:
        application/json:
          schema:
            type: array
            items:
              $ref: '#/components/schemas/SearchTimeSlot'
    201SearchTimeSlot:
      description: Created
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/SearchTimeSlot'
          examples:
            EntstoerungVorCreated:
              $ref: '#/components/examples/EntstoerungVorSearchTimeSlotCreatedAcknowledged'
            EntstoerungNachCreated:
              $ref: '#/components/examples/EntstoerungNachSearchTimeSlotCreatedAcknowledged'
            BereitstellungVorCreated:
              $ref: '#/components/examples/BereitstellungVorSearchTimeSlotCreatedAcknowledged'
            BereitstellungNachCreated:
              $ref: '#/components/examples/BereitstellungNachSearchTimeSlotCreatedAcknowledged'
    200SearchTimeSlot_Get:
      description: Success
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/SearchTimeSlot'
    DefaultError:
      description: Error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorMessage'
    204Notified:
      description: Notified
  securitySchemes:
    OAuth2ClientCredentials:
      type: oauth2
      description: See https://oauth.net/2/grant-types/client-credentials/
      flows:
        clientCredentials:
          tokenUrl: https://auth.example.org/oauth2/token/
          scopes:
            read: read objects
            write: write objects
  parameters:
    Fields:
      name: fields
      in: query
      description: Comma-separated properties to be provided in response
      schema:
        type: string
    Offset:
      name: offset
      in: query
      description: Requested index for start of resources to be provided in response
      schema:
        type: integer
    Limit:
      name: limit
      in: query
      description: Requested number of resources to be provided in response
      schema:
        type: integer
    Id:
      name: id
      required: true
      schema:
        type: string
      in: path
      description: Identifier of the API Resource
  headers:
    X-Total-Count:
      description: Total number of items matching criteria
      schema:
        type: integer
    X-Result-Count:
      description: Actual number of items returned in the response body
      schema:
        type: integer
