Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

TM Forum APIs

 

The following APIs are provided:

 

-Trouble Ticket API                      
-Product Ordering API
-Product Catalog API                  
-Usage Management API              
-Product Inventory API                
-Billing Management API              
-Performance Management API                       
-SLA Management API                  
-Customer Management API       
-Party Management API    
 
 

...

Managed Entity and Task Resource Models

Example of the JSON representation of a ticket:

{
    "id": "1",
    "correlationId": "TT53482",
    "description": "Customer complaint over last invoice.",
    "severity": "Urgent",
    "type": "Bills, charges or payment",
    "creationDate": "2013-07-23T08:16:39.0Z",
    "targetResolutionDate": "2013-07-30T10:20:01.0Z",
    "status": "In Progress",
    "subStatus": "Held",
    "statusChangeReason": "Waiting for invoicing expert.",
    "statusChangeDate": "2013-07-28T08:55:12.0Z",
    "relatedParty": [
        {
            "href": "/customer/1234",
            "role": "Originator"
        },
        {
            "href": "/operator/1234",
            "role": "Owner"
        },
        {
            "href": "Roger Collins",
            "role": "Reviser"
        }
    ],
    "relatedObject": [
        {
            "involvement": "Disputed",
            "reference": "/invoice/1234"
        },
        {
            "involvement": "Adjusted",
            "reference": "/invoice/5678"
        }
    ],
    "note": [
        {
            "date": "2013-07-24T09:55:30.0Z",
            "author": "Arthur Evans",
            "text": "Already called the expert"
        },
        {
            "date": "2013-07-25T08:55:12.0Z",
            "author": "Arthur Evans",
            "text": "Informed the originator"
        }
    ]
}

GET /API/troubleTicket/{ID}}/?{fields=attributes}&{filtering expression}

This Uniform Contract operation is used to retrieve the representation of a ticket.

Note that collections can be retrieved via GET /API/troubleTicket/ with no {ID}

Filtering is allowed on all attributes. See example below.
Attribute selection is possible for all attributes. See example below.

REQUEST

GET /api/troubleTicket 

Accept: application/json

RESPONSE

200

Content-Type: application/json

 

[ 

{ 

    "id": "1", 

    "correlationId": "TT53482", 

    "description": "Customer complaint over last invoice.", 

    "severity": "Urgent", 

    "type": "Bills, charges or payment", 

    "creationDate": "2013-07-23T08:16:39.0Z", 

    "targetResolutionDate": "2013-07-30T10:20:01.0Z", 

    "status": "In Progress", 

    "subStatus": "Held", 

    "statusChangeReason": "Waiting for invoicing expert.", 

    "statusChangeDate": "2013-07-24T08:55:12.0Z", 

    "relatedParty": [ 

        { 

            "href": "/customer/1234", 

            "role": "Originator" 

        }, 

        { 

            "href": "/operator/1234", 

            "role": "Owner" 

        }, 

        { 

            "href": "Roger Collins", 

            "role": "Reviser" 

        } 

    ], 

    "relatedObject": [ 

        { 

            "involvement": "Disputed", 

            "reference": "/invoice/1234" 

        }, 

        { 

            "involvement": "Adjusted", 

            "reference": "/invoice/5678" 

        } 

    ], 

    "note": [ 

        { 

            "date": "2013-07-24T09:55:30.0Z", 

            "author": "Arthur Evans", 

            "text": "Already called the expert" 

        }, 

        { 

            "date": "2013-07-25T08:55:12.0Z", 

            "author": "Arthur Evans", 

            "text": "Informed the originator" 

        } 

    ] 

}, 

{ 

    "id": "2", 

    "correlationId": "", 

    "description": "Customer asks for information about upgrading products.", 

    "severity": "Low", 

    "type": "Products and Services", 

    "creationDate": "2013-07-25T08:16:00.0Z", 

    "targetResolutionDate": "2013-07-28T00:00:00.0Z", 

    "status": "", 

    "subStatus": "", 

    "statusChangeReason": "", 

    "statusChangeDate": "2013-07-25T08:16:00.0Z", 

    "resolutionDate": "", 

    "relatedParty": [ 

        { 

            "href": "/customer/4567", 

            "role": "Originator" 

        } 

    ], 

    "relatedObject": [ 

    ], 

    "note": [ 

    ] 

} 

] 

POST API/ticket

Description :

  • This Uniform Contract operation is used to create a ticket.
  • Resource represents a managed entity.
  • Mandatory attributes that must be provided when you create the ticket :

Description, severity, type

Behavior :

  • Returns HTTP/1.1 status code 201 if the request was successful.
  • Returns HTTP/1.1 status code 400 (Bad request) if content is invalid (missing required attributes, …).

 

Attribute name

Mandatory

Default

Rule

Id

N

 

Initialized by TT handler

correlationId

N

 

 

description

Y

 

 

severity

Y

 

 

type

Y

 

 

creationDate

N

Date of the day

Initialized by TT handler

targetResolutionDate

N

 

 

status

N

Created

Initialized by TT handler

subStatus

N

 

 

statusChangeReason

N

 

 

statusChangeDate

N

Date of the day

 

resolutionDate

N

 

 

relatedParty

N

 

 

relatedObject

N

 

 

Note

N

 

 

 

The requester should not provide an id – it is generated automatically by the TT handler. A correlationId can be provided, but is not mandatory.

Create a ticket only with mandatory attributes:

REQUEST

POST API/ troubleTicket

Content-type: application/json

 

{ 

    "description": "Customer complaint over last invoice.", 

    "severity": "Urgent", 

    "type": "Bills, charges or payment" 

} 

RESPONSE

201

Content-Type: application/json

