Appointment API REST Specification

Similar documents
Resource Ordering Management API REST Specification

Service Qualification API REST Specification

TM Forum Specification. Party Interaction Management API REST Specification

Address API REST Specification

Product Inventory Management API REST Specification

REST API Design Guidelines Part 2

Usage Consumption API REST Specification

Geographic Site Management API REST Specification

Trouble Ticket API REST Specification

TM Forum Specification. Product Inventory Management API REST Specification

Geographic Address Management API REST Specification

Dynamic API Technical Recommendation

Test Assertions for the SCA Web Service Binding Version 1.1 Specification

SAML V2.0 Profile for Token Correlation

Product Ordering Management API REST Specification

TestCases for the SCA Assembly Model Version 1.1

Service Component Architecture Client and Implementation Model for C++ Test Cases Version 1.1

Using the AMQP Anonymous Terminus for Message Routing Version 1.0

Test Assertions for the SCA Assembly Model Version 1.1 Specification

ETSI GS MEC 014 V1.1.1 ( )

Open Cloud Computing Interface Service Level Agreements

SCA JMS Binding v1.1 TestCases Version 1.0

SCA-J POJO Component Implementation v1.1 TestCases Version 1.0

Test Assertions for the SCA_J Common Annotations and APIs Version 1.1 Specification

KMIP Opaque Managed Object Store Profile Version 1.0

ETSI GS MEC 016 V1.1.1 ( )

TestCases for the SCA POJO Component Implementation Specification Version 1.1

Level of Assurance Authentication Context Profiles for SAML 2.0

SAML V2.0 Profile for Mandator Credentials

KMIP Opaque Managed Object Store Profile Version 1.0

KMIP Storage Array with Self-Encrypting Drives Profile Version 1.0

TestCases for the SCA Web Service Binding Specification Version 1.1

TestCases for the SCA Web Service Binding Specification Version 1.1

XDI Requirements and Use Cases

OSLC Change Management Version 3.0. Part 2: Vocabulary

TM Forum Input to ONAP Modeling Workshop

Cloud Application Management for Platforms (CAMP) Test Assertions Version 1.1

Open Cloud Computing Interface Platform

KMIP Symmetric Key Lifecycle Profile Version 1.0

OASIS Specification Document Template Usage

SCA JMS Binding Specification v1.1 Test Assertions Version 1.0

Open Command and Control (OpenC2) Language Specification. Version 0.0.2

StorageGRID Webscale NAS Bridge Management API Guide

Test Assertions for the SCA Policy Framework 1.1 Specification

UBL NDR 2.0 Checklist

Network Working Group. Category: Standards Track <draft-aboba-radius-iana-03.txt> 30 March 2003 Updates: RFC IANA Considerations for RADIUS

Solar Eclipse Scheduler. Release 9.0

SAML V2.0 EAP GSS SSO Profile Version 1.0

Multi-Server Based Namespace Data Management of Resource Namespace Service

SMOA Computing HPC Basic Profile adoption Experience Report

TAXII Version Part 5: Default Query

Updates: 2710 September 2003 Category: Standards Track. Source Address Selection for the Multicast Listener Discovery (MLD) Protocol

IETF TRUST. Legal Provisions Relating to IETF Documents. Approved November 6, Effective Date: November 10, 2008

Chin Guok, ESnet. Network Service Interface Signaling and Path Finding

SOA-EERP Business Service Level Agreement Version 1.0

Network Working Group. November 1999

Deployment Profile Template Version 1.0 for WS-Reliability 1.1

Jabber, Inc. August 20, 2004

Use and Interpretation of HTTP Version Numbers

Configuration Description, Deployment and Lifecycle Management Working Group (CDDLM-WG) Final Report

Public Appointment API. Calendar A

SSC-WG4 Certification Process

Intended status: Informational. B. Wyman October 2, 2007

Oracle. Engagement Cloud Using Service Request Management. Release 12

DITA 1.2 Whitepaper: Tools and DITA-Awareness

Michel Drescher, FLE, Ltd. Standardised Namespaces for XML in GGF (draft 09) N/A

Request for Comments: 3934 Updates: 2418 October 2004 BCP: 94 Category: Best Current Practice

Request for Comments: 4633 Category: Experimental August 2006

PPS (Production Planning and Scheduling) Part 3: Profile Specifications, Version 1.0

Request for Comments: 2493 Category: Standards Track January 1999

IETF TRUST. Legal Provisions Relating to IETF Documents. February 12, Effective Date: February 15, 2009

Request for Comments: 2711 Category: Standards Track BBN October 1999

Network Working Group Request for Comments: Category: Best Current Practice January 2004

Lifecycle Manager Governance API

Request for Comments: 3405 BCP: 65 October 2002 Category: Best Current Practice

