@itentialopensource/adapter-drivenets_networkcloud 0.1.1 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/CALLS.md +74 -48
  2. package/CHANGELOG.md +16 -1
  3. package/CONTRIBUTING.md +1 -160
  4. package/ENHANCE.md +2 -2
  5. package/README.md +31 -22
  6. package/adapter.js +160 -330
  7. package/adapterBase.js +538 -873
  8. package/changelogs/CHANGELOG.md +9 -0
  9. package/metadata.json +49 -0
  10. package/package.json +23 -25
  11. package/pronghorn.json +474 -142
  12. package/propertiesSchema.json +453 -40
  13. package/refs?service=git-upload-pack +0 -0
  14. package/report/adapter-openapi.json +3111 -0
  15. package/report/adapter-openapi.yaml +2662 -0
  16. package/report/adapterInfo.json +8 -8
  17. package/report/updateReport1691507349574.json +120 -0
  18. package/report/updateReport1692202386592.json +120 -0
  19. package/report/updateReport1694460102344.json +120 -0
  20. package/report/updateReport1698420353530.json +120 -0
  21. package/sampleProperties.json +63 -2
  22. package/test/integration/adapterTestBasicGet.js +1 -1
  23. package/test/integration/adapterTestConnectivity.js +91 -42
  24. package/test/integration/adapterTestIntegration.js +130 -2
  25. package/test/unit/adapterBaseTestUnit.js +388 -313
  26. package/test/unit/adapterTestUnit.js +306 -109
  27. package/utils/adapterInfo.js +1 -1
  28. package/utils/addAuth.js +1 -1
  29. package/utils/artifactize.js +1 -1
  30. package/utils/checkMigrate.js +1 -1
  31. package/utils/entitiesToDB.js +1 -0
  32. package/utils/findPath.js +1 -1
  33. package/utils/methodDocumentor.js +71 -23
  34. package/utils/modify.js +13 -15
  35. package/utils/packModificationScript.js +1 -1
  36. package/utils/taskMover.js +309 -0
  37. package/utils/tbScript.js +3 -10
  38. package/utils/tbUtils.js +2 -3
  39. package/utils/testRunner.js +1 -1
  40. package/utils/troubleshootingAdapter.js +1 -3
  41. package/workflows/README.md +0 -3
