Skip to content

Commit b3374d1

Browse files
author
awstools
committed
feat(client-ivs-realtime): IVS Real-Time now offers customers the ability to record individual stage participants to S3.
1 parent 52a0e8f commit b3374d1

File tree

8 files changed

+371
-14
lines changed

8 files changed

+371
-14
lines changed

clients/client-ivs-realtime/src/commands/CreateStageCommand.ts

+12
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,12 @@ export interface CreateStageCommandOutput extends CreateStageResponse, __Metadat
5252
* tags: { // Tags
5353
* "<keys>": "STRING_VALUE",
5454
* },
55+
* autoParticipantRecordingConfiguration: { // AutoParticipantRecordingConfiguration
56+
* storageConfigurationArn: "STRING_VALUE", // required
57+
* mediaTypes: [ // ParticipantRecordingMediaTypeList
58+
* "STRING_VALUE",
59+
* ],
60+
* },
5561
* };
5662
* const command = new CreateStageCommand(input);
5763
* const response = await client.send(command);
@@ -63,6 +69,12 @@ export interface CreateStageCommandOutput extends CreateStageResponse, __Metadat
6369
* // tags: { // Tags
6470
* // "<keys>": "STRING_VALUE",
6571
* // },
72+
* // autoParticipantRecordingConfiguration: { // AutoParticipantRecordingConfiguration
73+
* // storageConfigurationArn: "STRING_VALUE", // required
74+
* // mediaTypes: [ // ParticipantRecordingMediaTypeList
75+
* // "STRING_VALUE",
76+
* // ],
77+
* // },
6678
* // },
6779
* // participantTokens: [ // ParticipantTokenList
6880
* // { // ParticipantToken

clients/client-ivs-realtime/src/commands/GetParticipantCommand.ts

+3
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,9 @@ export interface GetParticipantCommandOutput extends GetParticipantResponse, __M
5858
* // browserName: "STRING_VALUE",
5959
* // browserVersion: "STRING_VALUE",
6060
* // sdkVersion: "STRING_VALUE",
61+
* // recordingS3BucketName: "STRING_VALUE",
62+
* // recordingS3Prefix: "STRING_VALUE",
63+
* // recordingState: "STRING_VALUE",
6164
* // },
6265
* // };
6366
*

clients/client-ivs-realtime/src/commands/GetStageCommand.ts

+6
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,12 @@ export interface GetStageCommandOutput extends GetStageResponse, __MetadataBeare
4848
* // tags: { // Tags
4949
* // "<keys>": "STRING_VALUE",
5050
* // },
51+
* // autoParticipantRecordingConfiguration: { // AutoParticipantRecordingConfiguration
52+
* // storageConfigurationArn: "STRING_VALUE", // required
53+
* // mediaTypes: [ // ParticipantRecordingMediaTypeList
54+
* // "STRING_VALUE",
55+
* // ],
56+
* // },
5157
* // },
5258
* // };
5359
*

clients/client-ivs-realtime/src/commands/ListParticipantsCommand.ts

+2
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ export interface ListParticipantsCommandOutput extends ListParticipantsResponse,
4343
* filterByState: "STRING_VALUE",
4444
* nextToken: "STRING_VALUE",
4545
* maxResults: Number("int"),
46+
* filterByRecordingState: "STRING_VALUE",
4647
* };
4748
* const command = new ListParticipantsCommand(input);
4849
* const response = await client.send(command);
@@ -54,6 +55,7 @@ export interface ListParticipantsCommandOutput extends ListParticipantsResponse,
5455
* // state: "STRING_VALUE",
5556
* // firstJoinTime: new Date("TIMESTAMP"),
5657
* // published: true || false,
58+
* // recordingState: "STRING_VALUE",
5759
* // },
5860
* // ],
5961
* // nextToken: "STRING_VALUE",

clients/client-ivs-realtime/src/commands/UpdateStageCommand.ts

+12
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,12 @@ export interface UpdateStageCommandOutput extends UpdateStageResponse, __Metadat
3838
* const input = { // UpdateStageRequest
3939
* arn: "STRING_VALUE", // required
4040
* name: "STRING_VALUE",
41+
* autoParticipantRecordingConfiguration: { // AutoParticipantRecordingConfiguration
42+
* storageConfigurationArn: "STRING_VALUE", // required
43+
* mediaTypes: [ // ParticipantRecordingMediaTypeList
44+
* "STRING_VALUE",
45+
* ],
46+
* },
4147
* };
4248
* const command = new UpdateStageCommand(input);
4349
* const response = await client.send(command);
@@ -49,6 +55,12 @@ export interface UpdateStageCommandOutput extends UpdateStageResponse, __Metadat
4955
* // tags: { // Tags
5056
* // "<keys>": "STRING_VALUE",
5157
* // },
58+
* // autoParticipantRecordingConfiguration: { // AutoParticipantRecordingConfiguration
59+
* // storageConfigurationArn: "STRING_VALUE", // required
60+
* // mediaTypes: [ // ParticipantRecordingMediaTypeList
61+
* // "STRING_VALUE",
62+
* // ],
63+
* // },
5264
* // },
5365
* // };
5466
*