SWOP Specifications for Web Offset Publications Edition 10.0 Errata

Libelium Cloud Hive. Technical Guide

Request for Comments: 3905 Category: Informational September A Template for IETF Patent Disclosures and Licensing Declarations

ETSI TS V ( )

TestCases for the SCA_J Common Annotations and APIs Version 1.1 Specification

SCA v4.1 SAD and DCD Uniformity

Monarch Server. [Content Dynamic Login API Guide] Version /

SOA-EERP Business Service Level Agreement Version 1.0

IaaS API Reference (Management Administration)

OpenOffice Specification Sample

OASIS - Artifact naming guidelines

OIX DDP. Open-IX Document Development Process draft July 2017

Talent Acquisition Cloud Implementing Scheduling Center 19A

Position Paper: Facets for Content Components

Request for Comments: 3932 October 2004 BCP: 92 Updates: 3710, 2026 Category: Best Current Practice

Certification Test Plan SSRF Conformance for OpenSSRF Software v Document WINNF-14-S-0023

Avaya Communications Process Manager Release 2.2 Web Portal Help for Non-administrative Users

ebxml Business Process & Core Components

Oracle CRM Foundation

This document is a preview generated by EVS

Scopia Management. User Guide. Version 8.2. For Solution

Video Services Forum Rules of Procedure

Online Services - Appointments User Guide

Microsoft Dynamics GP. Extender User s Guide Release 9.0

Category: Standards Track October 2006

Transcription:

Frameworx Specification Appointment API REST Specification TMF646 Release 16.0.1 October 2016 Latest Update: Frameworx Release 16 Version 1.0.2 TM Forum Approved IPR Mode: RAND TM Forum 2016. All Rights Reserved.

NOTICE Copyright TM Forum 2016. 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. TM FORUM invites any TM FORUM Member or any other party that believes it has patent claims that would necessarily be infringed by implementations of this TM Forum Standards Final Deliverable, to notify the TM FORUM Team Administrator and provide an indication of its willingness to grant patent licenses to such patent claims in a manner consistent with the IPR Mode of the TM FORUM Collaboration Project Team that produced this deliverable. The TM FORUM invites any party to contact the TM FORUM Team Administrator if it is aware of a claim of ownership of any patent claims that would necessarily be infringed by implementations of this TM FORUM Standards Final Deliverable by a patent holder that is not willing to provide a license to such patent claims in a manner consistent with the IPR Mode of the TM FORUM Collaboration Project Team that produced this TM FORUM Standards Final Deliverable. TM FORUM may include such claims on its website, but disclaims any obligation to do so. TM FORUM takes no position regarding the validity or scope of any intellectual property or other rights that might be claimed to pertain to the implementation or use of the technology described in this TM FORUM Standards Final Deliverable or the extent to which any license under such rights might or might not be available; neither does it represent that it has made any effort to identify any such rights. Information on TM FORUM's procedures with respect to rights in any document or deliverable produced by a TM FORUM Collaboration Project Team can be found on the TM FORUM website. Copies of claims of rights made available for publication and any assurances of licenses to be made available, or the result of an attempt made to obtain a general license or permission for the use of such proprietary rights by implementers or users of this TM FORUM Standards Final Deliverable, can be obtained from the TM FORUM Team Administrator. TM FORUM makes no representation that any information or list of intellectual property rights will at any time be complete, or that any claims in such list are, in fact, Essential Claims. TM Forum 2016. All Rights Reserved. Page 2 of 36

Direct inquiries to the TM Forum office: 240 Headquarters Plaza, East Tower 10 th Floor, Morristown, NJ 07960 USA Tel No. +1 973 944 5100 Fax No. +1 973 944 5110 TM Forum Web Page: www.tmforum.org TM Forum 2016. All Rights Reserved. Page 3 of 36

TABLE OF CONTENTS NOTICE... 2 Table of Contents... 4 List of Tables... 6 Introduction... 7 SAMPLE USE CASES... 8 RESOURCE MODEL... 9 Managed Entity and Task Resource Models... 9 APPOINTMENT resource... 9 SEARCH TASK resource... 13 Notification Resource Models... 14 APPOINTMENT STATE CHANGE NOTIFICATION... 16 APPOINTMENT RESCHEDULE NOTIFICATION... 16 APPOINTMENT CATEGORY CHANGE NOTIFICATION... 17 APPOINTMENT CREATION NOTIFICATION... 17 APPOINTMENT ATTRIBUTE VALUE CHANGE NOTIFICATION... 18 API OPERATIONS... 19 Operations on APPOINTMENT... 20 Check free slots into a calendar (1)... 21 Create an appointment (2)... 23 Update or cancel an appointment (3) (4)... 26 Retrieve an appointment... 29 List appointments (5)... 30 Reschedule an appointment (6)... 31 API NOTIFICATIONS... 33 Register Listener... 33 POST /HUB... 33 TM Forum 2016. All Rights Reserved. Page 4 of 36

