{ "info": { "_postman_id": "abdf0dd6-4f97-4965-bd3e-3d320a4c5354", "name": "DRAFT - SOL002 - VNF Indicator interface", "description": "DRAFT - SOL002 - VNF Indicator interface\nThis API allows the EM/VNF to provide information on value changes of VNF related indicators. VNF related indicators are declared in the VNFD.\nIMPORTANT: Please note that this file might be not aligned to the current version of the ETSI Group Specification it refers to and has not been approved by the ETSI NFV ISG. In case of discrepancies the published ETSI Group Specification takes precedence.\nPlease report bugs to https://forge.etsi.org/bugzilla/buglist.cgi?component=Nfv-Openapis\n", "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json" }, "item": [ { "name": "subscriptions", "description": "Folder for subscriptions", "item": [ { "name": "Create a new subscription to VNF indicator change notifications", "event": [ { "listen": "test", "script": { "id": "4fb7cac2-83e4-4a10-b9e0-65ffd3c4ccb2", "type": "text/javascript", "exec": [ "pm.test(\"Status code is 201\", function () {", " pm.response.to.have.status(201);", "});", "", "var res_schema = {\"description\":\"This type represents a subscription related to notifications about VNF indicator value changes. \",\"type\":\"object\",\"required\":[\"callbackUri\",\"id\",\"_links\"],\"properties\":{\"id\":{\"description\":\"An identifier with the intention of being globally unique. \",\"type\":\"string\"},\"filter\":{\"description\":\"This type represents a subscription filter related to notifications about VNF indicator value changes. At a particular nesting level in the filter structure, the following applies: All attributes shall match in order for the filter to match (logical \\\"and\\\" between different filter attributes). If an attribute is an array, the attribute shall match if at least one of the values in the array matches (logical \\\"or\\\" between the values of one filter attribute). \",\"type\":\"object\",\"properties\":{\"vnfInstanceSubscriptionFilter\":{\"description\":\"This type represents subscription filter criteria to match VNF instances. * NOTE 1: The attributes \\\"vnfdIds\\\" and \\\"vnfProductsFromProviders\\\" are alternatives to reference to VNF instances that are based on certain VNFDs in a filter. They should not be used both in the same filter instance, but one alternative should be chosen. * NOTE 2: The attributes \\\"vnfInstanceIds\\\" and \\\"vnfInstanceNames\\\" are alternatives to reference to particular VNF instances in a filter. They should not be used both in the same filter instance, but one alternative should be chosen. \",\"type\":\"object\",\"properties\":{\"vnfdIds\":{\"description\":\"If present, match VNF instances that were created based on a VNFD identified by one of the vnfdId values listed in this attribute. See NOTE 1. \",\"type\":\"array\",\"items\":{\"description\":\"An identifier with the intention of being globally unique. \",\"type\":\"string\"}},\"vnfProductsFromProviders\":{\"description\":\"If present, match VNF instances that belong to VNF products from certain providers. See NOTE 1. \",\"type\":\"array\",\"items\":{\"type\":\"object\",\"required\":[\"vnfProvider\"],\"properties\":{\"vnfProvider\":{\"description\":\"Name of the VNF provider to match. \",\"type\":\"string\"},\"vnfProducts\":{\"description\":\"If present, match VNF instances that belong to VNF products with certain product names, from one particular provider. \",\"type\":\"array\",\"items\":{\"type\":\"object\",\"required\":[\"vnfProductName\"],\"properties\":{\"vnfProductName\":{\"description\":\"Name of the VNF product to match. \",\"type\":\"string\"},\"versions\":{\"description\":\"If present, match VNF instances that belong to VNF products with certain versions and a certain product name, from one particular provider. \",\"type\":\"array\",\"items\":{\"type\":\"object\",\"required\":[\"vnfSoftwareVersions\"],\"properties\":{\"vnfSoftwareVersions\":{\"description\":\"A version. \",\"type\":\"string\"},\"vnfdVersions\":{\"description\":\"If present, match VNF instances that belong to VNF products with certain VNFD versions, a certain software version and a certain product name, from one particular provider. \",\"type\":\"array\",\"items\":{\"description\":\"A version. \",\"type\":\"string\"}}}}}}}}}}},\"vnfInstanceIds\":{\"description\":\"If present, match VNF instances with an instance identifier listed in this attribute. See NOTE 2. \",\"type\":\"array\",\"items\":{\"description\":\"An identifier with the intention of being globally unique. \",\"type\":\"string\"}},\"vnfInstanceNames\":{\"description\":\"If present, match VNF instances with a VNF Instance Name listed in this attribute. See NOTE 2 \",\"type\":\"array\",\"items\":{\"type\":\"string\"}}}},\"indicatorIds\":{\"description\":\"Match particular VNF indicator identifiers. \",\"type\":\"array\",\"items\":{\"description\":\"An identifier that is unique within a VNF descriptor. \",\"type\":\"string\"}}}},\"callbackUri\":{\"description\":\"The URI of the endpoint to send the notification to. \",\"type\":\"string\",\"format\":\"URI\"},\"_links\":{\"description\":\"Links to resources related to this resource. \",\"type\":\"object\",\"required\":[\"self\"],\"properties\":{\"self\":{\"description\":\"This type represents a link to a resource. \",\"type\":\"object\",\"required\":[\"href\"],\"properties\":{\"href\":{\"description\":\"URI of the referenced resource. \",\"type\":\"string\",\"format\":\"url\"}}}}}}};", "", "pm.test('Schema is valid', function() {", " pm.expect(tv4.validate(pm.response.json(), res_schema)).to.be.true;", "});" ] } } ], "request": { "method": "POST", "header": [ { "key": "Accept", "value": "application/json" }, { "key": "Content-Type", "value": "application/json" } ], "body": { "mode": "raw", "raw": "Subscription data." }, "url": { "raw": "{{scheme}}://{{host}}{{port}}/{{uri_prefix}}vnfind/v1/subscriptions", "protocol": "{{scheme}}", "host": [ "{{host}}{{port}}" ], "path": [ "{{uri_prefix}}vnfind", "v1", "subscriptions" ] }, "description": "Create a new subscription" }, "response": [] }, { "name": "Delete a subscription", "event": [ { "listen": "test", "script": { "id": "2b3e9282-20af-482b-ac15-572a97a5c781", "type": "text/javascript", "exec": [ "pm.test(\"Status code is 204\", function () {", " pm.response.to.have.status(204);", "});", "" ] } } ], "request": { "method": "DELETE", "header": [ { "key": "Accept", "value": "application/json" }, { "key": "Content-Type", "value": "application/json" } ], "body": {}, "url": { "raw": "{{scheme}}://{{host}}{{port}}/{{uri_prefix}}vnfind/v1/subscriptions/{{subscriptionId}}", "protocol": "{{scheme}}", "host": [ "{{host}}{{port}}" ], "path": [ "{{uri_prefix}}vnfind", "v1", "subscriptions", "{{subscriptionId}}" ] }, "description": "Terminate an individual subscription." }, "response": [] }, { "name": "Query multiple subscriptions.", "event": [ { "listen": "test", "script": { "id": "3af34b3f-7316-44df-8292-83f6f8af8945", "type": "text/javascript", "exec": [ "pm.test(\"Status code is 200\", function () {", " pm.response.to.have.status(200);", "});", "", "var res_schema = {\"type\":\"array\",\"items\":{\"description\":\"This type represents a subscription related to notifications about VNF indicator value changes. \",\"type\":\"object\",\"required\":[\"callbackUri\",\"id\",\"_links\"],\"properties\":{\"id\":{\"description\":\"An identifier with the intention of being globally unique. \",\"type\":\"string\"},\"filter\":{\"description\":\"This type represents a subscription filter related to notifications about VNF indicator value changes. At a particular nesting level in the filter structure, the following applies: All attributes shall match in order for the filter to match (logical \\\"and\\\" between different filter attributes). If an attribute is an array, the attribute shall match if at least one of the values in the array matches (logical \\\"or\\\" between the values of one filter attribute). \",\"type\":\"object\",\"properties\":{\"vnfInstanceSubscriptionFilter\":{\"description\":\"This type represents subscription filter criteria to match VNF instances. * NOTE 1: The attributes \\\"vnfdIds\\\" and \\\"vnfProductsFromProviders\\\" are alternatives to reference to VNF instances that are based on certain VNFDs in a filter. They should not be used both in the same filter instance, but one alternative should be chosen. * NOTE 2: The attributes \\\"vnfInstanceIds\\\" and \\\"vnfInstanceNames\\\" are alternatives to reference to particular VNF instances in a filter. They should not be used both in the same filter instance, but one alternative should be chosen. \",\"type\":\"object\",\"properties\":{\"vnfdIds\":{\"description\":\"If present, match VNF instances that were created based on a VNFD identified by one of the vnfdId values listed in this attribute. See NOTE 1. \",\"type\":\"array\",\"items\":{\"description\":\"An identifier with the intention of being globally unique. \",\"type\":\"string\"}},\"vnfProductsFromProviders\":{\"description\":\"If present, match VNF instances that belong to VNF products from certain providers. See NOTE 1. \",\"type\":\"array\",\"items\":{\"type\":\"object\",\"required\":[\"vnfProvider\"],\"properties\":{\"vnfProvider\":{\"description\":\"Name of the VNF provider to match. \",\"type\":\"string\"},\"vnfProducts\":{\"description\":\"If present, match VNF instances that belong to VNF products with certain product names, from one particular provider. \",\"type\":\"array\",\"items\":{\"type\":\"object\",\"required\":[\"vnfProductName\"],\"properties\":{\"vnfProductName\":{\"description\":\"Name of the VNF product to match. \",\"type\":\"string\"},\"versions\":{\"description\":\"If present, match VNF instances that belong to VNF products with certain versions and a certain product name, from one particular provider. \",\"type\":\"array\",\"items\":{\"type\":\"object\",\"required\":[\"vnfSoftwareVersions\"],\"properties\":{\"vnfSoftwareVersions\":{\"description\":\"A version. \",\"type\":\"string\"},\"vnfdVersions\":{\"description\":\"If present, match VNF instances that belong to VNF products with certain VNFD versions, a certain software version and a certain product name, from one particular provider. \",\"type\":\"array\",\"items\":{\"description\":\"A version. \",\"type\":\"string\"}}}}}}}}}}},\"vnfInstanceIds\":{\"description\":\"If present, match VNF instances with an instance identifier listed in this attribute. See NOTE 2. \",\"type\":\"array\",\"items\":{\"description\":\"An identifier with the intention of being globally unique. \",\"type\":\"string\"}},\"vnfInstanceNames\":{\"description\":\"If present, match VNF instances with a VNF Instance Name listed in this attribute. See NOTE 2 \",\"type\":\"array\",\"items\":{\"type\":\"string\"}}}},\"indicatorIds\":{\"description\":\"Match particular VNF indicator identifiers. \",\"type\":\"array\",\"items\":{\"description\":\"An identifier that is unique within a VNF descriptor. \",\"type\":\"string\"}}}},\"callbackUri\":{\"description\":\"The URI of the endpoint to send the notification to. \",\"type\":\"string\",\"format\":\"URI\"},\"_links\":{\"description\":\"Links to resources related to this resource. \",\"type\":\"object\",\"required\":[\"self\"],\"properties\":{\"self\":{\"description\":\"This type represents a link to a resource. \",\"type\":\"object\",\"required\":[\"href\"],\"properties\":{\"href\":{\"description\":\"URI of the referenced resource. \",\"type\":\"string\",\"format\":\"url\"}}}}}}}};", "", "pm.test('Schema is valid', function() {", " pm.expect(tv4.validate(pm.response.json(), res_schema)).to.be.true;", "});", "" ] } } ], "request": { "method": "GET", "header": [ { "key": "Accept", "value": "application/json" }, { "key": "Content-Type", "value": "application/json" } ], "body": {}, "url": { "raw": "{{scheme}}://{{host}}{{port}}/{{uri_prefix}}vnfind/v1/subscriptions", "protocol": "{{scheme}}", "host": [ "{{host}}{{port}}" ], "path": [ "{{uri_prefix}}vnfind", "v1", "subscriptions" ] }, "description": "Service Unavailable\nThe GET method queries the list of active subscriptions of the functional block that invokes the method. It can be used e.g. for resynchronization after error situations.\n" }, "response": [] }, { "name": "Read an individual subscription.", "event": [ { "listen": "test", "script": { "id": "c02efd2c-8f56-4f67-a38f-623719ad0414", "type": "text/javascript", "exec": [ "pm.test(\"Status code is 200\", function () {", " pm.response.to.have.status(200);", "});", "", "var res_schema = {\"description\":\"This type represents a subscription related to notifications about VNF indicator value changes. \",\"type\":\"object\",\"required\":[\"callbackUri\",\"id\",\"_links\"],\"properties\":{\"id\":{\"description\":\"An identifier with the intention of being globally unique. \",\"type\":\"string\"},\"filter\":{\"description\":\"This type represents a subscription filter related to notifications about VNF indicator value changes. At a particular nesting level in the filter structure, the following applies: All attributes shall match in order for the filter to match (logical \\\"and\\\" between different filter attributes). If an attribute is an array, the attribute shall match if at least one of the values in the array matches (logical \\\"or\\\" between the values of one filter attribute). \",\"type\":\"object\",\"properties\":{\"vnfInstanceSubscriptionFilter\":{\"description\":\"This type represents subscription filter criteria to match VNF instances. * NOTE 1: The attributes \\\"vnfdIds\\\" and \\\"vnfProductsFromProviders\\\" are alternatives to reference to VNF instances that are based on certain VNFDs in a filter. They should not be used both in the same filter instance, but one alternative should be chosen. * NOTE 2: The attributes \\\"vnfInstanceIds\\\" and \\\"vnfInstanceNames\\\" are alternatives to reference to particular VNF instances in a filter. They should not be used both in the same filter instance, but one alternative should be chosen. \",\"type\":\"object\",\"properties\":{\"vnfdIds\":{\"description\":\"If present, match VNF instances that were created based on a VNFD identified by one of the vnfdId values listed in this attribute. See NOTE 1. \",\"type\":\"array\",\"items\":{\"description\":\"An identifier with the intention of being globally unique. \",\"type\":\"string\"}},\"vnfProductsFromProviders\":{\"description\":\"If present, match VNF instances that belong to VNF products from certain providers. See NOTE 1. \",\"type\":\"array\",\"items\":{\"type\":\"object\",\"required\":[\"vnfProvider\"],\"properties\":{\"vnfProvider\":{\"description\":\"Name of the VNF provider to match. \",\"type\":\"string\"},\"vnfProducts\":{\"description\":\"If present, match VNF instances that belong to VNF products with certain product names, from one particular provider. \",\"type\":\"array\",\"items\":{\"type\":\"object\",\"required\":[\"vnfProductName\"],\"properties\":{\"vnfProductName\":{\"description\":\"Name of the VNF product to match. \",\"type\":\"string\"},\"versions\":{\"description\":\"If present, match VNF instances that belong to VNF products with certain versions and a certain product name, from one particular provider. \",\"type\":\"array\",\"items\":{\"type\":\"object\",\"required\":[\"vnfSoftwareVersions\"],\"properties\":{\"vnfSoftwareVersions\":{\"description\":\"A version. \",\"type\":\"string\"},\"vnfdVersions\":{\"description\":\"If present, match VNF instances that belong to VNF products with certain VNFD versions, a certain software version and a certain product name, from one particular provider. \",\"type\":\"array\",\"items\":{\"description\":\"A version. \",\"type\":\"string\"}}}}}}}}}}},\"vnfInstanceIds\":{\"description\":\"If present, match VNF instances with an instance identifier listed in this attribute. See NOTE 2. \",\"type\":\"array\",\"items\":{\"description\":\"An identifier with the intention of being globally unique. \",\"type\":\"string\"}},\"vnfInstanceNames\":{\"description\":\"If present, match VNF instances with a VNF Instance Name listed in this attribute. See NOTE 2 \",\"type\":\"array\",\"items\":{\"type\":\"string\"}}}},\"indicatorIds\":{\"description\":\"Match particular VNF indicator identifiers. \",\"type\":\"array\",\"items\":{\"description\":\"An identifier that is unique within a VNF descriptor. \",\"type\":\"string\"}}}},\"callbackUri\":{\"description\":\"The URI of the endpoint to send the notification to. \",\"type\":\"string\",\"format\":\"URI\"},\"_links\":{\"description\":\"Links to resources related to this resource. \",\"type\":\"object\",\"required\":[\"self\"],\"properties\":{\"self\":{\"description\":\"This type represents a link to a resource. \",\"type\":\"object\",\"required\":[\"href\"],\"properties\":{\"href\":{\"description\":\"URI of the referenced resource. \",\"type\":\"string\",\"format\":\"url\"}}}}}}};", "", "pm.test('Schema is valid', function() {", " pm.expect(tv4.validate(pm.response.json(), res_schema)).to.be.true;", "});", "" ] } } ], "request": { "method": "GET", "header": [ { "key": "Accept", "value": "application/json" }, { "key": "Content-Type", "value": "application/json" } ], "body": {}, "url": { "raw": "{{scheme}}://{{host}}{{port}}/{{uri_prefix}}vnfind/v1/subscriptions/{{subscriptionId}}", "protocol": "{{scheme}}", "host": [ "{{host}}{{port}}" ], "path": [ "{{uri_prefix}}vnfind", "v1", "subscriptions", "{{subscriptionId}}" ] }, "description": "Service Unavailable\nThis resource represents an individual subscription. The client can use this resource to read and to terminate a subscription to notifications related to VNF indicator value changes.\n" }, "response": [] } ] }, { "name": "indicators", "description": "Folder for indicators", "item": [ { "name": "Read an inidividual VNF indicator.", "event": [ { "listen": "test", "script": { "id": "d8cb144c-c753-493d-b411-ba47446c5a9a", "type": "text/javascript", "exec": [ "pm.test(\"Status code is 200\", function () {", " pm.response.to.have.status(200);", "});", "", "var res_schema = {\"type\":\"object\",\"required\":[\"id\",\"value\",\"vnfInstanceId\",\"_links\"],\"properties\":{\"id\":{\"description\":\"An identifier that is unique within a VNF descriptor. \",\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"value\":{\"type\":\"object\"},\"vnfInstanceId\":{\"description\":\"An identifier with the intention of being globally unique. \",\"type\":\"string\"},\"_links\":{\"description\":\"Links to resources related to this resource. \",\"type\":\"object\",\"required\":[\"self\"],\"properties\":{\"self\":{\"description\":\"This type represents a link to a resource. \",\"type\":\"object\",\"required\":[\"href\"],\"properties\":{\"href\":{\"description\":\"URI of the referenced resource. \",\"type\":\"string\",\"format\":\"url\"}}},\"vnfInstance\":{\"description\":\"This type represents a link to a resource. \",\"type\":\"object\",\"required\":[\"href\"],\"properties\":{\"href\":{\"description\":\"URI of the referenced resource. \",\"type\":\"string\",\"format\":\"url\"}}}}}}};", "", "pm.test('Schema is valid', function() {", " pm.expect(tv4.validate(pm.response.json(), res_schema)).to.be.true;", "});" ] } } ], "request": { "method": "GET", "header": [ { "key": "Accept", "value": "application/json" }, { "key": "Content-Type", "value": "application/json" } ], "body": {}, "url": { "raw": "{{scheme}}://{{host}}{{port}}/{{uri_prefix}}vnfind/v1/indicators/{{vnfInstanceId}}/{{indicatorId}}", "protocol": "{{scheme}}", "host": [ "{{host}}{{port}}" ], "path": [ "{{uri_prefix}}vnfind", "v1", "indicators", "{{vnfInstanceId}}", "{{indicatorId}}" ] }, "description": "The GET method reads an individual VNF indicator.\nNOTE: This identifier can be retrieved from the resource referenced by the \"Location\" HTTP header in the response to a POST request creating a new VNF instance resource. It can also be retrieved from the \"id\" attribute in the payload body of that response.\n" }, "response": [] }, { "name": "Query multiple indicators related to a VNF instance.", "event": [ { "listen": "test", "script": { "id": "172d98f7-02f8-473c-978b-371ca4722501", "type": "text/javascript", "exec": [ "pm.test(\"Status code is 200\", function () {", " pm.response.to.have.status(200);", "});", "", "var res_schema = {\"type\":\"array\",\"items\":{\"type\":\"object\",\"required\":[\"id\",\"value\",\"vnfInstanceId\",\"_links\"],\"properties\":{\"id\":{\"description\":\"An identifier that is unique within a VNF descriptor. \",\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"value\":{\"type\":\"object\"},\"vnfInstanceId\":{\"description\":\"An identifier with the intention of being globally unique. \",\"type\":\"string\"},\"_links\":{\"description\":\"Links to resources related to this resource. \",\"type\":\"object\",\"required\":[\"self\"],\"properties\":{\"self\":{\"description\":\"This type represents a link to a resource. \",\"type\":\"object\",\"required\":[\"href\"],\"properties\":{\"href\":{\"description\":\"URI of the referenced resource. \",\"type\":\"string\",\"format\":\"url\"}}},\"vnfInstance\":{\"description\":\"This type represents a link to a resource. \",\"type\":\"object\",\"required\":[\"href\"],\"properties\":{\"href\":{\"description\":\"URI of the referenced resource. \",\"type\":\"string\",\"format\":\"url\"}}}}}}}};", "", "pm.test('Schema is valid', function() {", " pm.expect(tv4.validate(pm.response.json(), res_schema)).to.be.true;", "});" ] } } ], "request": { "method": "GET", "header": [ { "key": "Accept", "value": "application/json" }, { "key": "Content-Type", "value": "application/json" } ], "body": {}, "url": { "raw": "{{scheme}}://{{host}}{{port}}/{{uri_prefix}}vnfind/v1/indicators/{{vnfInstanceId}}", "protocol": "{{scheme}}", "host": [ "{{host}}{{port}}" ], "path": [ "{{uri_prefix}}vnfind", "v1", "indicators", "{{vnfInstanceId}}" ] }, "description": "Get a list of indicators related to a specific VNF instance. Support of attribute based filtering via query parameters.\n" }, "response": [] }, { "name": "Query multiple indicators", "event": [ { "listen": "test", "script": { "id": "0faf5c48-ecf2-48c3-90f4-b992c7f05aa7", "type": "text/javascript", "exec": [ "pm.test(\"Status code is 200\", function () {", " pm.response.to.have.status(200);", "});", "", "var res_schema = {\"type\":\"array\",\"items\":{\"type\":\"object\",\"required\":[\"id\",\"value\",\"vnfInstanceId\",\"_links\"],\"properties\":{\"id\":{\"description\":\"An identifier that is unique within a VNF descriptor. \",\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"value\":{\"type\":\"object\"},\"vnfInstanceId\":{\"description\":\"An identifier with the intention of being globally unique. \",\"type\":\"string\"},\"_links\":{\"description\":\"Links to resources related to this resource. \",\"type\":\"object\",\"required\":[\"self\"],\"properties\":{\"self\":{\"description\":\"This type represents a link to a resource. \",\"type\":\"object\",\"required\":[\"href\"],\"properties\":{\"href\":{\"description\":\"URI of the referenced resource. \",\"type\":\"string\",\"format\":\"url\"}}},\"vnfInstance\":{\"description\":\"This type represents a link to a resource. \",\"type\":\"object\",\"required\":[\"href\"],\"properties\":{\"href\":{\"description\":\"URI of the referenced resource. \",\"type\":\"string\",\"format\":\"url\"}}}}}}}};", "", "pm.test('Schema is valid', function() {", " pm.expect(tv4.validate(pm.response.json(), res_schema)).to.be.true;", "});" ] } } ], "request": { "method": "GET", "header": [ { "key": "Accept", "value": "application/json" }, { "key": "Content-Type", "value": "application/json" } ], "body": {}, "url": { "raw": "{{scheme}}://{{host}}{{port}}/{{uri_prefix}}vnfind/v1/indicators", "protocol": "{{scheme}}", "host": [ "{{host}}{{port}}" ], "path": [ "{{uri_prefix}}vnfind", "v1", "indicators" ] }, "description": "The GET method queries multiple VNF indicators." }, "response": [] } ] } ] }