Skip to content

Commit

Permalink
feat(client-ivs-realtime): IVS Real-Time now offers customers the abi…
Browse files Browse the repository at this point in the history
…lity to record individual stage participants to S3.
  • Loading branch information
awstools committed Jun 20, 2024
1 parent 52a0e8f commit b3374d1
Show file tree
Hide file tree
Showing 8 changed files with 371 additions and 14 deletions.
12 changes: 12 additions & 0 deletions clients/client-ivs-realtime/src/commands/CreateStageCommand.ts
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,12 @@ export interface CreateStageCommandOutput extends CreateStageResponse, __Metadat
* tags: { // Tags
* "<keys>": "STRING_VALUE",
* },
* autoParticipantRecordingConfiguration: { // AutoParticipantRecordingConfiguration
* storageConfigurationArn: "STRING_VALUE", // required
* mediaTypes: [ // ParticipantRecordingMediaTypeList
* "STRING_VALUE",
* ],
* },
* };
* const command = new CreateStageCommand(input);
* const response = await client.send(command);
Expand All @@ -63,6 +69,12 @@ export interface CreateStageCommandOutput extends CreateStageResponse, __Metadat
* // tags: { // Tags
* // "<keys>": "STRING_VALUE",
* // },
* // autoParticipantRecordingConfiguration: { // AutoParticipantRecordingConfiguration
* // storageConfigurationArn: "STRING_VALUE", // required
* // mediaTypes: [ // ParticipantRecordingMediaTypeList
* // "STRING_VALUE",
* // ],
* // },
* // },
* // participantTokens: [ // ParticipantTokenList
* // { // ParticipantToken
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,9 @@ export interface GetParticipantCommandOutput extends GetParticipantResponse, __M
* // browserName: "STRING_VALUE",
* // browserVersion: "STRING_VALUE",
* // sdkVersion: "STRING_VALUE",
* // recordingS3BucketName: "STRING_VALUE",
* // recordingS3Prefix: "STRING_VALUE",
* // recordingState: "STRING_VALUE",
* // },
* // };
*
Expand Down
6 changes: 6 additions & 0 deletions clients/client-ivs-realtime/src/commands/GetStageCommand.ts
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,12 @@ export interface GetStageCommandOutput extends GetStageResponse, __MetadataBeare
* // tags: { // Tags
* // "<keys>": "STRING_VALUE",
* // },
* // autoParticipantRecordingConfiguration: { // AutoParticipantRecordingConfiguration
* // storageConfigurationArn: "STRING_VALUE", // required
* // mediaTypes: [ // ParticipantRecordingMediaTypeList
* // "STRING_VALUE",
* // ],
* // },
* // },
* // };
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ export interface ListParticipantsCommandOutput extends ListParticipantsResponse,
* filterByState: "STRING_VALUE",
* nextToken: "STRING_VALUE",
* maxResults: Number("int"),
* filterByRecordingState: "STRING_VALUE",
* };
* const command = new ListParticipantsCommand(input);
* const response = await client.send(command);
Expand All @@ -54,6 +55,7 @@ export interface ListParticipantsCommandOutput extends ListParticipantsResponse,
* // state: "STRING_VALUE",
* // firstJoinTime: new Date("TIMESTAMP"),
* // published: true || false,
* // recordingState: "STRING_VALUE",
* // },
* // ],
* // nextToken: "STRING_VALUE",
Expand Down
12 changes: 12 additions & 0 deletions clients/client-ivs-realtime/src/commands/UpdateStageCommand.ts
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,12 @@ export interface UpdateStageCommandOutput extends UpdateStageResponse, __Metadat
* const input = { // UpdateStageRequest
* arn: "STRING_VALUE", // required
* name: "STRING_VALUE",
* autoParticipantRecordingConfiguration: { // AutoParticipantRecordingConfiguration
* storageConfigurationArn: "STRING_VALUE", // required
* mediaTypes: [ // ParticipantRecordingMediaTypeList
* "STRING_VALUE",
* ],
* },
* };
* const command = new UpdateStageCommand(input);
* const response = await client.send(command);
Expand All @@ -49,6 +55,12 @@ export interface UpdateStageCommandOutput extends UpdateStageResponse, __Metadat
* // tags: { // Tags
* // "<keys>": "STRING_VALUE",
* // },
* // autoParticipantRecordingConfiguration: { // AutoParticipantRecordingConfiguration
* // storageConfigurationArn: "STRING_VALUE", // required
* // mediaTypes: [ // ParticipantRecordingMediaTypeList
* // "STRING_VALUE",
* // ],
* // },
* // },
* // };
*
Expand Down
143 changes: 132 additions & 11 deletions clients/client-ivs-realtime/src/models/models_0.ts
Original file line number Diff line number Diff line change
Expand Up @@ -420,6 +420,39 @@ export interface CreateParticipantTokenResponse {
participantToken?: ParticipantToken;
}

/**
* @public
* @enum
*/
export const ParticipantRecordingMediaType = {
AUDIO_ONLY: "AUDIO_ONLY",
AUDIO_VIDEO: "AUDIO_VIDEO",
} as const;

/**
* @public
*/
export type ParticipantRecordingMediaType =
(typeof ParticipantRecordingMediaType)[keyof typeof ParticipantRecordingMediaType];

/**
* <p>Object specifying an auto-participant-recording configuration.</p>
* @public
*/
export interface AutoParticipantRecordingConfiguration {
/**
* <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>
* @public
*/
storageConfigurationArn: string | undefined;

/**
* <p>Types of media to be recorded. Default: <code>AUDIO_VIDEO</code>.</p>
* @public
*/
mediaTypes?: ParticipantRecordingMediaType[];
}