UNRegister Listener... 34 DELETE HUB/ID... 34 Publish event to listener... 34 POST /CLIENT/LISTENER... 34 Acknowledgments... 36 VERSION HISTORY... 36 Release History... 36 Contributors to Document... 36 TM Forum 2016. All Rights Reserved. Page 5 of 36

LIST OF TABLES N/A TM Forum 2016. All Rights Reserved. Page 6 of 36

INTRODUCTION The following document is the specification of the REST API for appointment management. It includes the model definition as well as all available operations. Possible actions are to check free slots and, then, creating, updating and retrieving appointment. The appointment API provides a standardized mechanism to book an appointment with all the necessary appointment characteristics. First, the API consists in searching free slots based on parameters, as for example a party. Then, the appointment is created. The appointment has characteristics such as nature of appointment, place of appointment Appointment API performs the following operations: Retrieve free slots depending on filter criteria Create an appointment Cancel an appointment Update an appointment Reschedule an appointment. TM Forum 2016. All Rights Reserved. Page 7 of 36

SAMPLE USE CASES The following table maps out the use cases : Use case Free slots are checked according to criteria A new appointment is created An existing appointment should be updated because its status has changed or party availabilities have changed An appointment or a collection of appointment should be retrieved An existing appointment is cancelled An existing appointment has to be rescheduled TM Forum 2016. All Rights Reserved. Page 8 of 36

RESOURCE MODEL Managed Entity and Task Resource Models APPOINTMENT RESOURCE Structured textual way of describing what is an appointment. An appointment is a meeting with several persons, in one place, in order to do an action (an intervention, a sale, ). This action has a root, for example a trouble ticket. Resource model RelatedObject involvement :String reference :String relatedobject 0..* AddressRef 0..* id :String href :String description :String RelatedPartyRef id :String href :String role :String name :String address 0..1 0..* relatedparty 0..* 0..* Appointment id :String href :String externalid :String category :String description :String state :String creationdate :DateTime lastupdate :DateTime startdate :DateTime enddate :DateTime alarm :Boolean alarmaction :String note 0..1 0..* attachment 0..* 0..* Note date :DateTime author :String text :String AttachmentRef description :String href :String Lifecycle The appointment lifecycle is tracked by mean of the state field. Typical lifecycle values are : initialized, validated, cancelled, attended and missed. The state machine specifying the typical state change transitions is provided below. TM Forum 2016. All Rights Reserved. Page 9 of 36

Created Initialised confirmed Cancelled Validated Postponed OK Take place? Completed KO Attended Missed State initialised validated cancelled attended missed Description When an appointment is created, the status is initialised When an appointment is confirmed by all parties, the status is validated When an appointment is not confirmed by at least one party, it is cancelled When an appointment took place and it is OK, the status is attended When an appointment took place and it is KO, the status is missed Json representation sample We provide below the json representation of an sample of an Appointment resource object : "id":"21", "href":"https://host:port/appointment/appointment/21", "externalid":"anexternalidifneeded432113", "category":"intervention", "description":"a useful text to describe the appointment", "state":"missed", "creationdate":"2015-09-01t14:40:43.071z", "lastupdate":"2015-09-01t14:40:43.071z", "startdate":"2015-09-01t14:00:43.071z", "enddate":"2015-09-01t16:00:43.071z", TM Forum 2016. All Rights Reserved. Page 10 of 36

"alarm": true, "alarmaction":"smstocustomer", "attachment":[ "description":"short description of the document attached to the appointment", "href":"http://server/path/document1.pdf" ], "relatedparty": [ "id":"32", "href":"https://host:port/partymanagement/individual/32", "role":"customer", "name":"john Doe" ], "address": "id":"7660828", "href" : "https://host:port/address/address/7660828", "description":"complete address of the appointment", "relatedobject":[ "involvement":"problemtosolve", "reference": "https://host:port/troubleticket/troubleticket/789745465" ], "note":[ "date":"2015-09-01t14:40:43.071z", "author":"arthur Ewans", "text":"already called the expert " ] Field descriptions Appointment resource Field id href externalid description category state creationdate lastupdate startdate enddate alarm Description A string. Unique identifier of the appointment A string. Unique URI used to access to the appointment resource A string. External reference known by the customer A string. Short free text describing the appointment A string. Business category : intervention for example or to be more precise aftersalesintervention, orderdeliveryintervention, A string. State corresponding to appointment lifecycle A date time. Appointment creation date A date time. Date of last appointment update A date time. Appointment beginning date A date time. Appointment end date A boolean. Indicates if there is a reminder TM Forum 2016. All Rights Reserved. Page 11 of 36