{ 

    "id": "1", 

    "correlationId": "TT53482", 

    "description": "Customer complaint over last invoice.", 

    "severity": "Urgent", 

    "type": "Bills, charges or payment", 

    "creationDate": "2013-07-23T08:16:39.0Z", 

    "targetResolutionDate": "2013-07-30T10:20:01.0Z", 

    "status": "Created", 

    "subStatus": "", 

    "statusChangeReason": "", 

    "statusChangeDate": "2013-07-24T08:55:12.0Z", 

    "resolutionDate": "", 

    "relatedParty": [ 

    ], 

    "relatedObject": [ 

    ], 

    "note": [

    ] 

API NOTIFICATION FOR TICKET

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 :

...

<h2>Version 2.0 APIs - Hackathon</h2>


<table border="1" cellpadding="10" cellspacing="10" style="line-height: 1.428571429; width: 1000px;">
<tbody>

<tr>
<td>
<p>The&nbsp;<strong>Billing Management API</strong>&nbsp;provides standardized mechanisms for billing account, bill item and settlement note advice management either in B2B or B2B2C contexts. &nbsp;</p>
</td>
<td class="rtecenter"><a href="https://github.com/tmforum/DSMAPICAT/blob/master/Catalog%20Management%20REST%20Spec.pdf?raw=true" target="_blank"><strong>API Specification</strong></a></td>

<td class="rtecenter"><strong><a href="https://apigee.com/[email protected]/embed/console/tmfdigitalapi" target="_blank">POSTMAN Collection</a></strong></td>
<td class="rtecenter"><a href="https://github.com/tmforum/DSMAPICAT" target="_blank"><strong>Swagger Coming Soon</strong></a></td>
<td class="rtecenter"><a href="https://github.com/tmforum/DSMAPICAT/tree/master/DSProductCatalog" target="_blank"><strong>GitHub</strong></a></td>

</tr>
<tr>

<tr>
<td>
<p>The&nbsp;<strong>Customer Management API </strong>&nbsp;provides a standardized mechanism for customer and customer account management, such as creation, update, retrieval, deletion and notification of events. &nbsp;</p>
</td>
<td class="rtecenter"><a href="https://github.com/tmforum/DSMAPICAT/blob/master/Catalog%20Management%20REST%20Spec.pdf?raw=true" target="_blank"><strong>API Specification</strong></a></td>

<td class="rtecenter"><strong><a href="https://apigee.com/[email protected]/embed/console/tmfdigitalapi" target="_blank">POSTMAN Collection</a></strong></td>
<td class="rtecenter"><a href="https://github.com/tmforum/DSMAPICAT" target="_blank"><strong>Swagger Coming Soon</strong></a></td>
<td class="rtecenter"><a href="https://github.com/tmforum/DSMAPICAT/tree/master/DSProductCatalog" target="_blank"><strong>GitHub</strong></a></td>
</tr>
<tr>
<td>
<p><span style="line-height: 1.428571429;">The</span>&nbsp;<strong>Party Management API&nbsp;</strong><span style="line-height: 1.428571429;">provides a standardized mechanism for party management such as creation, update, retrieval, deletion and notification of events. A Party can be an individual or an organization that has any kind of relation with the enterprise. &nbsp;</span></p>
</td>
<td class="rtecenter"><a href="https://github.com/tmforum/DSMAPICAT/blob/master/Catalog%20Management%20REST%20Spec.pdf?raw=true" target="_blank"><strong>API Specification</strong></a></td>

<td class="rtecenter"><strong><a href="https://apigee.com/[email protected]/embed/console/tmfdigitalapi" target="_blank">POSTMAN Collection</a></strong></td>
<td class="rtecenter"><a href="https://github.com/tmforum/DSMAPICAT" target="_blank"><strong>Swagger Coming Soon</strong></a></td>
<td class="rtecenter"><a href="https://github.com/tmforum/DSMAPICAT/tree/master/DSProductCatalog" target="_blank"><strong>GitHub</strong></a></td> </tr>
<tr>
<td>
<p><span style="line-height: 1.428571429;">The <strong>Performance Management API&nbsp;</strong>provides a standardized mechanism for performance management such as creation, partial or full update and retrieval of the resources involved in performance management (Measurement Production Job, Measurement Collection Job, and Ad hoc Collection). It also allows notification of events related to performance.&nbsp;</span></p>
</td>
<td class="rtecenter"><a href="https://github.com/tmforum/DSMAPICAT/blob/master/Catalog%20Management%20REST%20Spec.pdf?raw=true" target="_blank"><strong>API Specification</strong></a></td>

<td class="rtecenter"><strong><a href="https://apigee.com/[email protected]/embed/console/tmfdigitalapi" target="_blank">POSTMAN Collection</a></strong></td>
<td class="rtecenter"><a href="https://github.com/tmforum/DSMAPICAT" target="_blank"><strong>Swagger Coming Soon</strong></a></td>
<td class="rtecenter"><a href="https://github.com/tmforum/DSMAPICAT/tree/master/DSProductCatalog" target="_blank"><strong>GitHub</strong></a></td>
</tr>
<tr>
<td><span style="line-height: 22.8571434020996px;">The <strong>Product Catalog Management API</strong>&nbsp;</span><span style="line-height: 22.8571434020996px;">provides a standardized solution for rapidly adding partners’ products to an existing Catalog. It brings the capability for Service Providers to directly feed partners systems with the technical description of the products they propose to them. &nbsp;<</span></td>
<td class="rtecenter"><a href="https://github.com/tmforum/DSMAPICAT/blob/master/Catalog%20Management%20REST%20Spec.pdf?raw=true" target="_blank"><strong>API Specification</strong></a></td>

<td class="rtecenter"><strong><a href="https://apigee.com/[email protected]/embed/console/tmfdigitalapi" target="_blank">POSTMAN Collection</a></strong></td>
<td class="rtecenter"><a href="https://github.com/tmforum/DSMAPICAT" target="_blank"><strong>Swagger Coming Soon</strong></a></td>
<td class="rtecenter"><a href="https://github.com/tmforum/DSMAPICAT/tree/master/DSProductCatalog" target="_blank"><strong>GitHub</strong></a></td> </tr>
<tr>
<td><span style="line-height: 1.428571429;">The <strong>Product Inventory Management API</strong>&nbsp;</span><span style="line-height: 1.428571429;">provides standardized mechanism for product inventory management such as creation, partial or full update and retrieval of the representation of a product in the inventory. It also allows the notification of events related to product lifecycle. &nbsp;</span></td>
<td class="rtecenter"><a href="https://github.com/tmforum/DSMAPICAT/blob/master/Catalog%20Management%20REST%20Spec.pdf?raw=true" target="_blank"><strong>API Specification</strong></a></td>

<td class="rtecenter"><strong><a href="https://apigee.com/[email protected]/embed/console/tmfdigitalapi" target="_blank">POSTMAN Collection</a></strong></td>
<td class="rtecenter"><a href="https://github.com/tmforum/DSMAPICAT" target="_blank"><strong>Swagger Coming Soon</strong></a></td>
<td class="rtecenter"><a href="https://github.com/tmforum/DSMAPICAT/tree/master/DSProductCatalog" target="_blank"><strong>GitHub</strong></a></td> </tr>

<tr>
<td><span style="line-height: 1.428571429;">The <strong>Product Ordering API</strong>&nbsp;</span><span style="line-height: 1.428571429;">provides a standardized mechanism for placing a product order with all of the necessary order parameters. The API consists of a simple set of operations that interact with CRM/Order negotiation systems in a consistent manner. A product order is created based on a product offering that is defined in a catalog. The product offering identifies the product or set of products that are available to a customer, and includes characteristics such as pricing, product options and market. &nbsp;</span></td>
<td class="rtecenter"><a href="https://github.com/tmforum/DSMAPICAT/blob/master/Catalog%20Management%20REST%20Spec.pdf?raw=true" target="_blank"><strong>API Specification</strong></a></td>

<td class="rtecenter"><strong><a href="https://apigee.com/[email protected]/embed/console/tmfdigitalapi" target="_blank">POSTMAN Collection</a></strong></td>
<td class="rtecenter"><a href="https://github.com/tmforum/DSMAPICAT" target="_blank"><strong>Swagger Coming Soon</strong></a></td>
<td class="rtecenter"><a href="https://github.com/tmforum/DSMAPICAT/tree/master/DSProductCatalog" target="_blank"><strong>GitHub</strong></a></td> </tr>

<tr>
<td><span style="line-height: 1.428571429;">The <strong> SLA Management API</strong>&nbsp;</span><span style="line-height: 1.428571429;">provides a standardized interface for Service Level Agreement (SLA) life cycle Management (SLA Negotiation, SLA configuration SLA Activation/enforcement, SLA Operations, SLA violation / consequence handling, SLA reporting) between a Customer and a Service Provider which provides offers (product with attached SLA in its catalogue) the customer can discover, browse, trigger and order. &nbsp;</span></td>
<td class="rtecenter"><a href="https://github.com/tmforum/DSMAPICAT/blob/master/Catalog%20Management%20REST%20Spec.pdf?raw=true" target="_blank"><strong>API Specification</strong></a></td>

<td class="rtecenter"><strong><a href="https://apigee.com/[email protected]/embed/console/tmfdigitalapi" target="_blank">POSTMAN Collection</a></strong></td>
<td class="rtecenter"><a href="https://github.com/tmforum/DSMAPICAT" target="_blank"><strong>Swagger Coming Soon</strong></a></td>
<td class="rtecenter"><a href="https://github.com/tmforum/DSMAPICAT/tree/master/DSProductCatalog" target="_blank"><strong>GitHub</strong></a></td>
</tr>

<tr>
<td><span style="line-height: 1.428571429;">The <strong>Trouble Ticket API</strong>&nbsp;</span><span style="line-height: 1.428571429;">provides a standardized client interface to Trouble Ticket Management Systems for creating, tracking and managing trouble tickets among partners as a result of an issue or problem identified by a customer or another system. Examples of Trouble Ticket API clients include CRM applications, network management or fault management systems, or other trouble ticket management systems (e.g. B2B).&nbsp;</span></td>
<td class="rtecenter"><a href="https://github.com/tmforum/DSMAPICAT/blob/master/Catalog%20Management%20REST%20Spec.pdf?raw=true" target="_blank"><strong>API Specification</strong></a></td>

<td class="rtecenter"><strong><a href="https://apigee.com/[email protected]/embed/console/tmfdigitalapi" target="_blank">POSTMAN Collection</a></strong></td>
<td class="rtecenter"><a href="https://github.com/tmforum/DSMAPICAT" target="_blank"><strong>Swagger Coming Soon</strong></a></td>
<td class="rtecenter"><a href="https://github.com/tmforum/DSMAPICAT/tree/master/DSProductCatalog" target="_blank"><strong>GitHub</strong></a></td> </tr>

<tr>
<td><span style="line-height: 1.428571429;">The <strong>Usage Management API</strong>&nbsp;</span><span style="line-height: 1.428571429;">provides standardized mechanism for usage management such as creation, update, retrieval, import and export of a collection of usages. The API manages both rated and non-rated usage. For example, it allows a service provider:
- To retrieve usage generated by a partner service platform in order to rate it
- To provide rated usage to a partner for consumption follow up purposes.&nbsp;</span></td>
<td class="rtecenter"><a href="https://github.com/tmforum/DSMAPICAT/blob/master/Catalog%20Management%20REST%20Spec.pdf?raw=true" target="_blank"><strong>API Specification</strong></a></td>
<td class="rtecenter"><a href="https://github.com/tmforum/DSMAPICAT/blob/master/Catalog%20Management%20REST%20Spec.pdf?raw=true" target="_blank"><strong>API Specification</strong></a></td>

<td class="rtecenter"><strong><a href="https://apigee.com/[email protected]/embed/console/tmfdigitalapi" target="_blank">POSTMAN Collection</a></strong></td>
<td class="rtecenter"><a href="https://github.com/tmforum/DSMAPICAT" target="_blank"><strong>Swagger Coming Soon</strong></a></td>
<td class="rtecenter"><a href="https://github.com/tmforum/DSMAPICAT/tree/master/DSProductCatalog" target="_blank"><strong>GitHub</strong></a></td> </tr>

</tbody>
</table>

 


<h2>Version 1.0 APIs</h2>

<table border="1" cellpadding="10" cellspacing="10" style="line-height: 1.428571429; width: 1000px;">
<tbody>
<tr>
<td>
<p>The&nbsp;<strong>Catalog Management API</strong>&nbsp;provides a standardized definition for acquiring new products from partners. It defines an interface between product catalog systems in order to place orders with partners, and also enables partners who have access to your catalog to place orders with you. &nbsp;</p>
</td>
<td class="rtecenter"><strong><a href="https://apigee.com/[email protected]/embed/console/tmfdigitalapi" target="_blank">Console</a></strong></td>
<td class="rtecenter"><a href="https://github.com/tmforum/DSMAPICAT" target="_blank"><strong>GitHub</strong></a></td>
</tr>
<tr>
<td>
<p><span style="line-height: 1.428571429;">The</span>&nbsp;<strong>Product Ordering API&nbsp;</strong><span style="line-height: 1.428571429;">provides a standardized mechanism for placing a product order with a simple set of operations and parameters that interact with CRM/Order Negotiation systems in a consistent manner. &nbsp;</span></p>
</td>
<td class="rtecenter"><strong><a href="https://apigee.com/[email protected]/embed/console/tmfdigitalapi" target="_blank">Console</a></strong></td>
<td class="rtecenter"><a href="https://github.com/tmforum/DSPRODUCTORDERING" target="_blank"><strong>GitHub</strong></a></td>

</tr>
<tr>
<td>
<p><span style="line-height: 1.428571429;">The <strong>Trouble Ticket API&nbsp;</strong>provides a standardized client interface to Trouble Ticket Management Systems for creating, tracking and managing trouble tickets among partners.&nbsp;</span></p>
</td>
<td class="rtecenter"><strong><a href="https://apigee.com/[email protected]/embed/console/tmfdigitalapi" target="_blank">Console</a></strong></td>
<td class="rtecenter"><a href="https://github.com/tmforum/DSMAPITT" target="_blank"><strong>GitHub</strong></a></td>
</tr>
<tr>
<td><span style="line-height: 22.8571434020996px;">The <strong>SLA Management API</strong>&nbsp;</span><span style="line-height: 22.8571434020996px;">provides a standardized interface for creating and managing Service Level Agreements and violations with a simple set of operations that promote integration and interoperability among partners.</span></td>
<td class="rtecenter">Console</td>
<td class="rtecenter"><strong><a href="https://github.com/tmforum/DSMSLAAPI" target="_blank">GitHub</a></strong></td>
</tr>
<tr>
<td><span style="line-height: 1.428571429;">The <strong>Performance Management API</strong>&nbsp;</span><span style="line-height: 1.428571429;">provides a standardized interface for measuring and managing key performance indicators (KPIs).</span></td>
<td class="rtecenter">Console</td>
<td class="rtecenter"><strong><a href="https://github.com/tmforum/DSMPMAPI" target="_blank">GitHub</a></strong></td>

</tr>
</tbody>
</table>

 

 

<p>&nbsp;</p>

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}

