MEF

MEF LSO Sonata Appointment Management Notification

Appointment Management Notification — the OpenAPI definition published by Mplify (formerly MEF) in the MEF LSO Sonata SDK, Kylie release. LSO Sonata is the Interface Reference Point between two Service Providers (Buyer and Seller), covering inter-provider business/product automation. 2 path(s), 2 operation(s). Apache-2.0 licensed and openly downloadable from public GitHub.

OpenAPI Specification

mef-lso-sonata-appointment-notification-openapi.yml Raw ↑
openapi: 3.0.1
info:
  title: Appointment Management Notification
  description: >
    **This file forms part of Mplify 137.1**


    **This API implements Business Requirements described in MEF 113.**


    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. 


    List of supported use cases:

    - Send Appointment Notification


    Copyright 2025 Mplify Alliance and its contributors.


    This file includes content based on the TM Forum Appointment Management API
    (TMF646 v4.0.0) available at
    https://github.com/tmforum-apis/TMF646_AppointmentManagement, which is
    licensed by the TM Forum under the Apache License version 2.0. Such content
    has been modified by the Mplify Alliance and its contributors.
  version: 3.0.1
servers:
  - url: 'https://{serverBase}/mefApi/sonata/appointmentNotification/v3/'
    variables:
      serverBase:
        description: The base of Buyer's URL.
        default: mplify.net
tags:
  - name: Notification listeners
    description: |
      The Buyer's endpoint to send particular event types notifications to.
paths:
  /listener/appointmentAttributeValueChangeEvent:
    post:
      tags:
        - Notification listeners
      summary: Client listener for entity appointmentAttributeValueChangeEvent
      description: >-
        Client listener for receiving the appointmentAttributeValueChangeEvent
        notification
      operationId: listenToAppointmentAttributeValueChangeEvent
      parameters:
        - name: buyerId
          in: query
          description: >-
            The unique identifier of the organization that is acting as the
            Buyer. MUST be specified in the request when the requester
            represents more than one Buyer.
          required: false
          schema:
            type: string
        - name: sellerId
          in: query
          description: >-
            The unique identifier of the organization that is acting as the
            Seller. MUST be specified in the request when the responding entity
            represents more than one Seller.
          required: false
          schema:
            type: string
      requestBody:
        description: The event data
        content:
          application/json;charset=utf-8:
            schema:
              $ref: '#/components/schemas/AppointmentAttributeValueChangeEvent'
        required: true
      responses:
        '204':
          description:
            'No Content (https://tools.ietf.org/html/rfc7231#section-6.3.5)'
        '400':
          description: Bad Request
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error400'
        '401':
          description: Unauthorized
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error401'
        '403':
          description: Forbidden
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error403'
        '500':
          description: Internal Server Error
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error500'
  /listener/appointmentStatusChangeEvent:
    post:
      tags:
        - Notification listeners
      summary: Client listener for entity appointmentStatusChangeEvent
      description: >-
        Client listener for receiving the appointmentStatusChangeEvent
        notification
      operationId: listenToAppointmentStatusChangeEvent
      parameters:
        - name: buyerId
          in: query
          description: >-
            The unique identifier of the organization that is acting as the
            Buyer. MUST be specified in the request when the requester
            represents more than one Buyer.
          required: false
          schema:
            type: string
        - name: sellerId
          in: query
          description: >-
            The unique identifier of the organization that is acting as the
            Seller. MUST be specified in the request when the responding entity
            represents more than one Seller.
          required: false
          schema:
            type: string
      requestBody:
        description: The event data
        content:
          application/json;charset=utf-8:
            schema:
              $ref: '#/components/schemas/AppointmentStatusChangeEvent'
        required: true
      responses:
        '204':
          description:
            'No Content (https://tools.ietf.org/html/rfc7231#section-6.3.5)'
        '400':
          description: Bad Request
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error400'
        '401':
          description: Unauthorized
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error401'
        '403':
          description: Forbidden
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error403'
        '500':
          description: Internal Server Error
          content:
            application/json;charset=utf-8:
              schema:
                $ref: '#/components/schemas/Error500'