alarmaction relatedparty relatedobject attachment address note A string. Action to be invoked when an alarm is triggered for all participants (send mail, send sms, ) A list of related party references. Parties who participate to appointment. It can be a person (customer, ) or a team of persons (intervention team, ). There are at least two parties involved in an appointment A list of related object references. Other resources linked to the appointment. For example, it can be an ordertodeliver for an order or a problemtosolve for a trouble ticket A list of attachment references. URI related to attached documents to the appointment An address reference. Place of appointment A list of notes. Extra information about the appointment relatedparty sub-resource Field id href role name Description A string. Unique identifier of the party A string. Unique URI used to access to the party resource A string. Role played by the party (customer for example) A string. Name of the party relatedobject sub-resource Field involvement reference Description A string. Related object involved A string. An unique URI used to access to the corresponding resource of the related object attachment sub-resource Field href description Description A string. URI related to attached document to the appointment A string. A short description of the attached document Address sub-resource Field id href description Description A string. Unique identifier of the appointment address A string. Unique URI used to access to the address resource A string. Short text giving the complete address of the appointment Note sub-resource Field date author text Description A datetime. Date of the note A string. Author name A string. Free text TM Forum 2016. All Rights Reserved. Page 12 of 36

SEARCH TASK RESOURCE This task resource is used to look for free slots before booking an appointment (cf. operations). Resource model RelatedPartyRef id :String href :String relatedparty FreeSlot 0..1 0..* relatedparty 0..1 0..* SearchTask appointmentid :String marketsegment :String favoriteampm :String weeknumber :String startdate :DateTime enddate :DateTime category :String limit :String 1 0..* address 0..1 productspecification 0..1 AddressRef id :String href :String ProductSpecificationRef id :String startdate :Datetime enddate :Datetime Lifecycle No state machine for the resource search task. Json representation samples We provide below the json representation of a sample of search task input : "marketsegment":"b2c", "favoriteampm":"pm", "weeknumber":"38", "startdate":"2015-09-01t14:00:43.071z", "enddate":"2015-09-01t16:00:43.071z", "category":"intervention", "limit":"10", "productspecification": "id":"42", "address": "id": "7660828 ", "href": "https://host:port/address/address/7660828", "description": "Complete address of the appointment", "relatedparty": "id":"32", "href":"https://host:port/partymanagement/individual/32" TM Forum 2016. All Rights Reserved. Page 13 of 36

Field descriptions Field marketsegment favoriteampm weeknumber startdate enddate category limit productspecification address relatedparty Description A string. Market segment linked to the appointment A string. Favorite moment of the day for the party : am (for slot in the morning) or pm (for slot in the afternoon) A string. Week number where free slots are searched A datetime. Beginning date of the period for free slots search A datetime. End date of the period for free slots search A string. Appointment category A string. Limit number of free slots to be searched A product specification reference. Product concerned by the appointment An address reference. Appointment place - See appointment resource for fields description of this sub-resource A party reference. Party who is the owner of the calendar on which we want to plan an appointment (for example an intervention team) See appointment resource for fields description of this sub-resource We provide below the json representation of a sample of search task output (a list of free slots) : "freeslot":[ "startdate":"2015-09-01t14:00:43.071z", "enddate":"2015-09-01t16:00:43.071z", "relatedparty": "id":"32", "href":"https://host:port/partymanagement/individual/32" ] Field descriptions Field startdate enddate relatedparty Description A datetime. Beginning date of the free slot A datetime. End date of the free slot A reference to a party. Party available during this free slot (for example an intervention team) See appointment resource for fields description of this sub-resource Notification Resource Models Five notifications are defined for this API : appointmentstatechangenotification appointmentreschedulenotification appointmentcategorychangenotification appointmentcreationnotification appointmentattributevaluechangenotification TM Forum 2016. All Rights Reserved. Page 14 of 36

The notification structure for all notifications in this API follow the pattern depicted by the figure below. A notification resource (depicted by "SpecificNotification" placeholder) is a sub class of a generic Notification structure containing an id of the event occurence (eventid), an event timestamp (eventtime), and the name of the notification resource (eventtype). This notification structure owns an event structure ("SpecificEvent" placeholder) linked to the resource concerned by the notification using the resource name as access field ("resourcename" placeholder). TM Forum 2016. All Rights Reserved. Page 15 of 36