...

Managed Entity and Task Resource Models

Example of the JSON representation of a product order:

{
  "id": "42",
  "href": "http://serverlocation:port/orderManagement/productOrder/42",
  "externalId": "NiceNameForTheConsumer_42",
  "priority": "1",
  "description": "A wonderful 42 order for brand new products",
  "category": "residential",
  "state": "InProgress",
  "orderDate": "2013-04-12T16:42:23-04:00",
  "completionDate": "2013-04-19T16:42:23-04:00",
  "requestedStartDate": "2013-04-12T16:42:23-04:00",
  "requestedCompletionDate": "2013-04-19T16:42:23-04:00",
  "expectedCompletionDate": "2013-04-19T16:42:23-04:00",
  "notificationContact": "[email protected]",
  "note": [
    {
      "text": "A free text detailing the note",
      "date": "2013-04-12T16:42:23-04:00",
      "author": "name"
    }
  ],
  "relatedParty": [
    {
      "role": "customer",
      "id": "345221",
      "href": "http://serverlocation:port/partyManagement/customer/345221",
      "name": "John Doe"
    },
    {
      "role": "partner",
      "id": "42",
      "href": "http://serverlocation:port/partyManagement/partner/42"
    },
    {
      "role": "seller",
      "id": "4563",
      "href": "http://serverlocation:port/partnerManagement/partner/4563"
    }
  ],
  "orderItem": [
    {
      "id": "1",
      "action": "add",
      "state": "Acknowledged",
      "billingAccount": [
        {
          "id": "123456",
          "href": "http://serverlocation:port/billingManagement/billingAccount/123456"
        }
      ],
      "appointment": "http://www.doodle.com/1WCV5647438",
      "productOffering": {
        "id": "42",
        "href": "http: //serverlocation: port/catalogManagement/productOffering/42"
      },
      "product": {
        "place": {
          "href": "http://map.google.com/.../1234112GDE",
          "role": "DeliveryPlace"
        },
        "productCharacteristic": [
          {
            "name": "Colour",
            "value": "White"
          },
          {
            "name": "Memory",
            "value": "16"
          }
        ]
      }
    },
    {
      "id": "2",
      "action": "modify",
      "state": "InProgress",
      "productOffering": {
        "id": "43",
        "href": "http: //serverlocation: port/catalogManagement/productOffering/43"
      },
      "product": {
        "id": "456",
        "href": "http: //serverlocation: port/inventoryManagement/product/456",
        "productCharacteristic": [
          {
            "name": "anotherCharacteristic",
            "value": "itsValue"
          }
        ],
        "relatedParty": [
          {
            "role": "user",
            "id": "5667443",
            "href": "http://serverlocation:port/partyManagement/user/5667443",
            "name": "Jimmy Doe"
          }
        ]
      }
    },
    {
      "id": "3",
      "action": "add",
      "state": "InProgress",
      "billingAccount": [
        {
          "id": "123456",
          "href": "http://serverlocation:port/billingManagement/billingAccount/123456"
        }
      ],
      "productOffering": {
        "id": "51",
        "href": "http: //serverlocation: port/catalogManagement/productOffering/51"
      },
      "product": {
        "id": "511",
        "href": "http: //serverlocation: port/inventoryManagement/product/456",
        "productCharacteristic": [
          {
            "name": "anotherCharacteristic",
            "value": "itsValue"
          }
        ],
        "productRelationship": [
          {
            "type": "reliesOn",
            "product": {
              "productCharacteristic": [
                {
                  "name": "MSISDN",
                  "value": "003467488299002"
                }
              ]
            }
          }
        ]
      }
    },
    {
      "id": "4",
      "action": "add",
      "state": "InProgress",
      "billingAccount": [
        {
          "id": "1789",
          "href": "http://serverlocation:port/billingManagement/billingAccount/1789"
        }
      ],
      "productOffering": {
        "id": "44",
        "href": "http://serverlocation:port/catalogManagement/productOffering/Bundle44",
        "bundledProductOffering": [
          {
            "id": " BundledPSTN444",
            "href": "http://serverlocation:port/catalogManagement/productOffering/BundledPSTN444"
          },
          {
            "id": " Bundled Mobile443",
            "href": "http://serverlocation:port/catalogManagement/productOffering/BundledMobile443"
          }
        ]
      },
      "product": {
        "productRelationship": [
          {
            "type": "bundled",
            "product": {
              "productCharacteristic": [
                {
                  "name": "PSTNNumber",
                  "value": "003427488299002"
                }
              ]
            }
          },
          {
            "type": "bundled",
            "product": {
              "productCharacteristic": [
                {
                  "name": "MobileNumber",
                  "value": "003464553000300"
                }
              ]
            }
          }
        ]
      }
    }
  ]
}

