MEF WorkOrder Management (Mef Lso Sonata Workorder Management)
MEF WorkOrder Management from MEF — 4 path(s) described in OpenAPI.
MEF WorkOrder Management from MEF — 4 path(s) described in OpenAPI.
openapi: 3.0.1
info:
title: WorkOrder Management
description: |
**This file forms part of Mplify 137.1**
**This API implements Business Requirements described in MEF 113.**
It allows the Buyer to create, retrieve, and update WorkOrders as well
as receive notifications about Incidents and WorkOrders updates.
This allows managing issues and situations that are not part of normal
operations of the Product provided by the Seller.
List of supported use cases:
- Retrieve WorkOrder by WorkOrder Identifier
- Register for Workorder Notifications
Copyright 2025 Mplify Alliance and its contributors
This file includes content based on the TM Forum Work Order API (TMF697
v4.0.0) available at https://github.com/tmforum-apis/TMF697_Work_Order,
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.0
servers:
- url: 'https://{serverBase}/mefApi/sonata/workOrderManagement/v3/'
variables:
serverBase:
description: The base of Seller's URL.
default: mplify.net
tags:
- name: workorder
paths:
'/workorder/{id}':
get:
tags:
- workorder
summary: Retrieves a WorkOrder by ID
description: >-
The Buyer requests detailed information about a single WorkOrder based
on a WorkOrder Identifier.
operationId: retrieveWorkOrder
parameters:
- name: id
in: path
description:
Unique (within the Seller domain) identifier for the WorkOrder.
required: true
schema:
type: string
- name: buyerId
in: query
description: >-
The unique identifier of the organization that is acting as the a
Buyer. MUST be specified in the request only 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 only when responding entity
represents more than one Seller.
required: false
schema:
type: string
responses:
'200':
description: 'OK. (https://tools.ietf.org/html/rfc7231#section-6.3.1)'
content:
application/json;charset=utf-8:
schema:
$ref: '#/components/schemas/WorkOrder'
'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'
'404':
description: Not Found
content:
application/json;charset=utf-8:
schema:
$ref: '#/components/schemas/Error404'
'500':
description: Internal Server Error
content:
application/json;charset=utf-8:
schema:
$ref: '#/components/schemas/Error500'
/workorder:
get:
tags:
- workorder
summary: Retrieves a WorkOrder by ID
description: >-
The Buyer requests detailed information about a single WorkOrder based
on a WorkOrder Identifier.
operationId: listWorkOrder
parameters:
- name: geographicalSiteId
in: query
description: A site identifier that is associated to the Appointment.
required: false
schema:
type: string
- name: geographicalAddressId
in: query
description:
A address identifier that is associated to the Appointment.
required: false
schema:
type: string
- name: relatedEntityType
in: query
description: The type of Related Entity (e.g. Trouble Ticket).
required: false
schema:
type: string
- name: relatedEntityId
in: query
description: Identifier of the Related Entity.
required: false
schema:
type: string
- name: state
in: query
description: The state of the WorkOrder.
required: false
schema:
type: string
enum:
- cancelled
- completed
- inProgress
- open
- planned
- unableToComplete
- name: appointmentRequired
in: query
description: >-
Indicates that the Buyer must schedule an Appointment to fulfill the
WorkOder.
required: false
schema:
type: boolean
- name: buyerId
in: query
description: >-
The unique identifier of the organization that is acting as the a
Buyer. MUST be specified in the request only 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 only when responding entity
represents more than one Seller.
required: false
schema:
type: string
- name: offset
in: query
description: >-
Requested index for the start of resources to be provided in
response
required: false
schema:
type: integer
- name: limit
in: query
description: Requested number of resources to be provided in response
required: false
schema:
type: integer
format: int32
responses:
'200':
description: 'OK. (https://tools.ietf.org/html/rfc7231#section-6.3.1)'
content:
application/json;charset=utf-8:
schema:
$ref: '#/components/schemas/WorkOrder_Find'
'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'
'404':
description: Not Found
content:
application/json;charset=utf-8:
schema:
$ref: '#/components/schemas/Error404'
'422':
description:
Unprocessable entity due to the business validation problems
content:
application/json;charset=utf-8:
schema:
type: array
items:
$ref: '#/components/schemas/Error422'
'500':
description: Internal Server Error
content:
application/json;charset=utf-8:
schema:
$ref: '#/components/schemas/Error500'
/hub:
post:
tags:
- events subscription
summary:
Allows the Buyer to register to WorkOrder state change notifications
description: The Buyer requests to subscribe to WorkOrder Notifications.
operationId: registerListener
parameters:
- name: buyerId
in: query
description: >-
The unique identifier of the organization that is acting as the a
Buyer. MUST be specified in the request only 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 only when responding entity
represents more than one Seller.
required: false
schema:
type: string
requestBody:
description:
Data containing the callback endpoint to deliver the information
content:
application/json;charset=utf-8:
schema:
$ref: '#/components/schemas/EventSubscriptionInput'
required: true
responses:
'201':
description:
'Subscribed (https://tools.ietf.org/html/rfc7231#section-6.3.2)'
content:
application/json;charset=utf-8:
schema:
$ref: '#/components/schemas/EventSubscription'
'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'
'422':
description:
Unprocessable entity due to the business validation problems
content:
application/json;charset=utf-8:
schema:
type: array
items:
$ref: '#/components/schemas/Error422'
'500':
description: Internal Server Error
content:
application/json;charset=utf-8:
schema:
$ref: '#/components/schemas/Error500'
'/hub/{id}':
get:
tags:
- events subscription
summary: Retrieves a Hub by ID
description: This operation retrieves a hub entity.
operationId: retrieveHub
parameters:
- name: id
in: path
description: Identifier of the Hub
required: true
schema:
type: string
- name: buyerId
in: query
description: >-
The unique identifier of the organization that is acting as the a
Buyer. MUST be specified in the request only 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 only when responding
entity represents more than one Seller.
required: false
schema:
type: string
responses:
'200':
description: Success
content:
application/json;charset=utf-8:
schema:
$ref: '#/components/schemas/EventSubscription'
'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'
'404':
description: Not Found
content:
application/json;charset=utf-8:
schema:
$ref: '#/components/schemas/Error404'
'500':
description: Internal Server Error
content:
application/json;charset=utf-8:
schema:
$ref: '#/components/schemas/Error500'
delete:
tags:
- events subscription
summary: Unregister a listener
description:
The Buyer requests to unsubscribe from WorkOrder Notifications
operationId: unregisterListener
parameters:
- name: id
in: path
description: The id of the EventSubscription
required: true
schema:
type: string
- name: buyerId
in: query
description: >-
The unique identifier of the organization that is acting as the a
Buyer. MUST be specified in the request only 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 only when responding entity
represents more than one Seller.
required: false
schema:
type: string
responses:
'204':
description:
'Deleted (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'
'404':
description: Not Found
content:
application/json;charset=utf-8:
schema:
$ref: '#/components/schemas/Error404'
'500':
description: Internal Server Error
content:
application/json;charset=utf-8:
schema:
$ref: '#/components/schemas/Error500'
components:
schemas:
AppointmentRef:
description: >
A reference to an Appointment resource available through Appointment
API.
type: object
properties:
href:
description: >
Hyperlink to the referenced Appointment. Hyperlink MAY be used by
the Seller in responses. Hyperlink MUST be ignored by the Seller in
case it is provided by the Buyer in a request
type: string
id:
description: Identifier of the referenced Appointment.
type: string
required:
- id
ContactInformation:
description: >-
Contact data for a person or organization that is involved in the
product offering qualification. In a given context it is always
specified by the Seller (e.g. Seller Contact Information) or by the
Buyer.
type: object
properties:
number:
description: Phone number
type: string
emailAddress:
description: Email address
type: string
postalAddress:
description: >-
Identifies the postal address of the person or office to be
contacted.
$ref: '#/components/schemas/FieldedAddressRepresentation'
organization:
description: The organization or company that the contact belongs to
type: string
name:
description: Name of the contact
type: string
numberExtension:
description: Phone number extension
type: string
required:
- emailAddress
- name
- number
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
Error404:
description: >-
Resource for the requested path not found.
(https://tools.ietf.org/html/rfc7231#section-6.5.4)
allOf:
- $ref: '#/components/schemas/Error'
- type: object
properties:
code:
description: >-
The following error code:
- notFound: A current representation for the target resource not
found
type: string
enum:
- notFound
required:
- code
Error422:
description: >-
Unprocessable entity due to a business validation problem.
(https://tools.ietf.org/html/rfc4918#section-11.2)
allOf:
- $ref: '#/components/schemas/Error'
- type: object
properties:
code:
description: |
One of the following error codes:
- missingProperty: The property the Seller has expected is not present in the payload
- invalidValue: The property has an incorrect value
- invalidFormat: The property value does not comply with the expected value format
- referenceNotFound: The object referenced by the property cannot be identified in the Seller system
- unexpectedProperty: Additional property, not expected by the Seller has been provided
- tooManyRecords: the number of records to be provided in the response exceeds the Seller's threshold.
- otherIssue: Other problem was identified (detailed information provided in a reason)
$ref: '#/components/schemas/Error422Code'
propertyPath:
description: >
A pointer to a particular property of the payload that caused
the validation issue. It is highly recommended that this
property should be used.
Defined using JavaScript Object Notation (JSON) Pointer
(https://tools.ietf.org/html/rfc6901).
type: string
required:
- code
Error422Code:
description: |
One of the following error codes:
- missingProperty: The property the Seller has expected is not present in the payload
- invalidValue: The property has an incorrect value
- invalidFormat: The property value does not comply with the expected value format
- referenceNotFound: The object referenced by the property cannot be identified in the Seller system
- unexpectedProperty: Additional property, not expected by the Seller has been provided
- tooManyRecords: the number of records to be provided in the response exceeds the Seller's threshold.
- otherIssue: Other problem was identified (detailed information provided in a reason)
type: string
enum:
- missingProperty
- invalidValue
- invalidFormat
- referenceNotFound
- unexpectedProperty
- tooManyRecords
- otherIssue
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
EventSubscription:
description: >-
Sets the communication endpoint address the service instance must use to
deliver notification information
type: object
properties:
callback:
description: >-
The value provided by the Buyer in `EventSubscriptionInput` during
notification registration
type: string
id:
description: >-
An identifier of the event subscription assigned by the Seller when
a resource is created.
type: string
query:
description: >-
This attribute is used to define notification registration
constraints.
type: string
required:
- callback
- id
EventSubscriptionInput:
description: This class is used to register for Notifications.
type: object
properties:
callback:
description: >-
This callback value must be set to *host* property from Buyer
Notification API (WorkOrderNotification.api.yaml). This property is
appended with the base path and notification resource path specified
in that API to construct an URL to which notification is sent. E.g.
for "callback": "http://buyer.mef.com/listenerEndpoint", the state
change event notification will be sent to:
`http://buyer.mef.com/listenerEndpoint/mefApi/sonata/workOrderNotification/v3/listener/workOrderStateChangeEvent`
type: string
query:
description: >-
This attribute is used to define to which type of events to register
to. Example: "query":"eventType = WorkOrderStateChangeEvent". To
subscribe for more than one event type, put the values separated by
comma: `eventType=WorkOrderStateChangeEvent,WorkOrderResolvedEvent`.
The possible values are enumerated by the 'WorkOrderEventType' in
WorkOrderNotification.api.yaml. An empty query is treated as
specifying no filters - ending in subscription for all event types.
type: string
required:
- callback
FieldedAddressRepresentation:
description: >-
A type of Address that has a discrete field and value for each type of
boundary or identifier down to the lowest level of detail. For example
"street number" is one field, "street name" is another field, etc.
type: object
properties:
streetNr:
description: >-
Number identifying a specific property on a public street. It may be
combined with streetNrLast for ranged addresses.
type: string
streetNrSuffix:
description: >-
The first street number suffix (in a street number range) or the
suffix for the street number if there is no range
type: string
streetNrLast:
description:
Last number in a range of street numbers allocated to an Address
type: string
streetNrLastSuffix:
description: Last street number suffix for a ranged Address
type: string
streetPreDirection:
description:
The direction of the street that appears before the Street Name
type: string
streetName:
description: Name of the street or other street type
type: string
streetType:
description: >-
The type of street (e.g., alley, avenue, boulevard, brae, crescent,
drive, highway, lane, terrace, parade, place, tarn, way, wharf)
type: string
streetPostDirection:
description: >-
A modifier denoting a relative direction that appears after the
Street Name.
type: string
poBox:
description: Number identifying a specific location in a post office.
type: string
locality:
description: >-
An area of defined or undefined boundaries within a local authority
or other legislatively defined area.
type: string
city:
description: City in which the Address is located.
type: string
postcode:
description: >-
A descriptor for a postal delivery area used to speed and simplify
the delivery of mail (also known as zip code)
type: string
postcodeExtension:
description: >-
The extension used on a postal code. Note: there are different use
codes for this attribute depending upon the country.
type: string
stateOrProvince:
description: The State or Province in which the Address is located.
type: string
countryCode:
description: >-
Country in which the Address is located, defined using two
characters as defined in ISO 3166
type: string
minLength: 2
maxLength: 2
subUnit:
description: >-
The Sub Unit represented as a list. This is a list to allow complex
sub-unit information such as SUITE 42 ROOM A
type: array
items:
$ref: '#/components/schemas/SubUnit'
buildingName:
description: >
The well-known name of a building that is located at this Address
(e.g., where there is one Address for a campus).
type: string
privateStreetNumber:
description: Street number on a private street within the Address.
type: string
privateStreetName:
description: >-
Private streets internal to a property (e.g., a university) may have
internal names that are not recorded by the land title office.
type: string
language:
description: >-
The language in which the address is expressed. It MUST use the ISO
639:2023 two letter code 639:2023
type: string
minLength: 2
maxLength: 2
FormattedAddressRepresentation:
description:
'A freeform text representation agreed to by the Buyer and Seller. '
type: object
properties:
formattedAddress:
description: >-
A formatted Address Representation that contains a non-fielded
address.
type: string
language:
description: >-
The language in which the address is expressed. Based on ISO
639:2023
type: string
minLength: 2
maxLength: 2
required:
- formattedAddress
GeographicAddressRef:
description: >
A reference to a Geographic Address resource available through Address
Validation API.
type: object
properties:
href:
description: >
Hyperlink to the referenced Address. Hyperlink MAY be used by the
Seller in responses. Hyperlink MUST be ignored by the Seller in case
it is provided by the Buyer in a request.
type: string
id:
description: >-
Identifier of the referenced Geographic Address. This identifier is
assigned during a successful address validation request (Geographic
Address Management API)
type: string
'@type':
description:
Used to unambiguously designate the class type when using `oneOf`
type: string
enum:
- GeographicAddressRef
required:
- '@type'
- id
GeographicAddress_Query:
description: >-
A list of representations being a subset of Geographic Address entity.
This is to be used when providing a list of representations to validate
or search for a Geographic Address
type: object
properties:
fieldedAddressRepresentation:
description: A list of Fielded Address representations
type: array
items:
$ref: '#/components/schemas/FieldedAddressRepresentation'
formattedAddressRepresentation:
description: A list of Formatted Ad
# --- truncated at 32 KB (49 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/mef/refs/heads/main/openapi/mef-lso-sonata-workorder-management-openapi.yml