clients/client-ivs-realtime/src/models/models_0.ts

+132-11
Original file line numberDiff line numberDiff line change
@@ -420,6 +420,39 @@ export interface CreateParticipantTokenResponse {
420420
participantToken?: ParticipantToken;
421421
}
422422

423+
/**
424+
* @public
425+
* @enum
426+
*/
427+
export const ParticipantRecordingMediaType = {
428+
AUDIO_ONLY: "AUDIO_ONLY",
429+
AUDIO_VIDEO: "AUDIO_VIDEO",
430+
} as const;
431+
432+
/**
433+
* @public
434+
*/
435+
export type ParticipantRecordingMediaType =
436+
(typeof ParticipantRecordingMediaType)[keyof typeof ParticipantRecordingMediaType];
437+
438+
/**
439+
* <p>Object specifying an auto-participant-recording configuration.</p>
440+
* @public
441+
*/
442+
export interface AutoParticipantRecordingConfiguration {
443+
/**
444+
* <p>ARN of the <a>StorageConfiguration</a> resource to use for auto participant recording. Default: "" (empty string, no storage configuration is specified). Individual participant recording cannot be started unless a storage configuration is specified, when a <a>Stage</a> is created or updated.</p>
445+
* @public
446+
*/
447+
storageConfigurationArn: string | undefined;
448+
449+
/**
450+
* <p>Types of media to be recorded. Default: <code>AUDIO_VIDEO</code>.</p>
451+
* @public
452+
*/
453+
mediaTypes?: ParticipantRecordingMediaType[];
454+
}
455+
423456
/**
424457
* <p>Object specifying a participant token configuration in a stage.</p>
425458
* @public
@@ -485,6 +518,12 @@ export interface CreateStageRequest {
485518
* @public
486519
*/
487520
tags?: Record<string, string>;
521+
522+
/**
523+
* <p>Auto participant recording configuration object attached to the stage.</p>
524+
* @public
525+
*/
526+
autoParticipantRecordingConfiguration?: AutoParticipantRecordingConfiguration;
488527
}
489528

490529
/**
@@ -519,6 +558,12 @@ export interface Stage {
519558
* @public
520559
*/
521560
tags?: Record<string, string>;
561+
562+
/**
563+
* <p>Auto-participant-recording configuration object attached to the stage.</p>
564+
* @public
565+
*/
566+
autoParticipantRecordingConfiguration?: AutoParticipantRecordingConfiguration;
522567
}
523568

524569
/**
@@ -1230,6 +1275,24 @@ export interface GetParticipantRequest {
12301275
participantId: string | undefined;
12311276
}
12321277

1278+
/**
1279+
* @public
1280+
* @enum
1281+
*/
1282+
export const ParticipantRecordingState = {
1283+
ACTIVE: "ACTIVE",
1284+
DISABLED: "DISABLED",
1285+
FAILED: "FAILED",
1286+
STARTING: "STARTING",
1287+
STOPPED: "STOPPED",
1288+
STOPPING: "STOPPING",
1289+
} as const;
1290+
1291+
/**
1292+
* @public
1293+
*/
1294+
export type ParticipantRecordingState = (typeof ParticipantRecordingState)[keyof typeof ParticipantRecordingState];
1295+
12331296
/**
12341297
* @public
12351298
* @enum
@@ -1327,6 +1390,24 @@ export interface Participant {
13271390
* @public
13281391
*/
13291392
sdkVersion?: string;
1393+
1394+
/**
1395+
* <p>Name of the S3 bucket to where the participant is being recorded, if individual participant recording is enabled, or "" (empty string), if recording is not enabled.</p>
1396+
* @public
1397+
*/
1398+
recordingS3BucketName?: string;
1399+
1400+
/**
1401+
* <p>S3 prefix of the S3 bucket to where the participant is being recorded, if individual participant recording is enabled, or "" (empty string), if recording is not enabled.</p>
1402+
* @public
1403+
*/
1404+
recordingS3Prefix?: string;
1405+
1406+
/**
1407+
* <p>Participant’s recording state.</p>
1408+
* @public
1409+
*/
1410+
recordingState?: ParticipantRecordingState;
13301411
}
13311412