GET /orderManagement/productOrder/{ID} 

Note that collections can be retrieved via GET /orderManagement/productOrder with no {ID}

Description :

This operation is used to retrieve order information using the ID

Attribute selection is enabled on all first level attributes but not on inner classes.

Attribute selection may optionally be enabled on all attributes and inner classes.

Behavior :

·         Return status codes

o   200 OK - the request was successful  

o   404 Not found - the supplied ID does not match a known productOrder 

 

Use case : Get a specific order based on its ID

 

 

REQUEST

GET /orderManagement/productOrder/42

Accept: application/json 

RESPONSE

200

Content-Type: application/json

{
   "id":"42",
   "href":"http://serverlocation:port/orderManagement/productOrder/42",
   "externalId":"NiceNameForTheConsumer_42",
   "priority":"1",
   "description":"A wonderful 42 order for brand new products",
   "category":"residential",
   "state":"InProgress",
   "orderDate":"2013-04-12T16:42:23-04:00",
   "completionDate":"2013-04-19T16:42:23-04:00",
   "requestedStartDate":"2013-04-12T16:42:23-04:00",
   "requestedCompletionDate":"2013-04-19T16:42:23-04:00",
   "expectedCompletionDate":"2013-04-19T16:42:23-04:00",
   "notificationContact":"[email protected]",
   "note":[
      {
         "text":"A free text detailing the note",
         "date":"2013-04-12T16:42:23-04:00",
         "author":"name"
      }
   ],
   "relatedParty":[
      {
         "role":"customer",
         "id":"345221",
         "href":"http://serverlocation:port/partyManagement/customer/345221"
         "name":"John Doe"
      },
      {
         "role":"partner",
         "id":"42",
         "href":"http://serverlocation:port/partyManagement/partner/42"
      },
      {
         "role":"seller",
         "id":"4563",
         "href":"http://serverlocation:port/partnerManagement/partner/4563"
      }
   ],
   "orderItem":[
      {
         "id":"1",
         "action":"add",
         "state":"Acknowledged",
         "billingAccount":[{
               "id":"123456",
               "href":"http://serverlocation:port/billingManagement/billingAccount/123456"
         }],

         "appointment":"http://www.doodle.com/1WCV5647438",
         "productOffering":{
            "id":"42",
            "href":"http: //serverlocation: port/catalogManagement/productOffering/42"
         },
         "product":{
         "place":{
            "href":"http://map.google.com/.../1234112GDE",
            "role":"DeliveryPlace"
         },
            "productCharacteristic":[
               {
                  "name":"Colour",
                  "value":"White"
               },
               {
                  "name":"Memory",
                  "value":"16"
               }
            ]
         }
      },
      {
         "id":"2",
         "action":"modify",
         "state":"InProgress",
         "productOffering":{
            "id":"43",
            "href":"http: //serverlocation: port/catalogManagement/productOffering/43"
         },
         "product":{
            "id":"456",
            "href":"http: //serverlocation: port/inventoryManagement/product/456",
            "productCharacteristic":[
               {
                  "name":"anotherCharacteristic",
                  "value":"itsValue"
               }
            ],
            "relatedParty":[
               {
                  "role":"user",
                  "id":"5667443",
                  "href":"http://serverlocation:port/partyManagement/user/5667443"
                  "name":"Jimmy Doe"
               }
            ]
         }
      },
      {
         "id":"3",
         "action":"add",
         "state":"InProgress",
         "billingAccount":[{
               "id":"123456",
               "href":"http://serverlocation:port/billingManagement/billingAccount/123456"
         }],
         "productOffering":{
            "id":"51",
            "href":"http: //serverlocation: port/catalogManagement/productOffering/51"
         },
         "product":{
            "id":"511",
            "href":"http: //serverlocation: port/inventoryManagement/product/456",
            "productCharacteristic":[
               {
                  "name":"anotherCharacteristic",
                  "value":"itsValue"
               }
            ],
            "productRelationship":[
               {
                  "type":"reliesOn",
                  "product":{
                     "productCharacteristic":[
                        {
                           "name":"MSISDN",
                           "value":"003467488299002"
                        }
                     ]
                  }
               }
            ]
         }
      },
      {
         "id":"4",
         "action":"add",
         "state":"InProgress",
         "billingAccount":[{
               "id":"1789",
               "href":"http://serverlocation:port/billingManagement/billingAccount/1789"
         }],
         "productOffering":{
            "id":"44",
            "href":"http://serverlocation:port/catalogManagement/productOffering/Bundle44",
            "bundledProductOffering":[
               {
                     "id":" BundledPSTN444",
                     "href":"http://serverlocation:port/catalogManagement/productOffering/BundledPSTN444"                      },

               {
                     "id":" Bundled Mobile443",
                     "href":"http://serverlocation:port/catalogManagement/productOffering/BundledMobile443"                      }
            ]
         },
         "product":{
            "productRelationship":[
               {
                  "type":"bundled",
                  "product":{
                     "productCharacteristic":[
                        {
                           "name":"PSTNNumber",
                           "value":"003427488299002"
                        }
                     ]
                  }
               },
               {
                  "type":"bundled",
                  "product":{
                     "productCharacteristic":[
                        {
                           "name":"MobileNumber",
                           "value":"003464553000300"
                        }
                     ]
                  }
               }
            ]
         }
      }
   ]

 

POST orderManagement/productorder

Description:

This operation is used to create a new order.

The mandatory attributes for the creation are :

-       relatedParties.role and reference to identify at least the customer

-       at least one orderItem with :

    • an action
    • a productOffering

Behavior :

    • Return status codes
      • 201 Created - the request was successful
      • 400 Bad Request – error

REQUEST

POST /orderManagement/productOrder

Content-type: application/json

 

{   "note":[
      {
         "text":"A free text detailing the note"
      }
   ],
   "relatedParty":[
      {
         "role":"customer",
         "id":"345221",
         "href":"http://serverlocation:port/partyManagement/customer/345221",
         "name":"John Doe"
      },
      {
         "role":"seller",
         "id":"4563",
         "href":"http://serverlocation:port/partnerManagement/partner/4563"
      }
   ],
   "orderItem":[
      {
         "id":"1",
         "action":"add",
         "billingAccount":[{
               "id":"1789",
               "href":"http://serverlocation:port/billingManagement/billingAccount/1789"
         }],
         "productOffering":{
            "id":"42",
            "href":"http: //serverlocation: port/catalogManagement/productOffering/42"
         },
         "product":{
            "productCharacteristic":[
               {
                  "name":"Colour",
                  "value":"White"
               },
               {
                  "name":"Memory",
                  "value":"16"
               }
            ]
         }
      },
      {
         "id":"2",
         "action":"modify",
         "product":{
            "id":"456",
            "href":"http: //serverlocation: port/inventoryManagement/product/456",
            "relatedParty":[
               {
                  "role":"user",
                  "id":"5667443",
                  "href":"http://serverlocation:port/partyManagement/user/5667443",
                  "name":"Jimmy Doe"
               }
            ]
         }
      },
      {
         "id":"3",
         "action":"delete",
         "product":{
            "id":"456",
            "href":"http: //serverlocation: port/inventoryManagement/product/456"
         }
      }
   ]
}

RESPONSE

201

Content-Type: application/json

{
   "id":"42",
   "href":"http://serverlocation:port/orderManagement/productOrder/42",
   "priority":"4",
   "category":"uncategorized",
   "state":"Acknowledged",
   "orderDate":"2013-04-12T16:42:23-04:00",
   "expectedCompletionDate":"2013-04-19T16:42:23-04:00",   "note":[
      {
         "text":"A free text detailing the note"
      }
   ],
   "relatedParty":[
      {
         "role":"customer",
         "id":"345221",
         "href":"http://serverlocation:port/partyManagement/customer/345221"
         "name":"John Doe"
      },
      {
         "role":"seller",
         "id":"4563",
         "href":"http://serverlocation:port/partnerManagement/partner/4563"
      }
   ],
   "orderItem":[
      {
         "id":"1",
         "action":"add",
         "state":"Acknowledged",
         "billingAccount":[{
               "id":"1789",
               "href":"http://serverlocation:port/billingManagement/billingAccount/1789"
         }],
         "productOffering":{
            "id":"42",
            "href":"http: //serverlocation: port/catalogManagement/productOffering/42"
         },
         "product":{
            "productCharacteristic":[
               {
                  "name":"Colour",
                  "value":"White"
               },
               {
                  "name":"Memory",
                  "value":"16"
               }
            ]
         }
      },
      {
         "id":"2",
         "action":"modify",
         "state":"Acknowledged",
         "product":{
            "id":"456",
            "href":"http: //serverlocation: port/inventoryManagement/product/456",
            "relatedParty":[
               {
                  "role":"user",
                  "id":"5667443",
                  "href":"http://serverlocation:port/partyManagement/user/5667443",
                  "name":"Jimmy Doe"
               }
            ]
         }
      },
      {
         "id":"3",
         "action":"delete",
         "state":"Acknowledged",
         "product":{
            "id":"456",
            "href":"http: //serverlocation: port/inventoryManagement/product/456"
         }
      }
   ]
}

 

API NOTIFICATION TEMPLATES 

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 :

  • Returns HTTP/1.1 status code 204 if the request was successful.
  • Returns HTTP/1.1 status code 409 if request is not successful.

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}

