Create shared postman collections
Issue-ID: CPS-2054
Signed-off-by: JvD_Ericsson <jeff.van.dam@est.tech>
Change-Id: I0a7e941bc4accfe00edaf7157df5a8ebabadb187
diff --git a/postman-collections/CPS Environment.postman_environment.json b/postman-collections/CPS Environment.postman_environment.json
new file mode 100644
index 0000000..84dcb64
--- /dev/null
+++ b/postman-collections/CPS Environment.postman_environment.json
@@ -0,0 +1,45 @@
+{
+ "id": "e8e90dd2-20be-49be-813f-07db44c6a4c2",
+ "name": "CPS Environment",
+ "values": [
+ {
+ "key": "CPS_HOST",
+ "value": "localhost",
+ "type": "default",
+ "enabled": true
+ },
+ {
+ "key": "CPS_PORT",
+ "value": "8883",
+ "type": "default",
+ "enabled": true
+ },
+ {
+ "key": "DMI_HOST",
+ "value": "localhost",
+ "type": "default",
+ "enabled": true
+ },
+ {
+ "key": "DMI_PORT",
+ "value": "8784",
+ "type": "default",
+ "enabled": true
+ },
+ {
+ "key": "SDNC_HOST",
+ "value": "localhost",
+ "type": "default",
+ "enabled": true
+ },
+ {
+ "key": "SDNC_PORT",
+ "value": "8282",
+ "type": "default",
+ "enabled": true
+ }
+ ],
+ "_postman_variable_scope": "environment",
+ "_postman_exported_at": "2024-02-23T13:00:33.537Z",
+ "_postman_exported_using": "Postman/10.23.4"
+}
\ No newline at end of file
diff --git a/postman-collections/CPS-CORE.postman_collection.json b/postman-collections/CPS-CORE.postman_collection.json
new file mode 100644
index 0000000..24717bc
--- /dev/null
+++ b/postman-collections/CPS-CORE.postman_collection.json
@@ -0,0 +1,781 @@
+{
+ "info": {
+ "_postman_id": "e86df76f-6b33-4648-ba66-ea9d3129c052",
+ "name": "CPS-CORE",
+ "description": "A collection of the endpoints in CPS-CORE. This is not an exhaustive collection but captures the main functionality.\n\nTo perform this functionality execute the API calls in order to create a dataspace, schema set (file is provided), anchor, and data node. Then GET the nodes to retrieve the information. The APIs in CPS-ADMIN can be used after initial POST requests.\n\nbookstore-model.yang can be found at cps/postman-collections/bookstore-model.yang",
+ "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json",
+ "_exporter_id": "17907116"
+ },
+ "item": [
+ {
+ "name": "CPS-ADMIN",
+ "item": [
+ {
+ "name": "Get all dataspaces",
+ "request": {
+ "method": "GET",
+ "header": [
+ {
+ "key": "Accept",
+ "value": "application/json"
+ }
+ ],
+ "url": {
+ "raw": "http://{{CPS_HOST}}:{{CPS_PORT}}/cps/api/v2/admin/dataspaces",
+ "protocol": "http",
+ "host": [
+ "{{CPS_HOST}}"
+ ],
+ "port": "{{CPS_PORT}}",
+ "path": [
+ "cps",
+ "api",
+ "v2",
+ "admin",
+ "dataspaces"
+ ]
+ },
+ "description": "Read all dataspaces"
+ },
+ "response": []
+ },
+ {
+ "name": "Get a dataspace",
+ "request": {
+ "method": "GET",
+ "header": [
+ {
+ "key": "Accept",
+ "value": "application/json"
+ }
+ ],
+ "url": {
+ "raw": "http://{{CPS_HOST}}:{{CPS_PORT}}/cps/api/v2/admin/dataspaces/my-store",
+ "protocol": "http",
+ "host": [
+ "{{CPS_HOST}}"
+ ],
+ "port": "{{CPS_PORT}}",
+ "path": [
+ "cps",
+ "api",
+ "v2",
+ "admin",
+ "dataspaces",
+ "my-store"
+ ]
+ },
+ "description": "Read a dataspace given a dataspace name"
+ },
+ "response": []
+ },
+ {
+ "name": "Get anchors",
+ "request": {
+ "method": "GET",
+ "header": [
+ {
+ "key": "Accept",
+ "value": "application/json"
+ }
+ ],
+ "url": {
+ "raw": "http://{{CPS_HOST}}:{{CPS_PORT}}/cps/api/v2/dataspaces/my-store/anchors",
+ "protocol": "http",
+ "host": [
+ "{{CPS_HOST}}"
+ ],
+ "port": "{{CPS_PORT}}",
+ "path": [
+ "cps",
+ "api",
+ "v2",
+ "dataspaces",
+ "my-store",
+ "anchors"
+ ]
+ },
+ "description": "Read all anchors, given a dataspace"
+ },
+ "response": []
+ },
+ {
+ "name": "Get an anchor",
+ "request": {
+ "method": "GET",
+ "header": [
+ {
+ "key": "Accept",
+ "value": "application/json"
+ }
+ ],
+ "url": {
+ "raw": "http://{{CPS_HOST}}:{{CPS_PORT}}/cps/api/v2/dataspaces/my-store/anchors/bookstore-anchor",
+ "protocol": "http",
+ "host": [
+ "{{CPS_HOST}}"
+ ],
+ "port": "{{CPS_PORT}}",
+ "path": [
+ "cps",
+ "api",
+ "v2",
+ "dataspaces",
+ "my-store",
+ "anchors",
+ "bookstore-anchor"
+ ]
+ },
+ "description": "Read all anchors, given a dataspace"
+ },
+ "response": []
+ },
+ {
+ "name": "Get schema sets",
+ "request": {
+ "method": "GET",
+ "header": [
+ {
+ "key": "Accept",
+ "value": "application/json"
+ }
+ ],
+ "url": {
+ "raw": "http://{{CPS_HOST}}:{{CPS_PORT}}/cps/api/v2/dataspaces/my-store/schema-sets",
+ "protocol": "http",
+ "host": [
+ "{{CPS_HOST}}"
+ ],
+ "port": "{{CPS_PORT}}",
+ "path": [
+ "cps",
+ "api",
+ "v2",
+ "dataspaces",
+ "my-store",
+ "schema-sets"
+ ]
+ },
+ "description": "Read all schema sets, given a dataspace"
+ },
+ "response": []
+ },
+ {
+ "name": "Get a schema set",
+ "request": {
+ "method": "GET",
+ "header": [
+ {
+ "key": "Accept",
+ "value": "application/json"
+ }
+ ],
+ "url": {
+ "raw": "http://{{CPS_HOST}}:{{CPS_PORT}}/cps/api/v2/dataspaces/my-store/schema-sets/stores-module",
+ "protocol": "http",
+ "host": [
+ "{{CPS_HOST}}"
+ ],
+ "port": "{{CPS_PORT}}",
+ "path": [
+ "cps",
+ "api",
+ "v2",
+ "dataspaces",
+ "my-store",
+ "schema-sets",
+ "stores-module"
+ ]
+ },
+ "description": "Read a schema set given a schema set name and a dataspace"
+ },
+ "response": []
+ }
+ ],
+ "description": "Some endpoints of CPS-ADMIN not mentioed in the CPS-CORE folder"
+ },
+ {
+ "name": "Create Dataspace",
+ "request": {
+ "method": "POST",
+ "header": [],
+ "url": {
+ "raw": "http://{{CPS_HOST}}:{{CPS_PORT}}/cps/api/v2/dataspaces?dataspace-name=my-store",
+ "protocol": "http",
+ "host": [
+ "{{CPS_HOST}}"
+ ],
+ "port": "{{CPS_PORT}}",
+ "path": [
+ "cps",
+ "api",
+ "v2",
+ "dataspaces"
+ ],
+ "query": [
+ {
+ "key": "dataspace-name",
+ "value": "my-store"
+ }
+ ]
+ }
+ },
+ "response": []
+ },
+ {
+ "name": "Create Schema Set",
+ "request": {
+ "method": "POST",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "multipart/form-data",
+ "type": "text",
+ "disabled": true
+ }
+ ],
+ "body": {
+ "mode": "formdata",
+ "formdata": [
+ {
+ "key": "file",
+ "type": "file",
+ "src": "cps/postman-collections/bookstore.zip"
+ }
+ ]
+ },
+ "url": {
+ "raw": "http://{{CPS_HOST}}:{{CPS_PORT}}/cps/api/v2/dataspaces/my-store/schema-sets?schema-set-name=stores-module",
+ "protocol": "http",
+ "host": [
+ "{{CPS_HOST}}"
+ ],
+ "port": "{{CPS_PORT}}",
+ "path": [
+ "cps",
+ "api",
+ "v2",
+ "dataspaces",
+ "my-store",
+ "schema-sets"
+ ],
+ "query": [
+ {
+ "key": "schema-set-name",
+ "value": "stores-module"
+ }
+ ]
+ },
+ "description": "Make sure in the body there is form data. key = file and value will be the zip/yang file."
+ },
+ "response": []
+ },
+ {
+ "name": "Create Anchor",
+ "request": {
+ "method": "POST",
+ "header": [],
+ "url": {
+ "raw": "http://{{CPS_HOST}}:{{CPS_PORT}}/cps/api/v2/dataspaces/my-store/anchors?schema-set-name=stores-module&anchor-name=bookstore-anchor",
+ "protocol": "http",
+ "host": [
+ "{{CPS_HOST}}"
+ ],
+ "port": "{{CPS_PORT}}",
+ "path": [
+ "cps",
+ "api",
+ "v2",
+ "dataspaces",
+ "my-store",
+ "anchors"
+ ],
+ "query": [
+ {
+ "key": "schema-set-name",
+ "value": "stores-module"
+ },
+ {
+ "key": "anchor-name",
+ "value": "bookstore-anchor"
+ }
+ ]
+ }
+ },
+ "response": []
+ },
+ {
+ "name": "Create DataNodes",
+ "request": {
+ "method": "POST",
+ "header": [],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"bookstore-address\": [\n {\n \"bookstore-name\": \"Easons\",\n \"address\": \"Dublin,Ireland\",\n \"postal-code\": \"D02HA21\"\n }\n ],\n \"bookstore\": {\n \"bookstore-name\": \"Easons\",\n \"premises\": {\n \"addresses\": [\n {\n \"house-number\": 2,\n \"street\": \"Main Street\",\n \"town\": \"Maynooth\",\n \"county\": \"Kildare\"\n },\n {\n \"house-number\": 24,\n \"street\": \"Grafton Street\",\n \"town\": \"Dublin\",\n \"county\": \"Dublin\"\n }\n ]\n },\n \"categories\": [\n {\n \"code\": 1,\n \"name\": \"Children\",\n \"books\": [\n {\n \"title\": \"Matilda\",\n \"lang\": \"English\",\n \"authors\": [\n \"Roald Dahl\"\n ],\n \"editions\": [\n 1988,\n 2000\n ],\n \"price\": 20\n },\n {\n \"title\": \"The Gruffalo\",\n \"lang\": \"English\",\n \"authors\": [\n \"Julia Donaldson\"\n ],\n \"editions\": [\n 1999\n ],\n \"price\": 15\n }\n ]\n },\n {\n \"code\": 2,\n \"name\": \"Thriller\",\n \"books\": [\n {\n \"title\": \"Annihilation\",\n \"lang\": \"English\",\n \"authors\": [\n \"Jeff VanderMeer\"\n ],\n \"editions\": [\n 2014\n ],\n \"price\": 15\n }\n ]\n },\n {\n \"code\": 3,\n \"name\": \"Comedy\",\n \"books\": [\n {\n \"title\": \"Good Omens\",\n \"lang\": \"English\",\n \"authors\": [\n \"Neil Gaiman\",\n \"Terry Pratchett\"\n ],\n \"editions\": [\n 2006\n ],\n \"price\": 13\n },\n {\n \"title\": \"The Colour of Magic\",\n \"lang\": \"English\",\n \"authors\": [\n \"Terry Pratchett\"\n ],\n \"editions\": [\n 1983\n ],\n \"price\": 12\n },\n {\n \"title\": \"The Light Fantastic\",\n \"lang\": \"English\",\n \"authors\": [\n \"Terry Pratchett\"\n ],\n \"editions\": [\n 1986\n ],\n \"price\": 14\n },\n {\n \"title\": \"A Book with No Language\",\n \"lang\": \"\",\n \"authors\": [\n \"Joe Bloggs\"\n ],\n \"editions\": [\n 2023\n ],\n \"price\": 20\n }\n ]\n },\n {\n \"code\": 4,\n \"name\": \"Computing\",\n \"books\": [\n {\n \"title\": \"Debian GNU/Linux\",\n \"lang\": \"German\",\n \"authors\": [\n \"Peter H. Ganten\",\n \"Wulf Alex\"\n ],\n \"editions\": [\n 2007,\n 2013,\n 2021\n ],\n \"price\": 39\n },\n {\n \"title\": \"Logarithm tables\",\n \"lang\": \"N/A\",\n \"authors\": [\n \"Joe Bloggs\"\n ],\n \"editions\": [\n 2009\n ],\n \"price\": 11\n }\n ]\n },\n {\n \"code\": 5,\n \"name\": \"Discount books\",\n \"books\": [\n {\n \"title\": \"Book 1\",\n \"lang\": \"blah\",\n \"authors\": [],\n \"editions\": [],\n \"price\": 1\n },\n {\n \"title\": \"Book 2\",\n \"lang\": \"blah\",\n \"authors\": [],\n \"editions\": [],\n \"price\": 2\n },\n {\n \"title\": \"Book 3\",\n \"lang\": \"blah\",\n \"authors\": [],\n \"editions\": [],\n \"price\": 3\n },\n {\n \"title\": \"Book 4\",\n \"lang\": \"blah\",\n \"authors\": [],\n \"editions\": [],\n \"price\": 4\n },\n {\n \"title\": \"Book 5\",\n \"lang\": \"blah\",\n \"authors\": [],\n \"editions\": [],\n \"price\": 5\n },\n {\n \"title\": \"Book 6\",\n \"lang\": \"blah\",\n \"authors\": [],\n \"editions\": [],\n \"price\": 6\n },\n {\n \"title\": \"Book 7\",\n \"lang\": \"blah\",\n \"authors\": [],\n \"editions\": [],\n \"price\": 7\n },\n {\n \"title\": \"Book 8\",\n \"lang\": \"blah\",\n \"authors\": [],\n \"editions\": [],\n \"price\": 8\n },\n {\n \"title\": \"Book 9\",\n \"lang\": \"blah\",\n \"authors\": [],\n \"editions\": [],\n \"price\": 9\n },\n {\n \"title\": \"Book 10\",\n \"lang\": \"blah\",\n \"authors\": [],\n \"editions\": [],\n \"price\": 10\n }\n ]\n }\n ]\n }\n}",
+ "options": {
+ "raw": {
+ "language": "json"
+ }
+ }
+ },
+ "url": {
+ "raw": "http://{{CPS_HOST}}:{{CPS_PORT}}/cps/api/v2/dataspaces/my-store/anchors/bookstore-anchor/nodes",
+ "protocol": "http",
+ "host": [
+ "{{CPS_HOST}}"
+ ],
+ "port": "{{CPS_PORT}}",
+ "path": [
+ "cps",
+ "api",
+ "v2",
+ "dataspaces",
+ "my-store",
+ "anchors",
+ "bookstore-anchor",
+ "nodes"
+ ]
+ }
+ },
+ "response": []
+ },
+ {
+ "name": "Get Root Node All Descendants",
+ "request": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "http://{{CPS_HOST}}:{{CPS_PORT}}/cps/api/v2/dataspaces/my-store/anchors/bookstore-anchor/node?xpath=/&descendants=all",
+ "protocol": "http",
+ "host": [
+ "{{CPS_HOST}}"
+ ],
+ "port": "{{CPS_PORT}}",
+ "path": [
+ "cps",
+ "api",
+ "v2",
+ "dataspaces",
+ "my-store",
+ "anchors",
+ "bookstore-anchor",
+ "node"
+ ],
+ "query": [
+ {
+ "key": "xpath",
+ "value": "/"
+ },
+ {
+ "key": "descendants",
+ "value": "all"
+ }
+ ]
+ }
+ },
+ "response": []
+ },
+ {
+ "name": "Get Node Staff No Descendants",
+ "request": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "http://{{CPS_HOST}}:{{CPS_PORT}}/cps/api/v2/dataspaces/my-store/anchors/bookstore-anchor/node?xpath=/bookstore/staff&descendants=none",
+ "protocol": "http",
+ "host": [
+ "{{CPS_HOST}}"
+ ],
+ "port": "{{CPS_PORT}}",
+ "path": [
+ "cps",
+ "api",
+ "v2",
+ "dataspaces",
+ "my-store",
+ "anchors",
+ "bookstore-anchor",
+ "node"
+ ],
+ "query": [
+ {
+ "key": "xpath",
+ "value": "/bookstore/staff"
+ },
+ {
+ "key": "descendants",
+ "value": "none"
+ }
+ ]
+ }
+ },
+ "response": []
+ },
+ {
+ "name": "Get Node Inventory All Descendants",
+ "request": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "http://{{CPS_HOST}}:{{CPS_PORT}}/cps/api/v2/dataspaces/my-store/anchors/bookstore-anchor/node?xpath=/bookstore/inventory&descendants=all",
+ "protocol": "http",
+ "host": [
+ "{{CPS_HOST}}"
+ ],
+ "port": "{{CPS_PORT}}",
+ "path": [
+ "cps",
+ "api",
+ "v2",
+ "dataspaces",
+ "my-store",
+ "anchors",
+ "bookstore-anchor",
+ "node"
+ ],
+ "query": [
+ {
+ "key": "xpath",
+ "value": "/bookstore/inventory"
+ },
+ {
+ "key": "descendants",
+ "value": "all"
+ }
+ ]
+ }
+ },
+ "response": []
+ },
+ {
+ "name": "Get Node Inventory Categories Direct Descendants",
+ "request": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "http://{{CPS_HOST}}:{{CPS_PORT}}/cps/api/v2/dataspaces/my-store/anchors/bookstore-anchor/node?xpath=/bookstore/inventory/categories[@code='2']&descendants=direct",
+ "protocol": "http",
+ "host": [
+ "{{CPS_HOST}}"
+ ],
+ "port": "{{CPS_PORT}}",
+ "path": [
+ "cps",
+ "api",
+ "v2",
+ "dataspaces",
+ "my-store",
+ "anchors",
+ "bookstore-anchor",
+ "node"
+ ],
+ "query": [
+ {
+ "key": "xpath",
+ "value": "/bookstore/inventory/categories[@code='2']"
+ },
+ {
+ "key": "descendants",
+ "value": "direct"
+ }
+ ]
+ }
+ },
+ "response": []
+ },
+ {
+ "name": "Query Path Leaf Condition All Descendants",
+ "request": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "http://{{CPS_HOST}}:{{CPS_PORT}}/cps/api/v2/dataspaces/my-store/anchors/bookstore-anchor/nodes/query?cps-path=/bookstore/inventory/categories[@numberOfBooks=1]&descendants=-1",
+ "protocol": "http",
+ "host": [
+ "{{CPS_HOST}}"
+ ],
+ "port": "{{CPS_PORT}}",
+ "path": [
+ "cps",
+ "api",
+ "v2",
+ "dataspaces",
+ "my-store",
+ "anchors",
+ "bookstore-anchor",
+ "nodes",
+ "query"
+ ],
+ "query": [
+ {
+ "key": "cps-path",
+ "value": "/bookstore/inventory/categories[@numberOfBooks=1]"
+ },
+ {
+ "key": "descendants",
+ "value": "-1"
+ }
+ ]
+ }
+ },
+ "response": []
+ },
+ {
+ "name": "Query Path Ancestor No Descendants",
+ "request": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "http://{{CPS_HOST}}:{{CPS_PORT}}/cps/api/v2/dataspaces/my-store/anchors/bookstore-anchor/nodes/query?cps-path=//categories[@code=1]/ancestor::inventory&descendants=0",
+ "protocol": "http",
+ "host": [
+ "{{CPS_HOST}}"
+ ],
+ "port": "{{CPS_PORT}}",
+ "path": [
+ "cps",
+ "api",
+ "v2",
+ "dataspaces",
+ "my-store",
+ "anchors",
+ "bookstore-anchor",
+ "nodes",
+ "query"
+ ],
+ "query": [
+ {
+ "key": "cps-path",
+ "value": "//categories[@code=1]/ancestor::inventory"
+ },
+ {
+ "key": "descendants",
+ "value": "0"
+ }
+ ]
+ }
+ },
+ "response": []
+ },
+ {
+ "name": "Patch Nodes",
+ "request": {
+ "method": "PATCH",
+ "header": [],
+ "body": {
+ "mode": "raw",
+ "raw": "{\r\n \"staff\": {\r\n \"manager\": \"Jane Doe\",\r\n \"members\": [\r\n {\"name\": \"Some Guy\"},\r\n {\"name\": \"Another Person\"}\r\n ]\r\n }\r\n}",
+ "options": {
+ "raw": {
+ "language": "json"
+ }
+ }
+ },
+ "url": {
+ "raw": "http://{{CPS_HOST}}:{{CPS_PORT}}/cps/api/v2/dataspaces/my-store/anchors/bookstore-anchor/nodes?xpath=/bookstore",
+ "protocol": "http",
+ "host": [
+ "{{CPS_HOST}}"
+ ],
+ "port": "{{CPS_PORT}}",
+ "path": [
+ "cps",
+ "api",
+ "v2",
+ "dataspaces",
+ "my-store",
+ "anchors",
+ "bookstore-anchor",
+ "nodes"
+ ],
+ "query": [
+ {
+ "key": "xpath",
+ "value": "/bookstore"
+ }
+ ]
+ }
+ },
+ "response": []
+ },
+ {
+ "name": "Get Node Staff Direct Descendants",
+ "request": {
+ "method": "GET",
+ "header": [],
+ "url": {
+ "raw": "http://{{CPS_HOST}}:{{CPS_PORT}}/cps/api/v2/dataspaces/my-store/anchors/bookstore-anchor/node?xpath=/bookstore/staff&descendants=1",
+ "protocol": "http",
+ "host": [
+ "{{CPS_HOST}}"
+ ],
+ "port": "{{CPS_PORT}}",
+ "path": [
+ "cps",
+ "api",
+ "v2",
+ "dataspaces",
+ "my-store",
+ "anchors",
+ "bookstore-anchor",
+ "node"
+ ],
+ "query": [
+ {
+ "key": "xpath",
+ "value": "/bookstore/staff"
+ },
+ {
+ "key": "descendants",
+ "value": "1"
+ }
+ ]
+ }
+ },
+ "response": []
+ },
+ {
+ "name": "Delete DataNodes",
+ "request": {
+ "method": "DELETE",
+ "header": [],
+ "url": {
+ "raw": "http://{{CPS_HOST}}:{{CPS_PORT}}/cps/api/v2/dataspaces/my-store/anchors/bookstore-anchor/nodes?xpath=/",
+ "protocol": "http",
+ "host": [
+ "{{CPS_HOST}}"
+ ],
+ "port": "{{CPS_PORT}}",
+ "path": [
+ "cps",
+ "api",
+ "v2",
+ "dataspaces",
+ "my-store",
+ "anchors",
+ "bookstore-anchor",
+ "nodes"
+ ],
+ "query": [
+ {
+ "key": "xpath",
+ "value": "/"
+ }
+ ]
+ }
+ },
+ "response": []
+ },
+ {
+ "name": "Delete Anchor",
+ "request": {
+ "method": "DELETE",
+ "header": [],
+ "url": {
+ "raw": "http://{{CPS_HOST}}:{{CPS_PORT}}/cps/api/v2/dataspaces/my-store/anchors/bookstore-anchor",
+ "protocol": "http",
+ "host": [
+ "{{CPS_HOST}}"
+ ],
+ "port": "{{CPS_PORT}}",
+ "path": [
+ "cps",
+ "api",
+ "v2",
+ "dataspaces",
+ "my-store",
+ "anchors",
+ "bookstore-anchor"
+ ]
+ }
+ },
+ "response": []
+ },
+ {
+ "name": "Delete Schema Set",
+ "request": {
+ "method": "DELETE",
+ "header": [
+ {
+ "key": "Content-Type",
+ "value": "multipart/form-data",
+ "type": "text",
+ "disabled": true
+ }
+ ],
+ "body": {
+ "mode": "formdata",
+ "formdata": [
+ {
+ "key": "file",
+ "type": "file",
+ "src": "/home/jeff/Downloads/bookstore-model.yang"
+ }
+ ]
+ },
+ "url": {
+ "raw": "http://{{CPS_HOST}}:{{CPS_PORT}}/cps/api/v2/dataspaces/my-store/schema-sets/stores-module",
+ "protocol": "http",
+ "host": [
+ "{{CPS_HOST}}"
+ ],
+ "port": "{{CPS_PORT}}",
+ "path": [
+ "cps",
+ "api",
+ "v2",
+ "dataspaces",
+ "my-store",
+ "schema-sets",
+ "stores-module"
+ ]
+ },
+ "description": "Make sure in the body there is form data. key = file and value will be the zip/yang file."
+ },
+ "response": []
+ },
+ {
+ "name": "Delete Dataspace",
+ "request": {
+ "method": "DELETE",
+ "header": [],
+ "url": {
+ "raw": "http://{{CPS_HOST}}:{{CPS_PORT}}/cps/api/v2/dataspaces?dataspace-name=my-store",
+ "protocol": "http",
+ "host": [
+ "{{CPS_HOST}}"
+ ],
+ "port": "{{CPS_PORT}}",
+ "path": [
+ "cps",
+ "api",
+ "v2",
+ "dataspaces"
+ ],
+ "query": [
+ {
+ "key": "dataspace-name",
+ "value": "my-store"
+ }
+ ]
+ }
+ },
+ "response": []
+ }
+ ],
+ "auth": {
+ "type": "basic",
+ "basic": [
+ {
+ "key": "password",
+ "value": "cpsr0cks!",
+ "type": "string"
+ },
+ {
+ "key": "username",
+ "value": "cpsuser",
+ "type": "string"
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/postman-collections/DMI Stub.postman_collection.json b/postman-collections/DMI Stub.postman_collection.json
new file mode 100644
index 0000000..fe7250f
--- /dev/null
+++ b/postman-collections/DMI Stub.postman_collection.json
@@ -0,0 +1,161 @@
+{
+ "info": {
+ "_postman_id": "4baf7902-0f1e-49a9-9c6a-f68f412240af",
+ "name": "DMI Stub",
+ "description": "A collection of the DMI Stub endpoints.",
+ "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json",
+ "_exporter_id": "17907116"
+ },
+ "item": [
+ {
+ "name": "Execute a data operation for group of cm handle ids by supplied operation details",
+ "request": {
+ "method": "POST",
+ "header": [],
+ "body": {
+ "mode": "raw",
+ "raw": "{ \"operations\":\n [\n {\n \"resourceIdentifier\": \"some resource identifier\",\n \"datastore\": \"ncmp-datastore:passthrough-operational\",\n \"options\": \"some option\",\n \"operationId\": \"12\",\n \"cmHandles\": [\n {\n \"id\": \"cmHandle123\",\n \"cmHandleProperties\": {\n \"myProp\": \"some value\",\n \"otherProp\": \"other value\"\n }\n },\n {\n \"id\": \"cmHandle123\",\n \"cmHandleProperties\": {\n \"myProp\": \"some value\",\n \"otherProp\": \"other value\"\n }\n }\n ],\n \"operation\": \"read\"\n }\n ]\n}",
+ "options": {
+ "raw": {
+ "language": "json"
+ }
+ }
+ },
+ "url": {
+ "raw": "http://{{DMI_HOST}}:{{DMI_PORT}}/dmi/v1/data?topic=ncmp-async-m2m&requestId=4753fc1f-7de2-449a-b306-a6204b5370b33",
+ "protocol": "http",
+ "host": [
+ "{{DMI_HOST}}"
+ ],
+ "port": "{{DMI_PORT}}",
+ "path": [
+ "dmi",
+ "v1",
+ "data"
+ ],
+ "query": [
+ {
+ "key": "topic",
+ "value": "ncmp-async-m2m"
+ },
+ {
+ "key": "requestId",
+ "value": "4753fc1f-7de2-449a-b306-a6204b5370b33"
+ }
+ ]
+ }
+ },
+ "response": []
+ },
+ {
+ "name": "Retrieve module resources for one or more modules",
+ "request": {
+ "method": "POST",
+ "header": [],
+ "body": {
+ "mode": "raw",
+ "raw": "{}",
+ "options": {
+ "raw": {
+ "language": "json"
+ }
+ }
+ },
+ "url": {
+ "raw": "http://{{DMI_HOST}}:{{DMI_PORT}}/dmi/v1/ch/cm-bookStore/moduleResources",
+ "protocol": "http",
+ "host": [
+ "{{DMI_HOST}}"
+ ],
+ "port": "{{DMI_PORT}}",
+ "path": [
+ "dmi",
+ "v1",
+ "ch",
+ "cm-bookStore",
+ "moduleResources"
+ ]
+ }
+ },
+ "response": []
+ },
+ {
+ "name": "Get all modules for given cm handle",
+ "protocolProfileBehavior": {
+ "disabledSystemHeaders": {
+ "accept": true
+ }
+ },
+ "request": {
+ "method": "POST",
+ "header": [
+ {
+ "key": "Accept",
+ "value": "application/json",
+ "type": "text"
+ }
+ ],
+ "body": {
+ "mode": "raw",
+ "raw": "{}",
+ "options": {
+ "raw": {
+ "language": "json"
+ }
+ }
+ },
+ "url": {
+ "raw": "http://{{DMI_HOST}}:{{DMI_PORT}}/dmi/v1/ch/cm-bookStore/modules",
+ "protocol": "http",
+ "host": [
+ "{{DMI_HOST}}"
+ ],
+ "port": "{{DMI_PORT}}",
+ "path": [
+ "dmi",
+ "v1",
+ "ch",
+ "cm-bookStore",
+ "modules"
+ ]
+ }
+ },
+ "response": []
+ }
+ ],
+ "auth": {
+ "type": "basic",
+ "basic": [
+ {
+ "key": "password",
+ "value": "cpsr0cks!",
+ "type": "string"
+ },
+ {
+ "key": "username",
+ "value": "cpsuser",
+ "type": "string"
+ }
+ ]
+ },
+ "event": [
+ {
+ "listen": "prerequest",
+ "script": {
+ "type": "text/javascript",
+ "exec": [
+ ""
+ ]
+ }
+ },
+ {
+ "listen": "test",
+ "script": {
+ "type": "text/javascript",
+ "exec": [
+ ""
+ ]
+ }
+ }
+ ]
+}
\ No newline at end of file
diff --git a/postman-collections/Data Operational Performance Test.postman_collection.json b/postman-collections/Data Operational Performance Test.postman_collection.json
new file mode 100644
index 0000000..668c541
--- /dev/null
+++ b/postman-collections/Data Operational Performance Test.postman_collection.json
@@ -0,0 +1,339 @@
+{
+ "info": {
+ "_postman_id": "23a07cf3-5e20-48d5-8af3-8aa65c6a681f",
+ "name": "Data Operational Performance Test",
+ "description": "A collection to test performance of registering and getting cmHandles (20000 is the default)",
+ "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json",
+ "_exporter_id": "17907116"
+ },
+ "item": [
+ {
+ "name": "Register CM Handles",
+ "event": [
+ {
+ "listen": "prerequest",
+ "script": {
+ "exec": [
+ "const uuid = require(\"uuid\");",
+ "",
+ "const TOTAL_CMHANDLES = Number(pm.collectionVariables.get(\"TOTAL_CMHANDLES\"));",
+ "",
+ "var cmHandleIds = [];",
+ "var createdCmHandles = []",
+ "",
+ "for (i = 0; i < TOTAL_CMHANDLES; i++) {",
+ " let cmHandleId = uuid.v4().replace(/-/g, \"\");",
+ " cmHandleIds.push(cmHandleId);",
+ " createdCmHandles.push({",
+ " \"cmHandle\": cmHandleId,",
+ " \"cmHandleProperties\": { \"neType\": \"RadioNode\" },",
+ " \"publicCmHandleProperties\": {",
+ " \"Book\": \"Harry Potter\",",
+ " \"Author\": \"JK Rowling\"",
+ " }",
+ " });",
+ "}",
+ "",
+ "pm.collectionVariables.set(\"createdCmHandleIds\", JSON.stringify(cmHandleIds));",
+ "pm.collectionVariables.set(\"createdCmHandles\", JSON.stringify(createdCmHandles));",
+ "pm.collectionVariables.set(\"targetIds\", cmHandleIds);"
+ ],
+ "type": "text/javascript"
+ }
+ },
+ {
+ "listen": "test",
+ "script": {
+ "exec": [
+ "pm.test(\"HTTP Status is 200\", function () {\r",
+ " pm.response.to.be.ok;\r",
+ "});"
+ ],
+ "type": "text/javascript"
+ }
+ }
+ ],
+ "request": {
+ "method": "POST",
+ "header": [],
+ "body": {
+ "mode": "raw",
+ "raw": "{\r\n \"dmiPlugin\": \"http://{{DMI_HOST}}:{{DMI_PORT}}\",\r\n \"createdCmHandles\": {{createdCmHandles}}\r\n}",
+ "options": {
+ "raw": {
+ "language": "json"
+ }
+ }
+ },
+ "url": {
+ "raw": "http://{{CPS_HOST}}:{{CPS_PORT}}/ncmpInventory/v1/ch",
+ "protocol": "http",
+ "host": [
+ "{{CPS_HOST}}"
+ ],
+ "port": "{{CPS_PORT}}",
+ "path": [
+ "ncmpInventory",
+ "v1",
+ "ch"
+ ]
+ }
+ },
+ "response": []
+ },
+ {
+ "name": "Get All Cm Handle IDs",
+ "event": [
+ {
+ "listen": "test",
+ "script": {
+ "exec": [
+ "// Convert the response body to a JSON object\r",
+ "var responseBodyAsJsonArray = JSON.parse(responseBody);\r",
+ "\r",
+ "var cmHandleInReadyState = [];\r",
+ "var cmHandleInNonReadyState = [];\r",
+ "\r",
+ "function countCmHandleStateInReady() {\r",
+ "for(var index = 0; index < responseBodyAsJsonArray.length; index++) {\r",
+ " if(typeof responseBodyAsJsonArray[index].state.cmHandleState !== 'undefined'\r",
+ " && responseBodyAsJsonArray[index].state.cmHandleState == 'READY') {\r",
+ " cmHandleInReadyState.push(responseBodyAsJsonArray[index].state.cmHandleState);\r",
+ " }else{\r",
+ " cmHandleInNonReadyState.push(responseBodyAsJsonArray[index].state.cmHandleState);\r",
+ " }\r",
+ "}\r",
+ "}\r",
+ "\r",
+ "countCmHandleStateInReady();\r",
+ "\r",
+ "pm.collectionVariables.set(\"numberOfCmHandlesInReadyState\", cmHandleInReadyState.length);\r",
+ "pm.collectionVariables.set(\"numberOfCmHandlesInNonReadyState\", cmHandleInNonReadyState.length);\r",
+ "\r",
+ "pm.test(\"HTTP Status is 200 with valid JSON response\", function () {\r",
+ " pm.response.to.be.ok;\r",
+ " pm.response.to.be.withBody;\r",
+ " pm.response.to.be.json;\r",
+ "});\r",
+ "\r",
+ "pm.test(\"20000 cm handles are in Ready state\", function () {\r",
+ " pm.expect(cmHandleInReadyState.length).to.eql(20000);\r",
+ "});\r",
+ ""
+ ],
+ "type": "text/javascript"
+ }
+ }
+ ],
+ "request": {
+ "method": "POST",
+ "header": [],
+ "body": {
+ "mode": "raw",
+ "raw": "{\r\n \"conditions\": [\r\n {\r\n \"name\": \"hasAllModules\"\r\n }\r\n ]\r\n}",
+ "options": {
+ "raw": {
+ "language": "json"
+ }
+ }
+ },
+ "url": {
+ "raw": "http://{{CPS_HOST}}:{{CPS_PORT}}/ncmp/v1/ch/searches",
+ "protocol": "http",
+ "host": [
+ "{{CPS_HOST}}"
+ ],
+ "port": "{{CPS_PORT}}",
+ "path": [
+ "ncmp",
+ "v1",
+ "ch",
+ "searches"
+ ],
+ "query": [
+ {
+ "key": "resourceIdentifier",
+ "value": "stores:bookstore",
+ "disabled": true
+ },
+ {
+ "key": "options",
+ "value": "(fields=schemas/schema/location,depth=5)",
+ "disabled": true
+ }
+ ]
+ }
+ },
+ "response": []
+ },
+ {
+ "name": "ReadResourceDataForCmHandles",
+ "event": [
+ {
+ "listen": "prerequest",
+ "script": {
+ "exec": [
+ "const cmHandleIds = pm.collectionVariables.get(\"targetIds\"); \r",
+ "\r",
+ "var dataOperationRequest = []\r",
+ "var targetIds = [];\r",
+ "\r",
+ "for (index = 0; index < cmHandleIds.length ; index++) {\r",
+ "\r",
+ " targetIds.push(cmHandleIds[index]);\r",
+ " var dataOperationTargetIds = [];\r",
+ " if (targetIds.length == 5){\r",
+ " dataOperationTargetIds = targetIds;\r",
+ " dataOperationRequest.push({\r",
+ " \"operation\": \"read\",\r",
+ " \"operationId\": \"operational-\"+index,\r",
+ " \"datastore\": \"ncmp-datastore:passthrough-running\",\r",
+ " \"resourceIdentifier\": \"parent/child\",\r",
+ " \"targetIds\": dataOperationTargetIds\r",
+ " });\r",
+ "\r",
+ " pm.collectionVariables.unset(\"dataOperationTargetIds\");\r",
+ " // pm.globals.unset(\"variable_key\");\r",
+ " // pm.environment.unset(\"variable_key\");\r",
+ " // pm.collectionVariables.set(\"variable_key\", \"variable_value\");\r",
+ " // pm.sendRequest(\"https://postman-echo.com/get\", function (err, response) {\r",
+ " // console.log(response.json());\r",
+ " // });\r",
+ " // for (index = 0; index < dataOperationTargetIds.length ; index++) {\r",
+ " // targetIds.pop(dataOperationTargetIds[index]);\r",
+ " // }\r",
+ " }\r",
+ "}\r",
+ "\r",
+ " pm.collectionVariables.set(\"dataOperationRequest\", JSON.stringify(dataOperationRequest));"
+ ],
+ "type": "text/javascript"
+ }
+ },
+ {
+ "listen": "test",
+ "script": {
+ "exec": [
+ "pm.test(\"HTTP Status is 200 with valid JSON response\", function () {\r",
+ " pm.response.to.be.ok;\r",
+ " pm.response.to.be.withBody;\r",
+ " pm.response.to.be.json;\r",
+ "});"
+ ],
+ "type": "text/javascript"
+ }
+ }
+ ],
+ "request": {
+ "method": "POST",
+ "header": [
+ {
+ "key": "topic",
+ "value": "client-topic",
+ "type": "default",
+ "disabled": true
+ }
+ ],
+ "body": {
+ "mode": "raw",
+ "raw": "{\r\n \"operations\":\r\n {{dataOperationRequest}}\r\n}",
+ "options": {
+ "raw": {
+ "language": "json"
+ }
+ }
+ },
+ "url": {
+ "raw": "http://{{CPS_HOST}}:{{CPS_PORT}}/ncmp/v1/data?topic=my-client-topic",
+ "protocol": "http",
+ "host": [
+ "{{CPS_HOST}}"
+ ],
+ "port": "{{CPS_PORT}}",
+ "path": [
+ "ncmp",
+ "v1",
+ "data"
+ ],
+ "query": [
+ {
+ "key": "topic",
+ "value": "my-client-topic"
+ }
+ ]
+ }
+ },
+ "response": []
+ }
+ ],
+ "auth": {
+ "type": "basic",
+ "basic": [
+ {
+ "key": "password",
+ "value": "cpsr0cks!",
+ "type": "string"
+ },
+ {
+ "key": "username",
+ "value": "cpsuser",
+ "type": "string"
+ }
+ ]
+ },
+ "event": [
+ {
+ "listen": "prerequest",
+ "script": {
+ "type": "text/javascript",
+ "exec": [
+ ""
+ ]
+ }
+ },
+ {
+ "listen": "test",
+ "script": {
+ "type": "text/javascript",
+ "exec": [
+ ""
+ ]
+ }
+ }
+ ],
+ "variable": [
+ {
+ "key": "createdCmHandleIds",
+ "value": ""
+ },
+ {
+ "key": "createdCmHandles",
+ "value": ""
+ },
+ {
+ "key": "TOTAL_CMHANDLES",
+ "value": "20000",
+ "type": "default"
+ },
+ {
+ "key": "numberOfCmHandlesInReadyState",
+ "value": "",
+ "type": "default"
+ },
+ {
+ "key": "numberOfCmHandlesInNonReadyState",
+ "value": "",
+ "type": "default"
+ },
+ {
+ "key": "dataOperationRequest",
+ "value": "",
+ "type": "default"
+ },
+ {
+ "key": "targetIds",
+ "value": "",
+ "type": "default"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/postman-collections/NCMP Register CmHandle and Query.postman_collection.json b/postman-collections/NCMP Register CmHandle and Query.postman_collection.json
new file mode 100644
index 0000000..fb14287
--- /dev/null
+++ b/postman-collections/NCMP Register CmHandle and Query.postman_collection.json
@@ -0,0 +1,649 @@
+{
+ "info": {
+ "_postman_id": "4e232e66-914a-4b5e-8f7f-f9ae0d476f54",
+ "name": "NCMP Register CmHandle and Query",
+ "description": "A collection to register a cmHandle then query. There are \"Valid Queries\" and \"Invalid Queries\" sub-folders containing examples. These are by no means exhaustive.",
+ "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json",
+ "_exporter_id": "17907116"
+ },
+ "item": [
+ {
+ "name": "Valid Queries",
+ "item": [
+ {
+ "name": "search cmHandles without conditions",
+ "request": {
+ "method": "POST",
+ "header": [],
+ "body": {
+ "mode": "raw",
+ "raw": "{}",
+ "options": {
+ "raw": {
+ "language": "json"
+ }
+ }
+ },
+ "url": {
+ "raw": "http://{{CPS_HOST}}:{{CPS_PORT}}/ncmp/v1/ch/searches",
+ "protocol": "http",
+ "host": [
+ "{{CPS_HOST}}"
+ ],
+ "port": "{{CPS_PORT}}",
+ "path": [
+ "ncmp",
+ "v1",
+ "ch",
+ "searches"
+ ]
+ }
+ },
+ "response": []
+ },
+ {
+ "name": "search cmHandles with modules query",
+ "request": {
+ "method": "POST",
+ "header": [],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"cmHandleQueryParameters\": [\n {\n \"conditionName\": \"hasAllModules\",\n \"conditionParameters\": [ {\"moduleName\": \"notifications\"} ]\n }\n ]\n}",
+ "options": {
+ "raw": {
+ "language": "json"
+ }
+ }
+ },
+ "url": {
+ "raw": "http://{{CPS_HOST}}:{{CPS_PORT}}/ncmp/v1/ch/searches",
+ "protocol": "http",
+ "host": [
+ "{{CPS_HOST}}"
+ ],
+ "port": "{{CPS_PORT}}",
+ "path": [
+ "ncmp",
+ "v1",
+ "ch",
+ "searches"
+ ]
+ }
+ },
+ "response": []
+ },
+ {
+ "name": "search cmHandles with public properties",
+ "request": {
+ "method": "POST",
+ "header": [],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"cmHandleQueryParameters\": [\n {\n \"conditionName\": \"hasAllProperties\",\n \"conditionParameters\": [ {\"Color\": \"yellow\"} ]\n }\n ]\n}",
+ "options": {
+ "raw": {
+ "language": "json"
+ }
+ }
+ },
+ "url": {
+ "raw": "http://{{CPS_HOST}}:{{CPS_PORT}}/ncmp/v1/ch/searches",
+ "protocol": "http",
+ "host": [
+ "{{CPS_HOST}}"
+ ],
+ "port": "{{CPS_PORT}}",
+ "path": [
+ "ncmp",
+ "v1",
+ "ch",
+ "searches"
+ ]
+ }
+ },
+ "response": []
+ },
+ {
+ "name": "search cmHandles with multiple public properties",
+ "request": {
+ "method": "POST",
+ "header": [],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"cmHandleQueryParameters\": [\n {\n \"conditionName\": \"hasAllProperties\",\n \"conditionParameters\": [ {\"Color\": \"yellow\"}, {\"Size\": \"small\"} ]\n }\n ]\n}",
+ "options": {
+ "raw": {
+ "language": "json"
+ }
+ }
+ },
+ "url": {
+ "raw": "http://{{CPS_HOST}}:{{CPS_PORT}}/ncmp/v1/ch/searches",
+ "protocol": "http",
+ "host": [
+ "{{CPS_HOST}}"
+ ],
+ "port": "{{CPS_PORT}}",
+ "path": [
+ "ncmp",
+ "v1",
+ "ch",
+ "searches"
+ ]
+ }
+ },
+ "response": []
+ },
+ {
+ "name": "search cmHandles with modules & pubprop query",
+ "request": {
+ "method": "POST",
+ "header": [],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"cmHandleQueryParameters\": [\n {\n \"conditionName\": \"hasAllModules\",\n \"conditionParameters\": [ {\"moduleName\": \"notifications\"} ]\n },\n {\n \"conditionName\": \"hasAllProperties\",\n \"conditionParameters\": [ {\"Color\": \"yellow\"} ]\n }\n ]\n}",
+ "options": {
+ "raw": {
+ "language": "json"
+ }
+ }
+ },
+ "url": {
+ "raw": "http://{{CPS_HOST}}:{{CPS_PORT}}/ncmp/v1/ch/searches",
+ "protocol": "http",
+ "host": [
+ "{{CPS_HOST}}"
+ ],
+ "port": "{{CPS_PORT}}",
+ "path": [
+ "ncmp",
+ "v1",
+ "ch",
+ "searches"
+ ]
+ }
+ },
+ "response": []
+ }
+ ]
+ },
+ {
+ "name": "Invalid Queries",
+ "item": [
+ {
+ "name": "get cmHandles with wrong condition name",
+ "request": {
+ "method": "POST",
+ "header": [],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"cmHandleQueryParameters\": [\n {\n \"conditionName\": \"wrong\",\n \"conditionParameters\": [ {\"Color\": \"yellow\"} ]\n }\n ]\n}",
+ "options": {
+ "raw": {
+ "language": "json"
+ }
+ }
+ },
+ "url": {
+ "raw": "http://{{CPS_HOST}}:{{CPS_PORT}}/ncmp/v1/ch/searches",
+ "protocol": "http",
+ "host": [
+ "{{CPS_HOST}}"
+ ],
+ "port": "{{CPS_PORT}}",
+ "path": [
+ "ncmp",
+ "v1",
+ "ch",
+ "searches"
+ ]
+ }
+ },
+ "response": []
+ },
+ {
+ "name": "get cmHandles with empty condition name",
+ "request": {
+ "method": "POST",
+ "header": [],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"cmHandleQueryParameters\": [\n {\n \"conditionName\": \"\",\n \"conditionParameters\": [ {\"Color\": \"yellow\"} ]\n }\n ]\n}",
+ "options": {
+ "raw": {
+ "language": "json"
+ }
+ }
+ },
+ "url": {
+ "raw": "http://{{CPS_HOST}}:{{CPS_PORT}}/ncmp/v1/ch/searches",
+ "protocol": "http",
+ "host": [
+ "{{CPS_HOST}}"
+ ],
+ "port": "{{CPS_PORT}}",
+ "path": [
+ "ncmp",
+ "v1",
+ "ch",
+ "searches"
+ ]
+ }
+ },
+ "response": []
+ },
+ {
+ "name": "get cmHandles with null condition name",
+ "request": {
+ "method": "POST",
+ "header": [],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"cmHandleQueryParameters\": [\n {\n \"conditionParameters\": [ {\"Color\": \"yellow\"} ]\n }\n ]\n}",
+ "options": {
+ "raw": {
+ "language": "json"
+ }
+ }
+ },
+ "url": {
+ "raw": "http://{{CPS_HOST}}:{{CPS_PORT}}/ncmp/v1/ch/searches",
+ "protocol": "http",
+ "host": [
+ "{{CPS_HOST}}"
+ ],
+ "port": "{{CPS_PORT}}",
+ "path": [
+ "ncmp",
+ "v1",
+ "ch",
+ "searches"
+ ]
+ }
+ },
+ "response": []
+ },
+ {
+ "name": "get cmHandles with empty key",
+ "request": {
+ "method": "POST",
+ "header": [],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"cmHandleQueryParameters\": [\n {\n \"conditionName\": \"hasAllProperties\",\n \"conditionParameters\": [ {\"\": \"yellow\"} ]\n }\n ]\n}",
+ "options": {
+ "raw": {
+ "language": "json"
+ }
+ }
+ },
+ "url": {
+ "raw": "http://{{CPS_HOST}}:{{CPS_PORT}}/ncmp/v1/ch/searches",
+ "protocol": "http",
+ "host": [
+ "{{CPS_HOST}}"
+ ],
+ "port": "{{CPS_PORT}}",
+ "path": [
+ "ncmp",
+ "v1",
+ "ch",
+ "searches"
+ ]
+ }
+ },
+ "response": []
+ },
+ {
+ "name": "get cmHandles with empty condition",
+ "request": {
+ "method": "POST",
+ "header": [],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"cmHandleQueryParameters\": [\n {\n \"conditionName\": \"hasAllProperties\",\n \"conditionParameters\": [ {} ]\n }\n ]\n}",
+ "options": {
+ "raw": {
+ "language": "json"
+ }
+ }
+ },
+ "url": {
+ "raw": "http://{{CPS_HOST}}:{{CPS_PORT}}/ncmp/v1/ch/searches",
+ "protocol": "http",
+ "host": [
+ "{{CPS_HOST}}"
+ ],
+ "port": "{{CPS_PORT}}",
+ "path": [
+ "ncmp",
+ "v1",
+ "ch",
+ "searches"
+ ]
+ }
+ },
+ "response": []
+ },
+ {
+ "name": "get cmHandles with empty condition list",
+ "request": {
+ "method": "POST",
+ "header": [],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"cmHandleQueryParameters\": [\n {\n \"conditionName\": \"hasAllProperties\",\n \"conditionParameters\": [ ]\n }\n ]\n}",
+ "options": {
+ "raw": {
+ "language": "json"
+ }
+ }
+ },
+ "url": {
+ "raw": "http://{{CPS_HOST}}:{{CPS_PORT}}/ncmp/v1/ch/searches",
+ "protocol": "http",
+ "host": [
+ "{{CPS_HOST}}"
+ ],
+ "port": "{{CPS_PORT}}",
+ "path": [
+ "ncmp",
+ "v1",
+ "ch",
+ "searches"
+ ]
+ }
+ },
+ "response": []
+ },
+ {
+ "name": "get cmHandles with null condition list",
+ "request": {
+ "method": "POST",
+ "header": [],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"cmHandleQueryParameters\": [\n {\n \"conditionName\": \"hasAllProperties\"\n }\n ]\n}",
+ "options": {
+ "raw": {
+ "language": "json"
+ }
+ }
+ },
+ "url": {
+ "raw": "http://{{CPS_HOST}}:{{CPS_PORT}}/ncmp/v1/ch/searches",
+ "protocol": "http",
+ "host": [
+ "{{CPS_HOST}}"
+ ],
+ "port": "{{CPS_PORT}}",
+ "path": [
+ "ncmp",
+ "v1",
+ "ch",
+ "searches"
+ ]
+ }
+ },
+ "response": []
+ },
+ {
+ "name": "get cmHandles with empty module value",
+ "request": {
+ "method": "POST",
+ "header": [],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"cmHandleQueryParameters\": [\n {\n \"conditionName\": \"hasAllModules\",\n \"conditionParameters\": [ {\"moduleName\": \"\"} ]\n }\n ]\n}",
+ "options": {
+ "raw": {
+ "language": "json"
+ }
+ }
+ },
+ "url": {
+ "raw": "http://{{CPS_HOST}}:{{CPS_PORT}}/ncmp/v1/ch/searches",
+ "protocol": "http",
+ "host": [
+ "{{CPS_HOST}}"
+ ],
+ "port": "{{CPS_PORT}}",
+ "path": [
+ "ncmp",
+ "v1",
+ "ch",
+ "searches"
+ ]
+ }
+ },
+ "response": []
+ },
+ {
+ "name": "get cmHandles with wrong module name",
+ "request": {
+ "method": "POST",
+ "header": [],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"cmHandleQueryParameters\": [\n {\n \"conditionName\": \"hasAllModules\",\n \"conditionParameters\": [ {\"moduleName2\": \"mudule-1\"} ]\n }\n ]\n}",
+ "options": {
+ "raw": {
+ "language": "json"
+ }
+ }
+ },
+ "url": {
+ "raw": "http://{{CPS_HOST}}:{{CPS_PORT}}/ncmp/v1/ch/searches",
+ "protocol": "http",
+ "host": [
+ "{{CPS_HOST}}"
+ ],
+ "port": "{{CPS_PORT}}",
+ "path": [
+ "ncmp",
+ "v1",
+ "ch",
+ "searches"
+ ]
+ }
+ },
+ "response": []
+ }
+ ]
+ },
+ {
+ "name": "Register cmHandle for Node",
+ "request": {
+ "method": "POST",
+ "header": [],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"dmiPlugin\": \"http://{{DMI_HOST}}:{{DMI_PORT}}\",\n \"createdCmHandles\": [\n {\n \"cmHandle\": \"CmHandle0\",\n \"cmHandleProperties\": {\n \"Books\": \"Sci-Fi Book\"\n },\n \"publicCmHandleProperties\": {\n \"Color\": \"yellow\",\n \"Size\": \"small\",\n \"Shape\": \"cube\"\n }\n }\n ]\n}",
+ "options": {
+ "raw": {
+ "language": "json"
+ }
+ }
+ },
+ "url": {
+ "raw": "http://{{CPS_HOST}}:{{CPS_PORT}}/ncmpInventory/v1/ch",
+ "protocol": "http",
+ "host": [
+ "{{CPS_HOST}}"
+ ],
+ "port": "{{CPS_PORT}}",
+ "path": [
+ "ncmpInventory",
+ "v1",
+ "ch"
+ ]
+ }
+ },
+ "response": []
+ },
+ {
+ "name": "get cmHandle",
+ "protocolProfileBehavior": {
+ "disableBodyPruning": true
+ },
+ "request": {
+ "method": "GET",
+ "header": [],
+ "body": {
+ "mode": "raw",
+ "raw": "",
+ "options": {
+ "raw": {
+ "language": "json"
+ }
+ }
+ },
+ "url": {
+ "raw": "http://{{CPS_HOST}}:{{CPS_PORT}}/ncmp/v1/ch/CmHandle0",
+ "protocol": "http",
+ "host": [
+ "{{CPS_HOST}}"
+ ],
+ "port": "{{CPS_PORT}}",
+ "path": [
+ "ncmp",
+ "v1",
+ "ch",
+ "CmHandle0"
+ ]
+ }
+ },
+ "response": []
+ },
+ {
+ "name": "get modules for cmHandle",
+ "protocolProfileBehavior": {
+ "disableBodyPruning": true
+ },
+ "request": {
+ "method": "GET",
+ "header": [],
+ "body": {
+ "mode": "raw",
+ "raw": "",
+ "options": {
+ "raw": {
+ "language": "json"
+ }
+ }
+ },
+ "url": {
+ "raw": "http://{{CPS_HOST}}:{{CPS_PORT}}/ncmp/v1/ch/CmHandle0/modules",
+ "protocol": "http",
+ "host": [
+ "{{CPS_HOST}}"
+ ],
+ "port": "{{CPS_PORT}}",
+ "path": [
+ "ncmp",
+ "v1",
+ "ch",
+ "CmHandle0",
+ "modules"
+ ]
+ }
+ },
+ "response": []
+ },
+ {
+ "name": "Update cmHandle for Node",
+ "request": {
+ "method": "POST",
+ "header": [],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"dmiPlugin\": \"http://{{DMI_HOST}}:{{DMI_PORT}}\",\n \"updatedCmHandles\": [\n {\n \"cmHandle\": \"CmHandle0\",\n \"cmHandleProperties\": {\n \"Books\": \"Sci-Fi Book\",\n \"Some property\": \"Some value\"\n },\n \"publicCmHandleProperties\": {\n \"Color\": \"yellow\",\n \"Size\": \"small\",\n \"Shape\": \"cube\",\n \"Some public property\": \"Some public value\"\n }\n }\n ]\n}",
+ "options": {
+ "raw": {
+ "language": "json"
+ }
+ }
+ },
+ "url": {
+ "raw": "http://{{CPS_HOST}}:{{CPS_PORT}}/ncmpInventory/v1/ch",
+ "protocol": "http",
+ "host": [
+ "{{CPS_HOST}}"
+ ],
+ "port": "{{CPS_PORT}}",
+ "path": [
+ "ncmpInventory",
+ "v1",
+ "ch"
+ ]
+ }
+ },
+ "response": []
+ },
+ {
+ "name": "De-register cmHandle for Node",
+ "request": {
+ "method": "POST",
+ "header": [],
+ "body": {
+ "mode": "raw",
+ "raw": "{\n \"dmiPlugin\": \"http://{{DMI_HOST}}:{{DMI_PORT}}\",\n \"removedCmHandles\": [\n \"CmHandle0\"\n ]\n}",
+ "options": {
+ "raw": {
+ "language": "json"
+ }
+ }
+ },
+ "url": {
+ "raw": "http://{{CPS_HOST}}:{{CPS_PORT}}/ncmpInventory/v1/ch",
+ "protocol": "http",
+ "host": [
+ "{{CPS_HOST}}"
+ ],
+ "port": "{{CPS_PORT}}",
+ "path": [
+ "ncmpInventory",
+ "v1",
+ "ch"
+ ]
+ }
+ },
+ "response": []
+ }
+ ],
+ "auth": {
+ "type": "basic",
+ "basic": [
+ {
+ "key": "password",
+ "value": "cpsr0cks!",
+ "type": "string"
+ },
+ {
+ "key": "username",
+ "value": "cpsuser",
+ "type": "string"
+ }
+ ]
+ },
+ "event": [
+ {
+ "listen": "prerequest",
+ "script": {
+ "type": "text/javascript",
+ "exec": [
+ ""
+ ]
+ }
+ },
+ {
+ "listen": "test",
+ "script": {
+ "type": "text/javascript",
+ "exec": [
+ ""
+ ]
+ }
+ }
+ ]
+}
\ No newline at end of file
diff --git a/postman-collections/README.md b/postman-collections/README.md
new file mode 100644
index 0000000..004ef5b
--- /dev/null
+++ b/postman-collections/README.md
@@ -0,0 +1,34 @@
+<!--
+ ============LICENSE_START=======================================================
+ Copyright (C) 2024 Nordix Foundation.
+ ================================================================================
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+ SPDX-License-Identifier: Apache-2.0
+ ============LICENSE_END=========================================================
+-->
+
+# Importing and running the CPS postman collections
+## Importing the CPS collections
+To import the CPS collections and environment:
+1. Create a "Workspace" (or if you have one already you can use that)
+2. Click "Import" (or click "File" then "Import")
+3. Drag and drop the "postman-collection" folder into the import pop-up
+4. The collections and environment should now be imported
+5. Set the current environment to "CPS Environment" (usually at the top right. Default is "No Environment") This will provide the necessary variables such as "CPS_HOST" and "CPS_PORT" to allow the requests to be run
+
+## Running the collections
+To run the requests in the collections simply select the request and click send. "Create Schema Set" in "CPS-CORE" requires a file to send the request. Example files are provided: "bookstore.yang" and "bookstore-types.yang" (these files must be zipped before adding them to the request)
+
+## Notes
+When exporting postman collections tabs are used for spacing, so replacing all the tabs is necessary
diff --git a/postman-collections/bookstore-types.yang b/postman-collections/bookstore-types.yang
new file mode 100644
index 0000000..5ad7b6e
--- /dev/null
+++ b/postman-collections/bookstore-types.yang
@@ -0,0 +1,18 @@
+module bookstore-types {
+ yang-version 1.1;
+ namespace "org:onap:cps:types:sample";
+
+ prefix types;
+
+ revision "2024-01-30" {
+ description
+ "Sample Types";
+ }
+
+ typedef year {
+ type uint16 {
+ range "1000..9999";
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/postman-collections/bookstore.yang b/postman-collections/bookstore.yang
new file mode 100644
index 0000000..0d093ea
--- /dev/null
+++ b/postman-collections/bookstore.yang
@@ -0,0 +1,127 @@
+module stores {
+ yang-version 1.1;
+ namespace "org:onap:cps:sample";
+
+ prefix book-store;
+
+ import bookstore-types {
+ prefix "types";
+ revision-date 2024-01-30;
+ }
+
+ revision "2024-02-08" {
+ description
+ "Order of book authors is preserved";
+ }
+
+ revision "2024-01-30" {
+ description
+ "Extracted bookstore types";
+ }
+
+ revision "2020-09-15" {
+ description
+ "Sample Model";
+ }
+
+ list bookstore-address {
+ key "bookstore-name";
+ leaf bookstore-name {
+ type string;
+ description
+ "Name of bookstore. Example: My Bookstore";
+ }
+ leaf address {
+ type string;
+ description
+ "Address of store";
+ }
+ leaf postal-code {
+ type string;
+ description
+ "Postal code of store";
+ }
+ }
+
+ container bookstore {
+
+ leaf bookstore-name {
+ type string;
+ }
+
+ container webinfo {
+ leaf domain-name {
+ type string;
+ }
+ leaf contact-email {
+ type string;
+ }
+ }
+
+ container support-info {
+ leaf support-office {
+ type string;
+ }
+ container contact-emails {
+ leaf email {
+ type string;
+ }
+ }
+ }
+
+ container container-without-leaves { }
+
+ container premises {
+ list addresses {
+ key "house-number street";
+
+ leaf house-number {
+ type uint16;
+ }
+ leaf street {
+ type string;
+ }
+ leaf town {
+ type string;
+ }
+ leaf county {
+ type string;
+ }
+ }
+ }
+
+ list categories {
+
+ key "code";
+
+ leaf code {
+ type string;
+ }
+
+ leaf name {
+ type string;
+ }
+
+ list books {
+ key title;
+
+ leaf title {
+ type string;
+ }
+ leaf lang {
+ type string;
+ }
+ leaf-list authors {
+ ordered-by user;
+ type string;
+ }
+ leaf-list editions {
+ type types:year;
+ }
+ leaf price {
+ type uint64;
+ }
+ }
+ }
+ }
+}