13321413
/**
@@ -1775,6 +1856,24 @@ export interface ListParticipantEventsResponse {
17751856
nextToken?: string;
17761857
}
17771858

1859+
/**
1860+
* @public
1861+
* @enum
1862+
*/
1863+
export const ParticipantRecordingFilterByRecordingState = {
1864+
ACTIVE: "ACTIVE",
1865+
FAILED: "FAILED",
1866+
STARTING: "STARTING",
1867+
STOPPED: "STOPPED",
1868+
STOPPING: "STOPPING",
1869+
} as const;
1870+
1871+
/**
1872+
* @public
1873+
*/
1874+
export type ParticipantRecordingFilterByRecordingState =
1875+
(typeof ParticipantRecordingFilterByRecordingState)[keyof typeof ParticipantRecordingFilterByRecordingState];
1876+
17781877
/**
17791878
* @public
17801879
*/
@@ -1792,27 +1891,28 @@ export interface ListParticipantsRequest {
17921891
sessionId: string | undefined;
17931892

17941893
/**
1795-
* <p>Filters the response list to match the specified user ID. Only one of
1796-
* <code>filterByUserId</code>, <code>filterByPublished</code>, or
1797-
* <code>filterByState</code> can be provided per request. A <code>userId</code> is a
1798-
* customer-assigned name to help identify the token; this can be used to link a participant
1799-
* to a user in the customer’s own systems.</p>
1894+
* <p>Filters the response list to match the specified user ID.
1895+
* Only one of <code>filterByUserId</code>, <code>filterByPublished</code>,
1896+
* <code>filterByState</code>, or <code>filterByRecordingState</code> can be provided per request.
1897+
* A <code>userId</code> is a
1898+
* customer-assigned name to help identify the token; this can be used to link a participant
1899+
* to a user in the customer’s own systems.</p>
18001900
* @public
18011901
*/
18021902
filterByUserId?: string;
18031903

18041904
/**
1805-
* <p>Filters the response list to only show participants who published during the stage
1806-
* session. Only one of <code>filterByUserId</code>, <code>filterByPublished</code>, or
1807-
* <code>filterByState</code> can be provided per request.</p>
1905+
* <p>Filters the response list to only show participants who published during the stage session.
1906+
* Only one of <code>filterByUserId</code>, <code>filterByPublished</code>,
1907+
* <code>filterByState</code>, or <code>filterByRecordingState</code> can be provided per request.</p>
18081908
* @public
18091909
*/
18101910
filterByPublished?: boolean;
18111911

18121912
/**
1813-
* <p>Filters the response list to only show participants in the specified state. Only one of
1814-
* <code>filterByUserId</code>, <code>filterByPublished</code>, or
1815-
* <code>filterByState</code> can be provided per request.</p>
1913+
* <p>Filters the response list to only show participants in the specified state.
1914+
* Only one of <code>filterByUserId</code>, <code>filterByPublished</code>,
1915+
* <code>filterByState</code>, or <code>filterByRecordingState</code> can be provided per request.</p>
18161916
* @public
18171917
*/
18181918
filterByState?: ParticipantState;
@@ -1829,6 +1929,14 @@ export interface ListParticipantsRequest {
18291929
* @public
18301930
*/
18311931
maxResults?: number;
1932+
1933+
/**
1934+
* <p>Filters the response list to only show participants with the specified recording state.
1935+
* Only one of <code>filterByUserId</code>, <code>filterByPublished</code>,
1936+
* <code>filterByState</code>, or <code>filterByRecordingState</code> can be provided per request.</p>
1937+
* @public
1938+
*/
1939+
filterByRecordingState?: ParticipantRecordingFilterByRecordingState;
18321940
}
18331941

18341942
/**
@@ -1869,6 +1977,12 @@ export interface ParticipantSummary {
18691977
* @public
18701978
*/
18711979
published?: boolean;
1980+
1981+
/**
1982+
* <p>Participant’s recording state.</p>
1983+
* @public
1984+
*/
1985+
recordingState?: ParticipantRecordingState;
18721986
}
18731987

18741988
/**
@@ -2253,6 +2367,13 @@ export interface UpdateStageRequest {
22532367
* @public
22542368
*/
22552369
name?: string;
2370+
2371+
/**
2372+
* <p>Auto-participant-recording configuration object to attach to the stage.
2373+
* Auto-participant-recording configuration cannot be updated while recording is active.</p>
2374+
* @public
2375+
*/
2376+
autoParticipantRecordingConfiguration?: AutoParticipantRecordingConfiguration;
22562377
}
22572378

22582379
/**

0 commit comments

Comments
 (0)