changes done in swagger file
[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   },
264   "definitions": {
265     "PlacementRequest": {
266       "type": "object",
267       "required": [
268         "requestInfo",
269         "placementInfo",
270         "licenseInfo",
271         "serviceInfo"
272       ],
273       "properties": {
274         "requestInfo": {
275           "$ref": "#/definitions/RequestInfo"
276         },
277         "placementInfo": {
278           "$ref": "#/definitions/PlacementInfo"
279         },
280         "licenseInfo": {
281           "$ref": "#/definitions/LicenseInfo"
282         },
283         "serviceInfo": {
284           "$ref": "#/definitions/ServiceInfo"
285         }
286       }
287     },
288     "RequestInfo": {
289       "type": "object",
290       "required": [
291         "transactionId",
292         "requestId",
293         "callbackUrl",
294         "sourceId",
295         "requestType",
296         "optimizers",
297         "timeout"
298       ],
299       "properties": {
300         "transactionId": {
301           "type": "string",
302           "format": "uuid",
303           "description": "unique ID to track an ONAP transaction",
304           "example": "d290f1ee-6c54-4b01-90e6-d701748f0851"
305         },
306         "requestId": {
307           "type": "string",
308           "format": "uuid",
309           "description": "A unique ID to track multiple requests associated with a transaction",
310           "example": "d290f1ee-6c54-4b01-90e6-d701748f0851"
311         },
312         "callbackUrl": {
313           "type": "string",
314           "format": "url",
315           "description": "The end point of a callback service where recommendations are posted.",
316           "example": "myDomain.com/myCallback"
317         },
318         "callbackHeader": {
319           "type": "string",
320           "description": "JSON blob. The header information a client expecting in a async callback.",
321           "example": {
322             "blob": "content"
323           }
324         },
325         "sourceId": {
326           "type": "string",
327           "description": "The unique ID of a client making an optimization call.",
328           "example": "d290f1ee-6c54-4b01-90e6-d701748f0851"
329         },
330         "requestType": {
331           "type": "string",
332           "enum": [
333             "create",
334             "update",
335             "delete"
336           ],
337           "description": "The type of a request",
338           "example": "create"
339         },
340         "numSolutions": {
341           "type": "integer",
342           "description": "Expected number of solutions.",
343           "example": 1
344         },
345         "optimizers": {
346           "type": "array",
347           "items": {
348             "type": "string",
349             "enum": [
350               "placement",
351               "pci",
352               "pci-anr"
353             ]
354           },
355           "description": "A list of optimization services.",
356           "example": [
357             "placement"
358           ]
359         },
360         "timeout": {
361           "type": "integer",
362           "description": "A tolerance window (in second) for expecting solutions.",
363           "example": 5
364         }
365       }
366     },
367     "PlacementInfo": {
368       "type": "object",
369       "required": [
370         "requestParameters",
371         "placementDemands"
372       ],
373       "properties": {
374         "requestParameters": {
375           "type": "string",
376           "description": "JSON blob. A service ordering information",
377           "example": {
378             "blob": "content"
379           }
380         },
381         "placementDemands": {
382           "type": "array",
383           "items": {
384             "$ref": "#/definitions/PlacementDemand"
385           },
386           "description": "The resource information for a placement service"
387         },
388         "subscriberInfo": {
389           "type": "object",
390           "items": {
391             "$ref": "#/definitions/SubscriberInfo"
392           },
393           "description": "The information of a service subscriber."
394         }
395       }
396     },
397     "PlacementDemand": {
398       "type": "object",
399       "required": [
400         "resourceModuleName",
401         "serviceResourceId",
402         "resourceModelInfo"
403       ],
404       "properties": {
405         "resourceModuleName": {
406           "type": "string",
407           "description": "A resource name as defined in a service mode",
408           "example": "myResourceName"
409         },
410         "serviceResourceId": {
411           "type": "string",
412           "description": "A unique resource Id with a local scope between client and OOF.",
413           "example": "myResourceId"
414         },
415         "givenPlacement": {
416           "type": "object",
417           "additionalProperties": {
418             "type": "object",
419             "properties": {
420               "key": {
421                 "type": "string"
422               },
423               "value": {
424                 "type": "string"
425               }
426             }
427           },
428           "description": "placement parameters defined in the ordering system, keyname include tenantId",
429           "example": {
430             "tenantId": "1"
431           }
432         },
433         "resourceModelInfo": {
434           "$ref": "#/definitions/ModelMetaData"
435         },
436         "existingCandidates": {
437           "$ref": "#/definitions/Candidates"
438         },
439         "excludedCandidates": {
440           "$ref": "#/definitions/Candidates"
441         },
442         "requiredCandidates": {
443           "$ref": "#/definitions/Candidates"
444         }
445       }
446     },
447     "ModelMetaData": {
448       "type": "object",
449       "required": [
450         "modelInvariantId",
451         "modelVersionId"
452       ],
453       "properties": {
454         "modelInvariantId": {
455           "type": "string",
456           "description": "A model invariant Id as defined in a service model.",
457           "example": "my model invariant Id"
458         },
459         "modelVersionId": {
460           "type": "string",
461           "description": "A unique model Id as defined in a service model.",
462           "example": "my unique model Id"
463         },
464         "modelName": {
465           "type": "string",
466           "description": "A model name as defined in a service model",
467           "example": "my model name"
468         },
469         "modelType": {
470           "type": "string",
471           "description": "A model type as defined in a service model.",
472           "example": "my model type"
473         },
474         "modelVersion": {
475           "type": "string",
476           "description": "A model version as defined in a service model.",
477           "example": "my model version"
478         },
479         "modelCustomizationName": {
480           "type": "string",
481           "description": "A model customization name as defined in a service model.",
482           "example": "my model customization"
483         }
484       }
485     },
486     "Candidates": {
487       "type": "object",
488       "required": [
489         "identifierType",
490         "identifiers"
491       ],
492       "properties": {
493         "identifierType": {
494           "type": "string",
495           "enum": [
496             "service_instance_id",
497             "vnf_name",
498             "cloud_region_id"
499           ],
500           "description": "The type of a candidate.",
501           "example": "service_instance_id"
502         },
503         "identifiers": {
504           "type": "array",
505           "items": {
506             "type": "string"
507           },
508           "description": "A list of identifiers.",
509           "example": "candidateId"
510         },
511         "cloudOwner": {
512           "type": "string",
513           "description": "The name of a cloud owner. Only required if identifierType is cloud_region_id",
514           "example": "cloud_owner"
515         }
516       }
517     },
518     "SubscriberInfo": {
519       "type": "object",
520       "required": [
521         "globalSubscriberId",
522         "subscriberName",
523         "subscriberCommonSiteId"
524       ],
525       "properties": {
526         "globalSubscriberId": {
527           "type": "string",
528           "description": "An ID of a subscriber.",
529           "example": "subscriber_id"
530         },
531         "subscriberName": {
532           "type": "string",
533           "description": "The name of a subscriber. If the name is not known, the value must be 'unknown'",
534           "example": "subscriber_name"
535         },
536         "subscriberCommonSiteId": {
537           "type": "string",
538           "description": "Id representing a subscriber location",
539           "example": "subscriber_location_id"
540         }
541       }
542     },
543     "LicenseInfo": {
544       "type": "object",
545       "required": [
546         "licenseDemands"
547       ],
548       "properties": {
549         "licenseDemands": {
550           "type": "array",
551           "items": {
552             "$ref": "#/definitions/LicenseDemands"
553           },
554           "description": "A list of resources for license selection"
555         }
556       }
557     },
558     "LicenseDemands": {
559       "type": "object",
560       "required": [
561         "resourceModuleName",
562         "serviceResourceId",
563         "resourceModelInfo"
564       ],
565       "properties": {
566         "resourceModuleName": {
567           "type": "string",
568           "description": "A resource name as defined in a service model.",
569           "example": "service_instance_id"
570         },
571         "serviceResourceId": {
572           "type": "string",
573           "description": "A unique resource Id with a local scope between client and OOF.",
574           "example": "service_instance_id"
575         },
576         "resourceModelInfo": {
577           "$ref": "#/definitions/ModelMetaData"
578         },
579         "existingLicenses": {
580           "$ref": "#/definitions/LicenseModel"
581         }
582       }
583     },
584     "LicenseModel": {
585       "type": "object",
586       "required": [
587         "entitlementPoolUUID",
588         "licenseKeyGroupUUID"
589       ],
590       "properties": {
591         "entitlementPoolUUID": {
592           "type": "array",
593           "items": {
594             "type": "string",
595             "format": "uuid"
596           },
597           "description": "Entitlement pool UUIDs associated with a resource.",
598           "example": "candidateId"
599         },
600         "licenseKeyGroupUUID": {
601           "type": "array",
602           "items": {
603             "type": "string",
604             "format": "uuid"
605           },
606           "description": "License key groups associated with a resource",
607           "example": "candidateId"
608         }
609       }
610     },
611     "SynchronousResponse": {
612       "type": "object",
613       "required": [
614         "requestId",
615         "transactionId",
616         "requestStatus"
617       ],
618       "properties": {
619         "requestId": {
620           "type": "string",
621           "format": "uuid",
622           "description": "A unique Id for an ONAP transaction",
623           "example": "ONAP transaction id"
624         },
625         "transactionId": {
626           "type": "string",
627           "format": "uuid",
628           "description": "A unique ID to track multiple requests associated with a transaction.",
629           "example": "requests id"
630         },
631         "statusMessage": {
632           "type": "string",
633           "description": "Reasoning if a requestStatus is failure.",
634           "example": "requestStatus"
635         },
636         "requestStatus": {
637           "type": "string",
638           "enum": [
639             "success",
640             "failure"
641           ],
642           "description": "The status of a request.",
643           "example": "success"
644         }
645       }
646     },
647     "PlacementAsynchronousResponse": {
648       "type": "object",
649       "required": [
650         "requestId",
651         "transactionId",
652         "requestStatus",
653         "solutions"
654       ],
655       "properties": {
656         "requestId": {
657           "type": "string",
658           "format": "uuid",
659           "description": "A unique Id for an ONAP transaction",
660           "example": "ONAP transaction id"
661         },
662         "transactionId": {
663           "type": "string",
664           "format": "uuid",
665           "description": "A unique ID to track multiple requests associated with a transaction.",
666           "example": "requests id"
667         },
668         "statusMessage": {
669           "type": "string",
670           "description": "Reasoning if a requestStatus is failure.",
671           "example": "requestStatus"
672         },
673         "requestStatus": {
674           "type": "string",
675           "enum": [
676             "success",
677             "failure"
678           ],
679           "description": "The status of a request.",
680           "example": "success"
681         },
682         "solutions": {
683           "$ref": "#/definitions/Solutions"
684         }
685       }
686     },
687     "Solutions": {
688       "type": "object",
689       "required": [
690         "placementSolutions",
691         "licenseSolutions"
692       ],
693       "properties": {
694         "placementSolutions": {
695           "type": "array",
696           "items": {
697             "$ref": "#/definitions/ComprehensiveSolution"
698           },
699           "description": "A list of placement solutions."
700         },
701         "licenseSolutions": {
702           "type": "array",
703           "items": {
704             "$ref": "#/definitions/LicenseSolution"
705           },
706           "description": "A list of license solutions."
707         }
708       }
709     },
710     "ComprehensiveSolution": {
711       "type": "object",
712       "required": [
713         "placementSolutions"
714       ],
715       "properties": {
716         "placementSolutions": {
717           "type": "array",
718           "items": {
719             "$ref": "#/definitions/PlacementSolution"
720           },
721           "description": "A list of placement solutions."
722         }
723       }
724     },
725     "PlacementSolution": {
726       "type": "object",
727       "required": [
728         "resourceModuleName",
729         "serviceResourceId",
730         "identifierType",
731         "identifier"
732       ],
733       "properties": {
734         "resourceModuleName": {
735           "type": "string",
736           "description": "The name of a resource as defined in the service model",
737           "example": "resource name"
738         },
739         "serviceResourceId": {
740           "type": "string",
741           "description": "A resource Id as defined in a service model.",
742           "example": "resource id"
743         },
744         "identifierType": {
745           "type": "string",
746           "enum": [
747             "service_instance_id"
748           ],
749           "description": "The type of a candidate.",
750           "example": "candidate type"
751         },
752         "identifier": {
753           "type": "string",
754           "description": "The id of a candidate.",
755           "example": "candidate id"
756         },
757         "assignmentInfo": {
758           "type": "array",
759           "items": {
760             "$ref": "#/definitions/AssignmentInfo"
761           },
762           "description": "Additional information related to a candidate."
763         }
764       }
765     },
766     "AssignmentInfo": {
767       "type": "object",
768       "required": [
769         "key",
770         "value"
771       ],
772       "properties": {
773         "key": {
774           "type": "string",
775           "description": "An attribute name",
776           "example": "attribute name"
777         },
778         "value": {
779           "type": "string",
780           "description": "An attribute value.",
781           "example": "attribute value"
782         }
783       }
784     },
785     "LicenseSolution": {
786       "type": "object",
787       "required": [
788         "resourceModuleName",
789         "serviceResourceId",
790         "entitlementPoolUUID",
791         "licenseKeyGroupUUID",
792         "entitlementPoolInvariantUUID",
793         "licenseKeyGroupInvariantUUID"
794       ],
795       "properties": {
796         "resourceModuleName": {
797           "type": "string",
798           "description": "A resource name as defined in a service",
799           "example": "resource name"
800         },
801         "serviceResourceId": {
802           "type": "string",
803           "description": "A resource Id as defined in a service.",
804           "example": "resource Id"
805         },
806         "entitlementPoolUUID": {
807           "type": "array",
808           "items": {
809             "type": "string",
810             "format": "uuid"
811           },
812           "description": "A list of entitlementPoolUUIDs",
813           "example": "entitlementPoolUUID"
814         },
815         "licenseKeyGroupUUID": {
816           "type": "array",
817           "items": {
818             "type": "string",
819             "format": "uuid"
820           },
821           "description": "A list of licenseKeyGroupUUID.",
822           "example": "licenseKeyGroupUUID"
823         },
824         "entitlementPoolInvariantUUID": {
825           "type": "array",
826           "items": {
827             "type": "string",
828             "format": "uuid"
829           },
830           "description": "A list of entitlementPoolInvariantUUID",
831           "example": "entitlementPoolInvariantUUID"
832         },
833         "licenseKeyGroupInvariantUUID": {
834           "type": "array",
835           "items": {
836             "type": "string",
837             "format": "uuid"
838           },
839           "description": "A list of licenseKeyGroupInvariantUUID",
840           "example": "licenseKeyGroupInvariantUUID"
841         }
842       }
843     },
844     "ServiceInfo": {
845       "type": "object",
846       "required": [
847         "serviceInstanceId",
848         "modelInfo",
849         "serviceName"
850       ],
851       "properties": {
852         "serviceInstanceId": {
853           "type": "string",
854           "description": "A service instance id associated with a request.",
855           "example": "service_instance_id"
856         },
857         "modelInfo": {
858           "$ref": "#/definitions/ModelMetaData"
859         },
860         "serviceName": {
861           "type": "string",
862           "description": "The name of a service",
863           "example": "service_name"
864         }
865       }
866     },
867     "PCIOptRequest": {
868       "type": "object",
869       "required": [
870         "requestInfo",
871         "cellInfo"
872       ],
873       "properties": {
874         "requestInfo": {
875           "$ref": "#/definitions/RequestInfo"
876         },
877         "cellInfo": {
878           "$ref": "#/definitions/CellInfo"
879         }
880       }
881     },
882     "CellInfo": {
883       "type": "object",
884       "required": [
885         "networkId",
886         "cellIdList",
887         "anrInputList",
888         "trigger"
889       ],
890       "properties": {
891         "networkId": {
892           "type": "string",
893           "description": "Id of network requiring PCI optimization",
894           "example": 100
895         },
896         "cellIdList": {
897           "type": "array",
898           "items": {
899             "type": "string"
900           },
901           "description": "List of cellIds triggering need for PCI optimization (eg.potential confusion)",
902           "example": [
903             "cell0001",
904             "cell0002"
905           ]
906         },
907         "anrInputList": {
908           "type": "array",
909           "items": {
910             "$ref": "#/definitions/ANRInfo"
911           },
912           "description": "A list of ANR Input."
913         },
914         "trigger": {
915           "type": "string",
916           "description": "Type of trigger causing need for PCI optimization",
917           "example": "NbrListChange"
918         }
919       }
920     },
921     "PCIAsynchronousResponse": {
922       "type": "object",
923       "required": [
924         "requestId",
925         "transactionId",
926         "requestStatus",
927         "solutions"
928       ],
929       "properties": {
930         "requestId": {
931           "type": "string",
932           "format": "uuid",
933           "description": "A unique Id for an ONAP transaction",
934           "example": "ONAP transaction id"
935         },
936         "transactionId": {
937           "type": "string",
938           "format": "uuid",
939           "description": "A unique ID to track multiple requests associated with a transaction.",
940           "example": "requests id"
941         },
942         "statusMessage": {
943           "type": "string",
944           "description": "Reasoning if a requestStatus is failure.",
945           "example": "requestStatus"
946         },
947         "requestStatus": {
948           "type": "string",
949           "enum": [
950             "success",
951             "failure"
952           ],
953           "description": "The status of a request.",
954           "example": "success"
955         },
956         "solutions": {
957           "$ref": "#/definitions/PCIANRSolutions"
958         }
959       }
960     },
961     "PCIANRSolutions": {
962       "type": "object",
963       "required": [
964         "networkId",
965         "pciSolutions",
966         "anrSolutions"
967       ],
968       "properties": {
969         "networkId": {
970           "type": "string",
971           "description": "Id of network requiring PCI optimization",
972           "example": 100
973         },
974         "pciSolutions": {
975           "type": "array",
976           "items": {
977             "$ref": "#/definitions/PCISolution"
978           },
979           "description": "A list of PCI solutions."
980         },
981         "anrSolutions": {
982           "type": "array",
983           "items": {
984             "$ref": "#/definitions/ANRInfo"
985           },
986           "description": "A list of ANR solutions."
987         }
988       }
989     },
990     "PCISolution": {
991       "type": "object",
992       "required": [
993         "cellId",
994         "pci"
995       ],
996       "properties": {
997         "cellId": {
998           "type": "string",
999           "description": "cellId with modified PCI value",
1000           "example": "cell0001"
1001         },
1002         "pci": {
1003           "type": "integer",
1004           "description": "New PCI value for cellId",
1005           "example": 1
1006         }
1007       }
1008     },
1009     "ANRInfo": {
1010       "type": "object",
1011       "required": [
1012         "cellId",
1013         "removeableNeighbors"
1014       ],
1015       "properties": {
1016         "cellId": {
1017           "type": "string",
1018           "description": "cellId with modified PCI value",
1019           "example": "cell0001"
1020         },
1021         "removeableNeighbors": {
1022           "type": "array",
1023           "items": {
1024             "type": "string"
1025           },
1026           "description": "List of neighbors to be removed",
1027           "example": [
1028             "cell0002",
1029             "cell0003"
1030           ]
1031         }
1032       }
1033     },
1034     "NSTSelectionRequest": {
1035       "type": "object",
1036       "required": [
1037         "requestInfo",
1038         "serviceProfile"
1039       ],
1040       "properties": {
1041         "requestInfo": {
1042           "$ref": "#/definitions/RequestInfo2"
1043         },
1044         "serviceProfile": {
1045           "$ref": "#/definitions/ServiceProfile"
1046         }
1047       }
1048     },
1049     "NSISelectionRequest": {
1050       "type": "object",
1051       "required": [
1052         "requestInfo",
1053         "serviceProfile",
1054         "NSTInfo"
1055       ],
1056       "properties": {
1057         "serviceProfile": {
1058           "$ref": "#/definitions/ServiceProfile"
1059         },
1060         "requestInfo": {
1061           "$ref": "#/definitions/RequestInfo2"
1062         },
1063         "NSTInfo": {
1064           "type": "array",
1065           "description": "List of NST(s)",
1066           "items": {
1067             "$ref": "#/definitions/NSTInfo"
1068           }
1069         }
1070       }
1071     },
1072     "NSSISelectionRequest": {
1073       "type": "object",
1074       "required": [
1075         "requestInfo",
1076         "NSSTInfo",
1077         "sliceProfile"
1078       ],
1079       "properties": {
1080         "sliceProfile": {
1081           "$ref": "#/definitions/SliceProfile"
1082         },
1083         "requestInfo": {
1084           "$ref": "#/definitions/RequestInfo2"
1085         },
1086         "NSSTInfo": {
1087           "$ref": "#/definitions/NSSTInfo"
1088         }
1089       }
1090     },
1091     "NSTInfo": {
1092       "type": "object",
1093       "required": [
1094         "UUID",
1095         "invariantUUID"
1096       ],
1097       "properties": {
1098         "UUID": {
1099           "type": "string",
1100           "format": "uuid",
1101           "description": "UUID of NST"
1102         },
1103         "invariantUUID": {
1104           "type": "string",
1105           "format": "uuid",
1106           "description": "Invariant UUID"
1107         }
1108       }
1109     },
1110     "NSSTInfo": {
1111       "type": "object",
1112       "required": [
1113         "UUID",
1114         "invariantUUID"
1115       ],
1116       "properties": {
1117         "UUID": {
1118           "type": "string",
1119           "format": "uuid",
1120           "description": "UUID of NSST"
1121         },
1122         "invariantUUID": {
1123           "type": "string",
1124           "format": "uuid",
1125           "description": "Invariant UUID"
1126         }
1127       }
1128     },
1129     "ServiceProfile": {
1130       "type": "string",
1131       "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.",
1132       "example": {
1133         "blob": "content"
1134       }
1135     },
1136     "SliceProfile": {
1137       "type": "string",
1138       "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.",
1139       "example": {
1140         "blob": "content"
1141       }
1142     },
1143     "RequestInfo2": {
1144       "type": "object",
1145       "required": [
1146         "transactionId",
1147         "requestId",
1148         "callbackUrl",
1149         "sourceId"
1150       ],
1151       "properties": {
1152         "transactionId": {
1153           "type": "string",
1154           "format": "uuid",
1155           "description": "unique ID to track an ONAP transaction",
1156           "example": "d290f1ee-6c54-4b01-90e6-d701748f0851"
1157         },
1158         "requestId": {
1159           "type": "string",
1160           "format": "uuid",
1161           "description": "A unique ID to track multiple requests associated with a transaction",
1162           "example": "d290f1ee-6c54-4b01-90e6-d701748f0851"
1163         },
1164         "callbackUrl": {
1165           "type": "string",
1166           "format": "url",
1167           "description": "The end point of a callback service where recommendations are posted.",
1168           "example": "myDomain.com/myCallback"
1169         },
1170         "callbackHeader": {
1171           "type": "string",
1172           "description": "JSON blob. The header information a client expecting in a async callback.",
1173           "example": {
1174             "blob": "content"
1175           }
1176         },
1177         "sourceId": {
1178           "type": "string",
1179           "description": "The unique ID of a client making an optimization call.",
1180           "example": "d290f1ee-6c54-4b01-90e6-d701748f0851"
1181         },
1182         "timeout": {
1183           "type": "integer",
1184           "description": "A tolerance window (in second) for expecting solutions.",
1185           "example": 5
1186         }
1187       }
1188     },
1189     "NSTAsynchronousResponse": {
1190       "type": "object",
1191       "required": [
1192         "transactionId",
1193         "requestId",
1194         "requestStatus",
1195         "solutions"
1196       ],
1197       "properties": {
1198         "transactionId": {
1199           "type": "string",
1200           "format": "uuid",
1201           "description": "unique ID to track an ONAP transaction",
1202           "example": "d290f1ee-6c54-4b01-90e6-d701748f0851"
1203         },
1204         "requestId": {
1205           "type": "string",
1206           "format": "uuid",
1207           "description": "A unique ID to track multiple requests associated with a transaction",
1208           "example": "d290f1ee-6c54-4b01-90e6-d701748f0851"
1209         },
1210         "statusMessage": {
1211           "type": "string",
1212           "description": "Reasoning if a requestStatus is failed."
1213         },
1214         "requestStatus": {
1215           "type": "string",
1216           "enum": [
1217             "completed",
1218             "failed",
1219             "pending"
1220           ],
1221           "description": "The status of a request."
1222         },
1223         "solutions": {
1224           "type": "array",
1225           "items": {
1226             "$ref": "#/definitions/NSTSolution"
1227           },
1228           "description": "A list of NST solutions"
1229         }
1230       }
1231     },
1232     "NSTSolution": {
1233       "type": "object",
1234       "required": [
1235         "UUID",
1236         "NSTName",
1237         "invariantUUID",
1238         "matchLevel"
1239       ],
1240       "properties": {
1241         "invariantUUID": {
1242           "type": "string",
1243           "format": "uuid",
1244           "description": "Invariant UUID of NST"
1245         },
1246         "UUID": {
1247           "type": "string",
1248           "format": "UUID of NST"
1249         },
1250         "NSTName": {
1251           "type": "string",
1252           "description": "NST name"
1253         },
1254         "matchLevel": {
1255           "type": "string",
1256           "description": "JSON blob. Containing details of match of requirements in slice profile and percentage of fit"
1257         }
1258       }
1259     },
1260     "NSIAsynchronousResponse": {
1261       "type": "object",
1262       "required": [
1263         "transactionId",
1264         "requestId",
1265         "requestStatus",
1266         "solutions"
1267       ],
1268       "properties": {
1269         "transactionId": {
1270           "type": "string",
1271           "format": "uuid",
1272           "description": "unique ID to track an ONAP transaction",
1273           "example": "d290f1ee-6c54-4b01-90e6-d701748f0851"
1274         },
1275         "requestId": {
1276           "type": "string",
1277           "format": "uuid",
1278           "description": "A unique ID to track multiple requests associated with a transaction",
1279           "example": "d290f1ee-6c54-4b01-90e6-d701748f0851"
1280         },
1281         "statusMessage": {
1282           "type": "string",
1283           "description": "Reasoning if a requestStatus is failed."
1284         },
1285         "requestStatus": {
1286           "type": "string",
1287           "enum": [
1288             "completed",
1289             "failed",
1290             "pending"
1291           ],
1292           "description": "The status of a request."
1293         },
1294         "solutions": {
1295           "$ref": "#/definitions/NSISolution"
1296         }
1297       }
1298     },
1299     "NSISolution": {
1300       "type": "object",
1301       "properties": {
1302         "sharedNSIsolutions": {
1303           "type": "array",
1304           "items": {
1305             "$ref": "#/definitions/SharedNSISolution"
1306           },
1307           "description": "A list of shared NSI solutions"
1308         },
1309         "newNSISolutions": {
1310           "type": "array",
1311           "items": {
1312             "$ref": "#/definitions/NewNSISolution"
1313           },
1314           "description": "A list of new NSI solutions"
1315         }
1316       }
1317     },
1318     "SharedNSISolution": {
1319       "type": "object",
1320       "required": [
1321         "invariantUUID",
1322         "UUID",
1323         "NSIName",
1324         "NSIId",
1325         "matchLevel"
1326       ],
1327       "properties": {
1328         "invariantUUID": {
1329           "type": "string",
1330           "format": "uuid",
1331           "description": "Invariant UUID of NST"
1332         },
1333         "UUID": {
1334           "type": "string",
1335           "format": "uuid",
1336           "description": "UUID of NST"
1337         },
1338         "NSIName": {
1339           "type": "string",
1340           "description": "Name of NSI"
1341         },
1342         "NSIId": {
1343           "type": "string",
1344           "format": "uuid",
1345           "description": "Id of NSI"
1346         }
1347       }
1348     },
1349     "NewNSISolution": {
1350       "type": "object",
1351       "required": [
1352         "NSSISolutions",
1353         "matchLevel"
1354       ],
1355       "properties": {
1356         "NSTInfo": {
1357           "$ref": "#/definitions/NSTResponseInfo"
1358         },
1359         "NSSISolutions": {
1360           "type": "array",
1361           "description": "List of NSSIs which when concatenated shall form the NSI, in case NSSI is not present, only the sliceProfile will be included",
1362           "items": {
1363             "$ref": "#/definitions/NSSIInfo"
1364           }
1365         },
1366         "matchLevel": {
1367           "type": "string",
1368           "description": "JSON blob. Containing details of match of requirements in service profile, and recommendation rank"
1369         }
1370       }
1371     },
1372     "NSTResponseInfo": {
1373       "type": "object",
1374       "required": [
1375         "UUID",
1376         "invariantUUID",
1377         "NSTName"
1378       ],
1379       "properties": {
1380         "NSTName": {
1381           "type": "string",
1382           "description": "NST name"
1383         },
1384         "UUID": {
1385           "type": "string",
1386           "format": "uuid",
1387           "description": "UUID of NST"
1388         },
1389         "invariantUUID": {
1390           "type": "string",
1391           "format": "uuid",
1392           "description": "Invariant UUID"
1393         }
1394       }
1395     },
1396     "NSSIInfo": {
1397       "type": "object",
1398       "required": [
1399         "sliceProfile"
1400       ],
1401       "properties": {
1402         "sliceProfile": {
1403           "type": "string",
1404           "description": "JSON blob. Containing details of match of requirements in slice profile and percentage of fit"
1405         },
1406         "NSSTInfo": {
1407           "$ref": "#/definitions/NSSTResponseInfo"
1408         },
1409         "NSSISolution": {
1410           "$ref": "#/definitions/NSSIObject"
1411         }
1412       }
1413     },
1414     "NSSTResponseInfo": {
1415       "type": "object",
1416       "required": [
1417         "NSSTName",
1418         "UUID",
1419         "invariantUUID"
1420       ],
1421       "properties": {
1422         "NSSTName": {
1423           "type": "string",
1424           "description": "Name of the NSST"
1425         },
1426         "UUID": {
1427           "type": "string",
1428           "format": "uuid",
1429           "description": "UUID of NSST"
1430         },
1431         "invariantUUID": {
1432           "type": "string",
1433           "format": "uuid",
1434           "description": "Invariant UUID"
1435         }
1436       }
1437     },
1438     "NSSIObject": {
1439       "type": "object",
1440       "required": [
1441         "NSSIName",
1442         "NSSIId",
1443         "matchLevel"
1444       ],
1445       "properties": {
1446         "NSSIName": {
1447           "type": "string",
1448           "description": "Name of NSSI"
1449         },
1450         "NSSIId": {
1451           "type": "string",
1452           "description": "Id of NSSI"
1453         },
1454         "matchLevel": {
1455           "type": "string",
1456           "description": "JSON blob. Containing details of match of requirements in slice profile and percentage of fit"
1457         }
1458       }
1459     },
1460     "NSSIAsynchronousResponse": {
1461       "type": "object",
1462       "required": [
1463         "transactionId",
1464         "requestId",
1465         "requestStatus",
1466         "solutions"
1467       ],
1468       "properties": {
1469         "transactionId": {
1470           "type": "string",
1471           "format": "uuid",
1472           "description": "unique ID to track an ONAP transaction",
1473           "example": "d290f1ee-6c54-4b01-90e6-d701748f0851"
1474         },
1475         "requestId": {
1476           "type": "string",
1477           "format": "uuid",
1478           "description": "A unique ID to track multiple requests associated with a transaction",
1479           "example": "d290f1ee-6c54-4b01-90e6-d701748f0851"
1480         },
1481         "statusMessage": {
1482           "type": "string",
1483           "description": "Reasoning if a requestStatus is failed."
1484         },
1485         "requestStatus": {
1486           "type": "string",
1487           "enum": [
1488             "completed",
1489             "failed",
1490             "pending"
1491           ],
1492           "description": "The status of a request."
1493         },
1494         "solutions": {
1495           "type": "array",
1496           "items": {
1497             "$ref": "#/definitions/NSSISolution"
1498           },
1499           "description": "A list of NSSI solutions"
1500         }
1501       }
1502     },
1503     "NSSISolution": {
1504       "type": "object",
1505       "required": [
1506         "invariantUUID",
1507         "UUID",
1508         "NSSIName",
1509         "NSSIId",
1510         "matchLevel"
1511       ],
1512       "properties": {
1513         "invariantUUID": {
1514           "type": "string",
1515           "format": "uuid",
1516           "description": "Invariant UUID of NSST"
1517         },
1518         "UUID": {
1519           "type": "string",
1520           "format": "uuid",
1521           "description": "UUID of NSST"
1522         },
1523         "NSSIName": {
1524           "type": "string",
1525           "description": "Name of NSSI"
1526         },
1527         "NSSIId": {
1528           "type": "string",
1529           "description": "Id of NSSI"
1530         },
1531         "matchLevel": {
1532           "type": "string",
1533           "description": "JSON blob. Containing details of match of requirements in slice profile and percentage of fit"
1534         }
1535       }
1536     }
1537   },
1538   "schemes": [
1539     "https"
1540   ],
1541   "host": "virtserver.swaggerhub.com",
1542   "basePath": "/oof-osdf/v1"
1543 }