APPOINTMENT STATE CHANGE NOTIFICATION Notification sent when the state of an appointment is updated. Json representation samples We provide below the json representation of an example of an appointmentstatechangenotification notification object : "eventid":"00001", "eventtime":"2013-04-19t16:42:25-04:00", "eventtype":"appointmentstatechangenotification", "event": "appointment": "id":"21", "href":" https://host:port/appointment/appointment/21", "state":"missed" APPOINTMENT RESCHEDULE NOTIFICATION Notification sent when an appointment is rescheduled. Json representation samples We provide below the json representation of an example of an appointmentreschedulenotification notification object : "eventid":"00001", "eventtime":"2013-04-19t16:42:25-04:00", "eventtype":"appointmentreschedulenotification", "event": "appointment": "id":"21", "href":" https://host:port/appointment/appointment/21", "startdate":"2015-09-01t14:00:00.071z", "enddate":"2015-09-01t16:00:00.071z" TM Forum 2016. All Rights Reserved. Page 16 of 36

APPOINTMENT CATEGORY CHANGE NOTIFICATION Notification sent when the category of an appointment is updated. Json representation samples We provide below the json representation of an example of an appointmentcategorychangenotification notification object : "eventid":"00001", "eventtime":"2013-04-19t16:42:25-04:00", "eventtype":"appointmentcategorychangenotification", "event": "appointment": "id":"21", "href":" https://host:port/appointment/appointment/21", "category":"intervention" APPOINTMENT CREATION NOTIFICATION Notification sent when a new appointment is created. Json representation samples We provide below the json representation of an example of an appointmentcreationnotification notification object : "eventid":"00001", "eventtime":"2013-04-19t16:42:25-04:00", "eventtype":"appointmentcreationnotification", "event": "appointment": "id":"21", "href":" https://host:port/appointment/appointment/21", --SEE Appointment Resource sample -- TM Forum 2016. All Rights Reserved. Page 17 of 36

APPOINTMENT ATTRIBUTE VALUE CHANGE NOTIFICATION Notification sent when an appointment attribute is updated. Json representation samples We provide below the json representation of an example of an appointmentattributevaluechangenotification notification object : "eventid":"00001", "eventtime":"2013-04-19t16:42:25-04:00", "eventtype":"appointmentattributevaluechangenotification", "event": "appointment": "id":"21", "href":"https://host:port/appointment/appointment/21", "alarm":"false" TM Forum 2016. All Rights Reserved. Page 18 of 36

API OPERATIONS Remember the following Uniform Contract: Operation on Entities Uniform API Operation Description Query Entities GET Resource GET must be used to retrieve a representation of a resource. Create Entity POST Resource POST must be used to create a new resource Partial Update of an Entity PATCH Resource PATCH must be used to partially update a resource Complete Update of an Entity PUT Resource PUT must be used to completely update a resource identified by its resource URI Remove an Entity DELETE Resource DELETE must be used to remove a resource Execute an Action on an Entity POST on TASK Resource POST must be used to execute Task Resources Other Request Methods POST on TASK Resource GET and POST must not be used to tunnel other request methods. Filtering and attribute selection rules are described in the TMF REST Design Guidelines. Notifications are also described in a subsequent section. TM Forum 2016. All Rights Reserved. Page 19 of 36

OPERATIONS ON APPOINTMENT Summary of operations (1) A party (customer service representative, customer, etc.) wants to check free periods into a calendar A party wants to book an appointment for a customer: the party checks free periods in a calendar. This calendar can be one of a single person, or an aggregation of persons (a team). In case of a team calendar, the party identification (competent/relevant team to perform an intervention) is realized via a context: a product specification (FTTH, Copper, etc.), a marketsegment (Pro / Residential), a place/localization, etc. (2) A party wants to create an appointment A party books a slot, this slot will be used to realize a task (an intervention, etc.) or to meet a customer service representative. his booking is done on an organization calendar (a team, a shop, etc.). (3) A party wants to delete an appointment If, for example, the customer is not available anymore, the party can cancel the appointment. (4) A party wants to update an appointment If, for example, the customer is not available anymore, the party can update the appointment by changing the slot. (5) A party wants to find appointments with criterias A party can search all the appointments booked by a customer in a determined period for example. (6) A party wants to reschedule an appointment Availabilities of parties have changed. The appointment must be rescheduled. TM Forum 2016. All Rights Reserved. Page 20 of 36

CHECK FREE SLOTS INTO A CALENDAR (1) POST /api/freeslot/search Description This operation is used to retrieve relevant free slots, available to book an appointment on, and matching a set of criteria. Mandatory and Non Mandatory Attributes The following table provides the list of mandatory and non-mandatory attributes to create an appointment, including any possible rule conditions and applicable default values. Mandatory Attributes marketsegment productspecification address category Either id or href must be filled Rule Non Mandatory Attributes startdate enddate weeknumber favoriteampm relatedparty limit Rule StartDate is mandatory if weeknumber is empty. If startdate is filled, enddate must be filled EndDate is mandatory if weeknumber is empty. If enddate is filled, startdate must be filled WeekNumber is mandatory if startdate and enddate are empty When a party is given, either id or href must be filled Default Values Summary The following table summarizes the default values applicable to optional attributes of the resource (or subresources) : limit Attributes Default Value Value to be defined by the project Behavior Returns HTTP/1.1 status code 200 if the request was successful Returns HTTP/1.1 status code 4xx if an error occured, for example to cover these functional error cases : startdate must not be in the past enddate must not be in the past enddate must be superior to startdate TM Forum 2016. All Rights Reserved. Page 21 of 36

