Service Quality Management API RESTSpec v20161022
Service Quality Management API RESTSpec v20161022
NOTICE
Copyright © TeleManagement Forum 2013. All Rights Reserved.
This document and translations of it may be copied and furnished to others, and derivative works that
comment on or otherwise explain it or assist in its implementation may be prepared, copied, published,
and distributed, in whole or in part, without restriction of any kind, provided that the above copyright
notice and this section are included on all such copies and derivative works. However, this document
itself may not be modified in any way, including by removing the copyright notice or references to TM
FORUM, except as needed for the purpose of developing any document or deliverable produced by a
TM FORUM Collaboration Project Team (in which case the rules applicable to copyrights, as set forth
in the TM FORUM IPR Policy, must be followed) or as required to translate it into languages other
than English.
The limited permissions granted above are perpetual and will not be revoked by TM FORUM or its
successors or assigns.
This document and the information contained herein is provided on an "AS IS" basis and TM FORUM
DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT
INFRINGE ANY OWNERSHIP RIGHTS OR ANY IMPLIED WARRANTIES OF
MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
TABLE OF CONTENTS
NOTICE ............................................................................................................................................................................ 2
Introduction ....................................................................................................................................................................... 6
LIST OF TABLES
INTRODUCTION
The following document is the Service Quality Management REST API Specification.
As the Digital Economy emerges, the Digital Service Providers, Consumers and Developers are striving to take
advantage of Open Digital Eco-system to create, manage and support new Digital Services.
In this context, the ability to deliver consistent digital services experience across the Eco-system between
different enterprises is considered table-stakes. This focus on digital service delivery and quality has positioned
Service Quality Management at the center of Digital Operations.
Gathering data from multiple and heterogeneous data sources across the eco-system, combining them into
meaningful service quality metrics is the core activity of a Service Quality Management application to assess the
quality as perceived by the consumer.
Once the measurements are available, they must be watched against contracted service level to ensure consistent
delivery as committed to in Service Level Agreements (SLA). The Service Quality Management API defines a
standard interface designed to simplify the integration task of an SQM application with different partners and
respective Digital Operations Centers. This API follows the RESTful design principles.
Through this API, any Enterprise is able to access a Service Quality Management application and extract Service
Level Specifications and associated Service Level Objectives (SLO) and their thresholds. They are able to
monitor violation of these thresholds and generate trending reports over a period of time and send threshold
crossing alarms so that when service quality degrades and a contracted Service Level Agreement (or one of its
constituents) is at risk, appropriate actions can be performed.
The Client has not received the Alarm data for the specified period
Post-Conditions In case of success:
The Client has received the same Alarms information as generated within
the Service Quality Management Application
In case of failure:
The Client is not aware of the Alarm generated within the Service Quality
Management application and the data on Client is inconsistent
Exceptions 1) In case of regular maintenance or system upgrades there may be
planned outages that are part of agreed breach of SLOs and
generated Alarms should be ignored. There should be exception
raised with the Client and suggest the alarms generated should
have a tag suggesting ‘Ignored due to Routine Maintenance’
2) In case the mandatory details are invalid then an ‘Invalid input’
exception shall be raised along with the details of validation
failure and thus the operation is not fulfilled
3) In case the authentication of the Requesting Client is not
validated by the Service Quality Management application then
an ‘Access Denied’ exception shall be raised and the operation is
not fulfilled
4) If the SQM Application is unable to accomplish the operation,
due to a lack of internal resources then an ‘Unable To Execute’
exception shall be raised and the operation is not fulfilled.
5) If the SQM Application is unable to accomplish the operation,
due to any other internal error, then an ‘Internal Error’ exception
shall be raised and the operation is not fulfilled.
Traceability R_TMF_ServiceQualityManagement_I_0001
RESOURCE MODEL
Managed Entity and Task Resource Models
There are two resources managed by the API as listed below and JSON representation of the managed
entities and tasks is mentioned following that.
• Service Level Objectives
• Service Level Specifications
The representation is based on the SID and API data model perspective.
+ herf: String
+ id: String
+ name: String
1..* ConformancePeriod
Serv iecLev elObj ectiv e
+ endDateTime: DateTime
1 + conformanceComparator: String + startDateTime: DateTime
+ conformanceTarget: String
Serv iceLev elSpecParameter 0..1
+ graceTimes: int 1
+ href: String
+ name: String
+ id: String
+ serviceParmCategory: String
+ serviceParmPerspective: String 1 1 + name: String
+ thresholdTarget: String
+ transformationAlgorithmOfKQI: String 1
+ toleranceTarget: String 0..1 TolerancePeriod
+ type: String
1 1 + endDateTime: DateTime
1 + startDateTime: DateTime
0..1
0..1
0..*
ValidFor
Serv iceLev elSpecConsquence
+ endDateTime: DateTime
+ startDateTime: DateTime + prescribedAction: String
0..1 1
ServiceLevelSpecConsquence fields
Some consequences for the provider of the Service are resulted when the service level objective does not meet.
prescribedAction A String. Recommended remedy for a violated Service Level Objective.
This could be a hyperlink to the recommended action.
validFor The period of time during which the objective is applicable.
ServiceLevelSpecParameter fields
Service Level Specification parameters can be one of two types. A Key Quality Indicator (KQI) provides a
measurement of a specific aspect of the performance of a Product (i.e., Product Specification, Product Offering, or
Product) or a Service (i.e., Service Specification or Service).
name A string. The name of parameter.
serviceParmCategory A String. A string that specifies whether the Service Level Specification
Parameter is technology specific, service specific, or technology/service
independent
serviceParmPerspectiv A String. A string that specifies whether the Service Level Specification
e Parameter represents a single user instance parameter or a parameter that
represents an aggregation.
transformationAlgorit A String. The description of a logical step-by-step procedure used to
hmOfKQI calculate the value of a KQI.
type A String. Types of Service Level Specification parameters are KQI or
KPI
validFor The period of time during which the objective is applicable.
relatedEntityRef The related entity source of a KQI or KPI. A KQI draws its data from a
number of sources, including Key Performance Indicators (KPIs). A KPI
provides a measurement of a specific aspect of the performance of a
Service (whether it is a network- or a non-network-based Service) or a
group of Services of the same type.
ServiecLevelObjective fields
Service level objectives are defined in terms of parameters and metrics, thresholds, and tolerances associated with the
parameters.
conformanceComparat A String. An operator that specifies whether a Service Level Objective is
or violated above or below the conformanceTarget.
conformanceTarget A String. A value used to determine if Service Level Objective is met.
The data type should be adjusted case by case.
graceTimes An int. The number of times an objective can remain un-updated without
a violation of a Service Level Agreement in reference to a measurement
period and/or Service Level Agreement reporting period.
href A String. The hyperlink to access a service level objective.
id A String. The identifier of a service level objectives.
name A String. The name of the service level objectives.
thresholdTarget A String. A value that used to specify when a warning should be used
that indicates an objective is danger of not being met. Notice, the data
type should be adjusted case by case.
toleranceTarget A String. A value that specifies the allowable variation of a conformance
Target. The data type should be adjusted case by case.
conformancePeriod An interval of time during which the Conformance Target must be
measured.
validFor The period of time during which the objective is applicable.
serviceLevelSpecCons Some consequences for the provider of the Service are resulted when the
<Document #, Version 0.2> © TM Forum 2013. All Rights Reserved. Page 12
SQM API REST SPECIFCATION
},
},
"serviceLevelSpecConsquence": [
{
"prescribedAction": "A hyperlink to an action",
"validFor": {
"endDateTime": "2018-03-00T00:00:00",
"startDateTime": "2016-03-00T00:00:00"
}
},
{
"prescribedAction": "A hyperlink to another action",
"validFor": {
"endDateTime": "2018-03-00T00:00:00",
"startDateTime": "2016-03-00T00:00:00"
}
},
]
}
1..*
+ href: String
+ id: String
ValidFor fields
A time period.
endDateTime A DateTime. The end date and time.
startDateTime A DateTime. The start date and time.
{
"href": "https://host:port/SQM/serviceLevelSpecification/1112",
"id": "1112",
"description": "This is a service level specification of comunction",
"name": "SpeedRequirement",
"validFor": {
"endDateTime": "2016-05-00T00:00:00",
"startDateTime": "2016-03-00T00:00:00"
},
"relatedServiceLevelObjectiveRef ": [
{
"href": "https://host:port/SQM/serviceLevelObjective/3112",
"id": "3112",
},
{
"href": "https://host:port/SQM/serviceLevelObjective/3113",
"id": "3113",
}
]
}
API OPERATION
Remember the following Uniform Contract:
Other Request Methods POST on TASK GET and POST must not
Resource be used to tunnel other
request methods.
Filtering and attribute selection rules are described in the TMF REST Design Guidelines.
GET /serviceLevelObjective?fields=...&{filtering}
Description
Usage Samples
Request
Response
200
[
{
"href": "https://host:port/SQM/serviceLevelObjective/3112",
"id": "3112",
},
{
"href": "https://host:port/SQM/serviceLevelObjective/3112",
"id": "3113",
}
]
Usage Samples
Request
<Document #, Version 0.2> © TM Forum 2013. All Rights Reserved. Page 21
SQM API REST SPECIFCATION
Accept: application/json
Response
200
{
"conformancePeriod": {
"endDateTime": "2017-03-00T00:00:00",
"startDateTime": "2016-03-00T00:00:00"
},
"graceTimes": 3,
"serviceLevelSpecParameter": {
"name": "speed",
"serviceParmCategory": "technology specific",
"serviceParmPerspective": " single user instance parameter",
"transformationAlgorithmOfKQI": "KeepTheSame",
"type": "KPI",
"validFor":{
"endDateTime": "2018-03-00T00:00:00",
"startDateTime": "2016-03-00T00:00:00"
}
}
Description
The following tables provides the list of mandatory and non mandatory attributes when creating a
ServiceLevelObjective, including any possible rule conditions and applicable default values.
Additional Rules
The following table provides additional rules indicating mandatory fields in sub-resources or relationships when
creating a Service violation alarm resource.
<Document #, Version 0.2> © TM Forum 2013. All Rights Reserved. Page 22
SQM API REST SPECIFCATION
Usage Samples
Here's an example of a request for creating a ServiceLevelObjective resource. In this example the request only passes
mandatory attributes.
Request
POST /SQM/serviceLevelObjective
Content-Type: application/json
{
"conformanceTarget" : "5"
"conformanceComparator": "above"
"serviceLevelSpecParameter": {
"name": "speed",
"serviceParmCategory": "technology specific",
"serviceParmPerspective": " single user instance parameter",
"transformationAlgorithmOfKQI": "KeepTheSame",
"type": "KPI",
"relatedPartyRef": {
"id": "1988",
"href": "https://host:port/ServiceInventory/service/1988",
"name": "A service"
},
}
}
Response
201
{
"href": "https://host:port/SQM/serviceLevelObjective/3332",
"id": "3332",
"conformanceTarget" : "5"
"conformanceComparator": "above"
"serviceLevelSpecParameter": {
"name": "speed",
"serviceParmCategory": "technology specific",
"serviceParmPerspective": " single user instance parameter",
"transformationAlgorithmOfKQI": "KeepTheSame",
"type": "KPI",
"relatedPartyRef": {
"id": "1988",
"href": "https://host:port/ServiceInventory/service/1988",
Description
This operation allows partial updates of a service level objective entity. Support of json/merge
(https://tools.ietf.org/html/rfc7386) is mandatory, support of json/patch (http://tools.ietf.org/html/rfc5789) is optional.
Note: If the update operation yields to the creation of sub-resources, the same rules concerning mandatory sub-resource
attributes and default value settings in the POST operation applies to the PATCH operation. Hence these tables are not
repeated here.
The tables below provide the list of patchable and non patchable attributes, including constraint rules on their usage.
Usage Samples
Request
{
" conformanceTarget": "6"
<Document #, Version 0.2> © TM Forum 2013. All Rights Reserved. Page 24
SQM API REST SPECIFCATION
Response
201
{
"href": "https://host:port/SQM/serviceLevelObjective/3332",
"id": "3332",
"conformanceTarget" : "6"
"conformanceComparator": "above"
"serviceLevelSpecParameter": {
"name": "speed",
"serviceParmCategory": "technology specific",
"serviceParmPerspective": " single user instance parameter",
"transformationAlgorithmOfKQI": "KeepTheSame",
"type": "KPI",
"relatedPartyRef": {
"id": "1988",
"href": "https://host:port/ServiceInventory/service/1988",
"name": "A service"
},
}
Description
Usage Samples
Request
Response
204
Usage Samples
Request
GET /SQM/serviceLevelSpecification?fields=id,href,name,validFor
Accept: application/json
Response
200
[
{
"href": "https://host:port/SQM/serviceLevelSpecification/1112",
"id": "1112",
"name": "SpeedRequirement",
"validFor": {
"endDateTime": "2016-05-00T00:00:00",
"startDateTime": "2016-03-00T00:00:00"
},
{
"href": "https://host:port/SQM/serviceLevelSpecification/1116",
"id": "1116",
"name": "SpeedRequirement",
"validFor": {
"endDateTime": "2016-05-00T00:00:00",
"startDateTime": "2016-03-00T00:00:00"
}
}
]
Description
Usage Samples
Request
/SQM/serviceLevelSpecification/1112?fields=id,href,name,validFor
Accept: application/json
Response
200
{
"href": "https://host:port/SQM/serviceLevelSpecification/1112",
"id": "1112",
"name": "SpeedRequirement",
"validFor": {
"endDateTime": "2016-05-00T00:00:00",
"startDateTime": "2016-03-00T00:00:00"
}
Description
The following tables provides the list of mandatory and non-mandatory attributes when creating a
ServiceLevelSpecification, including any possible rule conditions and applicable default values.
Additional Rules
The following table provides additional rules indicating mandatory fields in sub-resources or relationships when
creating a service level specification resource.
Usage Samples
Here's an example of a request for creating a serviceLevelSpecification resource. In this example the request only passes
mandatory attributes.
Request
{
"name": "SpeedRequirement2",
"relatedServiceLevelObjectiveRef ": [
{
"href": "https://host:port/SQM/serviceLevelObjective/3118",
"id": "3118",
},
{
"href": "https://host:port/SQM/serviceLevelObjective/3117",
"id": "3117",
}
]
}
Response
201
{
"href": "https://host:port/SQM/serviceLevelSpecification/1116",
"id": "1116",
"name": "SpeedRequirement2",
"relatedServiceLevelObjectiveRef ": [
{
"href": "https://host:port/SQM/serviceLevelObjective/3118",
"id": "3118",
},
{
"href": "https://host:port/SQM/serviceLevelObjective/3117",
"id": "3117",
}
]
}
PATCH /serviceLevelSpecification/{id}
Description
This operation allows partial updates of a service level specification entity. Support of json/merge
(https://tools.ietf.org/html/rfc7386) is mandatory, support of json/patch (http://tools.ietf.org/html/rfc5789) is optional.
Note: If the update operation yields to the creation of sub-resources or relationships, the same rules concerning
mandatory sub-resource attributes and default value settings in the POST operation applies to the PATCH operation.
Hence these tables are not repeated here.
The tables below provide the list of patchable and non patchable attributes, including constraint rules on their usage.
Usage Samples
Request
PATCH /SQM/serviceLevelSpecification/1116
Content-Type: application/merge-patch+json
{
"name": "Changed",
}
Response
201
{
"href": "https://host:port/SQM/serviceLevelSpecification/1116",
"id": "1116",
"name": "Changed",
"relatedServiceLevelObjectiveRef ": [
{
"href": "https://host:port/SQM/serviceLevelObjective/3118",
"id": "3118",
},
{
"href": "https://host:port/SQM/serviceLevelObjective/3117",
"id": "3117",
}
]
}
Description
Usage Samples
Request
Response
204
API NOTIFICATIONS
For every single of operation on the entities use the following templates and provide sample REST
notification POST calls.
It is assumed that the Pub/Sub uses the Register and UnRegister mechanisms described in the REST
Guidelines reproduced below.
REGISTER LISTENER
POST /hub
Description
Sets the communication endpoint address the service instance must use to deliver information about its health state,
execution state, failures and metrics. Subsequent POST calls will be rejected by the service if it does not support
multiple listeners. In this case DELETE /api/hub/{id} must be called before an endpoint can be created again.
Behavior
Usage Samples
Request
POST /api/hub
Accept: application/json
{"callback": "http://in.listener.com"}
Response
201
Content-Type: application/json
Location: /api/hub/42
{"id":"42","callback":"http://in.listener.com","query":null}
UNREGISTER LISTENER
DELETE /hub/{id}
Description
Clears the communication endpoint address that was set by creating the Hub..
Behavior
Usage Samples
Request
DELETE /api/hub/42
Accept: application/json
Response
204
POST /client/listener
Description
Clears the communication endpoint address that was set by creating the Hub.
Provides to a registered listener the description of the event that was raised. The /client/listener url
is the callback url passed when registering the listener.
Behavior
Returns HTTP/1.1 status code 201 if the service is able to set the configuration.
Usage Samples
Here's an example of a notification received by the listener. In this example “EVENT TYPE” should be replaced by one
of the notification types supported by this API (see Notification resources Models section) and EVENT BODY refers to
the data structure of the given notification type.
Request
POST /client/listener
Accept: application/json
{
"event": {
EVENT BODY
<Document #, Version 0.2> © TM Forum 2013. All Rights Reserved. Page 32
SQM API REST SPECIFCATION
},
"eventType": "EVENT_TYPE"
}
Response
201
For detailed examples on the general TM Forum notification mechanism, see the TMF REST
Design Guidelines.
RELEASE HISTORY