/**
* <p>Object specifying a participant token configuration in a stage.</p>
* @public
Expand Down Expand Up @@ -485,6 +518,12 @@ export interface CreateStageRequest {
* @public
*/
tags?: Record<string, string>;

/**
* <p>Auto participant recording configuration object attached to the stage.</p>
* @public
*/
autoParticipantRecordingConfiguration?: AutoParticipantRecordingConfiguration;
}

/**
Expand Down Expand Up @@ -519,6 +558,12 @@ export interface Stage {
* @public
*/
tags?: Record<string, string>;

/**
* <p>Auto-participant-recording configuration object attached to the stage.</p>
* @public
*/
autoParticipantRecordingConfiguration?: AutoParticipantRecordingConfiguration;
}

/**
Expand Down Expand Up @@ -1230,6 +1275,24 @@ export interface GetParticipantRequest {
participantId: string | undefined;
}

/**
* @public
* @enum
*/
export const ParticipantRecordingState = {
ACTIVE: "ACTIVE",
DISABLED: "DISABLED",
FAILED: "FAILED",
STARTING: "STARTING",
STOPPED: "STOPPED",
STOPPING: "STOPPING",
} as const;

/**
* @public
*/
export type ParticipantRecordingState = (typeof ParticipantRecordingState)[keyof typeof ParticipantRecordingState];

/**
* @public
* @enum
Expand Down Expand Up @@ -1327,6 +1390,24 @@ export interface Participant {
* @public
*/
sdkVersion?: string;

/**
* <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>
* @public
*/
recordingS3BucketName?: string;

/**
* <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>
* @public
*/
recordingS3Prefix?: string;

/**
* <p>Participant’s recording state.</p>
* @public
*/
recordingState?: ParticipantRecordingState;
}

/**
Expand Down Expand Up @@ -1775,6 +1856,24 @@ export interface ListParticipantEventsResponse {
nextToken?: string;
}

/**
* @public
* @enum
*/
export const ParticipantRecordingFilterByRecordingState = {
ACTIVE: "ACTIVE",
FAILED: "FAILED",
STARTING: "STARTING",
STOPPED: "STOPPED",
STOPPING: "STOPPING",
} as const;

/**
* @public
*/
export type ParticipantRecordingFilterByRecordingState =
(typeof ParticipantRecordingFilterByRecordingState)[keyof typeof ParticipantRecordingFilterByRecordingState];

/**
* @public
*/
Expand All @@ -1792,27 +1891,28 @@ export interface ListParticipantsRequest {
sessionId: string | undefined;

/**
* <p>Filters the response list to match the specified user ID. Only one of
* <code>filterByUserId</code>, <code>filterByPublished</code>, or
* <code>filterByState</code> can be provided per request. A <code>userId</code> is a
* customer-assigned name to help identify the token; this can be used to link a participant
* to a user in the customer’s own systems.</p>
* <p>Filters the response list to match the specified user ID.
* Only one of <code>filterByUserId</code>, <code>filterByPublished</code>,
* <code>filterByState</code>, or <code>filterByRecordingState</code> can be provided per request.
* A <code>userId</code> is a
* customer-assigned name to help identify the token; this can be used to link a participant
* to a user in the customer’s own systems.</p>
* @public
*/
filterByUserId?: string;

/**
* <p>Filters the response list to only show participants who published during the stage
* session. Only one of <code>filterByUserId</code>, <code>filterByPublished</code>, or
* <code>filterByState</code> can be provided per request.</p>
* <p>Filters the response list to only show participants who published during the stage session.
* Only one of <code>filterByUserId</code>, <code>filterByPublished</code>,
* <code>filterByState</code>, or <code>filterByRecordingState</code> can be provided per request.</p>
* @public
*/
filterByPublished?: boolean;

/**
* <p>Filters the response list to only show participants in the specified state. Only one of
* <code>filterByUserId</code>, <code>filterByPublished</code>, or
* <code>filterByState</code> can be provided per request.</p>
* <p>Filters the response list to only show participants in the specified state.
* Only one of <code>filterByUserId</code>, <code>filterByPublished</code>,
* <code>filterByState</code>, or <code>filterByRecordingState</code> can be provided per request.</p>
* @public
*/
filterByState?: ParticipantState;
Expand All @@ -1829,6 +1929,14 @@ export interface ListParticipantsRequest {
* @public
*/
maxResults?: number;

/**
* <p>Filters the response list to only show participants with the specified recording state.
* Only one of <code>filterByUserId</code>, <code>filterByPublished</code>,
* <code>filterByState</code>, or <code>filterByRecordingState</code> can be provided per request.</p>
* @public
*/
filterByRecordingState?: ParticipantRecordingFilterByRecordingState;
}

/**
Expand Down Expand Up @@ -1869,6 +1977,12 @@ export interface ParticipantSummary {
* @public
*/
published?: boolean;

/**
* <p>Participant’s recording state.</p>
* @public
*/
recordingState?: ParticipantRecordingState;
}

/**
Expand Down Expand Up @@ -2253,6 +2367,13 @@ export interface UpdateStageRequest {
* @public
*/
name?: string;

/**
* <p>Auto-participant-recording configuration object to attach to the stage.
* Auto-participant-recording configuration cannot be updated while recording is active.</p>
* @public
*/
autoParticipantRecordingConfiguration?: AutoParticipantRecordingConfiguration;
}

/**
Expand Down
Loading

0 comments on commit b3374d1

Please sign in to comment.