summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRene Robert <rene.robert@orange.com>2018-03-28 09:55:53 +0000
committerRene Robert <rene.robert@orange.com>2018-03-28 09:55:53 +0000
commit7afe844fb9f4171697ff5b82b86b2161ffbf2a78 (patch)
tree53be0e7b7608ce8cc76e8cd86525adcc54ca65f9
parent96edbb638b5a3cac22ca17d2cc6537f57a688bd4 (diff)
add API documentations
Issue-ID: EXTAPI-40 Change-Id: If700a2e2700f7c19e22c8f5d11ddf425eb0075a5 Signed-off-by: Rene Robert <rene.robert@orange.com>
-rw-r--r--.gitreview4
-rw-r--r--docs/architecture/NBI_R1_Developer_Guide.rst62
-rw-r--r--docs/offeredapis/NBI_R1_interface.rst201
-rw-r--r--docs/offeredapis/images/ONAP External ID Beijing.jpgbin0 -> 103409 bytes
-rw-r--r--docs/offeredapis/images/ONAP_External_ID_Beijing.jpgbin0 -> 103409 bytes
-rw-r--r--docs/offeredapis/images/html.pngbin0 -> 4086 bytes
-rw-r--r--docs/offeredapis/images/pdf.pngbin0 -> 1946 bytes
-rw-r--r--docs/offeredapis/images/postman.pngbin0 -> 28777 bytes
-rw-r--r--docs/offeredapis/images/swagger.pngbin0 -> 3590 bytes
-rw-r--r--docs/offeredapis/images/swaggerUI.pngbin0 -> 3590 bytes
-rw-r--r--docs/offeredapis/images/uml.jpgbin0 -> 7044 bytes
-rw-r--r--docs/offeredapis/postman/ONAPBeijingServiceOrderDoc.postman_collection.json61
-rw-r--r--docs/offeredapis/serviceCatalog/apiServiceCatalog.plantuml110
-rw-r--r--docs/offeredapis/serviceCatalog/asciiDoc.adoc487
-rw-r--r--docs/offeredapis/serviceCatalog/documentation.html1473
-rw-r--r--docs/offeredapis/serviceCatalog/markDown.md294
-rw-r--r--docs/offeredapis/serviceInventory/apiServiceInventory.plantuml97
-rw-r--r--docs/offeredapis/serviceInventory/asciiDoc.adoc461
-rw-r--r--docs/offeredapis/serviceInventory/documentation.html1423
-rw-r--r--docs/offeredapis/serviceInventory/markDown.md287
-rw-r--r--docs/offeredapis/serviceOrder/apiServiceOrder.plantuml168
-rw-r--r--docs/offeredapis/serviceOrder/asciiDoc.adoc752
-rw-r--r--docs/offeredapis/serviceOrder/documentation.html2030
-rw-r--r--docs/offeredapis/serviceOrder/markDown.md463
-rw-r--r--docs/offeredapis/swaggers/serviceCatalog_1_0_0.json652
-rw-r--r--docs/offeredapis/swaggers/serviceCatalog_1_0_0.yaml488
-rw-r--r--docs/offeredapis/swaggers/serviceInventory_1_0_0.json620
-rw-r--r--docs/offeredapis/swaggers/serviceInventory_1_0_0.yaml423
-rw-r--r--docs/offeredapis/swaggers/serviceOrder_1_0_0.json1071
-rw-r--r--docs/offeredapis/swaggers/serviceOrder_1_0_0.yaml768
30 files changed, 12395 insertions, 0 deletions
diff --git a/.gitreview b/.gitreview
new file mode 100644
index 0000000..4ddee5c
--- /dev/null
+++ b/.gitreview
@@ -0,0 +1,4 @@
+[gerrit]
+host=gerrit.onap.org
+port=29418
+project=externalapi/nbi.git
diff --git a/docs/architecture/NBI_R1_Developer_Guide.rst b/docs/architecture/NBI_R1_Developer_Guide.rst
new file mode 100644
index 0000000..06a2ed7
--- /dev/null
+++ b/docs/architecture/NBI_R1_Developer_Guide.rst
@@ -0,0 +1,62 @@
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.
+.. http://creativecommons.org/licenses/by/4.0
+.. Copyright 2018 ORANGE
+
+
+============
+NBI - Developer Guide
+============
+***************
+Introduction
+***************
+
+NBI is a Java 8 web application built over Spring Framework. Using Spring Boot 1.5.10 dependencies, it runs as a standalone application with an embedded Tomcat server.
+
+***************
+Dependencies
+***************
+This project use various framework which are managed with Maven dependency management tool (see *pom.xml* file at root level) :
+
+- Swagger annotations
+- `Spring Framework <https://github.com/spring-projects/spring-boot>`_
+- `JOLT <https://github.com/bazaarvoice/jolt>`_ to perform JsonToJson transformation
+- `FasterXML/Jackson <https://github.com/FasterXML/jackson>`_ to perform JSON parsing
+- `Wiremock <https://github.com/tomakehurst/wiremock>`_ to perform testing over HTTP mocked response
+
+
+***************
+Configuration
+***************
+A configuration file, *src/main/resources/application.properties* list all the component interface that can be configured depending on the environment were the app is deployed.
+By default, the application runs with an embedded MySQL H2 Database and a MongoDB local instance.
+This file also list configurations of all the REST interface maid from NBI to other ONAP component such as SDC, AA&I and SO.
+
+***************
+Source tree
+***************
+This application provides ServiceOrder, ServiceCatalag and ServiceInventory as main functional resources and HealthCheck. Each resource is implemented independently in a package corresponding to its name.
+
+*commons , configuration, and exceptions* are shared technical classes that provided for all the application.
+
+
+***************************************
+Running and testing the application
+***************************************
+
+**Locally**
+
+Ensure that you have a MongoDB instance running and configured in *application.properties* file.
+Run *Application.java* class in your favorite IDE
+
+Or through a terminal, ensure that your maven installation is works and run *mvn spring-boot:run* command to start the appication.
+
+
+**Docker**
+
+in progress ...
+
+
+**Testing**
+
+You can run a test by using `VisualStudio RestClient plugin <https://github.com/Huachao/vscode-restclient>`_
+See the *restclient* package at root level to find *.vscode/settings.json* configuration file and */json/* package with samples requests that can be run. \ No newline at end of file
diff --git a/docs/offeredapis/NBI_R1_interface.rst b/docs/offeredapis/NBI_R1_interface.rst
new file mode 100644
index 0000000..1a14a9d
--- /dev/null
+++ b/docs/offeredapis/NBI_R1_interface.rst
@@ -0,0 +1,201 @@
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.
+.. http://creativecommons.org/licenses/by/4.0
+.. Copyright 2018 ORANGE
+
+
+============
+nbi - northbound interface - External API for ONAP
+============
+***************
+Introduction
+***************
+
+NBI stands for NorthBound Interface. It brings to ONAP a set of API that can be used by external systems as BSS for example. These API are based on **TMF API**.
+
+***************
+Global NBI architecture for Beijing release
+***************
+
+Following illustration provides a global view about nbi architecture,integration with other ONAP components and API resource/operation provided.
+
+.. image:: images/ONAP_External_ID_Beijing.jpg
+ :width: 800px
+
+***************
+API Version
+***************
+
+APIs are described with a state version with “v” following the API Name, e.g.: nbi/api/v1/productOrder.
+The schema associated with a REST API must have its version number aligned with that of the REST API.
+
+The version number has major, minor and revision numbers. E.g. v1.0.0
+The version number (without the revision number) is held in the URI.
+
+The major version number is incremented for an incompatible change.
+The minor version number is incremented for a compatible change.
+For minor modifications of the API, version numbering must not be updated, provided the following backward compatibility rules are respected:
+
+- New elements in a data type must be optional (minOccurs=0)
+- Changes in the cardinality of an attribute in a data type must be from mandatory to optional or from lower to greater
+- New attributes defined in an element must be optional (absence of use=”required”).
+- If new enumerated values are included, the former ones and its meaning must be kept.
+- If new operations are added, the existing operations must be kept
+- New parameters added to existing operations must be optional and existing parameters
+must be kept
+
+For major modifications of the API, not backward compatible and forcing client implementations to be changed, the version number must be updated.
+
+***************
+API Table
+***************
+
+.. |pdf-icon| image:: images/pdf.png
+ :width: 40px
+
+.. |swagger-icon| image:: images/swagger.png
+ :width: 40px
+
+
+.. |swaggerUI-icon| image:: images/swaggerUI.png
+ :width: 40px
+
+.. |html-icon| image:: images/html.png
+ :width: 40px
+
+.. |plantuml-icon| image:: images/uml.jpg
+ :width: 40px
+
+.. |postman-icon| image:: images/postman.png
+ :width: 40px
+
+.. csv-table::
+ :header: "API", "|swagger-icon|", "|html-icon|", "|plantuml-icon|", "|swagger-icon|", "|postman-icon|", "|pdf-icon|"
+ :widths: 10,5,5,5,5,5,5
+
+ " ", "json file", "html doc", "plantUML doc", "Swagger Editor", "Postman Collection", "pdf doc"
+ "serviceCatalog", ":download:`link <swaggers/serviceCatalog_1_0_0.json>`", ":download:`link <serviceCatalog/documentation.html>`", ":download:`link <serviceCatalog/apiServiceCatalog.plantuml>`", "`link <http://editor2.swagger.io/#/?import=http://onap.readthedocs.io/en/latest/_downloads/serviceCatalog_1_0_0.json>`_", "coming", "coming"
+ "serviceInventory", ":download:`link <swaggers/serviceInventory_1_0_0.json>`", ":download:`link <serviceInventory/documentation.html>`", ":download:`link <serviceInventory/apiServiceInventory.plantuml>`", "`link <http://editor2.swagger.io/#/?import=http://onap.readthedocs.io/en/latest/_downloads/serviceInventory_1_0_0.json>`_", "coming", "coming"
+ "serviceOrder", ":download:`link <swaggers/serviceInventory_1_0_0.json>`", ":download:`link <serviceOrder/documentation.html>`", ":download:`link <serviceOrder/apiServiceOrder.plantuml>`", "`link <http://editor2.swagger.io/#/?import=http://onap.readthedocs.io/en/latest/_downloads/serviceInventory_1_0_0.json>`_", ":download:`link <postman/ONAPBeijingServiceOrderDoc.postman_collection.json>`", "coming"
+
+
+***************
+API Description
+***************
+
+**serviceCatalog:**
+
+From TMF633 serviceCatalog
+
+API at a glance:
+Only high level information are provided - swagger is documented.
+
+Only serviceSpecification resource is provided.
+Information are retrieved in SDC (and in Tosca file) - Only GET operation is provided - this API DID NOT UPDATE SDC
+
+Only characteristics at service level will be retrieved in ONAP Tosca file. For example if an ONAP service is composed of VNF and the VF module, the serviceSpecification resource will only feature characteristic describe in the ONAP service tosca model and not attributes in the tosca files for VNF or VF module.
+
+Only ‘basic’ service characteristics will be managed in this release. By ‘basic’ we mean string, boolean, integer parameter type and we do not manage ‘map’ or ‘list parameter type
+
+
+GET serviceSpecification(list)
+
+(example: GET /nbi/api/v1/serviceSpecification/?category=NetworkService&distributionStatus =DISTRIBUTED)
+
+It is possible to retrieve a list of serviceSpecification (get by list).
+
+Only attributes category and distributionStatus are available for serviceSpecification filtering. It is possible to select retrieved attributes using fields attribute.
+
+if no serviceSpecification matches, an empty list is send back.
+
+GET tservice Specification (id)
+
+(example: GET /nbi/api/v1/serviceSpecification/{uuid})
+
+It is use to retrieve one serviceSpecification - all available information are retieved (see swagger for description)
+
+
+**serviceInventory:**
+
+From TMF638 serviceInventory
+
+API at a glance:
+Only high level information are provided - swagger is documented.
+
+This API retrieves service(s) in the AAI inventory. Only following attributes will be retrieve in service inventory: id, name and type (no state or startDate available )
+
+GET Service Inventory (list):
+
+(example: GET /nbi/api/v1/service/?relatedParty.id=Pontus
+)
+
+GET (by list) allows to request with following criteria (all optional) :
+
+* id (id of the service instance) - id of the service instance (inventory)
+* serviceSpecification.id - id of the service specification (catalog)
+* serviceSpecification.name - name of the service specification (catalog)
+* relatedParty.id - id of the (aai) customer - if not filled we use ‘generic’ customer
+
+if no service matches, an empty list is send back.
+
+1. If a request is send without any parameter, we’ll retrieve the list of service-instance for the ‘generic’ customer
+2. If only customer parameter is filled (relatedParty.id + role= relatedParty’ONAPcustomer’) we’ll retrieve the list of service-instance for this customer
+3. If serviceSpecification.id or name is filled we’ll retrieve the list of Service instance (from this service specification) – We’ll use the customer id if provided (with Role=’ONAPcustomer) or generic if no customer id provided
+
+
+GET Service Inventory (id):
+
+(example: GET /nbi/api/v1/service/{uuid} but customerId & serviceSpecification.id must passed in requested parameters)
+
+
+Because of AAI capability, additionally to the service id, customer id and [serviceSpecification.id or serviceSpecification.name] must be supplied. If the customer id is not supplied, External API will use ‘generic’ customer
+
+**serviceOrder:**
+
+
+From TMF641 serviceOrder
+
+API at a glance:
+Only high level information are provided - swagger is documented.
+
+It is possible to use POST operation to create new serviceOrder in nbi and triggers service provisioning. GET operation is also available to retrieve one service order by providing id or a list of service order. For this release, only a subset of criteria is available:
+
+• externalId
+• state
+• description
+• orderDate.gt (orderDate must be greater – after -than)
+• orderDate.lt (orderDate must be lower-before - than)
+• fields – attribute used to filter retrieved attributes (if needed) and also for sorted SO
+• offset and limit are used for pagination purpose
+
+
+
+ServiceOrder will manage only ‘add’ and ‘delete’ operation (no change).
+
+prerequisites & assumptions :
+
+• Cloud & tenant information MUST BE defined in the external API property file
+• Management of ONAP customer for add service action:
+With the current version of APIs used from SO and AAI we need to manage a ‘customer’. This customer concept is confusing with Customer BSS concept. We took the following rules to manage the ‘customer’ information:
+
+• It could be provided through a serviceOrder in the service Order a relatedParty with role ‘ONAPcustomer’ should be provided in the serviceOrder header (we will not consider in this release the party at item level); External API component will check if this customer exists and create it in AAI if not.
+• If no relatedParty are provided the service will be affected to ‘generic’ customer (dummy customer) – we assume this ‘generic’ customer always exists.
+
+• Additionally nbi will create in AAI the service-type if it did not exists for the customer
+
+• Integration is done at service-level: nbi will trigger only SO request at serviceInstance level --> ONAP prerequisite: SO must be able to find a BPMN to process service fulfillment (integrate vnf, vnf activation in SDNC, VF module
+
+• State management: States are only managed by ServiceOrder component and could not be updated from north side via API. Accordingly to service order item fulfillment progress, order item state are updated. Order state is automatically updated based on item state.
+
+
+***************
+Developer Guide
+***************
+
+Technical information about NBI (dependancies, configuration, running & testing) could be found here: `DevDoc <NBI_R1_Developer_Guide.rst>`_
+
+
+
+
+
+
+
diff --git a/docs/offeredapis/images/ONAP External ID Beijing.jpg b/docs/offeredapis/images/ONAP External ID Beijing.jpg
new file mode 100644
index 0000000..8fbd4ab
--- /dev/null
+++ b/docs/offeredapis/images/ONAP External ID Beijing.jpg
Binary files differ
diff --git a/docs/offeredapis/images/ONAP_External_ID_Beijing.jpg b/docs/offeredapis/images/ONAP_External_ID_Beijing.jpg
new file mode 100644
index 0000000..8fbd4ab
--- /dev/null
+++ b/docs/offeredapis/images/ONAP_External_ID_Beijing.jpg
Binary files differ
diff --git a/docs/offeredapis/images/html.png b/docs/offeredapis/images/html.png
new file mode 100644
index 0000000..f1bda88
--- /dev/null
+++ b/docs/offeredapis/images/html.png
Binary files differ
diff --git a/docs/offeredapis/images/pdf.png b/docs/offeredapis/images/pdf.png
new file mode 100644
index 0000000..fed52f9
--- /dev/null
+++ b/docs/offeredapis/images/pdf.png
Binary files differ
diff --git a/docs/offeredapis/images/postman.png b/docs/offeredapis/images/postman.png
new file mode 100644
index 0000000..cab386c
--- /dev/null
+++ b/docs/offeredapis/images/postman.png
Binary files differ
diff --git a/docs/offeredapis/images/swagger.png b/docs/offeredapis/images/swagger.png
new file mode 100644
index 0000000..f5a9e0c
--- /dev/null
+++ b/docs/offeredapis/images/swagger.png
Binary files differ
diff --git a/docs/offeredapis/images/swaggerUI.png b/docs/offeredapis/images/swaggerUI.png
new file mode 100644
index 0000000..f5a9e0c
--- /dev/null
+++ b/docs/offeredapis/images/swaggerUI.png
Binary files differ
diff --git a/docs/offeredapis/images/uml.jpg b/docs/offeredapis/images/uml.jpg
new file mode 100644
index 0000000..d288c6c
--- /dev/null
+++ b/docs/offeredapis/images/uml.jpg
Binary files differ
diff --git a/docs/offeredapis/postman/ONAPBeijingServiceOrderDoc.postman_collection.json b/docs/offeredapis/postman/ONAPBeijingServiceOrderDoc.postman_collection.json
new file mode 100644
index 0000000..92a16eb
--- /dev/null
+++ b/docs/offeredapis/postman/ONAPBeijingServiceOrderDoc.postman_collection.json
@@ -0,0 +1,61 @@
+{
+ "variables": [],
+ "info": {
+ "name": "ONAP Beijing ServiceOrder Doc",
+ "_postman_id": "d88ad75d-6fae-13ea-d63c-cac1f445a1bf",
+ "description": "",
+ "schema": "https://schema.getpostman.com/json/collection/v2.0.0/collection.json"
+ },
+ "item": [
+ {
+ "name": "ServiceOrder1",
+ "request": {
+ "url": "{nbiHostName}:{nbiPort}/nbi/api/v1/serviceOrder",
+ "method": "POST",
+ "header": [
+ {
+ "key": "Accept",
+ "value": "application/json",
+ "description": ""
+ },
+ {
+ "key": "Content-Type",
+ "value": "application/json",
+ "description": ""
+ }
+ ],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"externalId\": \"NBI-SO001\",\n \"priority\": \"1\",\n \"description\": \"Firevall service ordering on customer specified\",\n \"category\": \"Consumer\",\n \"requestedStartDate\": \"2018-02-28T13:33:37.299Z\",\n \"requestedCompletionDate\": \"2018-02-28T13:33:37.299Z\",\n \"relatedParty\": [\n {\n \"id\": \"6490\",\n \"role\": \"ONAPcustomer\",\n \"name\": \"Jean Pontus\",\n \"@referredType\": \"individual\"\n }\n ],\n \"orderItem\": [\n {\n \"id\": \"1\",\n \"action\": \"add\",\n \"service\": {\n \"id\": \"vFW0001\",\n \"serviceState\": \"active\",\n \"serviceSpecification\": {\n \"id\": \"3dd3923d-1681-4f5b-99bb-f695ab147004\"\n }\n }\n }\n ]\n}"
+ },
+ "description": ""
+ },
+ "response": []
+ },
+ {
+ "name": "ServiceOrder2",
+ "request": {
+ "url": "http://127.0.0.1:8090/serviceOrder",
+ "method": "POST",
+ "header": [
+ {
+ "key": "Accept",
+ "value": "application/json",
+ "description": ""
+ },
+ {
+ "key": "Content-Type",
+ "value": "application/json",
+ "description": ""
+ }
+ ],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"externalId\": \"NBI-SO002\",\n \"priority\": \"1\",\n \"description\": \"Firevall service ordering on customer not specified - added to generic customer\",\n \"category\": \"Consumer\",\n \"requestedStartDate\": \"2018-02-28T13:33:37.299Z\",\n \"requestedCompletionDate\": \"2018-02-28T13:33:37.299Z\",\n \"orderItem\": [\n {\n \"id\": \"1\",\n \"action\": \"add\",\n \"service\": {\n \"id\": \"vFW0002\",\n \"serviceState\": \"active\",\n \"serviceSpecification\": {\n \"id\": \"3dd3923d-1681-4f5b-99bb-f695ab147004\"\n }\n }\n }\n ]\n}"
+ },
+ "description": ""
+ },
+ "response": []
+ }
+ ]
+} \ No newline at end of file
diff --git a/docs/offeredapis/serviceCatalog/apiServiceCatalog.plantuml b/docs/offeredapis/serviceCatalog/apiServiceCatalog.plantuml
new file mode 100644
index 0000000..8483238
--- /dev/null
+++ b/docs/offeredapis/serviceCatalog/apiServiceCatalog.plantuml
@@ -0,0 +1,110 @@
+@startuml
+
+enum LifecycleStatusValues {
+ NOT_CERTIFIED_CHECKOUT
+ NOT_CERTIFIED_CHECKIN
+ READY_FOR_CERTIFICATION
+ CERTIFICATION_IN_PROGRESS
+ CERTIFIED
+}
+enum DistributionStatus {
+ DISTRIBUTION_NOT_APPROVED
+ DISTRIBUTION_APPROVED
+ DISTRIBUTED
+ DISTRIBUTION_REJECTED
+}
+
+class ErrorRepresentation {
+ code:int
+ reason:string
+ message:string
+ status:string
+ referenceErrror:string
+ @type:string
+ @schemaLocation:string
+}
+
+class TimePeriod {
+ startDateTime:dateTime
+ endDateTime:dateTime
+}
+
+class RelatedPartyRef {
+ id:string
+ role:string
+ name:string
+}
+
+class ServiceSpecification {
+ id:string
+ href:string
+ name:string
+ description:string
+ @type:string
+ @schemaLocation:string
+ @baseType:string
+ invariantUUID:string
+ toscaModelURL:string
+ toscaResourceName:string
+ category:string
+ subcategory:string
+ version:string
+}
+ ServiceSpecification --> "0-1" DistributionStatus : distributionStatus
+ ServiceSpecification --> "0-1" LifecycleStatusValues : lifecycleStatus
+ ServiceSpecification --> "0-1" TargetServiceSchemaRef : targetServiceSchema
+ ServiceSpecification --> "0-*" Attachment : attachment
+ ServiceSpecification --> "0-*" RelatedPartyRef : relatedParty
+ ServiceSpecification --> "0-*" ResourceSpecificationRef : resourceSpecification
+ ServiceSpecification --> "0-*" ServiceSpecCharacteristic : serviceSpecCharacteristic
+
+class ServiceSpecCharacteristic {
+ name:string
+ description:string
+ valueType:string
+ @type:string
+ @schemaLocation:string
+ required:boolean
+ status:string
+}
+ ServiceSpecCharacteristic --> "0-*" ServiceSpecCharacteristicValue : serviceSpecCharacteristicValue
+
+class Attachment {
+ id:string
+ name:string
+ description:string
+ @type:string
+ artifactLabel:string
+ artifactGroupType:string
+ artifactTimeout:string
+ artifactChecksum:string
+ artifactVersion:string
+ generatedFromUUID:string
+ url:string
+ mimeType:string
+}
+
+class ServiceSpecCharacteristicValue {
+ valueType:string
+ isDefault:boolean
+ value:string
+}
+
+class ResourceSpecificationRef {
+ id:string
+ version:string
+ name:string
+ @type:string
+ resourceInstanceName:string
+ resourceInvariantUUID:string
+ resourceType:string
+ modelCustomizationName:string
+ modelCustomizationId:string
+}
+
+class TargetServiceSchemaRef {
+ @type:string
+ @schemaLocation:string
+}
+
+@enduml \ No newline at end of file
diff --git a/docs/offeredapis/serviceCatalog/asciiDoc.adoc b/docs/offeredapis/serviceCatalog/asciiDoc.adoc
new file mode 100644
index 0000000..327f239
--- /dev/null
+++ b/docs/offeredapis/serviceCatalog/asciiDoc.adoc
@@ -0,0 +1,487 @@
+= API ServiceCatalog
+
+
+[[_overview]]
+== Overview
+
+=== Api URL
+
+https://api-designer.sso.infra.ftgroup/swagger-ui/?url=https://api-designer.sso.infra.ftgroup/api/1.0/apis/N3ma89X1x0/swagger.json[Swagger UI]
+
+
+https://plantuml.rd.francetelecom.fr/proxy?fmt=svg&src=https://api-designer.sso.infra.ftgroup/api/1.0/apis/N3ma89X1x0/plantuml&noCache=797767.0[plant UML UI]
+
+serviceCatalog API designed for ONAP Beijing Release.
+This API is build from TMF open API17.5.
+Only operation GET (by id &amp; byList) for resource serviceSpecification is available
+
+
+=== Version information
+[%hardbreaks]
+__Version__ : 1.0.0_inProgress
+
+
+=== URI scheme
+[%hardbreaks]
+__Host__ : serverRoot
+__BasePath__ : /nbi/api/v1
+__Schemes__ : HTTPS
+
+
+=== Tags
+
+* ServiceSpecification
+
+
+=== Consumes
+
+* `application/json;charset=utf-8`
+
+
+=== Produces
+
+* `application/json;charset=utf-8`
+
+
+[[_paths]]
+== Resources
+
+[[_servicespecification_resource]]
+=== ServiceSpecification
+
+[[_servicespecificationfind]]
+==== List service specifications
+....
+GET /serviceSpecification
+....
+
+
+===== Description
+This operation returns service specifications from a catalog.
+Only a predefined set of attribute is proposed : Based on SDC limitations, only attributes category and distributionStatus are available for serviceSpecification filtering
+Fields attribute could be used to filter attributes retrieved
+
+Specific business errors for current operation will be encapsulated in
+
+HTTP Response 422 Unprocessable entity
+
+
+===== Parameters
+
+[options="header", cols=".^2,.^3,.^9,.^4"]
+|===
+|Type|Name|Description|Schema
+|**Query**|**category** +
+__optional__|Service Category (filter)|string
+|**Query**|**distributionStatus** +
+__optional__|Service distribution status (filter)|string
+|**Query**|**fields** +
+__optional__|Field selection - used to filtering the attributes to be retreived|string
+|===
+
+
+===== Responses
+
+[options="header", cols=".^2,.^14,.^4"]
+|===
+|HTTP Code|Description|Schema
+|**200**|Success|< <<_servicespecification,ServiceSpecification>> > array
+|**400**|Bad Request
+
+List of supported error codes:
+- 20: Invalid URL parameter value
+- 21: Missing body
+- 22: Invalid body
+- 23: Missing body field
+- 24: Invalid body field
+- 25: Missing header
+- 26: Invalid header value
+- 27: Missing query-string parameter
+- 28: Invalid query-string parameter value|<<_errorrepresentation,ErrorRepresentation>>
+|**401**|Unauthorized
+
+List of supported error codes:
+- 40: Missing credentials
+- 41: Invalid credentials
+- 42: Expired credentials|<<_errorrepresentation,ErrorRepresentation>>
+|**403**|Forbidden
+
+List of supported error codes:
+- 50: Access denied
+- 51: Forbidden requester
+- 52: Forbidden user
+- 53: Too many requests|<<_errorrepresentation,ErrorRepresentation>>
+|**404**|Not Found
+
+List of supported error codes:
+- 60: Resource not found|<<_errorrepresentation,ErrorRepresentation>>
+|**422**|Unprocessable entity
+
+Functional error|<<_errorrepresentation,ErrorRepresentation>>
+|**500**|Internal Server Error
+
+List of supported error codes:
+- 1: Internal error|<<_errorrepresentation,ErrorRepresentation>>
+|**503**|Service Unavailable
+
+List of supported error codes:
+- 5: The service is temporarily unavailable
+- 6: Orange API is over capacity, retry later !|<<_errorrepresentation,ErrorRepresentation>>
+|===
+
+
+[[_servicespecificationget]]
+==== Retrieve a service specification
+....
+GET /serviceSpecification/{id}
+....
+
+
+===== Description
+This operation returns a service specification by its id from a catalog. Attribute selection is enabled using the fields attribute.
+
+Specific business errors for current operation will be encapsulated in
+
+HTTP Response 422 Unprocessable entity
+
+
+===== Parameters
+
+[options="header", cols=".^2,.^3,.^9,.^4"]
+|===
+|Type|Name|Description|Schema
+|**Path**|**id** +
+__required__||string
+|**Query**|**fields** +
+__optional__|Attribute selection|string
+|===
+
+
+===== Responses
+
+[options="header", cols=".^2,.^14,.^4"]
+|===
+|HTTP Code|Description|Schema
+|**200**|Success|<<_servicespecification,ServiceSpecification>>
+|**400**|Bad Request
+
+List of supported error codes:
+- 20: Invalid URL parameter value
+- 21: Missing body
+- 22: Invalid body
+- 23: Missing body field
+- 24: Invalid body field
+- 25: Missing header
+- 26: Invalid header value
+- 27: Missing query-string parameter
+- 28: Invalid query-string parameter value|<<_errorrepresentation,ErrorRepresentation>>
+|**401**|Unauthorized
+
+List of supported error codes:
+- 40: Missing credentials
+- 41: Invalid credentials
+- 42: Expired credentials|<<_errorrepresentation,ErrorRepresentation>>
+|**403**|Forbidden
+
+List of supported error codes:
+- 50: Access denied
+- 51: Forbidden requester
+- 52: Forbidden user
+- 53: Too many requests|<<_errorrepresentation,ErrorRepresentation>>
+|**404**|Not Found
+
+List of supported error codes:
+- 60: Resource not found|<<_errorrepresentation,ErrorRepresentation>>
+|**422**|Unprocessable entity
+
+Functional error|<<_errorrepresentation,ErrorRepresentation>>
+|**500**|Internal Server Error
+
+List of supported error codes:
+- 1: Internal error|<<_errorrepresentation,ErrorRepresentation>>
+|**503**|Service Unavailable
+
+List of supported error codes:
+- 5: The service is temporarily unavailable
+- 6: Orange API is over capacity, retry later !|<<_errorrepresentation,ErrorRepresentation>>
+|===
+
+
+[[_definitions]]
+== Definitions
+
+[[_attachment]]
+=== Attachment
+An attachment is a file uses to describe the service.
+In nbi we use attachment to retrieve ONAP artifacts.
+
+
+[options="header", cols=".^3,.^11,.^4"]
+|===
+|Name|Description|Schema
+|**@type** +
+__optional__|This attribute allows to dynamically extends TMF class. Valued with 'ONAPartifact'. We used this features to add following attributes:
+artifactLabel
+artifactGroupType
+artifactTimeout
+artifactChecksum
+artifactVersion
+generatedFromUUID +
+**Default** : `"ONAPartifact"`|string
+|**artifactChecksum** +
+__optional__|Additional attribute (not in the TMF API) - extended through @type - artifactChecksum|string
+|**artifactGroupType** +
+__optional__|Additional attribute (not in the TMF API) - extended through @type - artifactGroupType|string
+|**artifactLabel** +
+__optional__|Additional attribute (not in the TMF API) - extended through @type - artifactLabel|string
+|**artifactTimeout** +
+__optional__|Additional attribute (not in the TMF API) - extended through @type - artifactTimeout|string
+|**artifactVersion** +
+__optional__|Additional attribute (not in the TMF API) - extended through @type - artifactVersion|string
+|**description** +
+__optional__|Description of the attachment - filled with artifactDescription|string
+|**generatedFromUUID** +
+__optional__|Additional attribute (not in the TMF API) - extended through @type - generatedFromUUID|string
+|**id** +
+__optional__|Unique identifier of the attachment - filled with artifactUUID.|string
+|**mimeType** +
+__optional__|Filled with artifactType|string
+|**name** +
+__optional__|Name of the attachment - filled with artifactName|string
+|**url** +
+__optional__|Uniform Resource Locator, is a web page address - filled with artifactURL|string
+|===
+
+
+[[_distributionstatus]]
+=== DistributionStatus
+Service distribution status from ONAP.
+
+__Type__ : enum (DISTRIBUTION_NOT_APPROVED, DISTRIBUTION_APPROVED, DISTRIBUTED, DISTRIBUTION_REJECTED)
+
+
+[[_errorrepresentation]]
+=== ErrorRepresentation
+This class is used to describe error.
+for nbi Beijing release we do not manage additional error for serviceCatalog
+
+
+[options="header", cols=".^3,.^11,.^4"]
+|===
+|Name|Description|Schema
+|**@schemaLocation** +
+__optional__|it provides a link to the schema describing a REST resource.|string
+|**@type** +
+__optional__|The class type of a REST resource.|string
+|**code** +
+__required__|Application related code (as defined in the API or from a common list)|integer (int32)
+|**message** +
+__optional__|Text that provide more details and corrective actions related to the error. This can be shown to a client user|string
+|**reason** +
+__required__|Text that explains the reason for error. This can be shown to a client user.|string
+|**referenceErrror** +
+__optional__|url pointing to documentation describing the error|string
+|**status** +
+__optional__|http error code extension like 400-2|string
+|===
+
+
+[[_lifecyclestatusvalues]]
+=== LifecycleStatusValues
+Service lifecycle value from ONAP SDC
+
+__Type__ : enum (NOT_CERTIFIED_CHECKOUT, NOT_CERTIFIED_CHECKIN, READY_FOR_CERTIFICATION, CERTIFICATION_IN_PROGRESS, CERTIFIED)
+
+
+[[_relatedpartyref]]
+=== RelatedPartyRef
+Party linked to the service catalog.
+in nbi we retrieve information about last updater of the service in SDC
+
+
+[options="header", cols=".^3,.^11,.^4"]
+|===
+|Name|Description|Schema
+|**id** +
+__optional__|Unique identifier of the related party. Filled with lastUpdaterUserId|string
+|**name** +
+__optional__|Name of the related party - Filled with lastUpdatedFullName|string
+|**role** +
+__optional__|Role payed by the related party
+Only role 'lastUpdater' is retrieved in Beijing release|string
+|===
+
+
+[[_resourcespecificationref]]
+=== ResourceSpecificationRef
+A list of resourceSpec identified to deliver the service.
+for nbi we retrieve resource information available in service description (through SDC api) bu as well information retrieved in the TOSCA file.
+
+
+[options="header", cols=".^3,.^11,.^4"]
+|===
+|Name|Description|Schema
+|**@type** +
+__optional__|This attribute allows to dynamically extends TMF class. Valued with: 'ONAPresource'. We used this features to add following attributes:
+resourceInstanceName
+resourceInvariantUUID
+resourceType
+modelCustomizationName
+modelCustomizationId +
+**Default** : `"ONAPresource"`|string
+|**id** +
+__optional__|Unique identifier of the resource specification - filled with resourceUUID|string
+|**modelCustomizationId** +
+__optional__|Additional attribute (not in the TMF API) - extended through @type - Retrieved in the TOSCA file : attribute customizationUUID in topology_template/node_template for the resource|string
+|**modelCustomizationName** +
+__optional__|Additional attribute (not in the TMF API) - extended through @type - Retrieved in the TOSCA file : attribute name in topology_template/node_template for the resource|string
+|**name** +
+__optional__|Name of the resource specification - filled with resourceName|string
+|**resourceInstanceName** +
+__optional__|Additional attribute (not in the TMF API) - extended through @type - resourceInstanceName|string
+|**resourceInvariantUUID** +
+__optional__|Additional attribute (not in the TMF API) - extended through @type - resourceInvariantUUID|string
+|**resourceType** +
+__optional__|Additional attribute (not in the TMF API) - extended through @type - resoucreType|string
+|**version** +
+__optional__|Version for this resource specification - filled with resourceVersion|string
+|===
+
+
+[[_servicespeccharacteristic]]
+=== ServiceSpecCharacteristic
+A characteristic quality or distinctive feature of a ServiceSpecification.
+ServiceSpecCharacteristic are retrieved in the serviceTosca file in the topology_template section in the inputs section.
+
+
+[options="header", cols=".^3,.^11,.^4"]
+|===
+|Name|Description|Schema
+|**@schemaLocation** +
+__optional__|An url pointing to type description - we do not use it in nbi Beijing release|string
+|**@type** +
+__optional__|This attribute allows to dynamically extends TMF class. Valued with: 'ONAPserviceCharacteristic'. We do not used this features in nbi Beijing release.|string
+|**description** +
+__optional__|A narrative that explains in detail what the characteristic is - Filled with parameter_description|string
+|**name** +
+__optional__|Name of the characteristic - Filled with parameter_name|string
+|**required** +
+__optional__|A parameter to define if the characteristic is mandatory - Filled from parameter_required – if not fielded by default ‘true’ +
+**Default** : `true`|boolean
+|**serviceSpecCharacteristicValue** +
+__optional__||< <<_servicespeccharacteristicvalue,ServiceSpecCharacteristicValue>> > array
+|**status** +
+__optional__|Status of the characteristic - filled with status_value|string
+|**valueType** +
+__optional__|A kind of value that the characteristic can take on, such as numeric, text and so forth - Filled with parameter_type|string
+|===
+
+
+[[_servicespeccharacteristicvalue]]
+=== ServiceSpecCharacteristicValue
+A number or text that can be assigned to a service specification characteristic.
+ServiceSpecCharacteristicValue are retrieved in the service Tosca file
+
+
+[options="header", cols=".^3,.^11,.^4"]
+|===
+|Name|Description|Schema
+|**isDefault** +
+__optional__|Information calculated from parameter default in the Tosca file|boolean
+|**value** +
+__optional__|A discrete value that the characteristic can take on|string
+|**valueType** +
+__optional__|A kind of value that the characteristic can take on, such as numeric, text, and so forth
+Retrieved in the Tosca in the topology_template section in the inputs section - parameter_type.
+We do not manage parameter_type= list or map for Beijing release|string
+|===
+
+
+[[_servicespecification]]
+=== ServiceSpecification
+ServiceSpecification is a class that offers characteristics to describe a type of service. Functionally, it acts as a template by which Services may be instantiated. By sharing the same specification, these services would therefore share the same set of characteristics.
+the service information are retrieved in SDC
+
+
+[options="header", cols=".^3,.^11,.^4"]
+|===
+|Name|Description|Schema
+|**@baseType** +
+__optional__|Not used for Beijing release|string
+|**@schemaLocation** +
+__optional__|Not used for Beijing release|string
+|**@type** +
+__optional__|This attribute allows to dynamically extends TMF class. Valued with 'ONAPservice'. We used this features to add following attributes:
+invariantUUID
+toscaModelURL
+toscaResourceName
+category (1)
+subcategory (1)
+distributionStatus +
+**Default** : `"ONAPservice"`|string
+|**attachment** +
+__optional__||< <<_attachment,Attachment>> > array
+|**category** +
+__optional__|Additional attribute - extended through @type - category
+Please note that this attribute is managed in TMF - in future release we'll introduce category resource|string
+|**description** +
+__optional__|A narrative that explains in detail what the service specification is - Filled with SDC Service description|string
+|**distributionStatus** +
+__optional__||<<_distributionstatus,DistributionStatus>>
+|**href** +
+__optional__|Reference of the service specification- not mapped in Beijing|string
+|**id** +
+__optional__|Unique identifier of the service specification. Filled with SDC Service uuid|string
+|**invariantUUID** +
+__required__|Additional attribute (not in the TMF API) - extended through @type - invariantUUID|string
+|**lifecycleStatus** +
+__optional__||<<_lifecyclestatusvalues,LifecycleStatusValues>>
+|**name** +
+__optional__|Name of the service specification- Filled with SDC Service name|string
+|**relatedParty** +
+__optional__||< <<_relatedpartyref,RelatedPartyRef>> > array
+|**resourceSpecification** +
+__optional__||< <<_resourcespecificationref,ResourceSpecificationRef>> > array
+|**serviceSpecCharacteristic** +
+__optional__||< <<_servicespeccharacteristic,ServiceSpecCharacteristic>> > array
+|**subcategory** +
+__optional__|Additional attribute - extended through @type - category
+Please note that this attribute is managed in TMF - in future release we'll introduce category resourc|string
+|**targetServiceSchema** +
+__optional__||<<_targetserviceschemaref,TargetServiceSchemaRef>>
+|**toscaModelURL** +
+__optional__|Additional attribute (not in the TMF API) - extended through @type - toscaModelURL|string
+|**toscaResourceName** +
+__optional__|Additional attribute (not in the TMF API) - extended through @type - toscaResourceName|string
+|**version** +
+__optional__|Service specification version - Filled with SDC Service version|string
+|===
+
+
+[[_targetserviceschemaref]]
+=== TargetServiceSchemaRef
+
+[options="header", cols=".^3,.^4"]
+|===
+|Name|Schema
+|**@schemaLocation** +
+__required__|string
+|**@type** +
+__required__|string
+|===
+
+
+[[_timeperiod]]
+=== TimePeriod
+A time period
+
+
+[options="header", cols=".^3,.^11,.^4"]
+|===
+|Name|Description|Schema
+|**endDateTime** +
+__optional__|End date and time of the period|string (date-time)
+|**startDateTime** +
+__optional__|Start date and time of the period|string (date-time)
+|===
+
diff --git a/docs/offeredapis/serviceCatalog/documentation.html b/docs/offeredapis/serviceCatalog/documentation.html
new file mode 100644
index 0000000..b1ea44a
--- /dev/null
+++ b/docs/offeredapis/serviceCatalog/documentation.html
@@ -0,0 +1,1473 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+<meta charset="UTF-8">
+<!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=edge"><![endif]-->
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<meta name="generator" content="Asciidoctor 1.5.6.1">
+<title>API ServiceCatalog</title>
+<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Open+Sans:300,300italic,400,400italic,600,600italic%7CNoto+Serif:400,400italic,700,700italic%7CDroid+Sans+Mono:400,700">
+<style>
+/* Asciidoctor default stylesheet | MIT License | http://asciidoctor.org */
+/* Remove comment around @import statement below when using as a custom stylesheet */
+/*@import "https://fonts.googleapis.com/css?family=Open+Sans:300,300italic,400,400italic,600,600italic%7CNoto+Serif:400,400italic,700,700italic%7CDroid+Sans+Mono:400,700";*/
+article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}
+audio,canvas,video{display:inline-block}
+audio:not([controls]){display:none;height:0}
+[hidden],template{display:none}
+script{display:none!important}
+html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}
+a{background:transparent}
+a:focus{outline:thin dotted}
+a:active,a:hover{outline:0}
+h1{font-size:2em;margin:.67em 0}
+abbr[title]{border-bottom:1px dotted}
+b,strong{font-weight:bold}
+dfn{font-style:italic}
+hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}
+mark{background:#ff0;color:#000}
+code,kbd,pre,samp{font-family:monospace;font-size:1em}
+pre{white-space:pre-wrap}
+q{quotes:"\201C" "\201D" "\2018" "\2019"}
+small{font-size:80%}
+sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}
+sup{top:-.5em}
+sub{bottom:-.25em}
+img{border:0}
+svg:not(:root){overflow:hidden}
+figure{margin:0}
+fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}
+legend{border:0;padding:0}
+button,input,select,textarea{font-family:inherit;font-size:100%;margin:0}
+button,input{line-height:normal}
+button,select{text-transform:none}
+button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}
+button[disabled],html input[disabled]{cursor:default}
+input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0}
+input[type="search"]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}
+input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}
+button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}
+textarea{overflow:auto;vertical-align:top}
+table{border-collapse:collapse;border-spacing:0}
+*,*:before,*:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}
+html,body{font-size:100%}
+body{background:#fff;color:rgba(0,0,0,.8);padding:0;margin:0;font-family:"Noto Serif","DejaVu Serif",serif;font-weight:400;font-style:normal;line-height:1;position:relative;cursor:auto;tab-size:4;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased}
+a:hover{cursor:pointer}
+img,object,embed{max-width:100%;height:auto}
+object,embed{height:100%}
+img{-ms-interpolation-mode:bicubic}
+.left{float:left!important}
+.right{float:right!important}
+.text-left{text-align:left!important}
+.text-right{text-align:right!important}
+.text-center{text-align:center!important}
+.text-justify{text-align:justify!important}
+.hide{display:none}
+img,object,svg{display:inline-block;vertical-align:middle}
+textarea{height:auto;min-height:50px}
+select{width:100%}
+.center{margin-left:auto;margin-right:auto}
+.spread{width:100%}
+p.lead,.paragraph.lead>p,#preamble>.sectionbody>.paragraph:first-of-type p{font-size:1.21875em;line-height:1.6}
+.subheader,.admonitionblock td.content>.title,.audioblock>.title,.exampleblock>.title,.imageblock>.title,.listingblock>.title,.literalblock>.title,.stemblock>.title,.openblock>.title,.paragraph>.title,.quoteblock>.title,table.tableblock>.title,.verseblock>.title,.videoblock>.title,.dlist>.title,.olist>.title,.ulist>.title,.qlist>.title,.hdlist>.title{line-height:1.45;color:#7a2518;font-weight:400;margin-top:0;margin-bottom:.25em}
+div,dl,dt,dd,ul,ol,li,h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6,pre,form,p,blockquote,th,td{margin:0;padding:0;direction:ltr}
+a{color:#2156a5;text-decoration:underline;line-height:inherit}
+a:hover,a:focus{color:#1d4b8f}
+a img{border:none}
+p{font-family:inherit;font-weight:400;font-size:1em;line-height:1.6;margin-bottom:1.25em;text-rendering:optimizeLegibility}
+p aside{font-size:.875em;line-height:1.35;font-style:italic}
+h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{font-family:"Open Sans","DejaVu Sans",sans-serif;font-weight:300;font-style:normal;color:#ba3925;text-rendering:optimizeLegibility;margin-top:1em;margin-bottom:.5em;line-height:1.0125em}
+h1 small,h2 small,h3 small,#toctitle small,.sidebarblock>.content>.title small,h4 small,h5 small,h6 small{font-size:60%;color:#e99b8f;line-height:0}
+h1{font-size:2.125em}
+h2{font-size:1.6875em}
+h3,#toctitle,.sidebarblock>.content>.title{font-size:1.375em}
+h4,h5{font-size:1.125em}
+h6{font-size:1em}
+hr{border:solid #ddddd8;border-width:1px 0 0;clear:both;margin:1.25em 0 1.1875em;height:0}
+em,i{font-style:italic;line-height:inherit}
+strong,b{font-weight:bold;line-height:inherit}
+small{font-size:60%;line-height:inherit}
+code{font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;font-weight:400;color:rgba(0,0,0,.9)}
+ul,ol,dl{font-size:1em;line-height:1.6;margin-bottom:1.25em;list-style-position:outside;font-family:inherit}
+ul,ol{margin-left:1.5em}
+ul li ul,ul li ol{margin-left:1.25em;margin-bottom:0;font-size:1em}
+ul.square li ul,ul.circle li ul,ul.disc li ul{list-style:inherit}
+ul.square{list-style-type:square}
+ul.circle{list-style-type:circle}
+ul.disc{list-style-type:disc}
+ol li ul,ol li ol{margin-left:1.25em;margin-bottom:0}
+dl dt{margin-bottom:.3125em;font-weight:bold}
+dl dd{margin-bottom:1.25em}
+abbr,acronym{text-transform:uppercase;font-size:90%;color:rgba(0,0,0,.8);border-bottom:1px dotted #ddd;cursor:help}
+abbr{text-transform:none}
+blockquote{margin:0 0 1.25em;padding:.5625em 1.25em 0 1.1875em;border-left:1px solid #ddd}
+blockquote cite{display:block;font-size:.9375em;color:rgba(0,0,0,.6)}
+blockquote cite:before{content:"\2014 \0020"}
+blockquote cite a,blockquote cite a:visited{color:rgba(0,0,0,.6)}
+blockquote,blockquote p{line-height:1.6;color:rgba(0,0,0,.85)}
+@media only screen and (min-width:768px){h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2}
+h1{font-size:2.75em}
+h2{font-size:2.3125em}
+h3,#toctitle,.sidebarblock>.content>.title{font-size:1.6875em}
+h4{font-size:1.4375em}}
+table{background:#fff;margin-bottom:1.25em;border:solid 1px #dedede}
+table thead,table tfoot{background:#f7f8f7;font-weight:bold}
+table thead tr th,table thead tr td,table tfoot tr th,table tfoot tr td{padding:.5em .625em .625em;font-size:inherit;color:rgba(0,0,0,.8);text-align:left}
+table tr th,table tr td{padding:.5625em .625em;font-size:inherit;color:rgba(0,0,0,.8)}
+table tr.even,table tr.alt,table tr:nth-of-type(even){background:#f8f8f7}
+table thead tr th,table tfoot tr th,table tbody tr td,table tr td,table tfoot tr td{display:table-cell;line-height:1.6}
+h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2;word-spacing:-.05em}
+h1 strong,h2 strong,h3 strong,#toctitle strong,.sidebarblock>.content>.title strong,h4 strong,h5 strong,h6 strong{font-weight:400}
+.clearfix:before,.clearfix:after,.float-group:before,.float-group:after{content:" ";display:table}
+.clearfix:after,.float-group:after{clear:both}
+*:not(pre)>code{font-size:.9375em;font-style:normal!important;letter-spacing:0;padding:.1em .5ex;word-spacing:-.15em;background-color:#f7f7f8;-webkit-border-radius:4px;border-radius:4px;line-height:1.45;text-rendering:optimizeSpeed;word-wrap:break-word}
+*:not(pre)>code.nobreak{word-wrap:normal}
+*:not(pre)>code.nowrap{white-space:nowrap}
+pre,pre>code{line-height:1.45;color:rgba(0,0,0,.9);font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;font-weight:400;text-rendering:optimizeSpeed}
+em em{font-style:normal}
+strong strong{font-weight:400}
+.keyseq{color:rgba(51,51,51,.8)}
+kbd{font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;display:inline-block;color:rgba(0,0,0,.8);font-size:.65em;line-height:1.45;background-color:#f7f7f7;border:1px solid #ccc;-webkit-border-radius:3px;border-radius:3px;-webkit-box-shadow:0 1px 0 rgba(0,0,0,.2),0 0 0 .1em white inset;box-shadow:0 1px 0 rgba(0,0,0,.2),0 0 0 .1em #fff inset;margin:0 .15em;padding:.2em .5em;vertical-align:middle;position:relative;top:-.1em;white-space:nowrap}
+.keyseq kbd:first-child{margin-left:0}
+.keyseq kbd:last-child{margin-right:0}
+.menuseq,.menuref{color:#000}
+.menuseq b:not(.caret),.menuref{font-weight:inherit}
+.menuseq{word-spacing:-.02em}
+.menuseq b.caret{font-size:1.25em;line-height:.8}
+.menuseq i.caret{font-weight:bold;text-align:center;width:.45em}
+b.button:before,b.button:after{position:relative;top:-1px;font-weight:400}
+b.button:before{content:"[";padding:0 3px 0 2px}
+b.button:after{content:"]";padding:0 2px 0 3px}
+p a>code:hover{color:rgba(0,0,0,.9)}
+#header,#content,#footnotes,#footer{width:100%;margin-left:auto;margin-right:auto;margin-top:0;margin-bottom:0;max-width:62.5em;*zoom:1;position:relative;padding-left:.9375em;padding-right:.9375em}
+#header:before,#header:after,#content:before,#content:after,#footnotes:before,#footnotes:after,#footer:before,#footer:after{content:" ";display:table}
+#header:after,#content:after,#footnotes:after,#footer:after{clear:both}
+#content{margin-top:1.25em}
+#content:before{content:none}
+#header>h1:first-child{color:rgba(0,0,0,.85);margin-top:2.25rem;margin-bottom:0}
+#header>h1:first-child+#toc{margin-top:8px;border-top:1px solid #ddddd8}
+#header>h1:only-child,body.toc2 #header>h1:nth-last-child(2){border-bottom:1px solid #ddddd8;padding-bottom:8px}
+#header .details{border-bottom:1px solid #ddddd8;line-height:1.45;padding-top:.25em;padding-bottom:.25em;padding-left:.25em;color:rgba(0,0,0,.6);display:-ms-flexbox;display:-webkit-flex;display:flex;-ms-flex-flow:row wrap;-webkit-flex-flow:row wrap;flex-flow:row wrap}
+#header .details span:first-child{margin-left:-.125em}
+#header .details span.email a{color:rgba(0,0,0,.85)}
+#header .details br{display:none}
+#header .details br+span:before{content:"\00a0\2013\00a0"}
+#header .details br+span.author:before{content:"\00a0\22c5\00a0";color:rgba(0,0,0,.85)}
+#header .details br+span#revremark:before{content:"\00a0|\00a0"}
+#header #revnumber{text-transform:capitalize}
+#header #revnumber:after{content:"\00a0"}
+#content>h1:first-child:not([class]){color:rgba(0,0,0,.85);border-bottom:1px solid #ddddd8;padding-bottom:8px;margin-top:0;padding-top:1rem;margin-bottom:1.25rem}
+#toc{border-bottom:1px solid #efefed;padding-bottom:.5em}
+#toc>ul{margin-left:.125em}
+#toc ul.sectlevel0>li>a{font-style:italic}
+#toc ul.sectlevel0 ul.sectlevel1{margin:.5em 0}
+#toc ul{font-family:"Open Sans","DejaVu Sans",sans-serif;list-style-type:none}
+#toc li{line-height:1.3334;margin-top:.3334em}
+#toc a{text-decoration:none}
+#toc a:active{text-decoration:underline}
+#toctitle{color:#7a2518;font-size:1.2em}
+@media only screen and (min-width:768px){#toctitle{font-size:1.375em}
+body.toc2{padding-left:15em;padding-right:0}
+#toc.toc2{margin-top:0!important;background-color:#f8f8f7;position:fixed;width:15em;left:0;top:0;border-right:1px solid #efefed;border-top-width:0!important;border-bottom-width:0!important;z-index:1000;padding:1.25em 1em;height:100%;overflow:auto}
+#toc.toc2 #toctitle{margin-top:0;margin-bottom:.8rem;font-size:1.2em}
+#toc.toc2>ul{font-size:.9em;margin-bottom:0}
+#toc.toc2 ul ul{margin-left:0;padding-left:1em}
+#toc.toc2 ul.sectlevel0 ul.sectlevel1{padding-left:0;margin-top:.5em;margin-bottom:.5em}
+body.toc2.toc-right{padding-left:0;padding-right:15em}
+body.toc2.toc-right #toc.toc2{border-right-width:0;border-left:1px solid #efefed;left:auto;right:0}}
+@media only screen and (min-width:1280px){body.toc2{padding-left:20em;padding-right:0}
+#toc.toc2{width:20em}
+#toc.toc2 #toctitle{font-size:1.375em}
+#toc.toc2>ul{font-size:.95em}
+#toc.toc2 ul ul{padding-left:1.25em}
+body.toc2.toc-right{padding-left:0;padding-right:20em}}
+#content #toc{border-style:solid;border-width:1px;border-color:#e0e0dc;margin-bottom:1.25em;padding:1.25em;background:#f8f8f7;-webkit-border-radius:4px;border-radius:4px}
+#content #toc>:first-child{margin-top:0}
+#content #toc>:last-child{margin-bottom:0}
+#footer{max-width:100%;background-color:rgba(0,0,0,.8);padding:1.25em}
+#footer-text{color:rgba(255,255,255,.8);line-height:1.44}
+.sect1{padding-bottom:.625em}
+@media only screen and (min-width:768px){.sect1{padding-bottom:1.25em}}
+.sect1+.sect1{border-top:1px solid #efefed}
+#content h1>a.anchor,h2>a.anchor,h3>a.anchor,#toctitle>a.anchor,.sidebarblock>.content>.title>a.anchor,h4>a.anchor,h5>a.anchor,h6>a.anchor{position:absolute;z-index:1001;width:1.5ex;margin-left:-1.5ex;display:block;text-decoration:none!important;visibility:hidden;text-align:center;font-weight:400}
+#content h1>a.anchor:before,h2>a.anchor:before,h3>a.anchor:before,#toctitle>a.anchor:before,.sidebarblock>.content>.title>a.anchor:before,h4>a.anchor:before,h5>a.anchor:before,h6>a.anchor:before{content:"\00A7";font-size:.85em;display:block;padding-top:.1em}
+#content h1:hover>a.anchor,#content h1>a.anchor:hover,h2:hover>a.anchor,h2>a.anchor:hover,h3:hover>a.anchor,#toctitle:hover>a.anchor,.sidebarblock>.content>.title:hover>a.anchor,h3>a.anchor:hover,#toctitle>a.anchor:hover,.sidebarblock>.content>.title>a.anchor:hover,h4:hover>a.anchor,h4>a.anchor:hover,h5:hover>a.anchor,h5>a.anchor:hover,h6:hover>a.anchor,h6>a.anchor:hover{visibility:visible}
+#content h1>a.link,h2>a.link,h3>a.link,#toctitle>a.link,.sidebarblock>.content>.title>a.link,h4>a.link,h5>a.link,h6>a.link{color:#ba3925;text-decoration:none}
+#content h1>a.link:hover,h2>a.link:hover,h3>a.link:hover,#toctitle>a.link:hover,.sidebarblock>.content>.title>a.link:hover,h4>a.link:hover,h5>a.link:hover,h6>a.link:hover{color:#a53221}
+.audioblock,.imageblock,.literalblock,.listingblock,.stemblock,.videoblock{margin-bottom:1.25em}
+.admonitionblock td.content>.title,.audioblock>.title,.exampleblock>.title,.imageblock>.title,.listingblock>.title,.literalblock>.title,.stemblock>.title,.openblock>.title,.paragraph>.title,.quoteblock>.title,table.tableblock>.title,.verseblock>.title,.videoblock>.title,.dlist>.title,.olist>.title,.ulist>.title,.qlist>.title,.hdlist>.title{text-rendering:optimizeLegibility;text-align:left;font-family:"Noto Serif","DejaVu Serif",serif;font-size:1rem;font-style:italic}
+table.tableblock>caption.title{white-space:nowrap;overflow:visible;max-width:0}
+.paragraph.lead>p,#preamble>.sectionbody>.paragraph:first-of-type p{color:rgba(0,0,0,.85)}
+table.tableblock #preamble>.sectionbody>.paragraph:first-of-type p{font-size:inherit}
+.admonitionblock>table{border-collapse:separate;border:0;background:none;width:100%}
+.admonitionblock>table td.icon{text-align:center;width:80px}
+.admonitionblock>table td.icon img{max-width:initial}
+.admonitionblock>table td.icon .title{font-weight:bold;font-family:"Open Sans","DejaVu Sans",sans-serif;text-transform:uppercase}
+.admonitionblock>table td.content{padding-left:1.125em;padding-right:1.25em;border-left:1px solid #ddddd8;color:rgba(0,0,0,.6)}
+.admonitionblock>table td.content>:last-child>:last-child{margin-bottom:0}
+.exampleblock>.content{border-style:solid;border-width:1px;border-color:#e6e6e6;margin-bottom:1.25em;padding:1.25em;background:#fff;-webkit-border-radius:4px;border-radius:4px}
+.exampleblock>.content>:first-child{margin-top:0}
+.exampleblock>.content>:last-child{margin-bottom:0}
+.sidebarblock{border-style:solid;border-width:1px;border-color:#e0e0dc;margin-bottom:1.25em;padding:1.25em;background:#f8f8f7;-webkit-border-radius:4px;border-radius:4px}
+.sidebarblock>:first-child{margin-top:0}
+.sidebarblock>:last-child{margin-bottom:0}
+.sidebarblock>.content>.title{color:#7a2518;margin-top:0;text-align:center}
+.exampleblock>.content>:last-child>:last-child,.exampleblock>.content .olist>ol>li:last-child>:last-child,.exampleblock>.content .ulist>ul>li:last-child>:last-child,.exampleblock>.content .qlist>ol>li:last-child>:last-child,.sidebarblock>.content>:last-child>:last-child,.sidebarblock>.content .olist>ol>li:last-child>:last-child,.sidebarblock>.content .ulist>ul>li:last-child>:last-child,.sidebarblock>.content .qlist>ol>li:last-child>:last-child{margin-bottom:0}
+.literalblock pre,.listingblock pre:not(.highlight),.listingblock pre[class="highlight"],.listingblock pre[class^="highlight "],.listingblock pre.CodeRay,.listingblock pre.prettyprint{background:#f7f7f8}
+.sidebarblock .literalblock pre,.sidebarblock .listingblock pre:not(.highlight),.sidebarblock .listingblock pre[class="highlight"],.sidebarblock .listingblock pre[class^="highlight "],.sidebarblock .listingblock pre.CodeRay,.sidebarblock .listingblock pre.prettyprint{background:#f2f1f1}
+.literalblock pre,.literalblock pre[class],.listingblock pre,.listingblock pre[class]{-webkit-border-radius:4px;border-radius:4px;word-wrap:break-word;padding:1em;font-size:.8125em}
+.literalblock pre.nowrap,.literalblock pre[class].nowrap,.listingblock pre.nowrap,.listingblock pre[class].nowrap{overflow-x:auto;white-space:pre;word-wrap:normal}
+@media only screen and (min-width:768px){.literalblock pre,.literalblock pre[class],.listingblock pre,.listingblock pre[class]{font-size:.90625em}}
+@media only screen and (min-width:1280px){.literalblock pre,.literalblock pre[class],.listingblock pre,.listingblock pre[class]{font-size:1em}}
+.literalblock.output pre{color:#f7f7f8;background-color:rgba(0,0,0,.9)}
+.listingblock pre.highlightjs{padding:0}
+.listingblock pre.highlightjs>code{padding:1em;-webkit-border-radius:4px;border-radius:4px}
+.listingblock pre.prettyprint{border-width:0}
+.listingblock>.content{position:relative}
+.listingblock code[data-lang]:before{display:none;content:attr(data-lang);position:absolute;font-size:.75em;top:.425rem;right:.5rem;line-height:1;text-transform:uppercase;color:#999}
+.listingblock:hover code[data-lang]:before{display:block}
+.listingblock.terminal pre .command:before{content:attr(data-prompt);padding-right:.5em;color:#999}
+.listingblock.terminal pre .command:not([data-prompt]):before{content:"$"}
+table.pyhltable{border-collapse:separate;border:0;margin-bottom:0;background:none}
+table.pyhltable td{vertical-align:top;padding-top:0;padding-bottom:0;line-height:1.45}
+table.pyhltable td.code{padding-left:.75em;padding-right:0}
+pre.pygments .lineno,table.pyhltable td:not(.code){color:#999;padding-left:0;padding-right:.5em;border-right:1px solid #ddddd8}
+pre.pygments .lineno{display:inline-block;margin-right:.25em}
+table.pyhltable .linenodiv{background:none!important;padding-right:0!important}
+.quoteblock{margin:0 1em 1.25em 1.5em;display:table}
+.quoteblock>.title{margin-left:-1.5em;margin-bottom:.75em}
+.quoteblock blockquote,.quoteblock blockquote p{color:rgba(0,0,0,.85);font-size:1.15rem;line-height:1.75;word-spacing:.1em;letter-spacing:0;font-style:italic;text-align:justify}
+.quoteblock blockquote{margin:0;padding:0;border:0}
+.quoteblock blockquote:before{content:"\201c";float:left;font-size:2.75em;font-weight:bold;line-height:.6em;margin-left:-.6em;color:#7a2518;text-shadow:0 1px 2px rgba(0,0,0,.1)}
+.quoteblock blockquote>.paragraph:last-child p{margin-bottom:0}
+.quoteblock .attribution{margin-top:.5em;margin-right:.5ex;text-align:right}
+.quoteblock .quoteblock{margin-left:0;margin-right:0;padding:.5em 0;border-left:3px solid rgba(0,0,0,.6)}
+.quoteblock .quoteblock blockquote{padding:0 0 0 .75em}
+.quoteblock .quoteblock blockquote:before{display:none}
+.verseblock{margin:0 1em 1.25em 1em}
+.verseblock pre{font-family:"Open Sans","DejaVu Sans",sans;font-size:1.15rem;color:rgba(0,0,0,.85);font-weight:300;text-rendering:optimizeLegibility}
+.verseblock pre strong{font-weight:400}
+.verseblock .attribution{margin-top:1.25rem;margin-left:.5ex}
+.quoteblock .attribution,.verseblock .attribution{font-size:.9375em;line-height:1.45;font-style:italic}
+.quoteblock .attribution br,.verseblock .attribution br{display:none}
+.quoteblock .attribution cite,.verseblock .attribution cite{display:block;letter-spacing:-.025em;color:rgba(0,0,0,.6)}
+.quoteblock.abstract{margin:0 0 1.25em 0;display:block}
+.quoteblock.abstract blockquote,.quoteblock.abstract blockquote p{text-align:left;word-spacing:0}
+.quoteblock.abstract blockquote:before,.quoteblock.abstract blockquote p:first-of-type:before{display:none}
+table.tableblock{max-width:100%;border-collapse:separate}
+table.tableblock td>.paragraph:last-child p>p:last-child,table.tableblock th>p:last-child,table.tableblock td>p:last-child{margin-bottom:0}
+table.tableblock,th.tableblock,td.tableblock{border:0 solid #dedede}
+table.grid-all>thead>tr>.tableblock,table.grid-all>tbody>tr>.tableblock{border-width:0 1px 1px 0}
+table.grid-all>tfoot>tr>.tableblock{border-width:1px 1px 0 0}
+table.grid-cols>*>tr>.tableblock{border-width:0 1px 0 0}
+table.grid-rows>thead>tr>.tableblock,table.grid-rows>tbody>tr>.tableblock{border-width:0 0 1px 0}
+table.grid-rows>tfoot>tr>.tableblock{border-width:1px 0 0 0}
+table.grid-all>*>tr>.tableblock:last-child,table.grid-cols>*>tr>.tableblock:last-child{border-right-width:0}
+table.grid-all>tbody>tr:last-child>.tableblock,table.grid-all>thead:last-child>tr>.tableblock,table.grid-rows>tbody>tr:last-child>.tableblock,table.grid-rows>thead:last-child>tr>.tableblock{border-bottom-width:0}
+table.frame-all{border-width:1px}
+table.frame-sides{border-width:0 1px}
+table.frame-topbot{border-width:1px 0}
+th.halign-left,td.halign-left{text-align:left}
+th.halign-right,td.halign-right{text-align:right}
+th.halign-center,td.halign-center{text-align:center}
+th.valign-top,td.valign-top{vertical-align:top}
+th.valign-bottom,td.valign-bottom{vertical-align:bottom}
+th.valign-middle,td.valign-middle{vertical-align:middle}
+table thead th,table tfoot th{font-weight:bold}
+tbody tr th{display:table-cell;line-height:1.6;background:#f7f8f7}
+tbody tr th,tbody tr th p,tfoot tr th,tfoot tr th p{color:rgba(0,0,0,.8);font-weight:bold}
+p.tableblock>code:only-child{background:none;padding:0}
+p.tableblock{font-size:1em}
+td>div.verse{white-space:pre}
+ol{margin-left:1.75em}
+ul li ol{margin-left:1.5em}
+dl dd{margin-left:1.125em}
+dl dd:last-child,dl dd:last-child>:last-child{margin-bottom:0}
+ol>li p,ul>li p,ul dd,ol dd,.olist .olist,.ulist .ulist,.ulist .olist,.olist .ulist{margin-bottom:.625em}
+ul.checklist,ul.none,ol.none,ul.no-bullet,ol.no-bullet,ol.unnumbered,ul.unstyled,ol.unstyled{list-style-type:none}
+ul.no-bullet,ol.no-bullet,ol.unnumbered{margin-left:.625em}
+ul.unstyled,ol.unstyled{margin-left:0}
+ul.checklist{margin-left:.625em}
+ul.checklist li>p:first-child>.fa-square-o:first-child,ul.checklist li>p:first-child>.fa-check-square-o:first-child{width:1.25em;font-size:.8em;position:relative;bottom:.125em}
+ul.checklist li>p:first-child>input[type="checkbox"]:first-child{margin-right:.25em}
+ul.inline{margin:0 auto .625em auto;margin-left:-1.375em;margin-right:0;padding:0;list-style:none;overflow:hidden}
+ul.inline>li{list-style:none;float:left;margin-left:1.375em;display:block}
+ul.inline>li>*{display:block}
+.unstyled dl dt{font-weight:400;font-style:normal}
+ol.arabic{list-style-type:decimal}
+ol.decimal{list-style-type:decimal-leading-zero}
+ol.loweralpha{list-style-type:lower-alpha}
+ol.upperalpha{list-style-type:upper-alpha}
+ol.lowerroman{list-style-type:lower-roman}
+ol.upperroman{list-style-type:upper-roman}
+ol.lowergreek{list-style-type:lower-greek}
+.hdlist>table,.colist>table{border:0;background:none}
+.hdlist>table>tbody>tr,.colist>table>tbody>tr{background:none}
+td.hdlist1,td.hdlist2{vertical-align:top;padding:0 .625em}
+td.hdlist1{font-weight:bold;padding-bottom:1.25em}
+.literalblock+.colist,.listingblock+.colist{margin-top:-.5em}
+.colist>table tr>td:first-of-type{padding:.4em .75em 0 .75em;line-height:1;vertical-align:top}
+.colist>table tr>td:first-of-type img{max-width:initial}
+.colist>table tr>td:last-of-type{padding:.25em 0}
+.thumb,.th{line-height:0;display:inline-block;border:solid 4px #fff;-webkit-box-shadow:0 0 0 1px #ddd;box-shadow:0 0 0 1px #ddd}
+.imageblock.left,.imageblock[style*="float: left"]{margin:.25em .625em 1.25em 0}
+.imageblock.right,.imageblock[style*="float: right"]{margin:.25em 0 1.25em .625em}
+.imageblock>.title{margin-bottom:0}
+.imageblock.thumb,.imageblock.th{border-width:6px}
+.imageblock.thumb>.title,.imageblock.th>.title{padding:0 .125em}
+.image.left,.image.right{margin-top:.25em;margin-bottom:.25em;display:inline-block;line-height:0}
+.image.left{margin-right:.625em}
+.image.right{margin-left:.625em}
+a.image{text-decoration:none;display:inline-block}
+a.image object{pointer-events:none}
+sup.footnote,sup.footnoteref{font-size:.875em;position:static;vertical-align:super}
+sup.footnote a,sup.footnoteref a{text-decoration:none}
+sup.footnote a:active,sup.footnoteref a:active{text-decoration:underline}
+#footnotes{padding-top:.75em;padding-bottom:.75em;margin-bottom:.625em}
+#footnotes hr{width:20%;min-width:6.25em;margin:-.25em 0 .75em 0;border-width:1px 0 0 0}
+#footnotes .footnote{padding:0 .375em 0 .225em;line-height:1.3334;font-size:.875em;margin-left:1.2em;text-indent:-1.05em;margin-bottom:.2em}
+#footnotes .footnote a:first-of-type{font-weight:bold;text-decoration:none}
+#footnotes .footnote:last-of-type{margin-bottom:0}
+#content #footnotes{margin-top:-.625em;margin-bottom:0;padding:.75em 0}
+.gist .file-data>table{border:0;background:#fff;width:100%;margin-bottom:0}
+.gist .file-data>table td.line-data{width:99%}
+div.unbreakable{page-break-inside:avoid}
+.big{font-size:larger}
+.small{font-size:smaller}
+.underline{text-decoration:underline}
+.overline{text-decoration:overline}
+.line-through{text-decoration:line-through}
+.aqua{color:#00bfbf}
+.aqua-background{background-color:#00fafa}
+.black{color:#000}
+.black-background{background-color:#000}
+.blue{color:#0000bf}
+.blue-background{background-color:#0000fa}
+.fuchsia{color:#bf00bf}
+.fuchsia-background{background-color:#fa00fa}
+.gray{color:#606060}
+.gray-background{background-color:#7d7d7d}
+.green{color:#006000}
+.green-background{background-color:#007d00}
+.lime{color:#00bf00}
+.lime-background{background-color:#00fa00}
+.maroon{color:#600000}
+.maroon-background{background-color:#7d0000}
+.navy{color:#000060}
+.navy-background{background-color:#00007d}
+.olive{color:#606000}
+.olive-background{background-color:#7d7d00}
+.purple{color:#600060}
+.purple-background{background-color:#7d007d}
+.red{color:#bf0000}
+.red-background{background-color:#fa0000}
+.silver{color:#909090}
+.silver-background{background-color:#bcbcbc}
+.teal{color:#006060}
+.teal-background{background-color:#007d7d}
+.white{color:#bfbfbf}
+.white-background{background-color:#fafafa}
+.yellow{color:#bfbf00}
+.yellow-background{background-color:#fafa00}
+span.icon>.fa{cursor:default}
+a span.icon>.fa{cursor:inherit}
+.admonitionblock td.icon [class^="fa icon-"]{font-size:2.5em;text-shadow:1px 1px 2px rgba(0,0,0,.5);cursor:default}
+.admonitionblock td.icon .icon-note:before{content:"\f05a";color:#19407c}
+.admonitionblock td.icon .icon-tip:before{content:"\f0eb";text-shadow:1px 1px 2px rgba(155,155,0,.8);color:#111}
+.admonitionblock td.icon .icon-warning:before{content:"\f071";color:#bf6900}
+.admonitionblock td.icon .icon-caution:before{content:"\f06d";color:#bf3400}
+.admonitionblock td.icon .icon-important:before{content:"\f06a";color:#bf0000}
+.conum[data-value]{display:inline-block;color:#fff!important;background-color:rgba(0,0,0,.8);-webkit-border-radius:100px;border-radius:100px;text-align:center;font-size:.75em;width:1.67em;height:1.67em;line-height:1.67em;font-family:"Open Sans","DejaVu Sans",sans-serif;font-style:normal;font-weight:bold}
+.conum[data-value] *{color:#fff!important}
+.conum[data-value]+b{display:none}
+.conum[data-value]:after{content:attr(data-value)}
+pre .conum[data-value]{position:relative;top:-.125em}
+b.conum *{color:inherit!important}
+.conum:not([data-value]):empty{display:none}
+dt,th.tableblock,td.content,div.footnote{text-rendering:optimizeLegibility}
+h1,h2,p,td.content,span.alt{letter-spacing:-.01em}
+p strong,td.content strong,div.footnote strong{letter-spacing:-.005em}
+p,blockquote,dt,td.content,span.alt{font-size:1.0625rem}
+p{margin-bottom:1.25rem}
+.sidebarblock p,.sidebarblock dt,.sidebarblock td.content,p.tableblock{font-size:1em}
+.exampleblock>.content{background-color:#fffef7;border-color:#e0e0dc;-webkit-box-shadow:0 1px 4px #e0e0dc;box-shadow:0 1px 4px #e0e0dc}
+.print-only{display:none!important}
+@media print{@page{margin:1.25cm .75cm}
+*{-webkit-box-shadow:none!important;box-shadow:none!important;text-shadow:none!important}
+a{color:inherit!important;text-decoration:underline!important}
+a.bare,a[href^="#"],a[href^="mailto:"]{text-decoration:none!important}
+a[href^="http:"]:not(.bare):after,a[href^="https:"]:not(.bare):after{content:"(" attr(href) ")";display:inline-block;font-size:.875em;padding-left:.25em}
+abbr[title]:after{content:" (" attr(title) ")"}
+pre,blockquote,tr,img,object,svg{page-break-inside:avoid}
+thead{display:table-header-group}
+svg{max-width:100%}
+p,blockquote,dt,td.content{font-size:1em;orphans:3;widows:3}
+h2,h3,#toctitle,.sidebarblock>.content>.title{page-break-after:avoid}
+#toc,.sidebarblock,.exampleblock>.content{background:none!important}
+#toc{border-bottom:1px solid #ddddd8!important;padding-bottom:0!important}
+.sect1{padding-bottom:0!important}
+.sect1+.sect1{border:0!important}
+#header>h1:first-child{margin-top:1.25rem}
+body.book #header{text-align:center}
+body.book #header>h1:first-child{border:0!important;margin:2.5em 0 1em 0}
+body.book #header .details{border:0!important;display:block;padding:0!important}
+body.book #header .details span:first-child{margin-left:0!important}
+body.book #header .details br{display:block}
+body.book #header .details br+span:before{content:none!important}
+body.book #toc{border:0!important;text-align:left!important;padding:0!important;margin:0!important}
+body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-break-before:always}
+.listingblock code[data-lang]:before{display:block}
+#footer{background:none!important;padding:0 .9375em}
+#footer-text{color:rgba(0,0,0,.6)!important;font-size:.9em}
+.hide-on-print{display:none!important}
+.print-only{display:block!important}
+.hide-for-print{display:none!important}
+.show-for-print{display:inherit!important}}
+</style>
+</head>
+<body class="article toc2 toc-left">
+<div id="header">
+<h1>API ServiceCatalog</h1>
+<div id="toc" class="toc2">
+<div id="toctitle">Table of Contents</div>
+<ul class="sectlevel1">
+<li><a href="#_overview">Overview</a>
+<ul class="sectlevel2">
+<li><a href="#_api_url">Api URL</a></li>
+<li><a href="#_version_information">Version information</a></li>
+<li><a href="#_uri_scheme">URI scheme</a></li>
+<li><a href="#_tags">Tags</a></li>
+<li><a href="#_consumes">Consumes</a></li>
+<li><a href="#_produces">Produces</a></li>
+</ul>
+</li>
+<li><a href="#_paths">Resources</a>
+<ul class="sectlevel2">
+<li><a href="#_servicespecification_resource">ServiceSpecification</a></li>
+</ul>
+</li>
+<li><a href="#_definitions">Definitions</a>
+<ul class="sectlevel2">
+<li><a href="#_attachment">Attachment</a></li>
+<li><a href="#_distributionstatus">DistributionStatus</a></li>
+<li><a href="#_errorrepresentation">ErrorRepresentation</a></li>
+<li><a href="#_lifecyclestatusvalues">LifecycleStatusValues</a></li>
+<li><a href="#_relatedpartyref">RelatedPartyRef</a></li>
+<li><a href="#_resourcespecificationref">ResourceSpecificationRef</a></li>
+<li><a href="#_servicespeccharacteristic">ServiceSpecCharacteristic</a></li>
+<li><a href="#_servicespeccharacteristicvalue">ServiceSpecCharacteristicValue</a></li>
+<li><a href="#_servicespecification">ServiceSpecification</a></li>
+<li><a href="#_targetserviceschemaref">TargetServiceSchemaRef</a></li>
+<li><a href="#_timeperiod">TimePeriod</a></li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<div id="content">
+<div class="sect1">
+<h2 id="_overview">Overview</h2>
+<div class="sectionbody">
+<div class="sect2">
+<div class="paragraph">
+<p>serviceCatalog API designed for ONAP Beijing Release.
+This API is build from TMF open API17.5.
+Only operation GET (by id &amp; byList) for resource serviceSpecification is available</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_version_information">Version information</h3>
+<div class="paragraph">
+<p><em>Version</em> : 1.0.0_inProgress</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_uri_scheme">URI scheme</h3>
+<div class="paragraph">
+<p><em>Host</em> : serverRoot<br>
+<em>BasePath</em> : /nbi/api/v1<br>
+<em>Schemes</em> : HTTPS</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_tags">Tags</h3>
+<div class="ulist">
+<ul>
+<li>
+<p>ServiceSpecification</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_consumes">Consumes</h3>
+<div class="ulist">
+<ul>
+<li>
+<p><code>application/json;charset=utf-8</code></p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_produces">Produces</h3>
+<div class="ulist">
+<ul>
+<li>
+<p><code>application/json;charset=utf-8</code></p>
+</li>
+</ul>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_paths">Resources</h2>
+<div class="sectionbody">
+<div class="sect2">
+<h3 id="_servicespecification_resource">ServiceSpecification</h3>
+<div class="sect3">
+<h4 id="_servicespecificationfind">List service specifications</h4>
+<div class="literalblock">
+<div class="content">
+<pre>GET /serviceSpecification</pre>
+</div>
+</div>
+<div class="sect4">
+<h5 id="_description">Description</h5>
+<div class="paragraph">
+<p>This operation returns service specifications from a catalog.
+Only a predefined set of attribute is proposed : Based on SDC limitations, only attributes category and distributionStatus are available for serviceSpecification filtering
+Fields attribute could be used to filter attributes retrieved</p>
+</div>
+<div class="paragraph">
+<p>Specific business errors for current operation will be encapsulated in</p>
+</div>
+<div class="paragraph">
+<p>HTTP Response 422 Unprocessable entity</p>
+</div>
+</div>
+<div class="sect4">
+<h5 id="_parameters">Parameters</h5>
+<table class="tableblock frame-all grid-all spread">
+<colgroup>
+<col style="width: 11.1111%;">
+<col style="width: 16.6666%;">
+<col style="width: 50%;">
+<col style="width: 22.2223%;">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-middle">Type</th>
+<th class="tableblock halign-left valign-middle">Name</th>
+<th class="tableblock halign-left valign-middle">Description</th>
+<th class="tableblock halign-left valign-middle">Schema</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>Query</strong></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>category</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Service Category (filter)</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>Query</strong></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>distributionStatus</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Service distribution status (filter)</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>Query</strong></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>fields</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Field selection - used to filtering the attributes to be retreived</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="sect4">
+<h5 id="_responses">Responses</h5>
+<table class="tableblock frame-all grid-all spread">
+<colgroup>
+<col style="width: 10%;">
+<col style="width: 70%;">
+<col style="width: 20%;">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-middle">HTTP Code</th>
+<th class="tableblock halign-left valign-middle">Description</th>
+<th class="tableblock halign-left valign-middle">Schema</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>200</strong></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Success</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">&lt; <a href="#_servicespecification">ServiceSpecification</a> &gt; array</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>400</strong></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Bad Request</p>
+<p class="tableblock">List of supported error codes:
+- 20: Invalid URL parameter value
+- 21: Missing body
+- 22: Invalid body
+- 23: Missing body field
+- 24: Invalid body field
+- 25: Missing header
+- 26: Invalid header value
+- 27: Missing query-string parameter
+- 28: Invalid query-string parameter value</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><a href="#_errorrepresentation">ErrorRepresentation</a></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>401</strong></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Unauthorized</p>
+<p class="tableblock">List of supported error codes:
+- 40: Missing credentials
+- 41: Invalid credentials
+- 42: Expired credentials</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><a href="#_errorrepresentation">ErrorRepresentation</a></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>403</strong></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Forbidden</p>
+<p class="tableblock">List of supported error codes:
+- 50: Access denied
+- 51: Forbidden requester
+- 52: Forbidden user
+- 53: Too many requests</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><a href="#_errorrepresentation">ErrorRepresentation</a></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>404</strong></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Not Found</p>
+<p class="tableblock">List of supported error codes:
+- 60: Resource not found</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><a href="#_errorrepresentation">ErrorRepresentation</a></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>422</strong></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Unprocessable entity</p>
+<p class="tableblock">Functional error</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><a href="#_errorrepresentation">ErrorRepresentation</a></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>500</strong></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Internal Server Error</p>
+<p class="tableblock">List of supported error codes:
+- 1: Internal error</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><a href="#_errorrepresentation">ErrorRepresentation</a></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>503</strong></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Service Unavailable</p>
+<p class="tableblock">List of supported error codes:
+- 5: The service is temporarily unavailable
+- 6: Orange API is over capacity, retry later !</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><a href="#_errorrepresentation">ErrorRepresentation</a></p></td>
+</tr>
+</tbody>
+</table>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_servicespecificationget">Retrieve a service specification</h4>
+<div class="literalblock">
+<div class="content">
+<pre>GET /serviceSpecification/{id}</pre>
+</div>
+</div>
+<div class="sect4">
+<h5 id="_description_2">Description</h5>
+<div class="paragraph">
+<p>This operation returns a service specification by its id from a catalog. Attribute selection is enabled using the fields attribute.</p>
+</div>
+<div class="paragraph">
+<p>Specific business errors for current operation will be encapsulated in</p>
+</div>
+<div class="paragraph">
+<p>HTTP Response 422 Unprocessable entity</p>
+</div>
+</div>
+<div class="sect4">
+<h5 id="_parameters_2">Parameters</h5>
+<table class="tableblock frame-all grid-all spread">
+<colgroup>
+<col style="width: 11.1111%;">
+<col style="width: 16.6666%;">
+<col style="width: 50%;">
+<col style="width: 22.2223%;">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-middle">Type</th>
+<th class="tableblock halign-left valign-middle">Name</th>
+<th class="tableblock halign-left valign-middle">Description</th>
+<th class="tableblock halign-left valign-middle">Schema</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>Path</strong></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>id</strong><br>
+<em>required</em></p></td>
+<td class="tableblock halign-left valign-middle"></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>Query</strong></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>fields</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Attribute selection</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="sect4">
+<h5 id="_responses_2">Responses</h5>
+<table class="tableblock frame-all grid-all spread">
+<colgroup>
+<col style="width: 10%;">
+<col style="width: 70%;">
+<col style="width: 20%;">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-middle">HTTP Code</th>
+<th class="tableblock halign-left valign-middle">Description</th>
+<th class="tableblock halign-left valign-middle">Schema</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>200</strong></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Success</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><a href="#_servicespecification">ServiceSpecification</a></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>400</strong></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Bad Request</p>
+<p class="tableblock">List of supported error codes:
+- 20: Invalid URL parameter value
+- 21: Missing body
+- 22: Invalid body
+- 23: Missing body field
+- 24: Invalid body field
+- 25: Missing header
+- 26: Invalid header value
+- 27: Missing query-string parameter
+- 28: Invalid query-string parameter value</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><a href="#_errorrepresentation">ErrorRepresentation</a></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>401</strong></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Unauthorized</p>
+<p class="tableblock">List of supported error codes:
+- 40: Missing credentials
+- 41: Invalid credentials
+- 42: Expired credentials</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><a href="#_errorrepresentation">ErrorRepresentation</a></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>403</strong></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Forbidden</p>
+<p class="tableblock">List of supported error codes:
+- 50: Access denied
+- 51: Forbidden requester
+- 52: Forbidden user
+- 53: Too many requests</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><a href="#_errorrepresentation">ErrorRepresentation</a></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>404</strong></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Not Found</p>
+<p class="tableblock">List of supported error codes:
+- 60: Resource not found</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><a href="#_errorrepresentation">ErrorRepresentation</a></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>422</strong></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Unprocessable entity</p>
+<p class="tableblock">Functional error</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><a href="#_errorrepresentation">ErrorRepresentation</a></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>500</strong></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Internal Server Error</p>
+<p class="tableblock">List of supported error codes:
+- 1: Internal error</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><a href="#_errorrepresentation">ErrorRepresentation</a></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>503</strong></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Service Unavailable</p>
+<p class="tableblock">List of supported error codes:
+- 5: The service is temporarily unavailable
+- 6: Orange API is over capacity, retry later !</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><a href="#_errorrepresentation">ErrorRepresentation</a></p></td>
+</tr>
+</tbody>
+</table>
+</div>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_definitions">Definitions</h2>
+<div class="sectionbody">
+<div class="sect2">
+<h3 id="_attachment">Attachment</h3>
+<div class="paragraph">
+<p>An attachment is a file uses to describe the service.
+In nbi we use attachment to retrieve ONAP artifacts.</p>
+</div>
+<table class="tableblock frame-all grid-all spread">
+<colgroup>
+<col style="width: 16.6666%;">
+<col style="width: 61.1111%;">
+<col style="width: 22.2223%;">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-middle">Name</th>
+<th class="tableblock halign-left valign-middle">Description</th>
+<th class="tableblock halign-left valign-middle">Schema</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>@type</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">This attribute allows to dynamically extends TMF class. Valued with 'ONAPartifact'. We used this features to add following attributes:
+artifactLabel
+artifactGroupType
+artifactTimeout
+artifactChecksum
+artifactVersion
+generatedFromUUID<br>
+<strong>Default</strong> : <code>"ONAPartifact"</code></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>artifactChecksum</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Additional attribute (not in the TMF API) - extended through @type - artifactChecksum</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>artifactGroupType</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Additional attribute (not in the TMF API) - extended through @type - artifactGroupType</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>artifactLabel</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Additional attribute (not in the TMF API) - extended through @type - artifactLabel</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>artifactTimeout</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Additional attribute (not in the TMF API) - extended through @type - artifactTimeout</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>artifactVersion</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Additional attribute (not in the TMF API) - extended through @type - artifactVersion</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>description</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Description of the attachment - filled with artifactDescription</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>generatedFromUUID</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Additional attribute (not in the TMF API) - extended through @type - generatedFromUUID</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>id</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Unique identifier of the attachment - filled with artifactUUID.</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>mimeType</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Filled with artifactType</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>name</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Name of the attachment - filled with artifactName</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>url</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Uniform Resource Locator, is a web page address - filled with artifactURL</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="sect2">
+<h3 id="_distributionstatus">DistributionStatus</h3>
+<div class="paragraph">
+<p>Service distribution status from ONAP.</p>
+</div>
+<div class="paragraph">
+<p><em>Type</em> : enum (DISTRIBUTION_NOT_APPROVED, DISTRIBUTION_APPROVED, DISTRIBUTED, DISTRIBUTION_REJECTED)</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_errorrepresentation">ErrorRepresentation</h3>
+<div class="paragraph">
+<p>This class is used to describe error.
+for nbi Beijing release we do not manage additional error for serviceCatalog</p>
+</div>
+<table class="tableblock frame-all grid-all spread">
+<colgroup>
+<col style="width: 16.6666%;">
+<col style="width: 61.1111%;">
+<col style="width: 22.2223%;">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-middle">Name</th>
+<th class="tableblock halign-left valign-middle">Description</th>
+<th class="tableblock halign-left valign-middle">Schema</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>@schemaLocation</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">it provides a link to the schema describing a REST resource.</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>@type</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">The class type of a REST resource.</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>code</strong><br>
+<em>required</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Application related code (as defined in the API or from a common list)</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">integer (int32)</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>message</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Text that provide more details and corrective actions related to the error. This can be shown to a client user</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>reason</strong><br>
+<em>required</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Text that explains the reason for error. This can be shown to a client user.</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>referenceErrror</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">url pointing to documentation describing the error</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>status</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">http error code extension like 400-2</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="sect2">
+<h3 id="_lifecyclestatusvalues">LifecycleStatusValues</h3>
+<div class="paragraph">
+<p>Service lifecycle value from ONAP SDC</p>
+</div>
+<div class="paragraph">
+<p><em>Type</em> : enum (NOT_CERTIFIED_CHECKOUT, NOT_CERTIFIED_CHECKIN, READY_FOR_CERTIFICATION, CERTIFICATION_IN_PROGRESS, CERTIFIED)</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_relatedpartyref">RelatedPartyRef</h3>
+<div class="paragraph">
+<p>Party linked to the service catalog.
+in nbi we retrieve information about last updater of the service in SDC</p>
+</div>
+<table class="tableblock frame-all grid-all spread">
+<colgroup>
+<col style="width: 16.6666%;">
+<col style="width: 61.1111%;">
+<col style="width: 22.2223%;">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-middle">Name</th>
+<th class="tableblock halign-left valign-middle">Description</th>
+<th class="tableblock halign-left valign-middle">Schema</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>id</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Unique identifier of the related party. Filled with lastUpdaterUserId</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>name</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Name of the related party - Filled with lastUpdatedFullName</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>role</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Role payed by the related party
+Only role 'lastUpdater' is retrieved in Beijing release</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="sect2">
+<h3 id="_resourcespecificationref">ResourceSpecificationRef</h3>
+<div class="paragraph">
+<p>A list of resourceSpec identified to deliver the service.
+for nbi we retrieve resource information available in service description (through SDC api) bu as well information retrieved in the TOSCA file.</p>
+</div>
+<table class="tableblock frame-all grid-all spread">
+<colgroup>
+<col style="width: 16.6666%;">
+<col style="width: 61.1111%;">
+<col style="width: 22.2223%;">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-middle">Name</th>
+<th class="tableblock halign-left valign-middle">Description</th>
+<th class="tableblock halign-left valign-middle">Schema</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>@type</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">This attribute allows to dynamically extends TMF class. Valued with: 'ONAPresource'. We used this features to add following attributes:
+resourceInstanceName
+resourceInvariantUUID
+resourceType
+modelCustomizationName
+modelCustomizationId<br>
+<strong>Default</strong> : <code>"ONAPresource"</code></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>id</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Unique identifier of the resource specification - filled with resourceUUID</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>modelCustomizationId</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Additional attribute (not in the TMF API) - extended through @type - Retrieved in the TOSCA file : attribute customizationUUID in topology_template/node_template for the resource</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>modelCustomizationName</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Additional attribute (not in the TMF API) - extended through @type - Retrieved in the TOSCA file : attribute name in topology_template/node_template for the resource</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>name</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Name of the resource specification - filled with resourceName</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>resourceInstanceName</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Additional attribute (not in the TMF API) - extended through @type - resourceInstanceName</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>resourceInvariantUUID</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Additional attribute (not in the TMF API) - extended through @type - resourceInvariantUUID</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>resourceType</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Additional attribute (not in the TMF API) - extended through @type - resoucreType</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>version</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Version for this resource specification - filled with resourceVersion</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="sect2">
+<h3 id="_servicespeccharacteristic">ServiceSpecCharacteristic</h3>
+<div class="paragraph">
+<p>A characteristic quality or distinctive feature of a ServiceSpecification.
+ServiceSpecCharacteristic are retrieved in the serviceTosca file in the topology_template section in the inputs section.</p>
+</div>
+<table class="tableblock frame-all grid-all spread">
+<colgroup>
+<col style="width: 16.6666%;">
+<col style="width: 61.1111%;">
+<col style="width: 22.2223%;">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-middle">Name</th>
+<th class="tableblock halign-left valign-middle">Description</th>
+<th class="tableblock halign-left valign-middle">Schema</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>@schemaLocation</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">An url pointing to type description - we do not use it in nbi Beijing release</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>@type</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">This attribute allows to dynamically extends TMF class. Valued with: 'ONAPserviceCharacteristic'. We do not used this features in nbi Beijing release.</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>description</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">A narrative that explains in detail what the characteristic is - Filled with parameter_description</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>name</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Name of the characteristic - Filled with parameter_name</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>required</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">A parameter to define if the characteristic is mandatory - Filled from parameter_required – if not fielded by default ‘true’<br>
+<strong>Default</strong> : <code>true</code></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">boolean</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>serviceSpecCharacteristicValue</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">&lt; <a href="#_servicespeccharacteristicvalue">ServiceSpecCharacteristicValue</a> &gt; array</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>status</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Status of the characteristic - filled with status_value</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>valueType</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">A kind of value that the characteristic can take on, such as numeric, text and so forth - Filled with parameter_type</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="sect2">
+<h3 id="_servicespeccharacteristicvalue">ServiceSpecCharacteristicValue</h3>
+<div class="paragraph">
+<p>A number or text that can be assigned to a service specification characteristic.
+ServiceSpecCharacteristicValue are retrieved in the service Tosca file</p>
+</div>
+<table class="tableblock frame-all grid-all spread">
+<colgroup>
+<col style="width: 16.6666%;">
+<col style="width: 61.1111%;">
+<col style="width: 22.2223%;">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-middle">Name</th>
+<th class="tableblock halign-left valign-middle">Description</th>
+<th class="tableblock halign-left valign-middle">Schema</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>isDefault</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Information calculated from parameter default in the Tosca file</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">boolean</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>value</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">A discrete value that the characteristic can take on</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>valueType</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">A kind of value that the characteristic can take on, such as numeric, text, and so forth
+Retrieved in the Tosca in the topology_template section in the inputs section - parameter_type.
+We do not manage parameter_type= list or map for Beijing release</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="sect2">
+<h3 id="_servicespecification">ServiceSpecification</h3>
+<div class="paragraph">
+<p>ServiceSpecification is a class that offers characteristics to describe a type of service. Functionally, it acts as a template by which Services may be instantiated. By sharing the same specification, these services would therefore share the same set of characteristics.
+the service information are retrieved in SDC</p>
+</div>
+<table class="tableblock frame-all grid-all spread">
+<colgroup>
+<col style="width: 16.6666%;">
+<col style="width: 61.1111%;">
+<col style="width: 22.2223%;">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-middle">Name</th>
+<th class="tableblock halign-left valign-middle">Description</th>
+<th class="tableblock halign-left valign-middle">Schema</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>@baseType</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Not used for Beijing release</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>@schemaLocation</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Not used for Beijing release</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>@type</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">This attribute allows to dynamically extends TMF class. Valued with 'ONAPservice'. We used this features to add following attributes:
+invariantUUID
+toscaModelURL
+toscaResourceName
+category (1)
+subcategory (1)
+distributionStatus<br>
+<strong>Default</strong> : <code>"ONAPservice"</code></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>attachment</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">&lt; <a href="#_attachment">Attachment</a> &gt; array</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>category</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Additional attribute - extended through @type - category
+Please note that this attribute is managed in TMF - in future release we&#8217;ll introduce category resource</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>description</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">A narrative that explains in detail what the service specification is - Filled with SDC Service description</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>distributionStatus</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><a href="#_distributionstatus">DistributionStatus</a></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>href</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Reference of the service specification- not mapped in Beijing</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>id</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Unique identifier of the service specification. Filled with SDC Service uuid</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>invariantUUID</strong><br>
+<em>required</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Additional attribute (not in the TMF API) - extended through @type - invariantUUID</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>lifecycleStatus</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><a href="#_lifecyclestatusvalues">LifecycleStatusValues</a></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>name</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Name of the service specification- Filled with SDC Service name</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>relatedParty</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">&lt; <a href="#_relatedpartyref">RelatedPartyRef</a> &gt; array</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>resourceSpecification</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">&lt; <a href="#_resourcespecificationref">ResourceSpecificationRef</a> &gt; array</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>serviceSpecCharacteristic</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">&lt; <a href="#_servicespeccharacteristic">ServiceSpecCharacteristic</a> &gt; array</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>subcategory</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Additional attribute - extended through @type - category
+Please note that this attribute is managed in TMF - in future release we&#8217;ll introduce category resourc</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>targetServiceSchema</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><a href="#_targetserviceschemaref">TargetServiceSchemaRef</a></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>toscaModelURL</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Additional attribute (not in the TMF API) - extended through @type - toscaModelURL</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>toscaResourceName</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Additional attribute (not in the TMF API) - extended through @type - toscaResourceName</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>version</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Service specification version - Filled with SDC Service version</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="sect2">
+<h3 id="_targetserviceschemaref">TargetServiceSchemaRef</h3>
+<table class="tableblock frame-all grid-all spread">
+<colgroup>
+<col style="width: 42.8571%;">
+<col style="width: 57.1429%;">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-middle">Name</th>
+<th class="tableblock halign-left valign-middle">Schema</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>@schemaLocation</strong><br>
+<em>required</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>@type</strong><br>
+<em>required</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="sect2">
+<h3 id="_timeperiod">TimePeriod</h3>
+<div class="paragraph">
+<p>A time period</p>
+</div>
+<table class="tableblock frame-all grid-all spread">
+<colgroup>
+<col style="width: 16.6666%;">
+<col style="width: 61.1111%;">
+<col style="width: 22.2223%;">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-middle">Name</th>
+<th class="tableblock halign-left valign-middle">Description</th>
+<th class="tableblock halign-left valign-middle">Schema</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>endDateTime</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">End date and time of the period</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string (date-time)</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>startDateTime</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Start date and time of the period</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string (date-time)</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+</div>
+</div>
+</div>
+<div id="footer">
+<div id="footer-text">
+Last updated 2018-03-21 17:15:23 UTC
+</div>
+</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/offeredapis/serviceCatalog/markDown.md b/docs/offeredapis/serviceCatalog/markDown.md
new file mode 100644
index 0000000..4d066c3
--- /dev/null
+++ b/docs/offeredapis/serviceCatalog/markDown.md
@@ -0,0 +1,294 @@
+# API ServiceCatalog
+
+
+<a name="overview"></a>
+## Overview
+
+### Api URL
+
+[Swagger UI](https://api-designer.sso.infra.ftgroup/swagger-ui/?url=https://api-designer.sso.infra.ftgroup/api/1.0/apis/N3ma89X1x0/swagger.json)
+
+
+[plant UML UI](https://plantuml.rd.francetelecom.fr/proxy?fmt=svg&src=https://api-designer.sso.infra.ftgroup/api/1.0/apis/N3ma89X1x0/plantuml&noCache=797767.0)
+
+serviceCatalog API designed for ONAP Beijing Release.
+This API is build from TMF open API17.5.
+Only operation GET (by id & byList) for resource serviceSpecification is available
+
+
+### Version information
+*Version* : 1.0.0_inProgress
+
+
+### URI scheme
+*Host* : serverRoot
+*BasePath* : /nbi/api/v1
+*Schemes* : HTTPS
+
+
+### Tags
+
+* ServiceSpecification
+
+
+### Consumes
+
+* `application/json;charset=utf-8`
+
+
+### Produces
+
+* `application/json;charset=utf-8`
+
+
+<a name="paths"></a>
+## Resources
+
+<a name="servicespecification_resource"></a>
+### ServiceSpecification
+
+<a name="servicespecificationfind"></a>
+#### List service specifications
+```
+GET /serviceSpecification
+```
+
+
+##### Description
+This operation returns service specifications from a catalog.
+Only a predefined set of attribute is proposed : Based on SDC limitations, only attributes category and distributionStatus are available for serviceSpecification filtering
+Fields attribute could be used to filter attributes retrieved
+
+Specific business errors for current operation will be encapsulated in
+
+HTTP Response 422 Unprocessable entity
+
+
+##### Parameters
+
+|Type|Name|Description|Schema|
+|---|---|---|---|
+|**Query**|**category** <br>*optional*|Service Category (filter)|string|
+|**Query**|**distributionStatus** <br>*optional*|Service distribution status (filter)|string|
+|**Query**|**fields** <br>*optional*|Field selection - used to filtering the attributes to be retreived|string|
+
+
+##### Responses
+
+|HTTP Code|Description|Schema|
+|---|---|---|
+|**200**|Success|< [ServiceSpecification](#servicespecification) > array|
+|**400**|Bad Request<br><br>List of supported error codes:<br>- 20: Invalid URL parameter value<br>- 21: Missing body<br>- 22: Invalid body<br>- 23: Missing body field<br>- 24: Invalid body field<br>- 25: Missing header<br>- 26: Invalid header value<br>- 27: Missing query-string parameter<br>- 28: Invalid query-string parameter value|[ErrorRepresentation](#errorrepresentation)|
+|**401**|Unauthorized<br><br>List of supported error codes:<br>- 40: Missing credentials<br>- 41: Invalid credentials<br>- 42: Expired credentials|[ErrorRepresentation](#errorrepresentation)|
+|**403**|Forbidden<br><br>List of supported error codes:<br>- 50: Access denied<br>- 51: Forbidden requester<br>- 52: Forbidden user<br>- 53: Too many requests|[ErrorRepresentation](#errorrepresentation)|
+|**404**|Not Found<br><br>List of supported error codes:<br>- 60: Resource not found|[ErrorRepresentation](#errorrepresentation)|
+|**422**|Unprocessable entity<br><br>Functional error|[ErrorRepresentation](#errorrepresentation)|
+|**500**|Internal Server Error<br><br>List of supported error codes:<br>- 1: Internal error|[ErrorRepresentation](#errorrepresentation)|
+|**503**|Service Unavailable<br><br>List of supported error codes:<br>- 5: The service is temporarily unavailable<br>- 6: Orange API is over capacity, retry later !|[ErrorRepresentation](#errorrepresentation)|
+
+
+<a name="servicespecificationget"></a>
+#### Retrieve a service specification
+```
+GET /serviceSpecification/{id}
+```
+
+
+##### Description
+This operation returns a service specification by its id from a catalog. Attribute selection is enabled using the fields attribute.
+
+Specific business errors for current operation will be encapsulated in
+
+HTTP Response 422 Unprocessable entity
+
+
+##### Parameters
+
+|Type|Name|Description|Schema|
+|---|---|---|---|
+|**Path**|**id** <br>*required*||string|
+|**Query**|**fields** <br>*optional*|Attribute selection|string|
+
+
+##### Responses
+
+|HTTP Code|Description|Schema|
+|---|---|---|
+|**200**|Success|[ServiceSpecification](#servicespecification)|
+|**400**|Bad Request<br><br>List of supported error codes:<br>- 20: Invalid URL parameter value<br>- 21: Missing body<br>- 22: Invalid body<br>- 23: Missing body field<br>- 24: Invalid body field<br>- 25: Missing header<br>- 26: Invalid header value<br>- 27: Missing query-string parameter<br>- 28: Invalid query-string parameter value|[ErrorRepresentation](#errorrepresentation)|
+|**401**|Unauthorized<br><br>List of supported error codes:<br>- 40: Missing credentials<br>- 41: Invalid credentials<br>- 42: Expired credentials|[ErrorRepresentation](#errorrepresentation)|
+|**403**|Forbidden<br><br>List of supported error codes:<br>- 50: Access denied<br>- 51: Forbidden requester<br>- 52: Forbidden user<br>- 53: Too many requests|[ErrorRepresentation](#errorrepresentation)|
+|**404**|Not Found<br><br>List of supported error codes:<br>- 60: Resource not found|[ErrorRepresentation](#errorrepresentation)|
+|**422**|Unprocessable entity<br><br>Functional error|[ErrorRepresentation](#errorrepresentation)|
+|**500**|Internal Server Error<br><br>List of supported error codes:<br>- 1: Internal error|[ErrorRepresentation](#errorrepresentation)|
+|**503**|Service Unavailable<br><br>List of supported error codes:<br>- 5: The service is temporarily unavailable<br>- 6: Orange API is over capacity, retry later !|[ErrorRepresentation](#errorrepresentation)|
+
+
+<a name="definitions"></a>
+## Definitions
+
+<a name="attachment"></a>
+### Attachment
+An attachment is a file uses to describe the service.
+In nbi we use attachment to retrieve ONAP artifacts.
+
+
+|Name|Description|Schema|
+|---|---|---|
+|**@type** <br>*optional*|This attribute allows to dynamically extends TMF class. Valued with 'ONAPartifact'. We used this features to add following attributes: <br>artifactLabel<br>artifactGroupType<br>artifactTimeout<br>artifactChecksum<br>artifactVersion<br>generatedFromUUID <br>**Default** : `"ONAPartifact"`|string|
+|**artifactChecksum** <br>*optional*|Additional attribute (not in the TMF API) - extended through @type - artifactChecksum|string|
+|**artifactGroupType** <br>*optional*|Additional attribute (not in the TMF API) - extended through @type - artifactGroupType|string|
+|**artifactLabel** <br>*optional*|Additional attribute (not in the TMF API) - extended through @type - artifactLabel|string|
+|**artifactTimeout** <br>*optional*|Additional attribute (not in the TMF API) - extended through @type - artifactTimeout|string|
+|**artifactVersion** <br>*optional*|Additional attribute (not in the TMF API) - extended through @type - artifactVersion|string|
+|**description** <br>*optional*|Description of the attachment - filled with artifactDescription|string|
+|**generatedFromUUID** <br>*optional*|Additional attribute (not in the TMF API) - extended through @type - generatedFromUUID|string|
+|**id** <br>*optional*|Unique identifier of the attachment - filled with artifactUUID.|string|
+|**mimeType** <br>*optional*|Filled with artifactType|string|
+|**name** <br>*optional*|Name of the attachment - filled with artifactName|string|
+|**url** <br>*optional*|Uniform Resource Locator, is a web page address - filled with artifactURL|string|
+
+
+<a name="distributionstatus"></a>
+### DistributionStatus
+Service distribution status from ONAP.
+
+*Type* : enum (DISTRIBUTION_NOT_APPROVED, DISTRIBUTION_APPROVED, DISTRIBUTED, DISTRIBUTION_REJECTED)
+
+
+<a name="errorrepresentation"></a>
+### ErrorRepresentation
+This class is used to describe error.
+for nbi Beijing release we do not manage additional error for serviceCatalog
+
+
+|Name|Description|Schema|
+|---|---|---|
+|**@schemaLocation** <br>*optional*|it provides a link to the schema describing a REST resource.|string|
+|**@type** <br>*optional*|The class type of a REST resource.|string|
+|**code** <br>*required*|Application related code (as defined in the API or from a common list)|integer (int32)|
+|**message** <br>*optional*|Text that provide more details and corrective actions related to the error. This can be shown to a client user|string|
+|**reason** <br>*required*|Text that explains the reason for error. This can be shown to a client user.|string|
+|**referenceErrror** <br>*optional*|url pointing to documentation describing the error|string|
+|**status** <br>*optional*|http error code extension like 400-2|string|
+
+
+<a name="lifecyclestatusvalues"></a>
+### LifecycleStatusValues
+Service lifecycle value from ONAP SDC
+
+*Type* : enum (NOT_CERTIFIED_CHECKOUT, NOT_CERTIFIED_CHECKIN, READY_FOR_CERTIFICATION, CERTIFICATION_IN_PROGRESS, CERTIFIED)
+
+
+<a name="relatedpartyref"></a>
+### RelatedPartyRef
+Party linked to the service catalog.
+in nbi we retrieve information about last updater of the service in SDC
+
+
+|Name|Description|Schema|
+|---|---|---|
+|**id** <br>*optional*|Unique identifier of the related party. Filled with lastUpdaterUserId|string|
+|**name** <br>*optional*|Name of the related party - Filled with lastUpdatedFullName|string|
+|**role** <br>*optional*|Role payed by the related party<br>Only role 'lastUpdater' is retrieved in Beijing release|string|
+
+
+<a name="resourcespecificationref"></a>
+### ResourceSpecificationRef
+A list of resourceSpec identified to deliver the service.
+for nbi we retrieve resource information available in service description (through SDC api) bu as well information retrieved in the TOSCA file.
+
+
+|Name|Description|Schema|
+|---|---|---|
+|**@type** <br>*optional*|This attribute allows to dynamically extends TMF class. Valued with: 'ONAPresource'. We used this features to add following attributes:<br>resourceInstanceName<br>resourceInvariantUUID<br>resourceType<br>modelCustomizationName<br>modelCustomizationId <br>**Default** : `"ONAPresource"`|string|
+|**id** <br>*optional*|Unique identifier of the resource specification - filled with resourceUUID|string|
+|**modelCustomizationId** <br>*optional*|Additional attribute (not in the TMF API) - extended through @type - Retrieved in the TOSCA file : attribute customizationUUID in topology_template/node_template for the resource|string|
+|**modelCustomizationName** <br>*optional*|Additional attribute (not in the TMF API) - extended through @type - Retrieved in the TOSCA file : attribute name in topology_template/node_template for the resource|string|
+|**name** <br>*optional*|Name of the resource specification - filled with resourceName|string|
+|**resourceInstanceName** <br>*optional*|Additional attribute (not in the TMF API) - extended through @type - resourceInstanceName|string|
+|**resourceInvariantUUID** <br>*optional*|Additional attribute (not in the TMF API) - extended through @type - resourceInvariantUUID|string|
+|**resourceType** <br>*optional*|Additional attribute (not in the TMF API) - extended through @type - resoucreType|string|
+|**version** <br>*optional*|Version for this resource specification - filled with resourceVersion|string|
+
+
+<a name="servicespeccharacteristic"></a>
+### ServiceSpecCharacteristic
+A characteristic quality or distinctive feature of a ServiceSpecification.
+ServiceSpecCharacteristic are retrieved in the serviceTosca file in the topology_template section in the inputs section.
+
+
+|Name|Description|Schema|
+|---|---|---|
+|**@schemaLocation** <br>*optional*|An url pointing to type description - we do not use it in nbi Beijing release|string|
+|**@type** <br>*optional*|This attribute allows to dynamically extends TMF class. Valued with: 'ONAPserviceCharacteristic'. We do not used this features in nbi Beijing release.|string|
+|**description** <br>*optional*|A narrative that explains in detail what the characteristic is - Filled with parameter_description|string|
+|**name** <br>*optional*|Name of the characteristic - Filled with parameter_name|string|
+|**required** <br>*optional*|A parameter to define if the characteristic is mandatory - Filled from parameter_required – if not fielded by default ‘true’ <br>**Default** : `true`|boolean|
+|**serviceSpecCharacteristicValue** <br>*optional*||< [ServiceSpecCharacteristicValue](#servicespeccharacteristicvalue) > array|
+|**status** <br>*optional*|Status of the characteristic - filled with status_value|string|
+|**valueType** <br>*optional*|A kind of value that the characteristic can take on, such as numeric, text and so forth - Filled with parameter_type|string|
+
+
+<a name="servicespeccharacteristicvalue"></a>
+### ServiceSpecCharacteristicValue
+A number or text that can be assigned to a service specification characteristic.
+ServiceSpecCharacteristicValue are retrieved in the service Tosca file
+
+
+|Name|Description|Schema|
+|---|---|---|
+|**isDefault** <br>*optional*|Information calculated from parameter default in the Tosca file|boolean|
+|**value** <br>*optional*|A discrete value that the characteristic can take on|string|
+|**valueType** <br>*optional*|A kind of value that the characteristic can take on, such as numeric, text, and so forth<br>Retrieved in the Tosca in the topology_template section in the inputs section - parameter_type. <br>We do not manage parameter_type= list or map for Beijing release|string|
+
+
+<a name="servicespecification"></a>
+### ServiceSpecification
+ServiceSpecification is a class that offers characteristics to describe a type of service. Functionally, it acts as a template by which Services may be instantiated. By sharing the same specification, these services would therefore share the same set of characteristics.
+the service information are retrieved in SDC
+
+
+|Name|Description|Schema|
+|---|---|---|
+|**@baseType** <br>*optional*|Not used for Beijing release|string|
+|**@schemaLocation** <br>*optional*|Not used for Beijing release|string|
+|**@type** <br>*optional*|This attribute allows to dynamically extends TMF class. Valued with 'ONAPservice'. We used this features to add following attributes:<br>invariantUUID<br>toscaModelURL<br>toscaResourceName<br>category (1)<br>subcategory (1)<br>distributionStatus <br>**Default** : `"ONAPservice"`|string|
+|**attachment** <br>*optional*||< [Attachment](#attachment) > array|
+|**category** <br>*optional*|Additional attribute - extended through @type - category<br>Please note that this attribute is managed in TMF - in future release we'll introduce category resource|string|
+|**description** <br>*optional*|A narrative that explains in detail what the service specification is - Filled with SDC Service description|string|
+|**distributionStatus** <br>*optional*||[DistributionStatus](#distributionstatus)|
+|**href** <br>*optional*|Reference of the service specification- not mapped in Beijing|string|
+|**id** <br>*optional*|Unique identifier of the service specification. Filled with SDC Service uuid|string|
+|**invariantUUID** <br>*required*|Additional attribute (not in the TMF API) - extended through @type - invariantUUID|string|
+|**lifecycleStatus** <br>*optional*||[LifecycleStatusValues](#lifecyclestatusvalues)|
+|**name** <br>*optional*|Name of the service specification- Filled with SDC Service name|string|
+|**relatedParty** <br>*optional*||< [RelatedPartyRef](#relatedpartyref) > array|
+|**resourceSpecification** <br>*optional*||< [ResourceSpecificationRef](#resourcespecificationref) > array|
+|**serviceSpecCharacteristic** <br>*optional*||< [ServiceSpecCharacteristic](#servicespeccharacteristic) > array|
+|**subcategory** <br>*optional*|Additional attribute - extended through @type - category<br>Please note that this attribute is managed in TMF - in future release we'll introduce category resourc|string|
+|**targetServiceSchema** <br>*optional*||[TargetServiceSchemaRef](#targetserviceschemaref)|
+|**toscaModelURL** <br>*optional*|Additional attribute (not in the TMF API) - extended through @type - toscaModelURL|string|
+|**toscaResourceName** <br>*optional*|Additional attribute (not in the TMF API) - extended through @type - toscaResourceName|string|
+|**version** <br>*optional*|Service specification version - Filled with SDC Service version|string|
+
+
+<a name="targetserviceschemaref"></a>
+### TargetServiceSchemaRef
+
+|Name|Schema|
+|---|---|
+|**@schemaLocation** <br>*required*|string|
+|**@type** <br>*required*|string|
+
+
+<a name="timeperiod"></a>
+### TimePeriod
+A time period
+
+
+|Name|Description|Schema|
+|---|---|---|
+|**endDateTime** <br>*optional*|End date and time of the period|string (date-time)|
+|**startDateTime** <br>*optional*|Start date and time of the period|string (date-time)|
+
diff --git a/docs/offeredapis/serviceInventory/apiServiceInventory.plantuml b/docs/offeredapis/serviceInventory/apiServiceInventory.plantuml
new file mode 100644
index 0000000..447f3fe
--- /dev/null
+++ b/docs/offeredapis/serviceInventory/apiServiceInventory.plantuml
@@ -0,0 +1,97 @@
+@startuml
+
+enum stateValues {
+ feasibilityChecked
+ designed
+ reserved
+ inactive
+ active
+ terminated
+}
+
+class ErrorRepresentation {
+ code:int
+ reason:string
+ message:string
+ status:string
+ referenceError:string
+ @type:string
+ @schemaLocation:string
+}
+
+class Service {
+ id:string
+ href:string
+ name:string
+ type:string
+ hasStarted:boolean
+ @type:string
+ @baseType:string
+ @schemaLocation:string
+}
+ Service --> "0-1" stateValues : state
+ Service --> "0-1" ServiceSpecificationRef : serviceSpecification
+ Service --> "0-*" ServiceCharacteristic : characteristic
+ Service --> "0-*" SupportingResource : supportingResource
+ Service --> "0-*" RelatedPartyRef : relatedParty
+
+class ServiceSpecificationRef {
+ id:string
+ href:string
+ name:string
+ version:string
+ @referredType:string
+ @schemaLocation:string
+ invariantUUID:string
+}
+
+class ServiceCharacteristic {
+ name:string
+ valueType:string
+}
+ ServiceCharacteristic --> "0-1" Value : value
+
+class SupportingResource {
+ id:string
+ href:string
+ role:string
+ name:string
+ @referredType:string
+ @schemaLocation:string
+ status:string
+ modelInvariantId:string
+ modelVersionId:string
+ modelCustomisationId:string
+}
+
+class RelatedPartyRef {
+ id:string
+ href:string
+ role:string
+ @referredType:string
+}
+
+class Value {
+ @type:string
+ @schemaLocation:string
+ serviceCharacteristicValue:string
+}
+
+class ListRelatedPartyRef {
+ id:string
+ role:string
+}
+
+class ListServiceSpecificationRef {
+ id:string
+ name:string
+}
+
+class ListService {
+ id:string
+ name:string
+}
+ ListService --> "0-1" ListServiceSpecificationRef : serviceSpecification
+ ListService --> "0-1" ListRelatedPartyRef : relatedParty
+
+@enduml \ No newline at end of file
diff --git a/docs/offeredapis/serviceInventory/asciiDoc.adoc b/docs/offeredapis/serviceInventory/asciiDoc.adoc
new file mode 100644
index 0000000..c6f51c4
--- /dev/null
+++ b/docs/offeredapis/serviceInventory/asciiDoc.adoc
@@ -0,0 +1,461 @@
+= API ServiceInventory
+
+
+[[_overview]]
+== Overview
+
+=== Api URL
+
+https://api-designer.sso.infra.ftgroup/swagger-ui/?url=https://api-designer.sso.infra.ftgroup/api/1.0/apis/5an735gnX0/swagger.json[Swagger UI]
+
+
+https://plantuml.rd.francetelecom.fr/proxy?fmt=svg&src=https://api-designer.sso.infra.ftgroup/api/1.0/apis/5an735gnX0/plantuml&noCache=304710.0[plant UML UI]
+
+serviceInventory API designed for ONAP Beijing Release.
+This API is build from TMF open API18.0 (applying TMF Guideline 3.0)
+only operation GET (by id &amp; byList) for resource serviceSpecification is available
+
+
+=== Version information
+[%hardbreaks]
+__Version__ : 1.0.0_inProgress
+
+
+=== URI scheme
+[%hardbreaks]
+__Host__ : serverRoot
+__BasePath__ : /nbi/api/v1
+__Schemes__ : HTTPS
+
+
+=== Tags
+
+* Service
+
+
+=== Consumes
+
+* `application/json;charset=utf-8`
+
+
+=== Produces
+
+* `application/json;charset=utf-8`
+
+
+[[_paths]]
+== Resources
+
+[[_service_resource]]
+=== Service
+
+[[_servicefind]]
+==== List services
+....
+GET /service
+....
+
+
+===== Description
+This operation list service entities.
+Attribute selection is restricted.
+fields attribute may be used to filter retrieved attribute(s) for each service
+
+Specific business errors for current operation will be encapsulated in
+
+HTTP Response 422 Unprocessable entity
+
+
+===== Parameters
+
+[options="header", cols=".^2,.^3,.^4"]
+|===
+|Type|Name|Schema
+|**Query**|**fields** +
+__optional__|string
+|**Query**|**id** +
+__optional__|string
+|**Query**|**relatedParty.id** +
+__optional__|string
+|**Query**|**serviceSpecification.id** +
+__optional__|string
+|**Query**|**serviceSpecification.name** +
+__optional__|string
+|===
+
+
+===== Responses
+
+[options="header", cols=".^2,.^14,.^4"]
+|===
+|HTTP Code|Description|Schema
+|**200**|Success|< <<_listservice,ListService>> > array
+|**400**|Bad Request
+
+List of supported error codes:
+- 20: Invalid URL parameter value
+- 21: Missing body
+- 22: Invalid body
+- 23: Missing body field
+- 24: Invalid body field
+- 25: Missing header
+- 26: Invalid header value
+- 27: Missing query-string parameter
+- 28: Invalid query-string parameter value|<<_errorrepresentation,ErrorRepresentation>>
+|**401**|Unauthorized
+
+List of supported error codes:
+- 40: Missing credentials
+- 41: Invalid credentials
+- 42: Expired credentials|<<_errorrepresentation,ErrorRepresentation>>
+|**403**|Forbidden
+
+List of supported error codes:
+- 50: Access denied
+- 51: Forbidden requester
+- 52: Forbidden user
+- 53: Too many requests|<<_errorrepresentation,ErrorRepresentation>>
+|**404**|Not Found
+
+List of supported error codes:
+- 60: Resource not found|<<_errorrepresentation,ErrorRepresentation>>
+|**422**|Unprocessable entity
+
+Functional error|<<_errorrepresentation,ErrorRepresentation>>
+|**500**|Internal Server Error
+
+List of supported error codes:
+- 1: Internal error|<<_errorrepresentation,ErrorRepresentation>>
+|**503**|Service Unavailable
+
+List of supported error codes:
+- 5: The service is temporarily unavailable
+- 6: Orange API is over capacity, retry later !|<<_errorrepresentation,ErrorRepresentation>>
+|===
+
+
+[[_serviceget]]
+==== Retrieve a service
+....
+GET /service/{id}
+....
+
+
+===== Description
+This operation retrieves a service entity.
+Attribute selection is enabled for all first level attributes.
+
+Specific business errors for current operation will be encapsulated in
+
+HTTP Response 422 Unprocessable entity
+
+
+===== Parameters
+
+[options="header", cols=".^2,.^3,.^4"]
+|===
+|Type|Name|Schema
+|**Path**|**id** +
+__required__|string
+|**Query**|**relatedParty.id** +
+__optional__|string
+|**Query**|**serviceSpecification.id** +
+__optional__|string
+|**Query**|**serviceSpecification.name** +
+__optional__|string
+|===
+
+
+===== Responses
+
+[options="header", cols=".^2,.^14,.^4"]
+|===
+|HTTP Code|Description|Schema
+|**200**|Success|<<_service,Service>>
+|**400**|Bad Request
+
+List of supported error codes:
+- 20: Invalid URL parameter value
+- 21: Missing body
+- 22: Invalid body
+- 23: Missing body field
+- 24: Invalid body field
+- 25: Missing header
+- 26: Invalid header value
+- 27: Missing query-string parameter
+- 28: Invalid query-string parameter value|<<_errorrepresentation,ErrorRepresentation>>
+|**401**|Unauthorized
+
+List of supported error codes:
+- 40: Missing credentials
+- 41: Invalid credentials
+- 42: Expired credentials|<<_errorrepresentation,ErrorRepresentation>>
+|**403**|Forbidden
+
+List of supported error codes:
+- 50: Access denied
+- 51: Forbidden requester
+- 52: Forbidden user
+- 53: Too many requests|<<_errorrepresentation,ErrorRepresentation>>
+|**404**|Not Found
+
+List of supported error codes:
+- 60: Resource not found|<<_errorrepresentation,ErrorRepresentation>>
+|**422**|Unprocessable entity
+
+Functional error|<<_errorrepresentation,ErrorRepresentation>>
+|**500**|Internal Server Error
+
+List of supported error codes:
+- 1: Internal error|<<_errorrepresentation,ErrorRepresentation>>
+|**503**|Service Unavailable
+
+List of supported error codes:
+- 5: The service is temporarily unavailable
+- 6: Orange API is over capacity, retry later !|<<_errorrepresentation,ErrorRepresentation>>
+|===
+
+
+[[_definitions]]
+== Definitions
+
+[[_errorrepresentation]]
+=== ErrorRepresentation
+This class is used to describe error.
+for nbi Beijing release we do not manage additional error for serviceCatalog
+
+
+[options="header", cols=".^3,.^11,.^4"]
+|===
+|Name|Description|Schema
+|**@schemaLocation** +
+__optional__|it provides a link to the schema describing a REST resource.|string
+|**@type** +
+__optional__|The class type of a REST resource.|string
+|**code** +
+__required__|Application related code (as defined in the API or from a common list)|integer (int32)
+|**message** +
+__optional__|Text that provide more details and corrective actions related to the error. This can be shown to a client user.|string
+|**reason** +
+__required__|Text that explains the reason for error. This can be shown to a client user.|string
+|**referenceError** +
+__optional__|url pointing to documentation describing the error|string
+|**status** +
+__optional__|http error code extension like 400-2|string
+|===
+
+
+[[_listrelatedpartyref]]
+=== ListRelatedPartyRef
+This class is used to structure list of service(s) retrieved
+
+
+[options="header", cols=".^3,.^11,.^4"]
+|===
+|Name|Description|Schema
+|**id** +
+__optional__|Unique identifier of a related party|string
+|**role** +
+__optional__|Role played by the related party - only role “ONAPcustomer” is managed in Beijing release.|string
+|===
+
+
+[[_listservice]]
+=== ListService
+This class is used to structure list of service(s) retrieved
+
+
+[options="header", cols=".^3,.^11,.^4"]
+|===
+|Name|Description|Schema
+|**id** +
+__optional__|Unique identifier of the service|string
+|**name** +
+__optional__|Name of the service|string
+|**relatedParty** +
+__optional__||<<_listrelatedpartyref,ListRelatedPartyRef>>
+|**serviceSpecification** +
+__optional__||<<_listservicespecificationref,ListServiceSpecificationRef>>
+|===
+
+
+[[_listservicespecificationref]]
+=== ListServiceSpecificationRef
+This class is used to structure list of service(s) retrieved
+
+
+[options="header", cols=".^3,.^11,.^4"]
+|===
+|Name|Description|Schema
+|**id** +
+__optional__|Unique identifier of the service specification|string
+|**name** +
+__optional__|Name of the required service specification|string
+|===
+
+
+[[_relatedpartyref]]
+=== RelatedPartyRef
+RelatedParty reference. A related party defines party or party role linked to a specific entity.
+Only ONAP Customer is managed in Beijing release.
+
+
+[options="header", cols=".^3,.^11,.^4"]
+|===
+|Name|Description|Schema
+|**@referredType** +
+__optional__|Not managed in the Beijing release.|string
+|**href** +
+__optional__|Reference of a related party.
+Not filled in Beijing release.|string
+|**id** +
+__optional__|Unique identifier of a related party|string
+|**role** +
+__optional__|Role played by the related party.
+Filled with 'ONAPcustomer'|string
+|===
+
+
+[[_service]]
+=== Service
+Instantiated service (service_instance) in AAI
+
+
+[options="header", cols=".^3,.^11,.^4"]
+|===
+|Name|Description|Schema
+|**@baseType** +
+__optional__|Not managed in Beijing release|string
+|**@schemaLocation** +
+__optional__|Not managed in Beijing release|string
+|**@type** +
+__optional__|This attribute allows to dynamically extends TMF class. Not used in Beijing release.|string
+|**characteristic** +
+__optional__||< <<_servicecharacteristic,ServiceCharacteristic>> > array
+|**hasStarted** +
+__optional__|This is a Boolean attribute that, if TRUE, signifies that this Service has already been started. If the value of this attribute is FALSE, then this signifies that this Service has NOT been Started
+Not managed in Beijing release|boolean
+|**href** +
+__optional__|Reference of the service
+Not managed in Beijing release|string
+|**id** +
+__optional__|Unique identifier of the service - Valued with service-instance-id|string
+|**name** +
+__optional__|Name of the service - Valued with service-instance-name|string
+|**relatedParty** +
+__optional__||< <<_relatedpartyref,RelatedPartyRef>> > array
+|**serviceSpecification** +
+__optional__||<<_servicespecificationref,ServiceSpecificationRef>>
+|**state** +
+__optional__||<<_statevalues,stateValues>>
+|**supportingResource** +
+__optional__||< <<_supportingresource,SupportingResource>> > array
+|**type** +
+__optional__|Service type - valued with 'service-instance'|string
+|===
+
+
+[[_servicecharacteristic]]
+=== ServiceCharacteristic
+A list of name value pairs that define the service characteristics
+Not managed in Beijing release.
+
+
+[options="header", cols=".^3,.^11,.^4"]
+|===
+|Name|Description|Schema
+|**name** +
+__required__|Name of the characteristic
+Not managed in Beijing release.|string
+|**value** +
+__optional__||<<_value,Value>>
+|**valueType** +
+__optional__|Type of value for this characteristic.
+Not managed in Beijing release.|string
+|===
+
+
+[[_servicespecificationref]]
+=== ServiceSpecificationRef
+Service specification reference: ServiceSpecification of this service (catalog information)
+
+
+[options="header", cols=".^3,.^11,.^4"]
+|===
+|Name|Description|Schema
+|**@referredType** +
+__optional__|This attribute allows to dynamically extends TMF class. Valued with 'ONAPservice'. We used this features to add following attribute: invariantUUID|string
+|**@schemaLocation** +
+__optional__|Not managed in Beijing release|string
+|**href** +
+__optional__|Reference of the service specification.
+not managed in Beijing release.|string
+|**id** +
+__optional__|Unique identifier of the service specification. valued to model-version-id|string
+|**invariantUUID** +
+__optional__|Additional attribute (not in the TMF API) - extended through @referredType - model-invariant-id|string
+|**name** +
+__optional__|Name of the required service specification|string
+|**version** +
+__optional__|Service specification version.
+Not managed in Beijing release|string
+|===
+
+
+[[_supportingresource]]
+=== SupportingResource
+Supporting resource - A supportingResource will be retrieved for each relationship of the relationship-list where related-link describe a vnf
+
+
+[options="header", cols=".^3,.^11,.^4"]
+|===
+|Name|Description|Schema
+|**@referredType** +
+__optional__|This attribute allows to dynamically extends TMF class. Valued with 'ONAP resource'. We used this features to add following attributes:
+ status
+ modelInvariantId
+ modelVersionId
+ modelCustomisationId|string
+|**@schemaLocation** +
+__optional__|Not managed in Beijing release.|string
+|**href** +
+__optional__|Reference of the supporting resource|string
+|**id** +
+__optional__|Unique identifier of the supporting resource - Valued to vnf-id|string
+|**modelCustomisationId** +
+__optional__|Additional attribute (not in the TMF API) - extended through @referredType - valued with model-customisation-id|string
+|**modelInvariantId** +
+__optional__|Additional attribute (not in the TMF API) - extended through @referredType - valued with model-invariant-id|string
+|**modelVersionId** +
+__optional__|Additional attribute (not in the TMF API) - extended through @referredType - valued with model-verson-id|string
+|**name** +
+__optional__|Name of the supporting resource - Valued with vnf_-name|string
+|**role** +
+__optional__|Not managed in Beijing release.|string
+|**status** +
+__optional__|Additional attribute (not in the TMF API) - extended through @referredType - valued with prov-status|string
+|===
+
+
+[[_value]]
+=== Value
+Structure used to describe characteristic value.
+Not managed in Beijing release.
+
+
+[options="header", cols=".^3,.^11,.^4"]
+|===
+|Name|Description|Schema
+|**@schemaLocation** +
+__optional__|Not managed in Beijing release.|string
+|**@type** +
+__optional__|Not managed in Beijing release.|string
+|**serviceCharacteristicValue** +
+__optional__|Not managed in Beijing release.|string
+|===
+
+
+[[_statevalues]]
+=== stateValues
+__Type__ : enum (feasibilityChecked, designed, reserved, inactive, active, terminated)
+
diff --git a/docs/offeredapis/serviceInventory/documentation.html b/docs/offeredapis/serviceInventory/documentation.html
new file mode 100644
index 0000000..905fa1b
--- /dev/null
+++ b/docs/offeredapis/serviceInventory/documentation.html
@@ -0,0 +1,1423 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+<meta charset="UTF-8">
+<!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=edge"><![endif]-->
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<meta name="generator" content="Asciidoctor 1.5.6.1">
+<title>API ServiceInventory</title>
+<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Open+Sans:300,300italic,400,400italic,600,600italic%7CNoto+Serif:400,400italic,700,700italic%7CDroid+Sans+Mono:400,700">
+<style>
+/* Asciidoctor default stylesheet | MIT License | http://asciidoctor.org */
+/* Remove comment around @import statement below when using as a custom stylesheet */
+/*@import "https://fonts.googleapis.com/css?family=Open+Sans:300,300italic,400,400italic,600,600italic%7CNoto+Serif:400,400italic,700,700italic%7CDroid+Sans+Mono:400,700";*/
+article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}
+audio,canvas,video{display:inline-block}
+audio:not([controls]){display:none;height:0}
+[hidden],template{display:none}
+script{display:none!important}
+html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}
+a{background:transparent}
+a:focus{outline:thin dotted}
+a:active,a:hover{outline:0}
+h1{font-size:2em;margin:.67em 0}
+abbr[title]{border-bottom:1px dotted}
+b,strong{font-weight:bold}
+dfn{font-style:italic}
+hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}
+mark{background:#ff0;color:#000}
+code,kbd,pre,samp{font-family:monospace;font-size:1em}
+pre{white-space:pre-wrap}
+q{quotes:"\201C" "\201D" "\2018" "\2019"}
+small{font-size:80%}
+sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}
+sup{top:-.5em}
+sub{bottom:-.25em}
+img{border:0}
+svg:not(:root){overflow:hidden}
+figure{margin:0}
+fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}
+legend{border:0;padding:0}
+button,input,select,textarea{font-family:inherit;font-size:100%;margin:0}
+button,input{line-height:normal}
+button,select{text-transform:none}
+button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}
+button[disabled],html input[disabled]{cursor:default}
+input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0}
+input[type="search"]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}
+input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}
+button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}
+textarea{overflow:auto;vertical-align:top}
+table{border-collapse:collapse;border-spacing:0}
+*,*:before,*:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}
+html,body{font-size:100%}
+body{background:#fff;color:rgba(0,0,0,.8);padding:0;margin:0;font-family:"Noto Serif","DejaVu Serif",serif;font-weight:400;font-style:normal;line-height:1;position:relative;cursor:auto;tab-size:4;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased}
+a:hover{cursor:pointer}
+img,object,embed{max-width:100%;height:auto}
+object,embed{height:100%}
+img{-ms-interpolation-mode:bicubic}
+.left{float:left!important}
+.right{float:right!important}
+.text-left{text-align:left!important}
+.text-right{text-align:right!important}
+.text-center{text-align:center!important}
+.text-justify{text-align:justify!important}
+.hide{display:none}
+img,object,svg{display:inline-block;vertical-align:middle}
+textarea{height:auto;min-height:50px}
+select{width:100%}
+.center{margin-left:auto;margin-right:auto}
+.spread{width:100%}
+p.lead,.paragraph.lead>p,#preamble>.sectionbody>.paragraph:first-of-type p{font-size:1.21875em;line-height:1.6}
+.subheader,.admonitionblock td.content>.title,.audioblock>.title,.exampleblock>.title,.imageblock>.title,.listingblock>.title,.literalblock>.title,.stemblock>.title,.openblock>.title,.paragraph>.title,.quoteblock>.title,table.tableblock>.title,.verseblock>.title,.videoblock>.title,.dlist>.title,.olist>.title,.ulist>.title,.qlist>.title,.hdlist>.title{line-height:1.45;color:#7a2518;font-weight:400;margin-top:0;margin-bottom:.25em}
+div,dl,dt,dd,ul,ol,li,h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6,pre,form,p,blockquote,th,td{margin:0;padding:0;direction:ltr}
+a{color:#2156a5;text-decoration:underline;line-height:inherit}
+a:hover,a:focus{color:#1d4b8f}
+a img{border:none}
+p{font-family:inherit;font-weight:400;font-size:1em;line-height:1.6;margin-bottom:1.25em;text-rendering:optimizeLegibility}
+p aside{font-size:.875em;line-height:1.35;font-style:italic}
+h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{font-family:"Open Sans","DejaVu Sans",sans-serif;font-weight:300;font-style:normal;color:#ba3925;text-rendering:optimizeLegibility;margin-top:1em;margin-bottom:.5em;line-height:1.0125em}
+h1 small,h2 small,h3 small,#toctitle small,.sidebarblock>.content>.title small,h4 small,h5 small,h6 small{font-size:60%;color:#e99b8f;line-height:0}
+h1{font-size:2.125em}
+h2{font-size:1.6875em}
+h3,#toctitle,.sidebarblock>.content>.title{font-size:1.375em}
+h4,h5{font-size:1.125em}
+h6{font-size:1em}
+hr{border:solid #ddddd8;border-width:1px 0 0;clear:both;margin:1.25em 0 1.1875em;height:0}
+em,i{font-style:italic;line-height:inherit}
+strong,b{font-weight:bold;line-height:inherit}
+small{font-size:60%;line-height:inherit}
+code{font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;font-weight:400;color:rgba(0,0,0,.9)}
+ul,ol,dl{font-size:1em;line-height:1.6;margin-bottom:1.25em;list-style-position:outside;font-family:inherit}
+ul,ol{margin-left:1.5em}
+ul li ul,ul li ol{margin-left:1.25em;margin-bottom:0;font-size:1em}
+ul.square li ul,ul.circle li ul,ul.disc li ul{list-style:inherit}
+ul.square{list-style-type:square}
+ul.circle{list-style-type:circle}
+ul.disc{list-style-type:disc}
+ol li ul,ol li ol{margin-left:1.25em;margin-bottom:0}
+dl dt{margin-bottom:.3125em;font-weight:bold}
+dl dd{margin-bottom:1.25em}
+abbr,acronym{text-transform:uppercase;font-size:90%;color:rgba(0,0,0,.8);border-bottom:1px dotted #ddd;cursor:help}
+abbr{text-transform:none}
+blockquote{margin:0 0 1.25em;padding:.5625em 1.25em 0 1.1875em;border-left:1px solid #ddd}
+blockquote cite{display:block;font-size:.9375em;color:rgba(0,0,0,.6)}
+blockquote cite:before{content:"\2014 \0020"}
+blockquote cite a,blockquote cite a:visited{color:rgba(0,0,0,.6)}
+blockquote,blockquote p{line-height:1.6;color:rgba(0,0,0,.85)}
+@media only screen and (min-width:768px){h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2}
+h1{font-size:2.75em}
+h2{font-size:2.3125em}
+h3,#toctitle,.sidebarblock>.content>.title{font-size:1.6875em}
+h4{font-size:1.4375em}}
+table{background:#fff;margin-bottom:1.25em;border:solid 1px #dedede}
+table thead,table tfoot{background:#f7f8f7;font-weight:bold}
+table thead tr th,table thead tr td,table tfoot tr th,table tfoot tr td{padding:.5em .625em .625em;font-size:inherit;color:rgba(0,0,0,.8);text-align:left}
+table tr th,table tr td{padding:.5625em .625em;font-size:inherit;color:rgba(0,0,0,.8)}
+table tr.even,table tr.alt,table tr:nth-of-type(even){background:#f8f8f7}
+table thead tr th,table tfoot tr th,table tbody tr td,table tr td,table tfoot tr td{display:table-cell;line-height:1.6}
+h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2;word-spacing:-.05em}
+h1 strong,h2 strong,h3 strong,#toctitle strong,.sidebarblock>.content>.title strong,h4 strong,h5 strong,h6 strong{font-weight:400}
+.clearfix:before,.clearfix:after,.float-group:before,.float-group:after{content:" ";display:table}
+.clearfix:after,.float-group:after{clear:both}
+*:not(pre)>code{font-size:.9375em;font-style:normal!important;letter-spacing:0;padding:.1em .5ex;word-spacing:-.15em;background-color:#f7f7f8;-webkit-border-radius:4px;border-radius:4px;line-height:1.45;text-rendering:optimizeSpeed;word-wrap:break-word}
+*:not(pre)>code.nobreak{word-wrap:normal}
+*:not(pre)>code.nowrap{white-space:nowrap}
+pre,pre>code{line-height:1.45;color:rgba(0,0,0,.9);font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;font-weight:400;text-rendering:optimizeSpeed}
+em em{font-style:normal}
+strong strong{font-weight:400}
+.keyseq{color:rgba(51,51,51,.8)}
+kbd{font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;display:inline-block;color:rgba(0,0,0,.8);font-size:.65em;line-height:1.45;background-color:#f7f7f7;border:1px solid #ccc;-webkit-border-radius:3px;border-radius:3px;-webkit-box-shadow:0 1px 0 rgba(0,0,0,.2),0 0 0 .1em white inset;box-shadow:0 1px 0 rgba(0,0,0,.2),0 0 0 .1em #fff inset;margin:0 .15em;padding:.2em .5em;vertical-align:middle;position:relative;top:-.1em;white-space:nowrap}
+.keyseq kbd:first-child{margin-left:0}
+.keyseq kbd:last-child{margin-right:0}
+.menuseq,.menuref{color:#000}
+.menuseq b:not(.caret),.menuref{font-weight:inherit}
+.menuseq{word-spacing:-.02em}
+.menuseq b.caret{font-size:1.25em;line-height:.8}
+.menuseq i.caret{font-weight:bold;text-align:center;width:.45em}
+b.button:before,b.button:after{position:relative;top:-1px;font-weight:400}
+b.button:before{content:"[";padding:0 3px 0 2px}
+b.button:after{content:"]";padding:0 2px 0 3px}
+p a>code:hover{color:rgba(0,0,0,.9)}
+#header,#content,#footnotes,#footer{width:100%;margin-left:auto;margin-right:auto;margin-top:0;margin-bottom:0;max-width:62.5em;*zoom:1;position:relative;padding-left:.9375em;padding-right:.9375em}
+#header:before,#header:after,#content:before,#content:after,#footnotes:before,#footnotes:after,#footer:before,#footer:after{content:" ";display:table}
+#header:after,#content:after,#footnotes:after,#footer:after{clear:both}
+#content{margin-top:1.25em}
+#content:before{content:none}
+#header>h1:first-child{color:rgba(0,0,0,.85);margin-top:2.25rem;margin-bottom:0}
+#header>h1:first-child+#toc{margin-top:8px;border-top:1px solid #ddddd8}
+#header>h1:only-child,body.toc2 #header>h1:nth-last-child(2){border-bottom:1px solid #ddddd8;padding-bottom:8px}
+#header .details{border-bottom:1px solid #ddddd8;line-height:1.45;padding-top:.25em;padding-bottom:.25em;padding-left:.25em;color:rgba(0,0,0,.6);display:-ms-flexbox;display:-webkit-flex;display:flex;-ms-flex-flow:row wrap;-webkit-flex-flow:row wrap;flex-flow:row wrap}
+#header .details span:first-child{margin-left:-.125em}
+#header .details span.email a{color:rgba(0,0,0,.85)}
+#header .details br{display:none}
+#header .details br+span:before{content:"\00a0\2013\00a0"}
+#header .details br+span.author:before{content:"\00a0\22c5\00a0";color:rgba(0,0,0,.85)}
+#header .details br+span#revremark:before{content:"\00a0|\00a0"}
+#header #revnumber{text-transform:capitalize}
+#header #revnumber:after{content:"\00a0"}
+#content>h1:first-child:not([class]){color:rgba(0,0,0,.85);border-bottom:1px solid #ddddd8;padding-bottom:8px;margin-top:0;padding-top:1rem;margin-bottom:1.25rem}
+#toc{border-bottom:1px solid #efefed;padding-bottom:.5em}
+#toc>ul{margin-left:.125em}
+#toc ul.sectlevel0>li>a{font-style:italic}
+#toc ul.sectlevel0 ul.sectlevel1{margin:.5em 0}
+#toc ul{font-family:"Open Sans","DejaVu Sans",sans-serif;list-style-type:none}
+#toc li{line-height:1.3334;margin-top:.3334em}
+#toc a{text-decoration:none}
+#toc a:active{text-decoration:underline}
+#toctitle{color:#7a2518;font-size:1.2em}
+@media only screen and (min-width:768px){#toctitle{font-size:1.375em}
+body.toc2{padding-left:15em;padding-right:0}
+#toc.toc2{margin-top:0!important;background-color:#f8f8f7;position:fixed;width:15em;left:0;top:0;border-right:1px solid #efefed;border-top-width:0!important;border-bottom-width:0!important;z-index:1000;padding:1.25em 1em;height:100%;overflow:auto}
+#toc.toc2 #toctitle{margin-top:0;margin-bottom:.8rem;font-size:1.2em}
+#toc.toc2>ul{font-size:.9em;margin-bottom:0}
+#toc.toc2 ul ul{margin-left:0;padding-left:1em}
+#toc.toc2 ul.sectlevel0 ul.sectlevel1{padding-left:0;margin-top:.5em;margin-bottom:.5em}
+body.toc2.toc-right{padding-left:0;padding-right:15em}
+body.toc2.toc-right #toc.toc2{border-right-width:0;border-left:1px solid #efefed;left:auto;right:0}}
+@media only screen and (min-width:1280px){body.toc2{padding-left:20em;padding-right:0}
+#toc.toc2{width:20em}
+#toc.toc2 #toctitle{font-size:1.375em}
+#toc.toc2>ul{font-size:.95em}
+#toc.toc2 ul ul{padding-left:1.25em}
+body.toc2.toc-right{padding-left:0;padding-right:20em}}
+#content #toc{border-style:solid;border-width:1px;border-color:#e0e0dc;margin-bottom:1.25em;padding:1.25em;background:#f8f8f7;-webkit-border-radius:4px;border-radius:4px}
+#content #toc>:first-child{margin-top:0}
+#content #toc>:last-child{margin-bottom:0}
+#footer{max-width:100%;background-color:rgba(0,0,0,.8);padding:1.25em}
+#footer-text{color:rgba(255,255,255,.8);line-height:1.44}
+.sect1{padding-bottom:.625em}
+@media only screen and (min-width:768px){.sect1{padding-bottom:1.25em}}
+.sect1+.sect1{border-top:1px solid #efefed}
+#content h1>a.anchor,h2>a.anchor,h3>a.anchor,#toctitle>a.anchor,.sidebarblock>.content>.title>a.anchor,h4>a.anchor,h5>a.anchor,h6>a.anchor{position:absolute;z-index:1001;width:1.5ex;margin-left:-1.5ex;display:block;text-decoration:none!important;visibility:hidden;text-align:center;font-weight:400}
+#content h1>a.anchor:before,h2>a.anchor:before,h3>a.anchor:before,#toctitle>a.anchor:before,.sidebarblock>.content>.title>a.anchor:before,h4>a.anchor:before,h5>a.anchor:before,h6>a.anchor:before{content:"\00A7";font-size:.85em;display:block;padding-top:.1em}
+#content h1:hover>a.anchor,#content h1>a.anchor:hover,h2:hover>a.anchor,h2>a.anchor:hover,h3:hover>a.anchor,#toctitle:hover>a.anchor,.sidebarblock>.content>.title:hover>a.anchor,h3>a.anchor:hover,#toctitle>a.anchor:hover,.sidebarblock>.content>.title>a.anchor:hover,h4:hover>a.anchor,h4>a.anchor:hover,h5:hover>a.anchor,h5>a.anchor:hover,h6:hover>a.anchor,h6>a.anchor:hover{visibility:visible}
+#content h1>a.link,h2>a.link,h3>a.link,#toctitle>a.link,.sidebarblock>.content>.title>a.link,h4>a.link,h5>a.link,h6>a.link{color:#ba3925;text-decoration:none}
+#content h1>a.link:hover,h2>a.link:hover,h3>a.link:hover,#toctitle>a.link:hover,.sidebarblock>.content>.title>a.link:hover,h4>a.link:hover,h5>a.link:hover,h6>a.link:hover{color:#a53221}
+.audioblock,.imageblock,.literalblock,.listingblock,.stemblock,.videoblock{margin-bottom:1.25em}
+.admonitionblock td.content>.title,.audioblock>.title,.exampleblock>.title,.imageblock>.title,.listingblock>.title,.literalblock>.title,.stemblock>.title,.openblock>.title,.paragraph>.title,.quoteblock>.title,table.tableblock>.title,.verseblock>.title,.videoblock>.title,.dlist>.title,.olist>.title,.ulist>.title,.qlist>.title,.hdlist>.title{text-rendering:optimizeLegibility;text-align:left;font-family:"Noto Serif","DejaVu Serif",serif;font-size:1rem;font-style:italic}
+table.tableblock>caption.title{white-space:nowrap;overflow:visible;max-width:0}
+.paragraph.lead>p,#preamble>.sectionbody>.paragraph:first-of-type p{color:rgba(0,0,0,.85)}
+table.tableblock #preamble>.sectionbody>.paragraph:first-of-type p{font-size:inherit}
+.admonitionblock>table{border-collapse:separate;border:0;background:none;width:100%}
+.admonitionblock>table td.icon{text-align:center;width:80px}
+.admonitionblock>table td.icon img{max-width:initial}
+.admonitionblock>table td.icon .title{font-weight:bold;font-family:"Open Sans","DejaVu Sans",sans-serif;text-transform:uppercase}
+.admonitionblock>table td.content{padding-left:1.125em;padding-right:1.25em;border-left:1px solid #ddddd8;color:rgba(0,0,0,.6)}
+.admonitionblock>table td.content>:last-child>:last-child{margin-bottom:0}
+.exampleblock>.content{border-style:solid;border-width:1px;border-color:#e6e6e6;margin-bottom:1.25em;padding:1.25em;background:#fff;-webkit-border-radius:4px;border-radius:4px}
+.exampleblock>.content>:first-child{margin-top:0}
+.exampleblock>.content>:last-child{margin-bottom:0}
+.sidebarblock{border-style:solid;border-width:1px;border-color:#e0e0dc;margin-bottom:1.25em;padding:1.25em;background:#f8f8f7;-webkit-border-radius:4px;border-radius:4px}
+.sidebarblock>:first-child{margin-top:0}
+.sidebarblock>:last-child{margin-bottom:0}
+.sidebarblock>.content>.title{color:#7a2518;margin-top:0;text-align:center}
+.exampleblock>.content>:last-child>:last-child,.exampleblock>.content .olist>ol>li:last-child>:last-child,.exampleblock>.content .ulist>ul>li:last-child>:last-child,.exampleblock>.content .qlist>ol>li:last-child>:last-child,.sidebarblock>.content>:last-child>:last-child,.sidebarblock>.content .olist>ol>li:last-child>:last-child,.sidebarblock>.content .ulist>ul>li:last-child>:last-child,.sidebarblock>.content .qlist>ol>li:last-child>:last-child{margin-bottom:0}
+.literalblock pre,.listingblock pre:not(.highlight),.listingblock pre[class="highlight"],.listingblock pre[class^="highlight "],.listingblock pre.CodeRay,.listingblock pre.prettyprint{background:#f7f7f8}
+.sidebarblock .literalblock pre,.sidebarblock .listingblock pre:not(.highlight),.sidebarblock .listingblock pre[class="highlight"],.sidebarblock .listingblock pre[class^="highlight "],.sidebarblock .listingblock pre.CodeRay,.sidebarblock .listingblock pre.prettyprint{background:#f2f1f1}
+.literalblock pre,.literalblock pre[class],.listingblock pre,.listingblock pre[class]{-webkit-border-radius:4px;border-radius:4px;word-wrap:break-word;padding:1em;font-size:.8125em}
+.literalblock pre.nowrap,.literalblock pre[class].nowrap,.listingblock pre.nowrap,.listingblock pre[class].nowrap{overflow-x:auto;white-space:pre;word-wrap:normal}
+@media only screen and (min-width:768px){.literalblock pre,.literalblock pre[class],.listingblock pre,.listingblock pre[class]{font-size:.90625em}}
+@media only screen and (min-width:1280px){.literalblock pre,.literalblock pre[class],.listingblock pre,.listingblock pre[class]{font-size:1em}}
+.literalblock.output pre{color:#f7f7f8;background-color:rgba(0,0,0,.9)}
+.listingblock pre.highlightjs{padding:0}
+.listingblock pre.highlightjs>code{padding:1em;-webkit-border-radius:4px;border-radius:4px}
+.listingblock pre.prettyprint{border-width:0}
+.listingblock>.content{position:relative}
+.listingblock code[data-lang]:before{display:none;content:attr(data-lang);position:absolute;font-size:.75em;top:.425rem;right:.5rem;line-height:1;text-transform:uppercase;color:#999}
+.listingblock:hover code[data-lang]:before{display:block}
+.listingblock.terminal pre .command:before{content:attr(data-prompt);padding-right:.5em;color:#999}
+.listingblock.terminal pre .command:not([data-prompt]):before{content:"$"}
+table.pyhltable{border-collapse:separate;border:0;margin-bottom:0;background:none}
+table.pyhltable td{vertical-align:top;padding-top:0;padding-bottom:0;line-height:1.45}
+table.pyhltable td.code{padding-left:.75em;padding-right:0}
+pre.pygments .lineno,table.pyhltable td:not(.code){color:#999;padding-left:0;padding-right:.5em;border-right:1px solid #ddddd8}
+pre.pygments .lineno{display:inline-block;margin-right:.25em}
+table.pyhltable .linenodiv{background:none!important;padding-right:0!important}
+.quoteblock{margin:0 1em 1.25em 1.5em;display:table}
+.quoteblock>.title{margin-left:-1.5em;margin-bottom:.75em}
+.quoteblock blockquote,.quoteblock blockquote p{color:rgba(0,0,0,.85);font-size:1.15rem;line-height:1.75;word-spacing:.1em;letter-spacing:0;font-style:italic;text-align:justify}
+.quoteblock blockquote{margin:0;padding:0;border:0}
+.quoteblock blockquote:before{content:"\201c";float:left;font-size:2.75em;font-weight:bold;line-height:.6em;margin-left:-.6em;color:#7a2518;text-shadow:0 1px 2px rgba(0,0,0,.1)}
+.quoteblock blockquote>.paragraph:last-child p{margin-bottom:0}
+.quoteblock .attribution{margin-top:.5em;margin-right:.5ex;text-align:right}
+.quoteblock .quoteblock{margin-left:0;margin-right:0;padding:.5em 0;border-left:3px solid rgba(0,0,0,.6)}
+.quoteblock .quoteblock blockquote{padding:0 0 0 .75em}
+.quoteblock .quoteblock blockquote:before{display:none}
+.verseblock{margin:0 1em 1.25em 1em}
+.verseblock pre{font-family:"Open Sans","DejaVu Sans",sans;font-size:1.15rem;color:rgba(0,0,0,.85);font-weight:300;text-rendering:optimizeLegibility}
+.verseblock pre strong{font-weight:400}
+.verseblock .attribution{margin-top:1.25rem;margin-left:.5ex}
+.quoteblock .attribution,.verseblock .attribution{font-size:.9375em;line-height:1.45;font-style:italic}
+.quoteblock .attribution br,.verseblock .attribution br{display:none}
+.quoteblock .attribution cite,.verseblock .attribution cite{display:block;letter-spacing:-.025em;color:rgba(0,0,0,.6)}
+.quoteblock.abstract{margin:0 0 1.25em 0;display:block}
+.quoteblock.abstract blockquote,.quoteblock.abstract blockquote p{text-align:left;word-spacing:0}
+.quoteblock.abstract blockquote:before,.quoteblock.abstract blockquote p:first-of-type:before{display:none}
+table.tableblock{max-width:100%;border-collapse:separate}
+table.tableblock td>.paragraph:last-child p>p:last-child,table.tableblock th>p:last-child,table.tableblock td>p:last-child{margin-bottom:0}
+table.tableblock,th.tableblock,td.tableblock{border:0 solid #dedede}
+table.grid-all>thead>tr>.tableblock,table.grid-all>tbody>tr>.tableblock{border-width:0 1px 1px 0}
+table.grid-all>tfoot>tr>.tableblock{border-width:1px 1px 0 0}
+table.grid-cols>*>tr>.tableblock{border-width:0 1px 0 0}
+table.grid-rows>thead>tr>.tableblock,table.grid-rows>tbody>tr>.tableblock{border-width:0 0 1px 0}
+table.grid-rows>tfoot>tr>.tableblock{border-width:1px 0 0 0}
+table.grid-all>*>tr>.tableblock:last-child,table.grid-cols>*>tr>.tableblock:last-child{border-right-width:0}
+table.grid-all>tbody>tr:last-child>.tableblock,table.grid-all>thead:last-child>tr>.tableblock,table.grid-rows>tbody>tr:last-child>.tableblock,table.grid-rows>thead:last-child>tr>.tableblock{border-bottom-width:0}
+table.frame-all{border-width:1px}
+table.frame-sides{border-width:0 1px}
+table.frame-topbot{border-width:1px 0}
+th.halign-left,td.halign-left{text-align:left}
+th.halign-right,td.halign-right{text-align:right}
+th.halign-center,td.halign-center{text-align:center}
+th.valign-top,td.valign-top{vertical-align:top}
+th.valign-bottom,td.valign-bottom{vertical-align:bottom}
+th.valign-middle,td.valign-middle{vertical-align:middle}
+table thead th,table tfoot th{font-weight:bold}
+tbody tr th{display:table-cell;line-height:1.6;background:#f7f8f7}
+tbody tr th,tbody tr th p,tfoot tr th,tfoot tr th p{color:rgba(0,0,0,.8);font-weight:bold}
+p.tableblock>code:only-child{background:none;padding:0}
+p.tableblock{font-size:1em}
+td>div.verse{white-space:pre}
+ol{margin-left:1.75em}
+ul li ol{margin-left:1.5em}
+dl dd{margin-left:1.125em}
+dl dd:last-child,dl dd:last-child>:last-child{margin-bottom:0}
+ol>li p,ul>li p,ul dd,ol dd,.olist .olist,.ulist .ulist,.ulist .olist,.olist .ulist{margin-bottom:.625em}
+ul.checklist,ul.none,ol.none,ul.no-bullet,ol.no-bullet,ol.unnumbered,ul.unstyled,ol.unstyled{list-style-type:none}
+ul.no-bullet,ol.no-bullet,ol.unnumbered{margin-left:.625em}
+ul.unstyled,ol.unstyled{margin-left:0}
+ul.checklist{margin-left:.625em}
+ul.checklist li>p:first-child>.fa-square-o:first-child,ul.checklist li>p:first-child>.fa-check-square-o:first-child{width:1.25em;font-size:.8em;position:relative;bottom:.125em}
+ul.checklist li>p:first-child>input[type="checkbox"]:first-child{margin-right:.25em}
+ul.inline{margin:0 auto .625em auto;margin-left:-1.375em;margin-right:0;padding:0;list-style:none;overflow:hidden}
+ul.inline>li{list-style:none;float:left;margin-left:1.375em;display:block}
+ul.inline>li>*{display:block}
+.unstyled dl dt{font-weight:400;font-style:normal}
+ol.arabic{list-style-type:decimal}
+ol.decimal{list-style-type:decimal-leading-zero}
+ol.loweralpha{list-style-type:lower-alpha}
+ol.upperalpha{list-style-type:upper-alpha}
+ol.lowerroman{list-style-type:lower-roman}
+ol.upperroman{list-style-type:upper-roman}
+ol.lowergreek{list-style-type:lower-greek}
+.hdlist>table,.colist>table{border:0;background:none}
+.hdlist>table>tbody>tr,.colist>table>tbody>tr{background:none}
+td.hdlist1,td.hdlist2{vertical-align:top;padding:0 .625em}
+td.hdlist1{font-weight:bold;padding-bottom:1.25em}
+.literalblock+.colist,.listingblock+.colist{margin-top:-.5em}
+.colist>table tr>td:first-of-type{padding:.4em .75em 0 .75em;line-height:1;vertical-align:top}
+.colist>table tr>td:first-of-type img{max-width:initial}
+.colist>table tr>td:last-of-type{padding:.25em 0}
+.thumb,.th{line-height:0;display:inline-block;border:solid 4px #fff;-webkit-box-shadow:0 0 0 1px #ddd;box-shadow:0 0 0 1px #ddd}
+.imageblock.left,.imageblock[style*="float: left"]{margin:.25em .625em 1.25em 0}
+.imageblock.right,.imageblock[style*="float: right"]{margin:.25em 0 1.25em .625em}
+.imageblock>.title{margin-bottom:0}
+.imageblock.thumb,.imageblock.th{border-width:6px}
+.imageblock.thumb>.title,.imageblock.th>.title{padding:0 .125em}
+.image.left,.image.right{margin-top:.25em;margin-bottom:.25em;display:inline-block;line-height:0}
+.image.left{margin-right:.625em}
+.image.right{margin-left:.625em}
+a.image{text-decoration:none;display:inline-block}
+a.image object{pointer-events:none}
+sup.footnote,sup.footnoteref{font-size:.875em;position:static;vertical-align:super}
+sup.footnote a,sup.footnoteref a{text-decoration:none}
+sup.footnote a:active,sup.footnoteref a:active{text-decoration:underline}
+#footnotes{padding-top:.75em;padding-bottom:.75em;margin-bottom:.625em}
+#footnotes hr{width:20%;min-width:6.25em;margin:-.25em 0 .75em 0;border-width:1px 0 0 0}
+#footnotes .footnote{padding:0 .375em 0 .225em;line-height:1.3334;font-size:.875em;margin-left:1.2em;text-indent:-1.05em;margin-bottom:.2em}
+#footnotes .footnote a:first-of-type{font-weight:bold;text-decoration:none}
+#footnotes .footnote:last-of-type{margin-bottom:0}
+#content #footnotes{margin-top:-.625em;margin-bottom:0;padding:.75em 0}
+.gist .file-data>table{border:0;background:#fff;width:100%;margin-bottom:0}
+.gist .file-data>table td.line-data{width:99%}
+div.unbreakable{page-break-inside:avoid}
+.big{font-size:larger}
+.small{font-size:smaller}
+.underline{text-decoration:underline}
+.overline{text-decoration:overline}
+.line-through{text-decoration:line-through}
+.aqua{color:#00bfbf}
+.aqua-background{background-color:#00fafa}
+.black{color:#000}
+.black-background{background-color:#000}
+.blue{color:#0000bf}
+.blue-background{background-color:#0000fa}
+.fuchsia{color:#bf00bf}
+.fuchsia-background{background-color:#fa00fa}
+.gray{color:#606060}
+.gray-background{background-color:#7d7d7d}
+.green{color:#006000}
+.green-background{background-color:#007d00}
+.lime{color:#00bf00}
+.lime-background{background-color:#00fa00}
+.maroon{color:#600000}
+.maroon-background{background-color:#7d0000}
+.navy{color:#000060}
+.navy-background{background-color:#00007d}
+.olive{color:#606000}
+.olive-background{background-color:#7d7d00}
+.purple{color:#600060}
+.purple-background{background-color:#7d007d}
+.red{color:#bf0000}
+.red-background{background-color:#fa0000}
+.silver{color:#909090}
+.silver-background{background-color:#bcbcbc}
+.teal{color:#006060}
+.teal-background{background-color:#007d7d}
+.white{color:#bfbfbf}
+.white-background{background-color:#fafafa}
+.yellow{color:#bfbf00}
+.yellow-background{background-color:#fafa00}
+span.icon>.fa{cursor:default}
+a span.icon>.fa{cursor:inherit}
+.admonitionblock td.icon [class^="fa icon-"]{font-size:2.5em;text-shadow:1px 1px 2px rgba(0,0,0,.5);cursor:default}
+.admonitionblock td.icon .icon-note:before{content:"\f05a";color:#19407c}
+.admonitionblock td.icon .icon-tip:before{content:"\f0eb";text-shadow:1px 1px 2px rgba(155,155,0,.8);color:#111}
+.admonitionblock td.icon .icon-warning:before{content:"\f071";color:#bf6900}
+.admonitionblock td.icon .icon-caution:before{content:"\f06d";color:#bf3400}
+.admonitionblock td.icon .icon-important:before{content:"\f06a";color:#bf0000}
+.conum[data-value]{display:inline-block;color:#fff!important;background-color:rgba(0,0,0,.8);-webkit-border-radius:100px;border-radius:100px;text-align:center;font-size:.75em;width:1.67em;height:1.67em;line-height:1.67em;font-family:"Open Sans","DejaVu Sans",sans-serif;font-style:normal;font-weight:bold}
+.conum[data-value] *{color:#fff!important}
+.conum[data-value]+b{display:none}
+.conum[data-value]:after{content:attr(data-value)}
+pre .conum[data-value]{position:relative;top:-.125em}
+b.conum *{color:inherit!important}
+.conum:not([data-value]):empty{display:none}
+dt,th.tableblock,td.content,div.footnote{text-rendering:optimizeLegibility}
+h1,h2,p,td.content,span.alt{letter-spacing:-.01em}
+p strong,td.content strong,div.footnote strong{letter-spacing:-.005em}
+p,blockquote,dt,td.content,span.alt{font-size:1.0625rem}
+p{margin-bottom:1.25rem}
+.sidebarblock p,.sidebarblock dt,.sidebarblock td.content,p.tableblock{font-size:1em}
+.exampleblock>.content{background-color:#fffef7;border-color:#e0e0dc;-webkit-box-shadow:0 1px 4px #e0e0dc;box-shadow:0 1px 4px #e0e0dc}
+.print-only{display:none!important}
+@media print{@page{margin:1.25cm .75cm}
+*{-webkit-box-shadow:none!important;box-shadow:none!important;text-shadow:none!important}
+a{color:inherit!important;text-decoration:underline!important}
+a.bare,a[href^="#"],a[href^="mailto:"]{text-decoration:none!important}
+a[href^="http:"]:not(.bare):after,a[href^="https:"]:not(.bare):after{content:"(" attr(href) ")";display:inline-block;font-size:.875em;padding-left:.25em}
+abbr[title]:after{content:" (" attr(title) ")"}
+pre,blockquote,tr,img,object,svg{page-break-inside:avoid}
+thead{display:table-header-group}
+svg{max-width:100%}
+p,blockquote,dt,td.content{font-size:1em;orphans:3;widows:3}
+h2,h3,#toctitle,.sidebarblock>.content>.title{page-break-after:avoid}
+#toc,.sidebarblock,.exampleblock>.content{background:none!important}
+#toc{border-bottom:1px solid #ddddd8!important;padding-bottom:0!important}
+.sect1{padding-bottom:0!important}
+.sect1+.sect1{border:0!important}
+#header>h1:first-child{margin-top:1.25rem}
+body.book #header{text-align:center}
+body.book #header>h1:first-child{border:0!important;margin:2.5em 0 1em 0}
+body.book #header .details{border:0!important;display:block;padding:0!important}
+body.book #header .details span:first-child{margin-left:0!important}
+body.book #header .details br{display:block}
+body.book #header .details br+span:before{content:none!important}
+body.book #toc{border:0!important;text-align:left!important;padding:0!important;margin:0!important}
+body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-break-before:always}
+.listingblock code[data-lang]:before{display:block}
+#footer{background:none!important;padding:0 .9375em}
+#footer-text{color:rgba(0,0,0,.6)!important;font-size:.9em}
+.hide-on-print{display:none!important}
+.print-only{display:block!important}
+.hide-for-print{display:none!important}
+.show-for-print{display:inherit!important}}
+</style>
+</head>
+<body class="article toc2 toc-left">
+<div id="header">
+<h1>API ServiceInventory</h1>
+<div id="toc" class="toc2">
+<div id="toctitle">Table of Contents</div>
+<ul class="sectlevel1">
+<li><a href="#_overview">Overview</a>
+<ul class="sectlevel2">
+<li><a href="#_api_url">Api URL</a></li>
+<li><a href="#_version_information">Version information</a></li>
+<li><a href="#_uri_scheme">URI scheme</a></li>
+<li><a href="#_tags">Tags</a></li>
+<li><a href="#_consumes">Consumes</a></li>
+<li><a href="#_produces">Produces</a></li>
+</ul>
+</li>
+<li><a href="#_paths">Resources</a>
+<ul class="sectlevel2">
+<li><a href="#_service_resource">Service</a></li>
+</ul>
+</li>
+<li><a href="#_definitions">Definitions</a>
+<ul class="sectlevel2">
+<li><a href="#_errorrepresentation">ErrorRepresentation</a></li>
+<li><a href="#_listrelatedpartyref">ListRelatedPartyRef</a></li>
+<li><a href="#_listservice">ListService</a></li>
+<li><a href="#_listservicespecificationref">ListServiceSpecificationRef</a></li>
+<li><a href="#_relatedpartyref">RelatedPartyRef</a></li>
+<li><a href="#_service">Service</a></li>
+<li><a href="#_servicecharacteristic">ServiceCharacteristic</a></li>
+<li><a href="#_servicespecificationref">ServiceSpecificationRef</a></li>
+<li><a href="#_supportingresource">SupportingResource</a></li>
+<li><a href="#_value">Value</a></li>
+<li><a href="#_statevalues">stateValues</a></li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<div id="content">
+<div class="sect1">
+<h2 id="_overview">Overview</h2>
+<div class="sectionbody">
+<div class="sect2">
+<div class="paragraph">
+<p>serviceInventory API designed for ONAP Beijing Release.
+This API is build from TMF open API18.0 (applying TMF Guideline 3.0)
+only operation GET (by id &amp; byList) for resource serviceSpecification is available</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_version_information">Version information</h3>
+<div class="paragraph">
+<p><em>Version</em> : 1.0.0_inProgress</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_uri_scheme">URI scheme</h3>
+<div class="paragraph">
+<p><em>Host</em> : serverRoot<br>
+<em>BasePath</em> : /nbi/api/v1<br>
+<em>Schemes</em> : HTTPS</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_tags">Tags</h3>
+<div class="ulist">
+<ul>
+<li>
+<p>Service</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_consumes">Consumes</h3>
+<div class="ulist">
+<ul>
+<li>
+<p><code>application/json;charset=utf-8</code></p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_produces">Produces</h3>
+<div class="ulist">
+<ul>
+<li>
+<p><code>application/json;charset=utf-8</code></p>
+</li>
+</ul>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_paths">Resources</h2>
+<div class="sectionbody">
+<div class="sect2">
+<h3 id="_service_resource">Service</h3>
+<div class="sect3">
+<h4 id="_servicefind">List services</h4>
+<div class="literalblock">
+<div class="content">
+<pre>GET /service</pre>
+</div>
+</div>
+<div class="sect4">
+<h5 id="_description">Description</h5>
+<div class="paragraph">
+<p>This operation list service entities.
+Attribute selection is restricted.
+fields attribute may be used to filter retrieved attribute(s) for each service</p>
+</div>
+<div class="paragraph">
+<p>Specific business errors for current operation will be encapsulated in</p>
+</div>
+<div class="paragraph">
+<p>HTTP Response 422 Unprocessable entity</p>
+</div>
+</div>
+<div class="sect4">
+<h5 id="_parameters">Parameters</h5>
+<table class="tableblock frame-all grid-all spread">
+<colgroup>
+<col style="width: 22.2222%;">
+<col style="width: 33.3333%;">
+<col style="width: 44.4445%;">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-middle">Type</th>
+<th class="tableblock halign-left valign-middle">Name</th>
+<th class="tableblock halign-left valign-middle">Schema</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>Query</strong></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>fields</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>Query</strong></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>id</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>Query</strong></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>relatedParty.id</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>Query</strong></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>serviceSpecification.id</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>Query</strong></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>serviceSpecification.name</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="sect4">
+<h5 id="_responses">Responses</h5>
+<table class="tableblock frame-all grid-all spread">
+<colgroup>
+<col style="width: 10%;">
+<col style="width: 70%;">
+<col style="width: 20%;">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-middle">HTTP Code</th>
+<th class="tableblock halign-left valign-middle">Description</th>
+<th class="tableblock halign-left valign-middle">Schema</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>200</strong></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Success</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">&lt; <a href="#_listservice">ListService</a> &gt; array</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>400</strong></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Bad Request</p>
+<p class="tableblock">List of supported error codes:
+- 20: Invalid URL parameter value
+- 21: Missing body
+- 22: Invalid body
+- 23: Missing body field
+- 24: Invalid body field
+- 25: Missing header
+- 26: Invalid header value
+- 27: Missing query-string parameter
+- 28: Invalid query-string parameter value</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><a href="#_errorrepresentation">ErrorRepresentation</a></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>401</strong></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Unauthorized</p>
+<p class="tableblock">List of supported error codes:
+- 40: Missing credentials
+- 41: Invalid credentials
+- 42: Expired credentials</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><a href="#_errorrepresentation">ErrorRepresentation</a></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>403</strong></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Forbidden</p>
+<p class="tableblock">List of supported error codes:
+- 50: Access denied
+- 51: Forbidden requester
+- 52: Forbidden user
+- 53: Too many requests</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><a href="#_errorrepresentation">ErrorRepresentation</a></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>404</strong></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Not Found</p>
+<p class="tableblock">List of supported error codes:
+- 60: Resource not found</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><a href="#_errorrepresentation">ErrorRepresentation</a></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>422</strong></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Unprocessable entity</p>
+<p class="tableblock">Functional error</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><a href="#_errorrepresentation">ErrorRepresentation</a></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>500</strong></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Internal Server Error</p>
+<p class="tableblock">List of supported error codes:
+- 1: Internal error</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><a href="#_errorrepresentation">ErrorRepresentation</a></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>503</strong></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Service Unavailable</p>
+<p class="tableblock">List of supported error codes:
+- 5: The service is temporarily unavailable
+- 6: Orange API is over capacity, retry later !</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><a href="#_errorrepresentation">ErrorRepresentation</a></p></td>
+</tr>
+</tbody>
+</table>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_serviceget">Retrieve a service</h4>
+<div class="literalblock">
+<div class="content">
+<pre>GET /service/{id}</pre>
+</div>
+</div>
+<div class="sect4">
+<h5 id="_description_2">Description</h5>
+<div class="paragraph">
+<p>This operation retrieves a service entity.
+Attribute selection is enabled for all first level attributes.</p>
+</div>
+<div class="paragraph">
+<p>Specific business errors for current operation will be encapsulated in</p>
+</div>
+<div class="paragraph">
+<p>HTTP Response 422 Unprocessable entity</p>
+</div>
+</div>
+<div class="sect4">
+<h5 id="_parameters_2">Parameters</h5>
+<table class="tableblock frame-all grid-all spread">
+<colgroup>
+<col style="width: 22.2222%;">
+<col style="width: 33.3333%;">
+<col style="width: 44.4445%;">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-middle">Type</th>
+<th class="tableblock halign-left valign-middle">Name</th>
+<th class="tableblock halign-left valign-middle">Schema</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>Path</strong></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>id</strong><br>
+<em>required</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>Query</strong></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>relatedParty.id</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>Query</strong></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>serviceSpecification.id</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>Query</strong></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>serviceSpecification.name</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="sect4">
+<h5 id="_responses_2">Responses</h5>
+<table class="tableblock frame-all grid-all spread">
+<colgroup>
+<col style="width: 10%;">
+<col style="width: 70%;">
+<col style="width: 20%;">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-middle">HTTP Code</th>
+<th class="tableblock halign-left valign-middle">Description</th>
+<th class="tableblock halign-left valign-middle">Schema</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>200</strong></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Success</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><a href="#_service">Service</a></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>400</strong></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Bad Request</p>
+<p class="tableblock">List of supported error codes:
+- 20: Invalid URL parameter value
+- 21: Missing body
+- 22: Invalid body
+- 23: Missing body field
+- 24: Invalid body field
+- 25: Missing header
+- 26: Invalid header value
+- 27: Missing query-string parameter
+- 28: Invalid query-string parameter value</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><a href="#_errorrepresentation">ErrorRepresentation</a></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>401</strong></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Unauthorized</p>
+<p class="tableblock">List of supported error codes:
+- 40: Missing credentials
+- 41: Invalid credentials
+- 42: Expired credentials</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><a href="#_errorrepresentation">ErrorRepresentation</a></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>403</strong></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Forbidden</p>
+<p class="tableblock">List of supported error codes:
+- 50: Access denied
+- 51: Forbidden requester
+- 52: Forbidden user
+- 53: Too many requests</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><a href="#_errorrepresentation">ErrorRepresentation</a></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>404</strong></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Not Found</p>
+<p class="tableblock">List of supported error codes:
+- 60: Resource not found</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><a href="#_errorrepresentation">ErrorRepresentation</a></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>422</strong></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Unprocessable entity</p>
+<p class="tableblock">Functional error</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><a href="#_errorrepresentation">ErrorRepresentation</a></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>500</strong></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Internal Server Error</p>
+<p class="tableblock">List of supported error codes:
+- 1: Internal error</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><a href="#_errorrepresentation">ErrorRepresentation</a></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>503</strong></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Service Unavailable</p>
+<p class="tableblock">List of supported error codes:
+- 5: The service is temporarily unavailable
+- 6: Orange API is over capacity, retry later !</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><a href="#_errorrepresentation">ErrorRepresentation</a></p></td>
+</tr>
+</tbody>
+</table>
+</div>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_definitions">Definitions</h2>
+<div class="sectionbody">
+<div class="sect2">
+<h3 id="_errorrepresentation">ErrorRepresentation</h3>
+<div class="paragraph">
+<p>This class is used to describe error.
+for nbi Beijing release we do not manage additional error for serviceCatalog</p>
+</div>
+<table class="tableblock frame-all grid-all spread">
+<colgroup>
+<col style="width: 16.6666%;">
+<col style="width: 61.1111%;">
+<col style="width: 22.2223%;">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-middle">Name</th>
+<th class="tableblock halign-left valign-middle">Description</th>
+<th class="tableblock halign-left valign-middle">Schema</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>@schemaLocation</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">it provides a link to the schema describing a REST resource.</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>@type</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">The class type of a REST resource.</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>code</strong><br>
+<em>required</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Application related code (as defined in the API or from a common list)</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">integer (int32)</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>message</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Text that provide more details and corrective actions related to the error. This can be shown to a client user.</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>reason</strong><br>
+<em>required</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Text that explains the reason for error. This can be shown to a client user.</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>referenceError</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">url pointing to documentation describing the error</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>status</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">http error code extension like 400-2</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="sect2">
+<h3 id="_listrelatedpartyref">ListRelatedPartyRef</h3>
+<div class="paragraph">
+<p>This class is used to structure list of service(s) retrieved</p>
+</div>
+<table class="tableblock frame-all grid-all spread">
+<colgroup>
+<col style="width: 16.6666%;">
+<col style="width: 61.1111%;">
+<col style="width: 22.2223%;">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-middle">Name</th>
+<th class="tableblock halign-left valign-middle">Description</th>
+<th class="tableblock halign-left valign-middle">Schema</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>id</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Unique identifier of a related party</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>role</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Role played by the related party - only role “ONAPcustomer” is managed in Beijing release.</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="sect2">
+<h3 id="_listservice">ListService</h3>
+<div class="paragraph">
+<p>This class is used to structure list of service(s) retrieved</p>
+</div>
+<table class="tableblock frame-all grid-all spread">
+<colgroup>
+<col style="width: 16.6666%;">
+<col style="width: 61.1111%;">
+<col style="width: 22.2223%;">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-middle">Name</th>
+<th class="tableblock halign-left valign-middle">Description</th>
+<th class="tableblock halign-left valign-middle">Schema</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>id</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Unique identifier of the service</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>name</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Name of the service</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>relatedParty</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><a href="#_listrelatedpartyref">ListRelatedPartyRef</a></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>serviceSpecification</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><a href="#_listservicespecificationref">ListServiceSpecificationRef</a></p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="sect2">
+<h3 id="_listservicespecificationref">ListServiceSpecificationRef</h3>
+<div class="paragraph">
+<p>This class is used to structure list of service(s) retrieved</p>
+</div>
+<table class="tableblock frame-all grid-all spread">
+<colgroup>
+<col style="width: 16.6666%;">
+<col style="width: 61.1111%;">
+<col style="width: 22.2223%;">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-middle">Name</th>
+<th class="tableblock halign-left valign-middle">Description</th>
+<th class="tableblock halign-left valign-middle">Schema</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>id</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Unique identifier of the service specification</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>name</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Name of the required service specification</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="sect2">
+<h3 id="_relatedpartyref">RelatedPartyRef</h3>
+<div class="paragraph">
+<p>RelatedParty reference. A related party defines party or party role linked to a specific entity.
+Only ONAP Customer is managed in Beijing release.</p>
+</div>
+<table class="tableblock frame-all grid-all spread">
+<colgroup>
+<col style="width: 16.6666%;">
+<col style="width: 61.1111%;">
+<col style="width: 22.2223%;">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-middle">Name</th>
+<th class="tableblock halign-left valign-middle">Description</th>
+<th class="tableblock halign-left valign-middle">Schema</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>@referredType</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Not managed in the Beijing release.</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>href</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Reference of a related party.
+Not filled in Beijing release.</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>id</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Unique identifier of a related party</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>role</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Role played by the related party.
+Filled with 'ONAPcustomer'</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="sect2">
+<h3 id="_service">Service</h3>
+<div class="paragraph">
+<p>Instantiated service (service_instance) in AAI</p>
+</div>
+<table class="tableblock frame-all grid-all spread">
+<colgroup>
+<col style="width: 16.6666%;">
+<col style="width: 61.1111%;">
+<col style="width: 22.2223%;">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-middle">Name</th>
+<th class="tableblock halign-left valign-middle">Description</th>
+<th class="tableblock halign-left valign-middle">Schema</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>@baseType</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Not managed in Beijing release</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>@schemaLocation</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Not managed in Beijing release</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>@type</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">This attribute allows to dynamically extends TMF class. Not used in Beijing release.</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>characteristic</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">&lt; <a href="#_servicecharacteristic">ServiceCharacteristic</a> &gt; array</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>hasStarted</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">This is a Boolean attribute that, if TRUE, signifies that this Service has already been started. If the value of this attribute is FALSE, then this signifies that this Service has NOT been Started
+Not managed in Beijing release</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">boolean</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>href</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Reference of the service
+Not managed in Beijing release</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>id</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Unique identifier of the service - Valued with service-instance-id</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>name</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Name of the service - Valued with service-instance-name</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>relatedParty</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">&lt; <a href="#_relatedpartyref">RelatedPartyRef</a> &gt; array</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>serviceSpecification</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><a href="#_servicespecificationref">ServiceSpecificationRef</a></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>state</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><a href="#_statevalues">stateValues</a></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>supportingResource</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">&lt; <a href="#_supportingresource">SupportingResource</a> &gt; array</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>type</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Service type - valued with 'service-instance'</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="sect2">
+<h3 id="_servicecharacteristic">ServiceCharacteristic</h3>
+<div class="paragraph">
+<p>A list of name value pairs that define the service characteristics
+Not managed in Beijing release.</p>
+</div>
+<table class="tableblock frame-all grid-all spread">
+<colgroup>
+<col style="width: 16.6666%;">
+<col style="width: 61.1111%;">
+<col style="width: 22.2223%;">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-middle">Name</th>
+<th class="tableblock halign-left valign-middle">Description</th>
+<th class="tableblock halign-left valign-middle">Schema</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>name</strong><br>
+<em>required</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Name of the characteristic
+Not managed in Beijing release.</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>value</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><a href="#_value">Value</a></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>valueType</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Type of value for this characteristic.
+Not managed in Beijing release.</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="sect2">
+<h3 id="_servicespecificationref">ServiceSpecificationRef</h3>
+<div class="paragraph">
+<p>Service specification reference: ServiceSpecification of this service (catalog information)</p>
+</div>
+<table class="tableblock frame-all grid-all spread">
+<colgroup>
+<col style="width: 16.6666%;">
+<col style="width: 61.1111%;">
+<col style="width: 22.2223%;">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-middle">Name</th>
+<th class="tableblock halign-left valign-middle">Description</th>
+<th class="tableblock halign-left valign-middle">Schema</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>@referredType</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">This attribute allows to dynamically extends TMF class. Valued with 'ONAPservice'. We used this features to add following attribute: invariantUUID</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>@schemaLocation</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Not managed in Beijing release</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>href</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Reference of the service specification.
+not managed in Beijing release.</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>id</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Unique identifier of the service specification. valued to model-version-id</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>invariantUUID</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Additional attribute (not in the TMF API) - extended through @referredType - model-invariant-id</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>name</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Name of the required service specification</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>version</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Service specification version.
+Not managed in Beijing release</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="sect2">
+<h3 id="_supportingresource">SupportingResource</h3>
+<div class="paragraph">
+<p>Supporting resource - A supportingResource will be retrieved for each relationship of the relationship-list where related-link describe a vnf</p>
+</div>
+<table class="tableblock frame-all grid-all spread">
+<colgroup>
+<col style="width: 16.6666%;">
+<col style="width: 61.1111%;">
+<col style="width: 22.2223%;">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-middle">Name</th>
+<th class="tableblock halign-left valign-middle">Description</th>
+<th class="tableblock halign-left valign-middle">Schema</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>@referredType</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">This attribute allows to dynamically extends TMF class. Valued with 'ONAP resource'. We used this features to add following attributes:
+ status
+ modelInvariantId
+ modelVersionId
+ modelCustomisationId</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>@schemaLocation</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Not managed in Beijing release.</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>href</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Reference of the supporting resource</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>id</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Unique identifier of the supporting resource - Valued to vnf-id</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>modelCustomisationId</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Additional attribute (not in the TMF API) - extended through @referredType - valued with model-customisation-id</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>modelInvariantId</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Additional attribute (not in the TMF API) - extended through @referredType - valued with model-invariant-id</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>modelVersionId</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Additional attribute (not in the TMF API) - extended through @referredType - valued with model-verson-id</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>name</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Name of the supporting resource - Valued with vnf_-name</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>role</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Not managed in Beijing release.</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>status</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Additional attribute (not in the TMF API) - extended through @referredType - valued with prov-status</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="sect2">
+<h3 id="_value">Value</h3>
+<div class="paragraph">
+<p>Structure used to describe characteristic value.
+Not managed in Beijing release.</p>
+</div>
+<table class="tableblock frame-all grid-all spread">
+<colgroup>
+<col style="width: 16.6666%;">
+<col style="width: 61.1111%;">
+<col style="width: 22.2223%;">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-middle">Name</th>
+<th class="tableblock halign-left valign-middle">Description</th>
+<th class="tableblock halign-left valign-middle">Schema</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>@schemaLocation</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Not managed in Beijing release.</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>@type</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Not managed in Beijing release.</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>serviceCharacteristicValue</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Not managed in Beijing release.</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="sect2">
+<h3 id="_statevalues">stateValues</h3>
+<div class="paragraph">
+<p><em>Type</em> : enum (feasibilityChecked, designed, reserved, inactive, active, terminated)</p>
+</div>
+</div>
+</div>
+</div>
+</div>
+<div id="footer">
+<div id="footer-text">
+Last updated 2018-03-22 09:31:41 UTC
+</div>
+</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/offeredapis/serviceInventory/markDown.md b/docs/offeredapis/serviceInventory/markDown.md
new file mode 100644
index 0000000..3b02751
--- /dev/null
+++ b/docs/offeredapis/serviceInventory/markDown.md
@@ -0,0 +1,287 @@
+# API ServiceInventory
+
+
+<a name="overview"></a>
+## Overview
+
+### Api URL
+
+[Swagger UI](https://api-designer.sso.infra.ftgroup/swagger-ui/?url=https://api-designer.sso.infra.ftgroup/api/1.0/apis/5an735gnX0/swagger.json)
+
+
+[plant UML UI](https://plantuml.rd.francetelecom.fr/proxy?fmt=svg&src=https://api-designer.sso.infra.ftgroup/api/1.0/apis/5an735gnX0/plantuml&noCache=304710.0)
+
+serviceInventory API designed for ONAP Beijing Release.
+This API is build from TMF open API18.0 (applying TMF Guideline 3.0)
+only operation GET (by id & byList) for resource serviceSpecification is available
+
+
+### Version information
+*Version* : 1.0.0_inProgress
+
+
+### URI scheme
+*Host* : serverRoot
+*BasePath* : /nbi/api/v1
+*Schemes* : HTTPS
+
+
+### Tags
+
+* Service
+
+
+### Consumes
+
+* `application/json;charset=utf-8`
+
+
+### Produces
+
+* `application/json;charset=utf-8`
+
+
+<a name="paths"></a>
+## Resources
+
+<a name="service_resource"></a>
+### Service
+
+<a name="servicefind"></a>
+#### List services
+```
+GET /service
+```
+
+
+##### Description
+This operation list service entities.
+Attribute selection is restricted.
+fields attribute may be used to filter retrieved attribute(s) for each service
+
+Specific business errors for current operation will be encapsulated in
+
+HTTP Response 422 Unprocessable entity
+
+
+##### Parameters
+
+|Type|Name|Schema|
+|---|---|---|
+|**Query**|**fields** <br>*optional*|string|
+|**Query**|**id** <br>*optional*|string|
+|**Query**|**relatedParty.id** <br>*optional*|string|
+|**Query**|**serviceSpecification.id** <br>*optional*|string|
+|**Query**|**serviceSpecification.name** <br>*optional*|string|
+
+
+##### Responses
+
+|HTTP Code|Description|Schema|
+|---|---|---|
+|**200**|Success|< [ListService](#listservice) > array|
+|**400**|Bad Request<br><br>List of supported error codes:<br>- 20: Invalid URL parameter value<br>- 21: Missing body<br>- 22: Invalid body<br>- 23: Missing body field<br>- 24: Invalid body field<br>- 25: Missing header<br>- 26: Invalid header value<br>- 27: Missing query-string parameter<br>- 28: Invalid query-string parameter value|[ErrorRepresentation](#errorrepresentation)|
+|**401**|Unauthorized<br><br>List of supported error codes:<br>- 40: Missing credentials<br>- 41: Invalid credentials<br>- 42: Expired credentials|[ErrorRepresentation](#errorrepresentation)|
+|**403**|Forbidden<br><br>List of supported error codes:<br>- 50: Access denied<br>- 51: Forbidden requester<br>- 52: Forbidden user<br>- 53: Too many requests|[ErrorRepresentation](#errorrepresentation)|
+|**404**|Not Found<br><br>List of supported error codes:<br>- 60: Resource not found|[ErrorRepresentation](#errorrepresentation)|
+|**422**|Unprocessable entity<br><br>Functional error|[ErrorRepresentation](#errorrepresentation)|
+|**500**|Internal Server Error<br><br>List of supported error codes:<br>- 1: Internal error|[ErrorRepresentation](#errorrepresentation)|
+|**503**|Service Unavailable<br><br>List of supported error codes:<br>- 5: The service is temporarily unavailable<br>- 6: Orange API is over capacity, retry later !|[ErrorRepresentation](#errorrepresentation)|
+
+
+<a name="serviceget"></a>
+#### Retrieve a service
+```
+GET /service/{id}
+```
+
+
+##### Description
+This operation retrieves a service entity.
+Attribute selection is enabled for all first level attributes.
+
+Specific business errors for current operation will be encapsulated in
+
+HTTP Response 422 Unprocessable entity
+
+
+##### Parameters
+
+|Type|Name|Schema|
+|---|---|---|
+|**Path**|**id** <br>*required*|string|
+|**Query**|**relatedParty.id** <br>*optional*|string|
+|**Query**|**serviceSpecification.id** <br>*optional*|string|
+|**Query**|**serviceSpecification.name** <br>*optional*|string|
+
+
+##### Responses
+
+|HTTP Code|Description|Schema|
+|---|---|---|
+|**200**|Success|[Service](#service)|
+|**400**|Bad Request<br><br>List of supported error codes:<br>- 20: Invalid URL parameter value<br>- 21: Missing body<br>- 22: Invalid body<br>- 23: Missing body field<br>- 24: Invalid body field<br>- 25: Missing header<br>- 26: Invalid header value<br>- 27: Missing query-string parameter<br>- 28: Invalid query-string parameter value|[ErrorRepresentation](#errorrepresentation)|
+|**401**|Unauthorized<br><br>List of supported error codes:<br>- 40: Missing credentials<br>- 41: Invalid credentials<br>- 42: Expired credentials|[ErrorRepresentation](#errorrepresentation)|
+|**403**|Forbidden<br><br>List of supported error codes:<br>- 50: Access denied<br>- 51: Forbidden requester<br>- 52: Forbidden user<br>- 53: Too many requests|[ErrorRepresentation](#errorrepresentation)|
+|**404**|Not Found<br><br>List of supported error codes:<br>- 60: Resource not found|[ErrorRepresentation](#errorrepresentation)|
+|**422**|Unprocessable entity<br><br>Functional error|[ErrorRepresentation](#errorrepresentation)|
+|**500**|Internal Server Error<br><br>List of supported error codes:<br>- 1: Internal error|[ErrorRepresentation](#errorrepresentation)|
+|**503**|Service Unavailable<br><br>List of supported error codes:<br>- 5: The service is temporarily unavailable<br>- 6: Orange API is over capacity, retry later !|[ErrorRepresentation](#errorrepresentation)|
+
+
+<a name="definitions"></a>
+## Definitions
+
+<a name="errorrepresentation"></a>
+### ErrorRepresentation
+This class is used to describe error.
+for nbi Beijing release we do not manage additional error for serviceCatalog
+
+
+|Name|Description|Schema|
+|---|---|---|
+|**@schemaLocation** <br>*optional*|it provides a link to the schema describing a REST resource.|string|
+|**@type** <br>*optional*|The class type of a REST resource.|string|
+|**code** <br>*required*|Application related code (as defined in the API or from a common list)|integer (int32)|
+|**message** <br>*optional*|Text that provide more details and corrective actions related to the error. This can be shown to a client user.|string|
+|**reason** <br>*required*|Text that explains the reason for error. This can be shown to a client user.|string|
+|**referenceError** <br>*optional*|url pointing to documentation describing the error|string|
+|**status** <br>*optional*|http error code extension like 400-2|string|
+
+
+<a name="listrelatedpartyref"></a>
+### ListRelatedPartyRef
+This class is used to structure list of service(s) retrieved
+
+
+|Name|Description|Schema|
+|---|---|---|
+|**id** <br>*optional*|Unique identifier of a related party|string|
+|**role** <br>*optional*|Role played by the related party - only role “ONAPcustomer” is managed in Beijing release.|string|
+
+
+<a name="listservice"></a>
+### ListService
+This class is used to structure list of service(s) retrieved
+
+
+|Name|Description|Schema|
+|---|---|---|
+|**id** <br>*optional*|Unique identifier of the service|string|
+|**name** <br>*optional*|Name of the service|string|
+|**relatedParty** <br>*optional*||[ListRelatedPartyRef](#listrelatedpartyref)|
+|**serviceSpecification** <br>*optional*||[ListServiceSpecificationRef](#listservicespecificationref)|
+
+
+<a name="listservicespecificationref"></a>
+### ListServiceSpecificationRef
+This class is used to structure list of service(s) retrieved
+
+
+|Name|Description|Schema|
+|---|---|---|
+|**id** <br>*optional*|Unique identifier of the service specification|string|
+|**name** <br>*optional*|Name of the required service specification|string|
+
+
+<a name="relatedpartyref"></a>
+### RelatedPartyRef
+RelatedParty reference. A related party defines party or party role linked to a specific entity.
+Only ONAP Customer is managed in Beijing release.
+
+
+|Name|Description|Schema|
+|---|---|---|
+|**@referredType** <br>*optional*|Not managed in the Beijing release.|string|
+|**href** <br>*optional*|Reference of a related party.<br>Not filled in Beijing release.|string|
+|**id** <br>*optional*|Unique identifier of a related party|string|
+|**role** <br>*optional*|Role played by the related party.<br>Filled with 'ONAPcustomer'|string|
+
+
+<a name="service"></a>
+### Service
+Instantiated service (service_instance) in AAI
+
+
+|Name|Description|Schema|
+|---|---|---|
+|**@baseType** <br>*optional*|Not managed in Beijing release|string|
+|**@schemaLocation** <br>*optional*|Not managed in Beijing release|string|
+|**@type** <br>*optional*|This attribute allows to dynamically extends TMF class. Not used in Beijing release.|string|
+|**characteristic** <br>*optional*||< [ServiceCharacteristic](#servicecharacteristic) > array|
+|**hasStarted** <br>*optional*|This is a Boolean attribute that, if TRUE, signifies that this Service has already been started. If the value of this attribute is FALSE, then this signifies that this Service has NOT been Started<br>Not managed in Beijing release|boolean|
+|**href** <br>*optional*|Reference of the service<br>Not managed in Beijing release|string|
+|**id** <br>*optional*|Unique identifier of the service - Valued with service-instance-id|string|
+|**name** <br>*optional*|Name of the service - Valued with service-instance-name|string|
+|**relatedParty** <br>*optional*||< [RelatedPartyRef](#relatedpartyref) > array|
+|**serviceSpecification** <br>*optional*||[ServiceSpecificationRef](#servicespecificationref)|
+|**state** <br>*optional*||[stateValues](#statevalues)|
+|**supportingResource** <br>*optional*||< [SupportingResource](#supportingresource) > array|
+|**type** <br>*optional*|Service type - valued with 'service-instance'|string|
+
+
+<a name="servicecharacteristic"></a>
+### ServiceCharacteristic
+A list of name value pairs that define the service characteristics
+Not managed in Beijing release.
+
+
+|Name|Description|Schema|
+|---|---|---|
+|**name** <br>*required*|Name of the characteristic<br>Not managed in Beijing release.|string|
+|**value** <br>*optional*||[Value](#value)|
+|**valueType** <br>*optional*|Type of value for this characteristic.<br>Not managed in Beijing release.|string|
+
+
+<a name="servicespecificationref"></a>
+### ServiceSpecificationRef
+Service specification reference: ServiceSpecification of this service (catalog information)
+
+
+|Name|Description|Schema|
+|---|---|---|
+|**@referredType** <br>*optional*|This attribute allows to dynamically extends TMF class. Valued with 'ONAPservice'. We used this features to add following attribute: invariantUUID|string|
+|**@schemaLocation** <br>*optional*|Not managed in Beijing release|string|
+|**href** <br>*optional*|Reference of the service specification.<br>not managed in Beijing release.|string|
+|**id** <br>*optional*|Unique identifier of the service specification. valued to model-version-id|string|
+|**invariantUUID** <br>*optional*|Additional attribute (not in the TMF API) - extended through @referredType - model-invariant-id|string|
+|**name** <br>*optional*|Name of the required service specification|string|
+|**version** <br>*optional*|Service specification version.<br>Not managed in Beijing release|string|
+
+
+<a name="supportingresource"></a>
+### SupportingResource
+Supporting resource - A supportingResource will be retrieved for each relationship of the relationship-list where related-link describe a vnf
+
+
+|Name|Description|Schema|
+|---|---|---|
+|**@referredType** <br>*optional*|This attribute allows to dynamically extends TMF class. Valued with 'ONAP resource'. We used this features to add following attributes:<br> status <br> modelInvariantId<br> modelVersionId<br> modelCustomisationId|string|
+|**@schemaLocation** <br>*optional*|Not managed in Beijing release.|string|
+|**href** <br>*optional*|Reference of the supporting resource|string|
+|**id** <br>*optional*|Unique identifier of the supporting resource - Valued to vnf-id|string|
+|**modelCustomisationId** <br>*optional*|Additional attribute (not in the TMF API) - extended through @referredType - valued with model-customisation-id|string|
+|**modelInvariantId** <br>*optional*|Additional attribute (not in the TMF API) - extended through @referredType - valued with model-invariant-id|string|
+|**modelVersionId** <br>*optional*|Additional attribute (not in the TMF API) - extended through @referredType - valued with model-verson-id|string|
+|**name** <br>*optional*|Name of the supporting resource - Valued with vnf_-name|string|
+|**role** <br>*optional*|Not managed in Beijing release.|string|
+|**status** <br>*optional*|Additional attribute (not in the TMF API) - extended through @referredType - valued with prov-status|string|
+
+
+<a name="value"></a>
+### Value
+Structure used to describe characteristic value.
+Not managed in Beijing release.
+
+
+|Name|Description|Schema|
+|---|---|---|
+|**@schemaLocation** <br>*optional*|Not managed in Beijing release.|string|
+|**@type** <br>*optional*|Not managed in Beijing release.|string|
+|**serviceCharacteristicValue** <br>*optional*|Not managed in Beijing release.|string|
+
+
+<a name="statevalues"></a>
+### stateValues
+*Type* : enum (feasibilityChecked, designed, reserved, inactive, active, terminated)
+
diff --git a/docs/offeredapis/serviceOrder/apiServiceOrder.plantuml b/docs/offeredapis/serviceOrder/apiServiceOrder.plantuml
new file mode 100644
index 0000000..3199855
--- /dev/null
+++ b/docs/offeredapis/serviceOrder/apiServiceOrder.plantuml
@@ -0,0 +1,168 @@
+@startuml
+
+enum ActionType {
+ add
+ modify
+ delete
+ noChange
+}
+enum StateType {
+ acknowledged
+ rejected
+ pending
+ held
+ inProgress
+ cancelled
+ completed
+ failed
+ partial
+}
+enum RelationshipType {
+ reliesOn
+}
+
+class ErrorRepresentation {
+ code:int
+ reason:string
+ message:string
+ status:string
+ referenceError:string
+ @type:string
+ @schemaLocation:string
+}
+
+class ServiceRelationship
+ ServiceRelationship --> "1-1" RelationshipType : type
+ ServiceRelationship --> "1-1" Service : service
+
+class ServiceRef {
+ id:string
+ href:string
+}
+
+class ServiceCharacteristic {
+ name:string
+ valueType:string
+}
+ ServiceCharacteristic --> "0-1" Value : value
+
+class RelatedParty {
+ id:string
+ href:string
+ role:string
+ name:string
+ @referredType:string
+}
+
+class ServiceSpecificationRef {
+ id:string
+ href:string
+ name:string
+ version:string
+ @type:string
+ @schemaLocation:string
+ @baseType:string
+}
+ ServiceSpecificationRef --> "0-1" TargetServiceSchema : targetServiceSchema
+
+class Service {
+ id:string
+ href:string
+ name:string
+ serviceState:string
+ @type:string
+ @schemaLocation:string
+}
+ Service --> "0-*" ServiceCharacteristic : serviceCharacteristic
+ Service --> "0-*" ServiceRelationship : serviceRelationship
+ Service --> "0-*" RelatedParty : relatedParty
+ Service --> "0-1" ServiceSpecificationRef : serviceSpecification
+
+class OrderItemRelationship {
+ id:string
+}
+ OrderItemRelationship --> "1-1" RelationshipType : type
+
+class ServiceOrderItem {
+ id:string
+ @type:string
+ @schemaLocation:string
+ @baseType:string
+}
+ ServiceOrderItem --> "0-1" ActionType : action
+ ServiceOrderItem --> "0-1" StateType : state
+ ServiceOrderItem --> "0-*" OrderItemRelationship : orderItemRelationship
+ ServiceOrderItem --> "1-1" Service : service
+
+class ServiceOrder {
+ id:string
+ href:string
+ externalId:string
+ priority:string
+ description:string
+ category:string
+ orderDate:dateTime
+ completionDateTime:dateTime
+ requestedStartDate:dateTime
+ requestedCompletionDate:dateTime
+ expectedCompletionDate:dateTime
+ startDate:dateTime
+ @baseType:string
+ @type:string
+ @schemaLocation:string
+}
+ ServiceOrder --> "0-1" StateType : state
+ ServiceOrder --> "0-*" RelatedParty : relatedParty
+ ServiceOrder --> "0-*" OrderRelationship : orderRelationship
+ ServiceOrder --> "0-*" ServiceOrderItem : orderItem
+
+class OrderRelationship {
+ type:string
+ id:string
+ href:string
+ @referredType:string
+}
+
+class TargetServiceSchema {
+ @type:string
+ @schemaLocation:string
+}
+
+class Value {
+ @type:string
+ @schemaLocation:string
+ serviceCharacteristicValue:string
+}
+
+class CreateServiceOrderItem {
+ id:string
+ @type:string
+ @schemaLocation:string
+ @baseType:string
+}
+ CreateServiceOrderItem --> "0-1" ActionType : action
+ CreateServiceOrderItem --> "0-*" OrderItemRelationship : orderItemRelationship
+ CreateServiceOrderItem --> "1-1" Service : service
+
+class CreateServiceOrder {
+ externalId:string
+ priority:string
+ description:string
+ category:string
+ requestedStartDate:dateTime
+ requestedCompletionDate:dateTime
+ @baseType:string
+ @type:string
+ @schemaLocation:string
+}
+ CreateServiceOrder --> "0-*" RelatedParty : relatedParty
+ CreateServiceOrder --> "0-*" OrderRelationship : orderRelationship
+ CreateServiceOrder --> "0-*" CreateServiceOrderItem : orderItem
+
+class Hub {
+ id:string
+ query:string
+ callback:string
+}
+
+@enduml \ No newline at end of file
diff --git a/docs/offeredapis/serviceOrder/asciiDoc.adoc b/docs/offeredapis/serviceOrder/asciiDoc.adoc
new file mode 100644
index 0000000..4a29548
--- /dev/null
+++ b/docs/offeredapis/serviceOrder/asciiDoc.adoc
@@ -0,0 +1,752 @@
+= API ServiceOrder
+
+
+[[_overview]]
+== Overview
+
+=== Api URL
+
+https://api-designer.sso.infra.ftgroup/swagger-ui/?url=https://api-designer.sso.infra.ftgroup/api/1.0/apis/kl1kgvz1zR/swagger.json[Swagger UI]
+
+
+https://plantuml.rd.francetelecom.fr/proxy?fmt=svg&src=https://api-designer.sso.infra.ftgroup/api/1.0/apis/kl1kgvz1zR/plantuml&noCache=934804.0[plant UML UI]
+
+serviceOrder API designed for ONAP Beijing Release.
+This API is build from TMF open API18.0 (applying TMF Guideline 3.0);
+Only operations GET (by id and list) and POST are available.
+
+
+=== Version information
+[%hardbreaks]
+__Version__ : 1.0.0_inProgress
+
+
+=== URI scheme
+[%hardbreaks]
+__Host__ : serverRoot
+__BasePath__ : /nbi/api/v1
+__Schemes__ : HTTPS
+
+
+=== Tags
+
+* ServiceOrder : A Service Order is a type of order which can be used to describe a group of operations on service – one service order item per service. An action at the level of the service order item describe the operation to be done on a service (add, terminate for example). The service order is triggered from the BSS system in charge of the product order management to ONAP that will manage the service fulfillment.
+
+
+=== Consumes
+
+* `application/json;charset=utf-8`
+
+
+=== Produces
+
+* `application/json;charset=utf-8`
+
+
+[[_paths]]
+== Resources
+
+[[_serviceorder_resource]]
+=== ServiceOrder
+A Service Order is a type of order which can be used to describe a group of operations on service – one service order item per service. An action at the level of the service order item describe the operation to be done on a service (add, terminate for example). The service order is triggered from the BSS system in charge of the product order management to ONAP that will manage the service fulfillment.
+
+
+[[_serviceordercreate]]
+==== Create a service order
+....
+POST /serviceOrder
+....
+
+
+===== Description
+This operation creates a service order entity.
+The TMF Open API specification document provides the list of mandatory and non mandatory attributes when creating a ServiceOrder, including any possible rule conditions and applicable default values.
+POST should be used without specifying the id and the href, the Service Order Management system is in charge of generating the id + href for the ServiceOrder.
+
+Specific business errors for current operation will be encapsulated in
+
+HTTP Response 422 Unprocessable entity
+
+* 100: OrderItem with 'add' action but serviceSpecification id missing
+
+* 101: OrderItem with 'change'/'noChange'/'remove' but service id missing
+
+* 102: OrderItem with 'add' action - serviceSpecification id provided but not existing
+
+* 103: OrderItem with 'add' action but service id already existing in the inventory
+
+* 104: A customer for existing service(s) is provided but he did not exist
+
+* 105: OrderItem with 'change'/'noChange'/'remove' - Service id provided but it is not existing in the inventory
+
+* 106: [Not managed for current Relese] Issue with lcpCloudRegionId and tenantId provided
+
+
+===== Parameters
+
+[options="header", cols=".^2,.^3,.^4"]
+|===
+|Type|Name|Schema
+|**Body**|**serviceOrder** +
+__required__|<<_createserviceorder,CreateServiceOrder>>
+|===
+
+
+===== Responses
+
+[options="header", cols=".^2,.^14,.^4"]
+|===
+|HTTP Code|Description|Schema
+|**201**|Success|<<_createserviceorder,CreateServiceOrder>>
+|**400**|Bad Request
+
+List of supported error codes:
+- 20: Invalid URL parameter value
+- 21: Missing body
+- 22: Invalid body
+- 23: Missing body field
+- 24: Invalid body field
+- 25: Missing header
+- 26: Invalid header value
+- 27: Missing query-string parameter
+- 28: Invalid query-string parameter value|<<_errorrepresentation,ErrorRepresentation>>
+|**401**|Unauthorized
+
+List of supported error codes:
+- 40: Missing credentials
+- 41: Invalid credentials
+- 42: Expired credentials|<<_errorrepresentation,ErrorRepresentation>>
+|**403**|Forbidden
+
+List of supported error codes:
+- 50: Access denied
+- 51: Forbidden requester
+- 52: Forbidden user
+- 53: Too many requests|<<_errorrepresentation,ErrorRepresentation>>
+|**404**|Not Found
+
+List of supported error codes:
+- 60: Resource not found|<<_errorrepresentation,ErrorRepresentation>>
+|**422**|Unprocessable entity
+
+Functional error
+
+Specific encapsulated business errors for current operation
+
+* 100: OrderItem with 'add' action but serviceSpecification id missing
+
+* 101: OrderItem with 'change'/'noChange'/'remove' but service id missing
+
+* 102: OrderItem with 'add' action - serviceSpecification id provided but not existing
+
+* 103: OrderItem with 'add' action but service id already existing in the inventory
+
+* 104: A customer for existing service(s) is provided but he did not exist
+
+* 105: OrderItem with 'change'/'noChange'/'remove' - Service id provided but it is not existing in the inventory
+
+* 106: [Not managed for current Relese] Issue with lcpCloudRegionId and tenantId provided|<<_errorrepresentation,ErrorRepresentation>>
+|**500**|Internal Server Error
+
+List of supported error codes:
+- 1: Internal error|<<_errorrepresentation,ErrorRepresentation>>
+|**503**|Service Unavailable
+
+List of supported error codes:
+- 5: The service is temporarily unavailable
+- 6: Orange API is over capacity, retry later !|<<_errorrepresentation,ErrorRepresentation>>
+|===
+
+
+[[_serviceorderfind]]
+==== List service orders
+....
+GET /serviceOrder
+....
+
+
+===== Description
+Retrieve and list service order entities according to given criteria.
+Only a predefined set of attribute is proposed.
+Attribute selection could be described in the fields attribute.
+
+Specific business errors for current operation will be encapsulated in
+
+HTTP Response 422 Unprocessable entity
+
+
+===== Parameters
+
+[options="header", cols=".^2,.^3,.^9,.^4"]
+|===
+|Type|Name|Description|Schema
+|**Query**|**description** +
+__optional__||string
+|**Query**|**externalId** +
+__optional__||string
+|**Query**|**fields** +
+__optional__|this attribute could be used to filter retrieved attribute(s) and/or sort SO.|string
+|**Query**|**limit** +
+__optional__|The maximum number of elements to retrieve (it can be greater than the actual available number of items).|integer (int32)
+|**Query**|**offset** +
+__optional__|The index of the first element to retrieve. Zero is the first element of the collection.|integer (int32)
+|**Query**|**orderDate.gt** +
+__optional__|order date greather than|string
+|**Query**|**orderDate.lt** +
+__optional__|order date lower than|string
+|**Query**|**state** +
+__optional__|state of the order(s) to be retrieved|string
+|===
+
+
+===== Responses
+
+[options="header", cols=".^2,.^14,.^4"]
+|===
+|HTTP Code|Description|Schema
+|**200**|Success +
+**Headers** : +
+`X-Total-Count` (integer (int32)) +
+`X-Result-Count` (integer (int32))|< <<_serviceorder,ServiceOrder>> > array
+|**400**|Bad Request
+
+List of supported error codes:
+- 20: Invalid URL parameter value
+- 21: Missing body
+- 22: Invalid body
+- 23: Missing body field
+- 24: Invalid body field
+- 25: Missing header
+- 26: Invalid header value
+- 27: Missing query-string parameter
+- 28: Invalid query-string parameter value|<<_errorrepresentation,ErrorRepresentation>>
+|**401**|Unauthorized
+
+List of supported error codes:
+- 40: Missing credentials
+- 41: Invalid credentials
+- 42: Expired credentials|<<_errorrepresentation,ErrorRepresentation>>
+|**403**|Forbidden
+
+List of supported error codes:
+- 50: Access denied
+- 51: Forbidden requester
+- 52: Forbidden user
+- 53: Too many requests|<<_errorrepresentation,ErrorRepresentation>>
+|**404**|Not Found
+
+List of supported error codes:
+- 60: Resource not found|<<_errorrepresentation,ErrorRepresentation>>
+|**422**|Unprocessable entity
+
+Functional error|<<_errorrepresentation,ErrorRepresentation>>
+|**500**|Internal Server Error
+
+List of supported error codes:
+- 1: Internal error|<<_errorrepresentation,ErrorRepresentation>>
+|**503**|Service Unavailable
+
+List of supported error codes:
+- 5: The service is temporarily unavailable
+- 6: Orange API is over capacity, retry later !|<<_errorrepresentation,ErrorRepresentation>>
+|===
+
+
+[[_serviceorderget]]
+==== Retrieve a service order
+....
+GET /serviceOrder/{id}
+....
+
+
+===== Description
+This operation retrieves a service order entity.
+Attribute selection is enabled for all first level attributes.
+
+Specific business errors for current operation will be encapsulated in
+
+HTTP Response 422 Unprocessable entity
+
+
+===== Parameters
+
+[options="header", cols=".^2,.^3,.^9,.^4"]
+|===
+|Type|Name|Description|Schema
+|**Path**|**id** +
+__required__||string
+|**Query**|**fields** +
+__optional__|Attribute selection|string
+|===
+
+
+===== Responses
+
+[options="header", cols=".^2,.^14,.^4"]
+|===
+|HTTP Code|Description|Schema
+|**200**|Success|<<_serviceorder,ServiceOrder>>
+|**400**|Bad Request
+
+List of supported error codes:
+- 20: Invalid URL parameter value
+- 21: Missing body
+- 22: Invalid body
+- 23: Missing body field
+- 24: Invalid body field
+- 25: Missing header
+- 26: Invalid header value
+- 27: Missing query-string parameter
+- 28: Invalid query-string parameter value|<<_errorrepresentation,ErrorRepresentation>>
+|**401**|Unauthorized
+
+List of supported error codes:
+- 40: Missing credentials
+- 41: Invalid credentials
+- 42: Expired credentials|<<_errorrepresentation,ErrorRepresentation>>
+|**403**|Forbidden
+
+List of supported error codes:
+- 50: Access denied
+- 51: Forbidden requester
+- 52: Forbidden user
+- 53: Too many requests|<<_errorrepresentation,ErrorRepresentation>>
+|**404**|Not Found
+
+List of supported error codes:
+- 60: Resource not found|<<_errorrepresentation,ErrorRepresentation>>
+|**422**|Unprocessable entity
+
+Functional error|<<_errorrepresentation,ErrorRepresentation>>
+|**500**|Internal Server Error
+
+List of supported error codes:
+- 1: Internal error|<<_errorrepresentation,ErrorRepresentation>>
+|**503**|Service Unavailable
+
+List of supported error codes:
+- 5: The service is temporarily unavailable
+- 6: Orange API is over capacity, retry later !|<<_errorrepresentation,ErrorRepresentation>>
+|===
+
+
+[[_definitions]]
+== Definitions
+
+[[_actiontype]]
+=== ActionType
+Action type to be describer on the order item.
+modify is not managed in Beijing release
+
+__Type__ : enum (add, modify, delete, noChange)
+
+
+[[_createserviceorder]]
+=== CreateServiceOrder
+This structure is used in the operation POST for a serviceOrder request.
+Attribute description is not accurate and should be find in the serviceOrder class.
+
+
+[options="header", cols=".^3,.^11,.^4"]
+|===
+|Name|Description|Schema
+|**@baseType** +
+__optional__||string
+|**@schemaLocation** +
+__optional__||string
+|**@type** +
+__optional__||string
+|**category** +
+__optional__|Used to categorize the order that can be useful for the OM system (e.g. “broadband”, “TVOption”, …)|string
+|**description** +
+__optional__|A free-text description of the service order|string
+|**externalId** +
+__optional__|ID given by the consumer and only understandable by him (to facilitate his searches)|string
+|**orderItem** +
+__optional__||< <<_createserviceorderitem,CreateServiceOrderItem>> > array
+|**orderRelationship** +
+__optional__||< <<_orderrelationship,OrderRelationship>> > array
+|**priority** +
+__optional__|A way that can be used by consumers to prioritize orders in Service Order Management system (from 0 to 4 : 0 is the highest priority, and 4 the lowest)|string
+|**relatedParty** +
+__optional__||< <<_relatedparty,RelatedParty>> > array
+|**requestedCompletionDate** +
+__optional__|Requested delivery date from the requestor perspective|string (date-time)
+|**requestedStartDate** +
+__optional__|Order start date wished by the requestor|string (date-time)
+|===
+
+
+[[_createserviceorderitem]]
+=== CreateServiceOrderItem
+This structure is used in the operation POST for a serviceOrder request to describe an item.
+Attribute description is not accurate and should be find in the serviceOrderItem class.
+
+
+[options="header", cols=".^3,.^11,.^4"]
+|===
+|Name|Description|Schema
+|**@baseType** +
+__optional__|Indicates the base type of the resource.|string
+|**@schemaLocation** +
+__optional__|A link to the schema describing this REST resource|string
+|**@type** +
+__optional__|Indicates the type of resource.|string
+|**action** +
+__optional__||<<_actiontype,ActionType>>
+|**id** +
+__required__|Identifier of the line item (generally it is a sequence number 01, 02, 03, …)|string
+|**orderItemRelationship** +
+__optional__||< <<_orderitemrelationship,OrderItemRelationship>> > array
+|**service** +
+__required__||<<_service,Service>>
+|===
+
+
+[[_errorrepresentation]]
+=== ErrorRepresentation
+Representation of an error.
+
+
+[options="header", cols=".^3,.^11,.^4"]
+|===
+|Name|Description|Schema
+|**@schemaLocation** +
+__optional__|it provides a link to the schema describing a REST resource|string
+|**@type** +
+__optional__|The class type of a REST resource|string
+|**code** +
+__required__|Application related code (as defined in the API or from a common list)|integer (int32)
+|**message** +
+__optional__|Text that provide more details and corrective actions related to the error. This can be shown to a client user|string
+|**reason** +
+__required__|Text that explains the reason for error. This can be shown to a client user.|string
+|**referenceError** +
+__optional__|url pointing to documentation describing the error|string
+|**status** +
+__optional__|http error code extension like 400-2|string
+|===
+
+
+[[_hub]]
+=== Hub
+An HUB resource is used by client side to subscribe to notification.
+Not managed in the Beijing release.
+
+
+[options="header", cols=".^3,.^4"]
+|===
+|Name|Schema
+|**callback** +
+__required__|string
+|**id** +
+__optional__|string
+|**query** +
+__optional__|string
+|===
+
+
+[[_orderitemrelationship]]
+=== OrderItemRelationship
+Linked order item to the one containing this attribute.
+nbi component used this relationship to sort request to ONAP.
+
+
+[options="header", cols=".^3,.^11,.^4"]
+|===
+|Name|Description|Schema
+|**id** +
+__required__|Unique identifier of an order item|string
+|**type** +
+__required__||<<_relationshiptype,RelationshipType>>
+|===
+
+
+[[_orderrelationship]]
+=== OrderRelationship
+Linked order to the one containing this attribute.
+This relationship is not used to sort ONAP request.
+
+
+[options="header", cols=".^3,.^11,.^4"]
+|===
+|Name|Description|Schema
+|**@referredType** +
+__optional__|Type of the referred order.|string
+|**href** +
+__optional__|A hyperlink to the related order|string
+|**id** +
+__required__|The id of the related order|string
+|**type** +
+__optional__|The type of related order, can be : “dependency” if the order needs to be “not started” until another order item is complete (a service order in this case) or “cross-ref” to keep track of the source order (a productOrder)|string
+|===
+
+
+[[_relatedparty]]
+=== RelatedParty
+A related party defines party which are involved in this order and the role they are playing.
+for Beijing release:
+With the current version of APIs used from SO and AAI we need to manage a ‘customer’. This customer concept is confusing with Customer BSS concept. We took the following rules to manage the ‘customer’ information:
+o It could be provided through a serviceOrder in the service Order a relatedParty with role ‘ONAPcustomer’ should be provided in the serviceOrder header (we will not consider in this release the party at item level); External API component will check if this customer exists and create it in AAI if not.
+o If no relatedParty are provided the service will be affected to ‘generic’ customer (dummy customer) – we assume this ‘generic’ customer always exists.
+
+
+[options="header", cols=".^3,.^11,.^4"]
+|===
+|Name|Description|Schema
+|**@referredType** +
+__optional__||string
+|**href** +
+__optional__|An hyperlink to the party - not used in Beijnig release|string
+|**id** +
+__required__|Unique identifier of a related party|string
+|**name** +
+__optional__|Name of the related party|string
+|**role** +
+__required__|The role of the related party (e.g. Owner, requester, fullfiller etc).
+ONLY 'ONAPcustomer' is considered|string
+|===
+
+
+[[_relationshiptype]]
+=== RelationshipType
+Relationship type;
+Only reliesOn is managed in Beijing release.
+
+__Type__ : enum (reliesOn)
+
+
+[[_service]]
+=== Service
+Service (to be added, modified, deleted) description
+
+
+[options="header", cols=".^3,.^11,.^4"]
+|===
+|Name|Description|Schema
+|**@schemaLocation** +
+__optional__|The URL to get the resource schema.
+Not managed in Beijing Release|string
+|**@type** +
+__optional__|To define the service type
+Not managed in Beijing Release|string
+|**href** +
+__optional__|Reference to the Service (useful for delete or modify command).
+Not managed in Beijing release.|string
+|**id** +
+__required__|Identifier of a service instance.
+It must be valued if orderItem action is 'delete' and corresponds to a AAI service.id|string
+|**name** +
+__optional__|Name of the service - When orderItem action is 'add' this name will be used in ONAP/SO request as InstaceName.|string
+|**relatedParty** +
+__optional__||< <<_relatedparty,RelatedParty>> > array
+|**serviceCharacteristic** +
+__optional__||< <<_servicecharacteristic,ServiceCharacteristic>> > array
+|**serviceRelationship** +
+__optional__||< <<_servicerelationship,ServiceRelationship>> > array
+|**serviceSpecification** +
+__optional__||<<_servicespecificationref,ServiceSpecificationRef>>
+|**serviceState** +
+__optional__|The lifecycle state of the service requested;
+Not managed in Beijing release.|string
+|===
+
+
+[[_servicecharacteristic]]
+=== ServiceCharacteristic
+ServiceCharacteristic
+
+
+[options="header", cols=".^3,.^11,.^4"]
+|===
+|Name|Description|Schema
+|**name** +
+__required__|Name of characteristic|string
+|**value** +
+__optional__||<<_value,Value>>
+|**valueType** +
+__optional__||string
+|===
+
+
+[[_serviceorder]]
+=== ServiceOrder
+A Service Order is a type of order which can be used to place an order between a customer and a service provider or between a service provider and a partner and vice versa
+
+
+[options="header", cols=".^3,.^11,.^4"]
+|===
+|Name|Description|Schema
+|**@baseType** +
+__optional__||string
+|**@schemaLocation** +
+__optional__||string
+|**@type** +
+__optional__||string
+|**category** +
+__optional__|Used to categorize the order that can be useful for the OM system (e.g. “broadband”, “TVOption”, …)|string
+|**completionDateTime** +
+__optional__|Date when the order was completed|string (date-time)
+|**description** +
+__optional__|A free-text description of the service order|string
+|**expectedCompletionDate** +
+__optional__||string (date-time)
+|**externalId** +
+__optional__|ID given by the consumer and only understandable by him (to facilitate his searches)|string
+|**href** +
+__optional__|Hyperlink to access the order|string
+|**id** +
+__required__|ID created on repository side|string
+|**orderDate** +
+__optional__||string (date-time)
+|**orderItem** +
+__optional__||< <<_serviceorderitem,ServiceOrderItem>> > array
+|**orderRelationship** +
+__optional__||< <<_orderrelationship,OrderRelationship>> > array
+|**priority** +
+__optional__|A way that can be used by consumers to prioritize orders in Service Order Management system (from 0 to 4 : 0 is the highest priority, and 4 the lowest)|string
+|**relatedParty** +
+__optional__||< <<_relatedparty,RelatedParty>> > array
+|**requestedCompletionDate** +
+__optional__|Requested delivery date from the requestor perspective|string (date-time)
+|**requestedStartDate** +
+__optional__|Order start date wished by the requestor|string (date-time)
+|**startDate** +
+__optional__|Date when the order was started for processing|string (date-time)
+|**state** +
+__optional__||<<_statetype,StateType>>
+|===
+
+
+[[_serviceorderitem]]
+=== ServiceOrderItem
+An identified part of the order. A service order is decomposed into one or more order items.
+
+
+[options="header", cols=".^3,.^11,.^4"]
+|===
+|Name|Description|Schema
+|**@baseType** +
+__optional__|not used in Beijing relase|string
+|**@schemaLocation** +
+__optional__|not used in Beijing relase|string
+|**@type** +
+__optional__|Used to extend the order item.
+not used in Beijing relase|string
+|**action** +
+__optional__||<<_actiontype,ActionType>>
+|**id** +
+__required__|Identifier of the line item (generally it is a sequence number 01, 02, 03, …)|string
+|**orderItemRelationship** +
+__optional__||< <<_orderitemrelationship,OrderItemRelationship>> > array
+|**service** +
+__required__||<<_service,Service>>
+|**state** +
+__optional__||<<_statetype,StateType>>
+|===
+
+
+[[_serviceref]]
+=== ServiceRef
+Service references
+
+
+[options="header", cols=".^3,.^11,.^4"]
+|===
+|Name|Description|Schema
+|**href** +
+__optional__|Reference of the service|string
+|**id** +
+__required__|Unique identifier of the service|string
+|===
+
+
+[[_servicerelationship]]
+=== ServiceRelationship
+Linked Services to the one instantiate
+nbi component used this relationship to sort request to ONAP.
+
+
+[options="header", cols=".^3,.^4"]
+|===
+|Name|Schema
+|**service** +
+__required__|<<_service,Service>>
+|**type** +
+__required__|<<_relationshiptype,RelationshipType>>
+|===
+
+
+[[_servicespecificationref]]
+=== ServiceSpecificationRef
+The service specification (these attributes are fetched from the catalogue).
+
+
+[options="header", cols=".^3,.^11,.^4"]
+|===
+|Name|Description|Schema
+|**@baseType** +
+__optional__|Not used in Beijing release|string
+|**@schemaLocation** +
+__optional__|Not used in Beijing release|string
+|**@type** +
+__optional__|Not used in Beijing release|string
+|**href** +
+__optional__|Reference of the service specification
+Not used in Beijing release.|string
+|**id** +
+__required__|Unique identifier of the service specification
+This information will be used to retrieve SDC information + mapped to SO ModelNameVersionIdin the request.|string
+|**name** +
+__optional__|Name of the service specification
+Not used in Beijing release|string
+|**targetServiceSchema** +
+__optional__||<<_targetserviceschema,TargetServiceSchema>>
+|**version** +
+__optional__|Version of the service Specification
+Not used in Beijing release|string
+|===
+
+
+[[_statetype]]
+=== StateType
+List of possible state for the order and the orderItem.
+
+__Type__ : enum (acknowledged, rejected, pending, held, inProgress, cancelled, completed, failed, partial)
+
+
+[[_targetserviceschema]]
+=== TargetServiceSchema
+Target to the schema describing the service spec resource
+
+
+[options="header", cols=".^3,.^11,.^4"]
+|===
+|Name|Description|Schema
+|**@schemaLocation** +
+__required__|This field provided a link to the schema describing this REST resource.|string
+|**@type** +
+__required__|Indicates the (class) type of resource.|string
+|===
+
+
+[[_value]]
+=== Value
+Value is a descriptive structure for service characteristic;
+For Beijing we only manage 'basic' attribute - the serviceCharacteristicValue must be used.
+
+
+[options="header", cols=".^3,.^11,.^4"]
+|===
+|Name|Description|Schema
+|**@schemaLocation** +
+__optional__|This field provided a link to the schema describing this REST resource.
+Not used in Beijing Release|string
+|**@type** +
+__optional__|Indicates the (class) type of resource.
+Not used in Beijing Release|string
+|**serviceCharacteristicValue** +
+__optional__|Value of the characteristic.
+This attribute must be used in Beijing Release to provide characteristic value.|string
+|===
+
diff --git a/docs/offeredapis/serviceOrder/documentation.html b/docs/offeredapis/serviceOrder/documentation.html
new file mode 100644
index 0000000..0983ed9
--- /dev/null
+++ b/docs/offeredapis/serviceOrder/documentation.html
@@ -0,0 +1,2030 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+<meta charset="UTF-8">
+<!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=edge"><![endif]-->
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<meta name="generator" content="Asciidoctor 1.5.6.1">
+<title>API ServiceOrder</title>
+<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Open+Sans:300,300italic,400,400italic,600,600italic%7CNoto+Serif:400,400italic,700,700italic%7CDroid+Sans+Mono:400,700">
+<style>
+/* Asciidoctor default stylesheet | MIT License | http://asciidoctor.org */
+/* Remove comment around @import statement below when using as a custom stylesheet */
+/*@import "https://fonts.googleapis.com/css?family=Open+Sans:300,300italic,400,400italic,600,600italic%7CNoto+Serif:400,400italic,700,700italic%7CDroid+Sans+Mono:400,700";*/
+article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}
+audio,canvas,video{display:inline-block}
+audio:not([controls]){display:none;height:0}
+[hidden],template{display:none}
+script{display:none!important}
+html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}
+a{background:transparent}
+a:focus{outline:thin dotted}
+a:active,a:hover{outline:0}
+h1{font-size:2em;margin:.67em 0}
+abbr[title]{border-bottom:1px dotted}
+b,strong{font-weight:bold}
+dfn{font-style:italic}
+hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}
+mark{background:#ff0;color:#000}
+code,kbd,pre,samp{font-family:monospace;font-size:1em}
+pre{white-space:pre-wrap}
+q{quotes:"\201C" "\201D" "\2018" "\2019"}
+small{font-size:80%}
+sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}
+sup{top:-.5em}
+sub{bottom:-.25em}
+img{border:0}
+svg:not(:root){overflow:hidden}
+figure{margin:0}
+fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}
+legend{border:0;padding:0}
+button,input,select,textarea{font-family:inherit;font-size:100%;margin:0}
+button,input{line-height:normal}
+button,select{text-transform:none}
+button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}
+button[disabled],html input[disabled]{cursor:default}
+input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0}
+input[type="search"]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}
+input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}
+button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}
+textarea{overflow:auto;vertical-align:top}
+table{border-collapse:collapse;border-spacing:0}
+*,*:before,*:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}
+html,body{font-size:100%}
+body{background:#fff;color:rgba(0,0,0,.8);padding:0;margin:0;font-family:"Noto Serif","DejaVu Serif",serif;font-weight:400;font-style:normal;line-height:1;position:relative;cursor:auto;tab-size:4;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased}
+a:hover{cursor:pointer}
+img,object,embed{max-width:100%;height:auto}
+object,embed{height:100%}
+img{-ms-interpolation-mode:bicubic}
+.left{float:left!important}
+.right{float:right!important}
+.text-left{text-align:left!important}
+.text-right{text-align:right!important}
+.text-center{text-align:center!important}
+.text-justify{text-align:justify!important}
+.hide{display:none}
+img,object,svg{display:inline-block;vertical-align:middle}
+textarea{height:auto;min-height:50px}
+select{width:100%}
+.center{margin-left:auto;margin-right:auto}
+.spread{width:100%}
+p.lead,.paragraph.lead>p,#preamble>.sectionbody>.paragraph:first-of-type p{font-size:1.21875em;line-height:1.6}
+.subheader,.admonitionblock td.content>.title,.audioblock>.title,.exampleblock>.title,.imageblock>.title,.listingblock>.title,.literalblock>.title,.stemblock>.title,.openblock>.title,.paragraph>.title,.quoteblock>.title,table.tableblock>.title,.verseblock>.title,.videoblock>.title,.dlist>.title,.olist>.title,.ulist>.title,.qlist>.title,.hdlist>.title{line-height:1.45;color:#7a2518;font-weight:400;margin-top:0;margin-bottom:.25em}
+div,dl,dt,dd,ul,ol,li,h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6,pre,form,p,blockquote,th,td{margin:0;padding:0;direction:ltr}
+a{color:#2156a5;text-decoration:underline;line-height:inherit}
+a:hover,a:focus{color:#1d4b8f}
+a img{border:none}
+p{font-family:inherit;font-weight:400;font-size:1em;line-height:1.6;margin-bottom:1.25em;text-rendering:optimizeLegibility}
+p aside{font-size:.875em;line-height:1.35;font-style:italic}
+h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{font-family:"Open Sans","DejaVu Sans",sans-serif;font-weight:300;font-style:normal;color:#ba3925;text-rendering:optimizeLegibility;margin-top:1em;margin-bottom:.5em;line-height:1.0125em}
+h1 small,h2 small,h3 small,#toctitle small,.sidebarblock>.content>.title small,h4 small,h5 small,h6 small{font-size:60%;color:#e99b8f;line-height:0}
+h1{font-size:2.125em}
+h2{font-size:1.6875em}
+h3,#toctitle,.sidebarblock>.content>.title{font-size:1.375em}
+h4,h5{font-size:1.125em}
+h6{font-size:1em}
+hr{border:solid #ddddd8;border-width:1px 0 0;clear:both;margin:1.25em 0 1.1875em;height:0}
+em,i{font-style:italic;line-height:inherit}
+strong,b{font-weight:bold;line-height:inherit}
+small{font-size:60%;line-height:inherit}
+code{font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;font-weight:400;color:rgba(0,0,0,.9)}
+ul,ol,dl{font-size:1em;line-height:1.6;margin-bottom:1.25em;list-style-position:outside;font-family:inherit}
+ul,ol{margin-left:1.5em}
+ul li ul,ul li ol{margin-left:1.25em;margin-bottom:0;font-size:1em}
+ul.square li ul,ul.circle li ul,ul.disc li ul{list-style:inherit}
+ul.square{list-style-type:square}
+ul.circle{list-style-type:circle}
+ul.disc{list-style-type:disc}
+ol li ul,ol li ol{margin-left:1.25em;margin-bottom:0}
+dl dt{margin-bottom:.3125em;font-weight:bold}
+dl dd{margin-bottom:1.25em}
+abbr,acronym{text-transform:uppercase;font-size:90%;color:rgba(0,0,0,.8);border-bottom:1px dotted #ddd;cursor:help}
+abbr{text-transform:none}
+blockquote{margin:0 0 1.25em;padding:.5625em 1.25em 0 1.1875em;border-left:1px solid #ddd}
+blockquote cite{display:block;font-size:.9375em;color:rgba(0,0,0,.6)}
+blockquote cite:before{content:"\2014 \0020"}
+blockquote cite a,blockquote cite a:visited{color:rgba(0,0,0,.6)}
+blockquote,blockquote p{line-height:1.6;color:rgba(0,0,0,.85)}
+@media only screen and (min-width:768px){h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2}
+h1{font-size:2.75em}
+h2{font-size:2.3125em}
+h3,#toctitle,.sidebarblock>.content>.title{font-size:1.6875em}
+h4{font-size:1.4375em}}
+table{background:#fff;margin-bottom:1.25em;border:solid 1px #dedede}
+table thead,table tfoot{background:#f7f8f7;font-weight:bold}
+table thead tr th,table thead tr td,table tfoot tr th,table tfoot tr td{padding:.5em .625em .625em;font-size:inherit;color:rgba(0,0,0,.8);text-align:left}
+table tr th,table tr td{padding:.5625em .625em;font-size:inherit;color:rgba(0,0,0,.8)}
+table tr.even,table tr.alt,table tr:nth-of-type(even){background:#f8f8f7}
+table thead tr th,table tfoot tr th,table tbody tr td,table tr td,table tfoot tr td{display:table-cell;line-height:1.6}
+h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2;word-spacing:-.05em}
+h1 strong,h2 strong,h3 strong,#toctitle strong,.sidebarblock>.content>.title strong,h4 strong,h5 strong,h6 strong{font-weight:400}
+.clearfix:before,.clearfix:after,.float-group:before,.float-group:after{content:" ";display:table}
+.clearfix:after,.float-group:after{clear:both}
+*:not(pre)>code{font-size:.9375em;font-style:normal!important;letter-spacing:0;padding:.1em .5ex;word-spacing:-.15em;background-color:#f7f7f8;-webkit-border-radius:4px;border-radius:4px;line-height:1.45;text-rendering:optimizeSpeed;word-wrap:break-word}
+*:not(pre)>code.nobreak{word-wrap:normal}
+*:not(pre)>code.nowrap{white-space:nowrap}
+pre,pre>code{line-height:1.45;color:rgba(0,0,0,.9);font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;font-weight:400;text-rendering:optimizeSpeed}
+em em{font-style:normal}
+strong strong{font-weight:400}
+.keyseq{color:rgba(51,51,51,.8)}
+kbd{font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;display:inline-block;color:rgba(0,0,0,.8);font-size:.65em;line-height:1.45;background-color:#f7f7f7;border:1px solid #ccc;-webkit-border-radius:3px;border-radius:3px;-webkit-box-shadow:0 1px 0 rgba(0,0,0,.2),0 0 0 .1em white inset;box-shadow:0 1px 0 rgba(0,0,0,.2),0 0 0 .1em #fff inset;margin:0 .15em;padding:.2em .5em;vertical-align:middle;position:relative;top:-.1em;white-space:nowrap}
+.keyseq kbd:first-child{margin-left:0}
+.keyseq kbd:last-child{margin-right:0}
+.menuseq,.menuref{color:#000}
+.menuseq b:not(.caret),.menuref{font-weight:inherit}
+.menuseq{word-spacing:-.02em}
+.menuseq b.caret{font-size:1.25em;line-height:.8}
+.menuseq i.caret{font-weight:bold;text-align:center;width:.45em}
+b.button:before,b.button:after{position:relative;top:-1px;font-weight:400}
+b.button:before{content:"[";padding:0 3px 0 2px}
+b.button:after{content:"]";padding:0 2px 0 3px}
+p a>code:hover{color:rgba(0,0,0,.9)}
+#header,#content,#footnotes,#footer{width:100%;margin-left:auto;margin-right:auto;margin-top:0;margin-bottom:0;max-width:62.5em;*zoom:1;position:relative;padding-left:.9375em;padding-right:.9375em}
+#header:before,#header:after,#content:before,#content:after,#footnotes:before,#footnotes:after,#footer:before,#footer:after{content:" ";display:table}
+#header:after,#content:after,#footnotes:after,#footer:after{clear:both}
+#content{margin-top:1.25em}
+#content:before{content:none}
+#header>h1:first-child{color:rgba(0,0,0,.85);margin-top:2.25rem;margin-bottom:0}
+#header>h1:first-child+#toc{margin-top:8px;border-top:1px solid #ddddd8}
+#header>h1:only-child,body.toc2 #header>h1:nth-last-child(2){border-bottom:1px solid #ddddd8;padding-bottom:8px}
+#header .details{border-bottom:1px solid #ddddd8;line-height:1.45;padding-top:.25em;padding-bottom:.25em;padding-left:.25em;color:rgba(0,0,0,.6);display:-ms-flexbox;display:-webkit-flex;display:flex;-ms-flex-flow:row wrap;-webkit-flex-flow:row wrap;flex-flow:row wrap}
+#header .details span:first-child{margin-left:-.125em}
+#header .details span.email a{color:rgba(0,0,0,.85)}
+#header .details br{display:none}
+#header .details br+span:before{content:"\00a0\2013\00a0"}
+#header .details br+span.author:before{content:"\00a0\22c5\00a0";color:rgba(0,0,0,.85)}
+#header .details br+span#revremark:before{content:"\00a0|\00a0"}
+#header #revnumber{text-transform:capitalize}
+#header #revnumber:after{content:"\00a0"}
+#content>h1:first-child:not([class]){color:rgba(0,0,0,.85);border-bottom:1px solid #ddddd8;padding-bottom:8px;margin-top:0;padding-top:1rem;margin-bottom:1.25rem}
+#toc{border-bottom:1px solid #efefed;padding-bottom:.5em}
+#toc>ul{margin-left:.125em}
+#toc ul.sectlevel0>li>a{font-style:italic}
+#toc ul.sectlevel0 ul.sectlevel1{margin:.5em 0}
+#toc ul{font-family:"Open Sans","DejaVu Sans",sans-serif;list-style-type:none}
+#toc li{line-height:1.3334;margin-top:.3334em}
+#toc a{text-decoration:none}
+#toc a:active{text-decoration:underline}
+#toctitle{color:#7a2518;font-size:1.2em}
+@media only screen and (min-width:768px){#toctitle{font-size:1.375em}
+body.toc2{padding-left:15em;padding-right:0}
+#toc.toc2{margin-top:0!important;background-color:#f8f8f7;position:fixed;width:15em;left:0;top:0;border-right:1px solid #efefed;border-top-width:0!important;border-bottom-width:0!important;z-index:1000;padding:1.25em 1em;height:100%;overflow:auto}
+#toc.toc2 #toctitle{margin-top:0;margin-bottom:.8rem;font-size:1.2em}
+#toc.toc2>ul{font-size:.9em;margin-bottom:0}
+#toc.toc2 ul ul{margin-left:0;padding-left:1em}
+#toc.toc2 ul.sectlevel0 ul.sectlevel1{padding-left:0;margin-top:.5em;margin-bottom:.5em}
+body.toc2.toc-right{padding-left:0;padding-right:15em}
+body.toc2.toc-right #toc.toc2{border-right-width:0;border-left:1px solid #efefed;left:auto;right:0}}
+@media only screen and (min-width:1280px){body.toc2{padding-left:20em;padding-right:0}
+#toc.toc2{width:20em}
+#toc.toc2 #toctitle{font-size:1.375em}
+#toc.toc2>ul{font-size:.95em}
+#toc.toc2 ul ul{padding-left:1.25em}
+body.toc2.toc-right{padding-left:0;padding-right:20em}}
+#content #toc{border-style:solid;border-width:1px;border-color:#e0e0dc;margin-bottom:1.25em;padding:1.25em;background:#f8f8f7;-webkit-border-radius:4px;border-radius:4px}
+#content #toc>:first-child{margin-top:0}
+#content #toc>:last-child{margin-bottom:0}
+#footer{max-width:100%;background-color:rgba(0,0,0,.8);padding:1.25em}
+#footer-text{color:rgba(255,255,255,.8);line-height:1.44}
+.sect1{padding-bottom:.625em}
+@media only screen and (min-width:768px){.sect1{padding-bottom:1.25em}}
+.sect1+.sect1{border-top:1px solid #efefed}
+#content h1>a.anchor,h2>a.anchor,h3>a.anchor,#toctitle>a.anchor,.sidebarblock>.content>.title>a.anchor,h4>a.anchor,h5>a.anchor,h6>a.anchor{position:absolute;z-index:1001;width:1.5ex;margin-left:-1.5ex;display:block;text-decoration:none!important;visibility:hidden;text-align:center;font-weight:400}
+#content h1>a.anchor:before,h2>a.anchor:before,h3>a.anchor:before,#toctitle>a.anchor:before,.sidebarblock>.content>.title>a.anchor:before,h4>a.anchor:before,h5>a.anchor:before,h6>a.anchor:before{content:"\00A7";font-size:.85em;display:block;padding-top:.1em}
+#content h1:hover>a.anchor,#content h1>a.anchor:hover,h2:hover>a.anchor,h2>a.anchor:hover,h3:hover>a.anchor,#toctitle:hover>a.anchor,.sidebarblock>.content>.title:hover>a.anchor,h3>a.anchor:hover,#toctitle>a.anchor:hover,.sidebarblock>.content>.title>a.anchor:hover,h4:hover>a.anchor,h4>a.anchor:hover,h5:hover>a.anchor,h5>a.anchor:hover,h6:hover>a.anchor,h6>a.anchor:hover{visibility:visible}
+#content h1>a.link,h2>a.link,h3>a.link,#toctitle>a.link,.sidebarblock>.content>.title>a.link,h4>a.link,h5>a.link,h6>a.link{color:#ba3925;text-decoration:none}
+#content h1>a.link:hover,h2>a.link:hover,h3>a.link:hover,#toctitle>a.link:hover,.sidebarblock>.content>.title>a.link:hover,h4>a.link:hover,h5>a.link:hover,h6>a.link:hover{color:#a53221}
+.audioblock,.imageblock,.literalblock,.listingblock,.stemblock,.videoblock{margin-bottom:1.25em}
+.admonitionblock td.content>.title,.audioblock>.title,.exampleblock>.title,.imageblock>.title,.listingblock>.title,.literalblock>.title,.stemblock>.title,.openblock>.title,.paragraph>.title,.quoteblock>.title,table.tableblock>.title,.verseblock>.title,.videoblock>.title,.dlist>.title,.olist>.title,.ulist>.title,.qlist>.title,.hdlist>.title{text-rendering:optimizeLegibility;text-align:left;font-family:"Noto Serif","DejaVu Serif",serif;font-size:1rem;font-style:italic}
+table.tableblock>caption.title{white-space:nowrap;overflow:visible;max-width:0}
+.paragraph.lead>p,#preamble>.sectionbody>.paragraph:first-of-type p{color:rgba(0,0,0,.85)}
+table.tableblock #preamble>.sectionbody>.paragraph:first-of-type p{font-size:inherit}
+.admonitionblock>table{border-collapse:separate;border:0;background:none;width:100%}
+.admonitionblock>table td.icon{text-align:center;width:80px}
+.admonitionblock>table td.icon img{max-width:initial}
+.admonitionblock>table td.icon .title{font-weight:bold;font-family:"Open Sans","DejaVu Sans",sans-serif;text-transform:uppercase}
+.admonitionblock>table td.content{padding-left:1.125em;padding-right:1.25em;border-left:1px solid #ddddd8;color:rgba(0,0,0,.6)}
+.admonitionblock>table td.content>:last-child>:last-child{margin-bottom:0}
+.exampleblock>.content{border-style:solid;border-width:1px;border-color:#e6e6e6;margin-bottom:1.25em;padding:1.25em;background:#fff;-webkit-border-radius:4px;border-radius:4px}
+.exampleblock>.content>:first-child{margin-top:0}
+.exampleblock>.content>:last-child{margin-bottom:0}
+.sidebarblock{border-style:solid;border-width:1px;border-color:#e0e0dc;margin-bottom:1.25em;padding:1.25em;background:#f8f8f7;-webkit-border-radius:4px;border-radius:4px}
+.sidebarblock>:first-child{margin-top:0}
+.sidebarblock>:last-child{margin-bottom:0}
+.sidebarblock>.content>.title{color:#7a2518;margin-top:0;text-align:center}
+.exampleblock>.content>:last-child>:last-child,.exampleblock>.content .olist>ol>li:last-child>:last-child,.exampleblock>.content .ulist>ul>li:last-child>:last-child,.exampleblock>.content .qlist>ol>li:last-child>:last-child,.sidebarblock>.content>:last-child>:last-child,.sidebarblock>.content .olist>ol>li:last-child>:last-child,.sidebarblock>.content .ulist>ul>li:last-child>:last-child,.sidebarblock>.content .qlist>ol>li:last-child>:last-child{margin-bottom:0}
+.literalblock pre,.listingblock pre:not(.highlight),.listingblock pre[class="highlight"],.listingblock pre[class^="highlight "],.listingblock pre.CodeRay,.listingblock pre.prettyprint{background:#f7f7f8}
+.sidebarblock .literalblock pre,.sidebarblock .listingblock pre:not(.highlight),.sidebarblock .listingblock pre[class="highlight"],.sidebarblock .listingblock pre[class^="highlight "],.sidebarblock .listingblock pre.CodeRay,.sidebarblock .listingblock pre.prettyprint{background:#f2f1f1}
+.literalblock pre,.literalblock pre[class],.listingblock pre,.listingblock pre[class]{-webkit-border-radius:4px;border-radius:4px;word-wrap:break-word;padding:1em;font-size:.8125em}
+.literalblock pre.nowrap,.literalblock pre[class].nowrap,.listingblock pre.nowrap,.listingblock pre[class].nowrap{overflow-x:auto;white-space:pre;word-wrap:normal}
+@media only screen and (min-width:768px){.literalblock pre,.literalblock pre[class],.listingblock pre,.listingblock pre[class]{font-size:.90625em}}
+@media only screen and (min-width:1280px){.literalblock pre,.literalblock pre[class],.listingblock pre,.listingblock pre[class]{font-size:1em}}
+.literalblock.output pre{color:#f7f7f8;background-color:rgba(0,0,0,.9)}
+.listingblock pre.highlightjs{padding:0}
+.listingblock pre.highlightjs>code{padding:1em;-webkit-border-radius:4px;border-radius:4px}
+.listingblock pre.prettyprint{border-width:0}
+.listingblock>.content{position:relative}
+.listingblock code[data-lang]:before{display:none;content:attr(data-lang);position:absolute;font-size:.75em;top:.425rem;right:.5rem;line-height:1;text-transform:uppercase;color:#999}
+.listingblock:hover code[data-lang]:before{display:block}
+.listingblock.terminal pre .command:before{content:attr(data-prompt);padding-right:.5em;color:#999}
+.listingblock.terminal pre .command:not([data-prompt]):before{content:"$"}
+table.pyhltable{border-collapse:separate;border:0;margin-bottom:0;background:none}
+table.pyhltable td{vertical-align:top;padding-top:0;padding-bottom:0;line-height:1.45}
+table.pyhltable td.code{padding-left:.75em;padding-right:0}
+pre.pygments .lineno,table.pyhltable td:not(.code){color:#999;padding-left:0;padding-right:.5em;border-right:1px solid #ddddd8}
+pre.pygments .lineno{display:inline-block;margin-right:.25em}
+table.pyhltable .linenodiv{background:none!important;padding-right:0!important}
+.quoteblock{margin:0 1em 1.25em 1.5em;display:table}
+.quoteblock>.title{margin-left:-1.5em;margin-bottom:.75em}
+.quoteblock blockquote,.quoteblock blockquote p{color:rgba(0,0,0,.85);font-size:1.15rem;line-height:1.75;word-spacing:.1em;letter-spacing:0;font-style:italic;text-align:justify}
+.quoteblock blockquote{margin:0;padding:0;border:0}
+.quoteblock blockquote:before{content:"\201c";float:left;font-size:2.75em;font-weight:bold;line-height:.6em;margin-left:-.6em;color:#7a2518;text-shadow:0 1px 2px rgba(0,0,0,.1)}
+.quoteblock blockquote>.paragraph:last-child p{margin-bottom:0}
+.quoteblock .attribution{margin-top:.5em;margin-right:.5ex;text-align:right}
+.quoteblock .quoteblock{margin-left:0;margin-right:0;padding:.5em 0;border-left:3px solid rgba(0,0,0,.6)}
+.quoteblock .quoteblock blockquote{padding:0 0 0 .75em}
+.quoteblock .quoteblock blockquote:before{display:none}
+.verseblock{margin:0 1em 1.25em 1em}
+.verseblock pre{font-family:"Open Sans","DejaVu Sans",sans;font-size:1.15rem;color:rgba(0,0,0,.85);font-weight:300;text-rendering:optimizeLegibility}
+.verseblock pre strong{font-weight:400}
+.verseblock .attribution{margin-top:1.25rem;margin-left:.5ex}
+.quoteblock .attribution,.verseblock .attribution{font-size:.9375em;line-height:1.45;font-style:italic}
+.quoteblock .attribution br,.verseblock .attribution br{display:none}
+.quoteblock .attribution cite,.verseblock .attribution cite{display:block;letter-spacing:-.025em;color:rgba(0,0,0,.6)}
+.quoteblock.abstract{margin:0 0 1.25em 0;display:block}
+.quoteblock.abstract blockquote,.quoteblock.abstract blockquote p{text-align:left;word-spacing:0}
+.quoteblock.abstract blockquote:before,.quoteblock.abstract blockquote p:first-of-type:before{display:none}
+table.tableblock{max-width:100%;border-collapse:separate}
+table.tableblock td>.paragraph:last-child p>p:last-child,table.tableblock th>p:last-child,table.tableblock td>p:last-child{margin-bottom:0}
+table.tableblock,th.tableblock,td.tableblock{border:0 solid #dedede}
+table.grid-all>thead>tr>.tableblock,table.grid-all>tbody>tr>.tableblock{border-width:0 1px 1px 0}
+table.grid-all>tfoot>tr>.tableblock{border-width:1px 1px 0 0}
+table.grid-cols>*>tr>.tableblock{border-width:0 1px 0 0}
+table.grid-rows>thead>tr>.tableblock,table.grid-rows>tbody>tr>.tableblock{border-width:0 0 1px 0}
+table.grid-rows>tfoot>tr>.tableblock{border-width:1px 0 0 0}
+table.grid-all>*>tr>.tableblock:last-child,table.grid-cols>*>tr>.tableblock:last-child{border-right-width:0}
+table.grid-all>tbody>tr:last-child>.tableblock,table.grid-all>thead:last-child>tr>.tableblock,table.grid-rows>tbody>tr:last-child>.tableblock,table.grid-rows>thead:last-child>tr>.tableblock{border-bottom-width:0}
+table.frame-all{border-width:1px}
+table.frame-sides{border-width:0 1px}
+table.frame-topbot{border-width:1px 0}
+th.halign-left,td.halign-left{text-align:left}
+th.halign-right,td.halign-right{text-align:right}
+th.halign-center,td.halign-center{text-align:center}
+th.valign-top,td.valign-top{vertical-align:top}
+th.valign-bottom,td.valign-bottom{vertical-align:bottom}
+th.valign-middle,td.valign-middle{vertical-align:middle}
+table thead th,table tfoot th{font-weight:bold}
+tbody tr th{display:table-cell;line-height:1.6;background:#f7f8f7}
+tbody tr th,tbody tr th p,tfoot tr th,tfoot tr th p{color:rgba(0,0,0,.8);font-weight:bold}
+p.tableblock>code:only-child{background:none;padding:0}
+p.tableblock{font-size:1em}
+td>div.verse{white-space:pre}
+ol{margin-left:1.75em}
+ul li ol{margin-left:1.5em}
+dl dd{margin-left:1.125em}
+dl dd:last-child,dl dd:last-child>:last-child{margin-bottom:0}
+ol>li p,ul>li p,ul dd,ol dd,.olist .olist,.ulist .ulist,.ulist .olist,.olist .ulist{margin-bottom:.625em}
+ul.checklist,ul.none,ol.none,ul.no-bullet,ol.no-bullet,ol.unnumbered,ul.unstyled,ol.unstyled{list-style-type:none}
+ul.no-bullet,ol.no-bullet,ol.unnumbered{margin-left:.625em}
+ul.unstyled,ol.unstyled{margin-left:0}
+ul.checklist{margin-left:.625em}
+ul.checklist li>p:first-child>.fa-square-o:first-child,ul.checklist li>p:first-child>.fa-check-square-o:first-child{width:1.25em;font-size:.8em;position:relative;bottom:.125em}
+ul.checklist li>p:first-child>input[type="checkbox"]:first-child{margin-right:.25em}
+ul.inline{margin:0 auto .625em auto;margin-left:-1.375em;margin-right:0;padding:0;list-style:none;overflow:hidden}
+ul.inline>li{list-style:none;float:left;margin-left:1.375em;display:block}
+ul.inline>li>*{display:block}
+.unstyled dl dt{font-weight:400;font-style:normal}
+ol.arabic{list-style-type:decimal}
+ol.decimal{list-style-type:decimal-leading-zero}
+ol.loweralpha{list-style-type:lower-alpha}
+ol.upperalpha{list-style-type:upper-alpha}
+ol.lowerroman{list-style-type:lower-roman}
+ol.upperroman{list-style-type:upper-roman}
+ol.lowergreek{list-style-type:lower-greek}
+.hdlist>table,.colist>table{border:0;background:none}
+.hdlist>table>tbody>tr,.colist>table>tbody>tr{background:none}
+td.hdlist1,td.hdlist2{vertical-align:top;padding:0 .625em}
+td.hdlist1{font-weight:bold;padding-bottom:1.25em}
+.literalblock+.colist,.listingblock+.colist{margin-top:-.5em}
+.colist>table tr>td:first-of-type{padding:.4em .75em 0 .75em;line-height:1;vertical-align:top}
+.colist>table tr>td:first-of-type img{max-width:initial}
+.colist>table tr>td:last-of-type{padding:.25em 0}
+.thumb,.th{line-height:0;display:inline-block;border:solid 4px #fff;-webkit-box-shadow:0 0 0 1px #ddd;box-shadow:0 0 0 1px #ddd}
+.imageblock.left,.imageblock[style*="float: left"]{margin:.25em .625em 1.25em 0}
+.imageblock.right,.imageblock[style*="float: right"]{margin:.25em 0 1.25em .625em}
+.imageblock>.title{margin-bottom:0}
+.imageblock.thumb,.imageblock.th{border-width:6px}
+.imageblock.thumb>.title,.imageblock.th>.title{padding:0 .125em}
+.image.left,.image.right{margin-top:.25em;margin-bottom:.25em;display:inline-block;line-height:0}
+.image.left{margin-right:.625em}
+.image.right{margin-left:.625em}
+a.image{text-decoration:none;display:inline-block}
+a.image object{pointer-events:none}
+sup.footnote,sup.footnoteref{font-size:.875em;position:static;vertical-align:super}
+sup.footnote a,sup.footnoteref a{text-decoration:none}
+sup.footnote a:active,sup.footnoteref a:active{text-decoration:underline}
+#footnotes{padding-top:.75em;padding-bottom:.75em;margin-bottom:.625em}
+#footnotes hr{width:20%;min-width:6.25em;margin:-.25em 0 .75em 0;border-width:1px 0 0 0}
+#footnotes .footnote{padding:0 .375em 0 .225em;line-height:1.3334;font-size:.875em;margin-left:1.2em;text-indent:-1.05em;margin-bottom:.2em}
+#footnotes .footnote a:first-of-type{font-weight:bold;text-decoration:none}
+#footnotes .footnote:last-of-type{margin-bottom:0}
+#content #footnotes{margin-top:-.625em;margin-bottom:0;padding:.75em 0}
+.gist .file-data>table{border:0;background:#fff;width:100%;margin-bottom:0}
+.gist .file-data>table td.line-data{width:99%}
+div.unbreakable{page-break-inside:avoid}
+.big{font-size:larger}
+.small{font-size:smaller}
+.underline{text-decoration:underline}
+.overline{text-decoration:overline}
+.line-through{text-decoration:line-through}
+.aqua{color:#00bfbf}
+.aqua-background{background-color:#00fafa}
+.black{color:#000}
+.black-background{background-color:#000}
+.blue{color:#0000bf}
+.blue-background{background-color:#0000fa}
+.fuchsia{color:#bf00bf}
+.fuchsia-background{background-color:#fa00fa}
+.gray{color:#606060}
+.gray-background{background-color:#7d7d7d}
+.green{color:#006000}
+.green-background{background-color:#007d00}
+.lime{color:#00bf00}
+.lime-background{background-color:#00fa00}
+.maroon{color:#600000}
+.maroon-background{background-color:#7d0000}
+.navy{color:#000060}
+.navy-background{background-color:#00007d}
+.olive{color:#606000}
+.olive-background{background-color:#7d7d00}
+.purple{color:#600060}
+.purple-background{background-color:#7d007d}
+.red{color:#bf0000}
+.red-background{background-color:#fa0000}
+.silver{color:#909090}
+.silver-background{background-color:#bcbcbc}
+.teal{color:#006060}
+.teal-background{background-color:#007d7d}
+.white{color:#bfbfbf}
+.white-background{background-color:#fafafa}
+.yellow{color:#bfbf00}
+.yellow-background{background-color:#fafa00}
+span.icon>.fa{cursor:default}
+a span.icon>.fa{cursor:inherit}
+.admonitionblock td.icon [class^="fa icon-"]{font-size:2.5em;text-shadow:1px 1px 2px rgba(0,0,0,.5);cursor:default}
+.admonitionblock td.icon .icon-note:before{content:"\f05a";color:#19407c}
+.admonitionblock td.icon .icon-tip:before{content:"\f0eb";text-shadow:1px 1px 2px rgba(155,155,0,.8);color:#111}
+.admonitionblock td.icon .icon-warning:before{content:"\f071";color:#bf6900}
+.admonitionblock td.icon .icon-caution:before{content:"\f06d";color:#bf3400}
+.admonitionblock td.icon .icon-important:before{content:"\f06a";color:#bf0000}
+.conum[data-value]{display:inline-block;color:#fff!important;background-color:rgba(0,0,0,.8);-webkit-border-radius:100px;border-radius:100px;text-align:center;font-size:.75em;width:1.67em;height:1.67em;line-height:1.67em;font-family:"Open Sans","DejaVu Sans",sans-serif;font-style:normal;font-weight:bold}
+.conum[data-value] *{color:#fff!important}
+.conum[data-value]+b{display:none}
+.conum[data-value]:after{content:attr(data-value)}
+pre .conum[data-value]{position:relative;top:-.125em}
+b.conum *{color:inherit!important}
+.conum:not([data-value]):empty{display:none}
+dt,th.tableblock,td.content,div.footnote{text-rendering:optimizeLegibility}
+h1,h2,p,td.content,span.alt{letter-spacing:-.01em}
+p strong,td.content strong,div.footnote strong{letter-spacing:-.005em}
+p,blockquote,dt,td.content,span.alt{font-size:1.0625rem}
+p{margin-bottom:1.25rem}
+.sidebarblock p,.sidebarblock dt,.sidebarblock td.content,p.tableblock{font-size:1em}
+.exampleblock>.content{background-color:#fffef7;border-color:#e0e0dc;-webkit-box-shadow:0 1px 4px #e0e0dc;box-shadow:0 1px 4px #e0e0dc}
+.print-only{display:none!important}
+@media print{@page{margin:1.25cm .75cm}
+*{-webkit-box-shadow:none!important;box-shadow:none!important;text-shadow:none!important}
+a{color:inherit!important;text-decoration:underline!important}
+a.bare,a[href^="#"],a[href^="mailto:"]{text-decoration:none!important}
+a[href^="http:"]:not(.bare):after,a[href^="https:"]:not(.bare):after{content:"(" attr(href) ")";display:inline-block;font-size:.875em;padding-left:.25em}
+abbr[title]:after{content:" (" attr(title) ")"}
+pre,blockquote,tr,img,object,svg{page-break-inside:avoid}
+thead{display:table-header-group}
+svg{max-width:100%}
+p,blockquote,dt,td.content{font-size:1em;orphans:3;widows:3}
+h2,h3,#toctitle,.sidebarblock>.content>.title{page-break-after:avoid}
+#toc,.sidebarblock,.exampleblock>.content{background:none!important}
+#toc{border-bottom:1px solid #ddddd8!important;padding-bottom:0!important}
+.sect1{padding-bottom:0!important}
+.sect1+.sect1{border:0!important}
+#header>h1:first-child{margin-top:1.25rem}
+body.book #header{text-align:center}
+body.book #header>h1:first-child{border:0!important;margin:2.5em 0 1em 0}
+body.book #header .details{border:0!important;display:block;padding:0!important}
+body.book #header .details span:first-child{margin-left:0!important}
+body.book #header .details br{display:block}
+body.book #header .details br+span:before{content:none!important}
+body.book #toc{border:0!important;text-align:left!important;padding:0!important;margin:0!important}
+body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-break-before:always}
+.listingblock code[data-lang]:before{display:block}
+#footer{background:none!important;padding:0 .9375em}
+#footer-text{color:rgba(0,0,0,.6)!important;font-size:.9em}
+.hide-on-print{display:none!important}
+.print-only{display:block!important}
+.hide-for-print{display:none!important}
+.show-for-print{display:inherit!important}}
+</style>
+</head>
+<body class="article toc2 toc-left">
+<div id="header">
+<h1>API ServiceOrder</h1>
+<div id="toc" class="toc2">
+<div id="toctitle">Table of Contents</div>
+<ul class="sectlevel1">
+<li><a href="#_overview">Overview</a>
+<ul class="sectlevel2">
+<li><a href="#_api_url">Api URL</a></li>
+<li><a href="#_version_information">Version information</a></li>
+<li><a href="#_uri_scheme">URI scheme</a></li>
+<li><a href="#_tags">Tags</a></li>
+<li><a href="#_consumes">Consumes</a></li>
+<li><a href="#_produces">Produces</a></li>
+</ul>
+</li>
+<li><a href="#_paths">Resources</a>
+<ul class="sectlevel2">
+<li><a href="#_serviceorder_resource">ServiceOrder</a></li>
+</ul>
+</li>
+<li><a href="#_definitions">Definitions</a>
+<ul class="sectlevel2">
+<li><a href="#_actiontype">ActionType</a></li>
+<li><a href="#_createserviceorder">CreateServiceOrder</a></li>
+<li><a href="#_createserviceorderitem">CreateServiceOrderItem</a></li>
+<li><a href="#_errorrepresentation">ErrorRepresentation</a></li>
+<li><a href="#_hub">Hub</a></li>
+<li><a href="#_orderitemrelationship">OrderItemRelationship</a></li>
+<li><a href="#_orderrelationship">OrderRelationship</a></li>
+<li><a href="#_relatedparty">RelatedParty</a></li>
+<li><a href="#_relationshiptype">RelationshipType</a></li>
+<li><a href="#_service">Service</a></li>
+<li><a href="#_servicecharacteristic">ServiceCharacteristic</a></li>
+<li><a href="#_serviceorder">ServiceOrder</a></li>
+<li><a href="#_serviceorderitem">ServiceOrderItem</a></li>
+<li><a href="#_serviceref">ServiceRef</a></li>
+<li><a href="#_servicerelationship">ServiceRelationship</a></li>
+<li><a href="#_servicespecificationref">ServiceSpecificationRef</a></li>
+<li><a href="#_statetype">StateType</a></li>
+<li><a href="#_targetserviceschema">TargetServiceSchema</a></li>
+<li><a href="#_value">Value</a></li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<div id="content">
+<div class="sect1">
+<h2 id="_overview">Overview</h2>
+<div class="sectionbody">
+<div class="sect2">
+<div class="paragraph">
+<p>serviceOrder API designed for ONAP Beijing Release.
+This API is build from TMF open API18.0 (applying TMF Guideline 3.0);
+Only operations GET (by id and list) and POST are available.</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_version_information">Version information</h3>
+<div class="paragraph">
+<p><em>Version</em> : 1.0.0_inProgress</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_uri_scheme">URI scheme</h3>
+<div class="paragraph">
+<p><em>Host</em> : serverRoot<br>
+<em>BasePath</em> : /nbi/api/v1<br>
+<em>Schemes</em> : HTTPS</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_tags">Tags</h3>
+<div class="ulist">
+<ul>
+<li>
+<p>ServiceOrder : A Service Order is a type of order which can be used to describe a group of operations on service – one service order item per service. An action at the level of the service order item describe the operation to be done on a service (add, terminate for example). The service order is triggered from the BSS system in charge of the product order management to ONAP that will manage the service fulfillment.</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_consumes">Consumes</h3>
+<div class="ulist">
+<ul>
+<li>
+<p><code>application/json;charset=utf-8</code></p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_produces">Produces</h3>
+<div class="ulist">
+<ul>
+<li>
+<p><code>application/json;charset=utf-8</code></p>
+</li>
+</ul>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_paths">Resources</h2>
+<div class="sectionbody">
+<div class="sect2">
+<h3 id="_serviceorder_resource">ServiceOrder</h3>
+<div class="paragraph">
+<p>A Service Order is a type of order which can be used to describe a group of operations on service – one service order item per service. An action at the level of the service order item describe the operation to be done on a service (add, terminate for example). The service order is triggered from the BSS system in charge of the product order management to ONAP that will manage the service fulfillment.</p>
+</div>
+<div class="sect3">
+<h4 id="_serviceordercreate">Create a service order</h4>
+<div class="literalblock">
+<div class="content">
+<pre>POST /serviceOrder</pre>
+</div>
+</div>
+<div class="sect4">
+<h5 id="_description">Description</h5>
+<div class="paragraph">
+<p>This operation creates a service order entity.
+The TMF Open API specification document provides the list of mandatory and non mandatory attributes when creating a ServiceOrder, including any possible rule conditions and applicable default values.
+POST should be used without specifying the id and the href, the Service Order Management system is in charge of generating the id + href for the ServiceOrder.</p>
+</div>
+<div class="paragraph">
+<p>Specific business errors for current operation will be encapsulated in</p>
+</div>
+<div class="paragraph">
+<p>HTTP Response 422 Unprocessable entity</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>100: OrderItem with 'add' action but serviceSpecification id missing</p>
+</li>
+<li>
+<p>101: OrderItem with 'change'/'noChange'/'remove' but service id missing</p>
+</li>
+<li>
+<p>102: OrderItem with 'add' action - serviceSpecification id provided but not existing</p>
+</li>
+<li>
+<p>103: OrderItem with 'add' action but service id already existing in the inventory</p>
+</li>
+<li>
+<p>104: A customer for existing service(s) is provided but he did not exist</p>
+</li>
+<li>
+<p>105: OrderItem with 'change'/'noChange'/'remove' - Service id provided but it is not existing in the inventory</p>
+</li>
+<li>
+<p>106: [Not managed for current Relese] Issue with lcpCloudRegionId and tenantId provided</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="sect4">
+<h5 id="_parameters">Parameters</h5>
+<table class="tableblock frame-all grid-all spread">
+<colgroup>
+<col style="width: 22.2222%;">
+<col style="width: 33.3333%;">
+<col style="width: 44.4445%;">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-middle">Type</th>
+<th class="tableblock halign-left valign-middle">Name</th>
+<th class="tableblock halign-left valign-middle">Schema</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>Body</strong></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>serviceOrder</strong><br>
+<em>required</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><a href="#_createserviceorder">CreateServiceOrder</a></p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="sect4">
+<h5 id="_responses">Responses</h5>
+<table class="tableblock frame-all grid-all spread">
+<colgroup>
+<col style="width: 10%;">
+<col style="width: 70%;">
+<col style="width: 20%;">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-middle">HTTP Code</th>
+<th class="tableblock halign-left valign-middle">Description</th>
+<th class="tableblock halign-left valign-middle">Schema</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>201</strong></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Success</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><a href="#_createserviceorder">CreateServiceOrder</a></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>400</strong></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Bad Request</p>
+<p class="tableblock">List of supported error codes:
+- 20: Invalid URL parameter value
+- 21: Missing body
+- 22: Invalid body
+- 23: Missing body field
+- 24: Invalid body field
+- 25: Missing header
+- 26: Invalid header value
+- 27: Missing query-string parameter
+- 28: Invalid query-string parameter value</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><a href="#_errorrepresentation">ErrorRepresentation</a></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>401</strong></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Unauthorized</p>
+<p class="tableblock">List of supported error codes:
+- 40: Missing credentials
+- 41: Invalid credentials
+- 42: Expired credentials</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><a href="#_errorrepresentation">ErrorRepresentation</a></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>403</strong></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Forbidden</p>
+<p class="tableblock">List of supported error codes:
+- 50: Access denied
+- 51: Forbidden requester
+- 52: Forbidden user
+- 53: Too many requests</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><a href="#_errorrepresentation">ErrorRepresentation</a></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>404</strong></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Not Found</p>
+<p class="tableblock">List of supported error codes:
+- 60: Resource not found</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><a href="#_errorrepresentation">ErrorRepresentation</a></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>422</strong></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Unprocessable entity</p>
+<p class="tableblock">Functional error</p>
+<p class="tableblock">Specific encapsulated business errors for current operation</p>
+<p class="tableblock">* 100: OrderItem with 'add' action but serviceSpecification id missing</p>
+<p class="tableblock">* 101: OrderItem with 'change'/'noChange'/'remove' but service id missing</p>
+<p class="tableblock">* 102: OrderItem with 'add' action - serviceSpecification id provided but not existing</p>
+<p class="tableblock">* 103: OrderItem with 'add' action but service id already existing in the inventory</p>
+<p class="tableblock">* 104: A customer for existing service(s) is provided but he did not exist</p>
+<p class="tableblock">* 105: OrderItem with 'change'/'noChange'/'remove' - Service id provided but it is not existing in the inventory</p>
+<p class="tableblock">* 106: [Not managed for current Relese] Issue with lcpCloudRegionId and tenantId provided</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><a href="#_errorrepresentation">ErrorRepresentation</a></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>500</strong></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Internal Server Error</p>
+<p class="tableblock">List of supported error codes:
+- 1: Internal error</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><a href="#_errorrepresentation">ErrorRepresentation</a></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>503</strong></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Service Unavailable</p>
+<p class="tableblock">List of supported error codes:
+- 5: The service is temporarily unavailable
+- 6: Orange API is over capacity, retry later !</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><a href="#_errorrepresentation">ErrorRepresentation</a></p></td>
+</tr>
+</tbody>
+</table>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_serviceorderfind">List service orders</h4>
+<div class="literalblock">
+<div class="content">
+<pre>GET /serviceOrder</pre>
+</div>
+</div>
+<div class="sect4">
+<h5 id="_description_2">Description</h5>
+<div class="paragraph">
+<p>Retrieve and list service order entities according to given criteria.
+Only a predefined set of attribute is proposed.
+Attribute selection could be described in the fields attribute.</p>
+</div>
+<div class="paragraph">
+<p>Specific business errors for current operation will be encapsulated in</p>
+</div>
+<div class="paragraph">
+<p>HTTP Response 422 Unprocessable entity</p>
+</div>
+</div>
+<div class="sect4">
+<h5 id="_parameters_2">Parameters</h5>
+<table class="tableblock frame-all grid-all spread">
+<colgroup>
+<col style="width: 11.1111%;">
+<col style="width: 16.6666%;">
+<col style="width: 50%;">
+<col style="width: 22.2223%;">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-middle">Type</th>
+<th class="tableblock halign-left valign-middle">Name</th>
+<th class="tableblock halign-left valign-middle">Description</th>
+<th class="tableblock halign-left valign-middle">Schema</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>Query</strong></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>description</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>Query</strong></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>externalId</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>Query</strong></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>fields</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">this attribute could be used to filter retrieved attribute(s) and/or sort SO.</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>Query</strong></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>limit</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">The maximum number of elements to retrieve (it can be greater than the actual available number of items).</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">integer (int32)</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>Query</strong></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>offset</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">The index of the first element to retrieve. Zero is the first element of the collection.</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">integer (int32)</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>Query</strong></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>orderDate.gt</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">order date greather than</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>Query</strong></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>orderDate.lt</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">order date lower than</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>Query</strong></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>state</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">state of the order(s) to be retrieved</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="sect4">
+<h5 id="_responses_2">Responses</h5>
+<table class="tableblock frame-all grid-all spread">
+<colgroup>
+<col style="width: 10%;">
+<col style="width: 70%;">
+<col style="width: 20%;">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-middle">HTTP Code</th>
+<th class="tableblock halign-left valign-middle">Description</th>
+<th class="tableblock halign-left valign-middle">Schema</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>200</strong></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Success<br>
+<strong>Headers</strong> : <br>
+<code>X-Total-Count</code> (integer (int32))<br>
+<code>X-Result-Count</code> (integer (int32))</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">&lt; <a href="#_serviceorder">ServiceOrder</a> &gt; array</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>400</strong></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Bad Request</p>
+<p class="tableblock">List of supported error codes:
+- 20: Invalid URL parameter value
+- 21: Missing body
+- 22: Invalid body
+- 23: Missing body field
+- 24: Invalid body field
+- 25: Missing header
+- 26: Invalid header value
+- 27: Missing query-string parameter
+- 28: Invalid query-string parameter value</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><a href="#_errorrepresentation">ErrorRepresentation</a></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>401</strong></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Unauthorized</p>
+<p class="tableblock">List of supported error codes:
+- 40: Missing credentials
+- 41: Invalid credentials
+- 42: Expired credentials</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><a href="#_errorrepresentation">ErrorRepresentation</a></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>403</strong></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Forbidden</p>
+<p class="tableblock">List of supported error codes:
+- 50: Access denied
+- 51: Forbidden requester
+- 52: Forbidden user
+- 53: Too many requests</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><a href="#_errorrepresentation">ErrorRepresentation</a></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>404</strong></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Not Found</p>
+<p class="tableblock">List of supported error codes:
+- 60: Resource not found</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><a href="#_errorrepresentation">ErrorRepresentation</a></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>422</strong></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Unprocessable entity</p>
+<p class="tableblock">Functional error</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><a href="#_errorrepresentation">ErrorRepresentation</a></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>500</strong></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Internal Server Error</p>
+<p class="tableblock">List of supported error codes:
+- 1: Internal error</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><a href="#_errorrepresentation">ErrorRepresentation</a></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>503</strong></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Service Unavailable</p>
+<p class="tableblock">List of supported error codes:
+- 5: The service is temporarily unavailable
+- 6: Orange API is over capacity, retry later !</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><a href="#_errorrepresentation">ErrorRepresentation</a></p></td>
+</tr>
+</tbody>
+</table>
+</div>
+</div>
+<div class="sect3">
+<h4 id="_serviceorderget">Retrieve a service order</h4>
+<div class="literalblock">
+<div class="content">
+<pre>GET /serviceOrder/{id}</pre>
+</div>
+</div>
+<div class="sect4">
+<h5 id="_description_3">Description</h5>
+<div class="paragraph">
+<p>This operation retrieves a service order entity.
+Attribute selection is enabled for all first level attributes.</p>
+</div>
+<div class="paragraph">
+<p>Specific business errors for current operation will be encapsulated in</p>
+</div>
+<div class="paragraph">
+<p>HTTP Response 422 Unprocessable entity</p>
+</div>
+</div>
+<div class="sect4">
+<h5 id="_parameters_3">Parameters</h5>
+<table class="tableblock frame-all grid-all spread">
+<colgroup>
+<col style="width: 11.1111%;">
+<col style="width: 16.6666%;">
+<col style="width: 50%;">
+<col style="width: 22.2223%;">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-middle">Type</th>
+<th class="tableblock halign-left valign-middle">Name</th>
+<th class="tableblock halign-left valign-middle">Description</th>
+<th class="tableblock halign-left valign-middle">Schema</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>Path</strong></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>id</strong><br>
+<em>required</em></p></td>
+<td class="tableblock halign-left valign-middle"></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>Query</strong></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>fields</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Attribute selection</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="sect4">
+<h5 id="_responses_3">Responses</h5>
+<table class="tableblock frame-all grid-all spread">
+<colgroup>
+<col style="width: 10%;">
+<col style="width: 70%;">
+<col style="width: 20%;">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-middle">HTTP Code</th>
+<th class="tableblock halign-left valign-middle">Description</th>
+<th class="tableblock halign-left valign-middle">Schema</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>200</strong></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Success</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><a href="#_serviceorder">ServiceOrder</a></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>400</strong></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Bad Request</p>
+<p class="tableblock">List of supported error codes:
+- 20: Invalid URL parameter value
+- 21: Missing body
+- 22: Invalid body
+- 23: Missing body field
+- 24: Invalid body field
+- 25: Missing header
+- 26: Invalid header value
+- 27: Missing query-string parameter
+- 28: Invalid query-string parameter value</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><a href="#_errorrepresentation">ErrorRepresentation</a></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>401</strong></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Unauthorized</p>
+<p class="tableblock">List of supported error codes:
+- 40: Missing credentials
+- 41: Invalid credentials
+- 42: Expired credentials</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><a href="#_errorrepresentation">ErrorRepresentation</a></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>403</strong></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Forbidden</p>
+<p class="tableblock">List of supported error codes:
+- 50: Access denied
+- 51: Forbidden requester
+- 52: Forbidden user
+- 53: Too many requests</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><a href="#_errorrepresentation">ErrorRepresentation</a></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>404</strong></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Not Found</p>
+<p class="tableblock">List of supported error codes:
+- 60: Resource not found</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><a href="#_errorrepresentation">ErrorRepresentation</a></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>422</strong></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Unprocessable entity</p>
+<p class="tableblock">Functional error</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><a href="#_errorrepresentation">ErrorRepresentation</a></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>500</strong></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Internal Server Error</p>
+<p class="tableblock">List of supported error codes:
+- 1: Internal error</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><a href="#_errorrepresentation">ErrorRepresentation</a></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>503</strong></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Service Unavailable</p>
+<p class="tableblock">List of supported error codes:
+- 5: The service is temporarily unavailable
+- 6: Orange API is over capacity, retry later !</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><a href="#_errorrepresentation">ErrorRepresentation</a></p></td>
+</tr>
+</tbody>
+</table>
+</div>
+</div>
+</div>
+</div>
+</div>
+<div class="sect1">
+<h2 id="_definitions">Definitions</h2>
+<div class="sectionbody">
+<div class="sect2">
+<h3 id="_actiontype">ActionType</h3>
+<div class="paragraph">
+<p>Action type to be describer on the order item.
+modify is not managed in Beijing release</p>
+</div>
+<div class="paragraph">
+<p><em>Type</em> : enum (add, modify, delete, noChange)</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_createserviceorder">CreateServiceOrder</h3>
+<div class="paragraph">
+<p>This structure is used in the operation POST for a serviceOrder request.
+Attribute description is not accurate and should be find in the serviceOrder class.</p>
+</div>
+<table class="tableblock frame-all grid-all spread">
+<colgroup>
+<col style="width: 16.6666%;">
+<col style="width: 61.1111%;">
+<col style="width: 22.2223%;">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-middle">Name</th>
+<th class="tableblock halign-left valign-middle">Description</th>
+<th class="tableblock halign-left valign-middle">Schema</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>@baseType</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>@schemaLocation</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>@type</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>category</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Used to categorize the order that can be useful for the OM system (e.g. “broadband”, “TVOption”, …)</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>description</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">A free-text description of the service order</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>externalId</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">ID given by the consumer and only understandable by him (to facilitate his searches)</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>orderItem</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">&lt; <a href="#_createserviceorderitem">CreateServiceOrderItem</a> &gt; array</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>orderRelationship</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">&lt; <a href="#_orderrelationship">OrderRelationship</a> &gt; array</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>priority</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">A way that can be used by consumers to prioritize orders in Service Order Management system (from 0 to 4 : 0 is the highest priority, and 4 the lowest)</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>relatedParty</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">&lt; <a href="#_relatedparty">RelatedParty</a> &gt; array</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>requestedCompletionDate</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Requested delivery date from the requestor perspective</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string (date-time)</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>requestedStartDate</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Order start date wished by the requestor</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string (date-time)</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="sect2">
+<h3 id="_createserviceorderitem">CreateServiceOrderItem</h3>
+<div class="paragraph">
+<p>This structure is used in the operation POST for a serviceOrder request to describe an item.
+Attribute description is not accurate and should be find in the serviceOrderItem class.</p>
+</div>
+<table class="tableblock frame-all grid-all spread">
+<colgroup>
+<col style="width: 16.6666%;">
+<col style="width: 61.1111%;">
+<col style="width: 22.2223%;">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-middle">Name</th>
+<th class="tableblock halign-left valign-middle">Description</th>
+<th class="tableblock halign-left valign-middle">Schema</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>@baseType</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Indicates the base type of the resource.</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>@schemaLocation</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">A link to the schema describing this REST resource</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>@type</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Indicates the type of resource.</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>action</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><a href="#_actiontype">ActionType</a></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>id</strong><br>
+<em>required</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Identifier of the line item (generally it is a sequence number 01, 02, 03, …)</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>orderItemRelationship</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">&lt; <a href="#_orderitemrelationship">OrderItemRelationship</a> &gt; array</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>service</strong><br>
+<em>required</em></p></td>
+<td class="tableblock halign-left valign-middle"></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><a href="#_service">Service</a></p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="sect2">
+<h3 id="_errorrepresentation">ErrorRepresentation</h3>
+<div class="paragraph">
+<p>Representation of an error.</p>
+</div>
+<table class="tableblock frame-all grid-all spread">
+<colgroup>
+<col style="width: 16.6666%;">
+<col style="width: 61.1111%;">
+<col style="width: 22.2223%;">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-middle">Name</th>
+<th class="tableblock halign-left valign-middle">Description</th>
+<th class="tableblock halign-left valign-middle">Schema</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>@schemaLocation</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">it provides a link to the schema describing a REST resource</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>@type</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">The class type of a REST resource</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>code</strong><br>
+<em>required</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Application related code (as defined in the API or from a common list)</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">integer (int32)</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>message</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Text that provide more details and corrective actions related to the error. This can be shown to a client user</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>reason</strong><br>
+<em>required</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Text that explains the reason for error. This can be shown to a client user.</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>referenceError</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">url pointing to documentation describing the error</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>status</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">http error code extension like 400-2</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="sect2">
+<h3 id="_hub">Hub</h3>
+<div class="paragraph">
+<p>An HUB resource is used by client side to subscribe to notification.
+Not managed in the Beijing release.</p>
+</div>
+<table class="tableblock frame-all grid-all spread">
+<colgroup>
+<col style="width: 42.8571%;">
+<col style="width: 57.1429%;">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-middle">Name</th>
+<th class="tableblock halign-left valign-middle">Schema</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>callback</strong><br>
+<em>required</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>id</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>query</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="sect2">
+<h3 id="_orderitemrelationship">OrderItemRelationship</h3>
+<div class="paragraph">
+<p>Linked order item to the one containing this attribute.
+nbi component used this relationship to sort request to ONAP.</p>
+</div>
+<table class="tableblock frame-all grid-all spread">
+<colgroup>
+<col style="width: 16.6666%;">
+<col style="width: 61.1111%;">
+<col style="width: 22.2223%;">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-middle">Name</th>
+<th class="tableblock halign-left valign-middle">Description</th>
+<th class="tableblock halign-left valign-middle">Schema</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>id</strong><br>
+<em>required</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Unique identifier of an order item</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>type</strong><br>
+<em>required</em></p></td>
+<td class="tableblock halign-left valign-middle"></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><a href="#_relationshiptype">RelationshipType</a></p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="sect2">
+<h3 id="_orderrelationship">OrderRelationship</h3>
+<div class="paragraph">
+<p>Linked order to the one containing this attribute.
+This relationship is not used to sort ONAP request.</p>
+</div>
+<table class="tableblock frame-all grid-all spread">
+<colgroup>
+<col style="width: 16.6666%;">
+<col style="width: 61.1111%;">
+<col style="width: 22.2223%;">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-middle">Name</th>
+<th class="tableblock halign-left valign-middle">Description</th>
+<th class="tableblock halign-left valign-middle">Schema</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>@referredType</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Type of the referred order.</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>href</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">A hyperlink to the related order</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>id</strong><br>
+<em>required</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">The id of the related order</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>type</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">The type of related order, can be : “dependency” if the order needs to be “not started” until another order item is complete (a service order in this case) or “cross-ref” to keep track of the source order (a productOrder)</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="sect2">
+<h3 id="_relatedparty">RelatedParty</h3>
+<div class="paragraph">
+<p>A related party defines party which are involved in this order and the role they are playing.
+for Beijing release:
+With the current version of APIs used from SO and AAI we need to manage a ‘customer’. This customer concept is confusing with Customer BSS concept. We took the following rules to manage the ‘customer’ information:
+o It could be provided through a serviceOrder in the service Order a relatedParty with role ‘ONAPcustomer’ should be provided in the serviceOrder header (we will not consider in this release the party at item level); External API component will check if this customer exists and create it in AAI if not.
+o If no relatedParty are provided the service will be affected to ‘generic’ customer (dummy customer) – we assume this ‘generic’ customer always exists.</p>
+</div>
+<table class="tableblock frame-all grid-all spread">
+<colgroup>
+<col style="width: 16.6666%;">
+<col style="width: 61.1111%;">
+<col style="width: 22.2223%;">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-middle">Name</th>
+<th class="tableblock halign-left valign-middle">Description</th>
+<th class="tableblock halign-left valign-middle">Schema</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>@referredType</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>href</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">An hyperlink to the party - not used in Beijnig release</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>id</strong><br>
+<em>required</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Unique identifier of a related party</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>name</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Name of the related party</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>role</strong><br>
+<em>required</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">The role of the related party (e.g. Owner, requester, fullfiller etc).
+ONLY 'ONAPcustomer' is considered</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="sect2">
+<h3 id="_relationshiptype">RelationshipType</h3>
+<div class="paragraph">
+<p>Relationship type;
+Only reliesOn is managed in Beijing release.</p>
+</div>
+<div class="paragraph">
+<p><em>Type</em> : enum (reliesOn)</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_service">Service</h3>
+<div class="paragraph">
+<p>Service (to be added, modified, deleted) description</p>
+</div>
+<table class="tableblock frame-all grid-all spread">
+<colgroup>
+<col style="width: 16.6666%;">
+<col style="width: 61.1111%;">
+<col style="width: 22.2223%;">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-middle">Name</th>
+<th class="tableblock halign-left valign-middle">Description</th>
+<th class="tableblock halign-left valign-middle">Schema</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>@schemaLocation</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">The URL to get the resource schema.
+Not managed in Beijing Release</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>@type</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">To define the service type
+Not managed in Beijing Release</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>href</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Reference to the Service (useful for delete or modify command).
+Not managed in Beijing release.</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>id</strong><br>
+<em>required</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Identifier of a service instance.
+It must be valued if orderItem action is 'delete' and corresponds to a AAI service.id</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>name</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Name of the service - When orderItem action is 'add' this name will be used in ONAP/SO request as InstaceName.</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>relatedParty</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">&lt; <a href="#_relatedparty">RelatedParty</a> &gt; array</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>serviceCharacteristic</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">&lt; <a href="#_servicecharacteristic">ServiceCharacteristic</a> &gt; array</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>serviceRelationship</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">&lt; <a href="#_servicerelationship">ServiceRelationship</a> &gt; array</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>serviceSpecification</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><a href="#_servicespecificationref">ServiceSpecificationRef</a></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>serviceState</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">The lifecycle state of the service requested;
+Not managed in Beijing release.</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="sect2">
+<h3 id="_servicecharacteristic">ServiceCharacteristic</h3>
+<div class="paragraph">
+<p>ServiceCharacteristic</p>
+</div>
+<table class="tableblock frame-all grid-all spread">
+<colgroup>
+<col style="width: 16.6666%;">
+<col style="width: 61.1111%;">
+<col style="width: 22.2223%;">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-middle">Name</th>
+<th class="tableblock halign-left valign-middle">Description</th>
+<th class="tableblock halign-left valign-middle">Schema</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>name</strong><br>
+<em>required</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Name of characteristic</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>value</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><a href="#_value">Value</a></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>valueType</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="sect2">
+<h3 id="_serviceorder">ServiceOrder</h3>
+<div class="paragraph">
+<p>A Service Order is a type of order which can be used to place an order between a customer and a service provider or between a service provider and a partner and vice versa</p>
+</div>
+<table class="tableblock frame-all grid-all spread">
+<colgroup>
+<col style="width: 16.6666%;">
+<col style="width: 61.1111%;">
+<col style="width: 22.2223%;">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-middle">Name</th>
+<th class="tableblock halign-left valign-middle">Description</th>
+<th class="tableblock halign-left valign-middle">Schema</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>@baseType</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>@schemaLocation</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>@type</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>category</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Used to categorize the order that can be useful for the OM system (e.g. “broadband”, “TVOption”, …)</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>completionDateTime</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Date when the order was completed</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string (date-time)</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>description</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">A free-text description of the service order</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>expectedCompletionDate</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string (date-time)</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>externalId</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">ID given by the consumer and only understandable by him (to facilitate his searches)</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>href</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Hyperlink to access the order</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>id</strong><br>
+<em>required</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">ID created on repository side</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>orderDate</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string (date-time)</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>orderItem</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">&lt; <a href="#_serviceorderitem">ServiceOrderItem</a> &gt; array</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>orderRelationship</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">&lt; <a href="#_orderrelationship">OrderRelationship</a> &gt; array</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>priority</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">A way that can be used by consumers to prioritize orders in Service Order Management system (from 0 to 4 : 0 is the highest priority, and 4 the lowest)</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>relatedParty</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">&lt; <a href="#_relatedparty">RelatedParty</a> &gt; array</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>requestedCompletionDate</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Requested delivery date from the requestor perspective</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string (date-time)</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>requestedStartDate</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Order start date wished by the requestor</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string (date-time)</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>startDate</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Date when the order was started for processing</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string (date-time)</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>state</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><a href="#_statetype">StateType</a></p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="sect2">
+<h3 id="_serviceorderitem">ServiceOrderItem</h3>
+<div class="paragraph">
+<p>An identified part of the order. A service order is decomposed into one or more order items.</p>
+</div>
+<table class="tableblock frame-all grid-all spread">
+<colgroup>
+<col style="width: 16.6666%;">
+<col style="width: 61.1111%;">
+<col style="width: 22.2223%;">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-middle">Name</th>
+<th class="tableblock halign-left valign-middle">Description</th>
+<th class="tableblock halign-left valign-middle">Schema</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>@baseType</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">not used in Beijing relase</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>@schemaLocation</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">not used in Beijing relase</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>@type</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Used to extend the order item.
+not used in Beijing relase</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>action</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><a href="#_actiontype">ActionType</a></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>id</strong><br>
+<em>required</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Identifier of the line item (generally it is a sequence number 01, 02, 03, …)</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>orderItemRelationship</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">&lt; <a href="#_orderitemrelationship">OrderItemRelationship</a> &gt; array</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>service</strong><br>
+<em>required</em></p></td>
+<td class="tableblock halign-left valign-middle"></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><a href="#_service">Service</a></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>state</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><a href="#_statetype">StateType</a></p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="sect2">
+<h3 id="_serviceref">ServiceRef</h3>
+<div class="paragraph">
+<p>Service references</p>
+</div>
+<table class="tableblock frame-all grid-all spread">
+<colgroup>
+<col style="width: 16.6666%;">
+<col style="width: 61.1111%;">
+<col style="width: 22.2223%;">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-middle">Name</th>
+<th class="tableblock halign-left valign-middle">Description</th>
+<th class="tableblock halign-left valign-middle">Schema</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>href</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Reference of the service</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>id</strong><br>
+<em>required</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Unique identifier of the service</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="sect2">
+<h3 id="_servicerelationship">ServiceRelationship</h3>
+<div class="paragraph">
+<p>Linked Services to the one instantiate
+nbi component used this relationship to sort request to ONAP.</p>
+</div>
+<table class="tableblock frame-all grid-all spread">
+<colgroup>
+<col style="width: 42.8571%;">
+<col style="width: 57.1429%;">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-middle">Name</th>
+<th class="tableblock halign-left valign-middle">Schema</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>service</strong><br>
+<em>required</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><a href="#_service">Service</a></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>type</strong><br>
+<em>required</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><a href="#_relationshiptype">RelationshipType</a></p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="sect2">
+<h3 id="_servicespecificationref">ServiceSpecificationRef</h3>
+<div class="paragraph">
+<p>The service specification (these attributes are fetched from the catalogue).</p>
+</div>
+<table class="tableblock frame-all grid-all spread">
+<colgroup>
+<col style="width: 16.6666%;">
+<col style="width: 61.1111%;">
+<col style="width: 22.2223%;">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-middle">Name</th>
+<th class="tableblock halign-left valign-middle">Description</th>
+<th class="tableblock halign-left valign-middle">Schema</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>@baseType</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Not used in Beijing release</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>@schemaLocation</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Not used in Beijing release</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>@type</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Not used in Beijing release</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>href</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Reference of the service specification
+Not used in Beijing release.</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>id</strong><br>
+<em>required</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Unique identifier of the service specification
+This information will be used to retrieve SDC information + mapped to SO ModelNameVersionIdin the request.</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>name</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Name of the service specification
+Not used in Beijing release</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>targetServiceSchema</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><a href="#_targetserviceschema">TargetServiceSchema</a></p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>version</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Version of the service Specification
+Not used in Beijing release</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="sect2">
+<h3 id="_statetype">StateType</h3>
+<div class="paragraph">
+<p>List of possible state for the order and the orderItem.</p>
+</div>
+<div class="paragraph">
+<p><em>Type</em> : enum (acknowledged, rejected, pending, held, inProgress, cancelled, completed, failed, partial)</p>
+</div>
+</div>
+<div class="sect2">
+<h3 id="_targetserviceschema">TargetServiceSchema</h3>
+<div class="paragraph">
+<p>Target to the schema describing the service spec resource</p>
+</div>
+<table class="tableblock frame-all grid-all spread">
+<colgroup>
+<col style="width: 16.6666%;">
+<col style="width: 61.1111%;">
+<col style="width: 22.2223%;">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-middle">Name</th>
+<th class="tableblock halign-left valign-middle">Description</th>
+<th class="tableblock halign-left valign-middle">Schema</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>@schemaLocation</strong><br>
+<em>required</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">This field provided a link to the schema describing this REST resource.</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>@type</strong><br>
+<em>required</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Indicates the (class) type of resource.</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="sect2">
+<h3 id="_value">Value</h3>
+<div class="paragraph">
+<p>Value is a descriptive structure for service characteristic;
+For Beijing we only manage 'basic' attribute - the serviceCharacteristicValue must be used.</p>
+</div>
+<table class="tableblock frame-all grid-all spread">
+<colgroup>
+<col style="width: 16.6666%;">
+<col style="width: 61.1111%;">
+<col style="width: 22.2223%;">
+</colgroup>
+<thead>
+<tr>
+<th class="tableblock halign-left valign-middle">Name</th>
+<th class="tableblock halign-left valign-middle">Description</th>
+<th class="tableblock halign-left valign-middle">Schema</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>@schemaLocation</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">This field provided a link to the schema describing this REST resource.
+Not used in Beijing Release</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>@type</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Indicates the (class) type of resource.
+Not used in Beijing Release</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+<tr>
+<td class="tableblock halign-left valign-middle"><p class="tableblock"><strong>serviceCharacteristicValue</strong><br>
+<em>optional</em></p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">Value of the characteristic.
+This attribute must be used in Beijing Release to provide characteristic value.</p></td>
+<td class="tableblock halign-left valign-middle"><p class="tableblock">string</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+</div>
+</div>
+</div>
+<div id="footer">
+<div id="footer-text">
+Last updated 2018-03-22 09:37:52 UTC
+</div>
+</div>
+</body>
+</html> \ No newline at end of file
diff --git a/docs/offeredapis/serviceOrder/markDown.md b/docs/offeredapis/serviceOrder/markDown.md
new file mode 100644
index 0000000..5ee40cf
--- /dev/null
+++ b/docs/offeredapis/serviceOrder/markDown.md
@@ -0,0 +1,463 @@
+# API ServiceOrder
+
+
+<a name="overview"></a>
+## Overview
+
+### Api URL
+
+[Swagger UI](https://api-designer.sso.infra.ftgroup/swagger-ui/?url=https://api-designer.sso.infra.ftgroup/api/1.0/apis/kl1kgvz1zR/swagger.json)
+
+
+[plant UML UI](https://plantuml.rd.francetelecom.fr/proxy?fmt=svg&src=https://api-designer.sso.infra.ftgroup/api/1.0/apis/kl1kgvz1zR/plantuml&noCache=934804.0)
+
+serviceOrder API designed for ONAP Beijing Release.
+This API is build from TMF open API18.0 (applying TMF Guideline 3.0);
+Only operations GET (by id and list) and POST are available.
+
+
+### Version information
+*Version* : 1.0.0_inProgress
+
+
+### URI scheme
+*Host* : serverRoot
+*BasePath* : /nbi/api/v1
+*Schemes* : HTTPS
+
+
+### Tags
+
+* ServiceOrder : A Service Order is a type of order which can be used to describe a group of operations on service – one service order item per service. An action at the level of the service order item describe the operation to be done on a service (add, terminate for example). The service order is triggered from the BSS system in charge of the product order management to ONAP that will manage the service fulfillment.
+
+
+### Consumes
+
+* `application/json;charset=utf-8`
+
+
+### Produces
+
+* `application/json;charset=utf-8`
+
+
+<a name="paths"></a>
+## Resources
+
+<a name="serviceorder_resource"></a>
+### ServiceOrder
+A Service Order is a type of order which can be used to describe a group of operations on service – one service order item per service. An action at the level of the service order item describe the operation to be done on a service (add, terminate for example). The service order is triggered from the BSS system in charge of the product order management to ONAP that will manage the service fulfillment.
+
+
+<a name="serviceordercreate"></a>
+#### Create a service order
+```
+POST /serviceOrder
+```
+
+
+##### Description
+This operation creates a service order entity.
+The TMF Open API specification document provides the list of mandatory and non mandatory attributes when creating a ServiceOrder, including any possible rule conditions and applicable default values.
+POST should be used without specifying the id and the href, the Service Order Management system is in charge of generating the id + href for the ServiceOrder.
+
+Specific business errors for current operation will be encapsulated in
+
+HTTP Response 422 Unprocessable entity
+
+ - 100: OrderItem with 'add' action but serviceSpecification id missing
+
+ - 101: OrderItem with 'change'/'noChange'/'remove' but service id missing
+
+ - 102: OrderItem with 'add' action - serviceSpecification id provided but not existing
+
+ - 103: OrderItem with 'add' action but service id already existing in the inventory
+
+ - 104: A customer for existing service(s) is provided but he did not exist
+
+ - 105: OrderItem with 'change'/'noChange'/'remove' - Service id provided but it is not existing in the inventory
+
+ - 106: [Not managed for current Relese] Issue with lcpCloudRegionId and tenantId provided
+
+
+##### Parameters
+
+|Type|Name|Schema|
+|---|---|---|
+|**Body**|**serviceOrder** <br>*required*|[CreateServiceOrder](#createserviceorder)|
+
+
+##### Responses
+
+|HTTP Code|Description|Schema|
+|---|---|---|
+|**201**|Success|[CreateServiceOrder](#createserviceorder)|
+|**400**|Bad Request<br><br>List of supported error codes:<br>- 20: Invalid URL parameter value<br>- 21: Missing body<br>- 22: Invalid body<br>- 23: Missing body field<br>- 24: Invalid body field<br>- 25: Missing header<br>- 26: Invalid header value<br>- 27: Missing query-string parameter<br>- 28: Invalid query-string parameter value|[ErrorRepresentation](#errorrepresentation)|
+|**401**|Unauthorized<br><br>List of supported error codes:<br>- 40: Missing credentials<br>- 41: Invalid credentials<br>- 42: Expired credentials|[ErrorRepresentation](#errorrepresentation)|
+|**403**|Forbidden<br><br>List of supported error codes:<br>- 50: Access denied<br>- 51: Forbidden requester<br>- 52: Forbidden user<br>- 53: Too many requests|[ErrorRepresentation](#errorrepresentation)|
+|**404**|Not Found<br><br>List of supported error codes:<br>- 60: Resource not found|[ErrorRepresentation](#errorrepresentation)|
+|**422**|Unprocessable entity<br><br>Functional error<br><br>Specific encapsulated business errors for current operation<br><br> - 100: OrderItem with 'add' action but serviceSpecification id missing<br> <br> - 101: OrderItem with 'change'/'noChange'/'remove' but service id missing<br> <br> - 102: OrderItem with 'add' action - serviceSpecification id provided but not existing<br> <br> - 103: OrderItem with 'add' action but service id already existing in the inventory<br> <br> - 104: A customer for existing service(s) is provided but he did not exist<br> <br> - 105: OrderItem with 'change'/'noChange'/'remove' - Service id provided but it is not existing in the inventory<br> <br> - 106: [Not managed for current Relese] Issue with lcpCloudRegionId and tenantId provided|[ErrorRepresentation](#errorrepresentation)|
+|**500**|Internal Server Error<br><br>List of supported error codes:<br>- 1: Internal error|[ErrorRepresentation](#errorrepresentation)|
+|**503**|Service Unavailable<br><br>List of supported error codes:<br>- 5: The service is temporarily unavailable<br>- 6: Orange API is over capacity, retry later !|[ErrorRepresentation](#errorrepresentation)|
+
+
+<a name="serviceorderfind"></a>
+#### List service orders
+```
+GET /serviceOrder
+```
+
+
+##### Description
+Retrieve and list service order entities according to given criteria.
+Only a predefined set of attribute is proposed.
+Attribute selection could be described in the fields attribute.
+
+Specific business errors for current operation will be encapsulated in
+
+HTTP Response 422 Unprocessable entity
+
+
+##### Parameters
+
+|Type|Name|Description|Schema|
+|---|---|---|---|
+|**Query**|**description** <br>*optional*||string|
+|**Query**|**externalId** <br>*optional*||string|
+|**Query**|**fields** <br>*optional*|this attribute could be used to filter retrieved attribute(s) and/or sort SO.|string|
+|**Query**|**limit** <br>*optional*|The maximum number of elements to retrieve (it can be greater than the actual available number of items).|integer (int32)|
+|**Query**|**offset** <br>*optional*|The index of the first element to retrieve. Zero is the first element of the collection.|integer (int32)|
+|**Query**|**orderDate.gt** <br>*optional*|order date greather than|string|
+|**Query**|**orderDate.lt** <br>*optional*|order date lower than|string|
+|**Query**|**state** <br>*optional*|state of the order(s) to be retrieved|string|
+
+
+##### Responses
+
+|HTTP Code|Description|Schema|
+|---|---|---|
+|**200**|Success <br>**Headers** : <br>`X-Total-Count` (integer (int32)) <br>`X-Result-Count` (integer (int32))|< [ServiceOrder](#serviceorder) > array|
+|**400**|Bad Request<br><br>List of supported error codes:<br>- 20: Invalid URL parameter value<br>- 21: Missing body<br>- 22: Invalid body<br>- 23: Missing body field<br>- 24: Invalid body field<br>- 25: Missing header<br>- 26: Invalid header value<br>- 27: Missing query-string parameter<br>- 28: Invalid query-string parameter value|[ErrorRepresentation](#errorrepresentation)|
+|**401**|Unauthorized<br><br>List of supported error codes:<br>- 40: Missing credentials<br>- 41: Invalid credentials<br>- 42: Expired credentials|[ErrorRepresentation](#errorrepresentation)|
+|**403**|Forbidden<br><br>List of supported error codes:<br>- 50: Access denied<br>- 51: Forbidden requester<br>- 52: Forbidden user<br>- 53: Too many requests|[ErrorRepresentation](#errorrepresentation)|
+|**404**|Not Found<br><br>List of supported error codes:<br>- 60: Resource not found|[ErrorRepresentation](#errorrepresentation)|
+|**422**|Unprocessable entity<br><br>Functional error|[ErrorRepresentation](#errorrepresentation)|
+|**500**|Internal Server Error<br><br>List of supported error codes:<br>- 1: Internal error|[ErrorRepresentation](#errorrepresentation)|
+|**503**|Service Unavailable<br><br>List of supported error codes:<br>- 5: The service is temporarily unavailable<br>- 6: Orange API is over capacity, retry later !|[ErrorRepresentation](#errorrepresentation)|
+
+
+<a name="serviceorderget"></a>
+#### Retrieve a service order
+```
+GET /serviceOrder/{id}
+```
+
+
+##### Description
+This operation retrieves a service order entity.
+Attribute selection is enabled for all first level attributes.
+
+Specific business errors for current operation will be encapsulated in
+
+HTTP Response 422 Unprocessable entity
+
+
+##### Parameters
+
+|Type|Name|Description|Schema|
+|---|---|---|---|
+|**Path**|**id** <br>*required*||string|
+|**Query**|**fields** <br>*optional*|Attribute selection|string|
+
+
+##### Responses
+
+|HTTP Code|Description|Schema|
+|---|---|---|
+|**200**|Success|[ServiceOrder](#serviceorder)|
+|**400**|Bad Request<br><br>List of supported error codes:<br>- 20: Invalid URL parameter value<br>- 21: Missing body<br>- 22: Invalid body<br>- 23: Missing body field<br>- 24: Invalid body field<br>- 25: Missing header<br>- 26: Invalid header value<br>- 27: Missing query-string parameter<br>- 28: Invalid query-string parameter value|[ErrorRepresentation](#errorrepresentation)|
+|**401**|Unauthorized<br><br>List of supported error codes:<br>- 40: Missing credentials<br>- 41: Invalid credentials<br>- 42: Expired credentials|[ErrorRepresentation](#errorrepresentation)|
+|**403**|Forbidden<br><br>List of supported error codes:<br>- 50: Access denied<br>- 51: Forbidden requester<br>- 52: Forbidden user<br>- 53: Too many requests|[ErrorRepresentation](#errorrepresentation)|
+|**404**|Not Found<br><br>List of supported error codes:<br>- 60: Resource not found|[ErrorRepresentation](#errorrepresentation)|
+|**422**|Unprocessable entity<br><br>Functional error|[ErrorRepresentation](#errorrepresentation)|
+|**500**|Internal Server Error<br><br>List of supported error codes:<br>- 1: Internal error|[ErrorRepresentation](#errorrepresentation)|
+|**503**|Service Unavailable<br><br>List of supported error codes:<br>- 5: The service is temporarily unavailable<br>- 6: Orange API is over capacity, retry later !|[ErrorRepresentation](#errorrepresentation)|
+
+
+<a name="definitions"></a>
+## Definitions
+
+<a name="actiontype"></a>
+### ActionType
+Action type to be describer on the order item.
+modify is not managed in Beijing release
+
+*Type* : enum (add, modify, delete, noChange)
+
+
+<a name="createserviceorder"></a>
+### CreateServiceOrder
+This structure is used in the operation POST for a serviceOrder request.
+Attribute description is not accurate and should be find in the serviceOrder class.
+
+
+|Name|Description|Schema|
+|---|---|---|
+|**@baseType** <br>*optional*||string|
+|**@schemaLocation** <br>*optional*||string|
+|**@type** <br>*optional*||string|
+|**category** <br>*optional*|Used to categorize the order that can be useful for the OM system (e.g. “broadband”, “TVOption”, ...)|string|
+|**description** <br>*optional*|A free-text description of the service order|string|
+|**externalId** <br>*optional*|ID given by the consumer and only understandable by him (to facilitate his searches)|string|
+|**orderItem** <br>*optional*||< [CreateServiceOrderItem](#createserviceorderitem) > array|
+|**orderRelationship** <br>*optional*||< [OrderRelationship](#orderrelationship) > array|
+|**priority** <br>*optional*|A way that can be used by consumers to prioritize orders in Service Order Management system (from 0 to 4 : 0 is the highest priority, and 4 the lowest)|string|
+|**relatedParty** <br>*optional*||< [RelatedParty](#relatedparty) > array|
+|**requestedCompletionDate** <br>*optional*|Requested delivery date from the requestor perspective|string (date-time)|
+|**requestedStartDate** <br>*optional*|Order start date wished by the requestor|string (date-time)|
+
+
+<a name="createserviceorderitem"></a>
+### CreateServiceOrderItem
+This structure is used in the operation POST for a serviceOrder request to describe an item.
+Attribute description is not accurate and should be find in the serviceOrderItem class.
+
+
+|Name|Description|Schema|
+|---|---|---|
+|**@baseType** <br>*optional*|Indicates the base type of the resource.|string|
+|**@schemaLocation** <br>*optional*|A link to the schema describing this REST resource|string|
+|**@type** <br>*optional*|Indicates the type of resource.|string|
+|**action** <br>*optional*||[ActionType](#actiontype)|
+|**id** <br>*required*|Identifier of the line item (generally it is a sequence number 01, 02, 03, …)|string|
+|**orderItemRelationship** <br>*optional*||< [OrderItemRelationship](#orderitemrelationship) > array|
+|**service** <br>*required*||[Service](#service)|
+
+
+<a name="errorrepresentation"></a>
+### ErrorRepresentation
+Representation of an error.
+
+
+|Name|Description|Schema|
+|---|---|---|
+|**@schemaLocation** <br>*optional*|it provides a link to the schema describing a REST resource|string|
+|**@type** <br>*optional*|The class type of a REST resource|string|
+|**code** <br>*required*|Application related code (as defined in the API or from a common list)|integer (int32)|
+|**message** <br>*optional*|Text that provide more details and corrective actions related to the error. This can be shown to a client user|string|
+|**reason** <br>*required*|Text that explains the reason for error. This can be shown to a client user.|string|
+|**referenceError** <br>*optional*|url pointing to documentation describing the error|string|
+|**status** <br>*optional*|http error code extension like 400-2|string|
+
+
+<a name="hub"></a>
+### Hub
+An HUB resource is used by client side to subscribe to notification.
+Not managed in the Beijing release.
+
+
+|Name|Schema|
+|---|---|
+|**callback** <br>*required*|string|
+|**id** <br>*optional*|string|
+|**query** <br>*optional*|string|
+
+
+<a name="orderitemrelationship"></a>
+### OrderItemRelationship
+Linked order item to the one containing this attribute.
+nbi component used this relationship to sort request to ONAP.
+
+
+|Name|Description|Schema|
+|---|---|---|
+|**id** <br>*required*|Unique identifier of an order item|string|
+|**type** <br>*required*||[RelationshipType](#relationshiptype)|
+
+
+<a name="orderrelationship"></a>
+### OrderRelationship
+Linked order to the one containing this attribute.
+This relationship is not used to sort ONAP request.
+
+
+|Name|Description|Schema|
+|---|---|---|
+|**@referredType** <br>*optional*|Type of the referred order.|string|
+|**href** <br>*optional*|A hyperlink to the related order|string|
+|**id** <br>*required*|The id of the related order|string|
+|**type** <br>*optional*|The type of related order, can be : “dependency” if the order needs to be “not started” until another order item is complete (a service order in this case) or “cross-ref” to keep track of the source order (a productOrder)|string|
+
+
+<a name="relatedparty"></a>
+### RelatedParty
+A related party defines party which are involved in this order and the role they are playing.
+for Beijing release:
+With the current version of APIs used from SO and AAI we need to manage a ‘customer’. This customer concept is confusing with Customer BSS concept. We took the following rules to manage the ‘customer’ information:
+o It could be provided through a serviceOrder in the service Order a relatedParty with role ‘ONAPcustomer’ should be provided in the serviceOrder header (we will not consider in this release the party at item level); External API component will check if this customer exists and create it in AAI if not.
+o If no relatedParty are provided the service will be affected to ‘generic’ customer (dummy customer) – we assume this ‘generic’ customer always exists.
+
+
+|Name|Description|Schema|
+|---|---|---|
+|**@referredType** <br>*optional*||string|
+|**href** <br>*optional*|An hyperlink to the party - not used in Beijnig release|string|
+|**id** <br>*required*|Unique identifier of a related party|string|
+|**name** <br>*optional*|Name of the related party|string|
+|**role** <br>*required*|The role of the related party (e.g. Owner, requester, fullfiller etc).<br>ONLY 'ONAPcustomer' is considered|string|
+
+
+<a name="relationshiptype"></a>
+### RelationshipType
+Relationship type;
+Only reliesOn is managed in Beijing release.
+
+*Type* : enum (reliesOn)
+
+
+<a name="service"></a>
+### Service
+Service (to be added, modified, deleted) description
+
+
+|Name|Description|Schema|
+|---|---|---|
+|**@schemaLocation** <br>*optional*|The URL to get the resource schema.<br>Not managed in Beijing Release|string|
+|**@type** <br>*optional*|To define the service type<br>Not managed in Beijing Release|string|
+|**href** <br>*optional*|Reference to the Service (useful for delete or modify command).<br>Not managed in Beijing release.|string|
+|**id** <br>*required*|Identifier of a service instance.<br>It must be valued if orderItem action is 'delete' and corresponds to a AAI service.id|string|
+|**name** <br>*optional*|Name of the service - When orderItem action is 'add' this name will be used in ONAP/SO request as InstaceName.|string|
+|**relatedParty** <br>*optional*||< [RelatedParty](#relatedparty) > array|
+|**serviceCharacteristic** <br>*optional*||< [ServiceCharacteristic](#servicecharacteristic) > array|
+|**serviceRelationship** <br>*optional*||< [ServiceRelationship](#servicerelationship) > array|
+|**serviceSpecification** <br>*optional*||[ServiceSpecificationRef](#servicespecificationref)|
+|**serviceState** <br>*optional*|The lifecycle state of the service requested;<br>Not managed in Beijing release.|string|
+
+
+<a name="servicecharacteristic"></a>
+### ServiceCharacteristic
+ServiceCharacteristic
+
+
+|Name|Description|Schema|
+|---|---|---|
+|**name** <br>*required*|Name of characteristic|string|
+|**value** <br>*optional*||[Value](#value)|
+|**valueType** <br>*optional*||string|
+
+
+<a name="serviceorder"></a>
+### ServiceOrder
+A Service Order is a type of order which can be used to place an order between a customer and a service provider or between a service provider and a partner and vice versa
+
+
+|Name|Description|Schema|
+|---|---|---|
+|**@baseType** <br>*optional*||string|
+|**@schemaLocation** <br>*optional*||string|
+|**@type** <br>*optional*||string|
+|**category** <br>*optional*|Used to categorize the order that can be useful for the OM system (e.g. “broadband”, “TVOption”, ...)|string|
+|**completionDateTime** <br>*optional*|Date when the order was completed|string (date-time)|
+|**description** <br>*optional*|A free-text description of the service order|string|
+|**expectedCompletionDate** <br>*optional*||string (date-time)|
+|**externalId** <br>*optional*|ID given by the consumer and only understandable by him (to facilitate his searches)|string|
+|**href** <br>*optional*|Hyperlink to access the order|string|
+|**id** <br>*required*|ID created on repository side|string|
+|**orderDate** <br>*optional*||string (date-time)|
+|**orderItem** <br>*optional*||< [ServiceOrderItem](#serviceorderitem) > array|
+|**orderRelationship** <br>*optional*||< [OrderRelationship](#orderrelationship) > array|
+|**priority** <br>*optional*|A way that can be used by consumers to prioritize orders in Service Order Management system (from 0 to 4 : 0 is the highest priority, and 4 the lowest)|string|
+|**relatedParty** <br>*optional*||< [RelatedParty](#relatedparty) > array|
+|**requestedCompletionDate** <br>*optional*|Requested delivery date from the requestor perspective|string (date-time)|
+|**requestedStartDate** <br>*optional*|Order start date wished by the requestor|string (date-time)|
+|**startDate** <br>*optional*|Date when the order was started for processing|string (date-time)|
+|**state** <br>*optional*||[StateType](#statetype)|
+
+
+<a name="serviceorderitem"></a>
+### ServiceOrderItem
+An identified part of the order. A service order is decomposed into one or more order items.
+
+
+|Name|Description|Schema|
+|---|---|---|
+|**@baseType** <br>*optional*|not used in Beijing relase|string|
+|**@schemaLocation** <br>*optional*|not used in Beijing relase|string|
+|**@type** <br>*optional*|Used to extend the order item.<br>not used in Beijing relase|string|
+|**action** <br>*optional*||[ActionType](#actiontype)|
+|**id** <br>*required*|Identifier of the line item (generally it is a sequence number 01, 02, 03, …)|string|
+|**orderItemRelationship** <br>*optional*||< [OrderItemRelationship](#orderitemrelationship) > array|
+|**service** <br>*required*||[Service](#service)|
+|**state** <br>*optional*||[StateType](#statetype)|
+
+
+<a name="serviceref"></a>
+### ServiceRef
+Service references
+
+
+|Name|Description|Schema|
+|---|---|---|
+|**href** <br>*optional*|Reference of the service|string|
+|**id** <br>*required*|Unique identifier of the service|string|
+
+
+<a name="servicerelationship"></a>
+### ServiceRelationship
+Linked Services to the one instantiate
+nbi component used this relationship to sort request to ONAP.
+
+
+|Name|Schema|
+|---|---|
+|**service** <br>*required*|[Service](#service)|
+|**type** <br>*required*|[RelationshipType](#relationshiptype)|
+
+
+<a name="servicespecificationref"></a>
+### ServiceSpecificationRef
+The service specification (these attributes are fetched from the catalogue).
+
+
+|Name|Description|Schema|
+|---|---|---|
+|**@baseType** <br>*optional*|Not used in Beijing release|string|
+|**@schemaLocation** <br>*optional*|Not used in Beijing release|string|
+|**@type** <br>*optional*|Not used in Beijing release|string|
+|**href** <br>*optional*|Reference of the service specification<br>Not used in Beijing release.|string|
+|**id** <br>*required*|Unique identifier of the service specification<br>This information will be used to retrieve SDC information + mapped to SO ModelNameVersionIdin the request.|string|
+|**name** <br>*optional*|Name of the service specification<br>Not used in Beijing release|string|
+|**targetServiceSchema** <br>*optional*||[TargetServiceSchema](#targetserviceschema)|
+|**version** <br>*optional*|Version of the service Specification<br>Not used in Beijing release|string|
+
+
+<a name="statetype"></a>
+### StateType
+List of possible state for the order and the orderItem.
+
+*Type* : enum (acknowledged, rejected, pending, held, inProgress, cancelled, completed, failed, partial)
+
+
+<a name="targetserviceschema"></a>
+### TargetServiceSchema
+Target to the schema describing the service spec resource
+
+
+|Name|Description|Schema|
+|---|---|---|
+|**@schemaLocation** <br>*required*|This field provided a link to the schema describing this REST resource.|string|
+|**@type** <br>*required*|Indicates the (class) type of resource.|string|
+
+
+<a name="value"></a>
+### Value
+Value is a descriptive structure for service characteristic;
+For Beijing we only manage 'basic' attribute - the serviceCharacteristicValue must be used.
+
+
+|Name|Description|Schema|
+|---|---|---|
+|**@schemaLocation** <br>*optional*|This field provided a link to the schema describing this REST resource.<br>Not used in Beijing Release|string|
+|**@type** <br>*optional*|Indicates the (class) type of resource.<br>Not used in Beijing Release|string|
+|**serviceCharacteristicValue** <br>*optional*|Value of the characteristic.<br>This attribute must be used in Beijing Release to provide characteristic value.|string|
+
diff --git a/docs/offeredapis/swaggers/serviceCatalog_1_0_0.json b/docs/offeredapis/swaggers/serviceCatalog_1_0_0.json
new file mode 100644
index 0000000..74daf5a
--- /dev/null
+++ b/docs/offeredapis/swaggers/serviceCatalog_1_0_0.json
@@ -0,0 +1,652 @@
+
+{
+ "swagger": "2.0",
+ "info": {
+ "description": "serviceCatalog API designed for ONAP Beijing Release.\nThis API is build from TMF open API17.5\nonly operation GET (by id & byList) for resource serviceSpecification is available",
+ "version": "1.0.0",
+ "title": "API ServiceCatalog"
+ },
+ "host": "serverRoot",
+ "basePath": "/nbi/api/v1",
+ "schemes": [
+ "https"
+ ],
+ "consumes": [
+ "application/json;charset=utf-8"
+ ],
+ "produces": [
+ "application/json;charset=utf-8"
+ ],
+ "tags": [
+
+ {
+ "name": "ServiceSpecification",
+ "description": ""
+ }
+ ],
+ "paths": {
+ "/serviceSpecification": {
+ "get": {
+ "tags": [
+ "ServiceSpecification"
+ ],
+ "operationId": "serviceSpecificationFind",
+ "summary": "List service specifications",
+ "description": "This operation returns service specifications from a catalog.\nOnly a predefined set of attribute is proposed : Based on SDC limitations, only attributes category and distributionStatus are available for serviceSpecification filtering\nFields attribute could be used to filter attributes retrieved\n\nSpecific business errors for current operation will be encapsulated in\n\nHTTP Response 422 Unprocessable entity\n",
+ "deprecated": false,
+
+ "parameters": [
+
+ {
+ "name": "fields",
+ "required": false,
+ "in": "query",
+ "description": "Field selection - used to filtering the attributes to be retreived",
+
+ "type": "string"
+ },
+ {
+ "name": "category",
+ "required": false,
+ "in": "query",
+ "description": "Service Category (filter)",
+
+ "type": "string"
+ },
+ {
+ "name": "distributionStatus",
+ "required": false,
+ "in": "query",
+ "description": "Service distribution status (filter)",
+
+ "type": "string"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "schema": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ServiceSpecification"
+ }
+ }
+
+ },
+ "400": {
+
+ "description": "Bad Request\n\nList of supported error codes:\n- 20: Invalid URL parameter value\n- 21: Missing body\n- 22: Invalid body\n- 23: Missing body field\n- 24: Invalid body field\n- 25: Missing header\n- 26: Invalid header value\n- 27: Missing query-string parameter\n- 28: Invalid query-string parameter value",
+ "schema": {
+
+ "$ref": "#/definitions/ErrorRepresentation"
+ }
+ },
+ "401": {
+
+ "description": "Unauthorized\n\nList of supported error codes:\n- 40: Missing credentials\n- 41: Invalid credentials\n- 42: Expired credentials",
+ "schema": {
+
+ "$ref": "#/definitions/ErrorRepresentation"
+ }
+ },
+ "403": {
+
+ "description": "Forbidden\n\nList of supported error codes:\n- 50: Access denied\n- 51: Forbidden requester\n- 52: Forbidden user\n- 53: Too many requests",
+ "schema": {
+
+ "$ref": "#/definitions/ErrorRepresentation"
+ }
+ },
+ "404": {
+
+ "description": "Not Found\n\nList of supported error codes:\n- 60: Resource not found",
+ "schema": {
+
+ "$ref": "#/definitions/ErrorRepresentation"
+ }
+ },
+ "422": {
+
+ "description": "Unprocessable entity\n\nFunctional error",
+ "schema": {
+
+ "$ref": "#/definitions/ErrorRepresentation"
+ }
+ },
+ "500": {
+
+ "description": "Internal Server Error\n\nList of supported error codes:\n- 1: Internal error",
+ "schema": {
+
+ "$ref": "#/definitions/ErrorRepresentation"
+ }
+ },
+ "503": {
+
+ "description": "Service Unavailable\n\nList of supported error codes:\n- 5: The service is temporarily unavailable\n- 6: Orange API is over capacity, retry later !",
+ "schema": {
+
+ "$ref": "#/definitions/ErrorRepresentation"
+ }
+ }
+ }
+ }
+ },
+ "/serviceSpecification/{id}": {
+ "get": {
+ "tags": [
+ "ServiceSpecification"
+ ],
+ "operationId": "serviceSpecificationGet",
+ "summary": "Retrieve a service specification",
+ "description": "This operation returns a service specification by its id from a catalog. Attribute selection is enabled using the fields attribute.\n\nSpecific business errors for current operation will be encapsulated in\n\nHTTP Response 422 Unprocessable entity\n",
+ "deprecated": false,
+
+ "parameters": [
+
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "type": "string",
+ "description": ""
+ },
+ {
+ "name": "fields",
+ "required": false,
+ "in": "query",
+ "description": "Attribute selection",
+
+ "type": "string"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "schema": {
+ "$ref": "#/definitions/ServiceSpecification"
+ }
+
+ },
+ "400": {
+
+ "description": "Bad Request\n\nList of supported error codes:\n- 20: Invalid URL parameter value\n- 21: Missing body\n- 22: Invalid body\n- 23: Missing body field\n- 24: Invalid body field\n- 25: Missing header\n- 26: Invalid header value\n- 27: Missing query-string parameter\n- 28: Invalid query-string parameter value",
+ "schema": {
+
+ "$ref": "#/definitions/ErrorRepresentation"
+ }
+ },
+ "401": {
+
+ "description": "Unauthorized\n\nList of supported error codes:\n- 40: Missing credentials\n- 41: Invalid credentials\n- 42: Expired credentials",
+ "schema": {
+
+ "$ref": "#/definitions/ErrorRepresentation"
+ }
+ },
+ "403": {
+
+ "description": "Forbidden\n\nList of supported error codes:\n- 50: Access denied\n- 51: Forbidden requester\n- 52: Forbidden user\n- 53: Too many requests",
+ "schema": {
+
+ "$ref": "#/definitions/ErrorRepresentation"
+ }
+ },
+ "404": {
+
+ "description": "Not Found\n\nList of supported error codes:\n- 60: Resource not found",
+ "schema": {
+
+ "$ref": "#/definitions/ErrorRepresentation"
+ }
+ },
+ "422": {
+
+ "description": "Unprocessable entity\n\nFunctional error",
+ "schema": {
+
+ "$ref": "#/definitions/ErrorRepresentation"
+ }
+ },
+ "500": {
+
+ "description": "Internal Server Error\n\nList of supported error codes:\n- 1: Internal error",
+ "schema": {
+
+ "$ref": "#/definitions/ErrorRepresentation"
+ }
+ },
+ "503": {
+
+ "description": "Service Unavailable\n\nList of supported error codes:\n- 5: The service is temporarily unavailable\n- 6: Orange API is over capacity, retry later !",
+ "schema": {
+
+ "$ref": "#/definitions/ErrorRepresentation"
+ }
+ }
+ }
+ }
+ }
+ },
+"definitions": {
+
+ "LifecycleStatusValues": {
+ "description": "Service lifecycle value from ONAP SDC",
+
+ "type": "string",
+ "enum": [
+ "NOT_CERTIFIED_CHECKOUT",
+ "NOT_CERTIFIED_CHECKIN",
+ "READY_FOR_CERTIFICATION",
+ "CERTIFICATION_IN_PROGRESS",
+ "CERTIFIED"]
+
+ },
+ "DistributionStatus": {
+ "description": "Service distribution status from ONAP.",
+
+ "type": "string",
+ "enum": [
+ "DISTRIBUTION_NOT_APPROVED",
+ "DISTRIBUTION_APPROVED",
+ "DISTRIBUTED",
+ "DISTRIBUTION_REJECTED"]
+
+ },
+
+ "ErrorRepresentation": {
+ "description": "This class is used to describe error.\nfor nbi Beijing release we do not manage additional error for serviceCatalog",
+
+
+ "required": [
+
+ "code",
+ "reason"
+ ],
+ "type": "object",
+ "properties": {
+ "code": {
+ "description": "Application related code (as defined in the API or from a common list)",
+ "type": "integer",
+ "format": "int32"
+ },
+ "reason": {
+ "description": "Text that explains the reason for error. This can be shown to a client user.",
+ "type": "string"
+ },
+ "message": {
+ "description": "Text that provide more details and corrective actions related to the error. This can be shown to a client user",
+ "type": "string"
+ },
+ "status": {
+ "description": "http error code extension like 400-2",
+ "type": "string"
+ },
+ "referenceErrror": {
+ "description": "url pointing to documentation describing the error",
+ "type": "string"
+ },
+ "@type": {
+ "description": "The class type of a REST resource.",
+ "type": "string"
+ },
+ "@schemaLocation": {
+ "description": "it provides a link to the schema describing a REST resource.",
+ "type": "string"
+ }
+ }
+
+ },
+
+ "TimePeriod": {
+ "description": "A time period",
+
+
+ "type": "object",
+ "properties": {
+ "startDateTime": {
+ "description": "Start date and time of the period",
+ "type": "string",
+ "format": "date-time"
+ },
+ "endDateTime": {
+ "description": "End date and time of the period",
+ "type": "string",
+ "format": "date-time"
+ }
+ }
+
+ },
+
+ "RelatedPartyRef": {
+ "description": "Party linked to the service catalog.\nin nbi we retrieve information about last updater of the service in SDC",
+
+
+ "type": "object",
+ "properties": {
+ "id": {
+ "description": "Unique identifier of the related party. Filled with lastUpdaterUserId",
+ "type": "string"
+ },
+ "role": {
+ "description": "Role payed by the related party\nOnly role 'lastUpdater' is retrieved in Beijing release",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the related party - Filled with lastUpdatedFullName",
+ "type": "string"
+ }
+ }
+
+ },
+
+ "ServiceSpecification": {
+ "description": "ServiceSpecification is a class that offers characteristics to describe a type of service. Functionally, it acts as a template by which Services may be instantiated. By sharing the same specification, these services would therefore share the same set of characteristics.\nthe service information are retrieved in SDC",
+
+
+ "required": [
+
+ "invariantUUID"
+ ],
+ "type": "object",
+ "properties": {
+ "id": {
+ "description": "Unique identifier of the service specification. Filled with SDC Service uuid",
+ "type": "string"
+ },
+ "href": {
+ "description": "Reference of the service specification- not mapped in Beijing",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the service specification- Filled with SDC Service name",
+ "type": "string"
+ },
+ "description": {
+ "description": "A narrative that explains in detail what the service specification is - Filled with SDC Service description",
+ "type": "string"
+ },
+ "@type": {
+ "description": "This attribute allows to dynamically extends TMF class. Valued with 'ONAPservice'. We used this features to add following attributes:\ninvariantUUID\ntoscaModelURL\ntoscaResourceName\ncategory (1)\nsubcategory (1)\ndistributionStatus",
+ "type": "string",
+
+ "default": "ONAPservice"
+ },
+ "@schemaLocation": {
+ "description": "Not used for Beijing release",
+ "type": "string"
+ },
+ "@baseType": {
+ "description": "Not used for Beijing release",
+ "type": "string"
+ },
+ "invariantUUID": {
+ "description": "Additional attribute (not in the TMF API) - extended through @type - invariantUUID",
+ "type": "string"
+ },
+ "toscaModelURL": {
+ "description": "Additional attribute (not in the TMF API) - extended through @type - toscaModelURL",
+ "type": "string"
+ },
+ "toscaResourceName": {
+ "description": "Additional attribute (not in the TMF API) - extended through @type - toscaResourceName",
+ "type": "string"
+ },
+ "category": {
+ "description": "Additional attribute - extended through @type - category\nPlease note that this attribute is managed in TMF - in future release we'll introduce category resource",
+ "type": "string"
+ },
+ "subcategory": {
+ "description": "Additional attribute - extended through @type - category\nPlease note that this attribute is managed in TMF - in future release we'll introduce category resourc",
+ "type": "string"
+ },
+ "distributionStatus": {
+
+ "$ref": "#/definitions/DistributionStatus"
+ },
+ "version": {
+ "description": "Service specification version - Filled with SDC Service version",
+ "type": "string"
+ },
+ "lifecycleStatus": {
+
+ "$ref": "#/definitions/LifecycleStatusValues"
+ },
+ "targetServiceSchema": {
+
+ "$ref": "#/definitions/TargetServiceSchemaRef"
+ },
+ "attachment": {
+
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/Attachment"
+ }
+ },
+ "relatedParty": {
+
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/RelatedPartyRef"
+ }
+ },
+ "resourceSpecification": {
+
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ResourceSpecificationRef"
+ }
+ },
+ "serviceSpecCharacteristic": {
+
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ServiceSpecCharacteristic"
+ }
+ }
+ }
+
+ },
+
+ "ServiceSpecCharacteristic": {
+ "description": "A characteristic quality or distinctive feature of a ServiceSpecification. \nServiceSpecCharacteristic are retrieved in the serviceTosca file in the topology_template section in the inputs section.",
+
+
+ "type": "object",
+ "properties": {
+ "name": {
+ "description": "Name of the characteristic - Filled with parameter_name",
+ "type": "string"
+ },
+ "description": {
+ "description": "A narrative that explains in detail what the characteristic is - Filled with parameter_description",
+ "type": "string"
+ },
+ "valueType": {
+ "description": "A kind of value that the characteristic can take on, such as numeric, text and so forth - Filled with parameter_type",
+ "type": "string"
+ },
+ "@type": {
+ "description": "This attribute allows to dynamically extends TMF class. Valued with: 'ONAPserviceCharacteristic'. We do not used this features in nbi Beijing release.",
+ "type": "string"
+ },
+ "@schemaLocation": {
+ "description": "An url pointing to type description - we do not use it in nbi Beijing release",
+ "type": "string"
+ },
+ "required": {
+ "description": "A parameter to define if the characteristic is mandatory - Filled from parameter_required – if not fielded by default ‘true’",
+ "type": "boolean",
+
+ "default": true
+ },
+ "status": {
+ "description": "Status of the characteristic - filled with status_value",
+ "type": "string"
+ },
+ "serviceSpecCharacteristicValue": {
+
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ServiceSpecCharacteristicValue"
+ }
+ }
+ }
+
+ },
+
+ "Attachment": {
+ "description": "An attachment is a file uses to describe the service.\nIn nbi we use attachment to retrieve ONAP artifacts.",
+
+
+ "type": "object",
+ "properties": {
+ "id": {
+ "description": "Unique identifier of the attachment - filled with artifactUUID.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the attachment - filled with artifactName",
+ "type": "string"
+ },
+ "description": {
+ "description": "Description of the attachment - filled with artifactDescription",
+ "type": "string"
+ },
+ "@type": {
+ "description": "This attribute allows to dynamically extends TMF class. Valued with 'ONAPartifact'. We used this features to add following attributes: \nartifactLabel\nartifactGroupType\nartifactTimeout\nartifactChecksum\nartifactVersion\ngeneratedFromUUID",
+ "type": "string",
+
+ "default": "ONAPartifact"
+ },
+ "artifactLabel": {
+ "description": "Additional attribute (not in the TMF API) - extended through @type - artifactLabel",
+ "type": "string"
+ },
+ "artifactGroupType": {
+ "description": "Additional attribute (not in the TMF API) - extended through @type - artifactGroupType",
+ "type": "string"
+ },
+ "artifactTimeout": {
+ "description": "Additional attribute (not in the TMF API) - extended through @type - artifactTimeout",
+ "type": "string"
+ },
+ "artifactChecksum": {
+ "description": "Additional attribute (not in the TMF API) - extended through @type - artifactChecksum",
+ "type": "string"
+ },
+ "artifactVersion": {
+ "description": "Additional attribute (not in the TMF API) - extended through @type - artifactVersion",
+ "type": "string"
+ },
+ "generatedFromUUID": {
+ "description": "Additional attribute (not in the TMF API) - extended through @type - generatedFromUUID",
+ "type": "string"
+ },
+ "url": {
+ "description": "Uniform Resource Locator, is a web page address - filled with artifactURL",
+ "type": "string"
+ },
+ "mimeType": {
+ "description": "Filled with artifactType",
+ "type": "string"
+ }
+ }
+
+ },
+
+ "ServiceSpecCharacteristicValue": {
+ "description": "A number or text that can be assigned to a service specification characteristic.\nServiceSpecCharacteristicValue are retrieved in the service Tosca file",
+
+
+ "type": "object",
+ "properties": {
+ "valueType": {
+ "description": "A kind of value that the characteristic can take on, such as numeric, text, and so forth\nRetrieved in the Tosca in the topology_template section in the inputs section - parameter_type. \nWe do not manage parameter_type= list or map for Beijing release",
+ "type": "string"
+ },
+ "isDefault": {
+ "description": "Information calculated from parameter default in the Tosca file",
+ "type": "boolean"
+ },
+ "value": {
+ "description": "A discrete value that the characteristic can take on",
+ "type": "string"
+ }
+ }
+
+ },
+
+ "ResourceSpecificationRef": {
+ "description": "A list of resourceSpec identified to deliver the service.\nfor nbi we retrieve resource information available in service description (through SDC api) bu as well information retrieved in the TOSCA file.",
+
+
+ "type": "object",
+ "properties": {
+ "id": {
+ "description": "Unique identifier of the resource specification - filled with resourceUUID",
+ "type": "string"
+ },
+ "version": {
+ "description": "Version for this resource specification - filled with resourceVersion",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the resource specification - filled with resourceName",
+ "type": "string"
+ },
+ "@type": {
+ "description": "This attribute allows to dynamically extends TMF class. Valued with: 'ONAPresource'. We used this features to add following attributes:\nresourceInstanceName\nresourceInvariantUUID\nresourceType\nmodelCustomizationName\nmodelCustomizationId",
+ "type": "string",
+
+ "default": "ONAPresource"
+ },
+ "resourceInstanceName": {
+ "description": "Additional attribute (not in the TMF API) - extended through @type - resourceInstanceName",
+ "type": "string"
+ },
+ "resourceInvariantUUID": {
+ "description": "Additional attribute (not in the TMF API) - extended through @type - resourceInvariantUUID",
+ "type": "string"
+ },
+ "resourceType": {
+ "description": "Additional attribute (not in the TMF API) - extended through @type - resoucreType",
+ "type": "string"
+ },
+ "modelCustomizationName": {
+ "description": "Additional attribute (not in the TMF API) - extended through @type - Retrieved in the TOSCA file : attribute name in topology_template/node_template for the resource",
+ "type": "string"
+ },
+ "modelCustomizationId": {
+ "description": "Additional attribute (not in the TMF API) - extended through @type - Retrieved in the TOSCA file : attribute customizationUUID in topology_template/node_template for the resource",
+ "type": "string"
+ }
+ }
+
+ },
+
+ "TargetServiceSchemaRef": {
+ "description": "",
+
+
+ "required": [
+
+ "@type",
+ "@schemaLocation"
+ ],
+ "type": "object",
+ "properties": {
+ "@type": {
+ "description": "",
+ "type": "string"
+ },
+ "@schemaLocation": {
+ "description": "",
+ "type": "string"
+ }
+ }
+
+ }
+ }
+}
+ \ No newline at end of file
diff --git a/docs/offeredapis/swaggers/serviceCatalog_1_0_0.yaml b/docs/offeredapis/swaggers/serviceCatalog_1_0_0.yaml
new file mode 100644
index 0000000..95e62fa
--- /dev/null
+++ b/docs/offeredapis/swaggers/serviceCatalog_1_0_0.yaml
@@ -0,0 +1,488 @@
+swagger: "2.0"
+info:
+ description: "serviceCatalog API designed for ONAP Beijing Release.\nThis API is\
+ \ build from TMF open API17.5\nonly operation GET (by id & byList) for resource\
+ \ serviceSpecification is available"
+ version: "1.0.0"
+ title: "API ServiceCatalog"
+host: "serverRoot"
+basePath: "/nbi/api/v1"
+schemes:
+- "https"
+consumes:
+- "application/json;charset=utf-8"
+produces:
+- "application/json;charset=utf-8"
+tags:
+- name: "ServiceSpecification"
+ description: ""
+paths:
+ /serviceSpecification:
+ get:
+ tags:
+ - "ServiceSpecification"
+ operationId: "serviceSpecificationFind"
+ summary: "List service specifications"
+ description: "This operation returns service specifications from a catalog.\n\
+ Only a predefined set of attribute is proposed : Based on SDC limitations,\
+ \ only attributes category and distributionStatus are available for serviceSpecification\
+ \ filtering\nFields attribute could be used to filter attributes retrieved\n\
+ \nSpecific business errors for current operation will be encapsulated in\n\
+ \nHTTP Response 422 Unprocessable entity\n"
+ deprecated: false
+ parameters:
+ - name: "fields"
+ required: false
+ in: "query"
+ description: "Field selection - used to filtering the attributes to be retreived"
+ type: "string"
+ - name: "category"
+ required: false
+ in: "query"
+ description: "Service Category (filter)"
+ type: "string"
+ - name: "distributionStatus"
+ required: false
+ in: "query"
+ description: "Service distribution status (filter)"
+ type: "string"
+ responses:
+ 200:
+ description: "Success"
+ schema:
+ type: "array"
+ items:
+ $ref: "#/definitions/ServiceSpecification"
+ 400:
+ description: "Bad Request\n\nList of supported error codes:\n- 20: Invalid\
+ \ URL parameter value\n- 21: Missing body\n- 22: Invalid body\n- 23: Missing\
+ \ body field\n- 24: Invalid body field\n- 25: Missing header\n- 26: Invalid\
+ \ header value\n- 27: Missing query-string parameter\n- 28: Invalid query-string\
+ \ parameter value"
+ schema:
+ $ref: "#/definitions/ErrorRepresentation"
+ 401:
+ description: "Unauthorized\n\nList of supported error codes:\n- 40: Missing\
+ \ credentials\n- 41: Invalid credentials\n- 42: Expired credentials"
+ schema:
+ $ref: "#/definitions/ErrorRepresentation"
+ 403:
+ description: "Forbidden\n\nList of supported error codes:\n- 50: Access\
+ \ denied\n- 51: Forbidden requester\n- 52: Forbidden user\n- 53: Too many\
+ \ requests"
+ schema:
+ $ref: "#/definitions/ErrorRepresentation"
+ 404:
+ description: "Not Found\n\nList of supported error codes:\n- 60: Resource\
+ \ not found"
+ schema:
+ $ref: "#/definitions/ErrorRepresentation"
+ 422:
+ description: "Unprocessable entity\n\nFunctional error"
+ schema:
+ $ref: "#/definitions/ErrorRepresentation"
+ 500:
+ description: "Internal Server Error\n\nList of supported error codes:\n\
+ - 1: Internal error"
+ schema:
+ $ref: "#/definitions/ErrorRepresentation"
+ 503:
+ description: "Service Unavailable\n\nList of supported error codes:\n- 5:\
+ \ The service is temporarily unavailable\n- 6: Orange API is over capacity,\
+ \ retry later !"
+ schema:
+ $ref: "#/definitions/ErrorRepresentation"
+ /serviceSpecification/{id}:
+ get:
+ tags:
+ - "ServiceSpecification"
+ operationId: "serviceSpecificationGet"
+ summary: "Retrieve a service specification"
+ description: "This operation returns a service specification by its id from\
+ \ a catalog. Attribute selection is enabled using the fields attribute.\n\n\
+ Specific business errors for current operation will be encapsulated in\n\n\
+ HTTP Response 422 Unprocessable entity\n"
+ deprecated: false
+ parameters:
+ - name: "id"
+ in: "path"
+ required: true
+ type: "string"
+ description: ""
+ - name: "fields"
+ required: false
+ in: "query"
+ description: "Attribute selection"
+ type: "string"
+ responses:
+ 200:
+ description: "Success"
+ schema:
+ $ref: "#/definitions/ServiceSpecification"
+ 400:
+ description: "Bad Request\n\nList of supported error codes:\n- 20: Invalid\
+ \ URL parameter value\n- 21: Missing body\n- 22: Invalid body\n- 23: Missing\
+ \ body field\n- 24: Invalid body field\n- 25: Missing header\n- 26: Invalid\
+ \ header value\n- 27: Missing query-string parameter\n- 28: Invalid query-string\
+ \ parameter value"
+ schema:
+ $ref: "#/definitions/ErrorRepresentation"
+ 401:
+ description: "Unauthorized\n\nList of supported error codes:\n- 40: Missing\
+ \ credentials\n- 41: Invalid credentials\n- 42: Expired credentials"
+ schema:
+ $ref: "#/definitions/ErrorRepresentation"
+ 403:
+ description: "Forbidden\n\nList of supported error codes:\n- 50: Access\
+ \ denied\n- 51: Forbidden requester\n- 52: Forbidden user\n- 53: Too many\
+ \ requests"
+ schema:
+ $ref: "#/definitions/ErrorRepresentation"
+ 404:
+ description: "Not Found\n\nList of supported error codes:\n- 60: Resource\
+ \ not found"
+ schema:
+ $ref: "#/definitions/ErrorRepresentation"
+ 422:
+ description: "Unprocessable entity\n\nFunctional error"
+ schema:
+ $ref: "#/definitions/ErrorRepresentation"
+ 500:
+ description: "Internal Server Error\n\nList of supported error codes:\n\
+ - 1: Internal error"
+ schema:
+ $ref: "#/definitions/ErrorRepresentation"
+ 503:
+ description: "Service Unavailable\n\nList of supported error codes:\n- 5:\
+ \ The service is temporarily unavailable\n- 6: Orange API is over capacity,\
+ \ retry later !"
+ schema:
+ $ref: "#/definitions/ErrorRepresentation"
+definitions:
+ LifecycleStatusValues:
+ description: "Service lifecycle value from ONAP SDC"
+ type: "string"
+ enum:
+ - "NOT_CERTIFIED_CHECKOUT"
+ - "NOT_CERTIFIED_CHECKIN"
+ - "READY_FOR_CERTIFICATION"
+ - "CERTIFICATION_IN_PROGRESS"
+ - "CERTIFIED"
+ DistributionStatus:
+ description: "Service distribution status from ONAP."
+ type: "string"
+ enum:
+ - "DISTRIBUTION_NOT_APPROVED"
+ - "DISTRIBUTION_APPROVED"
+ - "DISTRIBUTED"
+ - "DISTRIBUTION_REJECTED"
+ ErrorRepresentation:
+ description: "This class is used to describe error.\nfor nbi Beijing release we\
+ \ do not manage additional error for serviceCatalog"
+ required:
+ - "code"
+ - "reason"
+ type: "object"
+ properties:
+ code:
+ description: "Application related code (as defined in the API or from a common\
+ \ list)"
+ type: "integer"
+ format: "int32"
+ reason:
+ description: "Text that explains the reason for error. This can be shown to\
+ \ a client user."
+ type: "string"
+ message:
+ description: "Text that provide more details and corrective actions related\
+ \ to the error. This can be shown to a client user"
+ type: "string"
+ status:
+ description: "http error code extension like 400-2"
+ type: "string"
+ referenceErrror:
+ description: "url pointing to documentation describing the error"
+ type: "string"
+ '@type':
+ description: "The class type of a REST resource."
+ type: "string"
+ '@schemaLocation':
+ description: "it provides a link to the schema describing a REST resource."
+ type: "string"
+ TimePeriod:
+ description: "A time period"
+ type: "object"
+ properties:
+ startDateTime:
+ description: "Start date and time of the period"
+ type: "string"
+ format: "date-time"
+ endDateTime:
+ description: "End date and time of the period"
+ type: "string"
+ format: "date-time"
+ RelatedPartyRef:
+ description: "Party linked to the service catalog.\nin nbi we retrieve information\
+ \ about last updater of the service in SDC"
+ type: "object"
+ properties:
+ id:
+ description: "Unique identifier of the related party. Filled with lastUpdaterUserId"
+ type: "string"
+ role:
+ description: "Role payed by the related party\nOnly role 'lastUpdater' is\
+ \ retrieved in Beijing release"
+ type: "string"
+ name:
+ description: "Name of the related party - Filled with lastUpdatedFullName"
+ type: "string"
+ ServiceSpecification:
+ description: "ServiceSpecification is a class that offers characteristics to describe\
+ \ a type of service. Functionally, it acts as a template by which Services may\
+ \ be instantiated. By sharing the same specification, these services would therefore\
+ \ share the same set of characteristics.\nthe service information are retrieved\
+ \ in SDC"
+ required:
+ - "invariantUUID"
+ type: "object"
+ properties:
+ id:
+ description: "Unique identifier of the service specification. Filled with\
+ \ SDC Service uuid"
+ type: "string"
+ href:
+ description: "Reference of the service specification- not mapped in Beijing"
+ type: "string"
+ name:
+ description: "Name of the service specification- Filled with SDC Service name"
+ type: "string"
+ description:
+ description: "A narrative that explains in detail what the service specification\
+ \ is - Filled with SDC Service description"
+ type: "string"
+ '@type':
+ description: "This attribute allows to dynamically extends TMF class. Valued\
+ \ with 'ONAPservice'. We used this features to add following attributes:\n\
+ invariantUUID\ntoscaModelURL\ntoscaResourceName\ncategory (1)\nsubcategory\
+ \ (1)\ndistributionStatus"
+ type: "string"
+ default: "ONAPservice"
+ '@schemaLocation':
+ description: "Not used for Beijing release"
+ type: "string"
+ '@baseType':
+ description: "Not used for Beijing release"
+ type: "string"
+ invariantUUID:
+ description: "Additional attribute (not in the TMF API) - extended through\
+ \ @type - invariantUUID"
+ type: "string"
+ toscaModelURL:
+ description: "Additional attribute (not in the TMF API) - extended through\
+ \ @type - toscaModelURL"
+ type: "string"
+ toscaResourceName:
+ description: "Additional attribute (not in the TMF API) - extended through\
+ \ @type - toscaResourceName"
+ type: "string"
+ category:
+ description: "Additional attribute - extended through @type - category\nPlease\
+ \ note that this attribute is managed in TMF - in future release we'll introduce\
+ \ category resource"
+ type: "string"
+ subcategory:
+ description: "Additional attribute - extended through @type - category\nPlease\
+ \ note that this attribute is managed in TMF - in future release we'll introduce\
+ \ category resourc"
+ type: "string"
+ distributionStatus:
+ $ref: "#/definitions/DistributionStatus"
+ version:
+ description: "Service specification version - Filled with SDC Service version"
+ type: "string"
+ lifecycleStatus:
+ $ref: "#/definitions/LifecycleStatusValues"
+ targetServiceSchema:
+ $ref: "#/definitions/TargetServiceSchemaRef"
+ attachment:
+ type: "array"
+ items:
+ $ref: "#/definitions/Attachment"
+ relatedParty:
+ type: "array"
+ items:
+ $ref: "#/definitions/RelatedPartyRef"
+ resourceSpecification:
+ type: "array"
+ items:
+ $ref: "#/definitions/ResourceSpecificationRef"
+ serviceSpecCharacteristic:
+ type: "array"
+ items:
+ $ref: "#/definitions/ServiceSpecCharacteristic"
+ ServiceSpecCharacteristic:
+ description: "A characteristic quality or distinctive feature of a ServiceSpecification.\
+ \ \nServiceSpecCharacteristic are retrieved in the serviceTosca file in the\
+ \ topology_template section in the inputs section."
+ type: "object"
+ properties:
+ name:
+ description: "Name of the characteristic - Filled with parameter_name"
+ type: "string"
+ description:
+ description: "A narrative that explains in detail what the characteristic\
+ \ is - Filled with parameter_description"
+ type: "string"
+ valueType:
+ description: "A kind of value that the characteristic can take on, such as\
+ \ numeric, text and so forth - Filled with parameter_type"
+ type: "string"
+ '@type':
+ description: "This attribute allows to dynamically extends TMF class. Valued\
+ \ with: 'ONAPserviceCharacteristic'. We do not used this features in nbi\
+ \ Beijing release."
+ type: "string"
+ '@schemaLocation':
+ description: "An url pointing to type description - we do not use it in nbi\
+ \ Beijing release"
+ type: "string"
+ required:
+ description: "A parameter to define if the characteristic is mandatory - Filled\
+ \ from parameter_required – if not fielded by default ‘true’"
+ type: "boolean"
+ default: true
+ status:
+ description: "Status of the characteristic - filled with status_value"
+ type: "string"
+ serviceSpecCharacteristicValue:
+ type: "array"
+ items:
+ $ref: "#/definitions/ServiceSpecCharacteristicValue"
+ Attachment:
+ description: "An attachment is a file uses to describe the service.\nIn nbi we\
+ \ use attachment to retrieve ONAP artifacts."
+ type: "object"
+ properties:
+ id:
+ description: "Unique identifier of the attachment - filled with artifactUUID."
+ type: "string"
+ name:
+ description: "Name of the attachment - filled with artifactName"
+ type: "string"
+ description:
+ description: "Description of the attachment - filled with artifactDescription"
+ type: "string"
+ '@type':
+ description: "This attribute allows to dynamically extends TMF class. Valued\
+ \ with 'ONAPartifact'. We used this features to add following attributes:\
+ \ \nartifactLabel\nartifactGroupType\nartifactTimeout\nartifactChecksum\n\
+ artifactVersion\ngeneratedFromUUID"
+ type: "string"
+ default: "ONAPartifact"
+ artifactLabel:
+ description: "Additional attribute (not in the TMF API) - extended through\
+ \ @type - artifactLabel"
+ type: "string"
+ artifactGroupType:
+ description: "Additional attribute (not in the TMF API) - extended through\
+ \ @type - artifactGroupType"
+ type: "string"
+ artifactTimeout:
+ description: "Additional attribute (not in the TMF API) - extended through\
+ \ @type - artifactTimeout"
+ type: "string"
+ artifactChecksum:
+ description: "Additional attribute (not in the TMF API) - extended through\
+ \ @type - artifactChecksum"
+ type: "string"
+ artifactVersion:
+ description: "Additional attribute (not in the TMF API) - extended through\
+ \ @type - artifactVersion"
+ type: "string"
+ generatedFromUUID:
+ description: "Additional attribute (not in the TMF API) - extended through\
+ \ @type - generatedFromUUID"
+ type: "string"
+ url:
+ description: "Uniform Resource Locator, is a web page address - filled with\
+ \ artifactURL"
+ type: "string"
+ mimeType:
+ description: "Filled with artifactType"
+ type: "string"
+ ServiceSpecCharacteristicValue:
+ description: "A number or text that can be assigned to a service specification\
+ \ characteristic.\nServiceSpecCharacteristicValue are retrieved in the service\
+ \ Tosca file"
+ type: "object"
+ properties:
+ valueType:
+ description: "A kind of value that the characteristic can take on, such as\
+ \ numeric, text, and so forth\nRetrieved in the Tosca in the topology_template\
+ \ section in the inputs section - parameter_type. \nWe do not manage parameter_type=\
+ \ list or map for Beijing release"
+ type: "string"
+ isDefault:
+ description: "Information calculated from parameter default in the Tosca file"
+ type: "boolean"
+ value:
+ description: "A discrete value that the characteristic can take on"
+ type: "string"
+ ResourceSpecificationRef:
+ description: "A list of resourceSpec identified to deliver the service.\nfor nbi\
+ \ we retrieve resource information available in service description (through\
+ \ SDC api) bu as well information retrieved in the TOSCA file."
+ type: "object"
+ properties:
+ id:
+ description: "Unique identifier of the resource specification - filled with\
+ \ resourceUUID"
+ type: "string"
+ version:
+ description: "Version for this resource specification - filled with resourceVersion"
+ type: "string"
+ name:
+ description: "Name of the resource specification - filled with resourceName"
+ type: "string"
+ '@type':
+ description: "This attribute allows to dynamically extends TMF class. Valued\
+ \ with: 'ONAPresource'. We used this features to add following attributes:\n\
+ resourceInstanceName\nresourceInvariantUUID\nresourceType\nmodelCustomizationName\n\
+ modelCustomizationId"
+ type: "string"
+ default: "ONAPresource"
+ resourceInstanceName:
+ description: "Additional attribute (not in the TMF API) - extended through\
+ \ @type - resourceInstanceName"
+ type: "string"
+ resourceInvariantUUID:
+ description: "Additional attribute (not in the TMF API) - extended through\
+ \ @type - resourceInvariantUUID"
+ type: "string"
+ resourceType:
+ description: "Additional attribute (not in the TMF API) - extended through\
+ \ @type - resoucreType"
+ type: "string"
+ modelCustomizationName:
+ description: "Additional attribute (not in the TMF API) - extended through\
+ \ @type - Retrieved in the TOSCA file : attribute name in topology_template/node_template\
+ \ for the resource"
+ type: "string"
+ modelCustomizationId:
+ description: "Additional attribute (not in the TMF API) - extended through\
+ \ @type - Retrieved in the TOSCA file : attribute customizationUUID in topology_template/node_template\
+ \ for the resource"
+ type: "string"
+ TargetServiceSchemaRef:
+ description: ""
+ required:
+ - "@type"
+ - "@schemaLocation"
+ type: "object"
+ properties:
+ '@type':
+ description: ""
+ type: "string"
+ '@schemaLocation':
+ description: ""
+ type: "string"
diff --git a/docs/offeredapis/swaggers/serviceInventory_1_0_0.json b/docs/offeredapis/swaggers/serviceInventory_1_0_0.json
new file mode 100644
index 0000000..5c2c7c5
--- /dev/null
+++ b/docs/offeredapis/swaggers/serviceInventory_1_0_0.json
@@ -0,0 +1,620 @@
+
+{
+ "swagger": "2.0",
+ "info": {
+ "description": "serviceInventory API designed for ONAP Beijing Release.\nThis API is build from TMF open API18.0 (applying TMF Guideline 3.0)\nonly operation GET (by id & byList) for resource serviceSpecification is available",
+ "version": "1.0.0",
+ "title": "API ServiceInventory"
+ },
+
+ "host": "serverRoot",
+ "basePath": "/nbi/api/v1",
+ "schemes": [
+ "https"
+ ],
+ "consumes": [
+ "application/json;charset=utf-8"
+ ],
+ "produces": [
+ "application/json;charset=utf-8"
+ ],
+ "tags": [
+
+ {
+ "name": "Service",
+ "description": ""
+ }
+ ],
+ "paths": {
+ "/service": {
+ "get": {
+ "tags": [
+ "Service"
+ ],
+ "operationId": "serviceFind",
+ "summary": "List services",
+ "description": "This operation list service entities. \nAttribute selection is restricted. \nfields attribute may be used to filter retrieved attribute(s) for each service\n\nSpecific business errors for current operation will be encapsulated in\n\nHTTP Response 422 Unprocessable entity\n",
+ "deprecated": false,
+
+ "parameters": [
+
+ {
+ "name": "relatedParty.id",
+ "required": false,
+ "in": "query",
+ "description": "",
+
+ "type": "string"
+ },
+ {
+ "name": "serviceSpecification.id",
+ "required": false,
+ "in": "query",
+ "description": "",
+
+ "type": "string"
+ },
+ {
+ "name": "serviceSpecification.name",
+ "required": false,
+ "in": "query",
+ "description": "",
+
+ "type": "string"
+ },
+ {
+ "name": "id",
+ "required": false,
+ "in": "query",
+ "description": "",
+
+ "type": "string"
+ },
+ {
+ "name": "fields",
+ "required": false,
+ "in": "query",
+ "description": "",
+
+ "type": "string"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "schema": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ListService"
+ }
+ }
+
+ },
+ "400": {
+
+ "description": "Bad Request\n\nList of supported error codes:\n- 20: Invalid URL parameter value\n- 21: Missing body\n- 22: Invalid body\n- 23: Missing body field\n- 24: Invalid body field\n- 25: Missing header\n- 26: Invalid header value\n- 27: Missing query-string parameter\n- 28: Invalid query-string parameter value",
+ "schema": {
+
+ "$ref": "#/definitions/ErrorRepresentation"
+ }
+ },
+ "401": {
+
+ "description": "Unauthorized\n\nList of supported error codes:\n- 40: Missing credentials\n- 41: Invalid credentials\n- 42: Expired credentials",
+ "schema": {
+
+ "$ref": "#/definitions/ErrorRepresentation"
+ }
+ },
+ "403": {
+
+ "description": "Forbidden\n\nList of supported error codes:\n- 50: Access denied\n- 51: Forbidden requester\n- 52: Forbidden user\n- 53: Too many requests",
+ "schema": {
+
+ "$ref": "#/definitions/ErrorRepresentation"
+ }
+ },
+ "404": {
+
+ "description": "Not Found\n\nList of supported error codes:\n- 60: Resource not found",
+ "schema": {
+
+ "$ref": "#/definitions/ErrorRepresentation"
+ }
+ },
+ "422": {
+
+ "description": "Unprocessable entity\n\nFunctional error",
+ "schema": {
+
+ "$ref": "#/definitions/ErrorRepresentation"
+ }
+ },
+ "500": {
+
+ "description": "Internal Server Error\n\nList of supported error codes:\n- 1: Internal error",
+ "schema": {
+
+ "$ref": "#/definitions/ErrorRepresentation"
+ }
+ },
+ "503": {
+
+ "description": "Service Unavailable\n\nList of supported error codes:\n- 5: The service is temporarily unavailable\n- 6: Orange API is over capacity, retry later !",
+ "schema": {
+
+ "$ref": "#/definitions/ErrorRepresentation"
+ }
+ }
+ }
+ }
+ },
+ "/service/{id}": {
+ "get": {
+ "tags": [
+ "Service"
+ ],
+ "operationId": "serviceGet",
+ "summary": "Retrieve a service",
+ "description": "This operation retrieves a service entity. \nAttribute selection is enabled for all first level attributes.\n\nSpecific business errors for current operation will be encapsulated in\n\nHTTP Response 422 Unprocessable entity\n",
+ "deprecated": false,
+
+ "parameters": [
+
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "type": "string",
+ "description": ""
+ },
+ {
+ "name": "relatedParty.id",
+ "required": false,
+ "in": "query",
+ "description": "",
+
+ "type": "string"
+ },
+ {
+ "name": "serviceSpecification.id",
+ "required": false,
+ "in": "query",
+ "description": "",
+
+ "type": "string"
+ },
+ {
+ "name": "serviceSpecification.name",
+ "required": false,
+ "in": "query",
+ "description": "",
+
+ "type": "string"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "schema": {
+ "$ref": "#/definitions/Service"
+ }
+
+ },
+ "400": {
+
+ "description": "Bad Request\n\nList of supported error codes:\n- 20: Invalid URL parameter value\n- 21: Missing body\n- 22: Invalid body\n- 23: Missing body field\n- 24: Invalid body field\n- 25: Missing header\n- 26: Invalid header value\n- 27: Missing query-string parameter\n- 28: Invalid query-string parameter value",
+ "schema": {
+
+ "$ref": "#/definitions/ErrorRepresentation"
+ }
+ },
+ "401": {
+
+ "description": "Unauthorized\n\nList of supported error codes:\n- 40: Missing credentials\n- 41: Invalid credentials\n- 42: Expired credentials",
+ "schema": {
+
+ "$ref": "#/definitions/ErrorRepresentation"
+ }
+ },
+ "403": {
+
+ "description": "Forbidden\n\nList of supported error codes:\n- 50: Access denied\n- 51: Forbidden requester\n- 52: Forbidden user\n- 53: Too many requests",
+ "schema": {
+
+ "$ref": "#/definitions/ErrorRepresentation"
+ }
+ },
+ "404": {
+
+ "description": "Not Found\n\nList of supported error codes:\n- 60: Resource not found",
+ "schema": {
+
+ "$ref": "#/definitions/ErrorRepresentation"
+ }
+ },
+ "422": {
+
+ "description": "Unprocessable entity\n\nFunctional error",
+ "schema": {
+
+ "$ref": "#/definitions/ErrorRepresentation"
+ }
+ },
+ "500": {
+
+ "description": "Internal Server Error\n\nList of supported error codes:\n- 1: Internal error",
+ "schema": {
+
+ "$ref": "#/definitions/ErrorRepresentation"
+ }
+ },
+ "503": {
+
+ "description": "Service Unavailable\n\nList of supported error codes:\n- 5: The service is temporarily unavailable\n- 6: Orange API is over capacity, retry later !",
+ "schema": {
+
+ "$ref": "#/definitions/ErrorRepresentation"
+ }
+ }
+ }
+ }
+ }
+ },
+"definitions": {
+
+ "stateValues": {
+ "description": "",
+
+ "type": "string",
+ "enum": [
+ "feasibilityChecked",
+ "designed",
+ "reserved",
+ "inactive",
+ "active",
+ "terminated"]
+
+ },
+
+ "ErrorRepresentation": {
+ "description": "This class is used to describe error.\nfor nbi Beijing release we do not manage additional error for serviceCatalog",
+
+
+ "required": [
+
+ "code",
+ "reason"
+ ],
+ "type": "object",
+ "properties": {
+ "code": {
+ "description": "Application related code (as defined in the API or from a common list)",
+ "type": "integer",
+ "format": "int32"
+ },
+ "reason": {
+ "description": "Text that explains the reason for error. This can be shown to a client user.",
+ "type": "string"
+ },
+ "message": {
+ "description": "Text that provide more details and corrective actions related to the error. This can be shown to a client user.",
+ "type": "string"
+ },
+ "status": {
+ "description": "http error code extension like 400-2",
+ "type": "string"
+ },
+ "referenceError": {
+ "description": "url pointing to documentation describing the error",
+ "type": "string"
+ },
+ "@type": {
+ "description": "The class type of a REST resource.",
+ "type": "string"
+ },
+ "@schemaLocation": {
+ "description": "it provides a link to the schema describing a REST resource.",
+ "type": "string"
+ }
+ }
+
+ },
+
+ "Service": {
+ "description": "Instantiated service (service_instance) in AAI",
+
+
+ "type": "object",
+ "properties": {
+ "id": {
+ "description": "Unique identifier of the service - Valued with service-instance-id",
+ "type": "string"
+ },
+ "href": {
+ "description": "Reference of the service\nNot managed in Beijing release",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the service - Valued with service-instance-name",
+ "type": "string"
+ },
+ "type": {
+ "description": "Service type - valued with 'service-instance'",
+ "type": "string"
+ },
+ "state": {
+
+ "$ref": "#/definitions/stateValues"
+ },
+ "hasStarted": {
+ "description": "This is a Boolean attribute that, if TRUE, signifies that this Service has already been started. If the value of this attribute is FALSE, then this signifies that this Service has NOT been Started\nNot managed in Beijing release",
+ "type": "boolean"
+ },
+ "@type": {
+ "description": "This attribute allows to dynamically extends TMF class. Not used in Beijing release.",
+ "type": "string"
+ },
+ "@baseType": {
+ "description": "Not managed in Beijing release",
+ "type": "string"
+ },
+ "@schemaLocation": {
+ "description": "Not managed in Beijing release",
+ "type": "string"
+ },
+ "serviceSpecification": {
+
+ "$ref": "#/definitions/ServiceSpecificationRef"
+ },
+ "characteristic": {
+
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ServiceCharacteristic"
+ }
+ },
+ "supportingResource": {
+
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/SupportingResource"
+ }
+ },
+ "relatedParty": {
+
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/RelatedPartyRef"
+ }
+ }
+ }
+
+ },
+
+ "ServiceSpecificationRef": {
+ "description": "Service specification reference: ServiceSpecification of this service (catalog information)",
+
+
+ "type": "object",
+ "properties": {
+ "id": {
+ "description": "Unique identifier of the service specification. valued to model-version-id",
+ "type": "string"
+ },
+ "href": {
+ "description": "Reference of the service specification.\nnot managed in Beijing release.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the required service specification",
+ "type": "string"
+ },
+ "version": {
+ "description": "Service specification version.\nNot managed in Beijing release",
+ "type": "string"
+ },
+ "@referredType": {
+ "description": "This attribute allows to dynamically extends TMF class. Valued with 'ONAPservice'. We used this features to add following attribute: invariantUUID",
+ "type": "string"
+ },
+ "@schemaLocation": {
+ "description": "Not managed in Beijing release",
+ "type": "string"
+ },
+ "invariantUUID": {
+ "description": "Additional attribute (not in the TMF API) - extended through @referredType - model-invariant-id",
+ "type": "string"
+ }
+ }
+
+ },
+
+ "ServiceCharacteristic": {
+ "description": "A list of name value pairs that define the service characteristics\nNot managed in Beijing release.",
+
+
+ "required": [
+
+ "name"
+ ],
+ "type": "object",
+ "properties": {
+ "name": {
+ "description": "Name of the characteristic\nNot managed in Beijing release.",
+ "type": "string"
+ },
+ "valueType": {
+ "description": "Type of value for this characteristic.\nNot managed in Beijing release.",
+ "type": "string"
+ },
+ "value": {
+
+ "$ref": "#/definitions/Value"
+ }
+ }
+
+ },
+
+ "SupportingResource": {
+ "description": "Supporting resource - A supportingResource will be retrieved for each relationship of the relationship-list where related-link describe a vnf",
+
+
+ "type": "object",
+ "properties": {
+ "id": {
+ "description": "Unique identifier of the supporting resource - Valued to vnf-id",
+ "type": "string"
+ },
+ "href": {
+ "description": "Reference of the supporting resource",
+ "type": "string"
+ },
+ "role": {
+ "description": "Not managed in Beijing release.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the supporting resource - Valued with vnf_-name",
+ "type": "string"
+ },
+ "@referredType": {
+ "description": "This attribute allows to dynamically extends TMF class. Valued with 'ONAP resource'. We used this features to add following attributes:\n status\t\n modelInvariantId\n modelVersionId\n modelCustomisationId",
+ "type": "string"
+ },
+ "@schemaLocation": {
+ "description": "Not managed in Beijing release.",
+ "type": "string"
+ },
+ "status": {
+ "description": "Additional attribute (not in the TMF API) - extended through @referredType - valued with prov-status",
+ "type": "string"
+ },
+ "modelInvariantId": {
+ "description": "Additional attribute (not in the TMF API) - extended through @referredType - valued with model-invariant-id",
+ "type": "string"
+ },
+ "modelVersionId": {
+ "description": "Additional attribute (not in the TMF API) - extended through @referredType - valued with model-verson-id",
+ "type": "string"
+ },
+ "modelCustomisationId": {
+ "description": "Additional attribute (not in the TMF API) - extended through @referredType - valued with model-customisation-id",
+ "type": "string"
+ }
+ }
+
+ },
+
+ "RelatedPartyRef": {
+ "description": "RelatedParty reference. A related party defines party or party role linked to a specific entity.\nOnly ONAP Customer is managed in Beijing release.",
+
+
+ "type": "object",
+ "properties": {
+ "id": {
+ "description": "Unique identifier of a related party",
+ "type": "string"
+ },
+ "href": {
+ "description": "Reference of a related party.\nNot filled in Beijing release.",
+ "type": "string"
+ },
+ "role": {
+ "description": "Role played by the related party.\nFilled with 'ONAPcustomer'",
+ "type": "string"
+ },
+ "@referredType": {
+ "description": "Not managed in the Beijing release.",
+ "type": "string"
+ }
+ }
+
+ },
+
+ "Value": {
+ "description": "Structure used to describe characteristic value.\nNot managed in Beijing release.",
+
+
+ "type": "object",
+ "properties": {
+ "@type": {
+ "description": "Not managed in Beijing release.",
+ "type": "string"
+ },
+ "@schemaLocation": {
+ "description": "Not managed in Beijing release.",
+ "type": "string"
+ },
+ "serviceCharacteristicValue": {
+ "description": "Not managed in Beijing release.",
+ "type": "string"
+ }
+ }
+
+ },
+
+ "ListRelatedPartyRef": {
+ "description": "This class is used to structure list of service(s) retrieved",
+
+
+ "type": "object",
+ "properties": {
+ "id": {
+ "description": "Unique identifier of a related party",
+ "type": "string"
+ },
+ "role": {
+ "description": "Role played by the related party - only role “ONAPcustomer” is managed in Beijing release.",
+ "type": "string"
+ }
+ }
+
+ },
+
+ "ListServiceSpecificationRef": {
+ "description": "This class is used to structure list of service(s) retrieved",
+
+
+ "type": "object",
+ "properties": {
+ "id": {
+ "description": "Unique identifier of the service specification",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the required service specification",
+ "type": "string"
+ }
+ }
+
+ },
+
+ "ListService": {
+ "description": "This class is used to structure list of service(s) retrieved",
+
+
+ "type": "object",
+ "properties": {
+ "id": {
+ "description": "Unique identifier of the service",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the service",
+ "type": "string"
+ },
+ "serviceSpecification": {
+
+ "$ref": "#/definitions/ListServiceSpecificationRef"
+ },
+ "relatedParty": {
+
+ "$ref": "#/definitions/ListRelatedPartyRef"
+ }
+ }
+
+ }
+ }
+}
+ \ No newline at end of file
diff --git a/docs/offeredapis/swaggers/serviceInventory_1_0_0.yaml b/docs/offeredapis/swaggers/serviceInventory_1_0_0.yaml
new file mode 100644
index 0000000..99af226
--- /dev/null
+++ b/docs/offeredapis/swaggers/serviceInventory_1_0_0.yaml
@@ -0,0 +1,423 @@
+swagger: "2.0"
+info:
+ description: "serviceInventory API designed for ONAP Beijing Release.\nThis API\
+ \ is build from TMF open API18.0 (applying TMF Guideline 3.0)\nonly operation\
+ \ GET (by id & byList) for resource serviceSpecification is available"
+ version: "1.0.0"
+ title: "API ServiceInventory"
+host: "serverRoot"
+basePath: "/nbi/api/v1"
+schemes:
+- "https"
+consumes:
+- "application/json;charset=utf-8"
+produces:
+- "application/json;charset=utf-8"
+tags:
+- name: "Service"
+ description: ""
+paths:
+ /service:
+ get:
+ tags:
+ - "Service"
+ operationId: "serviceFind"
+ summary: "List services"
+ description: "This operation list service entities. \nAttribute selection is\
+ \ restricted. \nfields attribute may be used to filter retrieved attribute(s)\
+ \ for each service\n\nSpecific business errors for current operation will\
+ \ be encapsulated in\n\nHTTP Response 422 Unprocessable entity\n"
+ deprecated: false
+ parameters:
+ - name: "relatedParty.id"
+ required: false
+ in: "query"
+ description: ""
+ type: "string"
+ - name: "serviceSpecification.id"
+ required: false
+ in: "query"
+ description: ""
+ type: "string"
+ - name: "serviceSpecification.name"
+ required: false
+ in: "query"
+ description: ""
+ type: "string"
+ - name: "id"
+ required: false
+ in: "query"
+ description: ""
+ type: "string"
+ - name: "fields"
+ required: false
+ in: "query"
+ description: ""
+ type: "string"
+ responses:
+ 200:
+ description: "Success"
+ schema:
+ type: "array"
+ items:
+ $ref: "#/definitions/ListService"
+ 400:
+ description: "Bad Request\n\nList of supported error codes:\n- 20: Invalid\
+ \ URL parameter value\n- 21: Missing body\n- 22: Invalid body\n- 23: Missing\
+ \ body field\n- 24: Invalid body field\n- 25: Missing header\n- 26: Invalid\
+ \ header value\n- 27: Missing query-string parameter\n- 28: Invalid query-string\
+ \ parameter value"
+ schema:
+ $ref: "#/definitions/ErrorRepresentation"
+ 401:
+ description: "Unauthorized\n\nList of supported error codes:\n- 40: Missing\
+ \ credentials\n- 41: Invalid credentials\n- 42: Expired credentials"
+ schema:
+ $ref: "#/definitions/ErrorRepresentation"
+ 403:
+ description: "Forbidden\n\nList of supported error codes:\n- 50: Access\
+ \ denied\n- 51: Forbidden requester\n- 52: Forbidden user\n- 53: Too many\
+ \ requests"
+ schema:
+ $ref: "#/definitions/ErrorRepresentation"
+ 404:
+ description: "Not Found\n\nList of supported error codes:\n- 60: Resource\
+ \ not found"
+ schema:
+ $ref: "#/definitions/ErrorRepresentation"
+ 422:
+ description: "Unprocessable entity\n\nFunctional error"
+ schema:
+ $ref: "#/definitions/ErrorRepresentation"
+ 500:
+ description: "Internal Server Error\n\nList of supported error codes:\n\
+ - 1: Internal error"
+ schema:
+ $ref: "#/definitions/ErrorRepresentation"
+ 503:
+ description: "Service Unavailable\n\nList of supported error codes:\n- 5:\
+ \ The service is temporarily unavailable\n- 6: Orange API is over capacity,\
+ \ retry later !"
+ schema:
+ $ref: "#/definitions/ErrorRepresentation"
+ /service/{id}:
+ get:
+ tags:
+ - "Service"
+ operationId: "serviceGet"
+ summary: "Retrieve a service"
+ description: "This operation retrieves a service entity. \nAttribute selection\
+ \ is enabled for all first level attributes.\n\nSpecific business errors for\
+ \ current operation will be encapsulated in\n\nHTTP Response 422 Unprocessable\
+ \ entity\n"
+ deprecated: false
+ parameters:
+ - name: "id"
+ in: "path"
+ required: true
+ type: "string"
+ description: ""
+ - name: "relatedParty.id"
+ required: false
+ in: "query"
+ description: ""
+ type: "string"
+ - name: "serviceSpecification.id"
+ required: false
+ in: "query"
+ description: ""
+ type: "string"
+ - name: "serviceSpecification.name"
+ required: false
+ in: "query"
+ description: ""
+ type: "string"
+ responses:
+ 200:
+ description: "Success"
+ schema:
+ $ref: "#/definitions/Service"
+ 400:
+ description: "Bad Request\n\nList of supported error codes:\n- 20: Invalid\
+ \ URL parameter value\n- 21: Missing body\n- 22: Invalid body\n- 23: Missing\
+ \ body field\n- 24: Invalid body field\n- 25: Missing header\n- 26: Invalid\
+ \ header value\n- 27: Missing query-string parameter\n- 28: Invalid query-string\
+ \ parameter value"
+ schema:
+ $ref: "#/definitions/ErrorRepresentation"
+ 401:
+ description: "Unauthorized\n\nList of supported error codes:\n- 40: Missing\
+ \ credentials\n- 41: Invalid credentials\n- 42: Expired credentials"
+ schema:
+ $ref: "#/definitions/ErrorRepresentation"
+ 403:
+ description: "Forbidden\n\nList of supported error codes:\n- 50: Access\
+ \ denied\n- 51: Forbidden requester\n- 52: Forbidden user\n- 53: Too many\
+ \ requests"
+ schema:
+ $ref: "#/definitions/ErrorRepresentation"
+ 404:
+ description: "Not Found\n\nList of supported error codes:\n- 60: Resource\
+ \ not found"
+ schema:
+ $ref: "#/definitions/ErrorRepresentation"
+ 422:
+ description: "Unprocessable entity\n\nFunctional error"
+ schema:
+ $ref: "#/definitions/ErrorRepresentation"
+ 500:
+ description: "Internal Server Error\n\nList of supported error codes:\n\
+ - 1: Internal error"
+ schema:
+ $ref: "#/definitions/ErrorRepresentation"
+ 503:
+ description: "Service Unavailable\n\nList of supported error codes:\n- 5:\
+ \ The service is temporarily unavailable\n- 6: Orange API is over capacity,\
+ \ retry later !"
+ schema:
+ $ref: "#/definitions/ErrorRepresentation"
+definitions:
+ stateValues:
+ description: ""
+ type: "string"
+ enum:
+ - "feasibilityChecked"
+ - "designed"
+ - "reserved"
+ - "inactive"
+ - "active"
+ - "terminated"
+ ErrorRepresentation:
+ description: "This class is used to describe error.\nfor nbi Beijing release we\
+ \ do not manage additional error for serviceCatalog"
+ required:
+ - "code"
+ - "reason"
+ type: "object"
+ properties:
+ code:
+ description: "Application related code (as defined in the API or from a common\
+ \ list)"
+ type: "integer"
+ format: "int32"
+ reason:
+ description: "Text that explains the reason for error. This can be shown to\
+ \ a client user."
+ type: "string"
+ message:
+ description: "Text that provide more details and corrective actions related\
+ \ to the error. This can be shown to a client user."
+ type: "string"
+ status:
+ description: "http error code extension like 400-2"
+ type: "string"
+ referenceError:
+ description: "url pointing to documentation describing the error"
+ type: "string"
+ '@type':
+ description: "The class type of a REST resource."
+ type: "string"
+ '@schemaLocation':
+ description: "it provides a link to the schema describing a REST resource."
+ type: "string"
+ Service:
+ description: "Instantiated service (service_instance) in AAI"
+ type: "object"
+ properties:
+ id:
+ description: "Unique identifier of the service - Valued with service-instance-id"
+ type: "string"
+ href:
+ description: "Reference of the service\nNot managed in Beijing release"
+ type: "string"
+ name:
+ description: "Name of the service - Valued with service-instance-name"
+ type: "string"
+ type:
+ description: "Service type - valued with 'service-instance'"
+ type: "string"
+ state:
+ $ref: "#/definitions/stateValues"
+ hasStarted:
+ description: "This is a Boolean attribute that, if TRUE, signifies that this\
+ \ Service has already been started. If the value of this attribute is FALSE,\
+ \ then this signifies that this Service has NOT been Started\nNot managed\
+ \ in Beijing release"
+ type: "boolean"
+ '@type':
+ description: "This attribute allows to dynamically extends TMF class. Not\
+ \ used in Beijing release."
+ type: "string"
+ '@baseType':
+ description: "Not managed in Beijing release"
+ type: "string"
+ '@schemaLocation':
+ description: "Not managed in Beijing release"
+ type: "string"
+ serviceSpecification:
+ $ref: "#/definitions/ServiceSpecificationRef"
+ characteristic:
+ type: "array"
+ items:
+ $ref: "#/definitions/ServiceCharacteristic"
+ supportingResource:
+ type: "array"
+ items:
+ $ref: "#/definitions/SupportingResource"
+ relatedParty:
+ type: "array"
+ items:
+ $ref: "#/definitions/RelatedPartyRef"
+ ServiceSpecificationRef:
+ description: "Service specification reference: ServiceSpecification of this service\
+ \ (catalog information)"
+ type: "object"
+ properties:
+ id:
+ description: "Unique identifier of the service specification. valued to model-version-id"
+ type: "string"
+ href:
+ description: "Reference of the service specification.\nnot managed in Beijing\
+ \ release."
+ type: "string"
+ name:
+ description: "Name of the required service specification"
+ type: "string"
+ version:
+ description: "Service specification version.\nNot managed in Beijing release"
+ type: "string"
+ '@referredType':
+ description: "This attribute allows to dynamically extends TMF class. Valued\
+ \ with 'ONAPservice'. We used this features to add following attribute:\
+ \ invariantUUID"
+ type: "string"
+ '@schemaLocation':
+ description: "Not managed in Beijing release"
+ type: "string"
+ invariantUUID:
+ description: "Additional attribute (not in the TMF API) - extended through\
+ \ @referredType - model-invariant-id"
+ type: "string"
+ ServiceCharacteristic:
+ description: "A list of name value pairs that define the service characteristics\n\
+ Not managed in Beijing release."
+ required:
+ - "name"
+ type: "object"
+ properties:
+ name:
+ description: "Name of the characteristic\nNot managed in Beijing release."
+ type: "string"
+ valueType:
+ description: "Type of value for this characteristic.\nNot managed in Beijing\
+ \ release."
+ type: "string"
+ value:
+ $ref: "#/definitions/Value"
+ SupportingResource:
+ description: "Supporting resource - A supportingResource will be retrieved for\
+ \ each relationship of the relationship-list where related-link describe a vnf"
+ type: "object"
+ properties:
+ id:
+ description: "Unique identifier of the supporting resource - Valued to vnf-id"
+ type: "string"
+ href:
+ description: "Reference of the supporting resource"
+ type: "string"
+ role:
+ description: "Not managed in Beijing release."
+ type: "string"
+ name:
+ description: "Name of the supporting resource - Valued with vnf_-name"
+ type: "string"
+ '@referredType':
+ description: "This attribute allows to dynamically extends TMF class. Valued\
+ \ with 'ONAP resource'. We used this features to add following attributes:\n\
+ \ status\t\n modelInvariantId\n modelVersionId\n modelCustomisationId"
+ type: "string"
+ '@schemaLocation':
+ description: "Not managed in Beijing release."
+ type: "string"
+ status:
+ description: "Additional attribute (not in the TMF API) - extended through\
+ \ @referredType - valued with prov-status"
+ type: "string"
+ modelInvariantId:
+ description: "Additional attribute (not in the TMF API) - extended through\
+ \ @referredType - valued with model-invariant-id"
+ type: "string"
+ modelVersionId:
+ description: "Additional attribute (not in the TMF API) - extended through\
+ \ @referredType - valued with model-verson-id"
+ type: "string"
+ modelCustomisationId:
+ description: "Additional attribute (not in the TMF API) - extended through\
+ \ @referredType - valued with model-customisation-id"
+ type: "string"
+ RelatedPartyRef:
+ description: "RelatedParty reference. A related party defines party or party role\
+ \ linked to a specific entity.\nOnly ONAP Customer is managed in Beijing release."
+ type: "object"
+ properties:
+ id:
+ description: "Unique identifier of a related party"
+ type: "string"
+ href:
+ description: "Reference of a related party.\nNot filled in Beijing release."
+ type: "string"
+ role:
+ description: "Role played by the related party.\nFilled with 'ONAPcustomer'"
+ type: "string"
+ '@referredType':
+ description: "Not managed in the Beijing release."
+ type: "string"
+ Value:
+ description: "Structure used to describe characteristic value.\nNot managed in\
+ \ Beijing release."
+ type: "object"
+ properties:
+ '@type':
+ description: "Not managed in Beijing release."
+ type: "string"
+ '@schemaLocation':
+ description: "Not managed in Beijing release."
+ type: "string"
+ serviceCharacteristicValue:
+ description: "Not managed in Beijing release."
+ type: "string"
+ ListRelatedPartyRef:
+ description: "This class is used to structure list of service(s) retrieved"
+ type: "object"
+ properties:
+ id:
+ description: "Unique identifier of a related party"
+ type: "string"
+ role:
+ description: "Role played by the related party - only role “ONAPcustomer”\
+ \ is managed in Beijing release."
+ type: "string"
+ ListServiceSpecificationRef:
+ description: "This class is used to structure list of service(s) retrieved"
+ type: "object"
+ properties:
+ id:
+ description: "Unique identifier of the service specification"
+ type: "string"
+ name:
+ description: "Name of the required service specification"
+ type: "string"
+ ListService:
+ description: "This class is used to structure list of service(s) retrieved"
+ type: "object"
+ properties:
+ id:
+ description: "Unique identifier of the service"
+ type: "string"
+ name:
+ description: "Name of the service"
+ type: "string"
+ serviceSpecification:
+ $ref: "#/definitions/ListServiceSpecificationRef"
+ relatedParty:
+ $ref: "#/definitions/ListRelatedPartyRef"
diff --git a/docs/offeredapis/swaggers/serviceOrder_1_0_0.json b/docs/offeredapis/swaggers/serviceOrder_1_0_0.json
new file mode 100644
index 0000000..9df30a3
--- /dev/null
+++ b/docs/offeredapis/swaggers/serviceOrder_1_0_0.json
@@ -0,0 +1,1071 @@
+
+{
+ "swagger": "2.0",
+ "info": {
+ "description": "serviceOrder API designed for ONAP Beijing Release.\nThis API is build from TMF open API18.0 (applying TMF Guideline 3.0);\nOnly operations GET (by id and list) and POST are available.",
+ "version": "1.0.0_inProgress",
+ "title": "API ServiceOrder",
+ "x-logo": {
+ "url": "/redoc/logo.png",
+ "backgroundColor": "#FFFFFF"
+ }
+ },
+
+ "host": "serverRoot",
+ "basePath": "/nbi/api/v1",
+ "schemes": [
+ "https"
+ ],
+ "consumes": [
+ "application/json;charset=utf-8"
+ ],
+ "produces": [
+ "application/json;charset=utf-8"
+ ],
+ "tags": [
+
+ {
+ "name": "ServiceOrder",
+ "description": "A Service Order is a type of order which can be used to describe a group of operations on service – one service order item per service. An action at the level of the service order item describe the operation to be done on a service (add, terminate for example). The service order is triggered from the BSS system in charge of the product order management to ONAP that will manage the service fulfillment."
+ }
+ ],
+ "paths": {
+ "/serviceOrder": {
+ "post": {
+ "tags": [
+ "ServiceOrder"
+ ],
+ "operationId": "serviceOrderCreate",
+ "summary": "Create a service order",
+ "description": "This operation creates a service order entity.\nThe TMF Open API specification document provides the list of mandatory and non mandatory attributes when creating a ServiceOrder, including any possible rule conditions and applicable default values.\nPOST should be used without specifying the id and the href, the Service Order Management system is in charge of generating the id + href for the ServiceOrder.\n\nSpecific business errors for current operation will be encapsulated in\n\nHTTP Response 422 Unprocessable entity\n\n - 100: OrderItem with 'add' action but serviceSpecification id missing\n \n - 101: OrderItem with 'change'/'noChange'/'remove' but service id missing\n \n - 102: OrderItem with 'add' action - serviceSpecification id provided but not existing\n \n - 103: OrderItem with 'add' action but service id already existing in the inventory\n \n - 104: A customer for existing service(s) is provided but he did not exist\n \n - 105: OrderItem with 'change'/'noChange'/'remove' - Service id provided but it is not existing in the inventory\n \n - 106: [Not managed for current Relese] Issue with lcpCloudRegionId and tenantId provided\n ",
+ "deprecated": false,
+
+ "parameters": [
+
+ {
+ "name": "serviceOrder",
+ "required": true,
+ "in": "body",
+ "description": "",
+ "schema": {
+ "$ref": "#/definitions/CreateServiceOrder"
+ }
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Success",
+ "schema": {
+ "$ref": "#/definitions/CreateServiceOrder"
+ }
+
+ },
+ "400": {
+
+ "description": "Bad Request\n\nList of supported error codes:\n- 20: Invalid URL parameter value\n- 21: Missing body\n- 22: Invalid body\n- 23: Missing body field\n- 24: Invalid body field\n- 25: Missing header\n- 26: Invalid header value\n- 27: Missing query-string parameter\n- 28: Invalid query-string parameter value",
+ "schema": {
+
+ "$ref": "#/definitions/ErrorRepresentation"
+ }
+ },
+ "401": {
+
+ "description": "Unauthorized\n\nList of supported error codes:\n- 40: Missing credentials\n- 41: Invalid credentials\n- 42: Expired credentials",
+ "schema": {
+
+ "$ref": "#/definitions/ErrorRepresentation"
+ }
+ },
+ "403": {
+
+ "description": "Forbidden\n\nList of supported error codes:\n- 50: Access denied\n- 51: Forbidden requester\n- 52: Forbidden user\n- 53: Too many requests",
+ "schema": {
+
+ "$ref": "#/definitions/ErrorRepresentation"
+ }
+ },
+ "404": {
+
+ "description": "Not Found\n\nList of supported error codes:\n- 60: Resource not found",
+ "schema": {
+
+ "$ref": "#/definitions/ErrorRepresentation"
+ }
+ },
+ "422": {
+
+ "description": "Unprocessable entity\n\nFunctional error\n\nSpecific encapsulated business errors for current operation\n\n - 100: OrderItem with 'add' action but serviceSpecification id missing\n \n - 101: OrderItem with 'change'/'noChange'/'remove' but service id missing\n \n - 102: OrderItem with 'add' action - serviceSpecification id provided but not existing\n \n - 103: OrderItem with 'add' action but service id already existing in the inventory\n \n - 104: A customer for existing service(s) is provided but he did not exist\n \n - 105: OrderItem with 'change'/'noChange'/'remove' - Service id provided but it is not existing in the inventory\n \n - 106: [Not managed for current Relese] Issue with lcpCloudRegionId and tenantId provided\n ",
+ "schema": {
+
+ "$ref": "#/definitions/ErrorRepresentation"
+ }
+ },
+ "500": {
+
+ "description": "Internal Server Error\n\nList of supported error codes:\n- 1: Internal error",
+ "schema": {
+
+ "$ref": "#/definitions/ErrorRepresentation"
+ }
+ },
+ "503": {
+
+ "description": "Service Unavailable\n\nList of supported error codes:\n- 5: The service is temporarily unavailable\n- 6: Orange API is over capacity, retry later !",
+ "schema": {
+
+ "$ref": "#/definitions/ErrorRepresentation"
+ }
+ }
+ }
+ },
+ "get": {
+ "tags": [
+ "ServiceOrder"
+ ],
+ "operationId": "serviceOrderFind",
+ "summary": "List service orders",
+ "description": "Retrieve and list service order entities according to given criteria.\nOnly a predefined set of attribute is proposed.\nAttribute selection could be described in the fields attribute.\n\nSpecific business errors for current operation will be encapsulated in\n\nHTTP Response 422 Unprocessable entity\n",
+ "deprecated": false,
+
+ "parameters": [
+
+ {
+ "name": "externalId",
+ "required": false,
+ "in": "query",
+ "description": "",
+
+ "type": "string"
+ },
+ {
+ "name": "state",
+ "required": false,
+ "in": "query",
+ "description": "state of the order(s) to be retrieved",
+
+ "type": "string"
+ },
+ {
+ "name": "description",
+ "required": false,
+ "in": "query",
+ "description": "",
+
+ "type": "string"
+ },
+ {
+ "name": "orderDate.gt",
+ "required": false,
+ "in": "query",
+ "description": "order date greather than",
+
+ "type": "string"
+ },
+ {
+ "name": "orderDate.lt",
+ "required": false,
+ "in": "query",
+ "description": "order date lower than",
+
+ "type": "string"
+ },
+ {
+ "name": "fields",
+ "required": false,
+ "in": "query",
+ "description": "this attribute could be used to filter retrieved attribute(s) and/or sort SO.",
+
+ "type": "string"
+ },
+ {
+ "name": "offset",
+ "required": false,
+ "in": "query",
+ "description": "The index of the first element to retrieve. Zero is the first element of the collection.",
+
+ "type": "integer",
+ "format": "int32"
+ },
+ {
+ "name": "limit",
+ "required": false,
+ "in": "query",
+ "description": "The maximum number of elements to retrieve (it can be greater than the actual available number of items).",
+
+ "type": "integer",
+ "format": "int32"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "schema": {
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ServiceOrder"
+ }
+ },
+ "headers": {
+ "X-Total-Count": {
+ "description": "",
+ "type": "integer",
+ "format": "int32"
+ },
+ "X-Result-Count": {
+ "description": "",
+ "type": "integer",
+ "format": "int32"
+ }
+ }
+
+ },
+ "400": {
+
+ "description": "Bad Request\n\nList of supported error codes:\n- 20: Invalid URL parameter value\n- 21: Missing body\n- 22: Invalid body\n- 23: Missing body field\n- 24: Invalid body field\n- 25: Missing header\n- 26: Invalid header value\n- 27: Missing query-string parameter\n- 28: Invalid query-string parameter value",
+ "schema": {
+
+ "$ref": "#/definitions/ErrorRepresentation"
+ }
+ },
+ "401": {
+
+ "description": "Unauthorized\n\nList of supported error codes:\n- 40: Missing credentials\n- 41: Invalid credentials\n- 42: Expired credentials",
+ "schema": {
+
+ "$ref": "#/definitions/ErrorRepresentation"
+ }
+ },
+ "403": {
+
+ "description": "Forbidden\n\nList of supported error codes:\n- 50: Access denied\n- 51: Forbidden requester\n- 52: Forbidden user\n- 53: Too many requests",
+ "schema": {
+
+ "$ref": "#/definitions/ErrorRepresentation"
+ }
+ },
+ "404": {
+
+ "description": "Not Found\n\nList of supported error codes:\n- 60: Resource not found",
+ "schema": {
+
+ "$ref": "#/definitions/ErrorRepresentation"
+ }
+ },
+ "422": {
+
+ "description": "Unprocessable entity\n\nFunctional error",
+ "schema": {
+
+ "$ref": "#/definitions/ErrorRepresentation"
+ }
+ },
+ "500": {
+
+ "description": "Internal Server Error\n\nList of supported error codes:\n- 1: Internal error",
+ "schema": {
+
+ "$ref": "#/definitions/ErrorRepresentation"
+ }
+ },
+ "503": {
+
+ "description": "Service Unavailable\n\nList of supported error codes:\n- 5: The service is temporarily unavailable\n- 6: Orange API is over capacity, retry later !",
+ "schema": {
+
+ "$ref": "#/definitions/ErrorRepresentation"
+ }
+ }
+ }
+ }
+ },
+ "/serviceOrder/{id}": {
+ "get": {
+ "tags": [
+ "ServiceOrder"
+ ],
+ "operationId": "serviceOrderGet",
+ "summary": "Retrieve a service order",
+ "description": "This operation retrieves a service order entity. \nAttribute selection is enabled for all first level attributes.\n\nSpecific business errors for current operation will be encapsulated in\n\nHTTP Response 422 Unprocessable entity\n",
+ "deprecated": false,
+
+ "parameters": [
+
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "type": "string",
+ "description": ""
+ },
+ {
+ "name": "fields",
+ "required": false,
+ "in": "query",
+ "description": "Attribute selection",
+
+ "type": "string"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "schema": {
+ "$ref": "#/definitions/ServiceOrder"
+ }
+
+ },
+ "400": {
+
+ "description": "Bad Request\n\nList of supported error codes:\n- 20: Invalid URL parameter value\n- 21: Missing body\n- 22: Invalid body\n- 23: Missing body field\n- 24: Invalid body field\n- 25: Missing header\n- 26: Invalid header value\n- 27: Missing query-string parameter\n- 28: Invalid query-string parameter value",
+ "schema": {
+
+ "$ref": "#/definitions/ErrorRepresentation"
+ }
+ },
+ "401": {
+
+ "description": "Unauthorized\n\nList of supported error codes:\n- 40: Missing credentials\n- 41: Invalid credentials\n- 42: Expired credentials",
+ "schema": {
+
+ "$ref": "#/definitions/ErrorRepresentation"
+ }
+ },
+ "403": {
+
+ "description": "Forbidden\n\nList of supported error codes:\n- 50: Access denied\n- 51: Forbidden requester\n- 52: Forbidden user\n- 53: Too many requests",
+ "schema": {
+
+ "$ref": "#/definitions/ErrorRepresentation"
+ }
+ },
+ "404": {
+
+ "description": "Not Found\n\nList of supported error codes:\n- 60: Resource not found",
+ "schema": {
+
+ "$ref": "#/definitions/ErrorRepresentation"
+ }
+ },
+ "422": {
+
+ "description": "Unprocessable entity\n\nFunctional error",
+ "schema": {
+
+ "$ref": "#/definitions/ErrorRepresentation"
+ }
+ },
+ "500": {
+
+ "description": "Internal Server Error\n\nList of supported error codes:\n- 1: Internal error",
+ "schema": {
+
+ "$ref": "#/definitions/ErrorRepresentation"
+ }
+ },
+ "503": {
+
+ "description": "Service Unavailable\n\nList of supported error codes:\n- 5: The service is temporarily unavailable\n- 6: Orange API is over capacity, retry later !",
+ "schema": {
+
+ "$ref": "#/definitions/ErrorRepresentation"
+ }
+ }
+ }
+ }
+ }
+ },
+"definitions": {
+
+ "ActionType": {
+ "description": "Action type to be describer on the order item.\nmodify is not managed in Beijing release",
+
+ "type": "string",
+ "enum": [
+ "add",
+ "modify",
+ "delete",
+ "noChange"]
+
+ },
+ "StateType": {
+ "description": "List of possible state for the order and the orderItem.",
+
+ "type": "string",
+ "enum": [
+ "acknowledged",
+ "rejected",
+ "pending",
+ "held",
+ "inProgress",
+ "cancelled",
+ "completed",
+ "failed",
+ "partial"]
+
+ },
+ "RelationshipType": {
+ "description": "Relationship type;\nOnly reliesOn is managed in Beijing release.",
+
+ "type": "string",
+ "enum": [
+ "reliesOn"]
+
+ },
+
+ "ErrorRepresentation": {
+ "description": "Representation of an error.",
+
+
+ "required": [
+
+ "code",
+ "reason"
+ ],
+ "type": "object",
+ "properties": {
+ "code": {
+ "description": "Application related code (as defined in the API or from a common list)",
+ "type": "integer",
+ "format": "int32"
+ },
+ "reason": {
+ "description": "Text that explains the reason for error. This can be shown to a client user.",
+ "type": "string"
+ },
+ "message": {
+ "description": "Text that provide more details and corrective actions related to the error. This can be shown to a client user",
+ "type": "string"
+ },
+ "status": {
+ "description": "http error code extension like 400-2",
+ "type": "string"
+ },
+ "referenceError": {
+ "description": "url pointing to documentation describing the error",
+ "type": "string"
+ },
+ "@type": {
+ "description": "The class type of a REST resource",
+ "type": "string"
+ },
+ "@schemaLocation": {
+ "description": "it provides a link to the schema describing a REST resource",
+ "type": "string"
+ }
+ }
+
+ },
+
+ "ServiceRelationship": {
+ "description": "Linked Services to the one instantiate\nnbi component used this relationship to sort request to ONAP.",
+
+
+ "required": [
+
+ "type",
+ "service"
+ ],
+ "type": "object",
+ "properties": {
+ "type": {
+
+ "$ref": "#/definitions/RelationshipType"
+ },
+ "service": {
+
+ "$ref": "#/definitions/Service"
+ }
+ }
+
+ },
+
+ "ServiceRef": {
+ "description": "Service references",
+
+
+ "required": [
+
+ "id"
+ ],
+ "type": "object",
+ "properties": {
+ "id": {
+ "description": "Unique identifier of the service",
+ "type": "string"
+ },
+ "href": {
+ "description": "Reference of the service",
+ "type": "string"
+ }
+ }
+
+ },
+
+ "ServiceCharacteristic": {
+ "description": "ServiceCharacteristic",
+
+
+ "required": [
+
+ "name"
+ ],
+ "type": "object",
+ "properties": {
+ "name": {
+ "description": "Name of characteristic",
+ "type": "string"
+ },
+ "valueType": {
+ "description": "",
+ "type": "string"
+ },
+ "value": {
+
+ "$ref": "#/definitions/Value"
+ }
+ }
+
+ },
+
+ "RelatedParty": {
+ "description": "A related party defines party which are involved in this order and the role they are playing.\nfor Beijing release:\nWith the current version of APIs used from SO and AAI we need to manage a ‘customer’. This customer concept is confusing with Customer BSS concept. We took the following rules to manage the ‘customer’ information:\no\tIt could be provided through a serviceOrder in the service Order a relatedParty with role ‘ONAPcustomer’ should be provided in the serviceOrder header (we will not consider in this release the party at item level); External API component will check if this customer exists and create it in AAI if not.\no\tIf no relatedParty are provided the service will be affected to ‘generic’ customer (dummy customer) – we assume this ‘generic’ customer always exists.",
+
+
+ "required": [
+
+ "id",
+ "role"
+ ],
+ "type": "object",
+ "properties": {
+ "id": {
+ "description": "Unique identifier of a related party",
+ "type": "string"
+ },
+ "href": {
+ "description": "An hyperlink to the party - not used in Beijnig release",
+ "type": "string"
+ },
+ "role": {
+ "description": "The role of the related party (e.g. Owner, requester, fullfiller etc).\nONLY 'ONAPcustomer' is considered",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the related party",
+ "type": "string"
+ },
+ "@referredType": {
+ "description": "",
+ "type": "string"
+ }
+ }
+
+ },
+
+ "ServiceSpecificationRef": {
+ "description": "The service specification (these attributes are fetched from the catalogue).",
+
+
+ "required": [
+
+ "id"
+ ],
+ "type": "object",
+ "properties": {
+ "id": {
+ "description": "Unique identifier of the service specification\nThis information will be used to retrieve SDC information + mapped to SO ModelNameVersionIdin the request.",
+ "type": "string"
+ },
+ "href": {
+ "description": "Reference of the service specification\nNot used in Beijing release.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the service specification\nNot used in Beijing release",
+ "type": "string"
+ },
+ "version": {
+ "description": "Version of the service Specification\nNot used in Beijing release",
+ "type": "string"
+ },
+ "targetServiceSchema": {
+
+ "$ref": "#/definitions/TargetServiceSchema"
+ },
+ "@type": {
+ "description": "Not used in Beijing release",
+ "type": "string"
+ },
+ "@schemaLocation": {
+ "description": "Not used in Beijing release",
+ "type": "string"
+ },
+ "@baseType": {
+ "description": "Not used in Beijing release",
+ "type": "string"
+ }
+ }
+
+ },
+
+ "Service": {
+ "description": "Service (to be added, modified, deleted) description",
+
+
+ "required": [
+
+ "id"
+ ],
+ "type": "object",
+ "properties": {
+ "id": {
+ "description": "Identifier of a service instance.\nIt must be valued if orderItem action is 'delete' and corresponds to a AAI service.id",
+ "type": "string"
+ },
+ "href": {
+ "description": "Reference to the Service (useful for delete or modify command).\nNot managed in Beijing release.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the service - When orderItem action is 'add' this name will be used in ONAP/SO request as InstaceName.",
+ "type": "string"
+ },
+ "serviceState": {
+ "description": "The lifecycle state of the service requested;\nNot managed in Beijing release.",
+ "type": "string"
+ },
+ "@type": {
+ "description": "To define the service type\nNot managed in Beijing Release",
+ "type": "string"
+ },
+ "@schemaLocation": {
+ "description": "The URL to get the resource schema.\nNot managed in Beijing Release",
+ "type": "string"
+ },
+ "serviceCharacteristic": {
+
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ServiceCharacteristic"
+ }
+ },
+ "serviceRelationship": {
+
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ServiceRelationship"
+ }
+ },
+ "relatedParty": {
+
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/RelatedParty"
+ }
+ },
+ "serviceSpecification": {
+
+ "$ref": "#/definitions/ServiceSpecificationRef"
+ }
+ }
+
+ },
+
+ "OrderItemRelationship": {
+ "description": "Linked order item to the one containing this attribute.\nnbi component used this relationship to sort request to ONAP.",
+
+
+ "required": [
+
+ "type",
+ "id"
+ ],
+ "type": "object",
+ "properties": {
+ "type": {
+
+ "$ref": "#/definitions/RelationshipType"
+ },
+ "id": {
+ "description": "Unique identifier of an order item",
+ "type": "string"
+ }
+ }
+
+ },
+
+ "ServiceOrderItem": {
+ "description": "An identified part of the order. A service order is decomposed into one or more order items.",
+
+
+ "required": [
+
+ "id",
+ "service"
+ ],
+ "type": "object",
+ "properties": {
+ "id": {
+ "description": "Identifier of the line item (generally it is a sequence number 01, 02, 03, …)",
+ "type": "string"
+ },
+ "action": {
+
+ "$ref": "#/definitions/ActionType"
+ },
+ "state": {
+
+ "$ref": "#/definitions/StateType"
+ },
+ "@type": {
+ "description": "Used to extend the order item.\nnot used in Beijing relase",
+ "type": "string"
+ },
+ "@schemaLocation": {
+ "description": "not used in Beijing relase",
+ "type": "string"
+ },
+ "@baseType": {
+ "description": "not used in Beijing relase",
+ "type": "string"
+ },
+ "orderItemRelationship": {
+
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/OrderItemRelationship"
+ }
+ },
+ "service": {
+
+ "$ref": "#/definitions/Service"
+ }
+ }
+
+ },
+
+ "ServiceOrder": {
+ "description": "A Service Order is a type of order which can be used to place an order between a customer and a service provider or between a service provider and a partner and vice versa",
+
+
+ "required": [
+
+ "id"
+ ],
+ "type": "object",
+ "properties": {
+ "id": {
+ "description": "ID created on repository side",
+ "type": "string"
+ },
+ "href": {
+ "description": "Hyperlink to access the order",
+ "type": "string"
+ },
+ "externalId": {
+ "description": "ID given by the consumer and only understandable by him (to facilitate his searches)",
+ "type": "string"
+ },
+ "priority": {
+ "description": "A way that can be used by consumers to prioritize orders in Service Order Management system (from 0 to 4 : 0 is the highest priority, and 4 the lowest)",
+ "type": "string"
+ },
+ "description": {
+ "description": "A free-text description of the service order",
+ "type": "string"
+ },
+ "category": {
+ "description": "Used to categorize the order that can be useful for the OM system (e.g. “broadband”, “TVOption”, ...)",
+ "type": "string"
+ },
+ "state": {
+
+ "$ref": "#/definitions/StateType"
+ },
+ "orderDate": {
+ "description": "",
+ "type": "string",
+ "format": "date-time"
+ },
+ "completionDateTime": {
+ "description": "Date when the order was completed",
+ "type": "string",
+ "format": "date-time"
+ },
+ "requestedStartDate": {
+ "description": "Order start date wished by the requestor",
+ "type": "string",
+ "format": "date-time"
+ },
+ "requestedCompletionDate": {
+ "description": "Requested delivery date from the requestor perspective",
+ "type": "string",
+ "format": "date-time"
+ },
+ "expectedCompletionDate": {
+ "description": "",
+ "type": "string",
+ "format": "date-time"
+ },
+ "startDate": {
+ "description": "Date when the order was started for processing",
+ "type": "string",
+ "format": "date-time"
+ },
+ "@baseType": {
+ "description": "",
+ "type": "string"
+ },
+ "@type": {
+ "description": "",
+ "type": "string"
+ },
+ "@schemaLocation": {
+ "description": "",
+ "type": "string"
+ },
+ "relatedParty": {
+
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/RelatedParty"
+ }
+ },
+ "orderRelationship": {
+
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/OrderRelationship"
+ }
+ },
+ "orderItem": {
+
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/ServiceOrderItem"
+ }
+ }
+ }
+
+ },
+
+ "OrderRelationship": {
+ "description": "Linked order to the one containing this attribute.\nThis relationship is not used to sort ONAP request.",
+
+
+ "required": [
+
+ "id"
+ ],
+ "type": "object",
+ "properties": {
+ "type": {
+ "description": "The type of related order, can be : “dependency” if the order needs to be “not started” until another order item is complete (a service order in this case) or “cross-ref” to keep track of the source order (a productOrder)",
+ "type": "string"
+ },
+ "id": {
+ "description": "The id of the related order",
+ "type": "string"
+ },
+ "href": {
+ "description": "A hyperlink to the related order",
+ "type": "string"
+ },
+ "@referredType": {
+ "description": "Type of the referred order.",
+ "type": "string"
+ }
+ }
+
+ },
+
+ "TargetServiceSchema": {
+ "description": "Target to the schema describing the service spec resource",
+
+
+ "required": [
+
+ "@type",
+ "@schemaLocation"
+ ],
+ "type": "object",
+ "properties": {
+ "@type": {
+ "description": "Indicates the (class) type of resource.",
+ "type": "string"
+ },
+ "@schemaLocation": {
+ "description": "This field provided a link to the schema describing this REST resource.",
+ "type": "string"
+ }
+ }
+
+ },
+
+ "Value": {
+ "description": "Value is a descriptive structure for service characteristic;\nFor Beijing we only manage 'basic' attribute - the serviceCharacteristicValue must be used.",
+
+
+ "type": "object",
+ "properties": {
+ "@type": {
+ "description": "Indicates the (class) type of resource.\nNot used in Beijing Release",
+ "type": "string"
+ },
+ "@schemaLocation": {
+ "description": "This field provided a link to the schema describing this REST resource.\nNot used in Beijing Release",
+ "type": "string"
+ },
+ "serviceCharacteristicValue": {
+ "description": "Value of the characteristic.\nThis attribute must be used in Beijing Release to provide characteristic value.",
+ "type": "string"
+ }
+ }
+
+ },
+
+ "CreateServiceOrderItem": {
+ "description": "This structure is used in the operation POST for a serviceOrder request to describe an item.\nAttribute description is not accurate and should be find in the serviceOrderItem class.",
+
+
+ "required": [
+
+ "id",
+ "service"
+ ],
+ "type": "object",
+ "properties": {
+ "id": {
+ "description": "Identifier of the line item (generally it is a sequence number 01, 02, 03, …)",
+ "type": "string"
+ },
+ "action": {
+
+ "$ref": "#/definitions/ActionType"
+ },
+ "@type": {
+ "description": "Indicates the type of resource.",
+ "type": "string"
+ },
+ "@schemaLocation": {
+ "description": "A link to the schema describing this REST resource",
+ "type": "string"
+ },
+ "@baseType": {
+ "description": "Indicates the base type of the resource.",
+ "type": "string"
+ },
+ "orderItemRelationship": {
+
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/OrderItemRelationship"
+ }
+ },
+ "service": {
+
+ "$ref": "#/definitions/Service"
+ }
+ }
+
+ },
+
+ "CreateServiceOrder": {
+ "description": "This structure is used in the operation POST for a serviceOrder request.\nAttribute description is not accurate and should be find in the serviceOrder class.",
+
+
+ "type": "object",
+ "properties": {
+ "externalId": {
+ "description": "ID given by the consumer and only understandable by him (to facilitate his searches)",
+ "type": "string"
+ },
+ "priority": {
+ "description": "A way that can be used by consumers to prioritize orders in Service Order Management system (from 0 to 4 : 0 is the highest priority, and 4 the lowest)",
+ "type": "string"
+ },
+ "description": {
+ "description": "A free-text description of the service order",
+ "type": "string"
+ },
+ "category": {
+ "description": "Used to categorize the order that can be useful for the OM system (e.g. “broadband”, “TVOption”, ...)",
+ "type": "string"
+ },
+ "requestedStartDate": {
+ "description": "Order start date wished by the requestor",
+ "type": "string",
+ "format": "date-time"
+ },
+ "requestedCompletionDate": {
+ "description": "Requested delivery date from the requestor perspective",
+ "type": "string",
+ "format": "date-time"
+ },
+ "@baseType": {
+ "description": "",
+ "type": "string"
+ },
+ "@type": {
+ "description": "",
+ "type": "string"
+ },
+ "@schemaLocation": {
+ "description": "",
+ "type": "string"
+ },
+ "relatedParty": {
+
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/RelatedParty"
+ }
+ },
+ "orderRelationship": {
+
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/OrderRelationship"
+ }
+ },
+ "orderItem": {
+
+ "type": "array",
+ "items": {
+ "$ref": "#/definitions/CreateServiceOrderItem"
+ }
+ }
+ }
+
+ },
+
+ "Hub": {
+ "description": "An HUB resource is used by client side to subscribe to notification.\nNot managed in the Beijing release.",
+
+
+ "discriminator": "id",
+
+ "required": [
+
+ "callback"
+ ],
+ "type": "object",
+ "properties": {
+ "id": {
+ "description": "",
+ "type": "string"
+ },
+ "query": {
+ "description": "",
+ "type": "string"
+ },
+ "callback": {
+ "description": "",
+ "type": "string"
+ }
+ }
+
+ }
+ }
+}
+ \ No newline at end of file
diff --git a/docs/offeredapis/swaggers/serviceOrder_1_0_0.yaml b/docs/offeredapis/swaggers/serviceOrder_1_0_0.yaml
new file mode 100644
index 0000000..9d26cd3
--- /dev/null
+++ b/docs/offeredapis/swaggers/serviceOrder_1_0_0.yaml
@@ -0,0 +1,768 @@
+swagger: "2.0"
+info:
+ description: "serviceOrder API designed for ONAP Beijing Release.\nThis API is build\
+ \ from TMF open API18.0 (applying TMF Guideline 3.0);\nOnly operations GET (by\
+ \ id and list) and POST are available."
+ version: "1.0.0_inProgress"
+ title: "API ServiceOrder"
+ x-logo:
+ url: "/redoc/logo.png"
+ backgroundColor: "#FFFFFF"
+host: "serverRoot"
+basePath: "/nbi/api/v1"
+schemes:
+- "https"
+consumes:
+- "application/json;charset=utf-8"
+produces:
+- "application/json;charset=utf-8"
+tags:
+- name: "ServiceOrder"
+ description: "A Service Order is a type of order which can be used to describe a\
+ \ group of operations on service – one service order item per service. An action\
+ \ at the level of the service order item describe the operation to be done on\
+ \ a service (add, terminate for example). The service order is triggered from\
+ \ the BSS system in charge of the product order management to ONAP that will manage\
+ \ the service fulfillment."
+paths:
+ /serviceOrder:
+ post:
+ tags:
+ - "ServiceOrder"
+ operationId: "serviceOrderCreate"
+ summary: "Create a service order"
+ description: "This operation creates a service order entity.\nThe TMF Open API\
+ \ specification document provides the list of mandatory and non mandatory\
+ \ attributes when creating a ServiceOrder, including any possible rule conditions\
+ \ and applicable default values.\nPOST should be used without specifying the\
+ \ id and the href, the Service Order Management system is in charge of generating\
+ \ the id + href for the ServiceOrder.\n\nSpecific business errors for current\
+ \ operation will be encapsulated in\n\nHTTP Response 422 Unprocessable entity\n\
+ \n - 100: OrderItem with 'add' action but serviceSpecification id missing\n\
+ \ \n - 101: OrderItem with 'change'/'noChange'/'remove' but service id missing\n\
+ \ \n - 102: OrderItem with 'add' action - serviceSpecification id provided\
+ \ but not existing\n \n - 103: OrderItem with 'add' action but service id\
+ \ already existing in the inventory\n \n - 104: A customer for existing\
+ \ service(s) is provided but he did not exist\n \n - 105: OrderItem with\
+ \ 'change'/'noChange'/'remove' - Service id provided but it is not existing\
+ \ in the inventory\n \n - 106: [Not managed for current Relese] Issue with\
+ \ lcpCloudRegionId and tenantId provided\n "
+ deprecated: false
+ parameters:
+ - name: "serviceOrder"
+ required: true
+ in: "body"
+ description: ""
+ schema:
+ $ref: "#/definitions/CreateServiceOrder"
+ responses:
+ 201:
+ description: "Success"
+ schema:
+ $ref: "#/definitions/CreateServiceOrder"
+ 400:
+ description: "Bad Request\n\nList of supported error codes:\n- 20: Invalid\
+ \ URL parameter value\n- 21: Missing body\n- 22: Invalid body\n- 23: Missing\
+ \ body field\n- 24: Invalid body field\n- 25: Missing header\n- 26: Invalid\
+ \ header value\n- 27: Missing query-string parameter\n- 28: Invalid query-string\
+ \ parameter value"
+ schema:
+ $ref: "#/definitions/ErrorRepresentation"
+ 401:
+ description: "Unauthorized\n\nList of supported error codes:\n- 40: Missing\
+ \ credentials\n- 41: Invalid credentials\n- 42: Expired credentials"
+ schema:
+ $ref: "#/definitions/ErrorRepresentation"
+ 403:
+ description: "Forbidden\n\nList of supported error codes:\n- 50: Access\
+ \ denied\n- 51: Forbidden requester\n- 52: Forbidden user\n- 53: Too many\
+ \ requests"
+ schema:
+ $ref: "#/definitions/ErrorRepresentation"
+ 404:
+ description: "Not Found\n\nList of supported error codes:\n- 60: Resource\
+ \ not found"
+ schema:
+ $ref: "#/definitions/ErrorRepresentation"
+ 422:
+ description: "Unprocessable entity\n\nFunctional error\n\nSpecific encapsulated\
+ \ business errors for current operation\n\n - 100: OrderItem with 'add'\
+ \ action but serviceSpecification id missing\n \n - 101: OrderItem with\
+ \ 'change'/'noChange'/'remove' but service id missing\n \n - 102: OrderItem\
+ \ with 'add' action - serviceSpecification id provided but not existing\n\
+ \ \n - 103: OrderItem with 'add' action but service id already existing\
+ \ in the inventory\n \n - 104: A customer for existing service(s) is\
+ \ provided but he did not exist\n \n - 105: OrderItem with 'change'/'noChange'/'remove'\
+ \ - Service id provided but it is not existing in the inventory\n \n\
+ \ - 106: [Not managed for current Relese] Issue with lcpCloudRegionId\
+ \ and tenantId provided\n "
+ schema:
+ $ref: "#/definitions/ErrorRepresentation"
+ 500:
+ description: "Internal Server Error\n\nList of supported error codes:\n\
+ - 1: Internal error"
+ schema:
+ $ref: "#/definitions/ErrorRepresentation"
+ 503:
+ description: "Service Unavailable\n\nList of supported error codes:\n- 5:\
+ \ The service is temporarily unavailable\n- 6: Orange API is over capacity,\
+ \ retry later !"
+ schema:
+ $ref: "#/definitions/ErrorRepresentation"
+ get:
+ tags:
+ - "ServiceOrder"
+ operationId: "serviceOrderFind"
+ summary: "List service orders"
+ description: "Retrieve and list service order entities according to given criteria.\n\
+ Only a predefined set of attribute is proposed.\nAttribute selection could\
+ \ be described in the fields attribute.\n\nSpecific business errors for current\
+ \ operation will be encapsulated in\n\nHTTP Response 422 Unprocessable entity\n"
+ deprecated: false
+ parameters:
+ - name: "externalId"
+ required: false
+ in: "query"
+ description: ""
+ type: "string"
+ - name: "state"
+ required: false
+ in: "query"
+ description: "state of the order(s) to be retrieved"
+ type: "string"
+ - name: "description"
+ required: false
+ in: "query"
+ description: ""
+ type: "string"
+ - name: "orderDate.gt"
+ required: false
+ in: "query"
+ description: "order date greather than"
+ type: "string"
+ - name: "orderDate.lt"
+ required: false
+ in: "query"
+ description: "order date lower than"
+ type: "string"
+ - name: "fields"
+ required: false
+ in: "query"
+ description: "this attribute could be used to filter retrieved attribute(s)\
+ \ and/or sort SO."
+ type: "string"
+ - name: "offset"
+ required: false
+ in: "query"
+ description: "The index of the first element to retrieve. Zero is the first\
+ \ element of the collection."
+ type: "integer"
+ format: "int32"
+ - name: "limit"
+ required: false
+ in: "query"
+ description: "The maximum number of elements to retrieve (it can be greater\
+ \ than the actual available number of items)."
+ type: "integer"
+ format: "int32"
+ responses:
+ 200:
+ description: "Success"
+ schema:
+ type: "array"
+ items:
+ $ref: "#/definitions/ServiceOrder"
+ headers:
+ X-Total-Count:
+ description: ""
+ type: "integer"
+ format: "int32"
+ X-Result-Count:
+ description: ""
+ type: "integer"
+ format: "int32"
+ 400:
+ description: "Bad Request\n\nList of supported error codes:\n- 20: Invalid\
+ \ URL parameter value\n- 21: Missing body\n- 22: Invalid body\n- 23: Missing\
+ \ body field\n- 24: Invalid body field\n- 25: Missing header\n- 26: Invalid\
+ \ header value\n- 27: Missing query-string parameter\n- 28: Invalid query-string\
+ \ parameter value"
+ schema:
+ $ref: "#/definitions/ErrorRepresentation"
+ 401:
+ description: "Unauthorized\n\nList of supported error codes:\n- 40: Missing\
+ \ credentials\n- 41: Invalid credentials\n- 42: Expired credentials"
+ schema:
+ $ref: "#/definitions/ErrorRepresentation"
+ 403:
+ description: "Forbidden\n\nList of supported error codes:\n- 50: Access\
+ \ denied\n- 51: Forbidden requester\n- 52: Forbidden user\n- 53: Too many\
+ \ requests"
+ schema:
+ $ref: "#/definitions/ErrorRepresentation"
+ 404:
+ description: "Not Found\n\nList of supported error codes:\n- 60: Resource\
+ \ not found"
+ schema:
+ $ref: "#/definitions/ErrorRepresentation"
+ 422:
+ description: "Unprocessable entity\n\nFunctional error"
+ schema:
+ $ref: "#/definitions/ErrorRepresentation"
+ 500:
+ description: "Internal Server Error\n\nList of supported error codes:\n\
+ - 1: Internal error"
+ schema:
+ $ref: "#/definitions/ErrorRepresentation"
+ 503:
+ description: "Service Unavailable\n\nList of supported error codes:\n- 5:\
+ \ The service is temporarily unavailable\n- 6: Orange API is over capacity,\
+ \ retry later !"
+ schema:
+ $ref: "#/definitions/ErrorRepresentation"
+ /serviceOrder/{id}:
+ get:
+ tags:
+ - "ServiceOrder"
+ operationId: "serviceOrderGet"
+ summary: "Retrieve a service order"
+ description: "This operation retrieves a service order entity. \nAttribute selection\
+ \ is enabled for all first level attributes.\n\nSpecific business errors for\
+ \ current operation will be encapsulated in\n\nHTTP Response 422 Unprocessable\
+ \ entity\n"
+ deprecated: false
+ parameters:
+ - name: "id"
+ in: "path"
+ required: true
+ type: "string"
+ description: ""
+ - name: "fields"
+ required: false
+ in: "query"
+ description: "Attribute selection"
+ type: "string"
+ responses:
+ 200:
+ description: "Success"
+ schema:
+ $ref: "#/definitions/ServiceOrder"
+ 400:
+ description: "Bad Request\n\nList of supported error codes:\n- 20: Invalid\
+ \ URL parameter value\n- 21: Missing body\n- 22: Invalid body\n- 23: Missing\
+ \ body field\n- 24: Invalid body field\n- 25: Missing header\n- 26: Invalid\
+ \ header value\n- 27: Missing query-string parameter\n- 28: Invalid query-string\
+ \ parameter value"
+ schema:
+ $ref: "#/definitions/ErrorRepresentation"
+ 401:
+ description: "Unauthorized\n\nList of supported error codes:\n- 40: Missing\
+ \ credentials\n- 41: Invalid credentials\n- 42: Expired credentials"
+ schema:
+ $ref: "#/definitions/ErrorRepresentation"
+ 403:
+ description: "Forbidden\n\nList of supported error codes:\n- 50: Access\
+ \ denied\n- 51: Forbidden requester\n- 52: Forbidden user\n- 53: Too many\
+ \ requests"
+ schema:
+ $ref: "#/definitions/ErrorRepresentation"
+ 404:
+ description: "Not Found\n\nList of supported error codes:\n- 60: Resource\
+ \ not found"
+ schema:
+ $ref: "#/definitions/ErrorRepresentation"
+ 422:
+ description: "Unprocessable entity\n\nFunctional error"
+ schema:
+ $ref: "#/definitions/ErrorRepresentation"
+ 500:
+ description: "Internal Server Error\n\nList of supported error codes:\n\
+ - 1: Internal error"
+ schema:
+ $ref: "#/definitions/ErrorRepresentation"
+ 503:
+ description: "Service Unavailable\n\nList of supported error codes:\n- 5:\
+ \ The service is temporarily unavailable\n- 6: Orange API is over capacity,\
+ \ retry later !"
+ schema:
+ $ref: "#/definitions/ErrorRepresentation"
+definitions:
+ ActionType:
+ description: "Action type to be describer on the order item.\nmodify is not managed\
+ \ in Beijing release"
+ type: "string"
+ enum:
+ - "add"
+ - "modify"
+ - "delete"
+ - "noChange"
+ StateType:
+ description: "List of possible state for the order and the orderItem."
+ type: "string"
+ enum:
+ - "acknowledged"
+ - "rejected"
+ - "pending"
+ - "held"
+ - "inProgress"
+ - "cancelled"
+ - "completed"
+ - "failed"
+ - "partial"
+ RelationshipType:
+ description: "Relationship type;\nOnly reliesOn is managed in Beijing release."
+ type: "string"
+ enum:
+ - "reliesOn"
+ ErrorRepresentation:
+ description: "Representation of an error."
+ required:
+ - "code"
+ - "reason"
+ type: "object"
+ properties:
+ code:
+ description: "Application related code (as defined in the API or from a common\
+ \ list)"
+ type: "integer"
+ format: "int32"
+ reason:
+ description: "Text that explains the reason for error. This can be shown to\
+ \ a client user."
+ type: "string"
+ message:
+ description: "Text that provide more details and corrective actions related\
+ \ to the error. This can be shown to a client user"
+ type: "string"
+ status:
+ description: "http error code extension like 400-2"
+ type: "string"
+ referenceError:
+ description: "url pointing to documentation describing the error"
+ type: "string"
+ '@type':
+ description: "The class type of a REST resource"
+ type: "string"
+ '@schemaLocation':
+ description: "it provides a link to the schema describing a REST resource"
+ type: "string"
+ ServiceRelationship:
+ description: "Linked Services to the one instantiate\nnbi component used this\
+ \ relationship to sort request to ONAP."
+ required:
+ - "type"
+ - "service"
+ type: "object"
+ properties:
+ type:
+ $ref: "#/definitions/RelationshipType"
+ service:
+ $ref: "#/definitions/Service"
+ ServiceRef:
+ description: "Service references"
+ required:
+ - "id"
+ type: "object"
+ properties:
+ id:
+ description: "Unique identifier of the service"
+ type: "string"
+ href:
+ description: "Reference of the service"
+ type: "string"
+ ServiceCharacteristic:
+ description: "ServiceCharacteristic"
+ required:
+ - "name"
+ type: "object"
+ properties:
+ name:
+ description: "Name of characteristic"
+ type: "string"
+ valueType:
+ description: ""
+ type: "string"
+ value:
+ $ref: "#/definitions/Value"
+ RelatedParty:
+ description: "A related party defines party which are involved in this order and\
+ \ the role they are playing.\nfor Beijing release:\nWith the current version\
+ \ of APIs used from SO and AAI we need to manage a ‘customer’. This customer\
+ \ concept is confusing with Customer BSS concept. We took the following rules\
+ \ to manage the ‘customer’ information:\no\tIt could be provided through a serviceOrder\
+ \ in the service Order a relatedParty with role ‘ONAPcustomer’ should be provided\
+ \ in the serviceOrder header (we will not consider in this release the party\
+ \ at item level); External API component will check if this customer exists\
+ \ and create it in AAI if not.\no\tIf no relatedParty are provided the service\
+ \ will be affected to ‘generic’ customer (dummy customer) – we assume this ‘\
+ generic’ customer always exists."
+ required:
+ - "id"
+ - "role"
+ type: "object"
+ properties:
+ id:
+ description: "Unique identifier of a related party"
+ type: "string"
+ href:
+ description: "An hyperlink to the party - not used in Beijnig release"
+ type: "string"
+ role:
+ description: "The role of the related party (e.g. Owner, requester, fullfiller\
+ \ etc).\nONLY 'ONAPcustomer' is considered"
+ type: "string"
+ name:
+ description: "Name of the related party"
+ type: "string"
+ '@referredType':
+ description: ""
+ type: "string"
+ ServiceSpecificationRef:
+ description: "The service specification (these attributes are fetched from the\
+ \ catalogue)."
+ required:
+ - "id"
+ type: "object"
+ properties:
+ id:
+ description: "Unique identifier of the service specification\nThis information\
+ \ will be used to retrieve SDC information + mapped to SO ModelNameVersionIdin\
+ \ the request."
+ type: "string"
+ href:
+ description: "Reference of the service specification\nNot used in Beijing\
+ \ release."
+ type: "string"
+ name:
+ description: "Name of the service specification\nNot used in Beijing release"
+ type: "string"
+ version:
+ description: "Version of the service Specification\nNot used in Beijing release"
+ type: "string"
+ targetServiceSchema:
+ $ref: "#/definitions/TargetServiceSchema"
+ '@type':
+ description: "Not used in Beijing release"
+ type: "string"
+ '@schemaLocation':
+ description: "Not used in Beijing release"
+ type: "string"
+ '@baseType':
+ description: "Not used in Beijing release"
+ type: "string"
+ Service:
+ description: "Service (to be added, modified, deleted) description"
+ required:
+ - "id"
+ type: "object"
+ properties:
+ id:
+ description: "Identifier of a service instance.\nIt must be valued if orderItem\
+ \ action is 'delete' and corresponds to a AAI service.id"
+ type: "string"
+ href:
+ description: "Reference to the Service (useful for delete or modify command).\n\
+ Not managed in Beijing release."
+ type: "string"
+ name:
+ description: "Name of the service - When orderItem action is 'add' this name\
+ \ will be used in ONAP/SO request as InstaceName."
+ type: "string"
+ serviceState:
+ description: "The lifecycle state of the service requested;\nNot managed in\
+ \ Beijing release."
+ type: "string"
+ '@type':
+ description: "To define the service type\nNot managed in Beijing Release"
+ type: "string"
+ '@schemaLocation':
+ description: "The URL to get the resource schema.\nNot managed in Beijing\
+ \ Release"
+ type: "string"
+ serviceCharacteristic:
+ type: "array"
+ items:
+ $ref: "#/definitions/ServiceCharacteristic"
+ serviceRelationship:
+ type: "array"
+ items:
+ $ref: "#/definitions/ServiceRelationship"
+ relatedParty:
+ type: "array"
+ items:
+ $ref: "#/definitions/RelatedParty"
+ serviceSpecification:
+ $ref: "#/definitions/ServiceSpecificationRef"
+ OrderItemRelationship:
+ description: "Linked order item to the one containing this attribute.\nnbi component\
+ \ used this relationship to sort request to ONAP."
+ required:
+ - "type"
+ - "id"
+ type: "object"
+ properties:
+ type:
+ $ref: "#/definitions/RelationshipType"
+ id:
+ description: "Unique identifier of an order item"
+ type: "string"
+ ServiceOrderItem:
+ description: "An identified part of the order. A service order is decomposed into\
+ \ one or more order items."
+ required:
+ - "id"
+ - "service"
+ type: "object"
+ properties:
+ id:
+ description: "Identifier of the line item (generally it is a sequence number\
+ \ 01, 02, 03, …)"
+ type: "string"
+ action:
+ $ref: "#/definitions/ActionType"
+ state:
+ $ref: "#/definitions/StateType"
+ '@type':
+ description: "Used to extend the order item.\nnot used in Beijing relase"
+ type: "string"
+ '@schemaLocation':
+ description: "not used in Beijing relase"
+ type: "string"
+ '@baseType':
+ description: "not used in Beijing relase"
+ type: "string"
+ orderItemRelationship:
+ type: "array"
+ items:
+ $ref: "#/definitions/OrderItemRelationship"
+ service:
+ $ref: "#/definitions/Service"
+ ServiceOrder:
+ description: "A Service Order is a type of order which can be used to place an\
+ \ order between a customer and a service provider or between a service provider\
+ \ and a partner and vice versa"
+ required:
+ - "id"
+ type: "object"
+ properties:
+ id:
+ description: "ID created on repository side"
+ type: "string"
+ href:
+ description: "Hyperlink to access the order"
+ type: "string"
+ externalId:
+ description: "ID given by the consumer and only understandable by him (to\
+ \ facilitate his searches)"
+ type: "string"
+ priority:
+ description: "A way that can be used by consumers to prioritize orders in\
+ \ Service Order Management system (from 0 to 4 : 0 is the highest priority,\
+ \ and 4 the lowest)"
+ type: "string"
+ description:
+ description: "A free-text description of the service order"
+ type: "string"
+ category:
+ description: "Used to categorize the order that can be useful for the OM system\
+ \ (e.g. “broadband”, “TVOption”, ...)"
+ type: "string"
+ state:
+ $ref: "#/definitions/StateType"
+ orderDate:
+ description: ""
+ type: "string"
+ format: "date-time"
+ completionDateTime:
+ description: "Date when the order was completed"
+ type: "string"
+ format: "date-time"
+ requestedStartDate:
+ description: "Order start date wished by the requestor"
+ type: "string"
+ format: "date-time"
+ requestedCompletionDate:
+ description: "Requested delivery date from the requestor perspective"
+ type: "string"
+ format: "date-time"
+ expectedCompletionDate:
+ description: ""
+ type: "string"
+ format: "date-time"
+ startDate:
+ description: "Date when the order was started for processing"
+ type: "string"
+ format: "date-time"
+ '@baseType':
+ description: ""
+ type: "string"
+ '@type':
+ description: ""
+ type: "string"
+ '@schemaLocation':
+ description: ""
+ type: "string"
+ relatedParty:
+ type: "array"
+ items:
+ $ref: "#/definitions/RelatedParty"
+ orderRelationship:
+ type: "array"
+ items:
+ $ref: "#/definitions/OrderRelationship"
+ orderItem:
+ type: "array"
+ items:
+ $ref: "#/definitions/ServiceOrderItem"
+ OrderRelationship:
+ description: "Linked order to the one containing this attribute.\nThis relationship\
+ \ is not used to sort ONAP request."
+ required:
+ - "id"
+ type: "object"
+ properties:
+ type:
+ description: "The type of related order, can be : “dependency” if the order\
+ \ needs to be “not started” until another order item is complete (a service\
+ \ order in this case) or “cross-ref” to keep track of the source order (a\
+ \ productOrder)"
+ type: "string"
+ id:
+ description: "The id of the related order"
+ type: "string"
+ href:
+ description: "A hyperlink to the related order"
+ type: "string"
+ '@referredType':
+ description: "Type of the referred order."
+ type: "string"
+ TargetServiceSchema:
+ description: "Target to the schema describing the service spec resource"
+ required:
+ - "@type"
+ - "@schemaLocation"
+ type: "object"
+ properties:
+ '@type':
+ description: "Indicates the (class) type of resource."
+ type: "string"
+ '@schemaLocation':
+ description: "This field provided a link to the schema describing this REST\
+ \ resource."
+ type: "string"
+ Value:
+ description: "Value is a descriptive structure for service characteristic;\nFor\
+ \ Beijing we only manage 'basic' attribute - the serviceCharacteristicValue\
+ \ must be used."
+ type: "object"
+ properties:
+ '@type':
+ description: "Indicates the (class) type of resource.\nNot used in Beijing\
+ \ Release"
+ type: "string"
+ '@schemaLocation':
+ description: "This field provided a link to the schema describing this REST\
+ \ resource.\nNot used in Beijing Release"
+ type: "string"
+ serviceCharacteristicValue:
+ description: "Value of the characteristic.\nThis attribute must be used in\
+ \ Beijing Release to provide characteristic value."
+ type: "string"
+ CreateServiceOrderItem:
+ description: "This structure is used in the operation POST for a serviceOrder\
+ \ request to describe an item.\nAttribute description is not accurate and should\
+ \ be find in the serviceOrderItem class."
+ required:
+ - "id"
+ - "service"
+ type: "object"
+ properties:
+ id:
+ description: "Identifier of the line item (generally it is a sequence number\
+ \ 01, 02, 03, …)"
+ type: "string"
+ action:
+ $ref: "#/definitions/ActionType"
+ '@type':
+ description: "Indicates the type of resource."
+ type: "string"
+ '@schemaLocation':
+ description: "A link to the schema describing this REST resource"
+ type: "string"
+ '@baseType':
+ description: "Indicates the base type of the resource."
+ type: "string"
+ orderItemRelationship:
+ type: "array"
+ items:
+ $ref: "#/definitions/OrderItemRelationship"
+ service:
+ $ref: "#/definitions/Service"
+ CreateServiceOrder:
+ description: "This structure is used in the operation POST for a serviceOrder\
+ \ request.\nAttribute description is not accurate and should be find in the\
+ \ serviceOrder class."
+ type: "object"
+ properties:
+ externalId:
+ description: "ID given by the consumer and only understandable by him (to\
+ \ facilitate his searches)"
+ type: "string"
+ priority:
+ description: "A way that can be used by consumers to prioritize orders in\
+ \ Service Order Management system (from 0 to 4 : 0 is the highest priority,\
+ \ and 4 the lowest)"
+ type: "string"
+ description:
+ description: "A free-text description of the service order"
+ type: "string"
+ category:
+ description: "Used to categorize the order that can be useful for the OM system\
+ \ (e.g. “broadband”, “TVOption”, ...)"
+ type: "string"
+ requestedStartDate:
+ description: "Order start date wished by the requestor"
+ type: "string"
+ format: "date-time"
+ requestedCompletionDate:
+ description: "Requested delivery date from the requestor perspective"
+ type: "string"
+ format: "date-time"
+ '@baseType':
+ description: ""
+ type: "string"
+ '@type':
+ description: ""
+ type: "string"
+ '@schemaLocation':
+ description: ""
+ type: "string"
+ relatedParty:
+ type: "array"
+ items:
+ $ref: "#/definitions/RelatedParty"
+ orderRelationship:
+ type: "array"
+ items:
+ $ref: "#/definitions/OrderRelationship"
+ orderItem:
+ type: "array"
+ items:
+ $ref: "#/definitions/CreateServiceOrderItem"
+ Hub:
+ description: "An HUB resource is used by client side to subscribe to notification.\n\
+ Not managed in the Beijing release."
+ discriminator: "id"
+ required:
+ - "callback"
+ type: "object"
+ properties:
+ id:
+ description: ""
+ type: "string"
+ query:
+ description: ""
+ type: "string"
+ callback:
+ description: ""
+ type: "string"