components:
  schemas:
    AppointmentAttributeValueChangeEvent:
      allOf:
        - $ref: '#/components/schemas/Event'
        - type: object
          properties:
            eventType:
              description: Indicates the type of the event.
              type: string
              enum:
                - appointmentAttributeValueChangeEvent
            event:
              description: >
                A reference to the object that is the source of the
                notification.
              $ref: '#/components/schemas/AppointmentAttributeValueChangeEventPayload'
          required:
            - event
            - eventType
    AppointmentAttributeValueChangeEventPayload:
      description: The identifier of the Appointment is subject of this event.
      type: object
      properties:
        id:
          description: ID of the Appointment attributed by quoting system
          type: string
        href:
          description: Hyperlink to access the Appointment
          type: string
      required:
        - id
    AppointmentStatusChangeEvent:
      allOf:
        - $ref: '#/components/schemas/Event'
        - type: object
          properties:
            eventType:
              description: Indicates the type of the event.
              type: string
              enum:
                - appointmentStatusChangeEvent
            event:
              description: >
                A reference to the object that is the source of the
                notification.
              $ref: '#/components/schemas/AppointmentStatusChangeEventPayload'
          required:
            - event
            - eventType
    AppointmentStatusChangeEventPayload:
      description:
        The identifier of the Product Offering being subject of this event.
      type: object
      properties:
        id:
          description: ID of the Product Offering attributed by the Seller
          type: string
        href:
          description: Hyperlink to access the Product Offering
          type: string
          format: uri
        status:
          description: The current lifecycle status of the Product Offering.
          $ref: '#/components/schemas/AppointmentStatusType'
      required:
        - id
        - status
    AppointmentStatusType:
      description: |
        Valid values for the lifecycle status of the appointment.

        | status                  | MEF 113 name           | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
        | ----------------------- | ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
        | `confirmed`             | SCHEDULED              | The Buyer has negotiated and scheduled the Appointment with the Seller.                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
        | `inProgress`            | IN_PROGRESS            | The Appointment can no longer be cancelled (point of no return), this is up to the Seller's discretion.                         |
        | `cancelled`             | CANCELLED              | The Appointment was cancelled by the Buyer or the Seller determined that an Appointment was not required.  This is a terminal state.                                                                                                                                                                                                                                                                                                                                                                                      |
        | `missed`                | MISSED                 | The Appointment did not take place, because of a Seller related issue. For example, no Seller Technician was available on the date of the appointment                                                                                                                                                                                                                                                                                                                                                                     |
        | `failed`                | FAILED                 | The Appointment did not take place, because of an issue with the Buy-er. For example, Seller Technician was unable to get to the Appointment due to an incorrect location or unable to get access to the Buyer`s site. This is a terminal state                                                                                                                                                                                                                                                                           |
        | `completed`             | COMPLETED              | The Appointment took place as scheduled. This is a terminal state.                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
      type: string
      enum:
        - confirmed
        - inProgress
        - cancelled
        - missed
        - failed
        - completed
    Error:
      description: >
        Standard Class used to describe API response error Not intended to be
        used directly. The `code` in the HTTP header is used as a discriminator
        for the type of error returned in runtime.
      type: object
      properties:
        reason:
          description: >-
            Text that explains the reason for the error. This can be shown to a
            client user.
          type: string
          maxLength: 255
        message:
          description: >-
            Text that provides mode details and corrective actions related to
            the error. This can be shown to a client user.
          type: string
        referenceError:
          description: URL pointing to documentation describing the error
          type: string
          format: uri
      required:
        - reason
    Error400:
      description:
        'Bad Request. (https://tools.ietf.org/html/rfc7231#section-6.5.1)'
      allOf:
        - $ref: '#/components/schemas/Error'
        - type: object
          properties:
            code:
              description: >-
                One of the following error codes:

                - missingQueryParameter: The URI is missing a required
                query-string parameter

                - missingQueryValue: The URI is missing a required query-string
                parameter value

                - invalidQuery: The query section of the URI is invalid.

                - invalidBody: The request has an invalid body
              $ref: '#/components/schemas/Error400Code'
          required:
            - code
    Error400Code:
      description: >-
        One of the following error codes:

        - missingQueryParameter: The URI is missing a required query-string
        parameter

        - missingQueryValue: The URI is missing a required query-string
        parameter value

        - invalidQuery: The query section of the URI is invalid.

        - invalidBody: The request has an invalid body
      type: string
      enum:
        - missingQueryParameter
        - missingQueryValue
        - invalidQuery
        - invalidBody
    Error401:
      description:
        'Unauthorized.  (https://tools.ietf.org/html/rfc7235#section-3.1)'
      allOf:
        - $ref: '#/components/schemas/Error'
        - type: object
          properties:
            code:
              description: >-
                One of the following error codes:

                - missingCredentials: No credentials provided.

                - invalidCredentials: Provided credentials are invalid or
                expired
              $ref: '#/components/schemas/Error401Code'
          required:
            - code
    Error401Code:
      description: |-
        One of the following error codes:
        - missingCredentials: No credentials provided.
        - invalidCredentials: Provided credentials are invalid or expired
      type: string
      enum:
        - missingCredentials
        - invalidCredentials
    Error403:
      description: >-
        Forbidden. This code indicates that the server understood the request
        but refuses to authorize it.
        (https://tools.ietf.org/html/rfc7231#section-6.5.3)
      allOf:
        - $ref: '#/components/schemas/Error'
        - type: object
          properties:
            code:
              description: |-
                This code indicates that the server understood
                the request but refuses to authorize it because
                of one of the following error codes:
                - accessDenied: Access denied
                - forbiddenRequester: Forbidden requester
                - tooManyUsers: Too many users
              $ref: '#/components/schemas/Error403Code'
          required:
            - code
    Error403Code:
      description: |-
        This code indicates that the server understood
        the request but refuses to authorize it because
        of one of the following error codes:
        - accessDenied: Access denied
        - forbiddenRequester: Forbidden requester
        - tooManyUsers: Too many users
      type: string
      enum:
        - accessDenied
        - forbiddenRequester
        - tooManyUsers
    Error500:
      description: >-
        Internal Server Error.
        (https://tools.ietf.org/html/rfc7231#section-6.6.1)
      allOf:
        - $ref: '#/components/schemas/Error'
        - type: object
          properties:
            code:
              description: >-
                The following error code:

                - internalError: Internal server error - the server encountered
                an unexpected condition that prevented it from fulfilling the
                request.
              type: string
              enum:
                - internalError
          required:
            - code
    Event:
      description: >-
        Event class is used to describe information structure used for
        notification.
      type: object
      properties:
        eventId:
          description: Id of the event
          type: string
        eventTime:
          description: Date-time when the event occurred
          type: string
          format: date-time
        eventType:
          description: The type of the notification.
          type: string
        event:
          description: The event linked to the involved resource object
          type: object
      required:
        - event
        - eventId
        - eventTime
        - eventType