Usage Samples Request POST /api/freeslot/search Content-type: application/json "marketsegment" : "B2C", "favoriteampm": "pm", "weeknumber": "36", "category": "intervention", "limit": "5", "productspecification": "id":"productspec42", "address": "id":"7660828", "href":"https://host:port/address/address/7660828", description : Complete address of the appointment, relatedparty : id : 32, href : https://host:port/partymanagement/individual/32 Response 200 Content-Type: application/json freeslot :[ relatedparty : id : 32, href : https://host:port/partymanagement/individual/32, startdate : 2015-09-01T14:00:00.071Z, enddate : 2015-09-01T16:00:00.071Z, relatedparty : id : 32, href : https://host:port/partymanagement/individual/32, startdate : 2015-09-01T16:00:00.071Z, enddate : 2015-09-01T18:00:00.071Z, relatedparty : id : 32, href : https://host:port/partymanagement/individual/32 TM Forum 2016. All Rights Reserved. Page 22 of 36

], startdate : 2015-09-01T14:00:00.071Z, enddate : 2015-09-01T16:00:00.071Z, relatedparty : id : 32, href : https://host:port/partymanagement/individual/32, startdate : 2015-09-03T14:00:00.071Z, enddate : 2015-09-03T16:00:00.071Z, relatedparty : id : 32, href : https://host:port/partymanagement/individual/32, startdate : 2015-09-05T14:00:00.071Z, enddate : 2015-09-05T16:00:00.071Z CREATE AN APPOINTMENT (2) POST /api/appointment Description After checking free slots, this operation is used to create an appointment with all its characteristics. Mandatory and Non Mandatory Attributes The following table provides the list of mandatory and non-mandatory attributes when creating an appointment, including any possible rule conditions and applicable default values. Mandatory Attributes category startdate enddate address relatedparty relatedparty.id relatedparty.href Rule Either id or href must be filled at least At least one party must be linked to the appointment (customer, ) Either id or href must be filled at least Either id or href must be filled at least Non Mandatory Attributes Rule TM Forum 2016. All Rights Reserved. Page 23 of 36

externalid description status alarm alarmaction attachment.href address.description relatedparty.role relatedparty.name relatedobject relatedobject.involvement relatedobject.reference note note.date note.author note.text If alarm is false, alarmaction doesn t appear For example, ordertodeliver, problemtosolve for trouble ticket If a relatedobject is selected, involvement and reference must be filled. If a relatedobject is selected, involvement and reference must be filled. Default Values Summary When creating the appointment, the following table summarizes the default values applicable to optional attributes of the resource (or sub-resources) : state Attributes initialized Default Value Behavior Returns HTTP/1.1 status code 201 if the request was successful Returns HTTP/1.1 status code 4xx if an error occurred, for example to cover these functional use cases : startdate must not be in the past enddate must not be in the past enddate must be superior to startdate appointment on a slot already booked state lifecycle is not respected Usage Samples Request POST /api/appointment Content-type: application/json TM Forum 2016. All Rights Reserved. Page 24 of 36

"externalid":"anexternalidifneeded432113", "category":"intervention", "description":"a useful text to describe the appointment", "state":"missed", "creationdate":"2015-09-01t14:40:43.071z", "lastupdate":"2015-09-01t14:40:43.071z", "startdate":"2015-09-01t14:00:43.071z", "enddate":"2015-09-01t16:00:43.071z", "alarm": true, "alarmaction":"smstocustomer", "attachment":[ "description":"short description of the document attached to the appointment", "href":"http://server/path/document1.pdf" ], "relatedparty": [ "id":"32", "href":"https://host:port/partymanagement/individual/32", "role":"customer", "name":"john Doe" ], "address": "id":"7660828", "href" : "https://host:port/address/address/7660828", "description": "Complete address of the appointment", "relatedobject":[ "involvement":"problemtosolve", "reference": "https://host:port/troubleticket/troubleticket/789745465" ], "note":[ "date":"2015-09-01t14:40:43.071z", "author":"arthur Ewans", "text":"already called the expert" ] Response 201 Content-Type: application/json "id":"21", "href":"https://host:port/appointment/appointment/21", "externalid":"anexternalidifneeded432113", "category":"intervention", TM Forum 2016. All Rights Reserved. Page 25 of 36

