e52c39b42893bf1b91716404889ffe6b82fbad94
[optf/osdf.git] / docs / sections / swaggerdoc / oof-osdf-has-api.json
1 {
2   "swagger": "2.0",
3   "info": {
4     "description": "This is the ONAP OOF OSDF (Optimization Service Design Framework) API",
5     "version": "1.0.0",
6     "title": "OSDF API",
7     "contact": {
8       "email": "frank.sandoval@oamtechnologies.com"
9     },
10     "license": {
11       "name": "Apache 2.0",
12       "url": "http://www.apache.org/licenses/LICENSE-2.0.html"
13     }
14   },
15   "securityDefinitions": {
16     "basicAuth": {
17       "type": "basic",
18       "description": "HTTP Basic Auth"
19     }
20   },
21   "security": [
22     {
23       "basicAuth": []
24     }
25   ],
26   "paths": {
27     "/v2/placement": {
28       "post": {
29         "summary": "create/update a placement",
30         "operationId": "createPlacement",
31         "description": "create/update a placement",
32         "consumes": [
33           "application/json"
34         ],
35         "produces": [
36           "application/json"
37         ],
38         "parameters": [
39           {
40             "in": "body",
41             "name": "placementRequest",
42             "description": "placement request",
43             "schema": {
44               "$ref": "#/definitions/PlacementRequest"
45             }
46           }
47         ],
48         "responses": {
49           "201": {
50             "description": "An optimization solution is found."
51           },
52           "202": {
53             "description": "An optimization request is accepted"
54           },
55           "400": {
56             "description": "bad request"
57           },
58           "401": {
59             "description": "Request body is not compliant with the API definition"
60           },
61           "404": {
62             "description": "The server cannot find the requested URI"
63           },
64           "405": {
65             "description": "The requested method is not supported by a server."
66           },
67           "500": {
68             "description": "The server encountered an internal server error or timed out"
69           }
70         }
71       }
72     },
73     "/api/oof/placement/v1": {
74       "$ref": "#/paths/~1v2~1placement"
75     },
76     "/api/oof/v1/pci": {
77       "post": {
78         "summary": "Initiate PCI/ANR Optimization",
79         "operationId": "initiatePCIOptRequest",
80         "description": "Initiate PCI/ANR Optimization",
81         "consumes": [
82           "application/json"
83         ],
84         "produces": [
85           "application/json"
86         ],
87         "parameters": [
88           {
89             "in": "body",
90             "name": "PCIOptimizationRequest",
91             "description": "PCI request",
92             "schema": {
93               "$ref": "#/definitions/PCIOptRequest"
94             }
95           }
96         ],
97         "responses": {
98           "201": {
99             "description": "An optimization solution is found."
100           },
101           "202": {
102             "description": "An optimization request is accepted"
103           },
104           "400": {
105             "description": "bad request"
106           },
107           "401": {
108             "description": "Request body is not compliant with the API definition"
109           },
110           "404": {
111             "description": "The server cannot find the requested URI"
112           },
113           "405": {
114             "description": "The requested method is not supported by a server."
115           },
116           "500": {
117             "description": "The server encountered an internal server error or timed out"
118           }
119         }
120       }
121     },
122     "/api/oof/pci/v1": {
123       "$ref": "#/paths/~1api~1oof~1v1~1pci"
124     },
125     "/api/oof/selection/nst/v1": {
126       "post": {
127         "summary": "NST selection",
128         "operationId": "selectNstRequest",
129         "description": "Request for NST selection",
130         "consumes": [
131           "application/json"
132         ],
133         "produces": [
134           "application/json"
135         ],
136         "parameters": [
137           {
138             "in": "body",
139             "name": "NSTSelectionRequest",
140             "description": "nst selection request",
141             "schema": {
142               "$ref": "#/definitions/NSTSelectionRequest"
143             }
144           }
145         ],
146         "responses": {
147           "202": {
148             "description": "An optimization request is accepted",
149             "schema": {
150               "$ref": "#/definitions/SynchronousResponse"
151             }
152           },
153           "400": {
154             "description": "bad request"
155           },
156           "401": {
157             "description": "Request body is not compliant with the API definition"
158           },
159           "404": {
160             "description": "The server cannot find the requested URI"
161           },
162           "405": {
163             "description": "The requested method is not supported by a server."
164           },
165           "500": {
166             "description": "The server encountered an internal server error or timed out"
167           }
168         }
169       }
170     },
171     "/api/oof/selection/nsi/v1": {
172       "post": {
173         "summary": "NSI selection",
174         "operationId": "selectNsiRequest",
175         "description": "Request for NSI selection",
176         "consumes": [
177           "application/json"
178         ],
179         "produces": [
180           "application/json"
181         ],
182         "parameters": [
183           {
184             "in": "body",
185             "name": "NSISelectionRequest",
186             "description": "NSI selection request",
187             "schema": {
188               "$ref": "#/definitions/NSISelectionRequest"
189             }
190           }
191         ],
192         "responses": {
193           "202": {
194             "description": "An optimization request is accepted",
195             "schema": {
196               "$ref": "#/definitions/SynchronousResponse"
197             }
198           },
199           "400": {
200             "description": "bad request"
201           },
202           "401": {
203             "description": "Request body is not compliant with the API definition"
204           },
205           "404": {
206             "description": "The server cannot find the requested URI"
207           },
208           "405": {
209             "description": "The requested method is not supported by a server."
210           },
211           "500": {
212             "description": "The server encountered an internal server error or timed out"
213           }
214         }
215       }
216     },
217     "/api/oof/selection/nssi/v1": {
218       "post": {
219         "summary": "NSSI selection",
220         "operationId": "selectNssiRequest",
221         "description": "Request for NSSI selection",
222         "consumes": [
223           "application/json"
224         ],
225         "produces": [
226           "application/json"
227         ],
228         "parameters": [
229           {
230             "in": "body",
231             "name": "NSSISelectionRequest",
232             "description": "NSSI selection request",
233             "schema": {
234               "$ref": "#/definitions/NSSISelectionRequest"
235             }
236           }
237         ],
238         "responses": {
239           "202": {
240             "description": "An optimization request is accepted",
241             "schema": {
242               "$ref": "#/definitions/SynchronousResponse"
243             }
244           },
245           "400": {
246             "description": "bad request"
247           },
248           "401": {
249             "description": "Request body is not compliant with the API definition"
250           },
251           "404": {
252             "description": "The server cannot find the requested URI"
253           },
254           "405": {
255             "description": "The requested method is not supported by a server."
256           },
257           "500": {
258             "description": "The server encountered an internal server error or timed out"
259           }
260         }
261       }
262     },
263     "/api/oof/route/v1": {
264       "post": {
265         "tags": [
266           "Route Select"
267         ],
268         "summary": "Find the optimistic route between OTN domains",
269         "description": "",
270         "operationId": "getRoute",
271         "consumes": [
272           "application/json"
273         ],
274         "produces": [
275           "application/json"
276         ],
277         "parameters": [
278           {
279             "in": "body",
280             "name": "body",
281             "description": "Source and Destination nodes across which optmistic route have to be obtained.",
282             "required": true,
283             "schema": {
284               "$ref": "#/definitions/RouteRequest"
285             }
286           }
287         ],
288         "responses": {
289           "200": {
290             "description": "successful operation",
291             "schema": {
292               "type": "array",
293               "items": {
294                 "$ref": "#/definitions/routeResponseBody"
295               }
296             }
297           },
298           "405": {
299             "description": "Invalid input"
300           }
301         }
302       }
303     }
304   },
305   "definitions": {
306     "RouteRequest": {
307       "type": "object",
308       "properties": {
309         "requestInfo": {
310           "$ref": "#/definitions/requestInfo"
311         },
312         "routeInfo": {
313           "$ref": "#/definitions/routeInfo"
314         }
315       }
316     },
317     "requestInfo": {
318       "type": "object",
319       "properties": {
320         "transactionId": {
321           "type": "string",
322           "description": "A unique ID to track an ONAP transaction."
323         },
324         "requestId": {
325           "type": "string",
326           "description": "A unique ID to track multiple requests associated with a transaction."
327         },
328         "callbackUrl": {
329           "type": "string",
330           "description": "The end point of a callback service where recommendations are posted."
331         },
332         "callbackHeader": {
333           "type": "string",
334           "description": "The header information a client expecting in a async callback."
335         },
336         "sourceId": {
337           "type": "string",
338           "description": "The unique ID of a client making an optimization call."
339         },
340         "requestType": {
341           "type": "string",
342           "format": "string",
343           "description": "The type of request being placed.",
344           "enum": [
345             "create",
346             "update",
347             "delete"
348           ]
349         },
350         "numSolutions": {
351           "type": "integer",
352           "format": "int32",
353           "description": "Expected number of solutions. numSolution can also be specified using an optimization query policies, where the default configured value is 1. The value from a request gets higher precedence over the value defined in a policy."
354         },
355         "optimizers": {
356           "description": "A list of optimization services that can be used to resolve the route",
357           "type": "array",
358           "items": {
359             "type": "string"
360           }
361         },
362         "timeout": {
363           "type": "integer",
364           "format": "int32",
365           "description": "A tolerance window (in secs) for expecting solutions. Default is 600 secs."
366         }
367       }
368     },
369     "routeInfo": {
370       "type": "object",
371       "properties": {
372         "routeRequest": {
373           "$ref": "#/definitions/routeRequest"
374         }
375       }
376     },
377     "routeRequest": {
378       "type": "object",
379       "properties": {
380         "srcPort": {
381           "$ref": "#/definitions/routePortInfo"
382         },
383         "destPort": {
384           "$ref": "#/definitions/routePortInfo"
385         }
386       }
387     },
388     "routePortInfo": {
389       "type": "object",
390       "properties": {
391         "accessTopologyId": {
392           "type": "string",
393           "description": "A unique ID of the Access Topology."
394         },
395         "accessClientId": {
396           "type": "string",
397           "format": "string",
398           "description": "A unique ID of the client which provides the access."
399         },
400         "accessProviderId": {
401           "type": "string",
402           "format": "string",
403           "description": "A unique ID of the access provider"
404         },
405         "accessNodeId": {
406           "type": "string",
407           "format": "string",
408           "description": "A unique ID of the node to/from which the route has to be established."
409         },
410         "accessLtpId": {
411           "type": "integer",
412           "format": "int32",
413           "description": "A unique ID of the Termination Point to/from which the route has to be established."
414         }
415       }
416     },
417     "routeResponseBody": {
418       "type": "object",
419       "properties": {
420         "requestId": {
421           "type": "string",
422           "description": "A unique Id for an ONAP transaction."
423         },
424         "transactionId": {
425           "type": "string",
426           "description": "A unique ID to track multiple requests associated with a transaction."
427         },
428         "statusMessage": {
429           "type": "string",
430           "description": "Reasoning if a requestStatus is failure."
431         },
432         "requestStatus": {
433           "type": "string",
434           "description": "The status of a request."
435         },
436         "solutions": {
437           "$ref": "#/definitions/RouteSolutionInfo"
438         }
439       }
440     },
441     "RouteSolutionInfo": {
442       "type": "object",
443       "properties": {
444         "startTime": {
445           "type": "string",
446           "format": "date-time",
447           "description": "start time of the operation in  RFC 3339 notation for example, 2017-07-21T17:32:28Z."
448         },
449         "finishTime": {
450           "type": "string",
451           "format": "date-time",
452           "description": "end time of the operation in  RFC 3339 notation for example, 2017-07-21T17:32:28Z."
453         },
454         "links": {
455           "description": "A list of vpn info that can be used to establish the route between source and destination port/node.",
456           "type": "array",
457           "items": {
458             "$ref": "#/definitions/link"
459           }
460         }
461       }
462     },
463     "link": {
464       "type": "object",
465       "properties": {
466         "linkId": {
467           "type": "string",
468           "description": "Id or name identifies a link uniquely."
469         }
470       }
471     },
472     "PlacementRequest": {
473       "type": "object",
474       "required": [
475         "requestInfo",
476         "placementInfo",
477         "licenseInfo",
478         "serviceInfo"
479       ],
480       "properties": {
481         "requestInfo": {
482           "$ref": "#/definitions/RequestInfo"
483         },
484         "placementInfo": {
485           "$ref": "#/definitions/PlacementInfo"
486         },
487         "licenseInfo": {
488           "$ref": "#/definitions/LicenseInfo"
489         },
490         "serviceInfo": {
491           "$ref": "#/definitions/ServiceInfo"
492         }
493       }
494     },
495     "RequestInfo": {
496       "type": "object",
497       "required": [
498         "transactionId",
499         "requestId",
500         "callbackUrl",
501         "sourceId",
502         "requestType",
503         "optimizers",
504         "timeout"
505       ],
506       "properties": {
507         "transactionId": {
508           "type": "string",
509           "format": "uuid",
510           "description": "unique ID to track an ONAP transaction",
511           "example": "d290f1ee-6c54-4b01-90e6-d701748f0851"
512         },
513         "requestId": {
514           "type": "string",
515           "format": "uuid",
516           "description": "A unique ID to track multiple requests associated with a transaction",
517           "example": "d290f1ee-6c54-4b01-90e6-d701748f0851"
518         },
519         "callbackUrl": {
520           "type": "string",
521           "format": "url",
522           "description": "The end point of a callback service where recommendations are posted.",
523           "example": "myDomain.com/myCallback"
524         },
525         "callbackHeader": {
526           "type": "string",
527           "description": "JSON blob. The header information a client expecting in a async callback.",
528           "example": {
529             "blob": "content"
530           }
531         },
532         "sourceId": {
533           "type": "string",
534           "description": "The unique ID of a client making an optimization call.",
535           "example": "d290f1ee-6c54-4b01-90e6-d701748f0851"
536         },
537         "requestType": {
538           "type": "string",
539           "enum": [
540             "create",
541             "update",
542             "delete"
543           ],
544           "description": "The type of a request",
545           "example": "create"
546         },
547         "numSolutions": {
548           "type": "integer",
549           "description": "Expected number of solutions.",
550           "example": 1
551         },
552         "optimizers": {
553           "type": "array",
554           "items": {
555             "type": "string",
556             "enum": [
557               "placement",
558               "pci",
559               "pci-anr"
560             ]
561           },
562           "description": "A list of optimization services.",
563           "example": [
564             "placement"
565           ]
566         },
567         "timeout": {
568           "type": "integer",
569           "description": "A tolerance window (in second) for expecting solutions.",
570           "example": 5
571         }
572       }
573     },
574     "PlacementInfo": {
575       "type": "object",
576       "required": [
577         "requestParameters",
578         "placementDemands"
579       ],
580       "properties": {
581         "requestParameters": {
582           "type": "string",
583           "description": "JSON blob. A service ordering information",
584           "example": {
585             "blob": "content"
586           }
587         },
588         "placementDemands": {
589           "type": "array",
590           "items": {
591             "$ref": "#/definitions/PlacementDemand"
592           },
593           "description": "The resource information for a placement service"
594         },
595         "subscriberInfo": {
596           "type": "object",
597           "items": {
598             "$ref": "#/definitions/SubscriberInfo"
599           },
600           "description": "The information of a service subscriber."
601         }
602       }
603     },
604     "PlacementDemand": {
605       "type": "object",
606       "required": [
607         "resourceModuleName",
608         "serviceResourceId",
609         "resourceModelInfo"
610       ],
611       "properties": {
612         "resourceModuleName": {
613           "type": "string",
614           "description": "A resource name as defined in a service mode",
615           "example": "myResourceName"
616         },
617         "serviceResourceId": {
618           "type": "string",
619           "description": "A unique resource Id with a local scope between client and OOF.",
620           "example": "myResourceId"
621         },
622         "givenPlacement": {
623           "type": "object",
624           "additionalProperties": {
625             "type": "object",
626             "properties": {
627               "key": {
628                 "type": "string"
629               },
630               "value": {
631                 "type": "string"
632               }
633             }
634           },
635           "description": "placement parameters defined in the ordering system, keyname include tenantId",
636           "example": {
637             "tenantId": "1"
638           }
639         },
640         "resourceModelInfo": {
641           "$ref": "#/definitions/ModelMetaData"
642         },
643         "existingCandidates": {
644           "$ref": "#/definitions/Candidates"
645         },
646         "excludedCandidates": {
647           "$ref": "#/definitions/Candidates"
648         },
649         "requiredCandidates": {
650           "$ref": "#/definitions/Candidates"
651         }
652       }
653     },
654     "ModelMetaData": {
655       "type": "object",
656       "required": [
657         "modelInvariantId",
658         "modelVersionId"
659       ],
660       "properties": {
661         "modelInvariantId": {
662           "type": "string",
663           "description": "A model invariant Id as defined in a service model.",
664           "example": "my model invariant Id"
665         },
666         "modelVersionId": {
667           "type": "string",
668           "description": "A unique model Id as defined in a service model.",
669           "example": "my unique model Id"
670         },
671         "modelName": {
672           "type": "string",
673           "description": "A model name as defined in a service model",
674           "example": "my model name"
675         },
676         "modelType": {
677           "type": "string",
678           "description": "A model type as defined in a service model.",
679           "example": "my model type"
680         },
681         "modelVersion": {
682           "type": "string",
683           "description": "A model version as defined in a service model.",
684           "example": "my model version"
685         },
686         "modelCustomizationName": {
687           "type": "string",
688           "description": "A model customization name as defined in a service model.",
689           "example": "my model customization"
690         }
691       }
692     },
693     "Candidates": {
694       "type": "object",
695       "required": [
696         "identifierType",
697         "identifiers"
698       ],
699       "properties": {
700         "identifierType": {
701           "type": "string",
702           "enum": [
703             "service_instance_id",
704             "vnf_name",
705             "cloud_region_id"
706           ],
707           "description": "The type of a candidate.",
708           "example": "service_instance_id"
709         },
710         "identifiers": {
711           "type": "array",
712           "items": {
713             "type": "string"
714           },
715           "description": "A list of identifiers.",
716           "example": "candidateId"
717         },
718         "cloudOwner": {
719           "type": "string",
720           "description": "The name of a cloud owner. Only required if identifierType is cloud_region_id",
721           "example": "cloud_owner"
722         }
723       }
724     },
725     "SubscriberInfo": {
726       "type": "object",
727       "required": [
728         "globalSubscriberId",
729         "subscriberName",
730         "subscriberCommonSiteId"
731       ],
732       "properties": {
733         "globalSubscriberId": {
734           "type": "string",
735           "description": "An ID of a subscriber.",
736           "example": "subscriber_id"
737         },
738         "subscriberName": {
739           "type": "string",
740           "description": "The name of a subscriber. If the name is not known, the value must be 'unknown'",
741           "example": "subscriber_name"
742         },
743         "subscriberCommonSiteId": {
744           "type": "string",
745           "description": "Id representing a subscriber location",
746           "example": "subscriber_location_id"
747         }
748       }
749     },
750     "LicenseInfo": {
751       "type": "object",
752       "required": [
753         "licenseDemands"
754       ],
755       "properties": {
756         "licenseDemands": {
757           "type": "array",
758           "items": {
759             "$ref": "#/definitions/LicenseDemands"
760           },
761           "description": "A list of resources for license selection"
762         }
763       }
764     },
765     "LicenseDemands": {
766       "type": "object",
767       "required": [
768         "resourceModuleName",
769         "serviceResourceId",
770         "resourceModelInfo"
771       ],
772       "properties": {
773         "resourceModuleName": {
774           "type": "string",
775           "description": "A resource name as defined in a service model.",
776           "example": "service_instance_id"
777         },
778         "serviceResourceId": {
779           "type": "string",
780           "description": "A unique resource Id with a local scope between client and OOF.",
781           "example": "service_instance_id"
782         },
783         "resourceModelInfo": {
784           "$ref": "#/definitions/ModelMetaData"
785         },
786         "existingLicenses": {
787           "$ref": "#/definitions/LicenseModel"
788         }
789       }
790     },
791     "LicenseModel": {
792       "type": "object",
793       "required": [
794         "entitlementPoolUUID",
795         "licenseKeyGroupUUID"
796       ],
797       "properties": {
798         "entitlementPoolUUID": {
799           "type": "array",
800           "items": {
801             "type": "string",
802             "format": "uuid"
803           },
804           "description": "Entitlement pool UUIDs associated with a resource.",
805           "example": "candidateId"
806         },
807         "licenseKeyGroupUUID": {
808           "type": "array",
809           "items": {
810             "type": "string",
811             "format": "uuid"
812           },
813           "description": "License key groups associated with a resource",
814           "example": "candidateId"
815         }
816       }
817     },
818     "SynchronousResponse": {
819       "type": "object",
820       "required": [
821         "requestId",
822         "transactionId",
823         "requestStatus"
824       ],
825       "properties": {
826         "requestId": {
827           "type": "string",
828           "format": "uuid",
829           "description": "A unique Id for an ONAP transaction",
830           "example": "ONAP transaction id"
831         },
832         "transactionId": {
833           "type": "string",
834           "format": "uuid",
835           "description": "A unique ID to track multiple requests associated with a transaction.",
836           "example": "requests id"
837         },
838         "statusMessage": {
839           "type": "string",
840           "description": "Reasoning if a requestStatus is failure.",
841           "example": "requestStatus"
842         },
843         "requestStatus": {
844           "type": "string",
845           "enum": [
846             "success",
847             "failure"
848           ],
849           "description": "The status of a request.",
850           "example": "success"
851         }
852       }
853     },
854     "PlacementAsynchronousResponse": {
855       "type": "object",
856       "required": [
857         "requestId",
858         "transactionId",
859         "requestStatus",
860         "solutions"
861       ],
862       "properties": {
863         "requestId": {
864           "type": "string",
865           "format": "uuid",
866           "description": "A unique Id for an ONAP transaction",
867           "example": "ONAP transaction id"
868         },
869         "transactionId": {
870           "type": "string",
871           "format": "uuid",
872           "description": "A unique ID to track multiple requests associated with a transaction.",
873           "example": "requests id"
874         },
875         "statusMessage": {
876           "type": "string",
877           "description": "Reasoning if a requestStatus is failure.",
878           "example": "requestStatus"
879         },
880         "requestStatus": {
881           "type": "string",
882           "enum": [
883             "success",
884             "failure"
885           ],
886           "description": "The status of a request.",
887           "example": "success"
888         },
889         "solutions": {
890           "$ref": "#/definitions/Solutions"
891         }
892       }
893     },
894     "Solutions": {
895       "type": "object",
896       "required": [
897         "placementSolutions",
898         "licenseSolutions"
899       ],
900       "properties": {
901         "placementSolutions": {
902           "type": "array",
903           "items": {
904             "$ref": "#/definitions/ComprehensiveSolution"
905           },
906           "description": "A list of placement solutions."
907         },
908         "licenseSolutions": {
909           "type": "array",
910           "items": {
911             "$ref": "#/definitions/LicenseSolution"
912           },
913           "description": "A list of license solutions."
914         }
915       }
916     },
917     "ComprehensiveSolution": {
918       "type": "object",
919       "required": [
920         "placementSolutions"
921       ],
922       "properties": {
923         "placementSolutions": {
924           "type": "array",
925           "items": {
926             "$ref": "#/definitions/PlacementSolution"
927           },
928           "description": "A list of placement solutions."
929         }
930       }
931     },
932     "PlacementSolution": {
933       "type": "object",
934       "required": [
935         "resourceModuleName",
936         "serviceResourceId",
937         "identifierType",
938         "identifier"
939       ],
940       "properties": {
941         "resourceModuleName": {
942           "type": "string",
943           "description": "The name of a resource as defined in the service model",
944           "example": "resource name"
945         },
946         "serviceResourceId": {
947           "type": "string",
948           "description": "A resource Id as defined in a service model.",
949           "example": "resource id"
950         },
951         "identifierType": {
952           "type": "string",
953           "enum": [
954             "service_instance_id"
955           ],
956           "description": "The type of a candidate.",
957           "example": "candidate type"
958         },
959         "identifier": {
960           "type": "string",
961           "description": "The id of a candidate.",
962           "example": "candidate id"
963         },
964         "assignmentInfo": {
965           "type": "array",
966           "items": {
967             "$ref": "#/definitions/AssignmentInfo"
968           },
969           "description": "Additional information related to a candidate."
970         }
971       }
972     },
973     "AssignmentInfo": {
974       "type": "object",
975       "required": [
976         "key",
977         "value"
978       ],
979       "properties": {
980         "key": {
981           "type": "string",
982           "description": "An attribute name",
983           "example": "attribute name"
984         },
985         "value": {
986           "type": "string",
987           "description": "An attribute value.",
988           "example": "attribute value"
989         }
990       }
991     },
992     "LicenseSolution": {
993       "type": "object",
994       "required": [
995         "resourceModuleName",
996         "serviceResourceId",
997         "entitlementPoolUUID",
998         "licenseKeyGroupUUID",
999         "entitlementPoolInvariantUUID",
1000         "licenseKeyGroupInvariantUUID"
1001       ],
1002       "properties": {
1003         "resourceModuleName": {
1004           "type": "string",
1005           "description": "A resource name as defined in a service",
1006           "example": "resource name"
1007         },
1008         "serviceResourceId": {
1009           "type": "string",
1010           "description": "A resource Id as defined in a service.",
1011           "example": "resource Id"
1012         },
1013         "entitlementPoolUUID": {
1014           "type": "array",
1015           "items": {
1016             "type": "string",
1017             "format": "uuid"
1018           },
1019           "description": "A list of entitlementPoolUUIDs",
1020           "example": "entitlementPoolUUID"
1021         },
1022         "licenseKeyGroupUUID": {
1023           "type": "array",
1024           "items": {
1025             "type": "string",
1026             "format": "uuid"
1027           },
1028           "description": "A list of licenseKeyGroupUUID.",
1029           "example": "licenseKeyGroupUUID"
1030         },
1031         "entitlementPoolInvariantUUID": {
1032           "type": "array",
1033           "items": {
1034             "type": "string",
1035             "format": "uuid"
1036           },
1037           "description": "A list of entitlementPoolInvariantUUID",
1038           "example": "entitlementPoolInvariantUUID"
1039         },
1040         "licenseKeyGroupInvariantUUID": {
1041           "type": "array",
1042           "items": {
1043             "type": "string",
1044             "format": "uuid"
1045           },
1046           "description": "A list of licenseKeyGroupInvariantUUID",
1047           "example": "licenseKeyGroupInvariantUUID"
1048         }
1049       }
1050     },
1051     "ServiceInfo": {
1052       "type": "object",
1053       "required": [
1054         "serviceInstanceId",
1055         "modelInfo",
1056         "serviceName"
1057       ],
1058       "properties": {
1059         "serviceInstanceId": {
1060           "type": "string",
1061           "description": "A service instance id associated with a request.",
1062           "example": "service_instance_id"
1063         },
1064         "modelInfo": {
1065           "$ref": "#/definitions/ModelMetaData"
1066         },
1067         "serviceName": {
1068           "type": "string",
1069           "description": "The name of a service",
1070           "example": "service_name"
1071         }
1072       }
1073     },
1074     "PCIOptRequest": {
1075       "type": "object",
1076       "required": [
1077         "requestInfo",
1078         "cellInfo"
1079       ],
1080       "properties": {
1081         "requestInfo": {
1082           "$ref": "#/definitions/RequestInfo"
1083         },
1084         "cellInfo": {
1085           "$ref": "#/definitions/CellInfo"
1086         }
1087       }
1088     },
1089     "CellInfo": {
1090       "type": "object",
1091       "required": [
1092         "networkId",
1093         "cellIdList",
1094         "anrInputList",
1095         "trigger"
1096       ],
1097       "properties": {
1098         "networkId": {
1099           "type": "string",
1100           "description": "Id of network requiring PCI optimization",
1101           "example": 100
1102         },
1103         "cellIdList": {
1104           "type": "array",
1105           "items": {
1106             "type": "string"
1107           },
1108           "description": "List of cellIds triggering need for PCI optimization (eg.potential confusion)",
1109           "example": [
1110             "cell0001",
1111             "cell0002"
1112           ]
1113         },
1114         "anrInputList": {
1115           "type": "array",
1116           "items": {
1117             "$ref": "#/definitions/ANRInfo"
1118           },
1119           "description": "A list of ANR Input."
1120         },
1121         "trigger": {
1122           "type": "string",
1123           "description": "Type of trigger causing need for PCI optimization",
1124           "example": "NbrListChange"
1125         }
1126       }
1127     },
1128     "PCIAsynchronousResponse": {
1129       "type": "object",
1130       "required": [
1131         "requestId",
1132         "transactionId",
1133         "requestStatus",
1134         "solutions"
1135       ],
1136       "properties": {
1137         "requestId": {
1138           "type": "string",
1139           "format": "uuid",
1140           "description": "A unique Id for an ONAP transaction",
1141           "example": "ONAP transaction id"
1142         },
1143         "transactionId": {
1144           "type": "string",
1145           "format": "uuid",
1146           "description": "A unique ID to track multiple requests associated with a transaction.",
1147           "example": "requests id"
1148         },
1149         "statusMessage": {
1150           "type": "string",
1151           "description": "Reasoning if a requestStatus is failure.",
1152           "example": "requestStatus"
1153         },
1154         "requestStatus": {
1155           "type": "string",
1156           "enum": [
1157             "success",
1158             "failure"
1159           ],
1160           "description": "The status of a request.",
1161           "example": "success"
1162         },
1163         "solutions": {
1164           "$ref": "#/definitions/PCIANRSolutions"
1165         }
1166       }
1167     },
1168     "PCIANRSolutions": {
1169       "type": "object",
1170       "required": [
1171         "networkId",
1172         "pciSolutions",
1173         "anrSolutions"
1174       ],
1175       "properties": {
1176         "networkId": {
1177           "type": "string",
1178           "description": "Id of network requiring PCI optimization",
1179           "example": 100
1180         },
1181         "pciSolutions": {
1182           "type": "array",
1183           "items": {
1184             "$ref": "#/definitions/PCISolution"
1185           },
1186           "description": "A list of PCI solutions."
1187         },
1188         "anrSolutions": {
1189           "type": "array",
1190           "items": {
1191             "$ref": "#/definitions/ANRInfo"
1192           },
1193           "description": "A list of ANR solutions."
1194         }
1195       }
1196     },
1197     "PCISolution": {
1198       "type": "object",
1199       "required": [
1200         "cellId",
1201         "pci"
1202       ],
1203       "properties": {
1204         "cellId": {
1205           "type": "string",
1206           "description": "cellId with modified PCI value",
1207           "example": "cell0001"
1208         },
1209         "pci": {
1210           "type": "integer",
1211           "description": "New PCI value for cellId",
1212           "example": 1
1213         }
1214       }
1215     },
1216     "ANRInfo": {
1217       "type": "object",
1218       "required": [
1219         "cellId",
1220         "removeableNeighbors"
1221       ],
1222       "properties": {
1223         "cellId": {
1224           "type": "string",
1225           "description": "cellId with modified PCI value",
1226           "example": "cell0001"
1227         },
1228         "removeableNeighbors": {
1229           "type": "array",
1230           "items": {
1231             "type": "string"
1232           },
1233           "description": "List of neighbors to be removed",
1234           "example": [
1235             "cell0002",
1236             "cell0003"
1237           ]
1238         }
1239       }
1240     },
1241     "NSTSelectionRequest": {
1242       "type": "object",
1243       "required": [
1244         "requestInfo",
1245         "serviceProfile"
1246       ],
1247       "properties": {
1248         "requestInfo": {
1249           "$ref": "#/definitions/RequestInfo2"
1250         },
1251         "serviceProfile": {
1252           "$ref": "#/definitions/ServiceProfile"
1253         }
1254       }
1255     },
1256     "NSISelectionRequest": {
1257       "type": "object",
1258       "required": [
1259         "requestInfo",
1260         "serviceProfile",
1261         "NSTInfo"
1262       ],
1263       "properties": {
1264         "serviceProfile": {
1265           "$ref": "#/definitions/ServiceProfile"
1266         },
1267         "requestInfo": {
1268           "$ref": "#/definitions/RequestInfo2"
1269         },
1270         "NSTInfo": {
1271           "type": "array",
1272           "description": "List of NST(s)",
1273           "items": {
1274             "$ref": "#/definitions/NSTInfo"
1275           }
1276         }
1277       }
1278     },
1279     "NSSISelectionRequest": {
1280       "type": "object",
1281       "required": [
1282         "requestInfo",
1283         "NSSTInfo",
1284         "sliceProfile"
1285       ],
1286       "properties": {
1287         "sliceProfile": {
1288           "$ref": "#/definitions/SliceProfile"
1289         },
1290         "requestInfo": {
1291           "$ref": "#/definitions/RequestInfo2"
1292         },
1293         "NSSTInfo": {
1294           "$ref": "#/definitions/NSSTInfo"
1295         }
1296       }
1297     },
1298     "NSTInfo": {
1299       "type": "object",
1300       "required": [
1301         "UUID",
1302         "invariantUUID"
1303       ],
1304       "properties": {
1305         "UUID": {
1306           "type": "string",
1307           "format": "uuid",
1308           "description": "UUID of NST"
1309         },
1310         "invariantUUID": {
1311           "type": "string",
1312           "format": "uuid",
1313           "description": "Invariant UUID"
1314         }
1315       }
1316     },
1317     "NSSTInfo": {
1318       "type": "object",
1319       "required": [
1320         "UUID",
1321         "invariantUUID"
1322       ],
1323       "properties": {
1324         "UUID": {
1325           "type": "string",
1326           "format": "uuid",
1327           "description": "UUID of NSST"
1328         },
1329         "invariantUUID": {
1330           "type": "string",
1331           "format": "uuid",
1332           "description": "Invariant UUID"
1333         }
1334       }
1335     },
1336     "ServiceProfile": {
1337       "type": "string",
1338       "description": "JSON blob. Containing service profile parameters. The contents are based on 3GPP TS 23.541 Release 16 contents, and will be in the form of attribute value pairs.",
1339       "example": {
1340         "blob": "content"
1341       }
1342     },
1343     "SliceProfile": {
1344       "type": "string",
1345       "description": "JSON blob. Containing slice profile parameters. The contents are based on 3GPP TS 23.541 Release 16 contents, and will be in the form of attribute value pairs.",
1346       "example": {
1347         "blob": "content"
1348       }
1349     },
1350     "RequestInfo2": {
1351       "type": "object",
1352       "required": [
1353         "transactionId",
1354         "requestId",
1355         "callbackUrl",
1356         "sourceId"
1357       ],
1358       "properties": {
1359         "transactionId": {
1360           "type": "string",
1361           "format": "uuid",
1362           "description": "unique ID to track an ONAP transaction",
1363           "example": "d290f1ee-6c54-4b01-90e6-d701748f0851"
1364         },
1365         "requestId": {
1366           "type": "string",
1367           "format": "uuid",
1368           "description": "A unique ID to track multiple requests associated with a transaction",
1369           "example": "d290f1ee-6c54-4b01-90e6-d701748f0851"
1370         },
1371         "callbackUrl": {
1372           "type": "string",
1373           "format": "url",
1374           "description": "The end point of a callback service where recommendations are posted.",
1375           "example": "myDomain.com/myCallback"
1376         },
1377         "callbackHeader": {
1378           "type": "string",
1379           "description": "JSON blob. The header information a client expecting in a async callback.",
1380           "example": {
1381             "blob": "content"
1382           }
1383         },
1384         "sourceId": {
1385           "type": "string",
1386           "description": "The unique ID of a client making an optimization call.",
1387           "example": "d290f1ee-6c54-4b01-90e6-d701748f0851"
1388         },
1389         "timeout": {
1390           "type": "integer",
1391           "description": "A tolerance window (in second) for expecting solutions.",
1392           "example": 5
1393         }
1394       }
1395     },
1396     "NSTAsynchronousResponse": {
1397       "type": "object",
1398       "required": [
1399         "transactionId",
1400         "requestId",
1401         "requestStatus",
1402         "solutions"
1403       ],
1404       "properties": {
1405         "transactionId": {
1406           "type": "string",
1407           "format": "uuid",
1408           "description": "unique ID to track an ONAP transaction",
1409           "example": "d290f1ee-6c54-4b01-90e6-d701748f0851"
1410         },
1411         "requestId": {
1412           "type": "string",
1413           "format": "uuid",
1414           "description": "A unique ID to track multiple requests associated with a transaction",
1415           "example": "d290f1ee-6c54-4b01-90e6-d701748f0851"
1416         },
1417         "statusMessage": {
1418           "type": "string",
1419           "description": "Reasoning if a requestStatus is failed."
1420         },
1421         "requestStatus": {
1422           "type": "string",
1423           "enum": [
1424             "completed",
1425             "failed",
1426             "pending"
1427           ],
1428           "description": "The status of a request."
1429         },
1430         "solutions": {
1431           "type": "array",
1432           "items": {
1433             "$ref": "#/definitions/NSTSolution"
1434           },
1435           "description": "A list of NST solutions"
1436         }
1437       }
1438     },
1439     "NSTSolution": {
1440       "type": "object",
1441       "required": [
1442         "UUID",
1443         "NSTName",
1444         "invariantUUID",
1445         "matchLevel"
1446       ],
1447       "properties": {
1448         "invariantUUID": {
1449           "type": "string",
1450           "format": "uuid",
1451           "description": "Invariant UUID of NST"
1452         },
1453         "UUID": {
1454           "type": "string",
1455           "format": "UUID of NST"
1456         },
1457         "NSTName": {
1458           "type": "string",
1459           "description": "NST name"
1460         },
1461         "matchLevel": {
1462           "type": "string",
1463           "description": "JSON blob. Containing details of match of requirements in slice profile and percentage of fit"
1464         }
1465       }
1466     },
1467     "NSIAsynchronousResponse": {
1468       "type": "object",
1469       "required": [
1470         "transactionId",
1471         "requestId",
1472         "requestStatus",
1473         "solutions"
1474       ],
1475       "properties": {
1476         "transactionId": {
1477           "type": "string",
1478           "format": "uuid",
1479           "description": "unique ID to track an ONAP transaction",
1480           "example": "d290f1ee-6c54-4b01-90e6-d701748f0851"
1481         },
1482         "requestId": {
1483           "type": "string",
1484           "format": "uuid",
1485           "description": "A unique ID to track multiple requests associated with a transaction",
1486           "example": "d290f1ee-6c54-4b01-90e6-d701748f0851"
1487         },
1488         "statusMessage": {
1489           "type": "string",
1490           "description": "Reasoning if a requestStatus is failed."
1491         },
1492         "requestStatus": {
1493           "type": "string",
1494           "enum": [
1495             "completed",
1496             "failed",
1497             "pending"
1498           ],
1499           "description": "The status of a request."
1500         },
1501         "solutions": {
1502           "$ref": "#/definitions/NSISolution"
1503         }
1504       }
1505     },
1506     "NSISolution": {
1507       "type": "object",
1508       "properties": {
1509         "sharedNSIsolutions": {
1510           "type": "array",
1511           "items": {
1512             "$ref": "#/definitions/SharedNSISolution"
1513           },
1514           "description": "A list of shared NSI solutions"
1515         },
1516         "newNSISolutions": {
1517           "type": "array",
1518           "items": {
1519             "$ref": "#/definitions/NewNSISolution"
1520           },
1521           "description": "A list of new NSI solutions"
1522         }
1523       }
1524     },
1525     "SharedNSISolution": {
1526       "type": "object",
1527       "required": [
1528         "invariantUUID",
1529         "UUID",
1530         "NSIName",
1531         "NSIId",
1532         "matchLevel"
1533       ],
1534       "properties": {
1535         "invariantUUID": {
1536           "type": "string",
1537           "format": "uuid",
1538           "description": "Invariant UUID of NST"
1539         },
1540         "UUID": {
1541           "type": "string",
1542           "format": "uuid",
1543           "description": "UUID of NST"
1544         },
1545         "NSIName": {
1546           "type": "string",
1547           "description": "Name of NSI"
1548         },
1549         "NSIId": {
1550           "type": "string",
1551           "format": "uuid",
1552           "description": "Id of NSI"
1553         }
1554       }
1555     },
1556     "NewNSISolution": {
1557       "type": "object",
1558       "required": [
1559         "NSSISolutions",
1560         "matchLevel"
1561       ],
1562       "properties": {
1563         "NSTInfo": {
1564           "$ref": "#/definitions/NSTResponseInfo"
1565         },
1566         "NSSISolutions": {
1567           "type": "array",
1568           "description": "List of NSSIs which when concatenated shall form the NSI, in case NSSI is not present, only the sliceProfile will be included",
1569           "items": {
1570             "$ref": "#/definitions/NSSIInfo"
1571           }
1572         },
1573         "matchLevel": {
1574           "type": "string",
1575           "description": "JSON blob. Containing details of match of requirements in service profile, and recommendation rank"
1576         }
1577       }
1578     },
1579     "NSTResponseInfo": {
1580       "type": "object",
1581       "required": [
1582         "UUID",
1583         "invariantUUID",
1584         "NSTName"
1585       ],
1586       "properties": {
1587         "NSTName": {
1588           "type": "string",
1589           "description": "NST name"
1590         },
1591         "UUID": {
1592           "type": "string",
1593           "format": "uuid",
1594           "description": "UUID of NST"
1595         },
1596         "invariantUUID": {
1597           "type": "string",
1598           "format": "uuid",
1599           "description": "Invariant UUID"
1600         }
1601       }
1602     },
1603     "NSSIInfo": {
1604       "type": "object",
1605       "required": [
1606         "sliceProfile"
1607       ],
1608       "properties": {
1609         "sliceProfile": {
1610           "type": "string",
1611           "description": "JSON blob. Containing details of match of requirements in slice profile and percentage of fit"
1612         },
1613         "NSSTInfo": {
1614           "$ref": "#/definitions/NSSTResponseInfo"
1615         },
1616         "NSSISolution": {
1617           "$ref": "#/definitions/NSSIObject"
1618         }
1619       }
1620     },
1621     "NSSTResponseInfo": {
1622       "type": "object",
1623       "required": [
1624         "NSSTName",
1625         "UUID",
1626         "invariantUUID"
1627       ],
1628       "properties": {
1629         "NSSTName": {
1630           "type": "string",
1631           "description": "Name of the NSST"
1632         },
1633         "UUID": {
1634           "type": "string",
1635           "format": "uuid",
1636           "description": "UUID of NSST"
1637         },
1638         "invariantUUID": {
1639           "type": "string",
1640           "format": "uuid",
1641           "description": "Invariant UUID"
1642         }
1643       }
1644     },
1645     "NSSIObject": {
1646       "type": "object",
1647       "required": [
1648         "NSSIName",
1649         "NSSIId",
1650         "matchLevel"
1651       ],
1652       "properties": {
1653         "NSSIName": {
1654           "type": "string",
1655           "description": "Name of NSSI"
1656         },
1657         "NSSIId": {
1658           "type": "string",
1659           "description": "Id of NSSI"
1660         },
1661         "matchLevel": {
1662           "type": "string",
1663           "description": "JSON blob. Containing details of match of requirements in slice profile and percentage of fit"
1664         }
1665       }
1666     },
1667     "NSSIAsynchronousResponse": {
1668       "type": "object",
1669       "required": [
1670         "transactionId",
1671         "requestId",
1672         "requestStatus",
1673         "solutions"
1674       ],
1675       "properties": {
1676         "transactionId": {
1677           "type": "string",
1678           "format": "uuid",
1679           "description": "unique ID to track an ONAP transaction",
1680           "example": "d290f1ee-6c54-4b01-90e6-d701748f0851"
1681         },
1682         "requestId": {
1683           "type": "string",
1684           "format": "uuid",
1685           "description": "A unique ID to track multiple requests associated with a transaction",
1686           "example": "d290f1ee-6c54-4b01-90e6-d701748f0851"
1687         },
1688         "statusMessage": {
1689           "type": "string",
1690           "description": "Reasoning if a requestStatus is failed."
1691         },
1692         "requestStatus": {
1693           "type": "string",
1694           "enum": [
1695             "completed",
1696             "failed",
1697             "pending"
1698           ],
1699           "description": "The status of a request."
1700         },
1701         "solutions": {
1702           "type": "array",
1703           "items": {
1704             "$ref": "#/definitions/NSSISolution"
1705           },
1706           "description": "A list of NSSI solutions"
1707         }
1708       }
1709     },
1710     "NSSISolution": {
1711       "type": "object",
1712       "required": [
1713         "invariantUUID",
1714         "UUID",
1715         "NSSIName",
1716         "NSSIId",
1717         "matchLevel"
1718       ],
1719       "properties": {
1720         "invariantUUID": {
1721           "type": "string",
1722           "format": "uuid",
1723           "description": "Invariant UUID of NSST"
1724         },
1725         "UUID": {
1726           "type": "string",
1727           "format": "uuid",
1728           "description": "UUID of NSST"
1729         },
1730         "NSSIName": {
1731           "type": "string",
1732           "description": "Name of NSSI"
1733         },
1734         "NSSIId": {
1735           "type": "string",
1736           "description": "Id of NSSI"
1737         },
1738         "matchLevel": {
1739           "type": "string",
1740           "description": "JSON blob. Containing details of match of requirements in slice profile and percentage of fit"
1741         }
1742       }
1743     }
1744   },
1745   "schemes": [
1746     "https"
1747   ],
1748   "host": "virtserver.swaggerhub.com",
1749   "basePath": "/oof-osdf/v1"
1750 }