/
index.ts
2272 lines (2005 loc) · 103 KB
/
index.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
/*
* Copyright (c) Microsoft Corporation.
* Licensed under the MIT License.
*
* Code generated by Microsoft (R) AutoRest Code Generator.
* Changes may cause incorrect behavior and will be lost if the code is regenerated.
*/
import * as coreClient from "@azure/core-client";
export type NodeBaseUnion =
| NodeBase
| SourceNodeBaseUnion
| ProcessorNodeBaseUnion
| SinkNodeBaseUnion;
export type AuthenticationBaseUnion = AuthenticationBase | JwtAuthentication;
export type EndpointBaseUnion = EndpointBase | UnsecuredEndpoint | TlsEndpoint;
export type CredentialsBaseUnion =
| CredentialsBase
| UsernamePasswordCredentials;
export type TunnelBaseUnion = TunnelBase | SecureIotDeviceRemoteTunnel;
export type CertificateSourceUnion = CertificateSource | PemCertificateList;
export type TimeSequenceBaseUnion =
| TimeSequenceBase
| VideoSequenceAbsoluteTimeMarkers;
export type EncoderPresetBaseUnion =
| EncoderPresetBase
| EncoderSystemPreset
| EncoderCustomPreset;
export type AudioEncoderBaseUnion = AudioEncoderBase | AudioEncoderAac;
export type VideoEncoderBaseUnion = VideoEncoderBase | VideoEncoderH264;
export type TokenKeyUnion = TokenKey | RsaTokenKey | EccTokenKey;
export type SourceNodeBaseUnion = SourceNodeBase | RtspSource | VideoSource;
export type ProcessorNodeBaseUnion = ProcessorNodeBase | EncoderProcessor;
export type SinkNodeBaseUnion = SinkNodeBase | VideoSink;
/** A collection of EdgeModuleEntity items. */
export interface EdgeModuleEntityCollection {
/** A collection of EdgeModuleEntity items. */
value?: EdgeModuleEntity[];
/** A link to the next page of the collection (when the collection contains too many results to return in one response). */
nextLink?: string;
}
/** Common fields that are returned in the response for all Azure Resource Manager resources */
export interface Resource {
/**
* Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
* NOTE: This property will not be serialized. It can only be populated by the server.
*/
readonly id?: string;
/**
* The name of the resource
* NOTE: This property will not be serialized. It can only be populated by the server.
*/
readonly name?: string;
/**
* The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
* NOTE: This property will not be serialized. It can only be populated by the server.
*/
readonly type?: string;
/**
* Azure Resource Manager metadata containing createdBy and modifiedBy information.
* NOTE: This property will not be serialized. It can only be populated by the server.
*/
readonly systemData?: SystemData;
}
/** Metadata pertaining to creation and last modification of the resource. */
export interface SystemData {
/** The identity that created the resource. */
createdBy?: string;
/** The type of identity that created the resource. */
createdByType?: CreatedByType;
/** The timestamp of resource creation (UTC). */
createdAt?: Date;
/** The identity that last modified the resource. */
lastModifiedBy?: string;
/** The type of identity that last modified the resource. */
lastModifiedByType?: CreatedByType;
/** The timestamp of resource last modification (UTC) */
lastModifiedAt?: Date;
}
/** Common error response for all Azure Resource Manager APIs to return error details for failed operations. (This also follows the OData error response format.). */
export interface ErrorResponse {
/** The error object. */
error?: ErrorDetail;
}
/** The error detail. */
export interface ErrorDetail {
/**
* The error code.
* NOTE: This property will not be serialized. It can only be populated by the server.
*/
readonly code?: string;
/**
* The error message.
* NOTE: This property will not be serialized. It can only be populated by the server.
*/
readonly message?: string;
/**
* The error target.
* NOTE: This property will not be serialized. It can only be populated by the server.
*/
readonly target?: string;
/**
* The error details.
* NOTE: This property will not be serialized. It can only be populated by the server.
*/
readonly details?: ErrorDetail[];
/**
* The error additional info.
* NOTE: This property will not be serialized. It can only be populated by the server.
*/
readonly additionalInfo?: ErrorAdditionalInfo[];
}
/** The resource management error additional info. */
export interface ErrorAdditionalInfo {
/**
* The additional info type.
* NOTE: This property will not be serialized. It can only be populated by the server.
*/
readonly type?: string;
/**
* The additional info.
* NOTE: This property will not be serialized. It can only be populated by the server.
*/
readonly info?: Record<string, unknown>;
}
/** The input parameters to generate registration token for the Azure Video Analyzer IoT edge module. */
export interface ListProvisioningTokenInput {
/** The desired expiration date of the registration token. The Azure Video Analyzer IoT edge module must be initialized and connected to the Internet prior to the token expiration date. */
expirationDate: Date;
}
/** Provisioning token properties. A provisioning token allows for a single instance of Azure Video analyzer IoT edge module to be initialized and authorized to the cloud account. The provisioning token itself is short lived and it is only used for the initial handshake between IoT edge module and the cloud. After the initial handshake, the IoT edge module will agree on a set of authentication keys which will be auto-rotated as long as the module is able to periodically connect to the cloud. A new provisioning token can be generated for the same IoT edge module in case the module state lost or reset. */
export interface EdgeModuleProvisioningToken {
/**
* The expiration date of the registration token. The Azure Video Analyzer IoT edge module must be initialized and connected to the Internet prior to the token expiration date.
* NOTE: This property will not be serialized. It can only be populated by the server.
*/
readonly expirationDate?: Date;
/**
* The token blob to be provided to the Azure Video Analyzer IoT edge module through the Azure IoT Edge module twin properties.
* NOTE: This property will not be serialized. It can only be populated by the server.
*/
readonly token?: string;
}
/** A collection of PipelineTopology items. */
export interface PipelineTopologyCollection {
/** A collection of PipelineTopology items. */
value?: PipelineTopology[];
/** A link to the next page of the collection (when the collection contains too many results to return in one response). */
nextLink?: string;
}
/** Single topology parameter declaration. Declared parameters can and must be referenced throughout the topology and can optionally have default values to be used when they are not defined in the pipelines. */
export interface ParameterDeclaration {
/** Name of the parameter. */
name: string;
/** Type of the parameter. */
type: ParameterType;
/** Description of the parameter. */
description?: string;
/** The default value for the parameter to be used if the pipeline does not specify a value. */
default?: string;
}
/** Base class for nodes. */
export interface NodeBase {
/** Polymorphic discriminator, which specifies the different types this object can be */
type:
| "#Microsoft.VideoAnalyzer.SourceNodeBase"
| "#Microsoft.VideoAnalyzer.ProcessorNodeBase"
| "#Microsoft.VideoAnalyzer.SinkNodeBase"
| "#Microsoft.VideoAnalyzer.RtspSource"
| "#Microsoft.VideoAnalyzer.VideoSource"
| "#Microsoft.VideoAnalyzer.EncoderProcessor"
| "#Microsoft.VideoAnalyzer.VideoSink";
/** Node name. Must be unique within the topology. */
name: string;
}
/** Describes an input signal to be used on a pipeline node. */
export interface NodeInput {
/** The name of the upstream node in the pipeline which output is used as input of the current node. */
nodeName: string;
}
/** The SKU details. */
export interface Sku {
/** The SKU name. */
name: SkuName;
/**
* The SKU tier.
* NOTE: This property will not be serialized. It can only be populated by the server.
*/
readonly tier?: SkuTier;
}
/** A collection of LivePipeline items. */
export interface LivePipelineCollection {
/** A collection of LivePipeline items. */
value?: LivePipeline[];
/** A link to the next page of the collection (when the collection contains too many results to return in one response). */
nextLink?: string;
}
/** Defines the parameter value of an specific pipeline topology parameter. See pipeline topology parameters for more information. */
export interface ParameterDefinition {
/** Name of the parameter declared in the pipeline topology. */
name: string;
/** Parameter value to be applied on this specific pipeline. */
value?: string;
}
/** A collection of PipelineJob items. */
export interface PipelineJobCollection {
/** A collection of PipelineJob items. */
value?: PipelineJob[];
/** A link to the next page of the collection (when the collection contains too many results to return in one response). */
nextLink?: string;
}
/** Details about the error for a failed pipeline job. */
export interface PipelineJobError {
/** The error code. */
code?: string;
/** The error message. */
message?: string;
}
/** Used for tracking the status of an operation on the live pipeline. */
export interface LivePipelineOperationStatus {
/**
* The name of the live pipeline operation.
* NOTE: This property will not be serialized. It can only be populated by the server.
*/
readonly name?: string;
/**
* The status of the live pipeline operation.
* NOTE: This property will not be serialized. It can only be populated by the server.
*/
readonly status?: string;
/**
* The error details for the live pipeline operation.
* NOTE: This property will not be serialized. It can only be populated by the server.
*/
readonly error?: ErrorDetail;
}
/** Used for tracking the status of an operation on the pipeline job. */
export interface PipelineJobOperationStatus {
/**
* The name of the pipeline job operation.
* NOTE: This property will not be serialized. It can only be populated by the server.
*/
readonly name?: string;
/**
* The status of the pipeline job operation.
* NOTE: This property will not be serialized. It can only be populated by the server.
*/
readonly status?: string;
/**
* The error details for the pipeline job operation.
* NOTE: This property will not be serialized. It can only be populated by the server.
*/
readonly error?: ErrorDetail;
}
/** A collection of Operation items. */
export interface OperationCollection {
/** A collection of Operation items. */
value?: Operation[];
}
/** An operation. */
export interface Operation {
/** The operation name. */
name: string;
/** The operation display name. */
display?: OperationDisplay;
/** Origin of the operation. */
origin?: string;
/** Operation properties format. */
properties?: Properties;
/** Whether the operation applies to data-plane. */
isDataAction?: boolean;
/** Indicates the action type. */
actionType?: ActionType;
}
/** Operation details. */
export interface OperationDisplay {
/** The service provider. */
provider?: string;
/** Resource on which the operation is performed. */
resource?: string;
/** The operation type. */
operation?: string;
/** The operation description. */
description?: string;
}
/** Metric properties. */
export interface Properties {
/**
* The service specifications.
* NOTE: This property will not be serialized. It can only be populated by the server.
*/
readonly serviceSpecification?: ServiceSpecification;
}
/** The service metric specifications. */
export interface ServiceSpecification {
/**
* List of log specifications.
* NOTE: This property will not be serialized. It can only be populated by the server.
*/
readonly logSpecifications?: LogSpecification[];
/**
* List of metric specifications.
* NOTE: This property will not be serialized. It can only be populated by the server.
*/
readonly metricSpecifications?: MetricSpecification[];
}
/** A diagnostic log emitted by service. */
export interface LogSpecification {
/**
* The diagnostic log category name.
* NOTE: This property will not be serialized. It can only be populated by the server.
*/
readonly name?: string;
/**
* The diagnostic log category display name.
* NOTE: This property will not be serialized. It can only be populated by the server.
*/
readonly displayName?: string;
/**
* The time range for requests in each blob.
* NOTE: This property will not be serialized. It can only be populated by the server.
*/
readonly blobDuration?: string;
}
/** A metric emitted by service. */
export interface MetricSpecification {
/**
* The metric name.
* NOTE: This property will not be serialized. It can only be populated by the server.
*/
readonly name?: string;
/**
* The metric display name.
* NOTE: This property will not be serialized. It can only be populated by the server.
*/
readonly displayName?: string;
/**
* The metric display description.
* NOTE: This property will not be serialized. It can only be populated by the server.
*/
readonly displayDescription?: string;
/**
* The metric unit
* NOTE: This property will not be serialized. It can only be populated by the server.
*/
readonly unit?: MetricUnit;
/**
* The metric aggregation type
* NOTE: This property will not be serialized. It can only be populated by the server.
*/
readonly aggregationType?: MetricAggregationType;
/**
* The metric lock aggregation type
* NOTE: This property will not be serialized. It can only be populated by the server.
*/
readonly lockAggregationType?: MetricAggregationType;
/** Supported aggregation types. */
supportedAggregationTypes?: string[];
/**
* The metric dimensions.
* NOTE: This property will not be serialized. It can only be populated by the server.
*/
readonly dimensions?: MetricDimension[];
/**
* Indicates whether regional MDM account is enabled.
* NOTE: This property will not be serialized. It can only be populated by the server.
*/
readonly enableRegionalMdmAccount?: boolean;
/**
* The source MDM account.
* NOTE: This property will not be serialized. It can only be populated by the server.
*/
readonly sourceMdmAccount?: string;
/**
* The source MDM namespace.
* NOTE: This property will not be serialized. It can only be populated by the server.
*/
readonly sourceMdmNamespace?: string;
/**
* The supported time grain types.
* NOTE: This property will not be serialized. It can only be populated by the server.
*/
readonly supportedTimeGrainTypes?: string[];
}
/** A metric dimension. */
export interface MetricDimension {
/**
* The metric dimension name.
* NOTE: This property will not be serialized. It can only be populated by the server.
*/
readonly name?: string;
/**
* The display name for the dimension.
* NOTE: This property will not be serialized. It can only be populated by the server.
*/
readonly displayName?: string;
/**
* Whether to export metric to shoebox.
* NOTE: This property will not be serialized. It can only be populated by the server.
*/
readonly toBeExportedForShoebox?: boolean;
}
/** A collection of VideoAnalyzer items. */
export interface VideoAnalyzerCollection {
/** A collection of VideoAnalyzer items. */
value?: VideoAnalyzer[];
}
/** The details about the associated storage account. */
export interface StorageAccount {
/** The ID of the storage account resource. Video Analyzer relies on tables, queues, and blobs. The primary storage account must be a Standard Storage account (either Microsoft.ClassicStorage or Microsoft.Storage). */
id: string;
/** A managed identity that Video Analyzer will use to access the storage account. */
identity?: ResourceIdentity;
/**
* The current status of the storage account mapping.
* NOTE: This property will not be serialized. It can only be populated by the server.
*/
readonly status?: string;
}
/** The user assigned managed identity to use when accessing a resource. */
export interface ResourceIdentity {
/** The user assigned managed identity's resource identifier to use when accessing a resource. */
userAssignedIdentity: string;
}
/** The endpoint details. */
export interface Endpoint {
/** The URL of the endpoint. */
endpointUrl?: string;
/** The type of the endpoint. */
type: VideoAnalyzerEndpointType;
}
/** Defines how the Video Analyzer account is (optionally) encrypted. */
export interface AccountEncryption {
/** The type of key used to encrypt the Account Key. */
type: AccountEncryptionKeyType;
/** The properties of the key used to encrypt the account. */
keyVaultProperties?: KeyVaultProperties;
/** The Key Vault identity. */
identity?: ResourceIdentity;
/**
* The current status of the Key Vault mapping.
* NOTE: This property will not be serialized. It can only be populated by the server.
*/
readonly status?: string;
}
/** The details for accessing the encryption keys in Key Vault. */
export interface KeyVaultProperties {
/** The URL of the Key Vault key used to encrypt the account. The key may either be versioned (for example https://vault/keys/mykey/version1) or reference a key without a version (for example https://vault/keys/mykey). */
keyIdentifier: string;
/**
* The current key used to encrypt Video Analyzer account, including the key version.
* NOTE: This property will not be serialized. It can only be populated by the server.
*/
readonly currentKeyIdentifier?: string;
}
/** The IoT Hub details. */
export interface IotHub {
/** The IoT Hub resource identifier. */
id: string;
/** The IoT Hub identity. */
identity: ResourceIdentity;
/**
* The current status of the Iot Hub mapping.
* NOTE: This property will not be serialized. It can only be populated by the server.
*/
readonly status?: string;
}
/** Network access control for video analyzer account. */
export interface NetworkAccessControl {
/** Public network access for integration group. */
integration?: GroupLevelAccessControl;
/** Public network access for ingestion group. */
ingestion?: GroupLevelAccessControl;
/** Public network access for consumption group. */
consumption?: GroupLevelAccessControl;
}
/** Group level network access control. */
export interface GroupLevelAccessControl {
/** Whether or not public network access is allowed for specified resources under the Video Analyzer account. */
publicNetworkAccess?: PublicNetworkAccess;
}
/** The Private Endpoint resource. */
export interface PrivateEndpoint {
/**
* The ARM identifier for Private Endpoint
* NOTE: This property will not be serialized. It can only be populated by the server.
*/
readonly id?: string;
}
/** A collection of information about the state of the connection between service consumer and provider. */
export interface PrivateLinkServiceConnectionState {
/** Indicates whether the connection has been Approved/Rejected/Removed by the owner of the service. */
status?: PrivateEndpointServiceConnectionStatus;
/** The reason for approval/rejection of the connection. */
description?: string;
/** A message indicating if changes on the service provider require any updates on the consumer. */
actionsRequired?: string;
}
/** The managed identity for the Video Analyzer resource. */
export interface VideoAnalyzerIdentity {
/** The identity type. */
type: string;
/** The User Assigned Managed Identities. */
userAssignedIdentities?: {
[propertyName: string]: UserAssignedManagedIdentity;
};
}
/** The details of the user assigned managed identity used by the Video Analyzer resource. */
export interface UserAssignedManagedIdentity {
/**
* The client ID.
* NOTE: This property will not be serialized. It can only be populated by the server.
*/
readonly clientId?: string;
/**
* The principal ID.
* NOTE: This property will not be serialized. It can only be populated by the server.
*/
readonly principalId?: string;
}
/** The update operation for a Video Analyzer account. */
export interface VideoAnalyzerUpdate {
/** Resource tags. */
tags?: { [propertyName: string]: string };
/** The identities associated to the Video Analyzer resource. */
identity?: VideoAnalyzerIdentity;
/** The storage accounts for this resource. */
storageAccounts?: StorageAccount[];
/**
* The endpoints associated with this resource.
* NOTE: This property will not be serialized. It can only be populated by the server.
*/
readonly endpoints?: Endpoint[];
/** The account encryption properties. */
encryption?: AccountEncryption;
/** The IoT Hubs for this resource. */
iotHubs?: IotHub[];
/** Whether or not public network access is allowed for resources under the Video Analyzer account. */
publicNetworkAccess?: PublicNetworkAccess;
/** Network access control for Video Analyzer. */
networkAccessControl?: NetworkAccessControl;
/**
* Provisioning state of the Video Analyzer account.
* NOTE: This property will not be serialized. It can only be populated by the server.
*/
readonly provisioningState?: ProvisioningState;
/**
* Private Endpoint Connections created under Video Analyzer account.
* NOTE: This property will not be serialized. It can only be populated by the server.
*/
readonly privateEndpointConnections?: PrivateEndpointConnection[];
}
/** A list of private link resources */
export interface PrivateLinkResourceListResult {
/** Array of private link resources */
value?: PrivateLinkResource[];
}
/** List of private endpoint connection associated with the specified storage account */
export interface PrivateEndpointConnectionListResult {
/** Array of private endpoint connections */
value?: PrivateEndpointConnection[];
}
/** Status of private endpoint connection operation. */
export interface VideoAnalyzerPrivateEndpointConnectionOperationStatus {
/** Operation identifier. */
name: string;
/** Operation resource ID. */
id?: string;
/** Operation start time. */
startTime?: string;
/** Operation end time. */
endTime?: string;
/** Operation status. */
status?: string;
/** The error detail. */
error?: ErrorDetail;
}
/** Status of video analyzer operation. */
export interface VideoAnalyzerOperationStatus {
/** Operation identifier. */
name: string;
/** Operation resource ID. */
id?: string;
/** Operation start time. */
startTime?: string;
/** Operation end time. */
endTime?: string;
/** Operation status. */
status?: string;
/** The error detail. */
error?: ErrorDetail;
}
/** The check availability request body. */
export interface CheckNameAvailabilityRequest {
/** The name of the resource for which availability needs to be checked. */
name?: string;
/** The resource type. */
type?: string;
}
/** The check availability result. */
export interface CheckNameAvailabilityResponse {
/** Indicates if the resource name is available. */
nameAvailable?: boolean;
/** The reason why the given name is not available. */
reason?: CheckNameAvailabilityReason;
/** Detailed reason why the given name is available. */
message?: string;
}
/** A collection of VideoEntity items. */
export interface VideoEntityCollection {
/** A collection of VideoEntity items. */
value?: VideoEntity[];
/** A link to the next page of the collection (when the collection contains too many results to return in one response). */
nextLink?: string;
}
/** Video flags contain information about the available video actions and its dynamic properties based on the current video state. */
export interface VideoFlags {
/** Value indicating whether or not the video can be streamed. Only "archive" type videos can be streamed. */
canStream: boolean;
/** Value indicating whether or not there has ever been data recorded or uploaded into the video. Newly created videos have this value set to false. */
hasData: boolean;
/** Value indicating whether or not the video is currently being referenced be an active pipeline. The fact that is being referenced, doesn't necessarily indicate that data is being received. For example, video recording may be gated on events or camera may not be accessible at the time. */
isInUse: boolean;
}
/** Set of URLs to the video content. */
export interface VideoContentUrls {
/** Video file download URL. This URL can be used in conjunction with the video content authorization token to download the video MP4 file. The resulting MP4 file can be played on any standard media player. It is available when the video type is 'file' and video file is available for consumption. */
downloadUrl?: string;
/**
* Video archive streaming base URL. The archived content can be automatically played by the Azure Video Analyzer player widget. Alternatively, this URL can be used in conjunction with the video content authorization token on any compatible DASH or HLS players by appending the following to the base URL:
*
* - HLSv4: /manifest(format=m3u8-aapl).m3u8
* - HLS CMAF: /manifest(format=m3u8-cmaf)
* - DASH CMAF: /manifest(format=mpd-time-cmaf)
*
* Moreover, an ongoing video recording can be played in "live mode" with latencies which are approximately double of the chosen video segment length. It is available when the video type is 'archive' and video archiving is enabled.
*/
archiveBaseUrl?: string;
/** Video low-latency streaming URL. The live content can be automatically played by the Azure Video Analyzer player widget. Alternatively, this URL can be used in conjunction with the video content authorization token to expose a WebSocket tunneled RTSP stream. It is available when the video type is 'archive' and a live, low-latency feed is available from the source. */
rtspTunnelUrl?: string;
/** Video preview image URLs. These URLs can be used in conjunction with the video content authorization token to download the most recent still image from the video archive in different resolutions. They are available when the video type is 'archive' and preview images are enabled. */
previewImageUrls?: VideoPreviewImageUrls;
}
/** Video preview image URLs. These URLs can be used in conjunction with the video content authorization token to download the most recent still image from the video archive in different resolutions. They are available when the video type is 'archive' and preview images are enabled. */
export interface VideoPreviewImageUrls {
/** Low resolution preview image URL. */
small?: string;
/** Medium resolution preview image URL. */
medium?: string;
/** High resolution preview image URL. */
large?: string;
}
/** Contains information about the video and audio content. */
export interface VideoMediaInfo {
/** Video segment length indicates the length of individual video files (segments) which are persisted to storage. Smaller segments provide lower archive playback latency but generate larger volume of storage transactions. Larger segments reduce the amount of storage transactions while increasing the archive playback latency. Value must be specified in ISO8601 duration format (i.e. "PT30S" equals 30 seconds) and can vary between 30 seconds to 5 minutes, in 30 seconds increments. */
segmentLength?: string;
}
/** Video archival properties. */
export interface VideoArchival {
/** Video retention period indicates the maximum age of the video archive segments which are intended to be kept in storage. It must be provided in the ISO8601 duration format in the granularity of days, up to a maximum of 10 years. For example, if this is set to P30D (30 days), content older than 30 days will be periodically deleted. This value can be updated at any time and the new desired retention period will be effective within 24 hours. */
retentionPeriod?: string;
}
/** "Video content token grants access to the video content URLs." */
export interface VideoContentToken {
/**
* The content token expiration date in ISO8601 format (eg. 2021-01-01T00:00:00Z).
* NOTE: This property will not be serialized. It can only be populated by the server.
*/
readonly expirationDate?: Date;
/**
* The content token value to be added to the video content URL as the value for the "token" query string parameter. The token is specific to a single video.
* NOTE: This property will not be serialized. It can only be populated by the server.
*/
readonly token?: string;
}
/** A collection of AccessPolicyEntity items. */
export interface AccessPolicyEntityCollection {
/** A collection of AccessPolicyEntity items. */
value?: AccessPolicyEntity[];
/** A link to the next page of the collection (when the collection contains too many results to return in one response). */
nextLink?: string;
}
/** Base class for access policies authentication methods. */
export interface AuthenticationBase {
/** Polymorphic discriminator, which specifies the different types this object can be */
type: "#Microsoft.VideoAnalyzer.JwtAuthentication";
}
/** Base class for endpoints. */
export interface EndpointBase {
/** Polymorphic discriminator, which specifies the different types this object can be */
type:
| "#Microsoft.VideoAnalyzer.UnsecuredEndpoint"
| "#Microsoft.VideoAnalyzer.TlsEndpoint";
/** Credentials to be presented to the endpoint. */
credentials: CredentialsBaseUnion;
/** The endpoint URL for Video Analyzer to connect to. */
url: string;
/** Describes the tunnel through which Video Analyzer can connect to the endpoint URL. This is an optional property, typically used when the endpoint is behind a firewall. */
tunnel?: TunnelBaseUnion;
}
/** Base class for credential objects. */
export interface CredentialsBase {
/** Polymorphic discriminator, which specifies the different types this object can be */
type: "#Microsoft.VideoAnalyzer.UsernamePasswordCredentials";
}
/** Base class for tunnel objects. */
export interface TunnelBase {
/** Polymorphic discriminator, which specifies the different types this object can be */
type: "#Microsoft.VideoAnalyzer.SecureIotDeviceRemoteTunnel";
}
/** Base class for certificate sources. */
export interface CertificateSource {
/** Polymorphic discriminator, which specifies the different types this object can be */
type: "#Microsoft.VideoAnalyzer.PemCertificateList";
}
/** Options for controlling the validation of TLS endpoints. */
export interface TlsValidationOptions {
/** When set to 'true' causes the certificate subject name validation to be skipped. Default is 'false'. */
ignoreHostname?: string;
/** When set to 'true' causes the certificate chain trust validation to be skipped. Default is 'false'. */
ignoreSignature?: string;
}
/** A sequence of datetime ranges as a string. */
export interface TimeSequenceBase {
/** Polymorphic discriminator, which specifies the different types this object can be */
type: "#Microsoft.VideoAnalyzer.VideoSequenceAbsoluteTimeMarkers";
}
/** Base type for all encoder presets, which define the recipe or instructions on how the input content should be processed. */
export interface EncoderPresetBase {
/** Polymorphic discriminator, which specifies the different types this object can be */
type:
| "#Microsoft.VideoAnalyzer.EncoderSystemPreset"
| "#Microsoft.VideoAnalyzer.EncoderCustomPreset";
}
/** Base type for all audio encoder presets, which define the recipe or instructions on how audio should be processed. */
export interface AudioEncoderBase {
/** Polymorphic discriminator, which specifies the different types this object can be */
type: "#Microsoft.VideoAnalyzer.AudioEncoderAac";
/** Bitrate, in kilobits per second or Kbps, at which audio should be encoded (2-channel stereo audio at a sampling rate of 48 kHz). Allowed values are 96, 112, 128, 160, 192, 224, and 256. If omitted, the bitrate of the input audio is used. */
bitrateKbps?: string;
}
/** Base type for all video encoding presets, which define the recipe or instructions on how the input video should be processed. */
export interface VideoEncoderBase {
/** Polymorphic discriminator, which specifies the different types this object can be */
type: "#Microsoft.VideoAnalyzer.VideoEncoderH264";
/** The maximum bitrate, in kilobits per second or Kbps, at which video should be encoded. If omitted, encoder sets it automatically to try and match the quality of the input video. */
bitrateKbps?: string;
/** The frame rate (in frames per second) of the encoded video. The value must be greater than zero, and less than or equal to 300. If omitted, the encoder uses the average frame rate of the input video. */
frameRate?: string;
/** Describes the resolution of the encoded video. If omitted, the encoder uses the resolution of the input video. */
scale?: VideoScale;
}
/** The video scaling information. */
export interface VideoScale {
/** The desired output video height. */
height?: string;
/** The desired output video width. */
width?: string;
/** Describes the video scaling mode to be applied. Default mode is 'Pad'. If the mode is 'Pad' or 'Stretch' then both width and height must be specified. Else if the mode is 'PreserveAspectRatio' then only one of width or height need be provided. */
mode?: VideoScaleMode;
}
/** Optional properties to be used in case a new video resource needs to be created on the service. These will not take effect if the video already exists. */
export interface VideoCreationProperties {
/** Optional title provided by the user. Value can be up to 256 characters long. */
title?: string;
/** Optional description provided by the user. Value can be up to 2048 characters long. */
description?: string;
/** Segment length indicates the length of individual content files (segments) which are persisted to storage. Smaller segments provide lower archive playback latency but generate larger volume of storage transactions. Larger segments reduce the amount of storage transactions while increasing the archive playback latency. Value must be specified in ISO8601 duration format (i.e. "PT30S" equals 30 seconds) and can vary between 30 seconds to 5 minutes, in 30 seconds increments. Changing this value after the initial call to create the video resource can lead to errors when uploading content to the archive. Default value is 30 seconds. This property is only allowed for topologies where "kind" is set to "live". */
segmentLength?: string;
/** Video retention period indicates how long the video is kept in storage. Value must be specified in ISO8601 duration format (i.e. "P1D" equals 1 day) and can vary between 1 day to 10 years, in 1 day increments. When absent (null), all video content is retained indefinitely. This property is only allowed for topologies where "kind" is set to "live". */
retentionPeriod?: string;
}
/** Optional flags used to change how video is published. These are only allowed for topologies where "kind" is set to "live". */
export interface VideoPublishingOptions {
/** When set to 'true' content will not be archived or recorded. This is used, for example, when the topology is used only for low latency video streaming. Default is 'false'. If set to 'true', then "disableRtspPublishing" must be set to 'false'. */
disableArchive?: string;
/** When set to 'true' the RTSP playback URL will not be published, disabling low latency streaming. This is used, for example, when the topology is used only for archiving content. Default is 'false'. If set to 'true', then "disableArchive" must be set to 'false'. */
disableRtspPublishing?: string;
}
/** Properties for expected token claims. */
export interface TokenClaim {
/** Name of the claim which must be present on the token. */
name: string;
/** Expected value of the claim to be present on the token. */
value: string;
}
/** Key properties for JWT token validation. */
export interface TokenKey {
/** Polymorphic discriminator, which specifies the different types this object can be */
type:
| "#Microsoft.VideoAnalyzer.RsaTokenKey"
| "#Microsoft.VideoAnalyzer.EccTokenKey";
/** JWT token key id. Validation keys are looked up based on the key id present on the JWT token header. */
kid: string;
}
/** The resource model definition for a Azure Resource Manager proxy resource. It will not have tags and a location */
export type ProxyResource = Resource & {};
/** The Private Endpoint Connection resource. */
export type PrivateEndpointConnection = Resource & {
/** The resource of private end point. */
privateEndpoint?: PrivateEndpoint;
/** A collection of information about the state of the connection between service consumer and provider. */
privateLinkServiceConnectionState?: PrivateLinkServiceConnectionState;
/**
* The provisioning state of the private endpoint connection resource.
* NOTE: This property will not be serialized. It can only be populated by the server.
*/
readonly provisioningState?: PrivateEndpointConnectionProvisioningState;
};
/** The resource model definition for an Azure Resource Manager tracked top level resource which has 'tags' and a 'location' */
export type TrackedResource = Resource & {
/** Resource tags. */
tags?: { [propertyName: string]: string };
/** The geo-location where the resource lives */
location: string;
};
/** A private link resource */
export type PrivateLinkResource = Resource & {
/**
* The private link resource group id.
* NOTE: This property will not be serialized. It can only be populated by the server.
*/
readonly groupId?: string;
/**
* The private link resource required member names.
* NOTE: This property will not be serialized. It can only be populated by the server.
*/
readonly requiredMembers?: string[];
/** The private link resource Private link DNS zone name. */
requiredZoneNames?: string[];
};
/** Base class for topology source nodes. */
export type SourceNodeBase = NodeBase & {
/** Polymorphic discriminator, which specifies the different types this object can be */
type:
| "#Microsoft.VideoAnalyzer.SourceNodeBase"
| "#Microsoft.VideoAnalyzer.RtspSource"
| "#Microsoft.VideoAnalyzer.VideoSource";
};
/** Base class for topology processor nodes. */
export type ProcessorNodeBase = NodeBase & {
/** Polymorphic discriminator, which specifies the different types this object can be */
type:
| "#Microsoft.VideoAnalyzer.ProcessorNodeBase"
| "#Microsoft.VideoAnalyzer.EncoderProcessor";
/** An array of upstream node references within the topology to be used as inputs for this node. */
inputs: NodeInput[];
};
/** Base class for topology sink nodes. */
export type SinkNodeBase = NodeBase & {
/** Polymorphic discriminator, which specifies the different types this object can be */
type:
| "#Microsoft.VideoAnalyzer.SinkNodeBase"
| "#Microsoft.VideoAnalyzer.VideoSink";
/** An array of upstream node references within the topology to be used as inputs for this node. */
inputs: NodeInput[];
};
/** Properties for access validation based on JSON Web Tokens (JWT). */
export type JwtAuthentication = AuthenticationBase & {
/** Polymorphic discriminator, which specifies the different types this object can be */
type: "#Microsoft.VideoAnalyzer.JwtAuthentication";
/** List of expected token issuers. Token issuer is valid if it matches at least one of the given values. */
issuers?: string[];
/** List of expected token audiences. Token audience is valid if it matches at least one of the given values. */
audiences?: string[];
/** List of additional token claims to be validated. Token must contains all claims and respective values for it to be valid. */
claims?: TokenClaim[];
/** List of keys which can be used to validate access tokens. Having multiple keys allow for seamless key rotation of the token signing key. Token signature must match exactly one key. */
keys?: TokenKeyUnion[];
};
/** Unsecured endpoint describes an endpoint that the pipeline can connect to over clear transport (no encryption in transit). */
export type UnsecuredEndpoint = EndpointBase & {
/** Polymorphic discriminator, which specifies the different types this object can be */
type: "#Microsoft.VideoAnalyzer.UnsecuredEndpoint";
};
/** TLS endpoint describes an endpoint that the pipeline can connect to over TLS transport (data is encrypted in transit). */
export type TlsEndpoint = EndpointBase & {
/** Polymorphic discriminator, which specifies the different types this object can be */
type: "#Microsoft.VideoAnalyzer.TlsEndpoint";
/** List of trusted certificate authorities when authenticating a TLS connection. A null list designates that Azure Video Analyzer's list of trusted authorities should be used. */
trustedCertificates?: CertificateSourceUnion;
/** Validation options to use when authenticating a TLS connection. By default, strict validation is used. */
validationOptions?: TlsValidationOptions;
};
/** Username and password credentials. */
export type UsernamePasswordCredentials = CredentialsBase & {
/** Polymorphic discriminator, which specifies the different types this object can be */
type: "#Microsoft.VideoAnalyzer.UsernamePasswordCredentials";
/** Username to be presented as part of the credentials. */
username: string;
/** Password to be presented as part of the credentials. It is recommended that this value is parameterized as a secret string in order to prevent this value to be returned as part of the resource on API requests. */
password: string;
};
/** A remote tunnel securely established using IoT Hub device information. */
export type SecureIotDeviceRemoteTunnel = TunnelBase & {
/** Polymorphic discriminator, which specifies the different types this object can be */
type: "#Microsoft.VideoAnalyzer.SecureIotDeviceRemoteTunnel";
/** Name of the IoT Hub. */
iotHubName: string;
/** The IoT device id to use when establishing the remote tunnel. This string is case-sensitive. */
deviceId: string;
};
/** A list of PEM formatted certificates. */
export type PemCertificateList = CertificateSource & {
/** Polymorphic discriminator, which specifies the different types this object can be */
type: "#Microsoft.VideoAnalyzer.PemCertificateList";
/** PEM formatted public certificates. One certificate per entry. */
certificates: string[];
};
/** A sequence of absolute datetime ranges as a string. The datetime values should follow IS08601, and the sum of the ranges should add up to 24 hours or less. Currently, there can be only one range specified in the sequence. */
export type VideoSequenceAbsoluteTimeMarkers = TimeSequenceBase & {
/** Polymorphic discriminator, which specifies the different types this object can be */
type: "#Microsoft.VideoAnalyzer.VideoSequenceAbsoluteTimeMarkers";
/** The sequence of datetime ranges. Example: '[["2021-10-05T03:30:00Z", "2021-10-05T03:40:00Z"]]'. */
ranges: string;