"description":"a useful text to describe the appointment", "state":"missed", "creationdate":"2015-09-01t14:40:43.071z", "lastupdate":"2015-09-01t14:40:43.071z", "startdate":"2015-09-01t14:00:43.071z", "enddate":"2015-09-01t16:00:43.071z", "alarm": true, "alarmaction":"smstocustomer", "attachment":[ "description":"short description of the document attached to the appointment", "href":"http://server/path/document1.pdf" ], "relatedparty": [ "id":"32", "href":"https://host:port/partymanagement/individual/32", "role":"customer", "name":"john Doe" ], "address": "id":"7660828", "href":"https://host:port/address/address/7660828", "description": "Complete address of the appointment", "relatedobject":[ "involvement":"problemtosolve", "reference": "https://host:port/troubleticket/troubleticket/789745465" ], "note":[ "date":"2015-09-01t14:40:43.071z", "author":"arthur Ewans", "text":"already called the expert " ] UPDATE OR CANCEL AN APPOINTMENT (3) (4) PATCH /api/appointment/id Description This operation can be used to update partially an appointment if information has changed. It also can be used to cancel an appointment by modifying its state. The new state is cancelled. TM Forum 2016. All Rights Reserved. Page 26 of 36

Patchable and Non Patchable Attributes The tables below provide the list of patchable and not patchable attributes, including constraint rules on their usage. Patchable attributes category description state startdate enddate alarm alarmaction attachment.href relatedparty relatedobject note Non Patchable attributes Id href externalid creationdate lastupdate address Rule To manage the appointment process (cf. appointment lifecycle) Only when the party is not the customer Rule Behavior Returns HTTP/1.1 status code 200 if the request was successful Returns HTTP/1.1 status code 4xx if an error occurred, for example to cover these functional use cases : startdate must not be in the past enddate must not be in the past enddate must be superior to startdate appointment on a slot already booked state lifecycle is not respected Usage Samples Request PATCH /api/appointment/21 Content-Type: application/json "state":"cancelled" Response TM Forum 2016. All Rights Reserved. Page 27 of 36

200 Content-Type: application/json "id":"21", "href":"https://host:port/appointment/appointment/21", "externalid":"anexternalidifneeded432113", "category":"intervention", "description":"a useful text to describe the appointment", "state":"cancelled", "creationdate":"2015-09-01t14:40:43.071z", "lastupdate":"2015-09-01t14:40:43.071z", "startdate":"2015-09-01t14:00:43.071z", "enddate":"2015-09-01t16:00:43.071z", "alarm": true, "alarmaction":"smstocustomer", "attachment":[ "description":"short description of the document attached to the appointment", "href":"http://server/path/document1.pdf" ], "relatedparty": [ "id":"32", "href":"https://host:port/partymanagement/individual/32", "role":"customer", "name":"john Doe" ], "address": "id":"7660828", "href" : "https://host:port/address/address/7660828", "description": "Complete address of the appointment", "relatedobject":[ "involvement":"problemtosolve", "reference": "https://host:port/troubleticket/troubleticket/789745465" ], "note":[ "date":"2015-09-01t14:40:43.071z", "author":"arthur Ewan", "text":"already called the expert " ] TM Forum 2016. All Rights Reserved. Page 28 of 36

RETRIEVE AN APPOINTMENT GET /api/appointment/id Description This operation is used to search an appointment by its unique identifier. Behavior Returns HTTP/1.1 status code 200 if the request was successful Returns HTTP/1.1 status code 404 (Not found) if the appointment does not exist. Usage Samples Request GET /api/appointment/21 Accept: application-json Response 200 Content-Type: application/json "id":"21", "href":"https://host:port/appointment/appointment/21", "externalid":"anexternalidifneeded432113", "category":"intervention", "description":"a useful text to describe the appointment", "state":"missed", "creationdate":"2015-09-01t14:40:43.071z", "lastupdate":"2015-09-01t14:40:43.071z", "startdate":"2015-09-01t14:00:43.071z", "enddate":"2015-09-01t16:00:43.071z", "alarm": true, "alarmaction":"smstocustomer", "attachment":[ "description":"short description of the document attached to the appointment", "href":"http://server/path/document1.pdf" ], "relatedparty": [ "id":"32", "href":"https://host:port/partymanagement/individual/32", "role":"customer", TM Forum 2016. All Rights Reserved. Page 29 of 36

"name":"john Doe" ], "address": "id":"7660828", "href" : "https://host:port/address/address/7660828", "description": "Complete address of the appointment", "relatedobject":[ "involvement":"problemtosolve", "reference": "https://host:port/troubleticket/troubleticket/789745465" ], "note":[ "date":"2015-09-01t14:40:43.071z", "author":"arthur Ewan", "text":"already called the expert " ] LIST APPOINTMENTS (5) GET /api/appointment? fields=attributes&filtering expression Description This operation is used to retrieve appointments corresponding to given criteria. Filtering is allowed on all attributes. Attribute selection is enabled on all attributes. Behavior Returns HTTP/1.1 status code 200 if the request was successful Returns HTTP/1.1 status code 4xx if an error occurred Usage Samples Request GET /api/appointment?relatedparty.id=32&relatedparty.role=customer&startdate.gt=2015-08- 31&startDate.lt=2015-09-04&fields=id,category,state,startDate,endDate Accept: application/json TM Forum 2016. All Rights Reserved. Page 30 of 36

