openapi: 3.0.1
info:
title: Service Ordering Notification
description: |
**This file forms part of Mplify 99.1**
Supported use cases:
- Send Notifications
Copyright 2025 Mplify Alliance and its contributors.
This file includes content based on the TM Forum Service Order API (TMF641
v4.1.0) available at https://github.com/tmforum-apis/TMF641_ServiceOrder,
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: 1.0.1
servers:
- url: "https://{serverBase}/mefApi/allegro/serviceOrderingNotification/v1/"
variables:
serverBase:
description: The base of BUS's URL.
default: mplify.net
tags:
- name: Notification listeners
description: |
The SOF's endpoint to send particular event types notifications to.
paths:
/listener/serviceOrderCreateEvent:
post:
tags:
- Notification listeners
summary: Service Order Create Notification endpoint
description: This endpoint is used to receive notifications on Service Order Create
operationId: serviceOrderCreateEvent
requestBody:
description: The ProductOrder to be created
content:
application/json;charset=utf-8:
schema:
$ref: "#/components/schemas/ServiceOrderCreateEvent"
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/serviceOrderStateChangeEvent:
post:
tags:
- Notification listeners
summary: Service Order State Change Notification endpoint
description: >-
This endpoint is used to receive notifications on Service Order State
Change
operationId: serviceOrderStateChangeEvent
requestBody:
description: The ProductOrder to be created
content:
application/json;charset=utf-8:
schema:
$ref: "#/components/schemas/ServiceOrderStateChangeEvent"
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/serviceOrderInformationRequiredEvent:
post:
tags:
- Notification listeners
summary: Service Order Information Required Notification endpoint
description: >-
This endpoint is used to receive notifications on Service Order
Information Required
operationId: serviceOrderInformationRequiredEvent
requestBody:
description: The ProductOrder to be created
content:
application/json;charset=utf-8:
schema:
$ref: "#/components/schemas/ServiceOrderInformationRequiredEvent"
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/serviceOrderItemStateChangeEvent:
post:
tags:
- Notification listeners
summary: Service Order Item State Change Notification endpoint
description: >-
This endpoint is used to receive notifications on Service Order Item
State Change
operationId: serviceOrderItemStateChangeEvent
requestBody:
description: The ProductOrder to be created
content:
application/json;charset=utf-8:
schema:
$ref: "#/components/schemas/ServiceOrderItemStateChangeEvent"
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:
Error:
description: >
Standard Class used to describe API response error
Not intended to be use 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 error. This can be shown to a
client user.
type: string
maxLength: 255
message:
description: >-
Text that provide 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. (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: >-
One of the following error codes:
- 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
ServiceOrderEventPayload:
description: >-
The identifier of the Service Order and Order Item being subject of this
event.
type: object
properties:
id:
description: ID of the Service Order
type: string
href:
description: Hyperlink to access the Service Order
type: string
required:
- id
ServiceOrderCreateEvent:
allOf:
- $ref: '#/components/schemas/Event'
- type: object
properties:
eventType:
description: |
Indicates the type of the event.
type: string
enum:
- serviceOrderCreateEvent
event:
description: |
A reference to the object that is source of the notification.
$ref: '#/components/schemas/ServiceOrderEventPayload'
required:
- event
- eventType
ServiceOrderItemStateChangeEvent:
allOf:
- $ref: '#/components/schemas/Event'
- type: object
properties:
eventType:
description: |
Indicates the type of the event.
type: string
enum:
- serviceOrderItemStateChangeEvent
event:
description: |
A reference to the object that is source of the notification.
$ref: '#/components/schemas/ServiceOrderItemStateChangeEventPayload'
required:
- event
- eventType
ServiceOrderItemStateChangeEventPayload:
description: The identifier of the ServiceOrderItem being subject of this event.
type: object
properties:
id:
description: ID of the ServiceOrder
type: string
orderItemId:
description: >-
ID of the Service Order Item (within the Service Order) which state
change triggered the event. Mandatory for
`serviceOrderItemStateChangeEvent`
type: string
href:
description: Hyperlink to access the ServiceOrder
type: string
state:
description: The state of the Service Order
$ref: "#/components/schemas/ServiceOrderItemStateType"
required:
- id
- orderItemId
- state
ServiceOrderStateChangeEvent:
allOf:
- $ref: '#/components/schemas/Event'
- type: object
properties:
eventType:
description: |
Indicates the type of the event.
type: string
enum:
- serviceOrderStateChangeEvent
event:
description: |
A reference to the object that is source of the notification.
$ref: '#/components/schemas/ServiceOrderStateChangeEventPayload'
required:
- event
- eventType
ServiceOrderStateChangeEventPayload:
description: The identifier of the ServiceOrder being subject of this event.
type: object
properties:
id:
description: ID of the ServiceOrder
type: string
href:
description: Hyperlink to access the ServiceOrder
type: string
state:
description: The state of the Service Order
$ref: "#/components/schemas/ServiceOrderStateType"
required:
- id
- state
ServiceOrderInformationRequiredEvent:
allOf:
- $ref: '#/components/schemas/Event'
- type: object
properties:
eventType:
description: |
Indicates the type of the event.
type: string
enum:
- serviceOrderInformationRequiredEvent
event:
description: |
A reference to the object that is source of the notification.
$ref: '#/components/schemas/ServiceOrderEventPayload'
required:
- event
- eventType
ServiceOrderItemStateType:
description: |
Possible values for the state of a Service Order
| State | Description |
| ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| acknowledged | A `ServiceOrder` request has been received and has passed message and basic validations and a _Success Response_ has been sent. |
| rejected | This state indicates that:
- Invalid information is provided through the `ServiceOrderItem` request
- The request fails to meet validation rules for `Service` delivery (processing)
If one `ServiceOrderItem` is rejected, then the entire `ServiceOrder` request is rejected and a _Error Response_ is sent. |
| inProgress | This state indicates that `ServiceOrderItem` have successfully passed the validations checks and the scheduled `Service` delivery/processing has started. |
| pending | This state indicates that a `ServiceOrderItem` is currently in a waiting stage for an action/activity to be completed before the order-processing can progress further (this may happen also via non-API channel).
A _`pending`_ state can lead into automatic `failed` of an `ServiceOrderItem`, if no action is taken within the agreed timeframe.
The `ServiceOrder` will be in _`pending`_ state if _at least one_ `ServiceOrderItem` is in _`pending`_ state |
| held | This state indicates that a `ServiceOrderItem` cannot be progressed due to an issue. The `Service` delivery (processing) has been temporarily delayed to resolve an infrastructure shortfall to facilitate supply of order. Upon resolution of the issue, the `ServiceOrderItem` will continue to progress.
A _`held`_ state can lead into automatic `failed` of an `ServiceOrderItem`, if no action is taken within the agreed timeframe.
The `ServiceOrder` will be in _`held`_ state if at least one `ServiceOrderItem` is in _`held`_ state |
| failed | This state indicates that `Service` delivery (processing) associated with a `ServiceOrderItem` has failed. This indicates an irrecoverable error as opposed to _`held`_ or _`pending`_ issues.
The `ServiceOrder` will be in _`failed`_ state if at _ALL_ `ServiceOrderItems` are in _`failed`_ state |
| completed | This state indicates that `Service` delivery (processing) associated with a `ServiceOrderItem` has completed.
The `ServiceOrder` will be in _`completed`_ state if at _ALL_ `ServiceOrderItems` are in _`completed`_ state |
enum:
- acknowledged
- rejected
- pending
- held
- inProgress
- completed
- failed
ServiceOrderStateType:
description: |
Possible values for the state of a Service Order
| State | Description |
| ------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| acknowledged | A `ServiceOrder` request has been received and has passed message and basic validations and a _Success Response_ has been sent. |
| rejected | This state indicates that:
- Invalid information is provided through the `ServiceOrder` / `ServiceOrderItem` request
- The request fails to meet validation rules for `Service` delivery (processing)
If one `ServiceOrderItem` is rejected, then the entire `ServiceOrder` request is rejected and a _Error Response_ is sent. |
| inProgress | This state indicates that all `ServiceOrderItems` have successfully passed the validations checks and the scheduled `Service` delivery/processing has started.
The `ServiceOrder` will be in _`inProgress`_ state if _at least one_ `ServiceOrderItem` is in _`inProgress`_ state |
| pending | This state indicates that a `ServiceOrderItem` is currently in a waiting stage for an action/activity to be completed before the order-processing can progress further, pending order amend or cancel assessment.
A _`pending`_ state can lead into auto cancellation of an `ServiceOrderItem`, if no action is taken within the agreed timeframe.
The `ServiceOrder` will be in _`pending`_ state if _at least one_ `ServiceOrderItem` is in _`pending`_ state |
| held | This state indicates that a `ServiceOrderItem` cannot be progressed due to an issue. The `Service` delivery (processing) has been temporarily delayed to resolve an infrastructure shortfall to facilitate supply of order. Upon resolution of the issue, the `ServiceOrderItem` will continue to progress.
A _`held`_ state can lead into auto cancellation of an `ServiceOrderItem`, if no action is taken within the agreed timeframe.
The `ServiceOrder` will be in _`held`_ state if at least one `ServiceOrderItem` is in _`held`_ state |
| failed | This state indicates that `Service` delivery (processing) associated with a `ServiceOrderItem` has failed. This indicates an irrecoverable error as opposed to _`held`_ or _`pending`_ issues.
The `ServiceOrder` will be in _`failed`_ state if at _ALL_ `ServiceOrderItems` are in _`failed`_ state |
| completed | This state indicates that `Service` delivery (processing) associated with a `ServiceOrderItem` has completed.
The `ServiceOrder` will be in _`completed`_ state if at _ALL_ `ServiceOrderItems` are in _`completed`_ state |
| partial | This state indicates that some `ServiceOrderItem` are in _`completed`_ state while others are in _`cancelled`_ and/or _`failed`_ states, so the entire `ServiceOrder` is in a _`partial`_ state. |
enum:
- acknowledged
- rejected
- pending
- held
- inProgress
- completed
- failed
- partial