swagger updates
[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/ServiceProfileNst"
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     "ServiceProfileNst": {
1381       "type": "object",
1382       "required": [
1383           "serviceProfileParameters"
1384       ],
1385       "properties": {
1386         "serviceProfileParameters":{
1387           "$ref": "#/definitions/ServiceProfile"
1388         }
1389       }
1390     },
1391     "SliceProfile": {
1392       "type": "string",
1393       "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.",
1394       "example": {
1395         "blob": "content"
1396       }
1397     },
1398     "RequestInfo2": {
1399       "type": "object",
1400       "required": [
1401         "transactionId",
1402         "requestId",
1403         "callbackUrl",
1404         "sourceId"
1405       ],
1406       "properties": {
1407         "transactionId": {
1408           "type": "string",
1409           "format": "uuid",
1410           "description": "unique ID to track an ONAP transaction",
1411           "example": "d290f1ee-6c54-4b01-90e6-d701748f0851"
1412         },
1413         "requestId": {
1414           "type": "string",
1415           "format": "uuid",
1416           "description": "A unique ID to track multiple requests associated with a transaction",
1417           "example": "d290f1ee-6c54-4b01-90e6-d701748f0851"
1418         },
1419         "callbackUrl": {
1420           "type": "string",
1421           "format": "url",
1422           "description": "The end point of a callback service where recommendations are posted.",
1423           "example": "myDomain.com/myCallback"
1424         },
1425         "callbackHeader": {
1426           "type": "string",
1427           "description": "JSON blob. The header information a client expecting in a async callback.",
1428           "example": {
1429             "blob": "content"
1430           }
1431         },
1432         "sourceId": {
1433           "type": "string",
1434           "description": "The unique ID of a client making an optimization call.",
1435           "example": "d290f1ee-6c54-4b01-90e6-d701748f0851"
1436         },
1437         "timeout": {
1438           "type": "integer",
1439           "description": "A tolerance window (in second) for expecting solutions.",
1440           "example": 5
1441         }
1442       }
1443     },
1444     "NSTAsynchronousResponse": {
1445       "type": "object",
1446       "required": [
1447         "transactionId",
1448         "requestId",
1449         "requestStatus",
1450         "solutions"
1451       ],
1452       "properties": {
1453         "transactionId": {
1454           "type": "string",
1455           "format": "uuid",
1456           "description": "unique ID to track an ONAP transaction",
1457           "example": "d290f1ee-6c54-4b01-90e6-d701748f0851"
1458         },
1459         "requestId": {
1460           "type": "string",
1461           "format": "uuid",
1462           "description": "A unique ID to track multiple requests associated with a transaction",
1463           "example": "d290f1ee-6c54-4b01-90e6-d701748f0851"
1464         },
1465         "statusMessage": {
1466           "type": "string",
1467           "description": "Reasoning if a requestStatus is failed."
1468         },
1469         "requestStatus": {
1470           "type": "string",
1471           "enum": [
1472             "completed",
1473             "failed",
1474             "pending"
1475           ],
1476           "description": "The status of a request."
1477         },
1478         "solutions": {
1479           "type": "array",
1480           "items": {
1481             "$ref": "#/definitions/NSTSolution"
1482           },
1483           "description": "A list of NST solutions"
1484         }
1485       }
1486     },
1487     "NSTSolution": {
1488       "type": "object",
1489       "required": [
1490         "UUID",
1491         "NSTName",
1492         "invariantUUID",
1493         "matchLevel"
1494       ],
1495       "properties": {
1496         "invariantUUID": {
1497           "type": "string",
1498           "format": "uuid",
1499           "description": "Invariant UUID of NST"
1500         },
1501         "UUID": {
1502           "type": "string",
1503           "format": "UUID of NST"
1504         },
1505         "NSTName": {
1506           "type": "string",
1507           "description": "NST name"
1508         },
1509         "matchLevel": {
1510           "type": "string",
1511           "description": "JSON blob. Containing details of match of requirements in slice profile and percentage of fit"
1512         }
1513       }
1514     },
1515     "NSIAsynchronousResponse": {
1516       "type": "object",
1517       "required": [
1518         "transactionId",
1519         "requestId",
1520         "requestStatus",
1521         "solutions"
1522       ],
1523       "properties": {
1524         "transactionId": {
1525           "type": "string",
1526           "format": "uuid",
1527           "description": "unique ID to track an ONAP transaction",
1528           "example": "d290f1ee-6c54-4b01-90e6-d701748f0851"
1529         },
1530         "requestId": {
1531           "type": "string",
1532           "format": "uuid",
1533           "description": "A unique ID to track multiple requests associated with a transaction",
1534           "example": "d290f1ee-6c54-4b01-90e6-d701748f0851"
1535         },
1536         "statusMessage": {
1537           "type": "string",
1538           "description": "Reasoning if a requestStatus is failed."
1539         },
1540         "requestStatus": {
1541           "type": "string",
1542           "enum": [
1543             "completed",
1544             "failed",
1545             "pending"
1546           ],
1547           "description": "The status of a request."
1548         },
1549         "solutions": {
1550           "$ref": "#/definitions/NSISolution"
1551         }
1552       }
1553     },
1554     "NSISolution": {
1555       "type": "object",
1556       "properties": {
1557         "sharedNSIsolutions": {
1558           "type": "array",
1559           "items": {
1560             "$ref": "#/definitions/SharedNSISolution"
1561           },
1562           "description": "A list of shared NSI solutions"
1563         },
1564         "newNSISolutions": {
1565           "type": "array",
1566           "items": {
1567             "$ref": "#/definitions/NewNSISolution"
1568           },
1569           "description": "A list of new NSI solutions"
1570         }
1571       }
1572     },
1573     "SharedNSISolution": {
1574       "type": "object",
1575       "required": [
1576         "invariantUUID",
1577         "UUID",
1578         "NSIName",
1579         "NSIId",
1580         "matchLevel"
1581       ],
1582       "properties": {
1583         "invariantUUID": {
1584           "type": "string",
1585           "format": "uuid",
1586           "description": "Invariant UUID of NST"
1587         },
1588         "UUID": {
1589           "type": "string",
1590           "format": "uuid",
1591           "description": "UUID of NST"
1592         },
1593         "NSIName": {
1594           "type": "string",
1595           "description": "Name of NSI"
1596         },
1597         "NSIId": {
1598           "type": "string",
1599           "format": "uuid",
1600           "description": "Id of NSI"
1601         },
1602         "NSSIs": {
1603           "type": "array",
1604           "items": {
1605             "$ref": "#/definitions/NSSI"
1606           },
1607           "description": "A list of NSSIs"
1608         },
1609       }
1610     },
1611     "NSSI":{
1612       "type": "object",
1613       "required": [
1614         "NSSIName",
1615         "NSSIId",
1616         "UUID",
1617         "invariantUUID"
1618       ],
1619       "properties": {
1620         "NSSIName": {
1621           "type": "string",
1622           "description": "Name of NSSI"
1623         },
1624         "NSSIId": {
1625           "type": "string",
1626           "description": "Id of NSSI"
1627         },
1628         "UUID": {
1629           "type": "string",
1630           "description": "UUID of NSST"
1631         },
1632         "invariantUUID": {
1633           "type": "string",
1634           "description": "invariantUUID of NSST"
1635         },
1636         "sliceProfile": {
1637           "type": "array",
1638           "items": {
1639             "$ref": "#/definitions/SliceProfile"
1640           },
1641           "description": "list of SliceProfiles",
1642         }
1643       }
1644     },
1645     "NewNSISolution": {
1646       "type": "object",
1647       "required": [
1648         "NSSISolutions",
1649         "matchLevel"
1650       ],
1651       "properties": {
1652         "NSTInfo": {
1653           "$ref": "#/definitions/NSTResponseInfo"
1654         },
1655         "NSSISolutions": {
1656           "type": "array",
1657           "description": "List of NSSIs which when concatenated shall form the NSI, in case NSSI is not present, only the sliceProfile will be included",
1658           "items": {
1659             "$ref": "#/definitions/NSSIInfo"
1660           }
1661         },
1662         "matchLevel": {
1663           "type": "string",
1664           "description": "JSON blob. Containing details of match of requirements in service profile, and recommendation rank"
1665         }
1666       }
1667     },
1668     "NSTResponseInfo": {
1669       "type": "object",
1670       "required": [
1671         "UUID",
1672         "invariantUUID",
1673         "NSTName"
1674       ],
1675       "properties": {
1676         "NSTName": {
1677           "type": "string",
1678           "description": "NST name"
1679         },
1680         "UUID": {
1681           "type": "string",
1682           "format": "uuid",
1683           "description": "UUID of NST"
1684         },
1685         "invariantUUID": {
1686           "type": "string",
1687           "format": "uuid",
1688           "description": "Invariant UUID"
1689         }
1690       }
1691     },
1692     "NSSIInfo": {
1693       "type": "object",
1694       "required": [
1695         "sliceProfile"
1696       ],
1697       "properties": {
1698         "sliceProfile": {
1699           "type": "string",
1700           "description": "JSON blob. Containing details of match of requirements in slice profile and percentage of fit"
1701         },
1702         "NSSTInfo": {
1703           "$ref": "#/definitions/NSSTResponseInfo"
1704         },
1705         "NSSISolution": {
1706           "$ref": "#/definitions/NSSIObject"
1707         }
1708       }
1709     },
1710     "NSSTResponseInfo": {
1711       "type": "object",
1712       "required": [
1713         "NSSTName",
1714         "UUID",
1715         "invariantUUID"
1716       ],
1717       "properties": {
1718         "NSSTName": {
1719           "type": "string",
1720           "description": "Name of the NSST"
1721         },
1722         "UUID": {
1723           "type": "string",
1724           "format": "uuid",
1725           "description": "UUID of NSST"
1726         },
1727         "invariantUUID": {
1728           "type": "string",
1729           "format": "uuid",
1730           "description": "Invariant UUID"
1731         }
1732       }
1733     },
1734     "NSSIObject": {
1735       "type": "object",
1736       "required": [
1737         "NSSIName",
1738         "NSSIId",
1739         "matchLevel"
1740       ],
1741       "properties": {
1742         "NSSIName": {
1743           "type": "string",
1744           "description": "Name of NSSI"
1745         },
1746         "NSSIId": {
1747           "type": "string",
1748           "description": "Id of NSSI"
1749         },
1750         "matchLevel": {
1751           "type": "string",
1752           "description": "JSON blob. Containing details of match of requirements in slice profile and percentage of fit"
1753         }
1754       }
1755     },
1756     "NSSIAsynchronousResponse": {
1757       "type": "object",
1758       "required": [
1759         "transactionId",
1760         "requestId",
1761         "requestStatus",
1762         "solutions"
1763       ],
1764       "properties": {
1765         "transactionId": {
1766           "type": "string",
1767           "format": "uuid",
1768           "description": "unique ID to track an ONAP transaction",
1769           "example": "d290f1ee-6c54-4b01-90e6-d701748f0851"
1770         },
1771         "requestId": {
1772           "type": "string",
1773           "format": "uuid",
1774           "description": "A unique ID to track multiple requests associated with a transaction",
1775           "example": "d290f1ee-6c54-4b01-90e6-d701748f0851"
1776         },
1777         "statusMessage": {
1778           "type": "string",
1779           "description": "Reasoning if a requestStatus is failed."
1780         },
1781         "requestStatus": {
1782           "type": "string",
1783           "enum": [
1784             "completed",
1785             "failed",
1786             "pending"
1787           ],
1788           "description": "The status of a request."
1789         },
1790         "solutions": {
1791           "type": "array",
1792           "items": {
1793             "$ref": "#/definitions/NSSISolution"
1794           },
1795           "description": "A list of NSSI solutions"
1796         }
1797       }
1798     },
1799     "NSSISolution": {
1800       "type": "object",
1801       "required": [
1802         "invariantUUID",
1803         "UUID",
1804         "NSSIName",
1805         "NSSIId",
1806         "matchLevel"
1807       ],
1808       "properties": {
1809         "invariantUUID": {
1810           "type": "string",
1811           "format": "uuid",
1812           "description": "Invariant UUID of NSST"
1813         },
1814         "UUID": {
1815           "type": "string",
1816           "format": "uuid",
1817           "description": "UUID of NSST"
1818         },
1819         "NSSIName": {
1820           "type": "string",
1821           "description": "Name of NSSI"
1822         },
1823         "NSSIId": {
1824           "type": "string",
1825           "description": "Id of NSSI"
1826         },
1827         "matchLevel": {
1828           "type": "string",
1829           "description": "JSON blob. Containing details of match of requirements in slice profile and percentage of fit"
1830         }
1831       }
1832     }
1833   },
1834   "schemes": [
1835     "https"
1836   ],
1837   "host": "virtserver.swaggerhub.com",
1838   "basePath": "/oof-osdf/v1"
1839 }