Response 200 Content-Type: application/json [ ] "id" : "21", "category" : "intervention", "state":"validated", "startdate" : "2015-09-01T14:00:43.071Z", "enddate" : "2015-09-01T16:00:43.071Z" RESCHEDULE AN APPOINTMENT (6) POST /api/freeslot/search Description This operation is used to retrieve relevant free slots, available for rescheduling an existing appointment on. Mandatory and Non Mandatory Attributes The following table provides the list of mandatory and non mandatory attributes when creating an appointment, including any possible rule conditions and applicable default values. Mandatory Attributes appointmentid Rule Behavior Returns HTTP/1.1 status code 200 if the request was successful Returns HTTP/1.1 status code 4xx if an error occurred. Usage Samples Request GET /api/freeslot/search Content-Type: application/json "appointmentid": "36" TM Forum 2016. All Rights Reserved. Page 31 of 36

Response 200 200 Content-Type: application/json "freeslot":[ "relatedparty" : "id" : "32", "href" : "https://host:port/partymanagement/individual/32", "startdate":"2015-09-01t14:00:00.071z", "enddate":"2015-09-01t16:00:00.071z", "relatedparty" : "id" : "32", "href" : "https://host:port/partymanagement/individual/32", "startdate":"2015-09-01t16:00:00.071z", "enddate":"2015-09-01t18:00:00.071z", "relatedparty" : "id" : "32", "href" : "https://host:port/partymanagement/individual/32", "startdate":"2015-09-01t14:00:00.071z", "enddate":"2015-09-01t16:00:00.071z", "relatedparty" : "id" : "32", "href" : "https://host:port/partymanagement/individual/32", "startdate":"2015-09-03t14:00:00.071z", "enddate":"2015-09-03t16:00:00.071z", "relatedparty" : "id" : "32", "href" : "https://host:port/partymanagement/individual/32", "startdate":"2015-09-05t14:00:00.071z", "enddate":"2015-09-05t16:00:00.071z" ] TM Forum 2016. All Rights Reserved. Page 32 of 36

API NOTIFICATIONS 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 Returns HTTP/1.1 status code 204 if the request was successful. Returns HTTP/1.1 status code 409 if request is not successful. Usage samples Here s an example of a request for registering a listener. 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 TM Forum 2016. All Rights Reserved. Page 33 of 36

UNREGISTER LISTENER DELETE HUB/ID Description Clears the communication endpoint address that was set by creating the Hub. Behavior Returns HTTP/1.1 status code 204 if the request was successful. Returns HTTP/1.1 status code 404 if the resource is not found. Usage samples Here s an example of a request for un-registering a listener. Request DELETE /api/hub/id Accept: application/json Response 204 PUBLISH EVENT TO LISTENER POST /CLIENT/LISTENER Description Provides to a registered listener the description of the event that was raised. Behavior Returns HTTP/1.1 status code 201 if the service is able to set the configuration. The /client/listener url is the callback url passed when registering the listener. Usage samples An example of a notification received by the listener. In this example, EvenType should be replaced by one of the notification types supported by this API (detailed in Notification resources Model section) and EVENT BODY refers to the data structure of the given notification type. TM Forum 2016. All Rights Reserved. Page 34 of 36

Request POST /client/listener Accept: application/json "eventtype": "EventType", "event": EVENT BODY Response 201 Content-Type: application/json For detailed examples on the general TM Forum notification mechanism, see the TMF REST Design Guidelines. TM Forum 2016. All Rights Reserved. Page 35 of 36

ACKNOWLEDGMENTS VERSION HISTORY Version Number Date Modified by Description Version 1.0.0 15/04/2016 Pierre Gauthier Final version for Fx16 TM Forum Version 1.0.1 14/06/2016 Alicja Kawecki TM Forum Version 1.0.2 05/10/2016 Alicja Kawecki TM Forum Updated cover, header, footer; minor formatting/style corrections prior to publishing for Fx16 Updated cover and Notice to reflect TM Forum Approved status RELEASE HISTORY Release Number Date Release led by: Description Release 1.0 15/04/2016 Pierre Gauthier First Release of Document TM Forum CONTRIBUTORS TO DOCUMENT This document was prepared by members of the TM Forum API Program team. TM Forum 2016. All Rights Reserved. Page 36 of 36