@@ -0,0 +1,3111 @@
1
+ {
2
+ "openapi": "3.0.0",
3
+ "paths": {
4
+ "/network-cloud/login": {
5
+ "post": {
6
+ "summary": "Log into the Self Service Portal",
7
+ "operationId": "AppController_login",
8
+ "parameters": [
9
+ {
10
+ "$ref": "#/components/parameters/x-trace-id"
11
+ },
12
+ {
13
+ "$ref": "#/components/parameters/x-request-id"
14
+ }
15
+ ],
16
+ "requestBody": {
17
+ "required": true,
18
+ "content": {
19
+ "application/json": {
20
+ "schema": {
21
+ "$ref": "#/components/schemas/UserLoginDTO"
22
+ }
23
+ }
24
+ }
25
+ },
26
+ "responses": {
27
+ "200": {
28
+ "description": "Success",
29
+ "content": {
30
+ "application/json": {
31
+ "schema": {
32
+ "$ref": "#/components/schemas/AccessToken"
33
+ }
34
+ }
35
+ }
36
+ },
37
+ "401": {
38
+ "description": "Unauthorized"
39
+ }
40
+ },
41
+ "tags": [
42
+ "Log in"
43
+ ],
44
+ "description": "Use the credentials provided to log into the Self Service Portal."
45
+ }
46
+ },
47
+ "/refresh-token": {
48
+ "get": {
49
+ "summary": "Retrieve a New Access Token",
50
+ "operationId": "AppController_refreshToken",
51
+ "parameters": [
52
+ {
53
+ "$ref": "#/components/parameters/x-trace-id"
54
+ },
55
+ {
56
+ "$ref": "#/components/parameters/x-request-id"
57
+ }
58
+ ],
59
+ "responses": {
60
+ "200": {
61
+ "description": "Success",
62
+ "content": {
63
+ "application/json": {
64
+ "schema": {
65
+ "$ref": "#/components/schemas/RefreshedToken"
66
+ }
67
+ }
68
+ }
69
+ },
70
+ "401": {
71
+ "description": "Access token is missing or invalid"
72
+ }
73
+ },
74
+ "security": [
75
+ {
76
+ "bearer": []
77
+ }
78
+ ],
79
+ "tags": [
80
+ "Log in"
81
+ ],
82
+ "description": "Sends a request to Network Cloud+ to generate a new access token."
83
+ }
84
+ },
85
+ "/locations": {
86
+ "get": {
87
+ "operationId": "getLocations",
88
+ "summary": "Retrieve Services for each PoP Location",
89
+ "parameters": [
90
+ {
91
+ "$ref": "#/components/parameters/x-trace-id"
92
+ },
93
+ {
94
+ "$ref": "#/components/parameters/x-request-id"
95
+ },
96
+ {
97
+ "name": "version",
98
+ "required": true,
99
+ "description": "The API version.",
100
+ "in": "path",
101
+ "example": "v1",
102
+ "schema": {
103
+ "type": "string",
104
+ "enum": [
105
+ "v1",
106
+ "v2",
107
+ "v3",
108
+ "v4"
109
+ ]
110
+ }
111
+ }
112
+ ],
113
+ "responses": {
114
+ "200": {
115
+ "description": "Services per location",
116
+ "content": {
117
+ "application/json": {
118
+ "schema": {
119
+ "$ref": "#/components/schemas/ServicesPerLocationResponse"
120
+ }
121
+ }
122
+ }
123
+ },
124
+ "401": {
125
+ "description": "Access token is missing or invalid"
126
+ },
127
+ "403": {
128
+ "description": "Service information error",
129
+ "content": {
130
+ "application/json": {
131
+ "schema": {
132
+ "$ref": "#/components/schemas/ErrorResponse"
133
+ }
134
+ }
135
+ }
136
+ },
137
+ "404": {
138
+ "description": "Service not found",
139
+ "content": {
140
+ "application/json": {
141
+ "schema": {
142
+ "$ref": "#/components/schemas/ErrorResponse"
143
+ }
144
+ }
145
+ }
146
+ },
147
+ "500": {
148
+ "description": "Internal server error"
149
+ }
150
+ },
151
+ "tags": [
152
+ "Point of Presence (PoP) Services"
153
+ ],
154
+ "description": "Retrieve a list of all PoPs and the services available at each location."
155
+ }
156
+ },
157
+ "/locations/{location}": {
158
+ "get": {
159
+ "operationId": "getLocation",
160
+ "summary": "Retrieve Services for a Specific PoP",
161
+ "parameters": [
162
+ {
163
+ "$ref": "#/components/parameters/x-trace-id"
164
+ },
165
+ {
166
+ "$ref": "#/components/parameters/x-request-id"
167
+ },
168
+ {
169
+ "name": "location",
170
+ "required": true,
171
+ "in": "path",
172
+ "example": "LAXCA",
173
+ "schema": {}
174
+ },
175
+ {
176
+ "name": "version",
177
+ "required": true,
178
+ "description": "The API version.",
179
+ "in": "path",
180
+ "example": "v1",
181
+ "schema": {
182
+ "type": "string",
183
+ "enum": [
184
+ "v1",
185
+ "v2",
186
+ "v3",
187
+ "v4"
188
+ ]
189
+ }
190
+ }
191
+ ],
192
+ "responses": {
193
+ "200": {
194
+ "description": "Services per location information",
195
+ "content": {
196
+ "application/json": {
197
+ "schema": {
198
+ "$ref": "#/components/schemas/ServicesPerLocationResponse"
199
+ }
200
+ }
201
+ }
202
+ },
203
+ "401": {
204
+ "description": "Access token is missing or invalid"
205
+ },
206
+ "403": {
207
+ "description": "Service information error",
208
+ "content": {
209
+ "application/json": {
210
+ "schema": {
211
+ "$ref": "#/components/schemas/ErrorResponse"
212
+ }
213
+ }
214
+ }
215
+ },
216
+ "404": {
217
+ "description": "Service not found",
218
+ "content": {
219
+ "application/json": {
220
+ "schema": {
221
+ "$ref": "#/components/schemas/ErrorResponse"
222
+ }
223
+ }
224
+ }
225
+ },
226
+ "500": {
227
+ "description": "Internal server error"
228
+ }
229
+ },
230
+ "tags": [
231
+ "Point of Presence (PoP) Services"
232
+ ],
233
+ "description": "Retrieve a list of the services available at a specific POP location."
234
+ }
235
+ },
236
+ "/": {
237
+ "post": {
238
+ "operationId": "postServiceItem",
239
+ "summary": "Add a Service",
240
+ "parameters": [
241
+ {
242
+ "$ref": "#/components/parameters/x-trace-id"
243
+ },
244
+ {
245
+ "$ref": "#/components/parameters/x-request-id"
246
+ },
247
+ {
248
+ "$ref": "#/components/parameters/x-account-id"
249
+ },
250
+ {
251
+ "name": "version",
252
+ "required": true,
253
+ "description": "The API version.",
254
+ "in": "path",
255
+ "example": "v1",
256
+ "schema": {
257
+ "type": "string",
258
+ "enum": [
259
+ "v1",
260
+ "v2",
261
+ "v3",
262
+ "v4"
263
+ ]
264
+ }
265
+ }
266
+ ],
267
+ "requestBody": {
268
+ "required": true,
269
+ "content": {
270
+ "application/json": {
271
+ "schema": {
272
+ "$ref": "#/components/schemas/CreateServiceBodyRequest"
273
+ }
274
+ }
275
+ }
276
+ },
277
+ "responses": {
278
+ "202": {
279
+ "description": "Service configuration received successfully, config initiated",
280
+ "content": {
281
+ "application/json": {
282
+ "schema": {
283
+ "$ref": "#/components/schemas/ServiceBodyResponse"
284
+ }
285
+ }
286
+ }
287
+ },
288
+ "400": {
289
+ "description": "Failed to add service",
290
+ "content": {
291
+ "application/json": {
292
+ "schema": {
293
+ "$ref": "#/components/schemas/ErrorResponse"
294
+ }
295
+ }
296
+ }
297
+ },
298
+ "401": {
299
+ "description": "Access token is missing or invalid"
300
+ },
301
+ "500": {
302
+ "description": "Internal server error"
303
+ }
304
+ },
305
+ "tags": [
306
+ "Services"
307
+ ],
308
+ "description": "The services you can add:\n\n- **Equinix Connect** - Creates a connection between Network Cloud+ and the customer's CPE in the Equinix network.\n\n- **Internet Gateway** - Connects a customer to the internet.\n\n- **Internet Service Provider** - Connects the internet gateway to an ISP.\n\nCombining one or more atomic services and then adding a policy create a solution. For example, the four atomic services above and several policies form the Internet Connect solution.\n\nThe response includes a unique service ID named 'ID' that references the specific service and its customer. You must save this ID to modify or delete a service."
309
+ }
310
+ },
311
+ "/{businessSid}": {
312
+ "put": {
313
+ "operationId": "putServiceItem",
314
+ "summary": "Update a Service",
315
+ "parameters": [
316
+ {
317
+ "$ref": "#/components/parameters/x-trace-id"
318
+ },
319
+ {
320
+ "$ref": "#/components/parameters/x-request-id"
321
+ },
322
+ {
323
+ "$ref": "#/components/parameters/x-account-id"
324
+ },
325
+ {
326
+ "name": "businessSid",
327
+ "required": true,
328
+ "description": "Unique ID provided by the Service Provider to identify a solution, which is a collection of several atomic services. When forming a solution, use the same BusinessSID.",
329
+ "in": "path",
330
+ "example": "34314231-3425423-123f23-23a2g42",
331
+ "schema": {}
332
+ },
333
+ {
334
+ "name": "version",
335
+ "required": true,
336
+ "description": "The API version.",
337
+ "in": "path",
338
+ "example": "v1",
339
+ "schema": {
340
+ "type": "string",
341
+ "enum": [
342
+ "v1",
343
+ "v2",
344
+ "v3",
345
+ "v4"
346
+ ]
347
+ }
348
+ }
349
+ ],
350
+ "requestBody": {
351
+ "required": true,
352
+ "content": {
353
+ "application/json": {
354
+ "schema": {
355
+ "$ref": "#/components/schemas/ServiceBodyRequest"
356
+ }
357
+ }
358
+ }
359
+ },
360
+ "responses": {
361
+ "202": {
362
+ "description": "Service configuration received successfully, config initiated",
363
+ "content": {
364
+ "application/json": {
365
+ "schema": {
366
+ "$ref": "#/components/schemas/ServiceBodyResponse"
367
+ }
368
+ }
369
+ }
370
+ },
371
+ "204": {
372
+ "description": "Service already configured"
373
+ },
374
+ "400": {
375
+ "description": "Failed to configure service",
376
+ "content": {
377
+ "application/json": {
378
+ "schema": {
379
+ "$ref": "#/components/schemas/ErrorResponse"
380
+ }
381
+ }
382
+ }
383
+ },
384
+ "401": {
385
+ "description": "Access token is missing or invalid"
386
+ },
387
+ "423": {
388
+ "description": "Service is locked. configuration in progress",
389
+ "content": {
390
+ "application/json": {
391
+ "schema": {
392
+ "$ref": "#/components/schemas/ResourceBusyResponse"
393
+ }
394
+ }
395
+ }
396
+ },
397
+ "500": {
398
+ "description": "Internal server error"
399
+ }
400
+ },
401
+ "tags": [
402
+ "Services"
403
+ ]
404
+ },
405
+ "delete": {
406
+ "operationId": "deleteServiceItem",
407
+ "summary": "Delete a Service",
408
+ "parameters": [
409
+ {
410
+ "$ref": "#/components/parameters/x-trace-id"
411
+ },
412
+ {
413
+ "$ref": "#/components/parameters/x-request-id"
414
+ },
415
+ {
416
+ "$ref": "#/components/parameters/x-account-id"
417
+ },
418
+ {
419
+ "name": "businessSid",
420
+ "required": true,
421
+ "description": "Unique ID provided by the Service Provider to identify a solution, which is a collection of several atomic services. When forming a solution, use the same BusinessSID.",
422
+ "in": "path",
423
+ "example": "34314231-3425423-123f23-23a2g42",
424
+ "schema": {}
425
+ },
426
+ {
427
+ "name": "version",
428
+ "required": true,
429
+ "description": "The API version.",
430
+ "in": "path",
431
+ "example": "v1",
432
+ "schema": {
433
+ "type": "string",
434
+ "enum": [
435
+ "v1",
436
+ "v2",
437
+ "v3",
438
+ "v4"
439
+ ]
440
+ }
441
+ }
442
+ ],
443
+ "responses": {
444
+ "200": {
445
+ "description": "Service deleted successfully",
446
+ "content": {
447
+ "application/json": {
448
+ "schema": {
449
+ "$ref": "#/components/schemas/DeleteServiceResponse"
450
+ }
451
+ }
452
+ }
453
+ },
454
+ "401": {
455
+ "description": "Access token is missing or invalid"
456
+ },
457
+ "403": {
458
+ "description": "Failed to delete service",
459
+ "content": {
460
+ "application/json": {
461
+ "schema": {
462
+ "$ref": "#/components/schemas/ErrorResponse"
463
+ }
464
+ }
465
+ }
466
+ },
467
+ "404": {
468
+ "description": "Service not found"
469
+ },
470
+ "500": {
471
+ "description": "Internal server error"
472
+ }
473
+ },
474
+ "tags": [
475
+ "Services"
476
+ ],
477
+ "description": "Delete all services that form the business service ID."
478
+ },
479
+ "get": {
480
+ "operationId": "getServiceItem",
481
+ "summary": "Retrieve Service Configuration",
482
+ "parameters": [
483
+ {
484
+ "name": "businessSid",
485
+ "required": true,
486
+ "description": "Unique ID provided by the Service Provider to identify a solution, which is a collection of several atomic services. When forming a solution, use the same BusinessSID.",
487
+ "in": "path",
488
+ "example": "34314231-3425423-123f23-23a2g42",
489
+ "schema": {}
490
+ },
491
+ {
492
+ "name": "version",
493
+ "required": true,
494
+ "description": "The API version.",
495
+ "in": "path",
496
+ "example": "v1",
497
+ "schema": {
498
+ "type": "string",
499
+ "enum": [
500
+ "v1",
501
+ "v2",
502
+ "v3",
503
+ "v4"
504
+ ]
505
+ }
506
+ }
507
+ ],
508
+ "responses": {
509
+ "200": {
510
+ "description": "Service information",
511
+ "content": {
512
+ "application/json": {
513
+ "schema": {
514
+ "$ref": "#/components/schemas/ServiceBodyRequest"
515
+ }
516
+ }
517
+ }
518
+ },
519
+ "401": {
520
+ "description": "Access token is missing or invalid"
521
+ },
522
+ "403": {
523
+ "description": "Error: Service info",
524
+ "content": {
525
+ "application/json": {
526
+ "schema": {
527
+ "$ref": "#/components/schemas/ErrorResponse"
528
+ }
529
+ }
530
+ }
531
+ },
532
+ "404": {
533
+ "description": "Service not found"
534
+ },
535
+ "500": {
536
+ "description": "Internal server error"
537
+ }
538
+ },
539
+ "tags": [
540
+ "Services"
541
+ ]
542
+ }
543
+ },
544
+ "/{businessSid}/state": {
545
+ "get": {
546
+ "operationId": "getServiceItemState",
547
+ "summary": "Retrieve Service Operational State",
548
+ "parameters": [
549
+ {
550
+ "name": "businessSid",
551
+ "required": true,
552
+ "description": "Unique ID provided by the Service Provider to identify a solution, which is a collection of several atomic services. When forming a solution, use the same BusinessSID.",
553
+ "in": "path",
554
+ "example": "34314231-3425423-123f23-23a2g42",
555
+ "schema": {}
556
+ },
557
+ {
558
+ "name": "version",
559
+ "required": true,
560
+ "description": "The API version.",
561
+ "in": "path",
562
+ "example": "v1",
563
+ "schema": {
564
+ "type": "string",
565
+ "enum": [
566
+ "v1",
567
+ "v2",
568
+ "v3",
569
+ "v4"
570
+ ]
571
+ }
572
+ }
573
+ ],
574
+ "responses": {
575
+ "200": {
576
+ "description": "Service state",
577
+ "content": {
578
+ "application/json": {
579
+ "schema": {
580
+ "$ref": "#/components/schemas/GetServiceStateResponse"
581
+ }
582
+ }
583
+ }
584
+ },
585
+ "401": {
586
+ "description": "Access token is missing or invalid"
587
+ },
588
+ "403": {
589
+ "description": "Service state error",
590
+ "content": {
591
+ "application/json": {
592
+ "schema": {
593
+ "$ref": "#/components/schemas/ErrorResponse"
594
+ }
595
+ }
596
+ }
597
+ },
598
+ "404": {
599
+ "description": "Service not found"
600
+ },
601
+ "500": {
602
+ "description": "Internal server error"
603
+ }
604
+ },
605
+ "tags": [
606
+ "Service State"
607
+ ],
608
+ "description": "Get the operational state of a particular business service ID."
609
+ }
610
+ },
611
+ "/{businessSid}/monitoring": {
612
+ "get": {
613
+ "operationId": "getServiceMonitoring",
614
+ "summary": "Retrieve Service monitoring data",
615
+ "parameters": [
616
+ {
617
+ "name": "businessSid",
618
+ "required": true,
619
+ "description": "Unique ID provided by the Service Provider to identify a solution, which is a collection of several atomic services. When forming a solution, use the same BusinessSID.",
620
+ "in": "path",
621
+ "example": "34314231-3425423-123f23-23a2g42",
622
+ "schema": {}
623
+ },
624
+ {
625
+ "name": "version",
626
+ "required": true,
627
+ "description": "The API version.",
628
+ "in": "path",
629
+ "example": "v1",
630
+ "schema": {
631
+ "type": "string",
632
+ "enum": [
633
+ "v1",
634
+ "v2",
635
+ "v3",
636
+ "v4"
637
+ ]
638
+ }
639
+ }
640
+ ],
641
+ "responses": {
642
+ "200": {
643
+ "description": "Service monitoring data",
644
+ "content": {
645
+ "application/json": {
646
+ "schema": {
647
+ "$ref": "#/components/schemas/GetServiceMonitoringResponse"
648
+ }
649
+ }
650
+ }
651
+ },
652
+ "401": {
653
+ "description": "Access token is missing or invalid"
654
+ },
655
+ "403": {
656
+ "description": "Service state error",
657
+ "content": {
658
+ "application/json": {
659
+ "schema": {
660
+ "$ref": "#/components/schemas/ErrorResponse"
661
+ }
662
+ }
663
+ }
664
+ },
665
+ "404": {
666
+ "description": "Service not found"
667
+ },
668
+ "500": {
669
+ "description": "Internal server error"
670
+ }
671
+ },
672
+ "tags": [
673
+ "Service State"
674
+ ]
675
+ }
676
+ },
677
+ "/serviceNode/command": {
678
+ "post": {
679
+ "operationId": "showCommand",
680
+ "summary": "Show Command",
681
+ "parameters": [
682
+ {
683
+ "name": "version",
684
+ "required": true,
685
+ "description": "The API version.",
686
+ "in": "path",
687
+ "example": "v1",
688
+ "schema": {
689
+ "type": "string",
690
+ "enum": [
691
+ "v1",
692
+ "v2",
693
+ "v3",
694
+ "v4"
695
+ ]
696
+ }
697
+ }
698
+ ],
699
+ "requestBody": {
700
+ "required": true,
701
+ "content": {
702
+ "application/json": {
703
+ "schema": {
704
+ "$ref": "#/components/schemas/ShowCommandBodyRequest"
705
+ }
706
+ }
707
+ }
708
+ },
709
+ "responses": {
710
+ "200": {
711
+ "description": "Show command response",
712
+ "content": {
713
+ "application/json": {
714
+ "schema": {
715
+ "$ref": "#/components/schemas/CommandResponse"
716
+ }
717
+ }
718
+ }
719
+ },
720
+ "400": {
721
+ "description": "Show command response failed",
722
+ "content": {
723
+ "application/json": {
724
+ "schema": {
725
+ "$ref": "#/components/schemas/ErrorResponse"
726
+ }
727
+ }
728
+ }
729
+ },
730
+ "401": {
731
+ "description": "Access token is missing or invalid"
732
+ },
733
+ "500": {
734
+ "description": "Internal server error"
735
+ }
736
+ },
737
+ "tags": [
738
+ "Show Command"
739
+ ],
740
+ "description": "Show commands display information about the system and system configuration, useful for troubleshooting. Information about the show commands can be found in DriveNets Documentation portal."
741
+ }
742
+ }
743
+ },
744
+ "info": {
745
+ "title": "DriveNets Network Cloud+ API",
746
+ "description": "API definitions for programmatic access to DriveNets Network Cloud+. The API calls are modelled after, and reflected in the Self-Service Portal User Interface.\n\nYou receive your username and password from DriveNets. The credentials for the API and the SSP are the same. When you first sign up with the SSP, a POST API request (/auth/login) is sent with the following payload:\n\n {\"username\":\"user@company.com\",\"password\":\"mypass\"}\n\nWhere “user@company.com” and “mypass” are the email address and password you provided during sign up.\n\nThe API call returns a token value. This is the authorization token for your account. This token is sent in the header of all API requests, as follows:\n\n Authorization: Bearer <token-value>\n\nThe REST API enables you to interact with the DriveNets Network Cloud+ systems to provision services for your customers from your server-side applications.\n### Base URL\nAll APIs are served over HTTPS and all the URLs referenced in the API documentation have the following base:\n\n https://:domain/network-cloud/v1/:resource/\n\nWhere:\n\n - domain - refers to the ISP Orchestration Gateway (e.g., portal.drivenets.net)\n\n - resource - refers to the resource on which the API call is made. A resource can be:\n\n - services\n\n - config\n\n - function\n\n - policy\n\n - version - refers to the API version.",
747
+ "version": "1.0",
748
+ "contact": {}
749
+ },
750
+ "tags": [],
751
+ "servers": [
752
+ {
753
+ "url": "https://portal.drivenets.net"
754
+ }
755
+ ],
756
+ "components": {
757
+ "parameters": {
758
+ "x-trace-id": {
759
+ "name": "x-trace-id",
760
+ "description": "An optional troubleshooting header that tracks a request to /from your API. It references multiple APIs in a configuration sequence. The ID transfers the request in the response body to enable you to view if any changes have occurred. You can only use hyphens and alphanumeric characters, for example -, a-z, A-Z, and 0-9.",
761
+ "required": false,
762
+ "in": "header",
763
+ "example": "34314231-3425423-123f23-23a2g42",
764
+ "schema": {}
765
+ },
766
+ "x-request-id": {
767
+ "name": "x-request-id",
768
+ "description": "An optional troubleshooting header. A unique ID is passed to the server in the API call. The server includes that ID in every log created. It enables the server operator to easily search for a specific request in the log information using the unique ID instead of cross referencing timestamps and IP addresses when troubleshooting. You can only use hyphen and alphanumeric characters, for example -, a-z, A-Z, and 0-9.",
769
+ "required": false,
770
+ "in": "header",
771
+ "example": "34314231-3425423-123f23-23a2g42",
772
+ "schema": {}
773
+ },
774
+ "x-account-id": {
775
+ "name": "x-account-id",
776
+ "description": "A unique ID issued by the Service Provider to identify a customer. You can only use hyphen and alphanumeric characters, for example -, a-z, A-Z, and 0-9.",
777
+ "required": false,
778
+ "in": "header",
779
+ "example": "34314231-3425423-123f23-23a2g42",
780
+ "schema": {}
781
+ }
782
+ },
783
+ "schemas": {
784
+ "IPv4_Address": {
785
+ "type": "object",
786
+ "properties": {
787
+ "ipv4Address": {
788
+ "type": "string",
789
+ "description": "An IP v4 address."
790
+ },
791
+ "ipv4Prefix": {
792
+ "type": "integer",
793
+ "description": "The prefix of the address (CIDR)."
794
+ }
795
+ }
796
+ },
797
+ "IPv6_Address": {
798
+ "type": "object",
799
+ "properties": {
800
+ "ipv6Address": {
801
+ "type": "string",
802
+ "description": "An IP v6 address."
803
+ },
804
+ "ipv6Prefix": {
805
+ "type": "integer",
806
+ "description": "The prefix of the address (CIDR)"
807
+ }
808
+ }
809
+ },
810
+ "IP_Address": {
811
+ "oneOf": [
812
+ {
813
+ "$ref": "#/components/schemas/IPv4_Address"
814
+ },
815
+ {
816
+ "$ref": "#/components/schemas/IPv6_Address"
817
+ }
818
+ ]
819
+ },
820
+ "Provider_Independent_Address": {
821
+ "type": "array",
822
+ "maxItems": 2,
823
+ "description": "Public or private IP addresses provided by the customer. Two sets of addresses must be created for redundancy.",
824
+ "items": {
825
+ "type": "object",
826
+ "properties": {
827
+ "ipv4IndependentAddress": {
828
+ "$ref": "#/components/schemas/IPv4_Address"
829
+ },
830
+ "ipv6IndependentAddress": {
831
+ "$ref": "#/components/schemas/IPv6_Address"
832
+ },
833
+ "connectionPriority": {
834
+ "type": "string",
835
+ "description": "For redundancy select whether this IP address is a primary or secondary type.",
836
+ "enum": [
837
+ "primary",
838
+ "secondary"
839
+ ]
840
+ }
841
+ }
842
+ }
843
+ },
844
+ "Provider_Aggregated_Address": {
845
+ "type": "object",
846
+ "description": "Private IP addresses provided from DriveNets' IP address pool. The subnet allocated is the same for all connections.",
847
+ "properties": {
848
+ "ipv4AggregatedAddress": {
849
+ "type": "object",
850
+ "properties": {
851
+ "prefixSize": {
852
+ "type": "integer",
853
+ "description": "Define the prefix length for the user address.",
854
+ "minimum": 24,
855
+ "maximum": 30
856
+ }
857
+ }
858
+ },
859
+ "ipv6AggregatedAddress": {
860
+ "type": "object",
861
+ "properties": {
862
+ "prefixSize": {
863
+ "type": "integer",
864
+ "description": "Define the prefix length for the user address.",
865
+ "minimum": 64,
866
+ "maximum": 126
867
+ }
868
+ }
869
+ }
870
+ }
871
+ },
872
+ "IG_Provider_Independent_Address": {
873
+ "type": "object",
874
+ "description": "Public or private IP addresses provided by the customer. Two sets of addresses must be created for redundancy.",
875
+ "properties": {
876
+ "ipv4IndependentAddress": {
877
+ "$ref": "#/components/schemas/IPv4_Address"
878
+ },
879
+ "ipv6IndependentAddress": {
880
+ "$ref": "#/components/schemas/IPv6_Address"
881
+ }
882
+ }
883
+ },
884
+ "IG_Provider_Aggregated_Address": {
885
+ "type": "object",
886
+ "description": "Private IP addresses provided from DriveNets' IP address pool. The subnet allocated is the same for all connections.",
887
+ "properties": {
888
+ "ipv4AggregatedAddress": {
889
+ "type": "object",
890
+ "properties": {
891
+ "prefixSize": {
892
+ "type": "integer",
893
+ "description": "Define prefix length for the user address",
894
+ "minimum": 24,
895
+ "maximum": 30
896
+ }
897
+ }
898
+ },
899
+ "ipv6AggregatedAddress": {
900
+ "type": "object",
901
+ "properties": {
902
+ "prefixSize": {
903
+ "type": "integer",
904
+ "description": "Define prefix length for the user address",
905
+ "minimum": 64,
906
+ "maximum": 126
907
+ }
908
+ }
909
+ }
910
+ }
911
+ },
912
+ "Azure_Provider_Private_Address": {
913
+ "type": "array",
914
+ "maxItems": 2,
915
+ "description": "Private address provided by the account",
916
+ "items": {
917
+ "type": "object",
918
+ "properties": {
919
+ "ipv4PrivateAddress": {
920
+ "$ref": "#/components/schemas/IPv4_Address"
921
+ },
922
+ "ipv6ProviderCustomAddress": {
923
+ "$ref": "#/components/schemas/IPv6_Address"
924
+ },
925
+ "connectionPriority": {
926
+ "type": "string",
927
+ "enum": [
928
+ "primary",
929
+ "secondary"
930
+ ]
931
+ }
932
+ }
933
+ }
934
+ },
935
+ "AtomicServiceParams": {
936
+ "oneOf": [
937
+ {
938
+ "$ref": "#/components/schemas/L3VpnParams"
939
+ }
940
+ ]
941
+ },
942
+ "CircuitParams": {
943
+ "oneOf": [
944
+ {
945
+ "$ref": "#/components/schemas/EquinixConnectParams"
946
+ },
947
+ {
948
+ "$ref": "#/components/schemas/InternetGatewayParams"
949
+ },
950
+ {
951
+ "$ref": "#/components/schemas/InternetServiceProviderParams"
952
+ },
953
+ {
954
+ "$ref": "#/components/schemas/AzureConnectParams"
955
+ }
956
+ ]
957
+ },
958
+ "CircuitResponseParams": {
959
+ "oneOf": [
960
+ {
961
+ "$ref": "#/components/schemas/InternetGatewayParams"
962
+ },
963
+ {
964
+ "$ref": "#/components/schemas/InternetServiceProviderParams"
965
+ },
966
+ {
967
+ "$ref": "#/components/schemas/AzureConnectParams"
968
+ },
969
+ {
970
+ "$ref": "#/components/schemas/EquinixConnectResponseParams"
971
+ }
972
+ ]
973
+ },
974
+ "FunctionParams": {
975
+ "type": "object",
976
+ "properties": {
977
+ "location": {
978
+ "type": "string"
979
+ },
980
+ "direction": {
981
+ "$ref": "#/components/schemas/FunctionDirection"
982
+ },
983
+ "functionOrder": {
984
+ "type": "integer",
985
+ "default": 1,
986
+ "minimum": 1,
987
+ "maximum": 1
988
+ },
989
+ "params": {
990
+ "oneOf": [
991
+ {
992
+ "$ref": "#/components/schemas/NatParams"
993
+ }
994
+ ]
995
+ }
996
+ }
997
+ },
998
+ "CreateServiceBodyRequest": {
999
+ "type": "object",
1000
+ "properties": {
1001
+ "businessSid": {
1002
+ "type": "string",
1003
+ "description": "Unique ID provided by the Service Provider to identify a solution, which is a collection of several atomic services. When forming a solution, use the same BusinessSID.",
1004
+ "example": "34314231-3425423-123f23-23a2g42"
1005
+ },
1006
+ "businessSidDescription": {
1007
+ "type": "string",
1008
+ "description": "Business id description",
1009
+ "example": "vADI service of Pepsi"
1010
+ },
1011
+ "atomicServices": {
1012
+ "type": "array",
1013
+ "description": "Entries for atomic services",
1014
+ "items": {
1015
+ "type": "object",
1016
+ "properties": {
1017
+ "atomicServiceTransactionTag": {
1018
+ "$ref": "#/components/schemas/TransactionTag"
1019
+ },
1020
+ "atomicServiceType": {
1021
+ "type": "string",
1022
+ "description": "Type of the atomic service.",
1023
+ "enum": [
1024
+ "EQUINIX_CONNECT",
1025
+ "INTERNET_GATEWAY",
1026
+ "INTERNET_SERVICE_PROVIDER",
1027
+ "AZURE_CONNECT"
1028
+ ]
1029
+ },
1030
+ "atomicServiceParams": {
1031
+ "$ref": "#/components/schemas/AtomicServiceParams"
1032
+ },
1033
+ "circuits": {
1034
+ "type": "array",
1035
+ "description": "Entries for atomic service circuits",
1036
+ "items": {
1037
+ "type": "object",
1038
+ "properties": {
1039
+ "circuitTransactionTag": {
1040
+ "type": "string",
1041
+ "description": "user provided circuit tag",
1042
+ "example": "MyCircuit"
1043
+ },
1044
+ "params": {
1045
+ "$ref": "#/components/schemas/CircuitParams"
1046
+ }
1047
+ }
1048
+ }
1049
+ }
1050
+ },
1051
+ "required": [
1052
+ "atomicServiceTransactionTag",
1053
+ "atomicServiceType"
1054
+ ]
1055
+ }
1056
+ },
1057
+ "policies": {
1058
+ "type": "array",
1059
+ "description": "Entries for policies",
1060
+ "items": {
1061
+ "type": "object",
1062
+ "properties": {
1063
+ "policyTransactionTag": {
1064
+ "type": "string",
1065
+ "description": "user provided policy tag"
1066
+ },
1067
+ "policyParams": {
1068
+ "$ref": "#/components/schemas/CreatePolicyBodyRequest"
1069
+ },
1070
+ "functions": {
1071
+ "type": "array",
1072
+ "description": "Entries for functions",
1073
+ "items": {
1074
+ "type": "object",
1075
+ "properties": {
1076
+ "functionTransactionTag": {
1077
+ "type": "string",
1078
+ "description": "user provided function tag"
1079
+ },
1080
+ "functionType": {
1081
+ "type": "string",
1082
+ "description": "Type of function",
1083
+ "example": "NAT"
1084
+ },
1085
+ "functionParams": {
1086
+ "$ref": "#/components/schemas/FunctionParams"
1087
+ }
1088
+ },
1089
+ "required": [
1090
+ "functionType",
1091
+ "functionParams"
1092
+ ]
1093
+ }
1094
+ }
1095
+ }
1096
+ }
1097
+ }
1098
+ },
1099
+ "required": [
1100
+ "businessSid",
1101
+ "atomicServices"
1102
+ ]
1103
+ },
1104
+ "ServiceBodyRequest": {
1105
+ "type": "object",
1106
+ "properties": {
1107
+ "businessSidDescription": {
1108
+ "type": "string",
1109
+ "description": "Business id description",
1110
+ "example": "vADI service of Pepsi"
1111
+ },
1112
+ "atomicServices": {
1113
+ "type": "array",
1114
+ "description": "Entries for atomic services",
1115
+ "items": {
1116
+ "type": "object",
1117
+ "properties": {
1118
+ "atomicServiceId": {
1119
+ "$ref": "#/components/schemas/componentId",
1120
+ "description": "Unique atomic service ID issued by the Network Cloud+ to identify an atomic service."
1121
+ },
1122
+ "atomicServiceTransactionTag": {
1123
+ "$ref": "#/components/schemas/TransactionTag"
1124
+ },
1125
+ "atomicServiceType": {
1126
+ "type": "string",
1127
+ "description": "Type of the atomic service.",
1128
+ "enum": [
1129
+ "EQUINIX_CONNECT",
1130
+ "INTERNET_GATEWAY",
1131
+ "INTERNET_SERVICE_PROVIDER",
1132
+ "AZURE_CONNECT"
1133
+ ]
1134
+ },
1135
+ "atomicServiceParams": {
1136
+ "$ref": "#/components/schemas/AtomicServiceParams"
1137
+ },
1138
+ "circuits": {
1139
+ "type": "array",
1140
+ "description": "Entries for atomic service circuits",
1141
+ "items": {
1142
+ "type": "object",
1143
+ "properties": {
1144
+ "circuitId": {
1145
+ "type": "string",
1146
+ "description": "Unique circuit ID issued by the Network Cloud+ to identify an circuit."
1147
+ },
1148
+ "circuitTransactionTag": {
1149
+ "type": "string",
1150
+ "description": "user provided circuit tag",
1151
+ "example": "MyCircuit"
1152
+ },
1153
+ "params": {
1154
+ "$ref": "#/components/schemas/CircuitParams"
1155
+ }
1156
+ }
1157
+ }
1158
+ }
1159
+ }
1160
+ }
1161
+ },
1162
+ "policies": {
1163
+ "type": "array",
1164
+ "description": "Entries for policies",
1165
+ "items": {
1166
+ "type": "object",
1167
+ "properties": {
1168
+ "policyId": {
1169
+ "type": "string",
1170
+ "description": "Unique policy ID issued by the Network Cloud+ to identify an policy."
1171
+ },
1172
+ "policyTransactionTag": {
1173
+ "type": "string",
1174
+ "description": "user provided policy tag"
1175
+ },
1176
+ "policyParams": {
1177
+ "$ref": "#/components/schemas/PolicyBodyRequest"
1178
+ },
1179
+ "functions": {
1180
+ "type": "array",
1181
+ "description": "Entries for functions",
1182
+ "items": {
1183
+ "type": "object",
1184
+ "properties": {
1185
+ "functionId": {
1186
+ "type": "string",
1187
+ "description": "Unique function ID issued by the Network Cloud+ to identify an function."
1188
+ },
1189
+ "functionTransactionTag": {
1190
+ "type": "string",
1191
+ "description": "user provided function tag."
1192
+ },
1193
+ "functionType": {
1194
+ "type": "string",
1195
+ "description": "Type of function.",
1196
+ "example": "NAT"
1197
+ },
1198
+ "functionParams": {
1199
+ "$ref": "#/components/schemas/FunctionParams"
1200
+ }
1201
+ }
1202
+ }
1203
+ }
1204
+ }
1205
+ }
1206
+ }
1207
+ }
1208
+ },
1209
+ "ServiceBodyResponse": {
1210
+ "type": "object",
1211
+ "properties": {
1212
+ "businessSid": {
1213
+ "type": "string",
1214
+ "description": "Unique ID provided by the Service Provider to identify a solution, which is a collection of several atomic services. When forming a solution, use the same BusinessSID.",
1215
+ "example": "34314231-3425423-123f23-23a2g42"
1216
+ },
1217
+ "atomicServices": {
1218
+ "type": "array",
1219
+ "description": "Entries for atomic services",
1220
+ "items": {
1221
+ "type": "object",
1222
+ "properties": {
1223
+ "atomicServiceId": {
1224
+ "$ref": "#/components/schemas/componentId",
1225
+ "description": "Unique atomic service ID issued by the Network Cloud+ to identify an atomic service."
1226
+ },
1227
+ "atomicServiceTransactionTag": {
1228
+ "$ref": "#/components/schemas/TransactionTag"
1229
+ },
1230
+ "atomicServiceType": {
1231
+ "type": "string",
1232
+ "description": "Type of the atomic service.",
1233
+ "enum": [
1234
+ "EQUINIX_CONNECT",
1235
+ "INTERNET_GATEWAY",
1236
+ "INTERNET_SERVICE_PROVIDER",
1237
+ "AZURE_CONNECT"
1238
+ ]
1239
+ },
1240
+ "atomicServiceParams": {
1241
+ "$ref": "#/components/schemas/AtomicServiceParams"
1242
+ },
1243
+ "circuits": {
1244
+ "type": "array",
1245
+ "description": "Entries for atomic service circuits",
1246
+ "items": {
1247
+ "type": "object",
1248
+ "properties": {
1249
+ "circuitId": {
1250
+ "type": "string",
1251
+ "description": "Unique circuit ID issued by the Network Cloud+ to identify an circuit."
1252
+ },
1253
+ "circuitTransactionTag": {
1254
+ "type": "string",
1255
+ "description": "user provided circuit tag",
1256
+ "example": "MyCircuit"
1257
+ },
1258
+ "params": {
1259
+ "$ref": "#/components/schemas/CircuitResponseParams"
1260
+ }
1261
+ }
1262
+ }
1263
+ }
1264
+ }
1265
+ }
1266
+ },
1267
+ "policies": {
1268
+ "type": "array",
1269
+ "description": "Entries for policies",
1270
+ "items": {
1271
+ "type": "object",
1272
+ "properties": {
1273
+ "policyId": {
1274
+ "type": "string",
1275
+ "description": "Unique policy ID issued by the Network Cloud+ to identify an policy."
1276
+ },
1277
+ "policyTransactionTag": {
1278
+ "type": "string",
1279
+ "description": "user provided policy tag"
1280
+ },
1281
+ "policyParams": {
1282
+ "$ref": "#/components/schemas/PolicyBodyRequest"
1283
+ },
1284
+ "functions": {
1285
+ "type": "array",
1286
+ "description": "Entries for functions",
1287
+ "items": {
1288
+ "type": "object",
1289
+ "properties": {
1290
+ "functionId": {
1291
+ "type": "string",
1292
+ "description": "Unique function ID issued by the Network Cloud+ to identify an function."
1293
+ },
1294
+ "functionTransactionTag": {
1295
+ "type": "string",
1296
+ "description": "user provided function tag"
1297
+ },
1298
+ "functionType": {
1299
+ "type": "string",
1300
+ "description": "Type of the function",
1301
+ "example": "NAT"
1302
+ },
1303
+ "functionParams": {
1304
+ "$ref": "#/components/schemas/FunctionParams"
1305
+ }
1306
+ }
1307
+ }
1308
+ }
1309
+ }
1310
+ }
1311
+ }
1312
+ }
1313
+ },
1314
+ "DeleteServiceResponse": {
1315
+ "type": "object",
1316
+ "properties": {
1317
+ "id": {
1318
+ "type": "string",
1319
+ "description": "Unique service ID",
1320
+ "example": "abcdef-abcdef-12345-12345"
1321
+ }
1322
+ },
1323
+ "required": [
1324
+ "id"
1325
+ ]
1326
+ },
1327
+ "EquinixConnectParams": {
1328
+ "type": "object",
1329
+ "properties": {
1330
+ "location": {
1331
+ "type": "string",
1332
+ "description": "Location of the peering location"
1333
+ },
1334
+ "fabricSubType": {
1335
+ "type": "string",
1336
+ "enum": [
1337
+ "zSideToken",
1338
+ "serviceProfile"
1339
+ ]
1340
+ },
1341
+ "bandwidth": {
1342
+ "type": "string",
1343
+ "enum": [
1344
+ "100mbps",
1345
+ "500mbps",
1346
+ "1gbps",
1347
+ "5gbps",
1348
+ "10gbps"
1349
+ ]
1350
+ },
1351
+ "isRedundant": {
1352
+ "type": "boolean",
1353
+ "default": false
1354
+ },
1355
+ "ipAddress": {
1356
+ "type": "object",
1357
+ "properties": {
1358
+ "providerIndependentAddress": {
1359
+ "$ref": "#/components/schemas/Provider_Independent_Address"
1360
+ },
1361
+ "providerAggregatedAddress": {
1362
+ "$ref": "#/components/schemas/Provider_Aggregated_Address"
1363
+ }
1364
+ }
1365
+ },
1366
+ "customerIpAddress": {
1367
+ "$ref": "#/components/schemas/Provider_Independent_Address"
1368
+ },
1369
+ "routing": {
1370
+ "$ref": "#/components/schemas/Routing"
1371
+ },
1372
+ "description": {
1373
+ "type": "string"
1374
+ }
1375
+ },
1376
+ "required": [
1377
+ "location",
1378
+ "bandwidth",
1379
+ "fabricSubType",
1380
+ "ipAddress",
1381
+ "routing"
1382
+ ]
1383
+ },
1384
+ "EquinixConnectResponseParams": {
1385
+ "type": "object",
1386
+ "properties": {
1387
+ "location": {
1388
+ "type": "string",
1389
+ "description": "Location of the peering location"
1390
+ },
1391
+ "fabricSubType": {
1392
+ "type": "string",
1393
+ "enum": [
1394
+ "zSideToken",
1395
+ "serviceProfile"
1396
+ ]
1397
+ },
1398
+ "bandwidth": {
1399
+ "type": "string",
1400
+ "enum": [
1401
+ "100mbps",
1402
+ "500mbps",
1403
+ "1gbps",
1404
+ "5gbps",
1405
+ "10gbps"
1406
+ ]
1407
+ },
1408
+ "isRedundant": {
1409
+ "type": "boolean",
1410
+ "default": false
1411
+ },
1412
+ "ipAddress": {
1413
+ "type": "object",
1414
+ "properties": {
1415
+ "providerIndependentAddress": {
1416
+ "$ref": "#/components/schemas/Provider_Independent_Address"
1417
+ },
1418
+ "providerAggregatedAddress": {
1419
+ "$ref": "#/components/schemas/Provider_Aggregated_Address"
1420
+ }
1421
+ }
1422
+ },
1423
+ "customerIpAddress": {
1424
+ "$ref": "#/components/schemas/Provider_Independent_Address"
1425
+ },
1426
+ "routing": {
1427
+ "$ref": "#/components/schemas/Routing"
1428
+ },
1429
+ "description": {
1430
+ "type": "string"
1431
+ },
1432
+ "authenticationKey": {
1433
+ "type": "string",
1434
+ "description": "Drivenets-assigned authentication key uuid, a 128-bit identifier."
1435
+ },
1436
+ "serviceProfile": {
1437
+ "type": "string",
1438
+ "description": "Name of Drivenets service profile in Equinix to connect to."
1439
+ }
1440
+ }
1441
+ },
1442
+ "AzureConnectParams": {
1443
+ "type": "object",
1444
+ "properties": {
1445
+ "sKey": {
1446
+ "type": "string",
1447
+ "description": "The s-key generated by Azure for the ExpressRoute service"
1448
+ },
1449
+ "bandwidth": {
1450
+ "type": "string",
1451
+ "enum": [
1452
+ "50mbps",
1453
+ "100mbps",
1454
+ "200mbps",
1455
+ "500mbps",
1456
+ "1gbps",
1457
+ "2gbps",
1458
+ "5gbps",
1459
+ "10gbps"
1460
+ ]
1461
+ },
1462
+ "location": {
1463
+ "type": "string"
1464
+ },
1465
+ "ipAddress": {
1466
+ "type": "object",
1467
+ "description": "The IP address to be used for Azure, bpth IPv4 (mask /30) and IPv6 (mask /126) addresses will be allocated from address pool, IPv4 address can be private.",
1468
+ "properties": {
1469
+ "customerPrivateIpAddress": {
1470
+ "$ref": "#/components/schemas/Azure_Provider_Private_Address"
1471
+ },
1472
+ "providerAggregatedAddress": {
1473
+ "$ref": "#/components/schemas/Provider_Aggregated_Address"
1474
+ }
1475
+ }
1476
+ },
1477
+ "routing": {
1478
+ "allOf": [
1479
+ {
1480
+ "$ref": "#/components/schemas/AzureBgpRouting"
1481
+ },
1482
+ {
1483
+ "$ref": "#/components/schemas/BgpSecret"
1484
+ }
1485
+ ]
1486
+ },
1487
+ "outboundRoutingPolicy": {
1488
+ "$ref": "#/components/schemas/OutboundRoutingPolicy"
1489
+ },
1490
+ "inboundRoutingPolicy": {
1491
+ "$ref": "#/components/schemas/InboundRoutingPolicy"
1492
+ }
1493
+ },
1494
+ "required": [
1495
+ "sKey",
1496
+ "ipAddress",
1497
+ "routing",
1498
+ "bandwidth",
1499
+ "location"
1500
+ ]
1501
+ },
1502
+ "InternetGatewayParams": {
1503
+ "type": "object",
1504
+ "properties": {
1505
+ "location": {
1506
+ "type": "string",
1507
+ "description": "Location of the internet gataeway"
1508
+ },
1509
+ "ipAddress": {
1510
+ "oneOf": [
1511
+ {
1512
+ "$ref": "#/components/schemas/IG_Provider_Independent_Address"
1513
+ },
1514
+ {
1515
+ "$ref": "#/components/schemas/IG_Provider_Aggregated_Address"
1516
+ }
1517
+ ]
1518
+ },
1519
+ "ispRoutingPolicy": {
1520
+ "description": "Control inbound bgp routing policy between ISP and IG",
1521
+ "$ref": "#/components/schemas/InboundRoutingPolicy"
1522
+ },
1523
+ "internetGatewayRedundancyMode": {
1524
+ "type": "string",
1525
+ "enum": [
1526
+ "active-active",
1527
+ "active-standby"
1528
+ ]
1529
+ }
1530
+ },
1531
+ "required": [
1532
+ "location"
1533
+ ]
1534
+ },
1535
+ "InternetServiceProviderParams": {
1536
+ "type": "object",
1537
+ "properties": {
1538
+ "location": {
1539
+ "type": "string"
1540
+ },
1541
+ "bandwidth": {
1542
+ "type": "string",
1543
+ "enum": [
1544
+ "50mbps",
1545
+ "100mbps",
1546
+ "200mbps",
1547
+ "500mbps",
1548
+ "1gbps",
1549
+ "2gbps",
1550
+ "5gbps",
1551
+ "10gbps"
1552
+ ]
1553
+ },
1554
+ "provider": {
1555
+ "type": "string",
1556
+ "enum": [
1557
+ "AT&T"
1558
+ ],
1559
+ "description": "The provider we're connected to"
1560
+ },
1561
+ "isRedundant": {
1562
+ "type": "boolean",
1563
+ "default": false
1564
+ }
1565
+ },
1566
+ "required": [
1567
+ "location",
1568
+ "bandwidth"
1569
+ ]
1570
+ },
1571
+ "L3VpnParams": {
1572
+ "type": "object",
1573
+ "properties": {
1574
+ "rt": {
1575
+ "type": "string"
1576
+ }
1577
+ }
1578
+ },
1579
+ "NatParams": {
1580
+ "type": "object",
1581
+ "properties": {
1582
+ "translationsRules": {
1583
+ "anyOf": [
1584
+ {
1585
+ "$ref": "#/components/schemas/NatStaticRules"
1586
+ },
1587
+ {
1588
+ "$ref": "#/components/schemas/NaptStaticRules"
1589
+ },
1590
+ {
1591
+ "$ref": "#/components/schemas/NatDynamicRules"
1592
+ },
1593
+ {
1594
+ "$ref": "#/components/schemas/NaptDynamicRules"
1595
+ }
1596
+ ]
1597
+ },
1598
+ "timeouts": {
1599
+ "$ref": "#/components/schemas/NatTimeouts"
1600
+ }
1601
+ }
1602
+ },
1603
+ "NatStaticRules": {
1604
+ "type": "array",
1605
+ "items": {
1606
+ "properties": {
1607
+ "natStaticRule": {
1608
+ "$ref": "#/components/schemas/NatStaticRule"
1609
+ }
1610
+ }
1611
+ }
1612
+ },
1613
+ "NaptStaticRules": {
1614
+ "type": "array",
1615
+ "items": {
1616
+ "properties": {
1617
+ "naptStaticRule": {
1618
+ "$ref": "#/components/schemas/NaptStaticRule"
1619
+ }
1620
+ }
1621
+ }
1622
+ },
1623
+ "NatDynamicRules": {
1624
+ "type": "array",
1625
+ "items": {
1626
+ "properties": {
1627
+ "natDynamicRule": {
1628
+ "$ref": "#/components/schemas/NatDynamicRule"
1629
+ }
1630
+ }
1631
+ }
1632
+ },
1633
+ "NaptDynamicRules": {
1634
+ "type": "array",
1635
+ "items": {
1636
+ "properties": {
1637
+ "naptDynamicRule": {
1638
+ "$ref": "#/components/schemas/NaptDynamicRule"
1639
+ }
1640
+ }
1641
+ }
1642
+ },
1643
+ "NatStaticRule": {
1644
+ "type": "object",
1645
+ "description": "NAT static rule - ip to ip",
1646
+ "properties": {
1647
+ "internalIP": {
1648
+ "type": "string"
1649
+ },
1650
+ "externalIP": {
1651
+ "type": "object",
1652
+ "properties": {
1653
+ "providerIndependentExternalIP": {
1654
+ "type": "string"
1655
+ },
1656
+ "providerAggregatedExternalIP": {
1657
+ "type": "boolean"
1658
+ }
1659
+ }
1660
+ }
1661
+ }
1662
+ },
1663
+ "NaptStaticRule": {
1664
+ "type": "object",
1665
+ "description": "PAT static rule - ip and port to ip and port",
1666
+ "properties": {
1667
+ "internalIP": {
1668
+ "type": "string"
1669
+ },
1670
+ "internalPort": {
1671
+ "type": "integer"
1672
+ },
1673
+ "externalIP": {
1674
+ "type": "object",
1675
+ "properties": {
1676
+ "providerIndependentExternalIP": {
1677
+ "type": "string"
1678
+ },
1679
+ "providerAggregatedExternalIP": {
1680
+ "type": "boolean"
1681
+ }
1682
+ }
1683
+ },
1684
+ "externalPort": {
1685
+ "type": "integer"
1686
+ },
1687
+ "protocol": {
1688
+ "$ref": "#/components/schemas/NatProtocolType"
1689
+ }
1690
+ }
1691
+ },
1692
+ "NatDynamicRule": {
1693
+ "type": "object",
1694
+ "description": "NAT dynamic rule - subnet/s to ip addresses pool",
1695
+ "properties": {
1696
+ "internalPrefix": {
1697
+ "type": "array",
1698
+ "items": {
1699
+ "$ref": "#/components/schemas/IPv4_Address"
1700
+ }
1701
+ },
1702
+ "externalPool": {
1703
+ "type": "object",
1704
+ "properties": {
1705
+ "providerIndependentExternalIpPool": {
1706
+ "type": "array",
1707
+ "items": {
1708
+ "$ref": "#/components/schemas/IpAddressesPool"
1709
+ }
1710
+ },
1711
+ "providerAggregatedExternalIpPoolSize": {
1712
+ "type": "integer",
1713
+ "description": "Define pool size for the user addresses",
1714
+ "minimum": 24,
1715
+ "maximum": 32
1716
+ }
1717
+ }
1718
+ }
1719
+ }
1720
+ },
1721
+ "FunctionDirection": {
1722
+ "type": "object",
1723
+ "properties": {
1724
+ "internalAtomicService": {
1725
+ "oneOf": [
1726
+ {
1727
+ "$ref": "#/components/schemas/componentId"
1728
+ },
1729
+ {
1730
+ "$ref": "#/components/schemas/TransactionTag"
1731
+ }
1732
+ ]
1733
+ },
1734
+ "externalAtomicService": {
1735
+ "oneOf": [
1736
+ {
1737
+ "$ref": "#/components/schemas/componentId"
1738
+ },
1739
+ {
1740
+ "$ref": "#/components/schemas/TransactionTag"
1741
+ }
1742
+ ]
1743
+ }
1744
+ }
1745
+ },
1746
+ "IpAddressesPool": {
1747
+ "type": "array",
1748
+ "items": {
1749
+ "type": "object",
1750
+ "properties": {
1751
+ "externalIPStart": {
1752
+ "type": "string"
1753
+ },
1754
+ "externalIPStop": {
1755
+ "type": "string"
1756
+ }
1757
+ }
1758
+ }
1759
+ },
1760
+ "NaptDynamicRule": {
1761
+ "type": "object",
1762
+ "description": "PAT dynamic rule - subnet/s to single ip address",
1763
+ "properties": {
1764
+ "internalPrefix": {
1765
+ "type": "array",
1766
+ "items": {
1767
+ "$ref": "#/components/schemas/IPv4_Address"
1768
+ }
1769
+ },
1770
+ "externalIP": {
1771
+ "type": "object",
1772
+ "properties": {
1773
+ "providerIndependentExternalIP": {
1774
+ "type": "string"
1775
+ },
1776
+ "providerAggregatedExternalIP": {
1777
+ "type": "boolean"
1778
+ }
1779
+ }
1780
+ }
1781
+ }
1782
+ },
1783
+ "NatTimeouts": {
1784
+ "type": "object",
1785
+ "properties": {
1786
+ "udpTimeout": {
1787
+ "$ref": "#/components/schemas/UdpTimeout"
1788
+ },
1789
+ "tcpTimeout": {
1790
+ "$ref": "#/components/schemas/TcpTimeout"
1791
+ },
1792
+ "icmpTimeout": {
1793
+ "$ref": "#/components/schemas/IcmpTimeout"
1794
+ },
1795
+ "fragmentedTimeout": {
1796
+ "$ref": "#/components/schemas/FragmentedTimeout"
1797
+ },
1798
+ "ipTimeout": {
1799
+ "$ref": "#/components/schemas/IpTimeout"
1800
+ }
1801
+ }
1802
+ },
1803
+ "UdpTimeout": {
1804
+ "type": "object",
1805
+ "properties": {
1806
+ "udpTimeout": {
1807
+ "type": "integer",
1808
+ "minimum": 10,
1809
+ "maximum": 7440,
1810
+ "default": 300
1811
+ }
1812
+ }
1813
+ },
1814
+ "TcpTimeout": {
1815
+ "type": "object",
1816
+ "properties": {
1817
+ "tcpTimeout": {
1818
+ "type": "integer",
1819
+ "minimum": 10,
1820
+ "maximum": 10000,
1821
+ "default": 7440
1822
+ }
1823
+ }
1824
+ },
1825
+ "IcmpTimeout": {
1826
+ "type": "object",
1827
+ "properties": {
1828
+ "icmpTimeout": {
1829
+ "type": "integer",
1830
+ "minimum": 10,
1831
+ "maximum": 10000,
1832
+ "default": 60
1833
+ }
1834
+ }
1835
+ },
1836
+ "FragmentedTimeout": {
1837
+ "type": "object",
1838
+ "properties": {
1839
+ "fragmentedTimeout": {
1840
+ "type": "integer",
1841
+ "minimum": 10,
1842
+ "maximum": 120,
1843
+ "default": 120
1844
+ }
1845
+ }
1846
+ },
1847
+ "IpTimeout": {
1848
+ "type": "object",
1849
+ "properties": {
1850
+ "ipTimeout": {
1851
+ "type": "integer",
1852
+ "minimum": 10,
1853
+ "maximum": 10000,
1854
+ "default": 7440
1855
+ }
1856
+ }
1857
+ },
1858
+ "NatProtocolType": {
1859
+ "description": "ip protocol types for NAT rules.",
1860
+ "type": "string",
1861
+ "enum": [
1862
+ "tcp",
1863
+ "udp"
1864
+ ]
1865
+ },
1866
+ "AzureBgpRouting": {
1867
+ "type": "object",
1868
+ "properties": {
1869
+ "isBfdEnabled": {
1870
+ "type": "boolean",
1871
+ "default": false
1872
+ },
1873
+ "bgpPeering": {
1874
+ "type": "array",
1875
+ "maxItems": 2,
1876
+ "items": {
1877
+ "type": "object",
1878
+ "properties": {
1879
+ "bgpV4": {
1880
+ "$ref": "#/components/schemas/common_bgp_peering"
1881
+ },
1882
+ "bgpV6": {
1883
+ "$ref": "#/components/schemas/common_bgp_peering"
1884
+ },
1885
+ "connectionPriority": {
1886
+ "type": "string",
1887
+ "enum": [
1888
+ "primary",
1889
+ "secondary"
1890
+ ]
1891
+ }
1892
+ },
1893
+ "required": [
1894
+ "bgpV4",
1895
+ "bgpV6",
1896
+ "connectionPriority"
1897
+ ]
1898
+ }
1899
+ }
1900
+ }
1901
+ },
1902
+ "BgpRouting": {
1903
+ "type": "object",
1904
+ "properties": {
1905
+ "isBfdEnabled": {
1906
+ "type": "boolean",
1907
+ "default": false
1908
+ },
1909
+ "bgpPeering": {
1910
+ "type": "array",
1911
+ "maxItems": 2,
1912
+ "items": {
1913
+ "type": "object",
1914
+ "properties": {
1915
+ "bgpV4": {
1916
+ "$ref": "#/components/schemas/bgp_peering"
1917
+ },
1918
+ "bgpV6": {
1919
+ "$ref": "#/components/schemas/bgp_peering"
1920
+ },
1921
+ "connectionPriority": {
1922
+ "type": "string",
1923
+ "enum": [
1924
+ "primary",
1925
+ "secondary"
1926
+ ]
1927
+ },
1928
+ "redundancyMode": {
1929
+ "type": "string",
1930
+ "enum": [
1931
+ "active",
1932
+ "standby"
1933
+ ]
1934
+ }
1935
+ }
1936
+ }
1937
+ }
1938
+ }
1939
+ },
1940
+ "staticRoute": {
1941
+ "type": "object",
1942
+ "properties": {
1943
+ "staticRoute": {
1944
+ "$ref": "#/components/schemas/static_route"
1945
+ }
1946
+ }
1947
+ },
1948
+ "Routing": {
1949
+ "oneOf": [
1950
+ {
1951
+ "$ref": "#/components/schemas/BgpRouting"
1952
+ },
1953
+ {
1954
+ "$ref": "#/components/schemas/staticRoute"
1955
+ }
1956
+ ]
1957
+ },
1958
+ "OperRouting": {
1959
+ "oneOf": [
1960
+ {
1961
+ "$ref": "#/components/schemas/bgp_peering_oper_object"
1962
+ },
1963
+ {
1964
+ "$ref": "#/components/schemas/static_oper_object"
1965
+ }
1966
+ ]
1967
+ },
1968
+ "bgp_peering_oper_object": {
1969
+ "type": "object",
1970
+ "properties": {
1971
+ "bgpPeering": {
1972
+ "type": "object",
1973
+ "properties": {
1974
+ "bgpV4": {
1975
+ "type": "object",
1976
+ "allOf": [
1977
+ {
1978
+ "$ref": "#/components/schemas/bgp_peering"
1979
+ }
1980
+ ]
1981
+ },
1982
+ "bgpV6": {
1983
+ "type": "object",
1984
+ "allOf": [
1985
+ {
1986
+ "$ref": "#/components/schemas/bgp_peering"
1987
+ }
1988
+ ]
1989
+ }
1990
+ }
1991
+ }
1992
+ }
1993
+ },
1994
+ "static_oper_object": {
1995
+ "type": "object",
1996
+ "properties": {
1997
+ "staticRoute": {
1998
+ "$ref": "#/components/schemas/static_route"
1999
+ }
2000
+ }
2001
+ },
2002
+ "bgp_peering": {
2003
+ "allOf": [
2004
+ {
2005
+ "$ref": "#/components/schemas/common_bgp_peering"
2006
+ },
2007
+ {
2008
+ "$ref": "#/components/schemas/BgpSecret"
2009
+ }
2010
+ ]
2011
+ },
2012
+ "common_bgp_peering": {
2013
+ "type": "object",
2014
+ "properties": {
2015
+ "remoteAsn": {
2016
+ "type": "string",
2017
+ "description": "Remote customer ASN",
2018
+ "example": "12076 - For Azure."
2019
+ },
2020
+ "localAsn": {
2021
+ "type": "string",
2022
+ "description": "Local device ASN",
2023
+ "example": 13979
2024
+ },
2025
+ "bgpTimeout": {
2026
+ "type": "integer",
2027
+ "description": "Represents the BGP hold-time timer, bgp keep-alive will be implicitly calculated as bgpTimeout/3.",
2028
+ "minimum": 30,
2029
+ "maximum": 180,
2030
+ "default": 180
2031
+ }
2032
+ },
2033
+ "required": [
2034
+ "localAsn"
2035
+ ]
2036
+ },
2037
+ "BgpSecret": {
2038
+ "type": "object",
2039
+ "properties": {
2040
+ "bgpSecret": {
2041
+ "type": "string"
2042
+ }
2043
+ }
2044
+ },
2045
+ "static_route": {
2046
+ "type": "array",
2047
+ "description": "Configuration details for the Home Cloud Gateway service",
2048
+ "maxItems": 10,
2049
+ "items": {
2050
+ "oneOf": [
2051
+ {
2052
+ "$ref": "#/components/schemas/IPv4StaticRoute"
2053
+ },
2054
+ {
2055
+ "$ref": "#/components/schemas/IPv6StaticRoute"
2056
+ }
2057
+ ]
2058
+ }
2059
+ },
2060
+ "IPv6StaticRoute": {
2061
+ "type": "object",
2062
+ "description": "IPv4 Static route",
2063
+ "properties": {
2064
+ "ipv6Network": {
2065
+ "type": "string",
2066
+ "description": "Network to be routed via static route"
2067
+ },
2068
+ "ipv6Prefix": {
2069
+ "type": "integer",
2070
+ "description": "Prefix size of network to be routed"
2071
+ },
2072
+ "nextHop": {
2073
+ "type": "string"
2074
+ }
2075
+ }
2076
+ },
2077
+ "IPv4StaticRoute": {
2078
+ "type": "object",
2079
+ "description": "IPv4 Static route",
2080
+ "properties": {
2081
+ "ipv4Network": {
2082
+ "type": "string",
2083
+ "description": "Network to be routed via static route"
2084
+ },
2085
+ "ipv4Prefix": {
2086
+ "type": "integer",
2087
+ "description": "Prefix size of network to be routed"
2088
+ },
2089
+ "nextHop": {
2090
+ "type": "string"
2091
+ }
2092
+ }
2093
+ },
2094
+ "InboundRoutingPolicy": {
2095
+ "type": "object",
2096
+ "description": "Configuration details that control ingress bgp routes advertisment towards the atomic service (of the customer).",
2097
+ "properties": {
2098
+ "prefixFilter": {
2099
+ "description": "control bgp neighbor published routes by using prefix filter rules",
2100
+ "$ref": "#/components/schemas/PrefixFilteringPolicy"
2101
+ },
2102
+ "isDefaultRoute": {
2103
+ "description": "should the customer receive default route via bgp.",
2104
+ "type": "boolean",
2105
+ "default": true,
2106
+ "example": true
2107
+ }
2108
+ }
2109
+ },
2110
+ "OutboundRoutingPolicy": {
2111
+ "type": "object",
2112
+ "description": "Configuration details that control bgp routes advertisment from the atomic service (of the customer).",
2113
+ "properties": {
2114
+ "prefixFilter": {
2115
+ "description": "control bgp neighbor published routes by using prefix filter rules",
2116
+ "$ref": "#/components/schemas/PrefixFilteringPolicy"
2117
+ },
2118
+ "isDefaultRoute": {
2119
+ "description": "should the customer receive default route via bgp.",
2120
+ "type": "boolean",
2121
+ "default": true,
2122
+ "example": true
2123
+ }
2124
+ }
2125
+ },
2126
+ "PrefixFilteringPolicy": {
2127
+ "type": "array",
2128
+ "maxItems": 20,
2129
+ "description": "Configuration details for prefix filtering. The rules will be applied in the order they are configured, until first match is made.",
2130
+ "items": {
2131
+ "$ref": "#/components/schemas/prefix_rule"
2132
+ }
2133
+ },
2134
+ "prefix_ipv4": {
2135
+ "allOf": [
2136
+ {
2137
+ "$ref": "#/components/schemas/IPv4_Address"
2138
+ },
2139
+ {
2140
+ "type": "object",
2141
+ "properties": {
2142
+ "gtV4": {
2143
+ "type": "integer",
2144
+ "description": "Define prefix length greater then or equal to",
2145
+ "minimum": 0,
2146
+ "maximum": 32
2147
+ },
2148
+ "ltV4": {
2149
+ "type": "integer",
2150
+ "description": "Define prefix length less then or equal to",
2151
+ "minimum": 0,
2152
+ "maximum": 32
2153
+ }
2154
+ }
2155
+ }
2156
+ ]
2157
+ },
2158
+ "prefix_ipv6": {
2159
+ "allOf": [
2160
+ {
2161
+ "$ref": "#/components/schemas/IPv6_Address"
2162
+ },
2163
+ {
2164
+ "type": "object",
2165
+ "properties": {
2166
+ "gtV6": {
2167
+ "type": "integer",
2168
+ "description": "Define prefix length greater then or equal to",
2169
+ "minimum": 0,
2170
+ "maximum": 128
2171
+ },
2172
+ "ltV6": {
2173
+ "type": "integer",
2174
+ "description": "Define prefix length less then or equal to",
2175
+ "minimum": 0,
2176
+ "maximum": 128
2177
+ }
2178
+ }
2179
+ }
2180
+ ]
2181
+ },
2182
+ "prefix_ip": {
2183
+ "oneOf": [
2184
+ {
2185
+ "$ref": "#/components/schemas/prefix_ipv4"
2186
+ },
2187
+ {
2188
+ "$ref": "#/components/schemas/prefix_ipv6"
2189
+ }
2190
+ ]
2191
+ },
2192
+ "prefix_rule": {
2193
+ "allOf": [
2194
+ {
2195
+ "$ref": "#/components/schemas/prefix_ip"
2196
+ },
2197
+ {
2198
+ "type": "object",
2199
+ "required": [
2200
+ "rule_type"
2201
+ ],
2202
+ "properties": {
2203
+ "ruleType": {
2204
+ "type": "string",
2205
+ "description": "Define if prefix is permitted or denied",
2206
+ "enum": [
2207
+ "permit",
2208
+ "deny"
2209
+ ]
2210
+ }
2211
+ }
2212
+ }
2213
+ ]
2214
+ },
2215
+ "ErrorStructure": {
2216
+ "oneOf": [
2217
+ {
2218
+ "type": "object",
2219
+ "properties": {
2220
+ "generalError": {
2221
+ "type": "string",
2222
+ "description": "General error happened in service Node"
2223
+ }
2224
+ }
2225
+ },
2226
+ {
2227
+ "type": "object",
2228
+ "properties": {
2229
+ "serviceNodeErrors": {
2230
+ "type": "array",
2231
+ "items": {
2232
+ "type": "object",
2233
+ "properties": {
2234
+ "serviceNodeId": {
2235
+ "type": "string",
2236
+ "description": "Type of the service node"
2237
+ },
2238
+ "error": {
2239
+ "type": "string",
2240
+ "description": "Error happened in the service node"
2241
+ }
2242
+ }
2243
+ }
2244
+ }
2245
+ }
2246
+ }
2247
+ ]
2248
+ },
2249
+ "EquinixConnectOperParams": {
2250
+ "type": "object",
2251
+ "properties": {
2252
+ "availableLocations": {
2253
+ "type": "array",
2254
+ "items": {
2255
+ "type": "string"
2256
+ },
2257
+ "example": [
2258
+ "dallas",
2259
+ "los-angeles",
2260
+ "houston"
2261
+ ]
2262
+ },
2263
+ "equinixConnectCircuit": {
2264
+ "type": "array",
2265
+ "items": {
2266
+ "type": "object",
2267
+ "properties": {
2268
+ "location": {
2269
+ "type": "string",
2270
+ "description": "Location of the reported circuit"
2271
+ },
2272
+ "circuitState": {
2273
+ "type": "string",
2274
+ "enum": [
2275
+ "up",
2276
+ "down",
2277
+ "degraded"
2278
+ ]
2279
+ },
2280
+ "connections": {
2281
+ "type": "array",
2282
+ "maxItems": 2,
2283
+ "items": {
2284
+ "type": "object",
2285
+ "properties": {
2286
+ "connectionPriority": {
2287
+ "type": "string",
2288
+ "enum": [
2289
+ "primary",
2290
+ "secondary"
2291
+ ]
2292
+ },
2293
+ "zSideToken": {
2294
+ "type": "string",
2295
+ "description": "Equinix-assigned service token uuid, a 128-bit namespace identifier"
2296
+ },
2297
+ "ipAddress": {
2298
+ "type": "array",
2299
+ "items": {
2300
+ "$ref": "#/components/schemas/IP_Address"
2301
+ }
2302
+ },
2303
+ "routing": {
2304
+ "$ref": "#/components/schemas/OperRouting"
2305
+ },
2306
+ "connectionProviderState": {
2307
+ "anyOf": [
2308
+ {
2309
+ "$ref": "#/components/schemas/BgpState"
2310
+ },
2311
+ {
2312
+ "$ref": "#/components/schemas/BfdState"
2313
+ },
2314
+ {
2315
+ "$ref": "#/components/schemas/linkState"
2316
+ }
2317
+ ]
2318
+ },
2319
+ "equinixState": {
2320
+ "type": "string",
2321
+ "enum": [
2322
+ "AVAILABLE",
2323
+ "FAILED",
2324
+ "PENDING_APPROVAL"
2325
+ ]
2326
+ },
2327
+ "connectionDetails": {
2328
+ "$ref": "#/components/schemas/connectivityDetails"
2329
+ },
2330
+ "equinixPortUuid": {
2331
+ "type": "string",
2332
+ "description": "uuid of the port of Equinix"
2333
+ },
2334
+ "equinixConnectionUuid": {
2335
+ "type": "string",
2336
+ "description": "the connection uuid of L2 connectivity of EVPL"
2337
+ }
2338
+ }
2339
+ }
2340
+ },
2341
+ "error": {
2342
+ "$ref": "#/components/schemas/ErrorStructure"
2343
+ }
2344
+ }
2345
+ }
2346
+ }
2347
+ }
2348
+ },
2349
+ "BgpState": {
2350
+ "description": "BGP peering state",
2351
+ "type": "object",
2352
+ "properties": {
2353
+ "bgpStateV4": {
2354
+ "$ref": "#/components/schemas/BgpStates"
2355
+ },
2356
+ "bgpStateV6": {
2357
+ "$ref": "#/components/schemas/BgpStates"
2358
+ }
2359
+ }
2360
+ },
2361
+ "BgpStates": {
2362
+ "description": "BGP peering state",
2363
+ "type": "string",
2364
+ "enum": [
2365
+ "up",
2366
+ "down"
2367
+ ]
2368
+ },
2369
+ "BfdState": {
2370
+ "description": "BFD session state",
2371
+ "type": "string",
2372
+ "enum": [
2373
+ "up",
2374
+ "down"
2375
+ ]
2376
+ },
2377
+ "linkState": {
2378
+ "description": "Link state",
2379
+ "type": "string",
2380
+ "enum": [
2381
+ "up",
2382
+ "down"
2383
+ ]
2384
+ },
2385
+ "connectivityDetails": {
2386
+ "description": "Holds the link and connection UUIDs",
2387
+ "type": "object",
2388
+ "properties": {
2389
+ "connectionUuid": {
2390
+ "type": "string",
2391
+ "description": "The connection UUID"
2392
+ },
2393
+ "linkUuid": {
2394
+ "type": "string",
2395
+ "description": "The link UUID"
2396
+ }
2397
+ }
2398
+ },
2399
+ "IGOperParams": {
2400
+ "type": "object",
2401
+ "properties": {
2402
+ "availableLocations": {
2403
+ "type": "array",
2404
+ "items": {
2405
+ "type": "string"
2406
+ },
2407
+ "example": [
2408
+ "dallas",
2409
+ "los-angeles",
2410
+ "houston"
2411
+ ]
2412
+ },
2413
+ "igCircuit": {
2414
+ "type": "array",
2415
+ "items": {
2416
+ "type": "object",
2417
+ "properties": {
2418
+ "location": {
2419
+ "type": "string",
2420
+ "description": "Location of the reported circuit"
2421
+ },
2422
+ "ipAddress": {
2423
+ "type": "array",
2424
+ "items": {
2425
+ "$ref": "#/components/schemas/IP_Address"
2426
+ }
2427
+ },
2428
+ "dnsnHostnames": {
2429
+ "type": "array",
2430
+ "maxItems": 2,
2431
+ "items": {
2432
+ "type": "object",
2433
+ "properties": {
2434
+ "dnsnHostname": {
2435
+ "description": "The hostname in which the IG atomic service circuit found of",
2436
+ "type": "string"
2437
+ }
2438
+ }
2439
+ }
2440
+ },
2441
+ "error": {
2442
+ "$ref": "#/components/schemas/ErrorStructure"
2443
+ }
2444
+ }
2445
+ }
2446
+ }
2447
+ }
2448
+ },
2449
+ "ISPOperParams": {
2450
+ "type": "object",
2451
+ "properties": {
2452
+ "availableLocations": {
2453
+ "type": "array",
2454
+ "items": {
2455
+ "type": "string"
2456
+ },
2457
+ "example": [
2458
+ "dallas",
2459
+ "los-angeles",
2460
+ "houston"
2461
+ ]
2462
+ },
2463
+ "ispCircuit": {
2464
+ "type": "array",
2465
+ "items": {
2466
+ "type": "object",
2467
+ "properties": {
2468
+ "location": {
2469
+ "type": "string",
2470
+ "description": "Location of the reported circuit"
2471
+ },
2472
+ "error": {
2473
+ "$ref": "#/components/schemas/ErrorStructure"
2474
+ }
2475
+ }
2476
+ }
2477
+ }
2478
+ }
2479
+ },
2480
+ "AzureConnectOperParams": {
2481
+ "type": "object",
2482
+ "properties": {
2483
+ "availableLocations": {
2484
+ "type": "array",
2485
+ "items": {
2486
+ "type": "string"
2487
+ },
2488
+ "example": [
2489
+ "dallas",
2490
+ "los-angeles",
2491
+ "houston"
2492
+ ]
2493
+ },
2494
+ "sKey": {
2495
+ "type": "string",
2496
+ "description": "Azure service key."
2497
+ },
2498
+ "azureConnectCircuit": {
2499
+ "type": "array",
2500
+ "items": {
2501
+ "type": "object",
2502
+ "properties": {
2503
+ "location": {
2504
+ "type": "string",
2505
+ "description": "The Azure location of the reported circuit"
2506
+ },
2507
+ "circuitState": {
2508
+ "type": "string",
2509
+ "enum": [
2510
+ "up",
2511
+ "down",
2512
+ "degraded"
2513
+ ]
2514
+ },
2515
+ "remoteIpv4PeeringState": {
2516
+ "$ref": "#/components/schemas/GetRemotePeeringState"
2517
+ },
2518
+ "remoteIpv6PeeringState": {
2519
+ "$ref": "#/components/schemas/GetRemotePeeringState"
2520
+ },
2521
+ "remoteAdvertisedPrefixList": {
2522
+ "$ref": "#/components/schemas/GetRemoteBgpPrefixList"
2523
+ },
2524
+ "PortNames": {
2525
+ "$ref": "#/components/schemas/GetRemotePortNames"
2526
+ },
2527
+ "connections": {
2528
+ "type": "array",
2529
+ "maxItems": 2,
2530
+ "items": {
2531
+ "type": "object",
2532
+ "properties": {
2533
+ "connectionPriority": {
2534
+ "type": "string",
2535
+ "enum": [
2536
+ "primary",
2537
+ "secondary"
2538
+ ]
2539
+ },
2540
+ "ipAddress": {
2541
+ "type": "array",
2542
+ "items": {
2543
+ "$ref": "#/components/schemas/IP_Address"
2544
+ }
2545
+ },
2546
+ "routing": {
2547
+ "$ref": "#/components/schemas/bgp_peering_oper_object"
2548
+ },
2549
+ "connectionState": {
2550
+ "anyOf": [
2551
+ {
2552
+ "$ref": "#/components/schemas/BgpState"
2553
+ },
2554
+ {
2555
+ "$ref": "#/components/schemas/BfdState"
2556
+ },
2557
+ {
2558
+ "$ref": "#/components/schemas/linkState"
2559
+ }
2560
+ ]
2561
+ },
2562
+ "connectionDetails": {
2563
+ "$ref": "#/components/schemas/connectivityDetails"
2564
+ }
2565
+ }
2566
+ }
2567
+ },
2568
+ "error": {
2569
+ "$ref": "#/components/schemas/ErrorStructure"
2570
+ }
2571
+ }
2572
+ }
2573
+ }
2574
+ }
2575
+ },
2576
+ "ErrorResponse": {
2577
+ "type": "object",
2578
+ "properties": {
2579
+ "errors": {
2580
+ "type": "array",
2581
+ "items": {
2582
+ "type": "object",
2583
+ "properties": {
2584
+ "fieldPath": {
2585
+ "type": "string",
2586
+ "example": "params_ipAddress_ipv4IndependentAddress[0]_ipv4Address"
2587
+ },
2588
+ "description": {
2589
+ "type": "string",
2590
+ "example": "configured bandwidth exceeds remaining bandwidth"
2591
+ }
2592
+ }
2593
+ }
2594
+ },
2595
+ "message": {
2596
+ "type": "string",
2597
+ "example": "Failed to configure service"
2598
+ }
2599
+ },
2600
+ "required": [
2601
+ "message",
2602
+ "status"
2603
+ ]
2604
+ },
2605
+ "NatOperParams": {
2606
+ "type": "object",
2607
+ "properties": {
2608
+ "location": {
2609
+ "type": "string"
2610
+ },
2611
+ "natState": {
2612
+ "type": "string",
2613
+ "enum": [
2614
+ "up",
2615
+ "down",
2616
+ "degraded"
2617
+ ]
2618
+ },
2619
+ "error": {
2620
+ "$ref": "#/components/schemas/ErrorStructure"
2621
+ }
2622
+ }
2623
+ },
2624
+ "GetServiceStateResponse": {
2625
+ "type": "object",
2626
+ "properties": {
2627
+ "businessSid": {
2628
+ "type": "string",
2629
+ "description": "Unique ID provided by the Service Provider to identify a solution, which is a collection of several atomic services. When forming a solution, use the same BusinessSID.",
2630
+ "example": "34314231-3425423-123f23-23a2g42"
2631
+ },
2632
+ "businessSidState": {
2633
+ "type": "string",
2634
+ "enum": [
2635
+ "CONFIGURED",
2636
+ "IN-PROGRESS",
2637
+ "FAILED"
2638
+ ]
2639
+ },
2640
+ "atomicServices": {
2641
+ "type": "array",
2642
+ "description": "Entries for atomic services",
2643
+ "items": {
2644
+ "type": "object",
2645
+ "properties": {
2646
+ "atomicServiceId": {
2647
+ "$ref": "#/components/schemas/componentId"
2648
+ },
2649
+ "atomicServiceTransactionTag": {
2650
+ "$ref": "#/components/schemas/TransactionTag"
2651
+ },
2652
+ "atomicServiceType": {
2653
+ "type": "string",
2654
+ "description": "Service type",
2655
+ "enum": [
2656
+ "EQUINIX_CONNECT",
2657
+ "INTERNET_GATEWAY",
2658
+ "INTERNET_SERVICE_PROVIDER",
2659
+ "AZURE_CONNECT"
2660
+ ]
2661
+ },
2662
+ "atomicServiceParams": {
2663
+ "$ref": "#/components/schemas/AtomicServiceParams"
2664
+ },
2665
+ "circuits": {
2666
+ "type": "array",
2667
+ "description": "Entries for atomic service circuits",
2668
+ "items": {
2669
+ "type": "object",
2670
+ "properties": {
2671
+ "circuitId": {
2672
+ "type": "string",
2673
+ "description": "genarated circuit id"
2674
+ },
2675
+ "circuitTransactionTag": {
2676
+ "type": "string",
2677
+ "description": "user provided circuit tag",
2678
+ "example": "MyCircuit"
2679
+ },
2680
+ "params": {
2681
+ "oneOf": [
2682
+ {
2683
+ "$ref": "#/components/schemas/EquinixConnectOperParams"
2684
+ },
2685
+ {
2686
+ "$ref": "#/components/schemas/IGOperParams"
2687
+ },
2688
+ {
2689
+ "$ref": "#/components/schemas/ISPOperParams"
2690
+ },
2691
+ {
2692
+ "$ref": "#/components/schemas/AzureConnectOperParams"
2693
+ }
2694
+ ]
2695
+ }
2696
+ }
2697
+ }
2698
+ }
2699
+ }
2700
+ }
2701
+ },
2702
+ "policies": {
2703
+ "type": "array",
2704
+ "description": "Entries for policies",
2705
+ "items": {
2706
+ "type": "object",
2707
+ "properties": {
2708
+ "policyId": {
2709
+ "type": "string",
2710
+ "description": "genarated policy id"
2711
+ },
2712
+ "policyTransactionTag": {
2713
+ "type": "string",
2714
+ "description": "user provided policy tag"
2715
+ },
2716
+ "policyParams": {
2717
+ "$ref": "#/components/schemas/PolicyBodyRequest"
2718
+ },
2719
+ "functions": {
2720
+ "type": "array",
2721
+ "description": "Entries for functions",
2722
+ "items": {
2723
+ "type": "object",
2724
+ "properties": {
2725
+ "functionId": {
2726
+ "type": "string",
2727
+ "description": "genarated function id"
2728
+ },
2729
+ "functionTransactionTag": {
2730
+ "type": "string",
2731
+ "description": "user provided function tag"
2732
+ },
2733
+ "functionType": {
2734
+ "type": "string",
2735
+ "description": "Type of function",
2736
+ "example": "NAT"
2737
+ },
2738
+ "functionParams": {
2739
+ "oneOf": [
2740
+ {
2741
+ "$ref": "#/components/schemas/NatOperParams"
2742
+ }
2743
+ ]
2744
+ }
2745
+ }
2746
+ }
2747
+ }
2748
+ }
2749
+ }
2750
+ }
2751
+ }
2752
+ },
2753
+ "GetServiceMonitoringResponse": {
2754
+ "type": "object",
2755
+ "properties": {
2756
+ "businessSid": {
2757
+ "type": "string",
2758
+ "description": "Unique ID provided by the Service Provider to identify a solution, which is a collection of several atomic services. When forming a solution, use the same BusinessSID.",
2759
+ "example": "34314231-3425423-123f23-23a2g42"
2760
+ },
2761
+ "atomicServices": {
2762
+ "type": "array",
2763
+ "description": "Entries for atomic services",
2764
+ "items": {
2765
+ "type": "object",
2766
+ "properties": {
2767
+ "atomicServiceTransactionTag": {
2768
+ "$ref": "#/components/schemas/TransactionTag"
2769
+ },
2770
+ "atomicServiceType": {
2771
+ "type": "string",
2772
+ "description": "Service type",
2773
+ "enum": [
2774
+ "AZURE_CONNECT"
2775
+ ]
2776
+ },
2777
+ "circuits": {
2778
+ "type": "array",
2779
+ "description": "Entries for atomic service circuits",
2780
+ "items": {
2781
+ "type": "object",
2782
+ "properties": {
2783
+ "circuitId": {
2784
+ "type": "string",
2785
+ "description": "genarated circuit id"
2786
+ },
2787
+ "circuitTransactionTag": {
2788
+ "type": "string",
2789
+ "description": "user provided circuit tag",
2790
+ "example": "MyCircuit"
2791
+ },
2792
+ "params": {
2793
+ "oneOf": [
2794
+ {
2795
+ "$ref": "#/components/schemas/GetAzureConnectCircuitUsage"
2796
+ }
2797
+ ]
2798
+ }
2799
+ }
2800
+ }
2801
+ }
2802
+ }
2803
+ }
2804
+ }
2805
+ }
2806
+ },
2807
+ "GetRemoteBgpPrefixList": {
2808
+ "type": "object",
2809
+ "properties": {
2810
+ "bgpIpV4PrefixList": {
2811
+ "type": "array",
2812
+ "items": {
2813
+ "type": "string"
2814
+ },
2815
+ "example": [
2816
+ "123.1.0.0/24"
2817
+ ]
2818
+ },
2819
+ "bgpIpV6PrefixList": {
2820
+ "type": "array",
2821
+ "items": {
2822
+ "type": "string"
2823
+ },
2824
+ "example": [
2825
+ "3FFE:FFFF:0:CD31::/120"
2826
+ ]
2827
+ }
2828
+ }
2829
+ },
2830
+ "GetRemotePeeringState": {
2831
+ "type": "object",
2832
+ "properties": {
2833
+ "peeringInfo": {
2834
+ "type": "array",
2835
+ "items": {
2836
+ "type": "object",
2837
+ "properties": {
2838
+ "bgpPeeringState": {
2839
+ "type": "string",
2840
+ "enum": [
2841
+ "enabled",
2842
+ "disabled"
2843
+ ]
2844
+ },
2845
+ "connectionPriority": {
2846
+ "type": "string",
2847
+ "enum": [
2848
+ "primary",
2849
+ "secondary"
2850
+ ]
2851
+ }
2852
+ }
2853
+ }
2854
+ }
2855
+ }
2856
+ },
2857
+ "GetRemotePortNames": {
2858
+ "type": "object",
2859
+ "properties": {
2860
+ "primaryPortName": {
2861
+ "type": "string",
2862
+ "description": "The primary port name"
2863
+ },
2864
+ "secondaryPortName": {
2865
+ "type": "string",
2866
+ "description": "The secondary port name"
2867
+ }
2868
+ }
2869
+ },
2870
+ "GetAzureConnectCircuitUsage": {
2871
+ "type": "object",
2872
+ "properties": {
2873
+ "remoteCounters": {
2874
+ "$ref": "#/components/schemas/GetCircuitUsage"
2875
+ },
2876
+ "error": {
2877
+ "$ref": "#/components/schemas/ErrorStructure"
2878
+ }
2879
+ }
2880
+ },
2881
+ "GetCircuitUsage": {
2882
+ "type": "object",
2883
+ "properties": {
2884
+ "counters": {
2885
+ "type": "array",
2886
+ "items": {
2887
+ "type": "object",
2888
+ "properties": {
2889
+ "bytesIn": {
2890
+ "type": "string",
2891
+ "description": "BytesIn on the reported circuit"
2892
+ },
2893
+ "bytesOut": {
2894
+ "type": "string",
2895
+ "description": "BytesOut on the reported circuit"
2896
+ },
2897
+ "connectionPriority": {
2898
+ "type": "string",
2899
+ "enum": [
2900
+ "primary",
2901
+ "secondary"
2902
+ ]
2903
+ }
2904
+ }
2905
+ }
2906
+ }
2907
+ }
2908
+ },
2909
+ "TransactionTag": {
2910
+ "type": "string",
2911
+ "description": "Unique TAG of component per transaction",
2912
+ "example": "MyEquinixConnect1"
2913
+ },
2914
+ "componentId": {
2915
+ "type": "string",
2916
+ "description": "Unique UUID of component",
2917
+ "example": "12345-12345-abcdef-abcdef"
2918
+ },
2919
+ "CreatePolicyBodyRequest": {
2920
+ "type": "object",
2921
+ "properties": {
2922
+ "sourceAtomicServiceTransactionTag": {
2923
+ "$ref": "#/components/schemas/TransactionTag"
2924
+ },
2925
+ "DestinationAtomicServiceTransactionTag": {
2926
+ "$ref": "#/components/schemas/TransactionTag"
2927
+ }
2928
+ },
2929
+ "required": [
2930
+ "sourceAtomicServiceTransactionTag",
2931
+ "DestinationAtomicServiceTransactionTag"
2932
+ ]
2933
+ },
2934
+ "PolicyBodyRequest": {
2935
+ "type": "object",
2936
+ "properties": {
2937
+ "sourceAtomicService": {
2938
+ "oneOf": [
2939
+ {
2940
+ "$ref": "#/components/schemas/componentId"
2941
+ },
2942
+ {
2943
+ "$ref": "#/components/schemas/TransactionTag"
2944
+ }
2945
+ ]
2946
+ },
2947
+ "destinationAtomicService": {
2948
+ "oneOf": [
2949
+ {
2950
+ "$ref": "#/components/schemas/componentId"
2951
+ },
2952
+ {
2953
+ "$ref": "#/components/schemas/TransactionTag"
2954
+ }
2955
+ ]
2956
+ }
2957
+ }
2958
+ },
2959
+ "ResourceBusyResponse": {
2960
+ "type": "object",
2961
+ "properties": {
2962
+ "id": {
2963
+ "type": "string",
2964
+ "description": "ID of the atomic service"
2965
+ }
2966
+ }
2967
+ },
2968
+ "ServicesPerLocationResponse": {
2969
+ "type": "array",
2970
+ "items": {
2971
+ "type": "object",
2972
+ "properties": {
2973
+ "location": {
2974
+ "type": "string",
2975
+ "example": "LAXCA"
2976
+ },
2977
+ "availableServices": {
2978
+ "type": "array",
2979
+ "items": {
2980
+ "type": "object",
2981
+ "properties": {
2982
+ "serviceName": {
2983
+ "enum": [
2984
+ "EQUINIX_CONNECT",
2985
+ "INTERNET_GATEWAY",
2986
+ "INTERNET_SERVICE_PROVIDER",
2987
+ "AZURE_CONNECT"
2988
+ ]
2989
+ },
2990
+ "overallBandwidthRedundantServices": {
2991
+ "type": "string",
2992
+ "example": "1gbps"
2993
+ },
2994
+ "overallBandwidthNonRedundantServices": {
2995
+ "type": "string",
2996
+ "example": "1gbps"
2997
+ },
2998
+ "remainingBandwidthRedundantServices": {
2999
+ "type": "string",
3000
+ "example": "100mbps"
3001
+ },
3002
+ "remainingBandwidthNonRedundantServices": {
3003
+ "type": "string",
3004
+ "example": "100mbps"
3005
+ },
3006
+ "maxBandwidthRedundantService": {
3007
+ "type": "string",
3008
+ "example": "100mbps"
3009
+ },
3010
+ "maxBandwidthNonRedundantService": {
3011
+ "type": "string",
3012
+ "example": "100mbps"
3013
+ }
3014
+ }
3015
+ }
3016
+ }
3017
+ }
3018
+ }
3019
+ },
3020
+ "ShowCommandBodyRequest": {
3021
+ "type": "object",
3022
+ "properties": {
3023
+ "operation": {
3024
+ "type": "string",
3025
+ "description": "Show Commands:\n BGP, BGP_NEIGHBORS, BGP_SUMMARY,\n BGP_ROUTE, BGP_NEXTHOP_REACHABLE,\n BGP_NEXTHOP, BGP_IPV4, BGP_IPV4_PREFIX_LIST\n BGP_IPV6, BGP_IPV6_PREFIX_LIST, INTERFACE\n INTERFACE_COUNTERS, VRF",
3026
+ "example": "INTERFACE"
3027
+ },
3028
+ "snDnId": {
3029
+ "type": "string",
3030
+ "description": "Unique ID of service node",
3031
+ "example": "12345-12345-abcdef-abcdef"
3032
+ },
3033
+ "snDnName": {
3034
+ "type": "string",
3035
+ "description": "Service Node Name",
3036
+ "example": "Dallas324T"
3037
+ },
3038
+ "qualifier": {
3039
+ "type": "string",
3040
+ "description": "Qualifier",
3041
+ "example": "ge100-0/0/0"
3042
+ }
3043
+ },
3044
+ "required": [
3045
+ "operation",
3046
+ "snDnId",
3047
+ "snDnName",
3048
+ "qualifier"
3049
+ ]
3050
+ },
3051
+ "CommandResponse": {
3052
+ "type": "object",
3053
+ "properties": {
3054
+ "message": {
3055
+ "type": "string",
3056
+ "example": "| Interface | Admin | Operational | VRF || ge100-0/0/0 | Enabled | up | default |"
3057
+ },
3058
+ "status": {
3059
+ "type": "string",
3060
+ "description": "Failed to add function",
3061
+ "example": "nack"
3062
+ }
3063
+ },
3064
+ "required": [
3065
+ "message",
3066
+ "status"
3067
+ ]
3068
+ },
3069
+ "UserLoginDTO": {
3070
+ "type": "object",
3071
+ "properties": {
3072
+ "username": {
3073
+ "type": "string",
3074
+ "description": "Enter the username you were provided during sign up."
3075
+ },
3076
+ "password": {
3077
+ "type": "string",
3078
+ "description": "Enter the password you were provided during sign up."
3079
+ }
3080
+ },
3081
+ "required": [
3082
+ "username",
3083
+ "password"
3084
+ ]
3085
+ },
3086
+ "AccessToken": {
3087
+ "type": "object",
3088
+ "properties": {
3089
+ "access_token": {
3090
+ "type": "string"
3091
+ }
3092
+ }
3093
+ },
3094
+ "RefreshedToken": {
3095
+ "type": "object",
3096
+ "properties": {
3097
+ "refreshed_token": {
3098
+ "type": "string"
3099
+ }
3100
+ }
3101
+ }
3102
+ },
3103
+ "securitySchemes": {
3104
+ "bearer": {
3105
+ "scheme": "bearer",
3106
+ "bearerFormat": "JWT",
3107
+ "type": "http"
3108
+ }
3109
+ }
3110
+ }
3111
+ }