...

Managed Entity and Task Resource Models

Example of the JSON representation of a product offering:

{ 

            "id": "42", 

            "href": "http://serverlocation:port/productCatalogManagement/productOffering/42", 

            "version": "2.0", 

            "lastUpdate": "2013-04-19T16:42:23.0Z", 

            "name": "Virtual Storage Medium", 

            "description": "Virtual Storage Medium", 

            "isBundle": true, 

            "lifecycleStatus": "Active", 

            "validFor":  

            { 

                        "startDateTime": "2013-04-19T16:42:23.0Z", 

                        "endDateTime": "2013-06-19T00:00:00.0Z" 

            }, 

            "category":  

            [ 

                        {

                                   "id": "12", 

                                   "href": "http://serverlocation:port/catalogManagement/category/12", 

                                   "version": "2.0", 

                                   "name": "Cloud offerings" 

                        } 

            ], 

            "channel":  

            [ 

                        {

                                   "id": "13", 

                                   "href": "http://serverlocation:port/marketSales/channel/13", 

                                   "name": "Online Channel" 

                        } 

            ], 

            "place":  

            [ 

                        {

                                   "id": "12",  

                                   "href": "http://serverlocation:port/marketSales/place/12", 

                                   "name": "France" 

                        } 

            ], 

            "bundledProductOffering":  

            [ 

                        {

                                   "id": "15", 

                                   "href": "http://serverlocation:port/productCatalogManagement/productOffering/15", 

                                   "lifecycleStatus": "Active", 

                                   "name": "Offering 15" 

                        }, 

                        {

                                   "id": "64", 

                                   "href": "http://serverlocation:port/productCatalogManagement/productOffering/64", 

                                   "lifecycleStatus": "Active", 

                                   "name": "Offering 64" 

                        } 

            ], 

            "serviceLevelAgreement":  

            { 

                        "id": "28", 

                        "href": "http://serverlocation:port/slaManagement/serviceLevelAgreement/28", 

                        "name": "Standard SLA" 

            }, 

            "productSpecification":  

                        {

                                   "id": "13", 

                                   "href": "http://serverlocation:port/productCatalogManagement/productSpecification/13", 

                                   "version": "2.0", 

                                   "name": "specification product 1" 

                        }, 

            "serviceCandidate":  

                        {

                                   "id": "13", 

                                   "href": "http://serverlocation:port/serviceCatalogManagement/serviceCandidate/13", 

                                   "version": "2.0", 

                                   "name": "specification service 1" 

                        }, 

            "resourceCandidate":  

                        {

                                   "id": "13", 

                                   "href": "http://serverlocation:port/resourceCatalogManagement/resourceCandidate/13", 

                                   "version": "2.0", 

                                   "name": "specification resource 1" 

                        }, 

            "productOfferingTerm":  

            [ 

                        { 

                                   "name": "12 Month", 

                                   "description": "12 month contract", 

                                   "duration": "12", 

                                   "validFor":  

                                   { 

                                               "startDateTime": "2013-04-19T16:42:23.0Z", 

                                               "endDateTime": "2013-06-19T00:00:00.0Z" 

                                   } 

                        } 

            ], 

            "productOfferingPrice":  

            [ 

                        { 

                                   "name": "Monthly Price", 

                                   "description": "monthlyprice", 

                                   "validFor":  

                                   { 

                                               "startDateTime": "2013-04-19T16:42:23.0Z", 

                                               "endDateTime": "2013-06-19T00:00:00.0Z" 

                                   }, 

                                   "priceType": "recurring", 

                                   "unitOfMeasure": "", 

                                   "price":  

                                   { 

                                               "taxIncludedAmount": 12, 

                                               "dutyFreeAmount": 10, 

                                               "taxRate": 20, 

                                               "currencyCode": "EUR", 

                                               "percentage": 0 

                                   }, 

 

                                   "recurringChargePeriod": "monthly" 

                        }, 

                        { 

                                   "name": "Usage Price", 

                                   "description": "usageprice", 

                                   "validFor":  

                                   { 

                                               "startDateTime": "2013-04-19T16:42:23.0Z", 

                                               "endDateTime": "2013-06-19T00:00:00.0Z" 

                                   }, 

                                   "priceType": "usage", 

                                   "unitOfMeasure": "second", 

                                   "price":  

                                   { 

                                               "taxIncludedAmount": 12, 

                                               "dutyFreeAmount": 10, 

                                               "taxRate": 20, 

                                               "currencyCode": "EUR", 

                                               "percentage": 0 

                                   }, 

                                   "recurringChargePeriod": "", 

                                   "productOfferPriceAlteration":  

                                   { 

                                               "name": "Shipping Discount", 

                                               "description": "One time shipping discount", 

                                               "validFor":  

                                               { 

                                                           "startDateTime": "2013-04-19T16:42:23.0Z" 

                                               }, 

                                               "priceType": "One Time discount", 

                                               "unitOfMeasure": "", 

                                               "price":  

                                               { 

                                                           "percentage": 100 

                                               }, 

                                               "recurringChargePeriod": "", 

                                               "priceCondition": "apply if total amount of the  order is greater than 300.00" 

                                   } 

                        } 

            ] 

} 

