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