ExtAPI Service Catalog Working Space
Derrived from: SDC API
Get List of Existing Catalog Assets per Type
Get List of Existing Catalog Assets per Type https://{serverRoot}/sdc/v1/catalog/{assetType} the list can also be filtered with one or more criterias using query params (when specifying several criterias, a logical ‘AND’ will be added between them) : https://{serverRoot}/sdc/v1/catalog/{assetType}?{filterKey}={filterValue} | |||
TAG NAME | FORMAT | VALUES (E=enumerated value; D=default value) | Description |
serverRoot | string | Server base URL : hostname+port+base path Hostname shall contain the FQDN of the SDC iDNS LB | |
assetType | string | The requested asset type. Valid values are: resources / services | |
filterKey | string | The filter keys supported are: resourceType (only for resources), category, subCategory and distributionStatus | |
filterValue | string | The value to be set on the filter. The format of the value must be as described in the metadata object structure below. Note that only exact match is supported The filterValue must be url encoded |
Response Header
Header Name | Mandatory? | Description |
Content-Length | Y | Streamed CSAR payload size |
Content-Type | Y | Determines the format of the response body. Valid value is : “application/json” |
Response Body
services – array of service metadata objects [0 … unbounded]
Parameter Name | Parameter Type | Mandatory? | Description |
uuid | String | Y | Global Asset Version Identifier: UUID generated by SDC per each version of the asset. Generated UUID is compliant with RFC 4122. It is a 128-bit value formatted into blocks of hexadecimal digits separated by a hyphen (“-“). Ex.: AA97B177-9383-4934-8543-0F91A7A02836 |
invariantUUID | String | Y | Global Asset Identifier: UUID generated by SDC per each asset. This UUID is stays constant along all the asset’s versions Generated UUID is compliant with RFC 4122. It is a 128-bit value formatted into blocks of hexadecimal digits separated by a hyphen (“-“). Ex.: AA97B177-9383-4934-8543-0F91A7A02836 |
name | String | Y | The name of the asset. Ex. “vMME” |
version | String | Y | The asset version in SDC catalog. Two dot (“.”) separated digit blocks. The minor version of a asset is incremented every time a designer check-out the asset for an update. The major version is incremented every time a tester certifies the asset. Ex. : “2.0” |
toscaModelURL | String | Y | Relative asset’s URL. Should be used in REST GET API to download the asset’s CSAR. The full URL will be in the following format : https://{serverBaseURL}/{toscaModelPath} serverBaseURL - Hostname ( SDC LB FQDN) + optional port toscaModelPath - “toscaModelURL” Ex : https://sdc.att.com/v1/catalog/services/{uuid}/toscaModel |
category | String | Y | Category of the asset. List of Categories at Appendix A Ex. “VoIP Call Control” |
lifecycleState | String | Y | The lifecycle state of the asset. Values are: NOT_CERTIFIED_CHECKOUT NOT_CERTIFIED_CHECKIN READY_FOR_CERTIFICATION CERTIFICATION_IN_PROGRESS CERTIFIED |
lastUpdaterUserId | String | Y | User ID of the SDC designer who was the last to update the asset for this major version. |
distributionStatus | String | Y | Distribution status of the service. Values are: DISTRIBUTION_NOT_APPROVED DISTRIBUTION_APPROVED DISTRIBUTED DISTRIBUTION_REJECTED |
JSON Representation
"uuid": "f60d4d99-167e-4863-858c-98ba354a7110",
"invariantUUID": "5ab25684-8164-49b2-9b5b-a8c3ac386597",
"name": "Service_Demo_Vadtran",
"version": "2.0",
"toscaModelURL": "http://135.21.125.36:8080/asdc/v1/catalog/services/f60d4d99-167e-4863-858c-98ba354a7110/toscaModel",
"category": "Network L1-3",
"lifecycleState": "CERTIFIED",
"lastUpdaterAttUid": "jm0007",
"distributionStatus": "DISTRIBUTED"
},
{
"uuid": "aed12d8a-1325-4234-afc5-6569b216de21",
"invariantUUID": "c70e5a82-14d4-49a5-b22d-130c4936b7e8",
"name": "NFoD",
"version": "0.1",
"toscaModelURL": "http://135.21.125.36:8080/asdc/v1/catalog/services/aed12d8a-1325-4234-afc5-6569b216de21/toscaModel",
"category": "Network L1-3",
"lifecycleState": "NOT_CERTIFIED_CHECKOUT",
"lastUpdaterAttUid": "cs0008",
"distributionStatus": "DISTRIBUTION_NOT_APPROVED"
},
{
"uuid": "2c0a96fe-f39d-45f3-9f7a-cf4bfed2af85",
"invariantUUID": "249e79f1-d31a-4c36-bfa7-97c9e077ff33",
"name": "vSUP Phony Service",
"version": "0.1",
"toscaModelURL": "http://135.21.125.36:8080/asdc/v1/catalog/services/2c0a96fe-f39d-45f3-9f7a-cf4bfed2af85/toscaModel",
"category": "VoIP Call Control",
"lifecycleState": "NOT_CERTIFIED_CHECKOUT",
"lastUpdaterAttUid": "cs0008",
"distributionStatus": "DISTRIBUTION_NOT_APPROVED"
Response Codes
Response code | Service/Policy Exception | Reason /Description |
200 | N/A | ECOMP component is authenticated and list of Catalog Assets Metadata is returned. |
400 | POL5001 | Missing “X-ECOMP-InstanceID” HTTP header |
401 | POL5002 | ECOMP component should authenticate itself and to re-send again HTTP request with its credentials for Basic Authentication |
403 | POL5003 | ECOMP component is not authorized |
405 | POL4050 | Method Not Allowed : Invalid HTTP method type used ( PUT,DELETE,POST will be rejected) |
500 | POL5000 | The GET request failed either due to internal SDC problem. ECOMP Component should continue the attempts to get the needed information. |
Get Specific Asset Detailed Metadata
Get Specific Asset Detailed Metadata In order to receive information (IDs and additional metadata) of the SDC Catalog assets with a specific filter, the requester component has to call RESTful SDC GET API https://{serverRoot}/sdc/v1/catalog/{assetType}/{uuid}/metadata | ||||
TAG NAME | FORMAT | VALUES (E=enumerated value; D=default value) | Description | |
serverRoot | string | Server base URL : hostname+port+base path Hostname shall contain the FQDN of the SDC iDNS LB | ||
assetType | string | The requested asset type. Valid values are: resources / services | ||
uuid | string |
|
Special Request Header
Header Name | Mandatory? | Description |
X-ECOMP-RequestID | N | According to the general ECOMP agreement the "X-ECOMP-RequestID" header with the transaction UUID should be published by ECOMP component calling an exposed by other ECOMP component API in order to make possible the transaction traceability across ECOMP. If it is not sent it will be automatically generated by SDC on request receipt. |
X-ECOMP-InstanceID | Y | For auditing purpose each component calling the SDC API should identify itself by sending its identity ( e.g. Instar name ...) in "X-ECOMP-InstanceID" header . If this header with non-null value is not supplied the HTTP Request will be rejected with '400 Bad Syntax’ response code. |
Accept | N | Determines the format of the body of the response. Valid values are : “application/json” |
Authorization | Y | The username and password are formed into one string as “username: password”. This string is then Base64 encoded to produce the encoded credential which is communicated in the header after the string “Authorization: Basic “. If the Authorization header is missing, then an HTTP “401 Unauthorized” with ‘WWW-Authenticate’ header specifying the type of required client authentication and realm token will be returned. “401” response should trigger the repeated HTTP request sending with “Authorization” header containing the client’s credentials. If “Authorization” header is received , but the client‘s authentication fails ( due to either unknown “username” or invalid “password” ) the “403 Forbidden” response code will be returned |
Response Header
Header Name | Mandatory? | Description |
Content-Length | Y | Streamed CSAR payload size |
Content-Type | Y | Determines the format of the response body. Valid value is : “application/json” |
Response Body
Response body is sent as JSON object (Content-Type: application/json).
The json specifies a resource / service detailed metadata object
Parameter Name | Parameter Type | Mandatory? | Description |
uuid | String | Y | Global Asset Version Identifier: UUID generated by SDC per each version of the asset. Generated UUID is compliant with RFC 4122. It is a 128-bit value formatted into blocks of hexadecimal digits separated by a hyphen (“-“). Ex.: AA97B177-9383-4934-8543-0F91A7A02836 |
invariantUUID | String | Y | Global Asset Identifier: UUID generated by SDC per each asset. This UUID is stays constant along all the asset’s versions Generated UUID is compliant with RFC 4122. It is a 128-bit value formatted into blocks of hexadecimal digits separated by a hyphen (“-“). Ex.: AA97B177-9383-4934-8543-0F91A7A02836 |
name | String | Y | The name of the asset. Ex. “vMME” |
version | String | Y | The asset version in SDC catalog. Two dot (“.”) separated digit blocks. The minor version of a asset is incremented every time a designer check-out the asset for an update. The major version is incremented every time a tester certifies the asset. Ex. : “2.0” |
lastUpdaterUserId | String | Y | User ID of the SDC designer who was the last to update the asset for this major version. |
lastUpdaterFullName | String | Y | Full name of the SDC designer who was the last to update the asset for this major version |
toscaModelURL | String | Y | Relative asset’s URL. Should be used in REST GET API to download the asset’s CSAR. The full URL will be in the following format : https://{serverBaseURL}/{toscaModelPath} serverBaseURL - Hostname ( SDC LB FQDN) + optional port toscaModelPath - “assetURL” Ex : https://sdc.att.com/v1/catalog/services/{uuid}/toscaModel |
category | String | Y | Category of the asset. Ex. “VoIP Call Control |
distributionStatus | String | Y | Distribution status of the service. Values are: DISTRIBUTION_NOT_APPROVED DISTRIBUTION_APPROVED DISTRIBUTED DISTRIBUTION_REJECTED |
lifecycleState | String | Y | The lifecycle state of the asset. Values are: NOT_CERTIFIED_CHECKOUT NOT_CERTIFIED_CHECKIN READY_FOR_CERTIFICATION CERTIFICATION_IN_PROGRESS CERTIFIED |
artifacts | List of artifact metadata objects [1 … unbounded] | Y | List of the asset’s artifacts metadata object |
resources | List of resource instances composing service [1 … unbounded] | Y | Array of resource instance objects. |
Resource Instance Object Structure
Parameter Name | Parameter Type | Mandatory? | Description |
resourceInstanceName | String | Y | Logical Resource Instance Name . Unique Identifier of the instance of the specific resource in the service context. |
resourceName | String | Y | Resource Name |
resourceInvariantUUID | String | Y | The invariant UUID of the resource |
resourceVersion | String | Y | Resource Version .Two dot (“.”) separated digit blocks Ex. : “2.0” |
resoucreType | String { “VF” , “PNF”, “VL” , “CP”} | Y | Resource Type :
|
resourceUUID | String | Y | Global UUID of the resource that specific artifact belongs to. It is generated by SDC per each resource version. Generated UUID is compliant with RFC 4122. It is a 128-bit value formatted into blocks of hexadecimal digits separated by a hyphen (“-“). Ex.: AA97B177-9383-4934-8543-0F91A7A02836 |
artifacts | List of resource instance artifacts [1 … unbounded] | Y | Array of resource instance deployment artifacts. |
Artifact Metadata Object
Parameter Name | Parameter Type | Mandatory? | Description | |
artifactName | String | Y | Artifact File name | |
artifactLabel | String | Y | Identifier of the artifact within the VF / Service. artifactLabel must be unique in the VF / Service context. Format: [a-z0-9] ,Space (‘ ‘) ,Dash (‘-‘) ,Plus (‘+’) characters Note: lower case | |
artifactType | String | Y | Artifact Type. See list of acceptable values in Appendix B | |
artifactGroupType | String | Y | Whether the artifact is informational or deployment. If the artifact is “deployment” artifact, it will be distributed when service is distributed. Valid values: “DEPLOYMENT” / “INFORMATIONAL” | |
artifactURL | String | Y | Relative artifact’s URL. Should be used in REST GET API to download the artifact’s payload. The full artifact URL will be in the following format : https://{serverBaseURL}/{resourcePath} serverBaseURL - Hostname ( SDC LB FQDN) + optional port resourcePath - “artifactURL” Please see 6.4 for the DownloadArtifact URLs Ex : https://sdc.att.com/v1/catalog/resources/{uuid}/artifacts{artifactUUID} | |
artifactDescription | String | Y | Artifact Description. | |
artifactTimeout | Integer | N | Will be populated only if its value is not 0. | |
artifactChecksum | String | Y | Base-64 encoded MD5 checksum of the artifact’s payload. Should be used for data integrity validation when an artifact’s payload is downloaded. | |
artifactUUID | String | Y | Global UUID generated by SDC each time when artifact payload is updated. Generated UUID is compliant with RFC 4122. It is a 128-bit value formatted into blocks of hexadecimal digits separated by a hyphen (“-“). Ex. : AA97B177-9383-4934-8543-0F91A7A02836 | |
artifactVersion | String | Y | Service Version . One digit block ( major version only) . Changed each time when artifact payload is updated. Ex. : “2” | |
generatedFromUUID | String | N | This attribute will be sent only in the case of an artifact generated on basis of other artifact ( e.x. HEAT /HEAT_VOL/HEAT_NET and their HEAT_ENV artifacts) . It will publish the Global UUID of the artifact that the given artifact is generated from . |
JSON Representation
{
"uuid": "7f5e5139-768d-4410-a871-c41430652524",
"invariantUUID": "8bb36d29-d917-45ce-99ab-0dc564a83095",
"name": "Service_vMME",
"version": "1.0",
"category": "Network L1-3",
"lifecycleState": "CERTIFIED",
"lastUpdaterAttUid": "jm0007",
"lastUpdaterFullName": "Joni Mitchell",
"distributionStatus": "DISTRIBUTED",
"toscaModelURL": "https://asdc.att.com/v1/catalog/services/7f5e5139-768d-4410-a871-c41430652524/toscaModel",
"artifacts": [{
"artifactName": "inv_profile.xml",
"artifactType": "MODEL_INVENTORY_PROFILE",
"artifactURL": "/asdc/v1/catalog/services/7f5e5139-768d-4410-a871-c41430652524/artifacts/05db6554-d0ed-4ca4-ba08-3d366cb37ef0",
"artifactChecksum": "MjUwYzlmNTE2NWQyOTFiMTM5ZWJiMDc1NzM3ZDQyYzI\u003d",
"artifactDescription": "Inventory Profile of vMME",
"artifactTimeout": 0,
"artifactUUID": "05db6554-d0ed-4ca4-ba08-3d366cb37ef0",
"artifactVersion": "1"
}],
"resources": [{
"resourceInstanceName": "vMME 1",
"resourceName": "vMME",
"resourceVersion": "1.0",
"resoucreType": "VF",
"resourceUUID": "b020ed1e-4bc7-4fc0-ba7e-cc7af6da7ffc",
"resourceInvariantUUID": "b8643c59-e2c2-4f86-880d-571d4d9d5d22",
"artifacts": [{
"artifactName": "vmme_small.yml",
"artifactType": "HEAT",
"artifactURL": "/asdc/v1/catalog/services/7f5e5139-768d-4410-a871-c41430652524/resourceInstances/vmme1/artifacts/099a6909-290f-4293-a347-736f11b8ff18",
"artifactChecksum": "MjUwYzlmNTE2NWQyOTFiMTM5ZWJiMDc1NzM3ZDQyYzI\u003d",
"artifactDescription": "main HEAT of vMME",
"artifactTimeout": 60,
"artifactUUID": "099a6909-290f-4293-a347-736f11b8ff18",
"artifactVersion": "1"
},
{
"artifactName": "vmme1_modules.json",
"artifactType": "VF_MODULES_METADATA",
"artifactURL": "/asdc/v1/catalog/services/7f5e5139-768d-4410-a871-c41430652524/resourceInstances/vmme1/artifacts/a3e6151f-ac58-466f-b381-f835344c3478",
"artifactChecksum": "ZDNjNGMyZDMwMzY5Nzc1MDczZTEzMjhiMTdiNjE3YTY\u003d",
"artifactDescription": "Auto-generated VF Modules information artifact",
"artifactTimeout": 0,
"artifactUUID": "a3e6151f-ac58-466f-b381-f835344c3478",
"artifactVersion": "1"
},
{
"artifactName": "vmme_small_create_fsb.yml",
"artifactType": "HEAT_VOL",
"artifactURL": "/asdc/v1/catalog/services/7f5e5139-768d-4410-a871-c41430652524/resourceInstances/vmme1/artifacts/b4e7117f-5a0a-4824-8379-930aacc87f62",
"artifactChecksum": "NmMwZmZmODMxZmMwYzM1ZTRlNGFhMWU4N2YyMTEzZDE\u003d",
"artifactDescription": "created from csar",
"artifactTimeout": 60,
"artifactUUID": "b4e7117f-5a0a-4824-8379-930aacc87f62",
"artifactVersion": "1"
},
{
"artifactName": "vmme_small.env",
"artifactType": "HEAT_ENV",
"artifactURL": "/asdc/v1/catalog/services/7f5e5139-768d-4410-a871-c41430652524/resourceInstances/vmme1/artifacts/0db84f21-d298-4a4b-b11e-37b92a734066",
"artifactChecksum": "N2ZlMmY3MzAwNzQ0MjM4MWM1YzgyMDE4MjZjZmMyOWM\u003d",
"artifactDescription": "Auto-generated HEAT Environment deployment artifact",
"artifactTimeout": 0,
"artifactUUID": "0db84f21-d298-4a4b-b11e-37b92a734066",
"artifactVersion": "1",
"generatedFromUUID": "099a6909-290f-4293-a347-736f11b8ff18"
},
{
"artifactName": "vmme_small_create_fsb.env",
"artifactType": "HEAT_ENV",
"artifactURL": "/asdc/v1/catalog/services/7f5e5139-768d-4410-a871-c41430652524/resourceInstances/vmme1/artifacts/e5cca5e9-a777-46ac-8501-9ef22df364c7",
"artifactChecksum": "ZmFjZjQwN2E3Zjc3YzAxZTAwMmZkNzFmZjU2ZGRkZGE\u003d",
"artifactDescription": "Auto-generated HEAT Environment deployment artifact",
"artifactTimeout": 0,
"artifactUUID": "e5cca5e9-a777-46ac-8501-9ef22df364c7",
"artifactVersion": "1",
"generatedFromUUID": "b4e7117f-5a0a-4824-8379-930aacc87f62"
}]
}]
}
Response Codes
Response code | Service/Policy Exception | Reason /Description |
200 | N/A | ECOMP component is authenticated and list of Catalog Assets Metadata is returned. |
400 | POL5001 | Missing “X-ECOMP-InstanceID” HTTP header |
401 | POL5002 | ECOMP component should authenticate itself and to re-send again HTTP request with its credentials for Basic Authentication |
403 | POL5003 | ECOMP component is not authorized |
404 | SVC4063 | Error: Requested '%1' resource was not found. |
405 | POL4050 | Method Not Allowed : Invalid HTTP method type used ( PUT,DELETE,POST will be rejected) |
500 | POL5000 | The GET request failed either due to internal SDC problem. ECOMP Component should continue the attempts to get the needed information. |
Download (CSAR of) Specific Asset
SDC catalog is TOSCA compliant. As such, the Catalog Assets can be described in a TOSCA format.
The TOSCA spec (v 1.0) defines a format called Cloud Service Archive (CSAR) that can be used to package together the asset definitions.
In order to download the CSAR of the asset, the requestor has to call RESTful SDC GET API with the toscaModelURL as published in the metadata query
Download (CSAR of) Specific Asset DC catalog is TOSCA compliant. As such, the Catalog Assets can be described in a TOSCA format. https://{serverRoot}/sdc/v1/catalog/{assetType}/{uuid}/toscaModel The URL should be composed from the relative artifact URL published in the metadata (“toscaModelURL”). In such a case the GET resource URL should be built as follows: https://{serverRoot}/{relativeToscaModelURL} | |||
TAG NAME | FORMAT | VALUES (E=enumerated value; D=default value) | Description |
serverRoot | string | Server base URL : hostname+port+base path Hostname shall contain the FQDN of the SDC iDNS LB | |
relativeToscaModelURL | string | Relative Catalog Asset’s URL published in the metadata object |
Special Request Header
Header Name | Mandatory? | Description |
X-ECOMP-RequestID | N | According to the general ECOMP agreement the "X-ECOMP-RequestID" header with the transaction UUID should be published by ECOMP component calling an exposed by other ECOMP component API in order to make possible the transaction traceability across ECOMP. If it is not sent it will be automatically generated by SDC on request receipt. |
X-ECOMP-InstanceID | Y | For auditing purpose each component calling the SDC API should identify itself by sending its identity ( e.g. Instar name ...) in "X-ECOMP-InstanceID" header . If this header with non-null value is not supplied the HTTP Request will be rejected with '400 Bad Syntax’ response code. |
Accept | N | Determines the format of the body of the response. Valid values are : “application/json” |
Authorization | Y | The username and password are formed into one string as “username: password”. This string is then Base64 encoded to produce the encoded credential which is communicated in the header after the string “Authorization: Basic “. If the Authorization header is missing, then an HTTP “401 Unauthorized” with ‘WWW-Authenticate’ header specifying the type of required client authentication and realm token will be returned. “401” response should trigger the repeated HTTP request sending with “Authorization” header containing the client’s credentials. If “Authorization” header is received , but the client‘s authentication fails ( due to either unknown “username” or invalid “password” ) the “403 Forbidden” response code will be returned |
Response
Header Name | Mandatory? | Description |
Content-Type | Y | Specifies the downloaded payload format as “ arbitrary data in binary format” .Valid value is : application/octet-stream |
Content-Length | Y | Streamed CSAR payload size |
Content-Disposition | Y | Specifies the name of file to store the downloaded CSAR’s payload ( RFC 2183) .Valid value format : “attachement,filename=”{csarName}”” |
Content-MD5
| Y | The value for this header must be the MD5 checksum of the csar provided |
Response Body
The response is a streamed CSAR.
A CSAR zip file is required to contain a TOSCA-Metadata directory, which in turn contains the TOSCA.meta metadata file that provides entry information for a TOSCA orchestrator processing the CSAR file.
The first block of the TOSCA.meta file, contains the Entry-Definition attribute. The value of this attribute is the main file of the asset. All other files packaged in the CSAR are either sub-elements (VFC, CP etc.) definitions or artifacts of the asset.
Example:
TOSCA-Meta-File-Version: 1.0 CSAR-Version: 1.1 Created-By: AT&T Entry-Definitions: Definitions/<asset type>-<asset system name>-template.yml |
The CSAR folders structure:
Folder Name | Mandatory? | Description |
TOSCA-Metadata | Y | This folder contains the TOSCA.meta metadata file which provides the entry information of the CSAR |
Definitions | Y | This folder contains the main TOSCA yaml representation of the asset. The main yaml can be referring to other TOSCA yaml files that should also be in this folder. This folder should also contain the TOSCA yaml of all the types that are used in the main yaml of the asset (capability_type, data_type, node_type etc.)
|
Artifacts | N | This folder contains all deployment artifacts of the asset |
Response Code
Response code | Service/Policy Exception | Reason /Description |
200 | N/A | ECOMP component is authenticated and list of Catalog Assets Metadata is returned. |
400 | POL5001 | Missing “X-ECOMP-InstanceID” HTTP header |
401 | POL5002 | ECOMP component should authenticate itself and to re-send again HTTP request with its credentials for Basic Authentication |
403 | POL5003 | ECOMP component is not authorized |
404 | SVC4063 | Error: Requested '%1' resource was not found. |
405 | POL4050 | Method Not Allowed : Invalid HTTP method type used ( PUT,DELETE,POST will be rejected) |
500 | POL5000 | The GET request failed either due to internal SDC problem. ECOMP Component should continue the attempts to get the needed information. |