GET /catalogManagement/productOffering/{ID}

This Uniform Contract operation is used to retrieve the representation of a managed entity or a task.

Note that collections can be retrieved via GET /api/<RESOURCE> with no {ID}

Description :

    • This operation returns all productOfferings from the catalog, unless an ID is specified in which case a specific productOffering resource would be returned. The ProductOffering resource represents entities that are orderable from the provider of the catalog. This resource includes pricing information.
    • The resource instance being returned is a productOffering or an array of product offering if the query returns multiple resources
    • The resource is either a managed entity or a collection depending on the query pattern.
    • The ID may be a string (or a string containing numbers).

Behavior :

    • What status and exception codes are returned.
      • 200 if no productOffering found for supplied categoryId (200) (filter expression)
      • 404 Not found when the supplied ID doesn’t match a known productOffering.
      • Filtering is enabled on all productOffering attributes.

Attribute selection is enabled.

...

REQUEST

...

GET /catalogManagement/productOffering/{42}

Accept: application/json

...

RESPONSE

200

Content-Type: application/json

 

 

{
           
"id": "42",
           
"href": "http://serverlocation:port/catalogManagement/productOffering/42",
           
"version": "2.0",
           
"lastUpdate": "2013-04-19T16:42:23-04:00",
           
"name": "Virtual Storage Medium",
           
"description": "Virtual Storage Medium",
           
"isBundle": "true",
           
"lifecycleStatus": "Active",
           
"validFor": {
                       
"startDateTime": "2013-04-19T16:42:23-04:00",
                       
"endDateTime": "2013-06-19T00:00:00-04:00"
           
},
           
"category": [
                       
{

                    "id": "12",

...

                        "id": "28",

                        "href": "http://serverlocation:port/slaManagement/serviceLevelAgreement/28",
                       
"name": "Standard SLA"
           
},
           
"productSpecification": {
                       
"id": "13",

                        "href": "http://serverlocation:port/catalogManagement/productSpecification/13",
                       
"version": "2.0",
                       
"name": "specification product 1"
                       
},

            "serviceCandidate":
                       
{
                       
"id": "13",
                       
"href": "http://serverlocation:port/catalogManagement/serviceCandidate/13",
                       
"version": "2.0",
                       
"name": "specification service 1"
                       
},

            "resourceCandidate": {
                       
"id": "13",
                       
"href": "http://serverlocation:port/catalogManagement/resourceCandidate/13",
                       
"version": "2.0",
                       
"name": "specification resource 1"
                       
},

            "productOfferingTerm": [
                       
{
                                  
"name": "12 Month",
                                  
"description": "12 month contract",
                                  
"duration": "12",
                                  
"validFor": {
                                              
"startDateTime": "2013-04-19T16:42:23-04:00",
                                              
"endDateTime": "2013-06-19T00:00:00-04:00"
                                  
}
                       
}
           
],
           
"productOfferingPrice": [
                       
{
                                  
                                  
"name": "Monthly Price",
                                  
"description": "monthlyprice",
                                  
"validFor": {
                                              
"startDateTime": "2013-04-19T16:42:23-04:00",
                                              
"endDateTime": "2013-06-19T00:00:00-04:00"
                                  
},
                                  
"priceType": "recurring",
                                  
"unitOfMeasure": "",
                                  
"price": {
                                              
"taxIncludedAmount": "12.00",
                                              
"dutyFreeAmount": "10.00",
                                              
"taxRate": "20.00",
                                              
"currencyCode": "EUR"
                                  
},
                                  
"recurringChargePeriod": "monthly"
                       
}, {
                                  
"name": "Usage Price",
                                  
"description": "usageprice",
                                  
"validFor": {
                                              
"startDateTime": "2013-04-19T16:42:23-04:00",
                                              
"endDateTime": "2013-06-19T00:00:00-04:00"
                                  
},
                                   
"priceType": "usage",
                                  
"unitOfMeasure": "second",
                                  
"price": {
                                              
"taxIncludedAmount": "12.00",
                                              
"dutyFreeAmount": "10.00",
                                              
"taxRate": "20.00",
                                              
"currencyCode": "EUR"
                                  
},
                                  
"recurringChargePeriod": ""
                       
}
           
]
} 

 

 

POST /catalogManagement/productOffering

This Uniform Contract operation is used to create a managed entity or a task.

Description :

·         This operation creates a productOffering

·         The resource represents a managed entity.

·         The ID may be a string (or a string containing numbers).

Behavior :

    • ·         Standard POST behavior.
    •       Returns HTTP/1.1 status code 201 if the request was successful.
    •       Any other special return and/or exception codes.

 

REQUEST

POST catalogManagement/productOffering

Content-type: application/json

 

{

            "version": "1.0",

            "name": "Virtual Storage Medium",
            "description": "Virtual Storage Medium",
            "isBundle": "true",
            "lifecycleStatus": "Active",
            "validFor": {
                        "startDateTime": "2013-04-19T16:42:23-04:00",
                        "endDateTime": "2013-06-19T00:00:00-04:00"
            },
            "category": [
                        {
                                   "id": "12",
                                   "href": "http://serverlocation:port/catalogManagement/category/12",
                                   "version": "2.0",
                                   "name": "Cloud offerings"
                        }
            ],
            "channel": [
                        {
                                   "id": "13",
                                   "href": "http://serverlocation:port/marketSales/channel/13",
                                   "name": "Online Channel"
                        }
            ],
            "place": [
                        {
                                   "id": "12",
                                   "href": "http://serverlocation:port/marketSales/place/12",
                                   "name": "France"
                        }
            ],
            "bundledProductOffering": [
                        {
                                   "id": "15",
                                   "href": "http://serverlocation:port/catalogManagement/productOffering/15",
                                   "lifecycleStatus": "Active",
                                   "name": "Offering 15"
                        }, {
                                   "id": "64",
                                   "href": "http://serverlocation:port/catalogManagement/productOffering/64",
                                   "lifecycleStatus": "Active",
                                   "name": "Offering 64"
                        }
            ],
            "serviceLevelAgreement": {
                        "id": "28",
                        "href": "http://serverlocation:port/slaManagement/serviceLevelAgreement/28",
                        "name": "Standard SLA"
            },
            "productSpecification": {
                                   "id": "13",
                                   "href": "http://serverlocation:port/catalogManagement/productSpecification/13",
                                   "version": "2.0",
                                   "name": "specification product 1"
                        },

            "serviceCandidate": {
                                   "id": "13",
                                   "href": "http://serverlocation:port/catalogManagement/serviceCandidate/13",
                                   "version": "2.0",
                                   "name": "specification service 1"
                        },

            "resourceCandidate": {
                                   "id": "13",
                                   "href": "http://serverlocation:port/catalogManagement/resourceCandidate/13",
                                   "version": "2.0",
                                   "name": "specification resource 1"
                        },

            "productOfferingTerm": [
                        {
                                   "name": "12 Month",
                                   "description": "12 month contract",
                                   "duration": "12",
                                    "validFor": {
                                               "startDateTime": "2013-04-19T16:42:23-04:00",
                                               "endDateTime": "2013-06-19T00:00:00-04:00"
                                   }
                        }
            ],
            "productOfferingPrice": [
                        {

                                   "name": "Monthly Price",
                                   "description": "monthlyprice",
                                   "validFor": {
                                               "startDateTime": "2013-04-19T16:42:23-04:00",
                                               "endDateTime": "2013-06-19T00:00:00-04:00"
                                   },
                                   "priceType": "recurring",
                                   "unitOfMeasure": "",
                                   "price": {
                                               "taxIncludedAmount": "12.00",
                                               "dutyFreeAmount": "10.00",
                                               "taxRate": "20.00",
                                               "currencyCode": "EUR"
                                   },
                                   "recurringChargePeriod": "monthly"
                        }, {

                                   "name": "Usage Price",
                                   "description": "usageprice",
                                   "validFor": {
                                               "startDateTime": "2013-04-19T16:42:23-04:00",
                                               "endDateTime": "2013-06-19T00:00:00-04:00"
                                   },
                                   "priceType": "usage",
                                   "unitOfMeasure": "second",
                                   "price": {
                                               "taxIncludedAmount": "12.00",
                                               "dutyFreeAmount": "10.00",
                                               "taxRate": "20.00",
                                               "currencyCode": "EUR"
                                   },
                                   "recurringChargePeriod": ""
                        }
            ]
}

RESPONSE

201

Content-Type: application/json

 

{
            "id": "42",
            "href": "http://serverlocation:port/catalogManagement/productOffering/42",
            "version": "1.0",
            "lastUpdate": "2013-04-19T16:42:23-04:00",
            "name": "Virtual Storage Medium",
            "description": "Virtual Storage Medium",
            "isBundle": "true",
            "lifecycleStatus": "Active",
            "validFor": {
                        "startDateTime": "2013-04-19T16:42:23-04:00",
                        "endDateTime": "2013-06-19T00:00:00-04:00"
            },
            "category": [
                        {
                                   "id": "12",
                                   "href": "http://serverlocation:port/catalogManagement/category/12",
                                   "version": "2.0",
                                   "name": "Cloud offerings"
                        }
            ],
            "channel": [
                        {
                                   "id": "13",
                                   "href": "http://serverlocation:port/marketSales/channel/13",
                                   "name": "Online Channel"
                        }
            ],
            "place": [
                        {
                                   "id": "12",
                                   "href": "http://serverlocation:port/marketSales/place/12",
                                   "name": "France"
                        }
            ],
            "bundledProductOffering": [
                        {
                                   "id": "15",
                                   "href": "http://serverlocation:port/catalogManagement/productOffering/15",
                                   "lifecycleStatus": "Active",
                                   "name": "Offering 15"
                        }, {
                                   "id": "64",
                                   "href": "http://serverlocation:port/catalogManagement/productOffering/64",
                                   "lifecycleStatus": "Active",
                                   "name": "Offering 64"
                        }
            ],
            "serviceLevelAgreement": {
                        "id": "28",
                        "href": "http://serverlocation:port/slaManagement/serviceLevelAgreement/28",
                        "name": "Standard SLA"
            },
            "productSpecification": {
                                   "id": "13",
                                   "href": "http://serverlocation:port/catalogManagement/productSpecification/13",
                                   "version": "2.0",
                                   "name": "specification product 1"
                        },

            "serviceCandidate": {
                                   "id": "13",
                                   "href": "http://serverlocation:port/catalogManagement/serviceCandidate/13",
                                   "version": "2.0",
                                   "name": "specification service 1"
                        },

            "resourceCandidate":             {
                                    "id": "13",
                                   "href": "http://serverlocation:port/catalogManagement/resourceCandidate/13",
                                   "version": "2.0",
                                   "name": "specification resource 1"
                        },

            "productOfferingTerm": [
                        {
                                   "name": "12 Month",
                                   "description": "12 month contract",
                                   "duration": "12",
                                   "validFor": {
                                               "startDateTime": "2013-04-19T16:42:23-04:00",
                                               "endDateTime": "2013-06-19T00:00:00-04:00"
                                   }
                        }
            ],
            "productOfferingPrice": [
                        {

                                   "name": "Monthly Price",
                                   "description": "monthlyprice",
                                   "validFor": {
                                               "startDateTime": "2013-04-19T16:42:23-04:00",
                                               "endDateTime": "2013-06-19T00:00:00-04:00"
                                   },
                                   "priceType": "recurring",
                                   "unitOfMeasure": "",
                                   "price": {
                                               "taxIncludedAmount": "12.00",
                                               "dutyFreeAmount": "10.00",
                                               "taxRate": "20.00",
                                               "currencyCode": "EUR"
                                   },
                                   "recurringChargePeriod": "monthly"
                        }, {

                                   "name": "Usage Price",
                                   "description": "usageprice",
                                   "validFor": {
                                               "startDateTime": "2013-04-19T16:42:23-04:00",
                                               "endDateTime": "2013-06-19T00:00:00-04:00"
                                   },
                                   "priceType": "usage",
                                   "unitOfMeasure": "second",
                                   "price": {
                                               "taxIncludedAmount": "12.00",
                                               "dutyFreeAmount": "10.00",
                                               "taxRate": "20.00",
                                               "currencyCode": "EUR"
                                   },
                                   "recurringChargePeriod": ""
                        }
            ]
}

API NOTIFICATIOn TEMPLATES 

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 :

Returns HTTP/1.1 status code 204 if the request was successful.

 

Returns HTTP/1.1 status code 409 if request is not successful.

...

REQUEST

...

POST /api/hub

Accept: application/json

 

{"callback": "http://in.listener.com"} 

...

RESPONSE

201

Content-Type: application/json

Location: /api/hub/42

 

...