· 4 years ago · Jun 09, 2021, 02:32 PM
1{
2 "openapi": "3.0.1",
3 "info": {
4 "version": "0.1",
5 "title": "M2A Connect API Definition",
6 "description": "CRUD for event, source, subscription and target account for the Connect product",
7 "contact": {
8 "name": "M2A Media",
9 "url": "https://www.m2amedia.tv",
10 "email": "ta@m2amedia.tv"
11 }
12 },
13 "tags": [
14 {
15 "name": "organisations"
16 },
17 {
18 "name": "outputs"
19 },
20 {
21 "name": "target-accounts"
22 },
23 {
24 "name": "sources"
25 },
26 {
27 "name": "subscriptions"
28 },
29 {
30 "name": "events"
31 }
32 ],
33 "servers": [
34 {
35 "url": "/connect/v1"
36 }
37 ],
38 "paths": {
39 "/organisations": {
40 "get": {
41 "tags": ["organisations"],
42 "description": "Get list of links to Organisations",
43 "responses": {
44 "200": {
45 "description": "OK",
46 "content": {
47 "application/json": {
48 "schema": {
49 "$ref": "#/components/schemas/URLListResponse"
50 },
51 "examples": {
52 "v1": {
53 "summary": "Connect v1 example",
54 "value": {
55 "items": [
56 "http://localhost:4200/api/connect/v1/organisations/2cea7980-72f3-4e50-8590-28fb009390c9",
57 "http://localhost:4200/api/connect/v1/organisations/8070ad6e-0963-4a63-a834-4bb2cb73e963"
58 ]
59 }
60 }
61 }
62 }
63 },
64 "headers": {
65 "ETag": {
66 "$ref": "#/components/headers/etag"
67 }
68 }
69 },
70 "403": {
71 "$ref": "#/components/responses/Forbidden"
72 }
73 }
74 },
75 "post": {
76 "tags": ["organisations"],
77 "description": "Create an Organisation",
78 "requestBody": {
79 "description": "Organisation to add",
80 "content": {
81 "application/json": {
82 "schema": {
83 "$ref": "#/components/schemas/OrganisationRequest"
84 },
85 "examples": {
86 "v1": {
87 "summary": "Connect v1 example",
88 "value": {
89 "metadata": {
90 "labels": [
91 {
92 "key": "m2amedia.tv:name",
93 "value": "Test Organisation"
94 },
95 {
96 "key": "m2amedia.tv:description",
97 "value": "A longer description of the organisation in question"
98 }
99 ]
100 }
101 }
102 }
103 }
104 }
105 },
106 "required": true
107 },
108 "responses": {
109 "201": {
110 "description": "Created",
111 "headers": {
112 "Location": {
113 "$ref": "#/components/headers/location"
114 },
115 "ETag": {
116 "$ref": "#/components/headers/etag"
117 }
118 },
119 "content": {
120 "application/json": {
121 "schema": {
122 "$ref": "#/components/schemas/OrganisationResponse"
123 }
124 }
125 }
126 },
127 "400": {
128 "$ref": "#/components/responses/BadRequest"
129 },
130 "403": {
131 "$ref": "#/components/responses/Forbidden"
132 }
133 }
134 }
135 },
136 "/organisations/{organisation-id}": {
137 "parameters": [
138 {
139 "$ref": "#/components/parameters/organisation-id"
140 }
141 ],
142 "get": {
143 "tags": ["organisations"],
144 "description": "Get Organisation by id",
145 "responses": {
146 "200": {
147 "description": "OK",
148 "content": {
149 "application/json": {
150 "schema": {
151 "$ref": "#/components/schemas/OrganisationResponse"
152 },
153 "examples": {
154 "v1.2cea7980": {
155 "summary": "Connect v1 example",
156 "value": {
157 "id": "2cea7980-72f3-4e50-8590-28fb009390c9",
158 "metadata": {
159 "labels": [
160 {
161 "key": "m2amedia.tv:name",
162 "value": "My Organisation"
163 },
164 {
165 "key": "m2amedia.tv:description",
166 "value": "My awesome long-form description"
167 }
168 ]
169 }
170 }
171 },
172 "v1.8070ad6e": {
173 "summary": "Connect v1 example",
174 "value": {
175 "id": "8070ad6e-0963-4a63-a834-4bb2cb73e963",
176 "metadata": {
177 "labels": [
178 {
179 "key": "m2amedia.tv:name",
180 "value": "My Other Organisation"
181 },
182 {
183 "key": "m2amedia.tv:description",
184 "value": "My awesome long-form description"
185 }
186 ]
187 }
188 }
189 }
190 }
191 }
192 },
193 "headers": {
194 "ETag": {
195 "$ref": "#/components/headers/etag"
196 }
197 }
198 },
199 "403": {
200 "$ref": "#/components/responses/Forbidden"
201 },
202 "404": {
203 "$ref": "#/components/responses/NotFound"
204 }
205 }
206 },
207 "delete": {
208 "tags": ["organisations"],
209 "description": "Delete Organisation by id",
210 "responses": {
211 "204": {
212 "$ref": "#/components/responses/Deleted"
213 },
214 "403": {
215 "$ref": "#/components/responses/Forbidden"
216 },
217 "404": {
218 "$ref": "#/components/responses/NotFound"
219 }
220 }
221 }
222 },
223 "/organisations/{organisation-id}/target-accounts": {
224 "parameters": [
225 {
226 "$ref": "#/components/parameters/organisation-id"
227 }
228 ],
229 "get": {
230 "tags": ["target-accounts"],
231 "description": "Get list of links to Target Accounts",
232 "responses": {
233 "200": {
234 "description": "OK",
235 "content": {
236 "application/json": {
237 "schema": {
238 "$ref": "#/components/schemas/URLListResponse"
239 },
240 "examples": {
241 "v1": {
242 "summary": "Connect v1 example",
243 "value": {
244 "items": [
245 "http://localhost:4200/api/connect/v1/organisations/2cea7980-72f3-4e50-8590-28fb009390c9/target-accounts/8bf9468f-d54c-4b24-9be7-7260b743a0e4",
246 "http://localhost:4200/api/connect/v1/organisations/2cea7980-72f3-4e50-8590-28fb009390c9/target-accounts/01d808bb-81b9-471e-b29f-a4547318435a",
247 "http://localhost:4200/api/connect/v1/organisations/2cea7980-72f3-4e50-8590-28fb009390c9/target-accounts/01d808bc-81b9-471e-b29f-a4547318435b",
248 "http://localhost:4200/api/connect/v1/organisations/2cea7980-72f3-4e50-8590-28fb009390c9/target-accounts/01d808bd-81b9-471e-b29f-a4547318435c",
249 "http://localhost:4200/api/connect/v1/organisations/2cea7980-72f3-4e50-8590-28fb009390c9/target-accounts/01d808be-81b9-471e-b29f-a4547318435d",
250 "http://localhost:4200/api/connect/v1/organisations/2cea7980-72f3-4e50-8590-28fb009390c9/target-accounts/01d808bf-81b9-471e-b29f-a4547318435e",
251 "http://localhost:4200/api/connect/v1/organisations/2cea7980-72f3-4e50-8590-28fb009390c9/target-accounts/01d808ca-81b9-471e-b29f-a4547318435e",
252 "http://localhost:4200/api/connect/v1/organisations/2cea7980-72f3-4e50-8590-28fb009390c9/target-accounts/01d808cb-81b9-471e-b29f-a4547318435e",
253 "http://localhost:4200/api/connect/v1/organisations/2cea7980-72f3-4e50-8590-28fb009390c9/target-accounts/01d808cc-81b9-471e-b29f-a4547318435e",
254 "http://localhost:4200/api/connect/v1/organisations/2cea7980-72f3-4e50-8590-28fb009390c9/target-accounts/01d808cd-81b9-471e-b29f-a4547318435e",
255 "http://localhost:4200/api/connect/v1/organisations/2cea7980-72f3-4e50-8590-28fb009390c9/target-accounts/01d808ce-81b9-471e-b29f-a4547318435e",
256 "http://localhost:4200/api/connect/v1/organisations/2cea7980-72f3-4e50-8590-28fb009390c9/target-accounts/01d808cf-81b9-471e-b29f-a4547318435e",
257 "http://localhost:4200/api/connect/v1/organisations/2cea7980-72f3-4e50-8590-28fb009390c9/target-accounts/01d808da-81b9-471e-b29f-a4547318435e",
258 "http://localhost:4200/api/connect/v1/organisations/2cea7980-72f3-4e50-8590-28fb009390c9/target-accounts/01d808db-81b9-471e-b29f-a4547318435e",
259 "http://localhost:4200/api/connect/v1/organisations/2cea7980-72f3-4e50-8590-28fb009390c9/target-accounts/01d808dc-81b9-471e-b29f-a4547318435e",
260 "http://localhost:4200/api/connect/v1/organisations/2cea7980-72f3-4e50-8590-28fb009390c9/target-accounts/01d808dd-81b9-471e-b29f-a4547318435e",
261 "http://localhost:4200/api/connect/v1/organisations/2cea7980-72f3-4e50-8590-28fb009390c9/target-accounts/01d808de-81b9-471e-b29f-a4547318435e",
262 "http://localhost:4200/api/connect/v1/organisations/2cea7980-72f3-4e50-8590-28fb009390c9/target-accounts/01d808ea-81b9-471e-b29f-a4547318435e",
263 "http://localhost:4200/api/connect/v1/organisations/2cea7980-72f3-4e50-8590-28fb009390c9/target-accounts/01d808eb-81b9-471e-b29f-a4547318435e",
264 "http://localhost:4200/api/connect/v1/organisations/2cea7980-72f3-4e50-8590-28fb009390c9/target-accounts/01d808ec-81b9-471e-b29f-a4547318435e",
265 "http://localhost:4200/api/connect/v1/organisations/2cea7980-72f3-4e50-8590-28fb009390c9/target-accounts/01d808ed-81b9-471e-b29f-a4547318435e",
266 "http://localhost:4200/api/connect/v1/organisations/2cea7980-72f3-4e50-8590-28fb009390c9/target-accounts/01d808ee-81b9-471e-b29f-a4547318435e",
267 "http://localhost:4200/api/connect/v1/organisations/2cea7980-72f3-4e50-8590-28fb009390c9/target-accounts/01d808ef-81b9-471e-b29f-a4547318435e",
268 "http://localhost:4200/api/connect/v1/organisations/8070ad6e-0963-4a63-a834-4bb2cb73e963/target-accounts/012345ab-81b9-471e-b29f-a4547318412a",
269 "http://localhost:4200/api/connect/v1/organisations/8070ad6e-0963-4a63-a834-4bb2cb73e963/target-accounts/01d809aa-81b9-471e-b29f-a4547318435a"
270 ]
271 }
272 }
273 }
274 }
275 },
276 "headers": {
277 "ETag": {
278 "$ref": "#/components/headers/etag"
279 }
280 }
281 },
282 "403": {
283 "$ref": "#/components/responses/Forbidden"
284 }
285 }
286 },
287 "post": {
288 "tags": ["target-accounts"],
289 "description": "Create a Target Account",
290 "requestBody": {
291 "description": "Target Account to add",
292 "content": {
293 "application/json": {
294 "schema": {
295 "$ref": "#/components/schemas/TargetAccountRequest"
296 },
297 "examples": {
298 "v1": {
299 "summary": "Connect v1 example",
300 "value": {
301 "metadata": {
302 "labels": [
303 {
304 "key": "m2amedia.tv:name",
305 "value": "Test Target Account"
306 },
307 {
308 "key": "m2amedia.tv:description",
309 "value": "A longer description of the target account in question"
310 }
311 ]
312 },
313 "aws-account-number": "123456789012",
314 "proxy-whitelist": ["192.0.2.1/32", "198.51.100.1/32"]
315 }
316 }
317 }
318 }
319 },
320 "required": true
321 },
322 "responses": {
323 "201": {
324 "description": "Created",
325 "headers": {
326 "Location": {
327 "$ref": "#/components/headers/location"
328 },
329 "ETag": {
330 "$ref": "#/components/headers/etag"
331 }
332 },
333 "content": {
334 "application/json": {
335 "schema": {
336 "$ref": "#/components/schemas/TargetAccountResponse"
337 }
338 }
339 }
340 },
341 "400": {
342 "$ref": "#/components/responses/BadRequest"
343 },
344 "403": {
345 "$ref": "#/components/responses/Forbidden"
346 }
347 }
348 }
349 },
350 "/organisations/{organisation-id}/target-accounts/{target-account-id}": {
351 "parameters": [
352 {
353 "$ref": "#/components/parameters/organisation-id"
354 },
355 {
356 "$ref": "#/components/parameters/target-account-id"
357 }
358 ],
359 "get": {
360 "tags": ["target-accounts"],
361 "description": "Get Target Account by id",
362 "responses": {
363 "200": {
364 "description": "OK",
365 "content": {
366 "application/json": {
367 "schema": {
368 "$ref": "#/components/schemas/TargetAccountResponse"
369 },
370 "examples": {
371 "v1.8bf9468f": {
372 "summary": "Happy path UI Mock",
373 "value": {
374 "id": "8bf9468f-d54c-4b24-9be7-7260b743a0e4",
375 "aws-account-number": "123456789012",
376 "metadata": {
377 "labels": [
378 {
379 "key": "m2amedia.tv:name",
380 "value": "Test Sub 1"
381 },
382 {
383 "key": "m2amedia.tv:description",
384 "value": "My awesome target account"
385 },
386 {
387 "key": "m2amedia.tv:role",
388 "value": "provider"
389 }
390 ]
391 },
392 "proxy-whitelist": []
393 }
394 },
395 "v1.012345ab": {
396 "summary": "Happy path UI Mock",
397 "value": {
398 "id": "012345ab-81b9-471e-b29f-a4547318412a",
399 "aws-account-number": "123456789012",
400 "metadata": {
401 "labels": [
402 {
403 "key": "m2amedia.tv:name",
404 "value": "Test Sub 2"
405 },
406 {
407 "key": "m2amedia.tv:description",
408 "value": "My awesome target account"
409 },
410 {
411 "key": "m2amedia.tv:role",
412 "value": "provider"
413 }
414 ]
415 },
416 "proxy-whitelist": []
417 }
418 },
419 "v1.01d809aa": {
420 "value": {
421 "id": "01d809aa-81b9-471e-b29f-a4547318435a",
422 "aws-account-number": "123456789012",
423 "metadata": {
424 "labels": [
425 {
426 "key": "m2amedia.tv:name",
427 "value": "Aberdeen Subscriber"
428 },
429 {
430 "key": "m2amedia.tv:description",
431 "value": "Subscriber from Aberdeen"
432 },
433 {
434 "key": "m2amedia.tv:role",
435 "value": "subscriber"
436 }
437 ]
438 },
439 "proxy-whitelist": []
440 }
441 },
442 "v1.01d808bb": {
443 "value": {
444 "id": "01d808bb-81b9-471e-b29f-a4547318435a",
445 "aws-account-number": "123456789012",
446 "metadata": {
447 "labels": [
448 {
449 "key": "m2amedia.tv:name",
450 "value": "Argentina Subscriber"
451 },
452 {
453 "key": "m2amedia.tv:description",
454 "value": "Subscriber from Argentina"
455 },
456 {
457 "key": "m2amedia.tv:role",
458 "value": "subscriber"
459 }
460 ]
461 },
462 "proxy-whitelist": []
463 }
464 },
465 "v1.01d808bc": {
466 "value": {
467 "id": "01d808bc-81b9-471e-b29f-a4547318435b",
468 "aws-account-number": "817530565250",
469 "metadata": {
470 "labels": [
471 {
472 "key": "m2amedia.tv:name",
473 "value": "Brazil Subscriber"
474 },
475 {
476 "key": "m2amedia.tv:description",
477 "value": "Subscriber from Brazil"
478 },
479 {
480 "key": "m2amedia.tv:role",
481 "value": "subscriber"
482 }
483 ]
484 },
485 "proxy-whitelist": []
486 }
487 },
488 "v1.01d808bd": {
489 "value": {
490 "id": "01d808bd-81b9-471e-b29f-a4547318435c",
491 "aws-account-number": "857470708333",
492 "metadata": {
493 "labels": [
494 {
495 "key": "m2amedia.tv:name",
496 "value": "China Subscriber"
497 },
498 {
499 "key": "m2amedia.tv:description",
500 "value": "Subscriber from China"
501 },
502 {
503 "key": "m2amedia.tv:role",
504 "value": "subscriber"
505 }
506 ]
507 },
508 "proxy-whitelist": []
509 }
510 },
511 "v1.01d808be": {
512 "value": {
513 "id": "01d808be-81b9-471e-b29f-a4547318435d",
514 "aws-account-number": "565598926732",
515 "metadata": {
516 "labels": [
517 {
518 "key": "m2amedia.tv:name",
519 "value": "Denmark Subscriber"
520 },
521 {
522 "key": "m2amedia.tv:description",
523 "value": "Subscriber from Denmark"
524 },
525 {
526 "key": "m2amedia.tv:role",
527 "value": "subscriber"
528 }
529 ]
530 },
531 "proxy-whitelist": []
532 }
533 },
534 "v1.01d808bf": {
535 "value": {
536 "id": "01d808bf-81b9-471e-b29f-a4547318435e",
537 "aws-account-number": "106933439768",
538 "metadata": {
539 "labels": [
540 {
541 "key": "m2amedia.tv:name",
542 "value": "Ethiopia Subscriber"
543 },
544 {
545 "key": "m2amedia.tv:description",
546 "value": "Subscriber from Ethiopia"
547 },
548 {
549 "key": "m2amedia.tv:role",
550 "value": "subscriber"
551 }
552 ]
553 },
554 "proxy-whitelist": []
555 }
556 },
557 "v1.01d808ca": {
558 "value": {
559 "id": "01d808ca-81b9-471e-b29f-a4547318435e",
560 "aws-account-number": "825774740871",
561 "metadata": {
562 "labels": [
563 {
564 "key": "m2amedia.tv:name",
565 "value": "Finland Subscriber"
566 },
567 {
568 "key": "m2amedia.tv:description",
569 "value": "Subscriber from Finland"
570 },
571 {
572 "key": "m2amedia.tv:role",
573 "value": "subscriber"
574 }
575 ]
576 },
577 "proxy-whitelist": []
578 }
579 },
580 "v1.01d808cb": {
581 "value": {
582 "id": "01d808cb-81b9-471e-b29f-a4547318435e",
583 "aws-account-number": "851057500755",
584 "metadata": {
585 "labels": [
586 {
587 "key": "m2amedia.tv:name",
588 "value": "Ghana Subscriber"
589 },
590 {
591 "key": "m2amedia.tv:description",
592 "value": "Subscriber from Ghana"
593 },
594 {
595 "key": "m2amedia.tv:role",
596 "value": "subscriber"
597 }
598 ]
599 },
600 "proxy-whitelist": []
601 }
602 },
603 "v1.01d808cc": {
604 "value": {
605 "id": "01d808cc-81b9-471e-b29f-a4547318435e",
606 "aws-account-number": "876492160317",
607 "metadata": {
608 "labels": [
609 {
610 "key": "m2amedia.tv:name",
611 "value": "Hungary Subscriber"
612 },
613 {
614 "key": "m2amedia.tv:description",
615 "value": "Subscriber from Hungary"
616 },
617 {
618 "key": "m2amedia.tv:role",
619 "value": "subscriber"
620 }
621 ]
622 },
623 "proxy-whitelist": []
624 }
625 },
626 "v1.01d808cd": {
627 "value": {
628 "id": "01d808cd-81b9-471e-b29f-a4547318435e",
629 "aws-account-number": "509537849847",
630 "metadata": {
631 "labels": [
632 {
633 "key": "m2amedia.tv:name",
634 "value": "India Subscriber"
635 },
636 {
637 "key": "m2amedia.tv:description",
638 "value": "Subscriber from India"
639 },
640 {
641 "key": "m2amedia.tv:role",
642 "value": "subscriber"
643 }
644 ]
645 },
646 "proxy-whitelist": []
647 }
648 },
649 "v1.01d808ce": {
650 "value": {
651 "id": "01d808ce-81b9-471e-b29f-a4547318435e",
652 "aws-account-number": "916285923459",
653 "metadata": {
654 "labels": [
655 {
656 "key": "m2amedia.tv:name",
657 "value": "Japan Subscriber"
658 },
659 {
660 "key": "m2amedia.tv:description",
661 "value": "Subscriber from Japan"
662 },
663 {
664 "key": "m2amedia.tv:role",
665 "value": "subscriber"
666 }
667 ]
668 },
669 "proxy-whitelist": []
670 }
671 },
672 "v1.01d808cf": {
673 "value": {
674 "id": "01d808cf-81b9-471e-b29f-a4547318435e",
675 "aws-account-number": "842227388574",
676 "metadata": {
677 "labels": [
678 {
679 "key": "m2amedia.tv:name",
680 "value": "Kenya Subscriber"
681 },
682 {
683 "key": "m2amedia.tv:description",
684 "value": "Subscriber from Kenya"
685 },
686 {
687 "key": "m2amedia.tv:role",
688 "value": "subscriber"
689 }
690 ]
691 },
692 "proxy-whitelist": []
693 }
694 },
695 "v1.01d808da": {
696 "value": {
697 "id": "01d808da-81b9-471e-b29f-a4547318435e",
698 "aws-account-number": "269776135532",
699 "metadata": {
700 "labels": [
701 {
702 "key": "m2amedia.tv:name",
703 "value": "Latvia Subscriber"
704 },
705 {
706 "key": "m2amedia.tv:description",
707 "value": "Subscriber from Latvia"
708 },
709 {
710 "key": "m2amedia.tv:role",
711 "value": "subscriber"
712 }
713 ]
714 },
715 "proxy-whitelist": []
716 }
717 },
718 "v1.01d808db": {
719 "value": {
720 "id": "01d808db-81b9-471e-b29f-a4547318435e",
721 "aws-account-number": "087229353685",
722 "metadata": {
723 "labels": [
724 {
725 "key": "m2amedia.tv:name",
726 "value": "Mexico Subscriber"
727 },
728 {
729 "key": "m2amedia.tv:description",
730 "value": "Subscriber from Mexico"
731 },
732 {
733 "key": "m2amedia.tv:role",
734 "value": "subscriber"
735 }
736 ]
737 },
738 "proxy-whitelist": []
739 }
740 },
741 "v1.01d808dc": {
742 "value": {
743 "id": "01d808dc-81b9-471e-b29f-a4547318435e",
744 "aws-account-number": "800316736346",
745 "metadata": {
746 "labels": [
747 {
748 "key": "m2amedia.tv:name",
749 "value": "Nigeria Subscriber"
750 },
751 {
752 "key": "m2amedia.tv:description",
753 "value": "Subscriber from Nigeria"
754 },
755 {
756 "key": "m2amedia.tv:role",
757 "value": "subscriber"
758 }
759 ]
760 },
761 "proxy-whitelist": []
762 }
763 },
764 "v1.01d808dd": {
765 "value": {
766 "id": "01d808dd-81b9-471e-b29f-a4547318435e",
767 "aws-account-number": "341370863974",
768 "metadata": {
769 "labels": [
770 {
771 "key": "m2amedia.tv:name",
772 "value": "Oman Subscriber"
773 },
774 {
775 "key": "m2amedia.tv:description",
776 "value": "Subscriber from Oman"
777 },
778 {
779 "key": "m2amedia.tv:role",
780 "value": "subscriber"
781 }
782 ]
783 },
784 "proxy-whitelist": []
785 }
786 },
787 "v1.01d808de": {
788 "value": {
789 "id": "01d808de-81b9-471e-b29f-a4547318435e",
790 "aws-account-number": "448309495114",
791 "metadata": {
792 "labels": [
793 {
794 "key": "m2amedia.tv:name",
795 "value": "Poland Subscriber"
796 },
797 {
798 "key": "m2amedia.tv:description",
799 "value": "Subscriber from Poland"
800 },
801 {
802 "key": "m2amedia.tv:role",
803 "value": "subscriber"
804 }
805 ]
806 },
807 "proxy-whitelist": []
808 }
809 },
810 "v1.01d808df": {
811 "value": {
812 "id": "01d808df-81b9-471e-b29f-a4547318435e",
813 "aws-account-number": "214119343723",
814 "metadata": {
815 "labels": [
816 {
817 "key": "m2amedia.tv:name",
818 "value": "Qatar Subscriber"
819 },
820 {
821 "key": "m2amedia.tv:description",
822 "value": "Subscriber from Qatar"
823 },
824 {
825 "key": "m2amedia.tv:role",
826 "value": "subscriber"
827 }
828 ]
829 },
830 "proxy-whitelist": []
831 }
832 },
833 "v1.01d808ea": {
834 "value": {
835 "id": "01d808ea-81b9-471e-b29f-a4547318435e",
836 "aws-account-number": "434749359267",
837 "metadata": {
838 "labels": [
839 {
840 "key": "m2amedia.tv:name",
841 "value": "Russia Subscriber"
842 },
843 {
844 "key": "m2amedia.tv:description",
845 "value": "Subscriber from Russia"
846 },
847 {
848 "key": "m2amedia.tv:role",
849 "value": "subscriber"
850 }
851 ]
852 },
853 "proxy-whitelist": []
854 }
855 },
856 "v1.01d808eb": {
857 "value": {
858 "id": "01d808eb-81b9-471e-b29f-a4547318435e",
859 "aws-account-number": "896466104534",
860 "metadata": {
861 "labels": [
862 {
863 "key": "m2amedia.tv:name",
864 "value": "Samoa Subscriber"
865 },
866 {
867 "key": "m2amedia.tv:description",
868 "value": "Subscriber from Samoa"
869 },
870 {
871 "key": "m2amedia.tv:role",
872 "value": "subscriber"
873 }
874 ]
875 },
876 "proxy-whitelist": []
877 }
878 },
879 "v1.01d808ec": {
880 "value": {
881 "id": "01d808ec-81b9-471e-b29f-a4547318435e",
882 "aws-account-number": "896466104534",
883 "metadata": {
884 "labels": [
885 {
886 "key": "m2amedia.tv:name",
887 "value": "Thailand Subscriber"
888 },
889 {
890 "key": "m2amedia.tv:description",
891 "value": "Subscriber from Thailand"
892 },
893 {
894 "key": "m2amedia.tv:role",
895 "value": "subscriber"
896 }
897 ]
898 },
899 "proxy-whitelist": []
900 }
901 },
902
903 "v1.01d808ee": {
904 "value": {
905 "id": "01d808ee-81b9-471e-b29f-a4547318435e",
906 "aws-account-number": "896466104534",
907 "metadata": {
908 "labels": [
909 {
910 "key": "m2amedia.tv:name",
911 "value": "Vietnam Subscriber"
912 },
913 {
914 "key": "m2amedia.tv:description",
915 "value": "Subscriber from Vietnam"
916 },
917 {
918 "key": "m2amedia.tv:role",
919 "value": "subscriber"
920 }
921 ]
922 },
923 "proxy-whitelist": []
924 }
925 },
926 "v1.01d808ed": {
927 "value": {
928 "id": "01d808ed-81b9-471e-b29f-a4547318435e",
929 "aws-account-number": "896466104534",
930 "metadata": {
931 "labels": [
932 {
933 "key": "m2amedia.tv:name",
934 "value": "Uruguay Subscriber"
935 },
936 {
937 "key": "m2amedia.tv:description",
938 "value": "Subscriber from Uruguay"
939 },
940 {
941 "key": "m2amedia.tv:role",
942 "value": "subscriber"
943 }
944 ]
945 },
946 "proxy-whitelist": []
947 }
948 },
949 "v1.01d808ef": {
950 "value": {
951 "id": "01d808ef-81b9-471e-b29f-a4547318435e",
952 "aws-account-number": "896466104534",
953 "metadata": {
954 "labels": [
955 {
956 "key": "m2amedia.tv:name",
957 "value": "Wales Subscriber"
958 },
959 {
960 "key": "m2amedia.tv:description",
961 "value": "Subscriber from Wales"
962 },
963 {
964 "key": "m2amedia.tv:role",
965 "value": "subscriber"
966 }
967 ]
968 },
969 "proxy-whitelist": []
970 }
971 }
972 }
973 }
974 },
975 "headers": {
976 "ETag": {
977 "$ref": "#/components/headers/etag"
978 }
979 }
980 },
981 "403": {
982 "$ref": "#/components/responses/Forbidden"
983 },
984 "404": {
985 "$ref": "#/components/responses/NotFound"
986 }
987 }
988 },
989 "delete": {
990 "tags": ["target-accounts"],
991 "description": "Delete Target Account by id",
992 "responses": {
993 "204": {
994 "$ref": "#/components/responses/Deleted"
995 },
996 "403": {
997 "$ref": "#/components/responses/Forbidden"
998 },
999 "404": {
1000 "$ref": "#/components/responses/NotFound"
1001 }
1002 }
1003 }
1004 },
1005 "/organisations/{organisation-id}/target-accounts/{target-account-id}/events": {
1006 "parameters": [
1007 {
1008 "$ref": "#/components/parameters/organisation-id"
1009 },
1010 {
1011 "$ref": "#/components/parameters/target-account-id"
1012 },
1013 {
1014 "in": "query",
1015 "name": "interval",
1016 "description": "Optional time range to list events for. Only events whose duration intersect or overlap the given range will be returned. Both lower and upper bounds are inclusive. If no events intersect or overlap the range, then the list of events will be empty. Time range to search for is given as an ISO 8601 interval.",
1017 "allowReserved": true,
1018 "required": false,
1019 "schema": {
1020 "$ref": "#/components/schemas/ISO8601Interval"
1021 }
1022 }
1023 ],
1024 "get": {
1025 "operationId": "GetEvents",
1026 "tags": ["events"],
1027 "description": "Get list of links to Events",
1028 "responses": {
1029 "200": {
1030 "description": "OK",
1031 "content": {
1032 "application/json": {
1033 "schema": {
1034 "$ref": "#/components/schemas/URLListResponse"
1035 },
1036 "examples": {
1037 "v1": {
1038 "summary": "Connect v1 example",
1039 "value": {
1040 "items": [
1041 "http://localhost:4200/api/connect/v1/organisations/2cea7980-72f3-4e50-8590-28fb009390c9/target-accounts/8bf9468f-d54c-4b24-9be7-7260b743a0e4/events/c622059c-6a41-4e4f-a4b6-abbb73d6bb17"
1042 ]
1043 }
1044 }
1045 }
1046 }
1047 },
1048 "headers": {
1049 "ETag": {
1050 "$ref": "#/components/headers/etag"
1051 }
1052 }
1053 },
1054 "400": {
1055 "$ref": "#/components/responses/BadRequest"
1056 },
1057 "403": {
1058 "$ref": "#/components/responses/Forbidden"
1059 }
1060 }
1061 },
1062 "post": {
1063 "tags": ["events"],
1064 "description": "Create an Event",
1065 "requestBody": {
1066 "description": "Event to add",
1067 "content": {
1068 "application/json": {
1069 "schema": {
1070 "$ref": "#/components/schemas/EventRequest"
1071 },
1072 "examples": {
1073 "v1": {
1074 "summary": "Connect v1 example",
1075 "value": {
1076 "metadata": {
1077 "labels": [
1078 {
1079 "key": "m2amedia.tv:name",
1080 "value": "Test Event"
1081 },
1082 {
1083 "key": "m2amedia.tv:description",
1084 "value": "A longer description of the Event in question"
1085 }
1086 ]
1087 },
1088 "on-air-start-time": "2021-05-19T11:15:05+00:00",
1089 "on-air-end-time": "2021-05-19T12:15:05+00:00",
1090 "start-time": "2021-05-19T10:45:05+00:00",
1091 "end-time": "2021-05-19T12:25:05+00:00",
1092 "resource-ids": [
1093 "13c19c8e-09f3-4e55-a856-8728e4001223",
1094 "81699d24-6870-4e7f-b8d6-39ac3d95692e"
1095 ]
1096 }
1097 }
1098 }
1099 }
1100 },
1101 "required": true
1102 },
1103 "responses": {
1104 "201": {
1105 "description": "Created",
1106 "headers": {
1107 "Location": {
1108 "$ref": "#/components/headers/location"
1109 },
1110 "ETag": {
1111 "$ref": "#/components/headers/etag"
1112 }
1113 },
1114 "content": {
1115 "application/json": {
1116 "schema": {
1117 "$ref": "#/components/schemas/EventResponse"
1118 },
1119 "examples": {
1120 "v1": {
1121 "summary": "Connect v1 example",
1122 "value": {
1123 "metadata": {
1124 "labels": [
1125 {
1126 "key": "m2amedia.tv:name",
1127 "value": "Test Event"
1128 },
1129 {
1130 "key": "m2amedia.tv:description",
1131 "value": "A longer description of the Event in question"
1132 }
1133 ]
1134 },
1135 "on-air-start-time": "2021-05-19T11:15:05+00:00",
1136 "on-air-end-time": "2021-05-19T12:15:05+00:00",
1137 "start-time": "2021-05-19T10:45:05+00:00",
1138 "end-time": "2021-05-19T12:25:05+00:00",
1139 "resource-ids": [
1140 "13c19c8e-09f3-4e55-a856-8728e4001223",
1141 "81699d24-6870-4e7f-b8d6-39ac3d95692e"
1142 ],
1143 "id": "3fd471ea-7e53-4fc1-bc74-852c03c8eca3"
1144 }
1145 }
1146 }
1147 }
1148 }
1149 },
1150 "400": {
1151 "$ref": "#/components/responses/BadRequest"
1152 },
1153 "403": {
1154 "$ref": "#/components/responses/Forbidden"
1155 }
1156 }
1157 }
1158 },
1159 "/organisations/{organisation-id}/target-accounts/{target-account-id}/events/{event-id}": {
1160 "parameters": [
1161 {
1162 "$ref": "#/components/parameters/organisation-id"
1163 },
1164 {
1165 "$ref": "#/components/parameters/target-account-id"
1166 },
1167 {
1168 "$ref": "#/components/parameters/event-id"
1169 }
1170 ],
1171 "get": {
1172 "tags": ["events"],
1173 "description": "Get Event by id",
1174 "responses": {
1175 "200": {
1176 "description": "OK",
1177 "content": {
1178 "application/json": {
1179 "schema": {
1180 "$ref": "#/components/schemas/EventResponse"
1181 },
1182 "examples": {
1183 "v1.c622059c": {
1184 "summary": "Connect v1 example",
1185 "value": {
1186 "on-air-start-time": "2021-03-03T11:15:05+00:00",
1187 "on-air-end-time": "2021-03-03T12:15:05+00:00",
1188 "start-time": "2021-03-03T10:45:05+00:00",
1189 "end-time": "2021-03-03T12:25:05+00:00",
1190 "resource-ids": ["46cafa6a-75b1-418f-87a5-1ec4883537bc"],
1191 "metadata": {
1192 "labels": [
1193 {
1194 "key": "m2amedia.tv:name",
1195 "value": "My event"
1196 },
1197 {
1198 "key": "m2amedia.tv:description",
1199 "value": "My awesome event"
1200 }
1201 ]
1202 },
1203 "id": "c622059c-6a41-4e4f-a4b6-abbb73d6bb17"
1204 }
1205 }
1206 }
1207 }
1208 },
1209 "headers": {
1210 "ETag": {
1211 "$ref": "#/components/headers/etag"
1212 }
1213 }
1214 },
1215 "403": {
1216 "$ref": "#/components/responses/Forbidden"
1217 },
1218 "404": {
1219 "$ref": "#/components/responses/NotFound"
1220 }
1221 }
1222 },
1223 "put": {
1224 "tags": ["events"],
1225 "description": "Update an Event",
1226 "requestBody": {
1227 "description": "Event update",
1228 "content": {
1229 "application/json": {
1230 "schema": {
1231 "$ref": "#/components/schemas/EventRequest"
1232 }
1233 }
1234 },
1235 "required": true
1236 },
1237 "parameters": [
1238 {
1239 "$ref": "#/components/parameters/if-match-header"
1240 }
1241 ],
1242 "responses": {
1243 "200": {
1244 "description": "OK",
1245 "content": {
1246 "application/json": {
1247 "schema": {
1248 "$ref": "#/components/schemas/EventResponse"
1249 },
1250 "examples": {
1251 "v1.c622059c": {
1252 "summary": "Connect v1 example",
1253 "value": {
1254 "metadata": {
1255 "labels": [
1256 {
1257 "key": "m2amedia.tv:name",
1258 "value": "Test Event"
1259 },
1260 {
1261 "key": "m2amedia.tv:description",
1262 "value": "A longer description of the Event in question"
1263 }
1264 ]
1265 },
1266 "on-air-start-time": "2019-12-19T11:15:05+00:00",
1267 "on-air-end-time": "2019-12-19T12:15:05+00:00",
1268 "start-time": "2019-12-19T10:45:05+00:00",
1269 "end-time": "2019-12-19T12:25:05+00:00",
1270 "resource-ids": [
1271 "13c19c8e-09f3-4e55-a856-8728e4001223",
1272 "81699d24-6870-4e7f-b8d6-39ac3d95692e"
1273 ],
1274 "id": "3fd471ea-7e53-4fc1-bc74-852c03c8eca3"
1275 }
1276 }
1277 }
1278 }
1279 },
1280 "headers": {
1281 "ETag": {
1282 "$ref": "#/components/headers/etag"
1283 }
1284 }
1285 },
1286 "400": {
1287 "$ref": "#/components/responses/BadRequest"
1288 },
1289 "403": {
1290 "$ref": "#/components/responses/Forbidden"
1291 },
1292 "404": {
1293 "$ref": "#/components/responses/NotFound"
1294 },
1295 "412": {
1296 "$ref": "#/components/responses/PreconditionFailed"
1297 }
1298 }
1299 },
1300 "delete": {
1301 "tags": ["events"],
1302 "description": "Delete Event by id",
1303 "responses": {
1304 "204": {
1305 "$ref": "#/components/responses/Deleted"
1306 },
1307 "403": {
1308 "$ref": "#/components/responses/Forbidden"
1309 },
1310 "404": {
1311 "$ref": "#/components/responses/NotFound"
1312 }
1313 }
1314 }
1315 },
1316 "/organisations/{organisation-id}/target-accounts/{target-account-id}/sources": {
1317 "parameters": [
1318 {
1319 "$ref": "#/components/parameters/organisation-id"
1320 },
1321 {
1322 "$ref": "#/components/parameters/target-account-id"
1323 }
1324 ],
1325 "get": {
1326 "tags": ["sources"],
1327 "description": "Get list of links to Sources",
1328 "responses": {
1329 "200": {
1330 "description": "OK",
1331 "content": {
1332 "application/json": {
1333 "schema": {
1334 "$ref": "#/components/schemas/URLListResponse"
1335 },
1336 "examples": {
1337 "v1": {
1338 "summary": "Connect v1 example",
1339 "value": {
1340 "items": [
1341 "http://localhost:4200/api/connect/v1/organisations/2cea7980-72f3-4e50-8590-28fb009390c9/target-accounts/8bf9468f-d54c-4b24-9be7-7260b743a0e4/sources/9a002b57-5deb-4705-b796-4e8764c2b8d8",
1342 "http://localhost:4200/api/connect/v1/organisations/2cea7980-72f3-4e50-8590-28fb009390c9/target-accounts/8bf9468f-d54c-4b24-9be7-7260b743a0e4/sources/81211265-2e83-4396-8913-2d32546db56e",
1343 "http://localhost:4200/api/connect/v1/organisations/2cea7980-72f3-4e50-8590-28fb009390c9/target-accounts/8bf9468f-d54c-4b24-9be7-7260b743a0e4/sources/3831864b-b856-4313-ae77-cbaaa0bd70eb",
1344 "http://localhost:4200/api/connect/v1/organisations/2cea7980-72f3-4e50-8590-28fb009390c9/target-accounts/8bf9468f-d54c-4b24-9be7-7260b743a0e4/sources/397ac0a8-6544-42b1-b89f-19d1035ca68e",
1345 "http://localhost:4200/api/connect/v1/organisations/2cea7980-72f3-4e50-8590-28fb009390c9/target-accounts/8bf9468f-d54c-4b24-9be7-7260b743a0e4/sources/c68013e6-ef5c-4716-b390-3b2cbb987609",
1346 "http://localhost:4200/api/connect/v1/organisations/2cea7980-72f3-4e50-8590-28fb009390c9/target-accounts/8bf9468f-d54c-4b24-9be7-7260b743a0e4/sources/d72de4ab-a4a7-46c8-acbc-088b0cbd6937",
1347 "http://localhost:4200/api/connect/v1/organisations/2cea7980-72f3-4e50-8590-28fb009390c9/target-accounts/8bf9468f-d54c-4b24-9be7-7260b743a0e4/sources/12bd0f9f-fcbe-404c-9ffb-1264cf687812",
1348 "http://localhost:4200/api/connect/v1/organisations/2cea7980-72f3-4e50-8590-28fb009390c9/target-accounts/8bf9468f-d54c-4b24-9be7-7260b743a0e4/sources/4f913146-f8b8-4cf2-bdee-4a646cd3d8d4",
1349 "http://localhost:4200/api/connect/v1/organisations/2cea7980-72f3-4e50-8590-28fb009390c9/target-accounts/8bf9468f-d54c-4b24-9be7-7260b743a0e4/sources/0bc2b49e-1668-45ec-ae6f-9e0eaead9231",
1350 "http://localhost:4200/api/connect/v1/organisations/2cea7980-72f3-4e50-8590-28fb009390c9/target-accounts/8bf9468f-d54c-4b24-9be7-7260b743a0e4/sources/4a002b57-5deb-4705-b796-4e8764c2b8d8",
1351 "http://localhost:4200/api/connect/v1/organisations/2cea7980-72f3-4e50-8590-28fb009390c9/target-accounts/8bf9468f-d54c-4b24-9be7-7260b743a0e4/sources/71211265-2e83-4396-8913-2d32546db56e",
1352 "http://localhost:4200/api/connect/v1/organisations/2cea7980-72f3-4e50-8590-28fb009390c9/target-accounts/8bf9468f-d54c-4b24-9be7-7260b743a0e4/sources/1831864b-b856-4313-ae77-cbaaa0bd70eb",
1353 "http://localhost:4200/api/connect/v1/organisations/2cea7980-72f3-4e50-8590-28fb009390c9/target-accounts/8bf9468f-d54c-4b24-9be7-7260b743a0e4/sources/297ac0a8-6544-42b1-b89f-19d1035ca68e",
1354 "http://localhost:4200/api/connect/v1/organisations/2cea7980-72f3-4e50-8590-28fb009390c9/target-accounts/8bf9468f-d54c-4b24-9be7-7260b743a0e4/sources/d68013e6-ef5c-4716-b390-3b2cbb987609",
1355 "http://localhost:4200/api/connect/v1/organisations/2cea7980-72f3-4e50-8590-28fb009390c9/target-accounts/8bf9468f-d54c-4b24-9be7-7260b743a0e4/sources/c72de4ab-a4a7-46c8-acbc-088b0cbd6937",
1356 "http://localhost:4200/api/connect/v1/organisations/2cea7980-72f3-4e50-8590-28fb009390c9/target-accounts/8bf9468f-d54c-4b24-9be7-7260b743a0e4/sources/42bd0f9f-fcbe-404c-9ffb-1264cf687812",
1357 "http://localhost:4200/api/connect/v1/organisations/2cea7980-72f3-4e50-8590-28fb009390c9/target-accounts/8bf9468f-d54c-4b24-9be7-7260b743a0e4/sources/3f913146-f8b8-4cf2-bdee-4a646cd3d8d4",
1358 "http://localhost:4200/api/connect/v1/organisations/2cea7980-72f3-4e50-8590-28fb009390c9/target-accounts/8bf9468f-d54c-4b24-9be7-7260b743a0e4/sources/1bc2b49e-1668-45ec-ae6f-9e0eaead9231",
1359 "http://localhost:4200/api/connect/v1/organisations/2cea7980-72f3-4e50-8590-28fb009390c9/target-accounts/8bf9468f-d54c-4b24-9be7-7260b743a0e4/sources/c78013e6-ef5c-4716-b390-3b2cbb987609",
1360 "http://localhost:4200/api/connect/v1/organisations/2cea7980-72f3-4e50-8590-28fb009390c9/target-accounts/8bf9468f-d54c-4b24-9be7-7260b743a0e4/sources/d62de4ab-a4a7-46c8-acbc-088b0cbd6937",
1361 "http://localhost:4200/api/connect/v1/organisations/2cea7980-72f3-4e50-8590-28fb009390c9/target-accounts/8bf9468f-d54c-4b24-9be7-7260b743a0e4/sources/13bd0f9f-fcbe-404c-9ffb-1264cf687812",
1362 "http://localhost:4200/api/connect/v1/organisations/2cea7980-72f3-4e50-8590-28fb009390c9/target-accounts/8bf9468f-d54c-4b24-9be7-7260b743a0e4/sources/5f913146-f8b8-4cf2-bdee-4a646cd3d8d4",
1363 "http://localhost:4200/api/connect/v1/organisations/2cea7980-72f3-4e50-8590-28fb009390c9/target-accounts/8bf9468f-d54c-4b24-9be7-7260b743a0e4/sources/8bc2b49e-1668-45ec-ae6f-9e0eaead9231"
1364 ]
1365 }
1366 }
1367 }
1368 }
1369 },
1370 "headers": {
1371 "ETag": {
1372 "$ref": "#/components/headers/etag"
1373 }
1374 }
1375 },
1376 "403": {
1377 "$ref": "#/components/responses/Forbidden"
1378 }
1379 }
1380 },
1381 "post": {
1382 "tags": ["sources"],
1383 "description": "Create a Source",
1384 "requestBody": {
1385 "description": "Source to add",
1386 "content": {
1387 "application/json": {
1388 "schema": {
1389 "$ref": "#/components/schemas/SourceRequest"
1390 },
1391 "examples": {
1392 "zixi-push-basic-ingest": {
1393 "value": {
1394 "metadata": {
1395 "labels": [
1396 {
1397 "key": "m2amedia.tv:name",
1398 "value": "zixi-push-basic-ingest"
1399 }
1400 ]
1401 },
1402 "egress-regions": ["eu-west-1", "eu-central-1"],
1403 "entitlement-prefix": "Provider_Channel_1",
1404 "ingress-region": "eu-west-1",
1405 "ingest-endpoints": [
1406 [
1407 {
1408 "metadata": {
1409 "labels": []
1410 },
1411 "whitelist-cidrs": ["203.0.113.1/32"],
1412 "port": 2088,
1413 "protocol": "zixi-push",
1414 "max-latency": 2000,
1415 "stream-id": "my-zixi-stream-1-a",
1416 "decryption": {
1417 "enabled": false
1418 }
1419 }
1420 ]
1421 ]
1422 }
1423 },
1424 "rist-push-basic-ingest": {
1425 "value": {
1426 "metadata": {
1427 "labels": [
1428 {
1429 "key": "m2amedia.tv:name",
1430 "value": "rist-push-basic-ingest"
1431 }
1432 ]
1433 },
1434 "egress-regions": ["eu-west-1", "eu-central-1"],
1435 "entitlement-prefix": "Provider_Channel_1",
1436 "ingress-region": "eu-west-1",
1437 "ingest-endpoints": [
1438 [
1439 {
1440 "metadata": {
1441 "labels": []
1442 },
1443 "whitelist-cidrs": ["203.0.113.2/32"],
1444 "port": 5004,
1445 "protocol": "rist",
1446 "max-latency": 500,
1447 "max-bitrate": 20000000
1448 }
1449 ]
1450 ]
1451 }
1452 },
1453 "rtp-push-basic-ingest": {
1454 "value": {
1455 "metadata": {
1456 "labels": [
1457 {
1458 "key": "m2amedia.tv:name",
1459 "value": "rtp-push-basic-ingest"
1460 }
1461 ]
1462 },
1463 "egress-regions": ["eu-west-1", "eu-central-1"],
1464 "entitlement-prefix": "Provider_Channel_1",
1465 "ingress-region": "eu-west-1",
1466 "ingest-endpoints": [
1467 [
1468 {
1469 "metadata": {
1470 "labels": []
1471 },
1472 "whitelist-cidrs": ["203.0.113.3/32"],
1473 "port": 5000,
1474 "protocol": "rtp",
1475 "max-bitrate": 30000000,
1476 "fec-enabled": true
1477 }
1478 ]
1479 ]
1480 }
1481 },
1482 "entitled-ingest": {
1483 "value": {
1484 "metadata": {
1485 "labels": [
1486 {
1487 "key": "m2amedia.tv:name",
1488 "value": "entitled-ingest"
1489 }
1490 ]
1491 },
1492 "egress-regions": ["eu-west-1", "eu-central-1"],
1493 "entitlement-prefix": "Provider_Channel_1",
1494 "ingress-region": "eu-west-1",
1495 "ingest-endpoints": [
1496 [
1497 {
1498 "entitlement-arn": "arn:aws:mediaconnect:eu-west-1:123456789012:entitlement:1-ABCDEFGHIJKLMNOP-0a1b2c3d4e5f:an-entitlement",
1499 "protocol": "entitlement",
1500 "decryption": {
1501 "enabled": false
1502 }
1503 }
1504 ]
1505 ]
1506 }
1507 },
1508 "rtmp-pull-basic-ingest": {
1509 "value": {
1510 "metadata": {
1511 "labels": [
1512 {
1513 "key": "m2amedia.tv:name",
1514 "value": "rtmp-pull-basic-ingest"
1515 }
1516 ]
1517 },
1518 "egress-regions": ["eu-west-1", "eu-central-1"],
1519 "entitlement-prefix": "Provider_Channel_1",
1520 "ingress-region": "eu-west-1",
1521 "ingest-endpoints": [
1522 [
1523 {
1524 "metadata": {
1525 "labels": []
1526 },
1527 "protocol": "rtmp-pull",
1528 "url": "rtmp://198.51.100.1/app/key",
1529 "username": "mr.awesome@m2amedia.tv",
1530 "password": "1337H4x0r",
1531 "transcode-profile-url": "s3://m2a-example-bucket/transcode-profiles/rtmp-push.json"
1532 }
1533 ]
1534 ]
1535 }
1536 },
1537 "rtmp-push-basic-ingest": {
1538 "value": {
1539 "metadata": {
1540 "labels": [
1541 {
1542 "key": "m2amedia.tv:name",
1543 "value": "rtmp-push-basic-ingest"
1544 }
1545 ]
1546 },
1547 "egress-regions": ["eu-west-1", "eu-central-1"],
1548 "entitlement-prefix": "Provider_Channel_1",
1549 "ingress-region": "eu-west-1",
1550 "ingest-endpoints": [
1551 [
1552 {
1553 "metadata": {
1554 "labels": []
1555 },
1556 "whitelist-cidrs": ["203.0.113.1/32"],
1557 "protocol": "rtmp-push",
1558 "port": 1935,
1559 "app-name": "app",
1560 "stream-key": "test",
1561 "transcode-profile-url": "s3://m2a-example-bucket/transcode-profiles/rtmp-push.json"
1562 }
1563 ]
1564 ]
1565 }
1566 },
1567 "m2amanaged-udp-basic-ingest": {
1568 "value": {
1569 "metadata": {
1570 "labels": [
1571 {
1572 "key": "m2amedia.tv:name",
1573 "value": "m2amanaged-udp-basic-ingest"
1574 }
1575 ]
1576 },
1577 "egress-regions": ["eu-west-1", "eu-central-1"],
1578 "entitlement-prefix": "Provider_Channel_1",
1579 "ingress-region": "eu-west-1",
1580 "ingest-endpoints": [
1581 [
1582 {
1583 "metadata": {
1584 "labels": []
1585 },
1586 "protocol": "m2a-managed",
1587 "type": "udp",
1588 "ip": "239.50.50.1",
1589 "port": 5000,
1590 "bind-ip": "10.10.15.101"
1591 }
1592 ]
1593 ]
1594 }
1595 },
1596 "m2amanaged-rtp-basic-ingest": {
1597 "value": {
1598 "metadata": {
1599 "labels": [
1600 {
1601 "key": "m2amedia.tv:name",
1602 "value": "m2amanaged-rtp-basic-ingest"
1603 }
1604 ]
1605 },
1606 "egress-regions": ["eu-west-1", "eu-central-1"],
1607 "entitlement-prefix": "Provider_Channel_1",
1608 "ingress-region": "eu-west-1",
1609 "ingest-endpoints": [
1610 [
1611 {
1612 "metadata": {
1613 "labels": []
1614 },
1615 "protocol": "m2a-managed",
1616 "type": "rtp",
1617 "ip": "239.50.50.2",
1618 "port": 5005,
1619 "bind-ip": "10.10.15.102"
1620 }
1621 ]
1622 ]
1623 }
1624 },
1625 "zixi-push-enhanced-ingest": {
1626 "value": {
1627 "metadata": {
1628 "labels": [
1629 {
1630 "key": "m2amedia.tv:name",
1631 "value": "zixi-push-enhanced-ingest"
1632 }
1633 ]
1634 },
1635 "egress-regions": ["eu-west-1", "eu-central-1"],
1636 "entitlement-prefix": "Provider_Channel_1",
1637 "ingress-region": "eu-west-1",
1638 "ingest-endpoints": [
1639 [
1640 {
1641 "metadata": {
1642 "labels": []
1643 },
1644 "whitelist-cidrs": ["192.0.2.2/32"],
1645 "port": 2088,
1646 "protocol": "zixi-push",
1647 "max-latency": 2000,
1648 "stream-id": "my-awesome-stream-1-a",
1649 "decryption": {
1650 "enabled": false
1651 }
1652 },
1653 {
1654 "metadata": {
1655 "labels": []
1656 },
1657 "whitelist-cidrs": ["198.51.100.10/32"],
1658 "port": 2088,
1659 "protocol": "zixi-push",
1660 "max-latency": 2000,
1661 "stream-id": "my-awesome-stream-1-b",
1662 "decryption": {
1663 "enabled": false
1664 }
1665 }
1666 ]
1667 ]
1668 }
1669 },
1670 "rist-push-enhanced-ingest": {
1671 "value": {
1672 "metadata": {
1673 "labels": [
1674 {
1675 "key": "m2amedia.tv:name",
1676 "value": "rist-push-enhanced-ingest"
1677 }
1678 ]
1679 },
1680 "egress-regions": ["eu-west-1", "eu-central-1"],
1681 "entitlement-prefix": "Provider_Channel_1",
1682 "ingress-region": "eu-west-1",
1683 "ingest-endpoints": [
1684 [
1685 {
1686 "metadata": {
1687 "labels": []
1688 },
1689 "whitelist-cidrs": ["203.0.113.11/32"],
1690 "port": 5004,
1691 "protocol": "rist",
1692 "max-latency": 500,
1693 "max-bitrate": 20000000
1694 },
1695 {
1696 "metadata": {
1697 "labels": []
1698 },
1699 "whitelist-cidrs": ["192.0.2.15/32"],
1700 "port": 5014,
1701 "protocol": "rist",
1702 "max-latency": 500,
1703 "max-bitrate": 20000000
1704 }
1705 ]
1706 ]
1707 }
1708 },
1709 "rtp-push-enhanced-ingest": {
1710 "value": {
1711 "metadata": {
1712 "labels": [
1713 {
1714 "key": "m2amedia.tv:name",
1715 "value": "rtp-push-enhanced-ingest"
1716 }
1717 ]
1718 },
1719 "egress-regions": ["eu-west-1", "eu-central-1"],
1720 "entitlement-prefix": "Provider_Channel_1",
1721 "ingress-region": "eu-west-1",
1722 "ingest-endpoints": [
1723 [
1724 {
1725 "metadata": {
1726 "labels": []
1727 },
1728 "whitelist-cidrs": ["198.51.100.16/32"],
1729 "port": 5000,
1730 "protocol": "rtp",
1731 "max-bitrate": 30000000,
1732 "fec-enabled": true
1733 },
1734 {
1735 "metadata": {
1736 "labels": []
1737 },
1738 "whitelist-cidrs": ["203.0.113.20/32"],
1739 "port": 5010,
1740 "protocol": "rtp",
1741 "max-bitrate": 30000000,
1742 "fec-enabled": false
1743 }
1744 ]
1745 ]
1746 }
1747 },
1748 "rtmp-pull-enhanced-ingest": {
1749 "value": {
1750 "metadata": {
1751 "labels": [
1752 {
1753 "key": "m2amedia.tv:name",
1754 "value": "rtmp-pull-enhanced-ingest"
1755 }
1756 ]
1757 },
1758 "egress-regions": ["eu-west-1", "eu-central-1"],
1759 "entitlement-prefix": "Provider_Channel_1",
1760 "ingress-region": "eu-west-1",
1761 "ingest-endpoints": [
1762 [
1763 {
1764 "metadata": {
1765 "labels": []
1766 },
1767 "protocol": "rtmp-pull",
1768 "url": "rtmp://192.0.2.101/app/key",
1769 "username": "mr.awesome@m2amedia.tv",
1770 "password": "1337H4x0r",
1771 "transcode-profile-url": "s3://m2a-example-bucket/transcode-profiles/rtmp-push.json"
1772 },
1773 {
1774 "metadata": {
1775 "labels": []
1776 },
1777 "protocol": "rtmp-pull",
1778 "url": "rtmp://198.51.100.102/app/key",
1779 "username": "mrs.awesome@m2amedia.tv",
1780 "password": "m2a4lyfe",
1781 "transcode-profile-url": "s3://m2a-example-bucket/transcode-profiles/rtmp-push.json"
1782 }
1783 ]
1784 ]
1785 }
1786 },
1787 "rtmp-push-enhanced-ingest": {
1788 "value": {
1789 "metadata": {
1790 "labels": [
1791 {
1792 "key": "m2amedia.tv:name",
1793 "value": "rtmp-push-enhanced-ingest"
1794 }
1795 ]
1796 },
1797 "egress-regions": ["eu-west-1", "eu-central-1"],
1798 "entitlement-prefix": "Provider_Channel_1",
1799 "ingress-region": "eu-west-1",
1800 "ingest-endpoints": [
1801 [
1802 {
1803 "metadata": {
1804 "labels": []
1805 },
1806 "whitelist-cidrs": ["203.0.113.101/32"],
1807 "protocol": "rtmp-push",
1808 "port": 1935,
1809 "app-name": "app",
1810 "stream-key": "test-endpoint-1",
1811 "transcode-profile-url": "s3://m2a-example-bucket/transcode-profiles/rtmp-push.json"
1812 },
1813 {
1814 "metadata": {
1815 "labels": []
1816 },
1817 "whitelist-cidrs": ["203.0.113.102/32"],
1818 "protocol": "rtmp-push",
1819 "port": 1935,
1820 "app-name": "app",
1821 "stream-key": "test-endpoint-2",
1822 "transcode-profile-url": "s3://m2a-example-bucket/transcode-profiles/rtmp-push.json"
1823 }
1824 ]
1825 ]
1826 }
1827 },
1828 "m2amanaged-udp-enhanced-ingest": {
1829 "value": {
1830 "metadata": {
1831 "labels": [
1832 {
1833 "key": "m2amedia.tv:name",
1834 "value": "m2amanaged-udp-enhanced-ingest"
1835 }
1836 ]
1837 },
1838 "egress-regions": ["eu-west-1", "eu-central-1"],
1839 "entitlement-prefix": "Provider_Channel_1",
1840 "ingress-region": "eu-west-1",
1841 "ingest-endpoints": [
1842 [
1843 {
1844 "metadata": {
1845 "labels": []
1846 },
1847 "protocol": "m2a-managed",
1848 "type": "udp",
1849 "ip": "239.50.50.1",
1850 "port": 5000,
1851 "bind-ip": "10.10.15.101"
1852 },
1853 {
1854 "metadata": {
1855 "labels": []
1856 },
1857 "protocol": "m2a-managed",
1858 "type": "udp",
1859 "ip": "239.60.60.1",
1860 "port": 5000,
1861 "bind-ip": "10.10.15.102"
1862 }
1863 ]
1864 ]
1865 }
1866 },
1867 "m2amanaged-rtp-enhanced-ingest": {
1868 "value": {
1869 "metadata": {
1870 "labels": [
1871 {
1872 "key": "m2amedia.tv:name",
1873 "value": "m2amanaged-rtp-enhanced-ingest"
1874 }
1875 ]
1876 },
1877 "egress-regions": ["eu-west-1", "eu-central-1"],
1878 "entitlement-prefix": "Provider_Channel_1",
1879 "ingress-region": "eu-west-1",
1880 "ingest-endpoints": [
1881 [
1882 {
1883 "metadata": {
1884 "labels": []
1885 },
1886 "protocol": "m2a-managed",
1887 "type": "rtp",
1888 "ip": "239.50.50.2",
1889 "port": 5005,
1890 "bind-ip": "10.10.15.102"
1891 },
1892 {
1893 "metadata": {
1894 "labels": []
1895 },
1896 "protocol": "m2a-managed",
1897 "type": "rtp",
1898 "ip": "239.60.60.2",
1899 "port": 5005,
1900 "bind-ip": "10.10.15.101"
1901 }
1902 ]
1903 ]
1904 }
1905 }
1906 }
1907 }
1908 },
1909 "required": true
1910 },
1911 "responses": {
1912 "201": {
1913 "description": "Created",
1914 "headers": {
1915 "Location": {
1916 "$ref": "#/components/headers/location"
1917 },
1918 "ETag": {
1919 "$ref": "#/components/headers/etag"
1920 }
1921 },
1922 "content": {
1923 "application/json": {
1924 "schema": {
1925 "$ref": "#/components/schemas/SourceResponse"
1926 }
1927 }
1928 }
1929 },
1930 "400": {
1931 "$ref": "#/components/responses/BadRequest"
1932 },
1933 "403": {
1934 "$ref": "#/components/responses/Forbidden"
1935 }
1936 }
1937 }
1938 },
1939 "/organisations/{organisation-id}/target-accounts/{target-account-id}/sources/{source-id}": {
1940 "parameters": [
1941 {
1942 "$ref": "#/components/parameters/organisation-id"
1943 },
1944 {
1945 "$ref": "#/components/parameters/target-account-id"
1946 },
1947 {
1948 "$ref": "#/components/parameters/source-id"
1949 }
1950 ],
1951 "get": {
1952 "tags": ["sources"],
1953 "description": "Get Source by id",
1954 "responses": {
1955 "200": {
1956 "description": "OK",
1957 "content": {
1958 "application/json": {
1959 "schema": {
1960 "$ref": "#/components/schemas/SourceResponse"
1961 },
1962 "examples": {
1963 "zixi-push-basic-ingest": {
1964 "value": {
1965 "metadata": {
1966 "labels": [
1967 {
1968 "key": "m2amedia.tv:name",
1969 "value": "zixi-push-basic-ingest"
1970 }
1971 ]
1972 },
1973 "egress-regions": ["eu-west-1", "eu-central-1"],
1974 "entitlement-prefix": "Provider_Channel_1",
1975 "ingress-region": "eu-west-1",
1976 "ingest-endpoints": [
1977 [
1978 {
1979 "metadata": {
1980 "labels": [
1981 {
1982 "key": "m2amedia.tv:name",
1983 "value": "zixi-push-basic-ingest"
1984 }
1985 ]
1986 },
1987 "whitelist-cidrs": ["203.0.113.1/32"],
1988 "ip": "1.2.3.4",
1989 "port": 2088,
1990 "protocol": "zixi-push",
1991 "max-latency": 2000,
1992 "stream-id": "my-zixi-stream-1-a",
1993 "decryption": {
1994 "enabled": false
1995 }
1996 }
1997 ]
1998 ],
1999 "id": "3fd471ea-7e53-4fc1-bc74-852c03c8eca3"
2000 }
2001 },
2002 "rist-push-basic-ingest": {
2003 "value": {
2004 "metadata": {
2005 "labels": [
2006 {
2007 "key": "m2amedia.tv:name",
2008 "value": "rist-push-basic-ingest"
2009 }
2010 ]
2011 },
2012 "egress-regions": ["eu-west-1", "eu-central-1"],
2013 "entitlement-prefix": "Provider_Channel_1",
2014 "ingress-region": "eu-west-1",
2015 "ingest-endpoints": [
2016 [
2017 {
2018 "metadata": {
2019 "labels": []
2020 },
2021 "whitelist-cidrs": ["203.0.113.2/32"],
2022 "ip": "1.2.3.4",
2023 "port": 5004,
2024 "protocol": "rist",
2025 "max-latency": 500,
2026 "max-bitrate": 20000000
2027 }
2028 ]
2029 ],
2030 "id": "3fd471ea-7e53-4fc1-bc74-852c03c8eca3"
2031 }
2032 },
2033 "rtp-push-basic-ingest": {
2034 "value": {
2035 "metadata": {
2036 "labels": [
2037 {
2038 "key": "m2amedia.tv:name",
2039 "value": "rtp-push-basic-ingest"
2040 }
2041 ]
2042 },
2043 "egress-regions": ["eu-west-1", "eu-central-1"],
2044 "entitlement-prefix": "Provider_Channel_1",
2045 "ingress-region": "eu-west-1",
2046 "ingest-endpoints": [
2047 [
2048 {
2049 "metadata": {
2050 "labels": []
2051 },
2052 "whitelist-cidrs": ["203.0.113.3/32"],
2053 "ip": "1.2.3.4",
2054 "port": 5000,
2055 "protocol": "rtp",
2056 "max-bitrate": 30000000,
2057 "fec-enabled": true
2058 }
2059 ]
2060 ],
2061 "id": "3fd471ea-7e53-4fc1-bc74-852c03c8eca3"
2062 }
2063 },
2064 "entitled-ingest": {
2065 "value": {
2066 "metadata": {
2067 "labels": [
2068 {
2069 "key": "m2amedia.tv:name",
2070 "value": "entitled-ingest"
2071 }
2072 ]
2073 },
2074 "egress-regions": ["eu-west-1", "eu-central-1"],
2075 "entitlement-prefix": "Provider_Channel_1",
2076 "ingress-region": "eu-west-1",
2077 "ingest-endpoints": [
2078 [
2079 {
2080 "entitlement-arn": "arn:aws:mediaconnect:eu-west-1:123456789012:entitlement:1-ABCDEFGHIJKLMNOP-0a1b2c3d4e5f:an-entitlement",
2081 "protocol": "entitlement",
2082 "decryption": {
2083 "enabled": false
2084 }
2085 }
2086 ]
2087 ],
2088 "id": "3fd471ea-7e53-4fc1-bc74-852c03c8eca3"
2089 }
2090 },
2091 "rtmp-pull-basic-ingest": {
2092 "value": {
2093 "metadata": {
2094 "labels": [
2095 {
2096 "key": "m2amedia.tv:name",
2097 "value": "rtmp-pull-basic-ingest"
2098 }
2099 ]
2100 },
2101 "egress-regions": ["eu-west-1", "eu-central-1"],
2102 "entitlement-prefix": "Provider_Channel_1",
2103 "ingress-region": "eu-west-1",
2104 "ingest-endpoints": [
2105 [
2106 {
2107 "metadata": {
2108 "labels": []
2109 },
2110 "protocol": "rtmp-pull",
2111 "url": "rtmp://198.51.100.1/app/key",
2112 "username": "mr.awesome@m2amedia.tv",
2113 "password": "1337H4x0r",
2114 "transcode-profile-url": "s3://m2a-example-bucket/transcode-profiles/rtmp-push.json"
2115 }
2116 ]
2117 ],
2118 "id": "3fd471ea-7e53-4fc1-bc74-852c03c8eca3"
2119 }
2120 },
2121 "rtmp-push-basic-ingest": {
2122 "value": {
2123 "metadata": {
2124 "labels": [
2125 {
2126 "key": "m2amedia.tv:name",
2127 "value": "rtmp-push-basic-ingest"
2128 }
2129 ]
2130 },
2131 "egress-regions": ["eu-west-1", "eu-central-1"],
2132 "entitlement-prefix": "Provider_Channel_1",
2133 "ingress-region": "eu-west-1",
2134 "ingest-endpoints": [
2135 [
2136 {
2137 "metadata": {
2138 "labels": []
2139 },
2140 "whitelist-cidrs": ["203.0.113.1/32"],
2141 "protocol": "rtmp-push",
2142 "port": 1935,
2143 "app-name": "app",
2144 "stream-key": "test",
2145 "transcode-profile-url": "s3://m2a-example-bucket/transcode-profiles/rtmp-push.json"
2146 }
2147 ]
2148 ],
2149 "id": "3fd471ea-7e53-4fc1-bc74-852c03c8eca3"
2150 }
2151 },
2152 "m2amanaged-udp-basic-ingest": {
2153 "value": {
2154 "metadata": {
2155 "labels": [
2156 {
2157 "key": "m2amedia.tv:name",
2158 "value": "m2amanaged-udp-basic-ingest"
2159 }
2160 ]
2161 },
2162 "egress-regions": ["eu-west-1", "eu-central-1"],
2163 "entitlement-prefix": "Provider_Channel_1",
2164 "ingress-region": "eu-west-1",
2165 "ingest-endpoints": [
2166 [
2167 {
2168 "metadata": {
2169 "labels": []
2170 },
2171 "protocol": "m2a-managed",
2172 "type": "udp",
2173 "ip": "239.50.50.1",
2174 "port": 5000,
2175 "bind-ip": "10.10.15.101"
2176 }
2177 ]
2178 ],
2179 "id": "3fd471ea-7e53-4fc1-bc74-852c03c8eca3"
2180 }
2181 },
2182 "m2amanaged-rtp-basic-ingest": {
2183 "value": {
2184 "metadata": {
2185 "labels": [
2186 {
2187 "key": "m2amedia.tv:name",
2188 "value": "m2amanaged-rtp-basic-ingest"
2189 }
2190 ]
2191 },
2192 "egress-regions": ["eu-west-1", "eu-central-1"],
2193 "entitlement-prefix": "Provider_Channel_1",
2194 "ingress-region": "eu-west-1",
2195 "ingest-endpoints": [
2196 [
2197 {
2198 "metadata": {
2199 "labels": []
2200 },
2201 "protocol": "m2a-managed",
2202 "type": "rtp",
2203 "ip": "239.50.50.2",
2204 "port": 5005,
2205 "bind-ip": "10.10.15.102"
2206 }
2207 ]
2208 ],
2209 "id": "3fd471ea-7e53-4fc1-bc74-852c03c8eca3"
2210 }
2211 },
2212 "zixi-push-enhanced-ingest": {
2213 "value": {
2214 "metadata": {
2215 "labels": [
2216 {
2217 "key": "m2amedia.tv:name",
2218 "value": "zixi-push-enhanced-ingest"
2219 }
2220 ]
2221 },
2222 "egress-regions": ["eu-west-1", "eu-central-1"],
2223 "entitlement-prefix": "Provider_Channel_1",
2224 "ingress-region": "eu-west-1",
2225 "ingest-endpoints": [
2226 [
2227 {
2228 "metadata": {
2229 "labels": []
2230 },
2231 "whitelist-cidrs": ["192.0.2.2/32"],
2232 "ip": "1.2.3.4",
2233 "port": 2088,
2234 "protocol": "zixi-push",
2235 "max-latency": 2000,
2236 "stream-id": "my-awesome-stream-1-a",
2237 "decryption": {
2238 "enabled": false
2239 }
2240 },
2241 {
2242 "metadata": {
2243 "labels": []
2244 },
2245 "whitelist-cidrs": ["198.51.100.10/32"],
2246 "ip": "1.2.3.4",
2247 "port": 2088,
2248 "protocol": "zixi-push",
2249 "max-latency": 2000,
2250 "stream-id": "my-awesome-stream-1-b",
2251 "decryption": {
2252 "enabled": false
2253 }
2254 }
2255 ]
2256 ],
2257 "id": "3fd471ea-7e53-4fc1-bc74-852c03c8eca3"
2258 }
2259 },
2260 "rist-push-enhanced-ingest": {
2261 "value": {
2262 "metadata": {
2263 "labels": [
2264 {
2265 "key": "m2amedia.tv:name",
2266 "value": "rist-push-enhanced-ingest"
2267 }
2268 ]
2269 },
2270 "egress-regions": ["eu-west-1", "eu-central-1"],
2271 "entitlement-prefix": "Provider_Channel_1",
2272 "ingress-region": "eu-west-1",
2273 "ingest-endpoints": [
2274 [
2275 {
2276 "metadata": {
2277 "labels": []
2278 },
2279 "whitelist-cidrs": ["203.0.113.11/32"],
2280 "ip": "1.2.3.4",
2281 "port": 5004,
2282 "protocol": "rist",
2283 "max-latency": 500,
2284 "max-bitrate": 20000000
2285 },
2286 {
2287 "metadata": {
2288 "labels": []
2289 },
2290 "whitelist-cidrs": ["192.0.2.15/32"],
2291 "ip": "1.2.3.4",
2292 "port": 5014,
2293 "protocol": "rist",
2294 "max-latency": 500,
2295 "max-bitrate": 20000000
2296 }
2297 ]
2298 ],
2299 "id": "3fd471ea-7e53-4fc1-bc74-852c03c8eca3"
2300 }
2301 },
2302 "rtp-push-enhanced-ingest": {
2303 "value": {
2304 "metadata": {
2305 "labels": [
2306 {
2307 "key": "m2amedia.tv:name",
2308 "value": "rtp-push-enhanced-ingest"
2309 }
2310 ]
2311 },
2312 "egress-regions": ["eu-west-1", "eu-central-1"],
2313 "entitlement-prefix": "Provider_Channel_1",
2314 "ingress-region": "eu-west-1",
2315 "ingest-endpoints": [
2316 [
2317 {
2318 "metadata": {
2319 "labels": []
2320 },
2321 "whitelist-cidrs": ["198.51.100.16/32"],
2322 "ip": "1.2.3.4",
2323 "port": 5000,
2324 "protocol": "rtp",
2325 "max-bitrate": 30000000,
2326 "fec-enabled": true
2327 },
2328 {
2329 "metadata": {
2330 "labels": []
2331 },
2332 "whitelist-cidrs": ["203.0.113.20/32"],
2333 "ip": "1.2.3.4",
2334 "port": 5010,
2335 "protocol": "rtp",
2336 "max-bitrate": 30000000,
2337 "fec-enabled": false
2338 }
2339 ]
2340 ],
2341 "id": "3fd471ea-7e53-4fc1-bc74-852c03c8eca3"
2342 }
2343 },
2344 "rtmp-pull-enhanced-ingest": {
2345 "value": {
2346 "metadata": {
2347 "labels": [
2348 {
2349 "key": "m2amedia.tv:name",
2350 "value": "rtmp-pull-enhanced-ingest"
2351 }
2352 ]
2353 },
2354 "egress-regions": ["eu-west-1", "eu-central-1"],
2355 "entitlement-prefix": "Provider_Channel_1",
2356 "ingress-region": "eu-west-1",
2357 "ingest-endpoints": [
2358 [
2359 {
2360 "metadata": {
2361 "labels": []
2362 },
2363 "protocol": "rtmp-pull",
2364 "url": "rtmp://192.0.2.101/app/key",
2365 "username": "mr.awesome@m2amedia.tv",
2366 "password": "1337H4x0r",
2367 "transcode-profile-url": "s3://m2a-example-bucket/transcode-profiles/rtmp-push.json"
2368 },
2369 {
2370 "metadata": {
2371 "labels": []
2372 },
2373 "protocol": "rtmp-pull",
2374 "url": "rtmp://198.51.100.102/app/key",
2375 "username": "mrs.awesome@m2amedia.tv",
2376 "password": "m2a4lyfe",
2377 "transcode-profile-url": "s3://m2a-example-bucket/transcode-profiles/rtmp-push.json"
2378 }
2379 ]
2380 ],
2381 "id": "3fd471ea-7e53-4fc1-bc74-852c03c8eca3"
2382 }
2383 },
2384 "rtmp-push-enhanced-ingest": {
2385 "value": {
2386 "metadata": {
2387 "labels": [
2388 {
2389 "key": "m2amedia.tv:name",
2390 "value": "rtmp-push-enhanced-ingest"
2391 }
2392 ]
2393 },
2394 "egress-regions": ["eu-west-1", "eu-central-1"],
2395 "entitlement-prefix": "Provider_Channel_1",
2396 "ingress-region": "eu-west-1",
2397 "ingest-endpoints": [
2398 [
2399 {
2400 "metadata": {
2401 "labels": []
2402 },
2403 "whitelist-cidrs": ["203.0.113.101/32"],
2404 "protocol": "rtmp-push",
2405 "port": 1935,
2406 "app-name": "app",
2407 "stream-key": "test-endpoint-1",
2408 "transcode-profile-url": "s3://m2a-example-bucket/transcode-profiles/rtmp-push.json"
2409 },
2410 {
2411 "metadata": {
2412 "labels": []
2413 },
2414 "whitelist-cidrs": ["203.0.113.102/32"],
2415 "protocol": "rtmp-push",
2416 "port": 1935,
2417 "app-name": "app",
2418 "stream-key": "test-endpoint-2",
2419 "transcode-profile-url": "s3://m2a-example-bucket/transcode-profiles/rtmp-push.json"
2420 }
2421 ]
2422 ],
2423 "id": "3fd471ea-7e53-4fc1-bc74-852c03c8eca3"
2424 }
2425 },
2426 "m2amanaged-udp-enhanced-ingest": {
2427 "value": {
2428 "metadata": {
2429 "labels": [
2430 {
2431 "key": "m2amedia.tv:name",
2432 "value": "m2amanaged-udp-enhanced-ingest"
2433 }
2434 ]
2435 },
2436 "egress-regions": ["eu-west-1", "eu-central-1"],
2437 "entitlement-prefix": "Provider_Channel_1",
2438 "ingress-region": "eu-west-1",
2439 "ingest-endpoints": [
2440 [
2441 {
2442 "metadata": {
2443 "labels": []
2444 },
2445 "protocol": "m2a-managed",
2446 "type": "udp",
2447 "ip": "239.50.50.1",
2448 "port": 5000,
2449 "bind-ip": "10.10.15.101"
2450 },
2451 {
2452 "metadata": {
2453 "labels": []
2454 },
2455 "protocol": "m2a-managed",
2456 "type": "udp",
2457 "ip": "239.60.60.1",
2458 "port": 5000,
2459 "bind-ip": "10.10.15.102"
2460 }
2461 ]
2462 ],
2463 "id": "3fd471ea-7e53-4fc1-bc74-852c03c8eca3"
2464 }
2465 },
2466 "m2amanaged-rtp-enhanced-ingest": {
2467 "value": {
2468 "metadata": {
2469 "labels": [
2470 {
2471 "key": "m2amedia.tv:name",
2472 "value": "m2amanaged-rtp-enhanced-ingest"
2473 }
2474 ]
2475 },
2476 "egress-regions": ["eu-west-1", "eu-central-1"],
2477 "entitlement-prefix": "Provider_Channel_1",
2478 "ingress-region": "eu-west-1",
2479 "ingest-endpoints": [
2480 [
2481 {
2482 "metadata": {
2483 "labels": []
2484 },
2485 "protocol": "m2a-managed",
2486 "type": "rtp",
2487 "ip": "239.50.50.2",
2488 "port": 5005,
2489 "bind-ip": "10.10.15.102"
2490 },
2491 {
2492 "metadata": {
2493 "labels": []
2494 },
2495 "protocol": "m2a-managed",
2496 "type": "rtp",
2497 "ip": "239.60.60.2",
2498 "port": 5005,
2499 "bind-ip": "10.10.15.101"
2500 }
2501 ]
2502 ],
2503 "id": "3fd471ea-7e53-4fc1-bc74-852c03c8eca3"
2504 }
2505 },
2506 "v1.9a002b57": {
2507 "value": {
2508 "id": "4f913146-f8b8-4cf2-bdee-4a646cd3d8d4",
2509 "egress-regions": ["eu-west-1"],
2510 "metadata": {
2511 "labels": [
2512 {
2513 "key": "m2amedia.tv:name",
2514 "value": "APAC Internation Feed"
2515 },
2516 {
2517 "key": "m2amedia.tv:description",
2518 "value": "International Feed - Asia variant"
2519 },
2520 {
2521 "key": "sport",
2522 "value": "tennis"
2523 },
2524 {
2525 "key": "feed",
2526 "value": "international"
2527 },
2528 {
2529 "key": "region",
2530 "value": "apac"
2531 },
2532 {
2533 "key": "rights",
2534 "value": "def"
2535 }
2536 ]
2537 },
2538 "ingest-endpoints": [
2539 [
2540 {
2541 "protocol": "zixi-push",
2542 "stream-id": "hb7f070dcb0e",
2543 "ip": "54.77.26.221",
2544 "whitelist-cidrs": ["52.209.125.6/32"],
2545 "metadata": {
2546 "labels": []
2547 },
2548 "max-latency": 6000,
2549 "port": 2088,
2550 "decryption": {
2551 "enabled": false
2552 }
2553 }
2554 ]
2555 ],
2556 "ingress-region": "eu-west-1",
2557 "proxy-enabled": true,
2558 "entitlement-prefix": "apacinternationfeed"
2559 }
2560 },
2561 "v1.81211265": {
2562 "value": {
2563 "id": "81211265-2e83-4396-8913-2d32546db56e",
2564 "egress-regions": ["eu-west-1"],
2565 "metadata": {
2566 "labels": [
2567 {
2568 "key": "m2amedia.tv:name",
2569 "value": "Europe International Feed"
2570 },
2571 {
2572 "key": "m2amedia.tv:description",
2573 "value": "International Feed - Europe"
2574 },
2575 {
2576 "key": "sport",
2577 "value": "tennis"
2578 },
2579 {
2580 "key": "region",
2581 "value": "europe"
2582 }
2583 ]
2584 },
2585 "ingest-endpoints": [
2586 [
2587 {
2588 "protocol": "rtp",
2589 "max-bitrate": 100000,
2590 "ip": "52.17.199.56",
2591 "whitelist-cidrs": ["82.21.163.120/32"],
2592 "metadata": {
2593 "labels": []
2594 },
2595 "port": 5000,
2596 "fec-enabled": true
2597 }
2598 ]
2599 ],
2600 "ingress-region": "eu-west-1",
2601 "proxy-enabled": true,
2602 "entitlement-prefix": "europeinternationalfeed"
2603 }
2604 },
2605 "v1.3831864b": {
2606 "value": {
2607 "id": "3831864b-b856-4313-ae77-cbaaa0bd70eb",
2608 "proxies": {
2609 "dash": {
2610 "url": "https://live.unified-streaming.com/scte35/scte35.isml/.mpd"
2611 }
2612 },
2613 "egress-regions": ["eu-west-1"],
2614 "metadata": {
2615 "labels": [
2616 {
2617 "key": "m2amedia.tv:name",
2618 "value": "Court 1"
2619 },
2620 {
2621 "key": "m2amedia.tv:description",
2622 "value": "Court 1"
2623 },
2624 {
2625 "key": "sport",
2626 "value": "tennis"
2627 },
2628 {
2629 "key": "feed",
2630 "value": "courtfeed"
2631 },
2632 {
2633 "key": "arena",
2634 "value": "Rod Laver Arena"
2635 },
2636 {
2637 "key": "rights",
2638 "value": "abc"
2639 },
2640 {
2641 "key": "rights",
2642 "value": "def"
2643 },
2644 {
2645 "key": "m2amedia.tv:id",
2646 "value": "3831864b-b856-4313-ae77-cbaaa0bd70eb"
2647 }
2648 ]
2649 },
2650 "ingest-endpoints": [
2651 [
2652 {
2653 "protocol": "rtp",
2654 "max-bitrate": 100000,
2655 "ip": "99.81.0.19",
2656 "whitelist-cidrs": ["52.209.125.6/32"],
2657 "metadata": {
2658 "labels": []
2659 },
2660 "port": 5000,
2661 "fec-enabled": true
2662 }
2663 ]
2664 ],
2665 "ingress-region": "eu-west-1",
2666 "proxy-enabled": true,
2667 "entitlement-prefix": "court1"
2668 }
2669 },
2670 "v1.397ac0a8": {
2671 "value": {
2672 "id": "397ac0a8-6544-42b1-b89f-19d1035ca68e",
2673 "egress-regions": ["eu-west-1"],
2674 "metadata": {
2675 "labels": [
2676 {
2677 "key": "m2amedia.tv:name",
2678 "value": "Court 5"
2679 },
2680 {
2681 "key": "m2amedia.tv:description",
2682 "value": "Court 5"
2683 },
2684 {
2685 "key": "sport",
2686 "value": "tennis"
2687 },
2688 {
2689 "key": "feed",
2690 "value": "courtfeed"
2691 }
2692 ]
2693 },
2694 "ingest-endpoints": [
2695 [
2696 {
2697 "protocol": "rtp",
2698 "max-bitrate": 100000,
2699 "ip": "54.154.245.116",
2700 "whitelist-cidrs": ["52.209.125.6/32"],
2701 "metadata": {
2702 "labels": []
2703 },
2704 "port": 5000,
2705 "fec-enabled": true
2706 }
2707 ]
2708 ],
2709 "ingress-region": "eu-west-1",
2710 "proxy-enabled": true,
2711 "entitlement-prefix": "court5"
2712 }
2713 },
2714 "v1.c68013e6": {
2715 "value": {
2716 "id": "c68013e6-ef5c-4716-b390-3b2cbb987609",
2717 "proxies": {
2718 "dash": {
2719 "url": "https://live.unified-streaming.com/scte35/scte35.isml/.mpd"
2720 }
2721 },
2722 "egress-regions": ["eu-west-1"],
2723 "metadata": {
2724 "labels": [
2725 {
2726 "key": "m2amedia.tv:name",
2727 "value": "Court 2"
2728 },
2729 {
2730 "key": "m2amedia.tv:description",
2731 "value": "Court 2"
2732 },
2733 {
2734 "key": "sport",
2735 "value": "tennis"
2736 },
2737 {
2738 "key": "feed",
2739 "value": "courtfeed"
2740 },
2741 {
2742 "key": "arena",
2743 "value": "Margaret Court Arena"
2744 },
2745 {
2746 "key": "rights",
2747 "value": "def"
2748 },
2749 {
2750 "key": "m2amedia.tv:id",
2751 "value": "c68013e6-ef5c-4716-b390-3b2cbb987609"
2752 }
2753 ]
2754 },
2755 "ingest-endpoints": [
2756 [
2757 {
2758 "protocol": "rtp",
2759 "max-bitrate": 100000,
2760 "ip": "54.171.182.159",
2761 "whitelist-cidrs": ["54.74.76.75/32"],
2762 "metadata": {
2763 "labels": []
2764 },
2765 "port": 5000,
2766 "fec-enabled": true
2767 }
2768 ]
2769 ],
2770 "ingress-region": "eu-west-1",
2771 "proxy-enabled": true,
2772 "entitlement-prefix": "court2"
2773 }
2774 },
2775 "v1.d72de4ab": {
2776 "value": {
2777 "id": "d72de4ab-a4a7-46c8-acbc-088b0cbd6937",
2778 "egress-regions": ["eu-west-1"],
2779 "metadata": {
2780 "labels": [
2781 {
2782 "key": "m2amedia.tv:name",
2783 "value": "Court 4"
2784 },
2785 {
2786 "key": "m2amedia.tv:description",
2787 "value": "Court 4"
2788 },
2789 {
2790 "key": "sport",
2791 "value": "tennis"
2792 },
2793 {
2794 "key": "feed",
2795 "value": "courtfeed"
2796 },
2797 {
2798 "key": "m2amedia.tv:id",
2799 "value": "d72de4ab-a4a7-46c8-acbc-088b0cbd6937"
2800 }
2801 ]
2802 },
2803 "ingest-endpoints": [
2804 [
2805 {
2806 "protocol": "rtp",
2807 "max-bitrate": 100000,
2808 "ip": "52.19.132.183",
2809 "whitelist-cidrs": ["52.209.125.6/32"],
2810 "metadata": {
2811 "labels": []
2812 },
2813 "port": 5000,
2814 "fec-enabled": true
2815 }
2816 ]
2817 ],
2818 "ingress-region": "eu-west-1",
2819 "proxy-enabled": true,
2820 "entitlement-prefix": "court4"
2821 }
2822 },
2823 "v1.12bd0f9f": {
2824 "value": {
2825 "id": "12bd0f9f-fcbe-404c-9ffb-1264cf687812",
2826 "egress-regions": ["eu-west-1"],
2827 "metadata": {
2828 "labels": [
2829 {
2830 "key": "m2amedia.tv:name",
2831 "value": "Global Internal Feed"
2832 },
2833 {
2834 "key": "m2amedia.tv:description",
2835 "value": "ATP International Feed"
2836 },
2837 {
2838 "key": "feed",
2839 "value": "international"
2840 },
2841 {
2842 "key": "sport",
2843 "value": "tennis"
2844 },
2845 {
2846 "key": "rights",
2847 "value": "abc"
2848 }
2849 ]
2850 },
2851 "ingest-endpoints": [
2852 [
2853 {
2854 "protocol": "zixi-push",
2855 "stream-id": "O6a5408001b4",
2856 "ip": "52.30.169.71",
2857 "whitelist-cidrs": ["52.209.125.6/32"],
2858 "metadata": {
2859 "labels": []
2860 },
2861 "max-latency": 6000,
2862 "port": 2088,
2863 "decryption": {
2864 "enabled": false
2865 }
2866 }
2867 ]
2868 ],
2869 "ingress-region": "eu-west-1",
2870 "proxy-enabled": true,
2871 "entitlement-prefix": "globalinternalfeed"
2872 }
2873 },
2874 "v1.4f913146": {
2875 "value": {
2876 "id": "4f913146-f8b8-4cf2-bdee-4a646cd3d8d4",
2877 "egress-regions": ["eu-west-1"],
2878 "metadata": {
2879 "labels": [
2880 {
2881 "key": "m2amedia.tv:name",
2882 "value": "APAC Internation Feed"
2883 },
2884 {
2885 "key": "m2amedia.tv:description",
2886 "value": "International Feed - Asia variant"
2887 },
2888 {
2889 "key": "sport",
2890 "value": "tennis"
2891 },
2892 {
2893 "key": "feed",
2894 "value": "international"
2895 },
2896 {
2897 "key": "region",
2898 "value": "apac"
2899 },
2900 {
2901 "key": "rights",
2902 "value": "def"
2903 }
2904 ]
2905 },
2906 "ingest-endpoints": [
2907 [
2908 {
2909 "protocol": "zixi-push",
2910 "stream-id": "hb7f070dcb0e",
2911 "ip": "54.77.26.221",
2912 "whitelist-cidrs": ["52.209.125.6/32"],
2913 "metadata": {
2914 "labels": []
2915 },
2916 "max-latency": 6000,
2917 "port": 2088,
2918 "decryption": {
2919 "enabled": false
2920 }
2921 }
2922 ]
2923 ],
2924 "ingress-region": "eu-west-1",
2925 "proxy-enabled": true,
2926 "entitlement-prefix": "apacinternationfeed"
2927 }
2928 },
2929 "v1.0bc2b49e": {
2930 "value": {
2931 "id": "0bc2b49e-1668-45ec-ae6f-9e0eaead9231",
2932 "egress-regions": ["eu-west-1"],
2933 "metadata": {
2934 "labels": [
2935 {
2936 "key": "m2amedia.tv:name",
2937 "value": "MCRM - Centre Court Rainier - Production"
2938 },
2939 {
2940 "key": "m2amedia.tv:description",
2941 "value": "Main - Centre - Court Rainier III - Production Feed"
2942 }
2943 ]
2944 },
2945 "ingest-endpoints": [
2946 [
2947 {
2948 "protocol": "rtp",
2949 "max-bitrate": 100000,
2950 "ip": "52.16.155.242",
2951 "whitelist-cidrs": ["54.74.236.121/32"],
2952 "metadata": {
2953 "labels": []
2954 },
2955 "port": 5000,
2956 "fec-enabled": true
2957 }
2958 ]
2959 ],
2960 "ingress-region": "eu-west-1",
2961 "proxy-enabled": true,
2962 "entitlement-prefix": "mcrm-centrecourtrainier-production"
2963 }
2964 },
2965 "v1.4a002b57": {
2966 "value": {
2967 "id": "4a002b57-5deb-4705-b796-4e8764c2b8d8",
2968 "egress-regions": ["eu-west-1"],
2969 "metadata": {
2970 "labels": [
2971 {
2972 "key": "m2amedia.tv:name",
2973 "value": "MCW - Centre Court Wimbledon - Production"
2974 },
2975 {
2976 "key": "m2amedia.tv:description",
2977 "value": "Main - Centre - Wimbledon - Production Feed"
2978 }
2979 ]
2980 },
2981 "ingest-endpoints": [
2982 [
2983 {
2984 "protocol": "rtp",
2985 "max-bitrate": 100000,
2986 "ip": "52.16.155.242",
2987 "whitelist-cidrs": ["54.74.236.121/32"],
2988 "metadata": {
2989 "labels": []
2990 },
2991 "port": 5000,
2992 "fec-enabled": true
2993 }
2994 ]
2995 ],
2996 "ingress-region": "eu-west-1",
2997 "proxy-enabled": true,
2998 "entitlement-prefix": "mcw-centrecourtwimbledon-production"
2999 }
3000 },
3001 "v1.71211265": {
3002 "value": {
3003 "id": "71211265-2e83-4396-8913-2d32546db56e",
3004 "egress-regions": ["eu-west-1"],
3005 "metadata": {
3006 "labels": [
3007 {
3008 "key": "m2amedia.tv:name",
3009 "value": "CARICOM Internatioal Feed"
3010 },
3011 {
3012 "key": "m2amedia.tv:description",
3013 "value": "International Feed - Caricom variant"
3014 },
3015 {
3016 "key": "sport",
3017 "value": "cricket"
3018 },
3019 {
3020 "key": "feed",
3021 "value": "international"
3022 },
3023 {
3024 "key": "region",
3025 "value": "caricom"
3026 },
3027 {
3028 "key": "rights",
3029 "value": "def"
3030 }
3031 ]
3032 },
3033 "ingest-endpoints": [
3034 [
3035 {
3036 "protocol": "zixi-push",
3037 "stream-id": "hb7f070dcb0e",
3038 "ip": "54.77.26.221",
3039 "whitelist-cidrs": ["52.209.125.6/32"],
3040 "metadata": {
3041 "labels": []
3042 },
3043 "max-latency": 6000,
3044 "port": 2088,
3045 "decryption": {
3046 "enabled": false
3047 }
3048 }
3049 ]
3050 ],
3051 "ingress-region": "eu-west-1",
3052 "proxy-enabled": true,
3053 "entitlement-prefix": "caricominternationfeed"
3054 }
3055 },
3056 "v1.1831864b": {
3057 "value": {
3058 "id": "1831864b-b856-4313-ae77-cbaaa0bd70eb",
3059 "egress-regions": ["eu-west-1"],
3060 "metadata": {
3061 "labels": [
3062 {
3063 "key": "m2amedia.tv:name",
3064 "value": "Pacific International Feed"
3065 },
3066 {
3067 "key": "m2amedia.tv:description",
3068 "value": "International Feed - Pacific"
3069 },
3070 {
3071 "key": "sport",
3072 "value": "rugby"
3073 },
3074 {
3075 "key": "region",
3076 "value": "australia"
3077 }
3078 ]
3079 },
3080 "ingest-endpoints": [
3081 [
3082 {
3083 "protocol": "rtp",
3084 "max-bitrate": 100000,
3085 "ip": "52.17.199.56",
3086 "whitelist-cidrs": ["82.21.163.120/32"],
3087 "metadata": {
3088 "labels": []
3089 },
3090 "port": 5000,
3091 "fec-enabled": true
3092 }
3093 ]
3094 ],
3095 "ingress-region": "eu-west-1",
3096 "proxy-enabled": true,
3097 "entitlement-prefix": "pacificinternationalfeed"
3098 }
3099 },
3100 "v1.297ac0a8": {
3101 "value": {
3102 "id": "297ac0a8-6544-42b1-b89f-19d1035ca68e",
3103 "egress-regions": ["eu-west-1"],
3104 "metadata": {
3105 "labels": [
3106 {
3107 "key": "m2amedia.tv:name",
3108 "value": "TNT Stadium - global"
3109 },
3110 {
3111 "key": "m2amedia.tv:description",
3112 "value": "TNT world Stadium"
3113 },
3114 {
3115 "key": "sport",
3116 "value": "football"
3117 },
3118 {
3119 "key": "feed",
3120 "value": "goalendfeed"
3121 }
3122 ]
3123 },
3124 "ingest-endpoints": [
3125 [
3126 {
3127 "protocol": "rtp",
3128 "max-bitrate": 100000,
3129 "ip": "54.154.245.116",
3130 "whitelist-cidrs": ["52.209.125.6/32"],
3131 "metadata": {
3132 "labels": []
3133 },
3134 "port": 5000,
3135 "fec-enabled": true
3136 }
3137 ]
3138 ],
3139 "ingress-region": "eu-west-1",
3140 "proxy-enabled": true,
3141 "entitlement-prefix": "tntstadium"
3142 }
3143 },
3144 "v1.d68013e6": {
3145 "value": {
3146 "id": "d68013e6-ef5c-4716-b390-3b2cbb987609",
3147 "egress-regions": ["eu-west-1"],
3148 "metadata": {
3149 "labels": [
3150 {
3151 "key": "m2amedia.tv:name",
3152 "value": "X Games - Mega Ramp - Primary"
3153 },
3154 {
3155 "key": "m2amedia.tv:description",
3156 "value": "X Games - Mega Ramp"
3157 },
3158 {
3159 "key": "sport",
3160 "value": "skateboard"
3161 },
3162 {
3163 "key": "x-games",
3164 "value": "vert"
3165 },
3166 {
3167 "key": "feed",
3168 "value": "rampfeed"
3169 },
3170 {
3171 "key": "rights",
3172 "value": "def"
3173 }
3174 ]
3175 },
3176 "ingest-endpoints": [
3177 [
3178 {
3179 "protocol": "rtp",
3180 "max-bitrate": 100000,
3181 "ip": "54.171.182.159",
3182 "whitelist-cidrs": ["54.74.76.75/32"],
3183 "metadata": {
3184 "labels": []
3185 },
3186 "port": 5000,
3187 "fec-enabled": true
3188 }
3189 ]
3190 ],
3191 "ingress-region": "eu-west-1",
3192 "proxy-enabled": true,
3193 "entitlement-prefix": "xgamesmegaramp"
3194 }
3195 },
3196 "v1.c72de4ab": {
3197 "value": {
3198 "id": "c72de4ab-a4a7-46c8-acbc-088b0cbd6937",
3199 "egress-regions": ["eu-west-1"],
3200 "metadata": {
3201 "labels": [
3202 {
3203 "key": "m2amedia.tv:name",
3204 "value": "X Games - Mega Ramp - Secondary"
3205 },
3206 {
3207 "key": "m2amedia.tv:description",
3208 "value": "X Games - Mega Ramp - Secondary"
3209 },
3210 {
3211 "key": "sport",
3212 "value": "skateboard"
3213 },
3214 {
3215 "key": "x-games",
3216 "value": "vert"
3217 },
3218 {
3219 "key": "feed",
3220 "value": "rampfeed"
3221 },
3222 {
3223 "key": "rights",
3224 "value": "def"
3225 }
3226 ]
3227 },
3228 "ingest-endpoints": [
3229 [
3230 {
3231 "protocol": "rtp",
3232 "max-bitrate": 100000,
3233 "ip": "54.171.182.159",
3234 "whitelist-cidrs": ["54.74.76.75/32"],
3235 "metadata": {
3236 "labels": []
3237 },
3238 "port": 5000,
3239 "fec-enabled": true
3240 }
3241 ]
3242 ],
3243 "ingress-region": "eu-west-1",
3244 "proxy-enabled": true,
3245 "entitlement-prefix": "xgamesmegarampsecondary"
3246 }
3247 },
3248 "v1.42bd0f9f": {
3249 "value": {
3250 "id": "42bd0f9f-fcbe-404c-9ffb-1264cf687812",
3251 "egress-regions": ["eu-west-1"],
3252 "metadata": {
3253 "labels": [
3254 {
3255 "key": "m2amedia.tv:name",
3256 "value": "X Games - street skateboarding - Primary"
3257 },
3258 {
3259 "key": "m2amedia.tv:description",
3260 "value": "X Games - street skateboarding - Primary"
3261 },
3262 {
3263 "key": "sport",
3264 "value": "skateboard"
3265 },
3266 {
3267 "key": "x-games",
3268 "value": "street"
3269 },
3270 {
3271 "key": "feed",
3272 "value": "rampfeed"
3273 },
3274 {
3275 "key": "rights",
3276 "value": "def"
3277 }
3278 ]
3279 },
3280 "ingest-endpoints": [
3281 [
3282 {
3283 "protocol": "rtp",
3284 "max-bitrate": 100000,
3285 "ip": "54.171.182.159",
3286 "whitelist-cidrs": ["54.74.76.75/32"],
3287 "metadata": {
3288 "labels": []
3289 },
3290 "port": 5000,
3291 "fec-enabled": true
3292 }
3293 ]
3294 ],
3295 "ingress-region": "eu-west-1",
3296 "proxy-enabled": true,
3297 "entitlement-prefix": "xgamesstreetprimary"
3298 }
3299 },
3300 "v1.3f913146": {
3301 "value": {
3302 "id": "3f913146-f8b8-4cf2-bdee-4a646cd3d8d4",
3303 "egress-regions": ["eu-west-1"],
3304 "metadata": {
3305 "labels": [
3306 {
3307 "key": "m2amedia.tv:name",
3308 "value": "X Games - street skateboarding - Secondary"
3309 },
3310 {
3311 "key": "m2amedia.tv:description",
3312 "value": "X Games - street skateboarding - Secondary"
3313 },
3314 {
3315 "key": "sport",
3316 "value": "skateboard"
3317 },
3318 {
3319 "key": "x-games",
3320 "value": "street"
3321 },
3322 {
3323 "key": "feed",
3324 "value": "rampfeed"
3325 },
3326 {
3327 "key": "rights",
3328 "value": "def"
3329 }
3330 ]
3331 },
3332 "ingest-endpoints": [
3333 [
3334 {
3335 "protocol": "rtp",
3336 "max-bitrate": 100000,
3337 "ip": "54.171.182.159",
3338 "whitelist-cidrs": ["54.74.76.75/32"],
3339 "metadata": {
3340 "labels": []
3341 },
3342 "port": 5000,
3343 "fec-enabled": true
3344 }
3345 ]
3346 ],
3347 "ingress-region": "eu-west-1",
3348 "proxy-enabled": true,
3349 "entitlement-prefix": "xgamesstreetsecondary"
3350 }
3351 },
3352 "v1.1bc2b49e": {
3353 "value": {
3354 "id": "1bc2b49e-1668-45ec-ae6f-9e0eaead9231",
3355 "egress-regions": ["eu-west-1"],
3356 "metadata": {
3357 "labels": [
3358 {
3359 "key": "m2amedia.tv:name",
3360 "value": "Olympic Swimming Arena - East"
3361 },
3362 {
3363 "key": "m2amedia.tv:description",
3364 "value": "Olympic Swimming Arena - East - Production Feed"
3365 },
3366 {
3367 "key": "sport",
3368 "value": "swimming"
3369 },
3370 {
3371 "key": "heat",
3372 "value": "freestyle"
3373 }
3374 ]
3375 },
3376 "ingest-endpoints": [
3377 [
3378 {
3379 "protocol": "rtp",
3380 "max-bitrate": 100000,
3381 "ip": "52.16.155.242",
3382 "whitelist-cidrs": ["54.74.236.121/32"],
3383 "metadata": {
3384 "labels": []
3385 },
3386 "port": 5000,
3387 "fec-enabled": true
3388 }
3389 ]
3390 ],
3391 "ingress-region": "eu-west-1",
3392 "proxy-enabled": true,
3393 "entitlement-prefix": "olymipicswimmingproduction"
3394 }
3395 },
3396 "v1.c78013e6": {
3397 "value": {
3398 "id": "c78013e6-ef5c-4716-b390-3b2cbb987609",
3399 "egress-regions": ["eu-west-1"],
3400 "metadata": {
3401 "labels": [
3402 {
3403 "key": "m2amedia.tv:name",
3404 "value": "Olympic Swimming Arena - West"
3405 },
3406 {
3407 "key": "m2amedia.tv:description",
3408 "value": "Olympic Swimming Arena - West - Production Feed"
3409 },
3410 {
3411 "key": "sport",
3412 "value": "swimming"
3413 },
3414 {
3415 "key": "heat",
3416 "value": "freestyle"
3417 }
3418 ]
3419 },
3420 "ingest-endpoints": [
3421 [
3422 {
3423 "protocol": "rtp",
3424 "max-bitrate": 100000,
3425 "ip": "52.16.155.242",
3426 "whitelist-cidrs": ["54.74.236.121/32"],
3427 "metadata": {
3428 "labels": []
3429 },
3430 "port": 5000,
3431 "fec-enabled": true
3432 }
3433 ]
3434 ],
3435 "ingress-region": "eu-west-1",
3436 "proxy-enabled": true,
3437 "entitlement-prefix": "olymipicswimmingwestproduction"
3438 }
3439 },
3440 "v1.d62de4ab": {
3441 "value": {
3442 "id": "d62de4ab-a4a7-46c8-acbc-088b0cbd6937",
3443 "egress-regions": ["eu-west-1"],
3444 "metadata": {
3445 "labels": [
3446 {
3447 "key": "m2amedia.tv:name",
3448 "value": "Olympic Swimming Arena - West"
3449 },
3450 {
3451 "key": "m2amedia.tv:description",
3452 "value": "Olympic Swimming Arena - West - Secondary Feed"
3453 },
3454 {
3455 "key": "sport",
3456 "value": "swimming"
3457 },
3458 {
3459 "key": "heat",
3460 "value": "freestyle"
3461 }
3462 ]
3463 },
3464 "ingest-endpoints": [
3465 [
3466 {
3467 "protocol": "rtp",
3468 "max-bitrate": 100000,
3469 "ip": "52.16.155.242",
3470 "whitelist-cidrs": ["54.74.236.121/32"],
3471 "metadata": {
3472 "labels": []
3473 },
3474 "port": 5000,
3475 "fec-enabled": true
3476 }
3477 ]
3478 ],
3479 "ingress-region": "eu-west-1",
3480 "proxy-enabled": true,
3481 "entitlement-prefix": "olympicswimmingsecondaryproduction"
3482 }
3483 },
3484 "v1.13bd0f9f": {
3485 "value": {
3486 "id": "13bd0f9f-fcbe-404c-9ffb-1264cf687812",
3487 "egress-regions": ["eu-west-1"],
3488 "metadata": {
3489 "labels": [
3490 {
3491 "key": "m2amedia.tv:name",
3492 "value": "Olympic Swimming Arena - West"
3493 },
3494 {
3495 "key": "m2amedia.tv:description",
3496 "value": "Olympic Swimming Arena - West - Secondary Feed"
3497 },
3498 {
3499 "key": "sport",
3500 "value": "swimming"
3501 },
3502 {
3503 "key": "heat",
3504 "value": "freestyle"
3505 }
3506 ]
3507 },
3508 "ingest-endpoints": [
3509 [
3510 {
3511 "protocol": "rtp",
3512 "max-bitrate": 100000,
3513 "ip": "52.16.155.242",
3514 "whitelist-cidrs": ["54.74.236.121/32"],
3515 "metadata": {
3516 "labels": []
3517 },
3518 "port": 5000,
3519 "fec-enabled": true
3520 }
3521 ]
3522 ],
3523 "ingress-region": "eu-west-1",
3524 "proxy-enabled": true,
3525 "entitlement-prefix": "olymipicswimmingsecondary"
3526 }
3527 },
3528 "v1.5f913146": {
3529 "value": {
3530 "id": "5f913146-f8b8-4cf2-bdee-4a646cd3d8d4",
3531 "egress-regions": ["eu-west-1"],
3532 "metadata": {
3533 "labels": [
3534 {
3535 "key": "m2amedia.tv:name",
3536 "value": "MCW - Venus Williams Court - Production"
3537 },
3538 {
3539 "key": "m2amedia.tv:description",
3540 "value": "Main - Venus Williams Court - Production Feed"
3541 }
3542 ]
3543 },
3544 "ingest-endpoints": [
3545 [
3546 {
3547 "protocol": "rtp",
3548 "max-bitrate": 100000,
3549 "ip": "52.16.155.242",
3550 "whitelist-cidrs": ["54.74.236.121/32"],
3551 "metadata": {
3552 "labels": []
3553 },
3554 "port": 5000,
3555 "fec-enabled": true
3556 }
3557 ]
3558 ],
3559 "ingress-region": "eu-west-1",
3560 "proxy-enabled": true,
3561 "entitlement-prefix": "mcw-venus-production"
3562 }
3563 },
3564 "v1.8bc2b49e": {
3565 "value": {
3566 "id": "8bc2b49e-1668-45ec-ae6f-9e0eaead9231",
3567 "egress-regions": ["eu-west-1"],
3568 "metadata": {
3569 "labels": [
3570 {
3571 "key": "m2amedia.tv:name",
3572 "value": "MCW - Centre Court Wimbledon - Backup"
3573 },
3574 {
3575 "key": "m2amedia.tv:description",
3576 "value": "Main - Centre - Wimbledon - Backup Feed"
3577 }
3578 ]
3579 },
3580 "ingest-endpoints": [
3581 [
3582 {
3583 "protocol": "rtp",
3584 "max-bitrate": 100000,
3585 "ip": "52.16.155.242",
3586 "whitelist-cidrs": ["54.74.236.121/32"],
3587 "metadata": {
3588 "labels": []
3589 },
3590 "port": 5000,
3591 "fec-enabled": true
3592 }
3593 ]
3594 ],
3595 "ingress-region": "eu-west-1",
3596 "proxy-enabled": true,
3597 "entitlement-prefix": "mcw-centrecourtwimbledon-backup"
3598 }
3599 }
3600 }
3601 }
3602 },
3603 "headers": {
3604 "ETag": {
3605 "$ref": "#/components/headers/etag"
3606 }
3607 }
3608 },
3609 "403": {
3610 "$ref": "#/components/responses/Forbidden"
3611 },
3612 "404": {
3613 "$ref": "#/components/responses/NotFound"
3614 }
3615 }
3616 },
3617 "put": {
3618 "tags": ["sources"],
3619 "description": "Update an Source",
3620 "requestBody": {
3621 "description": "Source update",
3622 "content": {
3623 "application/json": {
3624 "schema": {
3625 "$ref": "#/components/schemas/SourceRequest"
3626 }
3627 }
3628 },
3629 "required": true
3630 },
3631 "parameters": [
3632 {
3633 "$ref": "#/components/parameters/if-match-header"
3634 }
3635 ],
3636 "responses": {
3637 "200": {
3638 "description": "OK",
3639 "content": {
3640 "application/json": {
3641 "schema": {
3642 "$ref": "#/components/schemas/SourceResponse"
3643 }
3644 }
3645 },
3646 "headers": {
3647 "ETag": {
3648 "$ref": "#/components/headers/etag"
3649 }
3650 }
3651 },
3652 "400": {
3653 "$ref": "#/components/responses/BadRequest"
3654 },
3655 "403": {
3656 "$ref": "#/components/responses/Forbidden"
3657 },
3658 "404": {
3659 "$ref": "#/components/responses/NotFound"
3660 },
3661 "412": {
3662 "$ref": "#/components/responses/PreconditionFailed"
3663 }
3664 }
3665 },
3666 "delete": {
3667 "tags": ["sources"],
3668 "description": "Delete Source by id",
3669 "responses": {
3670 "204": {
3671 "$ref": "#/components/responses/Deleted"
3672 },
3673 "403": {
3674 "$ref": "#/components/responses/Forbidden"
3675 },
3676 "404": {
3677 "$ref": "#/components/responses/NotFound"
3678 }
3679 }
3680 }
3681 },
3682 "/organisations/{organisation-id}/target-accounts/{target-account-id}/sources/{source-id}/status": {
3683 "parameters": [
3684 {
3685 "$ref": "#/components/parameters/organisation-id"
3686 },
3687 {
3688 "$ref": "#/components/parameters/target-account-id"
3689 },
3690 {
3691 "$ref": "#/components/parameters/source-id"
3692 }
3693 ],
3694 "get": {
3695 "tags": ["sources"],
3696 "description": "Get high-level description of the status for a Source",
3697 "responses": {
3698 "200": {
3699 "description": "OK",
3700 "content": {
3701 "application/json": {
3702 "schema": {
3703 "$ref": "#/components/schemas/SourceStatusResponse"
3704 },
3705 "examples": {
3706 "v1": {
3707 "summary": "Connect v1 example",
3708 "value": {
3709 "health": {
3710 "reasons": ["InputBitrateZero"],
3711 "status": "unhealthy"
3712 },
3713 "running-status": "running"
3714 }
3715 }
3716 }
3717 }
3718 }
3719 },
3720 "403": {
3721 "description": "Forbidden"
3722 }
3723 }
3724 }
3725 },
3726 "/organisations/{organisation-id}/target-accounts/{target-account-id}/sources/{source-id}/metrics": {
3727 "parameters": [
3728 {
3729 "$ref": "#/components/parameters/organisation-id"
3730 },
3731 {
3732 "$ref": "#/components/parameters/target-account-id"
3733 },
3734 {
3735 "$ref": "#/components/parameters/source-id"
3736 },
3737 {
3738 "$ref": "#/components/parameters/start-time-query"
3739 },
3740 {
3741 "$ref": "#/components/parameters/end-time-query"
3742 },
3743 {
3744 "$ref": "#/components/parameters/desired-metrics-query"
3745 }
3746 ],
3747 "get": {
3748 "tags": ["sources"],
3749 "description": "Get time series data for a source",
3750 "responses": {
3751 "200": {
3752 "description": "OK",
3753 "content": {
3754 "application/json": {
3755 "schema": {
3756 "$ref": "#/components/schemas/MetricsResponse"
3757 }
3758 }
3759 }
3760 },
3761 "403": {
3762 "$ref": "#/components/responses/Forbidden"
3763 },
3764 "404": {
3765 "$ref": "#/components/responses/NotFound"
3766 }
3767 }
3768 }
3769 },
3770 "/organisations/{organisation-id}/target-accounts/{target-account-id}/subscriptions": {
3771 "parameters": [
3772 {
3773 "$ref": "#/components/parameters/organisation-id"
3774 },
3775 {
3776 "$ref": "#/components/parameters/target-account-id"
3777 }
3778 ],
3779 "get": {
3780 "tags": ["subscriptions"],
3781 "description": "Get list of links to Subscriptions",
3782 "responses": {
3783 "200": {
3784 "description": "OK",
3785 "content": {
3786 "application/json": {
3787 "schema": {
3788 "$ref": "#/components/schemas/URLListResponse"
3789 },
3790 "examples": {
3791 "v1": {
3792 "summary": "Connect v1 example",
3793 "value": {
3794 "items": [
3795 "http://localhost:4200/api/connect/v1/organisations/2cea7980-72f3-4e50-8590-28fb009390c9/target-accounts/8bf9468f-d54c-4b24-9be7-7260b743a0e4/subscriptions/523bc5be-d4ca-44fd-83af-46a21ac57de4",
3796 "http://localhost:4200/api/connect/v1/organisations/2cea7980-72f3-4e50-8590-28fb009390c9/target-accounts/8bf9468f-d54c-4b24-9be7-7260b743a0e4/subscriptions/523bc5bf-d4ca-44fd-83af-46a21ac57de4",
3797 "http://localhost:4200/api/connect/v1/organisations/2cea7980-72f3-4e50-8590-28fb009390c9/target-accounts/8bf9468f-d54c-4b24-9be7-7260b743a0e4/subscriptions/523bc5ca-d4ca-44fd-83af-46a21ac57de4",
3798 "http://localhost:4200/api/connect/v1/organisations/2cea7980-72f3-4e50-8590-28fb009390c9/target-accounts/8bf9468f-d54c-4b24-9be7-7260b743a0e4/subscriptions/523bc5cb-d4ca-44fd-83af-46a21ac57de4",
3799 "http://localhost:4200/api/connect/v1/organisations/2cea7980-72f3-4e50-8590-28fb009390c9/target-accounts/8bf9468f-d54c-4b24-9be7-7260b743a0e4/subscriptions/523bc5cc-d4ca-44fd-83af-46a21ac57de4",
3800 "http://localhost:4200/api/connect/v1/organisations/2cea7980-72f3-4e50-8590-28fb009390c9/target-accounts/8bf9468f-d54c-4b24-9be7-7260b743a0e4/subscriptions/523bc5cd-d4ca-44fd-83af-46a21ac57de4",
3801 "http://localhost:4200/api/connect/v1/organisations/2cea7980-72f3-4e50-8590-28fb009390c9/target-accounts/8bf9468f-d54c-4b24-9be7-7260b743a0e4/subscriptions/523bc5ce-d4ca-44fd-83af-46a21ac57de4"
3802 ]
3803 }
3804 }
3805 }
3806 }
3807 },
3808 "headers": {
3809 "ETag": {
3810 "$ref": "#/components/headers/etag"
3811 }
3812 }
3813 },
3814 "403": {
3815 "$ref": "#/components/responses/Forbidden"
3816 }
3817 }
3818 },
3819 "post": {
3820 "tags": ["subscriptions"],
3821 "description": "Create a Subscription",
3822 "requestBody": {
3823 "description": "Subscription to add",
3824 "content": {
3825 "application/json": {
3826 "schema": {
3827 "$ref": "#/components/schemas/SubscriptionRequest"
3828 },
3829 "examples": {
3830 "v1": {
3831 "summary": "Connect v1 example",
3832 "value": {
3833 "metadata": {
3834 "labels": [
3835 {
3836 "key": "m2amedia.tv:name",
3837 "value": "Test Subscription"
3838 },
3839 {
3840 "key": "m2amedia.tv:description",
3841 "value": "A longer description of the Subscription in question"
3842 }
3843 ]
3844 },
3845 "entitled-target-account-id": "c5e1c119-c7da-406c-8a21-951b534389a2",
3846 "region": "eu-west-1",
3847 "subscriber-pays": 100,
3848 "selector": "dog",
3849 "encryption": {
3850 "enabled": true,
3851 "type": "static-key",
3852 "algorithm": "aes-256",
3853 "key": "4c07f2a503f13888a08a5acf4148ef849f701a0511ab53ffee97766da2a82088"
3854 }
3855 }
3856 }
3857 }
3858 }
3859 },
3860 "required": true
3861 },
3862 "responses": {
3863 "201": {
3864 "description": "Created",
3865 "headers": {
3866 "Location": {
3867 "$ref": "#/components/headers/location"
3868 },
3869 "ETag": {
3870 "$ref": "#/components/headers/etag"
3871 }
3872 },
3873 "content": {
3874 "application/json": {
3875 "schema": {
3876 "$ref": "#/components/schemas/SubscriptionResponse"
3877 }
3878 }
3879 }
3880 },
3881 "400": {
3882 "$ref": "#/components/responses/BadRequest"
3883 },
3884 "403": {
3885 "$ref": "#/components/responses/Forbidden"
3886 }
3887 }
3888 }
3889 },
3890 "/organisations/{organisation-id}/target-accounts/{target-account-id}/subscriptions/{subscription-id}": {
3891 "parameters": [
3892 {
3893 "$ref": "#/components/parameters/organisation-id"
3894 },
3895 {
3896 "$ref": "#/components/parameters/target-account-id"
3897 },
3898 {
3899 "$ref": "#/components/parameters/subscription-id"
3900 }
3901 ],
3902 "get": {
3903 "tags": ["subscriptions"],
3904 "description": "Get Subscription by id",
3905 "responses": {
3906 "200": {
3907 "description": "OK",
3908 "content": {
3909 "application/json": {
3910 "schema": {
3911 "$ref": "#/components/schemas/SubscriptionResponse"
3912 },
3913 "examples": {
3914 "v1": {
3915 "summary": "Connect v1 example",
3916 "value": {
3917 "encryption": {
3918 "algorithm": null,
3919 "enabled": false,
3920 "key": null,
3921 "type": null
3922 },
3923 "entitled-target-account-id": "8bf9468f-d54c-4b24-9be7-7260b743a0e4",
3924 "id": "523bc5be-d4ca-44fd-83af-46a21ac57de4",
3925 "metadata": {
3926 "labels": [
3927 {
3928 "key": "m2amedia.tv:name",
3929 "value": "My subscriber"
3930 },
3931 {
3932 "key": "m2amedia.tv:description",
3933 "value": "My awesome subscriber"
3934 },
3935 {
3936 "key": "m2amedia.tv:ui:selector",
3937 "value": "{\"key\":\"shape\",\"value\":\"square\"}"
3938 }
3939 ]
3940 },
3941 "region": "eu-west-1",
3942 "selector": "square",
3943 "subscriber-pays": 100
3944 }
3945 },
3946 "v1.523bc5be": {
3947 "value": {
3948 "encryption": {
3949 "algorithm": null,
3950 "enabled": false,
3951 "key": null,
3952 "type": null
3953 },
3954 "entitled-target-account-id": "8bf9468f-d54c-4b24-9be7-7260b743a0e4",
3955 "id": "523bc5be-d4ca-44fd-83af-46a21ac57de4",
3956 "metadata": {
3957 "labels": [
3958 {
3959 "key": "m2amedia.tv:name",
3960 "value": "My subscriber"
3961 },
3962 {
3963 "key": "m2amedia.tv:description",
3964 "value": "My awesome subscriber"
3965 },
3966 {
3967 "key": "m2amedia.tv:ui:selector",
3968 "value": "{\"key\":\"shape\",\"value\":\"square\"}"
3969 }
3970 ]
3971 },
3972 "region": "eu-west-1",
3973 "selector": "square",
3974 "subscriber-pays": 100
3975 }
3976 },
3977 "v1.523bc5bf": {
3978 "value": {
3979 "encryption": {
3980 "algorithm": null,
3981 "enabled": false,
3982 "key": null,
3983 "type": null
3984 },
3985 "entitled-target-account-id": "8bf9468f-d54c-4b24-9be7-7260b743a0e4",
3986 "id": "523bc5bf-d4ca-44fd-83af-46a21ac57de4",
3987 "metadata": {
3988 "labels": [
3989 {
3990 "key": "m2amedia.tv:name",
3991 "value": "Argentina Subscription"
3992 },
3993 {
3994 "key": "m2amedia.tv:description",
3995 "value": "Argentine Subscription"
3996 },
3997 {
3998 "key": "m2amedia.tv:ui:selector",
3999 "value": "{\"key\":\"shape\",\"value\":\"square\"}"
4000 }
4001 ]
4002 },
4003 "region": "eu-west-1",
4004 "selector": "square",
4005 "subscriber-pays": 100
4006 }
4007 },
4008 "v1.523bc5ca": {
4009 "value": {
4010 "encryption": {
4011 "algorithm": null,
4012 "enabled": false,
4013 "key": null,
4014 "type": null
4015 },
4016 "entitled-target-account-id": "8bf9468f-d54c-4b24-9be7-7260b743a0e4",
4017 "id": "523bc5ca-d4ca-44fd-83af-46a21ac57de4",
4018 "metadata": {
4019 "labels": [
4020 {
4021 "key": "m2amedia.tv:name",
4022 "value": "Brazil Subscription"
4023 },
4024 {
4025 "key": "m2amedia.tv:description",
4026 "value": "Brazilian Subscription"
4027 },
4028 {
4029 "key": "m2amedia.tv:ui:selector",
4030 "value": "{\"key\":\"shape\",\"value\":\"square\"}"
4031 }
4032 ]
4033 },
4034 "region": "eu-west-1",
4035 "selector": "square",
4036 "subscriber-pays": 100
4037 }
4038 },
4039 "v1.523bc5cb": {
4040 "value": {
4041 "encryption": {
4042 "algorithm": null,
4043 "enabled": false,
4044 "key": null,
4045 "type": null
4046 },
4047 "entitled-target-account-id": "8bf9468f-d54c-4b24-9be7-7260b743a0e4",
4048 "id": "523bc5cb-d4ca-44fd-83af-46a21ac57de4",
4049 "metadata": {
4050 "labels": [
4051 {
4052 "key": "m2amedia.tv:name",
4053 "value": "Canada Subscription"
4054 },
4055 {
4056 "key": "m2amedia.tv:description",
4057 "value": "Canadian Subscription"
4058 },
4059 {
4060 "key": "m2amedia.tv:ui:selector",
4061 "value": "{\"key\":\"shape\",\"value\":\"square\"}"
4062 }
4063 ]
4064 },
4065 "region": "eu-west-1",
4066 "selector": "square",
4067 "subscriber-pays": 100
4068 }
4069 },
4070 "v1.523bc5cc": {
4071 "value": {
4072 "encryption": {
4073 "algorithm": null,
4074 "enabled": false,
4075 "key": null,
4076 "type": null
4077 },
4078 "entitled-target-account-id": "8bf9468f-d54c-4b24-9be7-7260b743a0e4",
4079 "id": "523bc5cc-d4ca-44fd-83af-46a21ac57de4",
4080 "metadata": {
4081 "labels": [
4082 {
4083 "key": "m2amedia.tv:name",
4084 "value": "Denmark Subscription"
4085 },
4086 {
4087 "key": "m2amedia.tv:description",
4088 "value": "Danish Subscription"
4089 },
4090 {
4091 "key": "m2amedia.tv:ui:selector",
4092 "value": "{\"key\":\"shape\",\"value\":\"square\"}"
4093 }
4094 ]
4095 },
4096 "region": "eu-west-1",
4097 "selector": "square",
4098 "subscriber-pays": 100
4099 }
4100 },
4101 "v1.523bc5cd": {
4102 "value": {
4103 "encryption": {
4104 "algorithm": null,
4105 "enabled": false,
4106 "key": null,
4107 "type": null
4108 },
4109 "entitled-target-account-id": "8bf9468f-d54c-4b24-9be7-7260b743a0e4",
4110 "id": "523bc5cd-d4ca-44fd-83af-46a21ac57de4",
4111 "metadata": {
4112 "labels": [
4113 {
4114 "key": "m2amedia.tv:name",
4115 "value": "Estonia Subscription"
4116 },
4117 {
4118 "key": "m2amedia.tv:description",
4119 "value": "Estonian Subscription"
4120 },
4121 {
4122 "key": "m2amedia.tv:ui:selector",
4123 "value": "{\"key\":\"shape\",\"value\":\"square\"}"
4124 }
4125 ]
4126 },
4127 "region": "eu-west-1",
4128 "selector": "square",
4129 "subscriber-pays": 100
4130 }
4131 },
4132 "v1.523bc5ce": {
4133 "value": {
4134 "encryption": {
4135 "algorithm": null,
4136 "enabled": false,
4137 "key": null,
4138 "type": null
4139 },
4140 "entitled-target-account-id": "8bf9468f-d54c-4b24-9be7-7260b743a0e4",
4141 "id": "523bc5ce-d4ca-44fd-83af-46a21ac57de4",
4142 "metadata": {
4143 "labels": [
4144 {
4145 "key": "m2amedia.tv:name",
4146 "value": "France Subscription"
4147 },
4148 {
4149 "key": "m2amedia.tv:description",
4150 "value": "French Subscription"
4151 },
4152 {
4153 "key": "m2amedia.tv:ui:selector",
4154 "value": "{\"key\":\"shape\",\"value\":\"square\"}"
4155 }
4156 ]
4157 },
4158 "region": "eu-west-1",
4159 "selector": "square",
4160 "subscriber-pays": 100
4161 }
4162 }
4163 }
4164 }
4165 },
4166 "headers": {
4167 "ETag": {
4168 "$ref": "#/components/headers/etag"
4169 }
4170 }
4171 },
4172 "403": {
4173 "$ref": "#/components/responses/Forbidden"
4174 },
4175 "404": {
4176 "$ref": "#/components/responses/NotFound"
4177 }
4178 }
4179 },
4180 "put": {
4181 "tags": ["subscriptions"],
4182 "description": "Create a Subscription",
4183 "requestBody": {
4184 "description": "Subscription to add",
4185 "content": {
4186 "application/json": {
4187 "schema": {
4188 "$ref": "#/components/schemas/SubscriptionRequest"
4189 }
4190 }
4191 },
4192 "required": true
4193 },
4194 "parameters": [
4195 {
4196 "$ref": "#/components/parameters/if-match-header"
4197 }
4198 ],
4199 "responses": {
4200 "200": {
4201 "description": "OK",
4202 "content": {
4203 "application/json": {
4204 "schema": {
4205 "$ref": "#/components/schemas/SubscriptionResponse"
4206 }
4207 }
4208 },
4209 "headers": {
4210 "ETag": {
4211 "$ref": "#/components/headers/etag"
4212 }
4213 }
4214 },
4215 "400": {
4216 "$ref": "#/components/responses/BadRequest"
4217 },
4218 "403": {
4219 "$ref": "#/components/responses/Forbidden"
4220 },
4221 "404": {
4222 "$ref": "#/components/responses/NotFound"
4223 },
4224 "412": {
4225 "$ref": "#/components/responses/PreconditionFailed"
4226 }
4227 }
4228 },
4229 "delete": {
4230 "tags": ["subscriptions"],
4231 "description": "Delete Subscription by id",
4232 "responses": {
4233 "204": {
4234 "$ref": "#/components/responses/Deleted"
4235 },
4236 "403": {
4237 "$ref": "#/components/responses/Forbidden"
4238 },
4239 "404": {
4240 "$ref": "#/components/responses/NotFound"
4241 }
4242 }
4243 }
4244 },
4245 "/organisations/{organisation-id}/target-accounts/{target-account-id}/outputs/offers": {
4246 "parameters": [
4247 {
4248 "$ref": "#/components/parameters/organisation-id"
4249 },
4250 {
4251 "$ref": "#/components/parameters/target-account-id"
4252 }
4253 ],
4254 "get": {
4255 "tags": ["outputs"],
4256 "description": "Get list of links to output offers.",
4257 "responses": {
4258 "200": {
4259 "description": "OK",
4260 "content": {
4261 "application/json": {
4262 "schema": {
4263 "$ref": "#/components/schemas/URLListResponse"
4264 },
4265 "examples": {
4266 "v1": {
4267 "summary": "Connect v1 example",
4268 "value": {
4269 "items": [
4270 "http://localhost:4200/api/connect/v1/organisations/2cea7980-72f3-4e50-8590-28fb009390c9/target-accounts/8bf9468f-d54c-4b24-9be7-7260b743a0e4/outputs/offers/523bc5be-d4ca-44fd-83af-46a21ac57de4",
4271 "http://localhost:4200/api/connect/v1/organisations/8070ad6e-0963-4a63-a834-4bb2cb73e963/target-accounts/d6824f67-ebbe-4163-9b17-8c956d7237aa/outputs/offers/4c8c8ac6-754f-40ee-8576-88b27a0a7ea7"
4272 ]
4273 }
4274 }
4275 }
4276 }
4277 }
4278 },
4279 "403": {
4280 "$ref": "#/components/responses/Forbidden"
4281 },
4282 "404": {
4283 "$ref": "#/components/responses/NotFound"
4284 }
4285 }
4286 }
4287 },
4288 "/organisations/{organisation-id}/target-accounts/{target-account-id}/outputs/selections": {
4289 "parameters": [
4290 {
4291 "$ref": "#/components/parameters/organisation-id"
4292 },
4293 {
4294 "$ref": "#/components/parameters/target-account-id"
4295 }
4296 ],
4297 "get": {
4298 "tags": ["outputs"],
4299 "description": "Get list of links to output selections.",
4300 "responses": {
4301 "200": {
4302 "description": "OK",
4303 "content": {
4304 "application/json": {
4305 "schema": {
4306 "$ref": "#/components/schemas/URLListResponse"
4307 },
4308 "examples": {
4309 "v1": {
4310 "summary": "Connect v1 example",
4311 "value": {
4312 "items": [
4313 "http://localhost:4200/api/connect/v1/organisations/2cea7980-72f3-4e50-8590-28fb009390c9/target-accounts/8bf9468f-d54c-4b24-9be7-7260b743a0e4/outputs/selections/63727ad4-453c-48c2-b83c-238aa8bdad71",
4314 "http://localhost:4200/api/connect/v1/organisations/2cea7980-72f3-4e50-8590-28fb009390c9/target-accounts/8bf9468f-d54c-4b24-9be7-7260b743a0e4/outputs/selections/f2f8517c-71f3-4dc4-88fc-f81fc0d9fdfb",
4315 "http://localhost:4200/api/connect/v1/organisations/2cea7980-72f3-4e50-8590-28fb009390c9/target-accounts/8bf9468f-d54c-4b24-9be7-7260b743a0e4/outputs/selections/dd646d18-5736-4482-ac84-0913ca4f081b",
4316 "http://localhost:4200/api/connect/v1/organisations/2cea7980-72f3-4e50-8590-28fb009390c9/target-accounts/8bf9468f-d54c-4b24-9be7-7260b743a0e4/outputs/selections/1ef70b47-1b2d-423b-a52b-b7dfd35d9a25",
4317 "http://localhost:4200/api/connect/v1/organisations/2cea7980-72f3-4e50-8590-28fb009390c9/target-accounts/8bf9468f-d54c-4b24-9be7-7260b743a0e4/outputs/selections/363f0a78-bb99-468f-84c6-8c9679499ba8",
4318 "http://localhost:4200/api/connect/v1/organisations/2cea7980-72f3-4e50-8590-28fb009390c9/target-accounts/8bf9468f-d54c-4b24-9be7-7260b743a0e4/outputs/selections/de44a502-ff43-4458-890d-8d81620eedd8",
4319 "http://localhost:4200/api/connect/v1/organisations/2cea7980-72f3-4e50-8590-28fb009390c9/target-accounts/8bf9468f-d54c-4b24-9be7-7260b743a0e4/outputs/selections/ba3ec9a6-54de-47de-b2ec-667800603009"
4320 ]
4321 }
4322 }
4323 }
4324 }
4325 }
4326 },
4327 "403": {
4328 "$ref": "#/components/responses/Forbidden"
4329 },
4330 "404": {
4331 "$ref": "#/components/responses/NotFound"
4332 }
4333 }
4334 }
4335 },
4336 "/organisations/{organisation-id}/target-accounts/{target-account-id}/outputs/offers/{offer-id}": {
4337 "parameters": [
4338 {
4339 "$ref": "#/components/parameters/organisation-id"
4340 },
4341 {
4342 "$ref": "#/components/parameters/target-account-id"
4343 },
4344 {
4345 "$ref": "#/components/parameters/offer-id"
4346 }
4347 ],
4348 "get": {
4349 "tags": ["outputs"],
4350 "description": "Get an output offer by ID.",
4351 "responses": {
4352 "200": {
4353 "description": "OK",
4354 "content": {
4355 "application/json": {
4356 "schema": {
4357 "$ref": "#/components/schemas/OutputOfferResponse"
4358 }
4359 }
4360 },
4361 "headers": {
4362 "ETag": {
4363 "$ref": "#/components/headers/etag"
4364 }
4365 }
4366 },
4367 "403": {
4368 "$ref": "#/components/responses/Forbidden"
4369 },
4370 "404": {
4371 "$ref": "#/components/responses/NotFound"
4372 }
4373 }
4374 }
4375 },
4376 "/organisations/{organisation-id}/target-accounts/{target-account-id}/outputs/selections/{selection-id}": {
4377 "parameters": [
4378 {
4379 "$ref": "#/components/parameters/organisation-id"
4380 },
4381 {
4382 "$ref": "#/components/parameters/target-account-id"
4383 },
4384 {
4385 "$ref": "#/components/parameters/selection-id"
4386 }
4387 ],
4388 "get": {
4389 "tags": ["outputs"],
4390 "description": "Get an output selection by ID.",
4391 "responses": {
4392 "200": {
4393 "description": "OK",
4394 "content": {
4395 "application/json": {
4396 "schema": {
4397 "$ref": "#/components/schemas/OutputSelectionResponse"
4398 },
4399 "examples": {
4400 "v1.dd646d18": {
4401 "value": {
4402 "id": "dd646d18-5736-4482-ac84-0913ca4f081b",
4403 "metadata": {
4404 "labels": [
4405 {
4406 "key": "m2amedia.tv:name",
4407 "value": "Output Selection 1"
4408 },
4409 {
4410 "key": "m2amedia.tv:description",
4411 "value": "Description for mock output selection #1"
4412 },
4413 {
4414 "key": "for",
4415 "value": "frontend e2e testing #1"
4416 }
4417 ]
4418 },
4419 "type": "zixi-pull",
4420 "zixi-pull": [
4421 {
4422 "id": "example-a",
4423 "region": "eu-north-1",
4424 "enabled": true,
4425 "status": "Available",
4426 "remote-id": "my-devices-remote-id",
4427 "whitelist-cidrs": [
4428 "10.20.30.40/32",
4429 "192.168.1.15/24",
4430 "192.168.1.15/24"
4431 ],
4432 "url": "zixi://my-devices-remote-id:@10.20.30.40/9b668907-f5eb-4a7a-9c5c-501e95ba31d8"
4433 },
4434 {
4435 "id": "example-b",
4436 "region": "eu-north-1",
4437 "enabled": false,
4438 "status": "Unavailable",
4439 "remote-id": "my-devices-remote-id",
4440 "whitelist-cidrs": ["10.20.30.40/32"]
4441 }
4442 ],
4443 "events": "circuit = spain",
4444 "sources": "3831864b-b856-4313-ae77-cbaaa0bd70eb",
4445 "source": "../sources/3831864b-b856-4313-ae77-cbaaa0bd70eb",
4446 "offer": "./outputs/offers/dd646d18-5736-4482-ac84-0913ca4f081b"
4447 }
4448 },
4449 "v1.de44a502": {
4450 "value": {
4451 "id": "de44a502-ff43-4458-890d-8d81620eedd8",
4452 "metadata": {
4453 "labels": [
4454 {
4455 "key": "m2amedia.tv:name",
4456 "value": "Output Selection 2"
4457 },
4458 {
4459 "key": "m2amedia.tv:description",
4460 "value": "Description for mock output selection #2"
4461 },
4462 {
4463 "key": "for",
4464 "value": "frontend e2e testing #2"
4465 }
4466 ]
4467 },
4468 "type": "entitlement",
4469 "entitlement": [],
4470 "events": "circuit = spain",
4471 "sources": "3831864b-b856-4313-ae77-cbaaa0bd70eb",
4472 "source": "../sources/3831864b-b856-4313-ae77-cbaaa0bd70eb",
4473 "offer": "./outputs/offers/dd646d18-5736-4482-ac84-0913ca4f081b"
4474 }
4475 },
4476 "v1.ba3ec9a6": {
4477 "value": {
4478 "id": "ba3ec9a6-54de-47de-b2ec-667800603009",
4479 "metadata": {
4480 "labels": [
4481 {
4482 "key": "m2amedia.tv:name",
4483 "value": "Output Selection 3"
4484 },
4485 {
4486 "key": "m2amedia.tv:description",
4487 "value": "Description for mock output selection #3"
4488 },
4489 {
4490 "key": "for",
4491 "value": "frontend e2e testing #3"
4492 }
4493 ]
4494 },
4495 "type": "entitlement",
4496 "entitlement": [
4497 {
4498 "region": "eu-west-1",
4499 "enabled": false,
4500 "account": "123456789022",
4501 "name": "entitlmnt-obc-2"
4502 },
4503 {
4504 "region": "eu-north-1",
4505 "enabled": true,
4506 "account": "123456789011",
4507 "name": "entitlmnt-obc-1"
4508 }
4509 ],
4510 "events": "circuit = spain",
4511 "sources": "3831864b-b856-4313-ae77-cbaaa0bd70eb",
4512 "source": "../sources/3831864b-b856-4313-ae77-cbaaa0bd70eb",
4513 "offer": "./outputs/offers/dd646d18-5736-4482-ac84-0913ca4f081b"
4514 }
4515 },
4516 "v1.63727ad4": {
4517 "value": {
4518 "id": "63727ad4-453c-48c2-b83c-238aa8bdad71",
4519 "metadata": {
4520 "labels": [
4521 {
4522 "key": "m2amedia.tv:name",
4523 "value": "ZZ selection"
4524 },
4525 {
4526 "key": "m2amedia.tv:description",
4527 "value": "Description for output selection"
4528 },
4529 {
4530 "key": "for",
4531 "value": "client"
4532 },
4533 {
4534 "key": "for",
4535 "value": "sort order testing"
4536 }
4537 ]
4538 },
4539 "type": "entitlement",
4540 "entitlement": [
4541 {
4542 "region": "eu-west-1",
4543 "enabled": false,
4544 "account": "123456789022",
4545 "name": "entitl-obc-2"
4546 }
4547 ],
4548 "events": "circuit = spain",
4549 "sources": "",
4550 "source": "",
4551 "offer": "./outputs/offers/63727ad4-453c-48c2-b83c-238aa8bdad71"
4552 }
4553 },
4554 "v1.f2f8517c": {
4555 "value": {
4556 "id": "f2f8517c-71f3-4dc4-88fc-f81fc0d9fdfb",
4557 "metadata": {
4558 "labels": [
4559 {
4560 "key": "m2amedia.tv:name",
4561 "value": "AA Selection"
4562 },
4563 {
4564 "key": "m2amedia.tv:description",
4565 "value": "Description for output selection"
4566 },
4567 {
4568 "key": "for",
4569 "value": "testing"
4570 },
4571 {
4572 "key": "for",
4573 "value": "another sort order testing"
4574 }
4575 ]
4576 },
4577 "type": "entitlement",
4578 "entitlement": [
4579 {
4580 "region": "eu-west-1",
4581 "enabled": false,
4582 "account": "123456789022",
4583 "name": "entl-obc-2"
4584 },
4585 {
4586 "region": "eu-north-1",
4587 "enabled": true,
4588 "account": "123456789011",
4589 "name": "entl-obc-1"
4590 }
4591 ],
4592 "events": "circuit = spain",
4593 "sources": "for = testing",
4594 "source": "",
4595 "offer": "./outputs/offers/f2f8517c-71f3-4dc4-88fc-f81fc0d9fdfb"
4596 }
4597 },
4598 "v1.1ef70b47": {
4599 "value": {
4600 "id": "1ef70b47-1b2d-423b-a52b-b7dfd35d9a25",
4601 "metadata": {
4602 "labels": [
4603 {
4604 "key": "m2amedia.tv:name",
4605 "value": "Home Feed"
4606 },
4607 {
4608 "key": "m2amedia.tv:description",
4609 "value": ""
4610 },
4611 {
4612 "key": "for",
4613 "value": "example label"
4614 },
4615 {
4616 "key": "for",
4617 "value": "home feed test"
4618 }
4619 ]
4620 },
4621 "type": "zixi-pull",
4622 "zixi-pull": [
4623 {
4624 "id": "zixi-example-a",
4625 "region": "eu-north-1",
4626 "enabled": true,
4627 "status": "Available",
4628 "remote-id": "my-devices-remote-id",
4629 "whitelist-cidrs": ["10.20.30.40/32"],
4630 "url": "zixi://my-devices-remote-id:@10.20.30.40/9b668907-f5eb-4a7a-9c5c-501e95ba31d8"
4631 }
4632 ],
4633 "events": "",
4634 "sources": "d72de4ab-a4a7-46c8-acbc-088b0cbd6937",
4635 "source": "../sources/d72de4ab-a4a7-46c8-acbc-088b0cbd6937",
4636 "offer": "./outputs/offers/1ef70b47-1b2d-423b-a52b-b7dfd35d9a25"
4637 }
4638 },
4639 "v1.363f0a78": {
4640 "value": {
4641 "id": "363f0a78-bb99-468f-84c6-8c9679499ba8",
4642 "metadata": {
4643 "labels": [
4644 {
4645 "key": "m2amedia.tv:name",
4646 "value": "Output Selection 2 // with a long name // that might need to wrap or be truncated"
4647 },
4648 {
4649 "key": "m2amedia.tv:description",
4650 "value": "Description for mock output selection #2"
4651 },
4652 {
4653 "key": "for",
4654 "value": "example"
4655 }
4656 ]
4657 },
4658 "type": "entitlement",
4659 "entitlement": [
4660 {
4661 "region": "eu-west-1",
4662 "enabled": true,
4663 "account": "123456789012",
4664 "name": "entl-obc-2"
4665 }
4666 ],
4667 "events": "circuit = spain",
4668 "sources": "2fb3f8b3-f864-4d57-ad8a-312bbbc05cdb",
4669 "source": null,
4670 "offer": "./outputs/offers/363f0a78-bb99-468f-84c6-8c9679499ba8"
4671 }
4672 }
4673 }
4674 }
4675 },
4676 "headers": {
4677 "ETag": {
4678 "$ref": "#/components/headers/etag"
4679 }
4680 }
4681 },
4682 "403": {
4683 "$ref": "#/components/responses/Forbidden"
4684 },
4685 "404": {
4686 "$ref": "#/components/responses/NotFound"
4687 }
4688 }
4689 },
4690 "put": {
4691 "tags": ["outputs"],
4692 "description": "Update an output selection by ID.",
4693 "requestBody": {
4694 "description": "Subscription to add",
4695 "content": {
4696 "application/json": {
4697 "schema": {
4698 "$ref": "#/components/schemas/OutputSelectionRequest"
4699 }
4700 }
4701 },
4702 "required": true
4703 },
4704 "parameters": [
4705 {
4706 "$ref": "#/components/parameters/if-match-header"
4707 }
4708 ],
4709 "responses": {
4710 "200": {
4711 "description": "OK",
4712 "content": {
4713 "application/json": {
4714 "schema": {
4715 "$ref": "#/components/schemas/OutputSelectionResponse"
4716 }
4717 }
4718 },
4719 "headers": {
4720 "ETag": {
4721 "$ref": "#/components/headers/etag"
4722 }
4723 }
4724 },
4725 "400": {
4726 "$ref": "#/components/responses/BadRequest"
4727 },
4728 "403": {
4729 "$ref": "#/components/responses/Forbidden"
4730 },
4731 "404": {
4732 "$ref": "#/components/responses/NotFound"
4733 }
4734 }
4735 }
4736 }
4737 },
4738 "components": {
4739 "schemas": {
4740 "AWSRegion": {
4741 "description": "AWS region M2A Connect is able to route media to or from.",
4742 "type": "string",
4743 "enum": [
4744 "ap-east-1",
4745 "ap-northeast-1",
4746 "ap-northeast-2",
4747 "ap-south-1",
4748 "ap-southeast-1",
4749 "ap-southeast-2",
4750 "eu-central-1",
4751 "eu-north-1",
4752 "eu-west-1",
4753 "eu-west-2",
4754 "eu-west-3",
4755 "sa-east-1",
4756 "us-east-1",
4757 "us-east-2",
4758 "us-west-1",
4759 "us-west-2"
4760 ]
4761 },
4762 "ISO8601Interval": {
4763 "type": "string",
4764 "description": "Non-recuring time interval as described by ISO 8601-1:2019 section 5.5. No interval desginator other than a solidus shall be permitted. Nor are duration-only intervals allowed. As such, the interval may be expressed as either: a start and end datetime, a start datetime and duration or an end datetime and duration. Omission of individual datetime components is permissible in accordance with the specification. Similarly, when expressed as a start and end datetime, omissions from the end time are assumed to match the start time.",
4765 "example": "2020-08-01T00:00:00Z/P1D"
4766 },
4767 "StandardMetadata": {
4768 "type": "object",
4769 "required": ["metadata"],
4770 "properties": {
4771 "metadata": {
4772 "type": "object",
4773 "required": ["labels"],
4774 "properties": {
4775 "labels": {
4776 "type": "array",
4777 "items": {
4778 "type": "object",
4779 "required": ["key", "value"],
4780 "properties": {
4781 "key": {
4782 "type": "string",
4783 "pattern": "^[a-z1-9:.-]+$",
4784 "description": "The key. Not required to be unique. _Should_ be prefixed by a name space eg `m2amedia.tv:`, but not mandatory. May convey hierarchies through use certain characters, e.g. colons."
4785 },
4786 "value": {
4787 "type": "string",
4788 "pattern": "^([0-9A-Za-z\\s\\- -~]+){0,4096}$",
4789 "description": "The value, semantics of which may be confered by the `key`."
4790 }
4791 }
4792 },
4793 "description": "A list of key, value pairs with constrained charset\n\nKeys need not be unique, but key, value pairs must be.\n\nKeys prefixed m2amedia.tv: are reserved.\n\nSome keys have special meaning eg:\n\n - m2amedia.tv:name which is the human-readable, short-form name of the object. This may only appear once.\n\n - m2amedia.tv:description which is the human-readable, long-form description of the object. This may only appear once."
4794 }
4795 }
4796 }
4797 },
4798 "example": {
4799 "metadata": {
4800 "labels": [
4801 {
4802 "key": "m2amedia.tv:name",
4803 "value": "my-awesome-label"
4804 },
4805 {
4806 "key": "m2amedia.tv:description",
4807 "value": "My awesome long-form description"
4808 },
4809 {
4810 "key": "m2amedia.tv:multisentence",
4811 "value": "This is a multi-fragment, multisentence description. It also has some newlines, tabs and such.\n\tAnother line with a tab at the start. Connect is awesome! Do you even code bro?"
4812 },
4813 {
4814 "key": "example.com:lol",
4815 "value": "foo"
4816 },
4817 {
4818 "key": "un-namespaced-key",
4819 "value": "some-value-given-context-by-the-key"
4820 }
4821 ]
4822 }
4823 }
4824 },
4825 "Protection": {
4826 "oneOf": [
4827 {
4828 "type": "object",
4829 "required": ["enabled"],
4830 "properties": {
4831 "enabled": {
4832 "type": "boolean",
4833 "enum": [false],
4834 "description": "Whether the resource should encrypt/decrypt the stream"
4835 }
4836 }
4837 },
4838 {
4839 "type": "object",
4840 "required": ["enabled", "type", "algorithm", "key"],
4841 "properties": {
4842 "enabled": {
4843 "type": "boolean",
4844 "enum": [true],
4845 "description": "Whether the resource should encrypt/decrypt the stream"
4846 },
4847 "type": {
4848 "type": "string",
4849 "enum": ["static-key", "speke"],
4850 "description": "Always static-key in v1"
4851 },
4852 "algorithm": {
4853 "type": "string",
4854 "enum": ["aes-128", "aes-192", "aes-256"],
4855 "description": "Always aes-256 in v1"
4856 },
4857 "key": {
4858 "type": "string",
4859 "description": "A 256-bit key used to encrypt/decrypt"
4860 }
4861 }
4862 }
4863 ],
4864 "discriminator": {
4865 "propertyName": "enabled"
4866 }
4867 },
4868 "BaseInputRequest": {
4869 "allOf": [
4870 {
4871 "$ref": "#/components/schemas/StandardMetadata"
4872 },
4873 {
4874 "type": "object",
4875 "required": ["whitelist-cidrs", "port", "protocol"],
4876 "properties": {
4877 "whitelist-cidrs": {
4878 "type": "array",
4879 "items": {
4880 "type": "string",
4881 "format": "cidr"
4882 },
4883 "minLength": 1,
4884 "maxLength": 1
4885 },
4886 "port": {
4887 "type": "integer",
4888 "minimum": 1024,
4889 "maximum": 65535,
4890 "description": "The port on which traffic is presented to the ingest endpoint."
4891 },
4892 "protocol": {
4893 "type": "string",
4894 "description": "The transport format to be presented to the ingest endpoint"
4895 }
4896 }
4897 }
4898 ],
4899 "example": {
4900 "whitelist-cidrs": ["192.0.2.108/32"],
4901 "port": 5000,
4902 "protocol": "rtp"
4903 }
4904 },
4905 "IngestIPAddressProperty": {
4906 "type": "object",
4907 "required": ["ip"],
4908 "properties": {
4909 "ip": {
4910 "type": "string",
4911 "format": "ipv4",
4912 "description": "The endpoint IP address to which traffic should be sent"
4913 }
4914 },
4915 "example": {
4916 "ip": "127.0.0.1"
4917 }
4918 },
4919 "MaxBitrateProperty": {
4920 "type": "object",
4921 "required": ["max-bitrate"],
4922 "properties": {
4923 "max-bitrate": {
4924 "type": "integer",
4925 "maximum": 120000000,
4926 "description": "The maximum bitrate expected at the ingest endpoint. NOTE TO BACKEND DEVS - the backend needs to double this value (but keep it under 200M)!"
4927 }
4928 },
4929 "example": {
4930 "max-bitrate": 10000000
4931 }
4932 },
4933 "MaxLatencyProperty": {
4934 "type": "object",
4935 "required": ["max-latency"],
4936 "properties": {
4937 "max-latency": {
4938 "type": "integer",
4939 "maximum": 60000,
4940 "description": "The size of the input buffer in ms. A longer buffer allows for more error correction, but increases the latency"
4941 }
4942 },
4943 "example": {
4944 "max-latency": 2000
4945 }
4946 },
4947 "BaseReliableTransportInputRequest": {
4948 "allOf": [
4949 {
4950 "$ref": "#/components/schemas/BaseInputRequest"
4951 },
4952 {
4953 "$ref": "#/components/schemas/MaxLatencyProperty"
4954 }
4955 ]
4956 },
4957 "ZixiPushInputRequest": {
4958 "allOf": [
4959 {
4960 "$ref": "#/components/schemas/BaseReliableTransportInputRequest"
4961 },
4962 {
4963 "type": "object",
4964 "required": ["port", "protocol", "stream-id", "decryption"],
4965 "properties": {
4966 "port": {
4967 "type": "integer",
4968 "minimum": 2088,
4969 "maximum": 2088,
4970 "description": "The port on which traffic is presented to the ingest endpoint."
4971 },
4972 "protocol": {
4973 "type": "string",
4974 "enum": ["zixi-push"]
4975 },
4976 "stream-id": {
4977 "type": "string",
4978 "description": "The Zixi stream ID, which must match the value set in the Zixi feeder"
4979 },
4980 "decryption": {
4981 "$ref": "#/components/schemas/Protection"
4982 }
4983 }
4984 }
4985 ],
4986 "description": "Requests an input which will receive Zixi Push transport",
4987 "example": {
4988 "port": 2088,
4989 "protocol": "zixi-push",
4990 "stream-id": "my-awesome-stream-id",
4991 "decryption": {
4992 "enabled": false
4993 }
4994 }
4995 },
4996 "ZixiPushInputResponse": {
4997 "allOf": [
4998 {
4999 "$ref": "#/components/schemas/ZixiPushInputRequest"
5000 },
5001 {
5002 "$ref": "#/components/schemas/IngestIPAddressProperty"
5003 }
5004 ],
5005 "description": "An input which will receive Zixi Push transport, including its ingest address",
5006 "x-examples": {
5007 "example-1": {
5008 "port": 2088,
5009 "protocol": "zixi-push",
5010 "stream-id": "my-awesome-stream-id",
5011 "decryption": {
5012 "enabled": false
5013 },
5014 "ip": "127.0.0.1"
5015 }
5016 }
5017 },
5018 "RISTInputRequest": {
5019 "allOf": [
5020 {
5021 "allOf": [
5022 {
5023 "$ref": "#/components/schemas/BaseReliableTransportInputRequest"
5024 },
5025 {
5026 "type": "object",
5027 "properties": {
5028 "max-latency": {
5029 "minimum": 1,
5030 "maximum": 15000
5031 }
5032 }
5033 }
5034 ]
5035 },
5036 {
5037 "$ref": "#/components/schemas/MaxBitrateProperty"
5038 },
5039 {
5040 "type": "object",
5041 "required": ["protocol"],
5042 "properties": {
5043 "protocol": {
5044 "type": "string",
5045 "enum": ["rist"]
5046 },
5047 "port": {
5048 "description": "The port on which traffic is presented to the ingest endpoint. Note that `port + 1` will be reserved when using RIST"
5049 }
5050 }
5051 }
5052 ],
5053 "description": "Requests an input which will receive RIST transport",
5054 "example": {
5055 "protocol": "rist"
5056 }
5057 },
5058 "RISTInputResponse": {
5059 "allOf": [
5060 {
5061 "$ref": "#/components/schemas/RISTInputRequest"
5062 },
5063 {
5064 "$ref": "#/components/schemas/IngestIPAddressProperty"
5065 }
5066 ],
5067 "description": "An input which will receive RIST transport, including its ingest address"
5068 },
5069 "BaseUnreliableTransportSource": {
5070 "allOf": [
5071 {
5072 "$ref": "#/components/schemas/BaseInputRequest"
5073 },
5074 {
5075 "$ref": "#/components/schemas/MaxBitrateProperty"
5076 }
5077 ]
5078 },
5079 "RTPInputRequest": {
5080 "allOf": [
5081 {
5082 "$ref": "#/components/schemas/BaseUnreliableTransportSource"
5083 },
5084 {
5085 "type": "object",
5086 "required": ["fec-enabled", "protocol"],
5087 "properties": {
5088 "fec-enabled": {
5089 "type": "boolean",
5090 "description": "Whether the Source should expect FEC on `port + 4` and/or `port + 2`."
5091 },
5092 "protocol": {
5093 "type": "string",
5094 "enum": ["rtp"]
5095 },
5096 "port": {
5097 "description": "The port on which traffic is presented to the ingest endpoint. Note that `port + 2` and `port + 4` will be reserved when FEC is enabled"
5098 }
5099 }
5100 }
5101 ],
5102 "description": "Requests an input which will receive RTP (optionally with FEC) transport",
5103 "example": {
5104 "fec-enabled": true,
5105 "protocol": "rtp"
5106 }
5107 },
5108 "RTPInputResponse": {
5109 "allOf": [
5110 {
5111 "$ref": "#/components/schemas/RTPInputRequest"
5112 },
5113 {
5114 "$ref": "#/components/schemas/IngestIPAddressProperty"
5115 }
5116 ],
5117 "description": "An input which will receive RTP transport, including its ingest address"
5118 },
5119 "EntitledInput": {
5120 "type": "object",
5121 "required": ["entitlement-arn", "protocol", "decryption"],
5122 "properties": {
5123 "entitlement-arn": {
5124 "type": "string",
5125 "format": "arn"
5126 },
5127 "protocol": {
5128 "type": "string",
5129 "enum": ["entitlement"],
5130 "description": "The transport format to be presented to the ingest endpoint"
5131 },
5132 "decryption": {
5133 "$ref": "#/components/schemas/Protection"
5134 }
5135 },
5136 "example": {
5137 "entitlement-arn": "arn:aws:mediaconnect:eu-west-1:123456789012:entitlement:1-ABCDEFGHIJKLMNOP-0a1b2c3d4e5f:madeup",
5138 "protocol": "entitlement",
5139 "decryption": {
5140 "enabled": false
5141 }
5142 }
5143 },
5144 "RTMPPullInput": {
5145 "allOf": [
5146 {
5147 "$ref": "#/components/schemas/StandardMetadata"
5148 },
5149 {
5150 "type": "object",
5151 "required": ["metadata", "protocol", "url"],
5152 "properties": {
5153 "protocol": {
5154 "type": "string",
5155 "enum": ["rtmp-pull"]
5156 },
5157 "url": {
5158 "type": "string",
5159 "format": "uri",
5160 "description": "The full URL of the endpoint from which to pull"
5161 },
5162 "username": {
5163 "type": "string",
5164 "description": "The username for accessing the RTMP endpoint"
5165 },
5166 "password": {
5167 "type": "string",
5168 "format": "password",
5169 "description": "The password for accessing the RTMP endpoint"
5170 },
5171 "transcode-profile-url": {
5172 "type": "string",
5173 "format": "uri",
5174 "description": "The name of a preconfigured template, accessible by the transcoder, containing desired transcode settings. If not provided a default will be selected which may give undesirable results."
5175 }
5176 }
5177 }
5178 ],
5179 "example": {
5180 "protocol": "rtmp-pull",
5181 "url": "rtmp://127.0.1.1/app/key",
5182 "username": "mr.awesome@m2amedia.tv",
5183 "password": "1337H4x0r",
5184 "transcode-profile-url": "s3://m2a-example-bucket/transcode-profiles/rtmp-push.json"
5185 }
5186 },
5187 "RTMPPushInputRequest": {
5188 "allOf": [
5189 {
5190 "$ref": "#/components/schemas/BaseInputRequest"
5191 },
5192 {
5193 "type": "object",
5194 "required": [
5195 "whitelist-cidrs",
5196 "port",
5197 "protocol",
5198 "app-name",
5199 "stream-key"
5200 ],
5201 "properties": {
5202 "whitelist-cidrs": {
5203 "type": "array",
5204 "items": {
5205 "type": "string",
5206 "format": "cidr",
5207 "description": "A CIDR block to whitelist for access to the endpoint"
5208 },
5209 "minLength": 1,
5210 "maxLength": 10
5211 },
5212 "port": {
5213 "type": "integer",
5214 "minimum": 1935,
5215 "maximum": 1935,
5216 "description": "The port on which traffic is presented to the ingest endpoint."
5217 },
5218 "protocol": {
5219 "type": "string",
5220 "enum": ["rtmp-push"]
5221 },
5222 "app-name": {
5223 "type": "string",
5224 "description": "The server application to which the clients will connect"
5225 },
5226 "stream-key": {
5227 "type": "string",
5228 "description": "The name of the stream to play"
5229 },
5230 "transcode-profile-url": {
5231 "type": "string",
5232 "format": "uri",
5233 "description": "The location of a preconfigured template, accessible by the transcoder, containing desired settings in a format suitable for the given transcoder. If not provided a default will be selected which may give undesirable results."
5234 }
5235 }
5236 }
5237 ],
5238 "description": "Requests an input which will receive RTMP transport",
5239 "example": {
5240 "whitelist-cidrs": ["198.51.100.103/32"],
5241 "protocol": "rtmp-push",
5242 "port": 1935,
5243 "app-name": "app",
5244 "stream-key": "test",
5245 "transcode-profile-url": "s3://m2a-example-bucket/transcode-profiles/rtmp-push.json"
5246 }
5247 },
5248 "RTMPPushInputResponse": {
5249 "allOf": [
5250 {
5251 "$ref": "#/components/schemas/RTMPPushInputRequest"
5252 },
5253 {
5254 "type": "object",
5255 "properties": {
5256 "stream-url": {
5257 "type": "string",
5258 "format": "uri",
5259 "description": "The full URL of the endpoint to which the content should be pushed"
5260 }
5261 }
5262 }
5263 ],
5264 "description": "An input which will receive RTMP transport",
5265 "example": {
5266 "stream-url": "rtmp://10.20.30.40:1935/app/test"
5267 }
5268 },
5269 "M2AManagedUDPInput": {
5270 "type": "object",
5271 "required": ["type", "ip", "port"],
5272 "properties": {
5273 "type": {
5274 "type": "string",
5275 "enum": ["udp"]
5276 },
5277 "ip": {
5278 "type": "string",
5279 "format": "ipv4",
5280 "description": "The unicast or multicast address on which to listen for input"
5281 },
5282 "port": {
5283 "type": "integer",
5284 "minimum": 1024,
5285 "maximum": 65535,
5286 "description": "The port on which to listen for ingest"
5287 },
5288 "bind-ip": {
5289 "type": "string",
5290 "format": "ipv4",
5291 "description": "The network interface address on which to listen. If not provided, a potentially inappropriate interface will be chosen automatically"
5292 }
5293 },
5294 "example": {
5295 "type": "udp",
5296 "ip": "239.50.50.1",
5297 "port": 5000,
5298 "bind-ip": "10.10.15.101"
5299 }
5300 },
5301 "M2AManagedRTPInput": {
5302 "type": "object",
5303 "required": ["type", "ip", "port"],
5304 "properties": {
5305 "type": {
5306 "type": "string",
5307 "enum": ["rtp"]
5308 },
5309 "ip": {
5310 "type": "string",
5311 "format": "ipv4",
5312 "description": "The unicast or multicast address on which to listen for input"
5313 },
5314 "port": {
5315 "type": "integer",
5316 "minimum": 1024,
5317 "maximum": 65535,
5318 "description": "The port on which to listen for ingest"
5319 },
5320 "bind-ip": {
5321 "type": "string",
5322 "format": "ipv4",
5323 "description": "The network interface address on which to listen. If not provided, a potentially inappropriate interface will be chosen automatically"
5324 }
5325 },
5326 "example": {
5327 "type": "rtp",
5328 "ip": "239.50.50.1",
5329 "port": 5000,
5330 "bind-ip": "10.10.15.101"
5331 }
5332 },
5333 "M2AManagedInputRequest": {
5334 "allOf": [
5335 {
5336 "oneOf": [
5337 {
5338 "$ref": "#/components/schemas/M2AManagedUDPInput"
5339 },
5340 {
5341 "$ref": "#/components/schemas/M2AManagedRTPInput"
5342 }
5343 ],
5344 "discriminator": {
5345 "propertyName": "type",
5346 "mapping": {
5347 "udp": "#/components/schemas/M2AManagedUDPInput",
5348 "rtp": "#/components/schemas/M2AManagedRTPInput"
5349 }
5350 }
5351 },
5352 {
5353 "$ref": "#/components/schemas/StandardMetadata"
5354 },
5355 {
5356 "type": "object",
5357 "required": ["protocol"],
5358 "properties": {
5359 "protocol": {
5360 "type": "string",
5361 "enum": ["m2a-managed"]
5362 }
5363 }
5364 }
5365 ],
5366 "example": {
5367 "protocol": "m2a-managed"
5368 }
5369 },
5370 "M2AManagedInputResponse": {
5371 "allOf": [
5372 {
5373 "$ref": "#/components/schemas/M2AManagedInputRequest"
5374 },
5375 {
5376 "type": "object",
5377 "properties": {
5378 "ingest-details": {
5379 "required": ["ip", "port", "protocol"],
5380 "allOf": [
5381 {
5382 "allOf": [
5383 {
5384 "$ref": "#/components/schemas/IngestIPAddressProperty"
5385 },
5386 {
5387 "type": "object",
5388 "properties": {
5389 "ip": {
5390 "description": "The IP address to which the managed input will send traffic. Can be used along with `port` and `protocol` to determine eg ACL configuration."
5391 }
5392 }
5393 }
5394 ]
5395 },
5396 {
5397 "type": "object",
5398 "properties": {
5399 "port": {
5400 "type": "integer",
5401 "minimum": 1024,
5402 "maximum": 65535,
5403 "description": "The port on which traffic is presented to the ingest endpoint. Note that, depending on `protocol`, other ports may also be in use for signalling, so do not rely on this attribute alone for eg ports to allow in ACL configuration."
5404 },
5405 "protocol": {
5406 "type": "string",
5407 "enum": ["zixi-push", "rist"],
5408 "description": "The protocol in use between the managed input and cloud ingest. Eg zixi-push, rist-push. Typically used along with `port` and `ip` to determine ACL configuration if required."
5409 }
5410 }
5411 }
5412 ]
5413 }
5414 }
5415 }
5416 ]
5417 },
5418 "IngestEndpointRequest": {
5419 "oneOf": [
5420 {
5421 "type": "array",
5422 "items": {
5423 "$ref": "#/components/schemas/ZixiPushInputRequest"
5424 },
5425 "minItems": 1,
5426 "maxItems": 2
5427 },
5428 {
5429 "type": "array",
5430 "items": {
5431 "$ref": "#/components/schemas/RISTInputRequest"
5432 },
5433 "minItems": 1,
5434 "maxItems": 2
5435 },
5436 {
5437 "type": "array",
5438 "items": {
5439 "$ref": "#/components/schemas/RTPInputRequest"
5440 },
5441 "minItems": 1,
5442 "maxItems": 2
5443 },
5444 {
5445 "type": "array",
5446 "items": {
5447 "$ref": "#/components/schemas/EntitledInput"
5448 },
5449 "minItems": 1,
5450 "maxItems": 1
5451 },
5452 {
5453 "type": "array",
5454 "items": {
5455 "$ref": "#/components/schemas/RTMPPullInput"
5456 },
5457 "minItems": 1,
5458 "maxItems": 2
5459 },
5460 {
5461 "type": "array",
5462 "items": {
5463 "$ref": "#/components/schemas/RTMPPushInputRequest"
5464 },
5465 "minItems": 1,
5466 "maxItems": 2
5467 },
5468 {
5469 "type": "array",
5470 "items": {
5471 "$ref": "#/components/schemas/M2AManagedInputRequest"
5472 },
5473 "minItems": 1,
5474 "maxItems": 2
5475 }
5476 ],
5477 "description": "A list of inputs for a Source. Multiple entries imply resiliency against upstream failure (eg DirectConnect, network infrastructure). Both inputs should be from the same encoder, and _may_ use SMPTE2022-7. Note that failover is not available for entitled sources."
5478 },
5479 "IngestEndpointResponse": {
5480 "oneOf": [
5481 {
5482 "type": "array",
5483 "items": {
5484 "$ref": "#/components/schemas/ZixiPushInputResponse"
5485 },
5486 "minItems": 1,
5487 "maxItems": 2
5488 },
5489 {
5490 "type": "array",
5491 "items": {
5492 "$ref": "#/components/schemas/RISTInputResponse"
5493 },
5494 "minItems": 1,
5495 "maxItems": 2
5496 },
5497 {
5498 "type": "array",
5499 "items": {
5500 "$ref": "#/components/schemas/RTPInputResponse"
5501 },
5502 "minItems": 1,
5503 "maxItems": 2
5504 },
5505 {
5506 "type": "array",
5507 "items": {
5508 "$ref": "#/components/schemas/EntitledInput"
5509 },
5510 "minItems": 1,
5511 "maxItems": 1
5512 },
5513 {
5514 "type": "array",
5515 "items": {
5516 "$ref": "#/components/schemas/RTMPPullInput"
5517 },
5518 "minItems": 1,
5519 "maxItems": 2
5520 },
5521 {
5522 "type": "array",
5523 "items": {
5524 "$ref": "#/components/schemas/RTMPPushInputResponse"
5525 },
5526 "minItems": 1,
5527 "maxItems": 2
5528 },
5529 {
5530 "type": "array",
5531 "items": {
5532 "$ref": "#/components/schemas/M2AManagedInputResponse"
5533 },
5534 "minItems": 1,
5535 "maxItems": 2
5536 }
5537 ],
5538 "description": "A list of inputs for a Source. Multiple entries imply resiliency against upstream failure (eg DirectConnect, network infrastructure). Both inputs should be from the same encoder, and _may_ use SMPTE2022-7. Note that failover is not available for entitled sources."
5539 },
5540 "URLListResponse": {
5541 "type": "object",
5542 "required": ["items"],
5543 "properties": {
5544 "items": {
5545 "type": "array",
5546 "items": {
5547 "type": "string",
5548 "format": "uri"
5549 }
5550 }
5551 }
5552 },
5553 "BaseResponse": {
5554 "type": "object",
5555 "required": ["id"],
5556 "properties": {
5557 "id": {
5558 "type": "string",
5559 "format": "uuid"
5560 }
5561 }
5562 },
5563 "BaseRequest": {
5564 "allOf": [
5565 {
5566 "$ref": "#/components/schemas/StandardMetadata"
5567 }
5568 ]
5569 },
5570 "OrganisationRequest": {
5571 "allOf": [
5572 {
5573 "$ref": "#/components/schemas/BaseRequest"
5574 }
5575 ]
5576 },
5577 "OrganisationResponse": {
5578 "allOf": [
5579 {
5580 "$ref": "#/components/schemas/OrganisationRequest"
5581 },
5582 {
5583 "$ref": "#/components/schemas/BaseResponse"
5584 }
5585 ],
5586 "example": {
5587 "id": "7c5c80c6-be68-4088-9209-dc01060680c7"
5588 }
5589 },
5590 "TargetAccountRequest": {
5591 "allOf": [
5592 {
5593 "$ref": "#/components/schemas/BaseRequest"
5594 },
5595 {
5596 "type": "object",
5597 "required": ["aws-account-number", "proxy-whitelist"],
5598 "properties": {
5599 "aws-account-number": {
5600 "type": "string",
5601 "pattern": "^\\d{12}$"
5602 },
5603 "proxy-whitelist": {
5604 "type": "array",
5605 "items": {
5606 "type": "string",
5607 "pattern": "^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(?:\\/([0-9]|[1-2][0-9]|3[0-2]))$"
5608 },
5609 "description": "A list of CIDR blocks which will have permission to view the proxy streams for all sources created under this target account."
5610 }
5611 }
5612 }
5613 ],
5614 "example": {
5615 "aws-account-number": "123456789012",
5616 "proxy-whitelist": ["192.0.2.0/24", "198.51.100.0/24"]
5617 }
5618 },
5619 "TargetAccountResponse": {
5620 "allOf": [
5621 {
5622 "$ref": "#/components/schemas/TargetAccountRequest"
5623 },
5624 {
5625 "$ref": "#/components/schemas/BaseResponse"
5626 }
5627 ],
5628 "example": {
5629 "id": "22a4abf1-1742-432e-a32c-26aa15065ba8"
5630 }
5631 },
5632 "SourceRequest": {
5633 "allOf": [
5634 {
5635 "$ref": "#/components/schemas/BaseRequest"
5636 },
5637 {
5638 "type": "object",
5639 "required": [
5640 "egress-regions",
5641 "ingress-region",
5642 "ingest-endpoints",
5643 "entitlement-prefix"
5644 ],
5645 "properties": {
5646 "egress-regions": {
5647 "type": "array",
5648 "items": {
5649 "type": "string"
5650 },
5651 "description": "A valid AWS region. note that the ingress-region must also be included in this list if entitlements are to be made in that region"
5652 },
5653 "entitlement-prefix": {
5654 "type": "string",
5655 "description": "A custom name to be attached as a prefix to all entitlements created for this source. NOTE: Changing this field after the creation of entitlements will require all subscribers to update their subscriptions, and should be done with caution.",
5656 "pattern": "^[a-zA-Z1-9_-]{1,42}$"
5657 },
5658 "ingress-region": {
5659 "type": "string",
5660 "description": "A valid AWS region"
5661 },
5662 "ingest-endpoints": {
5663 "type": "array",
5664 "items": {
5665 "$ref": "#/components/schemas/IngestEndpointRequest"
5666 },
5667 "description": "A list of endpoints to create. Multiple entries provide geographic resiliency. If there is a single entry, the Source will be created in a single Availability Zone. If there are two entries, the Source will be created in two different Availability Zones",
5668 "minItems": 1,
5669 "maxItems": 2
5670 }
5671 }
5672 }
5673 ],
5674 "example": {
5675 "egress-regions": ["eu-west-1", "eu-central-1"],
5676 "entitlement-prefix": "Provider_Channel_1",
5677 "ingress-region": "eu-west-1",
5678 "ingest-endpoints": [
5679 [
5680 {
5681 "metadata": {
5682 "labels": []
5683 },
5684 "whitelist-cidrs": ["192.0.2.2/32"],
5685 "port": 2088,
5686 "protocol": "zixi-push",
5687 "max-latency": 2000,
5688 "stream-id": "my-awesome-stream-1-a",
5689 "decryption": {
5690 "enabled": false
5691 }
5692 },
5693 {
5694 "metadata": {
5695 "labels": []
5696 },
5697 "whitelist-cidrs": ["198.51.100.10/32"],
5698 "port": 2088,
5699 "protocol": "zixi-push",
5700 "max-latency": 2000,
5701 "stream-id": "my-awesome-stream-1-b",
5702 "decryption": {
5703 "enabled": false
5704 }
5705 }
5706 ]
5707 ]
5708 }
5709 },
5710 "SourceResponse": {
5711 "allOf": [
5712 {
5713 "$ref": "#/components/schemas/SourceRequest"
5714 },
5715 {
5716 "$ref": "#/components/schemas/BaseResponse"
5717 },
5718 {
5719 "type": "object",
5720 "properties": {
5721 "proxies": {
5722 "description": "The type of proxies available for the source. If this attribute is empty there are no m2a managed proxies available for this source",
5723 "type": "object",
5724 "required": ["dash"],
5725 "properties": {
5726 "dash": {
5727 "description": "Information about the proxies for this source and type, eg the url of the manifest which should be playable for trusted entities.",
5728 "type": "object",
5729 "required": ["url"],
5730 "properties": {
5731 "url": {
5732 "type": "string",
5733 "format": "uri"
5734 }
5735 }
5736 }
5737 }
5738 }
5739 }
5740 },
5741 {
5742 "type": "object",
5743 "properties": {
5744 "ingest-endpoints": {
5745 "type": "array",
5746 "items": {
5747 "$ref": "#/components/schemas/IngestEndpointResponse"
5748 },
5749 "description": "A list of endpoints created containing the ingest addresses. Multiple entries provide geographic resiliency. If there is a single entry, the Source will be created in a single Availability Zone. If there are two entries, the Source will be created in two different Availability Zones",
5750 "minItems": 1,
5751 "maxItems": 2
5752 }
5753 }
5754 }
5755 ],
5756 "example": {
5757 "id": "17928d7f-a9e0-45aa-8ac6-cf86e5616e83",
5758 "proxies": {
5759 "dash": {
5760 "url": "https://cf98fa7b2ee4450e.mediapackage.us-east-1.amazonaws.com/out/v1/997cbb27697d4863bb65488133bff26f/sportsball.mpd"
5761 }
5762 },
5763 "ingest-endpoints": [
5764 [
5765 {
5766 "whitelist-cidrs": ["192.0.2.2/32"],
5767 "port": 2088,
5768 "protocol": "zixi-push",
5769 "max-latency": 2000,
5770 "stream-id": "my-awesome-stream-1-a",
5771 "ip": "127.0.0.1",
5772 "decryption": {
5773 "enabled": false
5774 }
5775 },
5776 {
5777 "whitelist-cidrs": ["198.51.100.10/32"],
5778 "port": 2088,
5779 "protocol": "zixi-push",
5780 "max-latency": 2000,
5781 "stream-id": "my-awesome-stream-1-b",
5782 "ip": "127.0.0.2",
5783 "decryption": {
5784 "enabled": false
5785 }
5786 }
5787 ]
5788 ]
5789 }
5790 },
5791 "HealthStatusResponse": {
5792 "type": "object",
5793 "required": ["status", "reasons"],
5794 "properties": {
5795 "status": {
5796 "type": "string",
5797 "enum": ["healthy", "degraded", "unhealthy"],
5798 "description": "The computed health state of the Source"
5799 },
5800 "reasons": {
5801 "type": "array",
5802 "items": {
5803 "type": "string",
5804 "enum": [
5805 "InputNotConnected",
5806 "InputBitrateZero",
5807 "InputBitrateLow",
5808 "EntitlementAlreadyInUse",
5809 "EntitlementRevoked",
5810 "EntitlementSourceInactive",
5811 "EntitlementSourceLimitExceeded",
5812 "DecryptionKeyType",
5813 "DecryptionKeyPermission",
5814 "Unknown"
5815 ],
5816 "uniqueItems": true,
5817 "minItems": 1
5818 },
5819 "description": "A list of messages containing an explanation of why the `status` has its current value. Empty when `status` is `healthy`."
5820 }
5821 }
5822 },
5823 "SourceStatusResponse": {
5824 "type": "object",
5825 "required": ["running-status", "health"],
5826 "properties": {
5827 "running-status": {
5828 "type": "string",
5829 "enum": ["stopped", "starting", "running", "stopping", "failed"],
5830 "description": "The computed running state of the Source"
5831 },
5832 "health": {
5833 "oneOf": [
5834 {
5835 "allOf": [
5836 {
5837 "$ref": "#/components/schemas/HealthStatusResponse"
5838 },
5839 {
5840 "type": "object",
5841 "properties": {
5842 "status": {
5843 "enum": ["healthy", "unknown"]
5844 },
5845 "reasons": {
5846 "minItems": 0,
5847 "maxItems": 0
5848 }
5849 }
5850 }
5851 ]
5852 },
5853 {
5854 "allOf": [
5855 {
5856 "$ref": "#/components/schemas/HealthStatusResponse"
5857 },
5858 {
5859 "type": "object",
5860 "properties": {
5861 "status": {
5862 "enum": ["degraded", "unhealthy"]
5863 }
5864 }
5865 }
5866 ]
5867 }
5868 ],
5869 "discriminator": {
5870 "propertyName": "status"
5871 }
5872 }
5873 },
5874 "example": {
5875 "running-status": "running",
5876 "health": {
5877 "status": "degraded",
5878 "reasons": ["InputNotConnected"]
5879 }
5880 }
5881 },
5882 "MetricsResponse": {
5883 "type": "object",
5884 "required": ["series"],
5885 "properties": {
5886 "series": {
5887 "type": "array",
5888 "items": {
5889 "type": "object",
5890 "required": ["metric", "values", "identity", "samples", "unit"],
5891 "properties": {
5892 "metric": {
5893 "type": "string",
5894 "description": "A key used by the front end to select a more descriptive, localised name. May vaguely describe the context. eg cpu"
5895 },
5896 "values": {
5897 "type": "array",
5898 "items": {
5899 "type": "number"
5900 },
5901 "description": "A list of values comprising the time series"
5902 },
5903 "identity": {
5904 "type": "string",
5905 "description": "The resource from which the `values` were derived"
5906 },
5907 "samples": {
5908 "type": "array",
5909 "items": {
5910 "type": "string",
5911 "format": "date-time",
5912 "description": "The x-axis datapoints"
5913 }
5914 },
5915 "unit": {
5916 "type": "string",
5917 "description": "Unit of measurement for `values`"
5918 }
5919 }
5920 }
5921 },
5922 "samples": {
5923 "type": "array",
5924 "items": {
5925 "type": "string",
5926 "format": "date-time",
5927 "description": "The x-axis datapoints"
5928 }
5929 }
5930 },
5931 "example": {
5932 "series": [
5933 {
5934 "metric": "uncorrected-packets",
5935 "values": [0, 0, 0, 100, 90, 80, 30],
5936 "identity": "ingress-flow",
5937 "samples": [
5938 "2020-01-30T11:53:46+00:00",
5939 "2020-01-30T11:55:46+00:00",
5940 "2020-01-30T11:56:46+00:00",
5941 "2020-01-30T11:57:46+00:00",
5942 "2020-01-30T11:58:46+00:00",
5943 "2020-01-30T11:59:46+00:00",
5944 "2020-01-30T12:00:46+00:00"
5945 ],
5946 "unit": "%"
5947 },
5948 {
5949 "metric": "connected-outputs",
5950 "values": [0, 0, 0, 1, 3, 3, 3],
5951 "identity": "egress-flows/eu-west-1",
5952 "samples": [
5953 "2020-01-30T11:53:46+00:00",
5954 "2020-01-30T11:54:46+00:00",
5955 "2020-01-30T11:55:46+00:00",
5956 "2020-01-30T11:56:46+00:00",
5957 "2020-01-30T11:57:46+00:00",
5958 "2020-01-30T11:58:46+00:00",
5959 "2020-01-30T11:59:46+00:00"
5960 ],
5961 "unit": "count"
5962 }
5963 ],
5964 "samples": [
5965 "2020-01-30T11:53:46+00:00",
5966 "2020-01-30T11:54:46+00:00",
5967 "2020-01-30T11:55:46+00:00",
5968 "2020-01-30T11:56:46+00:00",
5969 "2020-01-30T11:57:46+00:00",
5970 "2020-01-30T11:58:46+00:00",
5971 "2020-01-30T11:59:46+00:00"
5972 ]
5973 }
5974 },
5975 "SubscriptionRequest": {
5976 "type": "object",
5977 "required": [
5978 "entitled-target-account-id",
5979 "region",
5980 "subscriber-pays",
5981 "encryption"
5982 ],
5983 "properties": {
5984 "entitled-target-account-id": {
5985 "type": "string",
5986 "format": "uuid",
5987 "description": "The entitled Target Account, *not* the owning Target Account of the source. MUST be valid target-account-id key"
5988 },
5989 "region": {
5990 "type": "string",
5991 "description": "A valid AWS region, which is also a valid egress-region on the source"
5992 },
5993 "selector": {
5994 "type": "string",
5995 "description": "A selector can be either the value of an event key metadata or an event value metadata. It needs to match strictly with either of one."
5996 },
5997 "subscriber-pays": {
5998 "type": "integer",
5999 "minimum": 0,
6000 "maximum": 100,
6001 "description": "The percentage of egress data transfer costs to be paid by the Subscriber."
6002 },
6003 "encryption": {
6004 "allOf": [
6005 {
6006 "$ref": "#/components/schemas/Protection"
6007 },
6008 {
6009 "description": "This field MUST be present but all fields other than enabled WILL BE IGNORED in v1. If enabled, response will contain autogenerated values"
6010 }
6011 ]
6012 }
6013 },
6014 "example": {
6015 "entitled-target-account-id": "c5e1c119-c7da-406c-8a21-951b534389a2",
6016 "region": "eu-west-1",
6017 "subscriber-pays": 100,
6018 "selector": "dog",
6019 "encryption": {
6020 "enabled": true,
6021 "type": "static-key",
6022 "algorithm": "aes-256",
6023 "key": "4c07f2a503f13888a08a5acf4148ef849f701a0511ab53ffee97766da2a82088"
6024 }
6025 }
6026 },
6027 "SubscriptionResponse": {
6028 "allOf": [
6029 {
6030 "$ref": "#/components/schemas/SubscriptionRequest"
6031 },
6032 {
6033 "$ref": "#/components/schemas/BaseResponse"
6034 }
6035 ],
6036 "example": {
6037 "id": "43acec88-9e4b-448a-b8d1-a711f24f7dfe"
6038 }
6039 },
6040 "OutputOfferRequest": {
6041 "allOf": [
6042 {
6043 "$ref": "#/components/schemas/BaseRequest"
6044 },
6045 {
6046 "type": "object",
6047 "required": [
6048 "enabled",
6049 "type",
6050 "entitlement",
6051 "regions",
6052 "events",
6053 "sources",
6054 "selection",
6055 "source"
6056 ],
6057 "properties": {
6058 "enabled": {
6059 "type": "boolean",
6060 "description": "Whether or not the output is enabled. When disabled no media will be routed to the output."
6061 },
6062 "type": {
6063 "type": "string",
6064 "enum": ["Entitlement"],
6065 "description": "What kind of output it is. At this time only AWS MediaConnect entitlements are supported."
6066 },
6067 "entitlement": {
6068 "description": "Configuration for AWS MediaConnect entitlements.",
6069 "type": "object",
6070 "required": ["subscriber-pays"],
6071 "properties": {
6072 "subscriber-pays": {
6073 "description": "What proportion, as number between zero and 100, of the network transfer costs should be burdened on the receiving subscriber. One hundred signals that the subscriber will cover the full costs.",
6074 "type": "integer",
6075 "minimum": 0,
6076 "maximum": 100
6077 }
6078 }
6079 },
6080 "regions": {
6081 "description": "Which regions and how many regions is the subscriber be permitted to receive media from. Note that the subscriber needn't use their full allocation of regions. Also note that the subscriber needn't select unique regions up to the configured limit. If the region `us-west-2` is made available and limit is set to two, it acceptable for the subscriber to receive the same content into `us-west-2` *twice*.",
6082 "type": "object",
6083 "required": ["limit", "available"],
6084 "properties": {
6085 "limit": {
6086 "description": "Upper limit on the number of regions the subscriber is permitted to receive media in.",
6087 "type": "integer",
6088 "minimum": 0
6089 },
6090 "available": {
6091 "description": "Enumeration of regions the subscriber is permitted to receive media in. These must be valid AWS region identifiers or a special `MATCH_SOURCE` which will make the output available in the same region as the source that is routed into it.",
6092 "type": "array",
6093 "uniqueItems": true,
6094 "items": {
6095 "anyOf": [
6096 {
6097 "$ref": "#/components/schemas/AWSRegion"
6098 },
6099 {
6100 "description": "Use the same region as the source currently routed into the output.",
6101 "type": "string",
6102 "enum": ["MATCH_SOURCE"]
6103 }
6104 ]
6105 }
6106 }
6107 }
6108 },
6109 "events": {
6110 "description": "Which events to route into the output expressed as a selector. A selector can be either the value of an event key metadata or an event value metadata. It needs to match strictly with either of one. If empty, then all active events are taken as candidates for routing into the output. See `source` selector. Also note that the subscriber may further refine the set of events with their own, similar selector.",
6111 "type": "string"
6112 },
6113 "sources": {
6114 "type": "string",
6115 "description": "Which sources to route into the output expressed as a selector. A selector can be either the value of an event key metadata or an event value metadata. It needs to match strictly with either of one. Restricts the set of sources as yielded by the active event selector down to, ideally, a single source. Only the sources for events that were previously matched are considered. If the combination of selectors would result in more than one source being routed into the output then *no sources are routed to the output*. Also note that the subscriber may further refine the set of sources with their own, similar selector."
6116 },
6117 "selection": {
6118 "description": "Link to the subscriber's side of the output; including their content selection and regionally configuration.",
6119 "type": "string"
6120 },
6121 "source": {
6122 "description": "Link to the source that is currently routed into the output, if any.",
6123 "type": "string",
6124 "nullable": true
6125 }
6126 }
6127 }
6128 ],
6129 "example": {
6130 "enabled": false,
6131 "type": "Entitlement",
6132 "entitlement": {
6133 "subscriber-pays": 80
6134 },
6135 "regions": {
6136 "limit": 2,
6137 "available": ["MATCH_SOURCE", "eu-north-1", "ap-southeast-1"]
6138 },
6139 "events": "session = race OR session = qualifying",
6140 "sources": "camera = onboard",
6141 "selection": "/api/connect/v1/organisation/.../target-account/.../outputs/selections/...",
6142 "source": "/api/connect/v1/organisation/.../target-account/.../sources/..."
6143 }
6144 },
6145 "OutputOfferResponse": {
6146 "allOf": [
6147 {
6148 "$ref": "#/components/schemas/OutputOfferRequest"
6149 },
6150 {
6151 "$ref": "#/components/schemas/BaseResponse"
6152 }
6153 ],
6154 "example": {
6155 "enabled": false,
6156 "type": "Entitlement",
6157 "entitlement": {
6158 "subscriber-pays": 80
6159 },
6160 "regions": {
6161 "limit": 2,
6162 "available": ["MATCH_SOURCE", "eu-north-1", "ap-southeast-1"]
6163 },
6164 "events": "session = race OR session = qualifying",
6165 "sources": "camera = onboard",
6166 "selection": "/api/connect/v1/organisation/.../target-account/.../outputs/selections/...",
6167 "source": "/api/connect/v1/organisation/.../target-account/.../sources/..."
6168 }
6169 },
6170 "OutputSelectionRequest": {
6171 "allOf": [
6172 {
6173 "$ref": "#/components/schemas/BaseRequest"
6174 },
6175 {
6176 "type": "object",
6177 "required": ["events", "sources", "entitlement"],
6178 "properties": {
6179 "events": {
6180 "description": "Which events to route into the output. Events which exhibit label keys or values which match this selector will be candidates for routing into the output. Subject to further refinement by the `sources` selector.",
6181 "type": "string"
6182 },
6183 "sources": {
6184 "description": "Which sources to route into the output. Sources which exhibit label keys or values which match this selector will be routed into the output. Only sources for events matches by the `events` selector will be considered for routing.",
6185 "type": "string"
6186 },
6187 "entitlement": {
6188 "description": "Enumeration of by-region configurations for the AWS MediaConnect entitlment output type. A region must ne enabled before it has any effect. Regions needn't be unique in the list.",
6189 "type": "array",
6190 "items": {
6191 "type": "object",
6192 "properties": {
6193 "region": {
6194 "description": "Region for which the configuration applies. If this does not match one of the regions available in the distributor's corresponding offering it will not be possible to enable it.",
6195 "anyOf": [
6196 {
6197 "$ref": "#/components/schemas/AWSRegion"
6198 },
6199 {
6200 "description": "Use the same region as the source currently routed into the output.",
6201 "type": "string",
6202 "enum": ["MATCH_SOURCE"]
6203 }
6204 ]
6205 },
6206 "enabled": {
6207 "description": "Whether the configuration is enabled, making media routed into the output available in the given region. If enabling the configuration would exceed the limit set by the distributor's offer or an attempt is made to enable a region that is not permitted by the distributor's offer, then the request will be rejected.",
6208 "type": "boolean"
6209 },
6210 "account": {
6211 "description": "AWS account ID to grant an AWS MediaConnect entitlement for.",
6212 "type": "string"
6213 },
6214 "name": {
6215 "description": "Name of the AWS MediaConnect entitlement as it will appear in the entitled AWS account.",
6216 "type": "string"
6217 }
6218 }
6219 }
6220 }
6221 }
6222 }
6223 ],
6224 "example": {
6225 "entitlement": [
6226 {
6227 "region": "eu-north-1",
6228 "enabled": true,
6229 "account": "1234567890",
6230 "name": "aphid-romeo-obc"
6231 }
6232 ],
6233 "events": "session = race",
6234 "sources": "camera = onboard AND team = aphid-romeo"
6235 }
6236 },
6237 "OutputSelectionResponse": {
6238 "allOf": [
6239 {
6240 "$ref": "#/components/schemas/OutputSelectionRequest"
6241 },
6242 {
6243 "$ref": "#/components/schemas/BaseResponse"
6244 },
6245 {
6246 "type": "object",
6247 "required": ["type", "offer", "source"],
6248 "properties": {
6249 "type": {
6250 "type": "string",
6251 "enum": ["Entitlement"]
6252 },
6253 "offer": {
6254 "description": "Link to the distributor's side of the output; including their content offer, configuration and available regions.",
6255 "type": "string"
6256 },
6257 "source": {
6258 "description": "Link to the source that is currently routed into the output, if any.",
6259 "type": "string",
6260 "nullable": true
6261 }
6262 }
6263 }
6264 ],
6265 "example": {
6266 "type": "Entitlement",
6267 "entitlement": [
6268 {
6269 "region": "eu-north-1",
6270 "enabled": true,
6271 "account": "1234567890",
6272 "name": "aphid-romeo-obc"
6273 }
6274 ],
6275 "events": "session = race",
6276 "sources": "camera = onboard AND formula1.com:team = aphid-romeo",
6277 "output": "/api/connect/v1/organisation/.../target-account/.../outputs/offers/...",
6278 "source": "/api/connect/v1/organisation/.../target-account/.../sources/..."
6279 }
6280 },
6281 "EventRequest": {
6282 "allOf": [
6283 {
6284 "$ref": "#/components/schemas/BaseRequest"
6285 },
6286 {
6287 "type": "object",
6288 "required": [
6289 "resource-ids",
6290 "start-time",
6291 "end-time",
6292 "on-air-start-time",
6293 "on-air-end-time"
6294 ],
6295 "properties": {
6296 "start-time": {
6297 "type": "string",
6298 "format": "date-time",
6299 "description": "The time at which all streaming processes should begin. This must not be after the scheduled on-air-start-time of an event. This might be used, for example, to send bars and tone to check the readiness of the system."
6300 },
6301 "end-time": {
6302 "type": "string",
6303 "format": "date-time",
6304 "description": "The time at which all streaming processes should end. This cannot be before the scheduled on-air-end-time of an event has passed."
6305 },
6306 "on-air-start-time": {
6307 "type": "string",
6308 "format": "date-time",
6309 "description": "The on-air-start-time and on-air-end-time allow a client of the API to define an arbitrary time window within the event's start-time and end-time. This window might be used by the client, for example, to distinguish between the line up and show time. The on-air-start-time must not precede the events start-time."
6310 },
6311 "on-air-end-time": {
6312 "type": "string",
6313 "format": "date-time",
6314 "description": "The on-air-start-time and on-air-end-time allow a client of the API to define an arbitrary time window within the event's start-time and end-time. This window might be used by the client, for example, to distinguish between the line up and show time. The on-air-end-time must not follow the events end-time."
6315 },
6316 "resource-ids": {
6317 "type": "array",
6318 "items": {
6319 "type": "string",
6320 "format": "uuid"
6321 },
6322 "description": "Valid ids of some resources which need to be operated on eg a load of sources"
6323 }
6324 }
6325 }
6326 ],
6327 "example": {
6328 "on-air-start-time": "2019-12-19T11:15:05+00:00",
6329 "on-air-end-time": "2019-12-19T12:15:05+00:00",
6330 "start-time": "2019-12-19T10:45:05+00:00",
6331 "end-time": "2019-12-19T12:25:05+00:00",
6332 "resource-ids": [
6333 "13c19c8e-09f3-4e55-a856-8728e4001223",
6334 "81699d24-6870-4e7f-b8d6-39ac3d95692e"
6335 ]
6336 }
6337 },
6338 "EventResponse": {
6339 "allOf": [
6340 {
6341 "$ref": "#/components/schemas/EventRequest"
6342 },
6343 {
6344 "$ref": "#/components/schemas/BaseResponse"
6345 }
6346 ]
6347 }
6348 },
6349 "parameters": {
6350 "organisation-id": {
6351 "name": "organisation-id",
6352 "description": "The id of the Organisation",
6353 "in": "path",
6354 "required": true,
6355 "schema": {
6356 "type": "string",
6357 "format": "uuid"
6358 }
6359 },
6360 "target-account-id": {
6361 "name": "target-account-id",
6362 "description": "The id of the Target Account",
6363 "in": "path",
6364 "required": true,
6365 "schema": {
6366 "type": "string",
6367 "format": "uuid"
6368 }
6369 },
6370 "event-id": {
6371 "name": "event-id",
6372 "description": "The id of the Event",
6373 "in": "path",
6374 "required": true,
6375 "schema": {
6376 "type": "string",
6377 "format": "uuid"
6378 }
6379 },
6380 "source-id": {
6381 "name": "source-id",
6382 "description": "The id of the Source",
6383 "in": "path",
6384 "required": true,
6385 "schema": {
6386 "type": "string",
6387 "format": "uuid"
6388 }
6389 },
6390 "subscription-id": {
6391 "name": "subscription-id",
6392 "description": "The id of the Subscription",
6393 "in": "path",
6394 "required": true,
6395 "schema": {
6396 "type": "string",
6397 "format": "uuid"
6398 }
6399 },
6400 "offer-id": {
6401 "name": "offer-id",
6402 "description": "The ID of the distributor's output offer.",
6403 "in": "path",
6404 "required": true,
6405 "schema": {
6406 "type": "string",
6407 "format": "uuid"
6408 }
6409 },
6410 "selection-id": {
6411 "name": "selection-id",
6412 "description": "The ID of the distributor's output offer.",
6413 "in": "path",
6414 "required": true,
6415 "schema": {
6416 "type": "string",
6417 "format": "uuid"
6418 }
6419 },
6420 "if-match-header": {
6421 "name": "If-Match",
6422 "in": "header",
6423 "schema": {
6424 "type": "string",
6425 "format": "uuid"
6426 }
6427 },
6428 "start-time-query": {
6429 "name": "start-time",
6430 "description": "The earliest time in the desired time series. If not provided, a sensible default is selected.",
6431 "required": false,
6432 "in": "query",
6433 "schema": {
6434 "type": "string",
6435 "format": "date-time"
6436 }
6437 },
6438 "end-time-query": {
6439 "name": "end-time",
6440 "description": "The latest time in the desired time series. If not provided, the current time is used",
6441 "required": false,
6442 "in": "query",
6443 "schema": {
6444 "type": "string",
6445 "format": "date-time"
6446 }
6447 },
6448 "desired-metrics-query": {
6449 "name": "desired",
6450 "description": "A comma-seperated list of keys for desired metrics. Unknown keys are ignored.",
6451 "required": false,
6452 "in": "query",
6453 "schema": {
6454 "type": "string"
6455 }
6456 }
6457 },
6458 "headers": {
6459 "etag": {
6460 "description": "A unique identifier for a specific version of the resource",
6461 "required": true,
6462 "schema": {
6463 "type": "string",
6464 "format": "uuid"
6465 }
6466 },
6467 "location": {
6468 "description": "The URL of the newly created resource",
6469 "required": true,
6470 "schema": {
6471 "type": "string",
6472 "format": "uri"
6473 }
6474 }
6475 },
6476 "responses": {
6477 "Deleted": {
6478 "description": "The resource was deleted successfully"
6479 },
6480 "BadRequest": {
6481 "description": "Bad Request"
6482 },
6483 "NotFound": {
6484 "description": "A resource with the specified ID was not found"
6485 },
6486 "Forbidden": {
6487 "description": "Forbidden"
6488 },
6489 "PreconditionFailed": {
6490 "description": "Precondition Failed"
6491 }
6492 }
6493 }
6494}
6495