From 7bd32c786bae60d657f57a037a156714c4cde2ed Mon Sep 17 00:00:00 2001 From: awstools Date: Wed, 25 May 2022 18:18:52 +0000 Subject: [PATCH] feat(client-voice-id): VoiceID will now automatically expire Speakers if they haven't been accessed for Enrollment, Re-enrollment or Successful Auth for three years. The Speaker APIs now return a "LastAccessedAt" time for Speakers, and the EvaluateSession API returns "SPEAKER_EXPIRED" Auth Decision for EXPIRED Speakers. --- .../client-voice-id/src/models/models_0.ts | 11 ++ .../src/protocols/Aws_json1_0.ts | 8 ++ codegen/sdk-codegen/aws-models/voice-id.json | 114 ++++++++++-------- 3 files changed, 82 insertions(+), 51 deletions(-) diff --git a/clients/client-voice-id/src/models/models_0.ts b/clients/client-voice-id/src/models/models_0.ts index d79a7e87af17..fb5d4a32c34a 100644 --- a/clients/client-voice-id/src/models/models_0.ts +++ b/clients/client-voice-id/src/models/models_0.ts @@ -48,6 +48,7 @@ export enum AuthenticationDecision { ACCEPT = "ACCEPT", NOT_ENOUGH_SPEECH = "NOT_ENOUGH_SPEECH", REJECT = "REJECT", + SPEAKER_EXPIRED = "SPEAKER_EXPIRED", SPEAKER_ID_NOT_PROVIDED = "SPEAKER_ID_NOT_PROVIDED", SPEAKER_NOT_ENROLLED = "SPEAKER_NOT_ENROLLED", SPEAKER_OPTED_OUT = "SPEAKER_OPTED_OUT", @@ -952,6 +953,11 @@ export interface Speaker { *

A timestamp showing the speaker's last update.

*/ UpdatedAt?: Date; + + /** + *

The timestamp when the speaker was last accessed for enrollment, re-enrollment or a successful authentication. This timestamp is accurate to one hour.

+ */ + LastAccessedAt?: Date; } export namespace Speaker { @@ -1803,6 +1809,11 @@ export interface SpeakerSummary { *

A timestamp showing the speaker's last update.

*/ UpdatedAt?: Date; + + /** + *

The timestamp when the speaker was last accessed for enrollment, re-enrollment or a successful authentication. This timestamp is accurate to one hour.

+ */ + LastAccessedAt?: Date; } export namespace SpeakerSummary { diff --git a/clients/client-voice-id/src/protocols/Aws_json1_0.ts b/clients/client-voice-id/src/protocols/Aws_json1_0.ts index 92c2e9340bde..71799a936c3e 100644 --- a/clients/client-voice-id/src/protocols/Aws_json1_0.ts +++ b/clients/client-voice-id/src/protocols/Aws_json1_0.ts @@ -2499,6 +2499,10 @@ const deserializeAws_json1_0Speaker = (output: any, context: __SerdeContext): Sp CustomerSpeakerId: __expectString(output.CustomerSpeakerId), DomainId: __expectString(output.DomainId), GeneratedSpeakerId: __expectString(output.GeneratedSpeakerId), + LastAccessedAt: + output.LastAccessedAt !== undefined && output.LastAccessedAt !== null + ? __expectNonNull(__parseEpochTimestamp(__expectNumber(output.LastAccessedAt))) + : undefined, Status: __expectString(output.Status), UpdatedAt: output.UpdatedAt !== undefined && output.UpdatedAt !== null @@ -2609,6 +2613,10 @@ const deserializeAws_json1_0SpeakerSummary = (output: any, context: __SerdeConte CustomerSpeakerId: __expectString(output.CustomerSpeakerId), DomainId: __expectString(output.DomainId), GeneratedSpeakerId: __expectString(output.GeneratedSpeakerId), + LastAccessedAt: + output.LastAccessedAt !== undefined && output.LastAccessedAt !== null + ? __expectNonNull(__parseEpochTimestamp(__expectNumber(output.LastAccessedAt))) + : undefined, Status: __expectString(output.Status), UpdatedAt: output.UpdatedAt !== undefined && output.UpdatedAt !== null diff --git a/codegen/sdk-codegen/aws-models/voice-id.json b/codegen/sdk-codegen/aws-models/voice-id.json index d01d102116de..731be9925c66 100644 --- a/codegen/sdk-codegen/aws-models/voice-id.json +++ b/codegen/sdk-codegen/aws-models/voice-id.json @@ -72,6 +72,10 @@ { "value": "SPEAKER_ID_NOT_PROVIDED", "name": "SPEAKER_ID_NOT_PROVIDED" + }, + { + "value": "SPEAKER_EXPIRED", + "name": "SPEAKER_EXPIRED" } ] } @@ -231,8 +235,7 @@ "smithy.api#documentation": "

Creates a domain that contains all Amazon Connect Voice ID data, such as speakers, fraudsters, customer \n audio, and voiceprints.\n

", "smithy.api#http": { "method": "POST", - "uri": "/domains", - "code": 200 + "uri": "/domains" }, "smithy.api#idempotent": {} } @@ -302,6 +305,9 @@ "input": { "target": "com.amazonaws.voiceid#DeleteDomainRequest" }, + "output": { + "target": "smithy.api#Unit" + }, "errors": [ { "target": "com.amazonaws.voiceid#AccessDeniedException" @@ -349,6 +355,9 @@ "input": { "target": "com.amazonaws.voiceid#DeleteFraudsterRequest" }, + "output": { + "target": "smithy.api#Unit" + }, "errors": [ { "target": "com.amazonaws.voiceid#AccessDeniedException" @@ -401,6 +410,9 @@ "input": { "target": "com.amazonaws.voiceid#DeleteSpeakerRequest" }, + "output": { + "target": "smithy.api#Unit" + }, "errors": [ { "target": "com.amazonaws.voiceid#AccessDeniedException" @@ -480,8 +492,7 @@ "smithy.api#documentation": "

Describes the specified domain.

", "smithy.api#http": { "method": "GET", - "uri": "/domains/{DomainId}", - "code": 200 + "uri": "/domains/{DomainId}" } } }, @@ -538,8 +549,7 @@ "smithy.api#documentation": "

Describes the specified fraudster.

", "smithy.api#http": { "method": "GET", - "uri": "/domains/{DomainId}/fraudsters/{FraudsterId}", - "code": 200 + "uri": "/domains/{DomainId}/fraudsters/{FraudsterId}" } } }, @@ -572,8 +582,7 @@ "smithy.api#documentation": "

Describes the specified fraudster registration job.

", "smithy.api#http": { "method": "GET", - "uri": "/domains/{DomainId}/fraudster-registration-jobs/{JobId}", - "code": 200 + "uri": "/domains/{DomainId}/fraudster-registration-jobs/{JobId}" } } }, @@ -670,8 +679,7 @@ "smithy.api#documentation": "

Describes the specified speaker.

", "smithy.api#http": { "method": "GET", - "uri": "/domains/{DomainId}/speakers/{SpeakerId}", - "code": 200 + "uri": "/domains/{DomainId}/speakers/{SpeakerId}" } } }, @@ -704,8 +712,7 @@ "smithy.api#documentation": "

Describes the specified speaker enrollment job.

", "smithy.api#http": { "method": "GET", - "uri": "/domains/{DomainId}/speaker-enrollment-jobs/{JobId}", - "code": 200 + "uri": "/domains/{DomainId}/speaker-enrollment-jobs/{JobId}" } } }, @@ -1026,8 +1033,7 @@ "smithy.api#documentation": "

Evaluates a specified session based on audio data accumulated during a streaming Amazon Connect Voice \n ID call.

", "smithy.api#http": { "method": "PUT", - "uri": "/sessions/{SessionNameOrId}/evaluate", - "code": 200 + "uri": "/sessions/{SessionNameOrId}/evaluate" } } }, @@ -1626,12 +1632,12 @@ "smithy.api#documentation": "

Lists all the domains in the Amazon Web Services account.\n

", "smithy.api#http": { "method": "GET", - "uri": "/domains", - "code": 200 + "uri": "/domains" }, "smithy.api#paginated": { "inputToken": "NextToken", "outputToken": "NextToken", + "items": "DomainSummaries", "pageSize": "MaxResults" } } @@ -1701,12 +1707,12 @@ "smithy.api#documentation": "

Lists all the fraudster registration jobs in the domain with the given JobStatus.\n If JobStatus is not provided, this lists all fraudster registration jobs in the given\n domain.\n

", "smithy.api#http": { "method": "GET", - "uri": "/domains/{DomainId}/fraudster-registration-jobs", - "code": 200 + "uri": "/domains/{DomainId}/fraudster-registration-jobs" }, "smithy.api#paginated": { "inputToken": "NextToken", "outputToken": "NextToken", + "items": "JobSummaries", "pageSize": "MaxResults" } } @@ -1791,12 +1797,12 @@ "smithy.api#documentation": "

Lists all the speaker enrollment jobs in the domain with the specified JobStatus. If\n JobStatus is not provided, this lists all jobs with all possible speaker enrollment job\n statuses.

", "smithy.api#http": { "method": "GET", - "uri": "/domains/{DomainId}/speaker-enrollment-jobs", - "code": 200 + "uri": "/domains/{DomainId}/speaker-enrollment-jobs" }, "smithy.api#paginated": { "inputToken": "NextToken", "outputToken": "NextToken", + "items": "JobSummaries", "pageSize": "MaxResults" } } @@ -1881,12 +1887,12 @@ "smithy.api#documentation": "

Lists all speakers in a specified domain.

", "smithy.api#http": { "method": "GET", - "uri": "/domains/{DomainId}/speakers", - "code": 200 + "uri": "/domains/{DomainId}/speakers" }, "smithy.api#paginated": { "inputToken": "NextToken", "outputToken": "NextToken", + "items": "SpeakerSummaries", "pageSize": "MaxResults" } } @@ -1963,9 +1969,8 @@ "traits": { "smithy.api#documentation": "

Lists all tags associated with a specified Voice ID resource.

", "smithy.api#http": { - "method": "GET", "uri": "/tags/{ResourceArn}", - "code": 200 + "method": "GET" } } }, @@ -2055,8 +2060,7 @@ "smithy.api#documentation": "

Opts out a speaker from Voice ID system. A speaker can be opted out regardless of whether or not they\n already exist in the system. If they don't yet exist, a new speaker is created in an opted out state.\n If they already exist, their existing status is overridden and they are opted out. Enrollment and\n evaluation authentication requests are rejected for opted out speakers, and opted out speakers have\n no voice embeddings stored in the system.

", "smithy.api#http": { "method": "PUT", - "uri": "/domains/{DomainId}/speakers/{SpeakerId}/optout", - "code": 200 + "uri": "/domains/{DomainId}/speakers/{SpeakerId}/optout" } } }, @@ -2299,6 +2303,12 @@ "traits": { "smithy.api#documentation": "

A timestamp showing the speaker's last update.

" } + }, + "LastAccessedAt": { + "target": "com.amazonaws.voiceid#Timestamp", + "traits": { + "smithy.api#documentation": "

The timestamp when the speaker was last accessed for enrollment, re-enrollment or a successful authentication. This timestamp is accurate to one hour.

" + } } }, "traits": { @@ -2552,6 +2562,12 @@ "traits": { "smithy.api#documentation": "

A timestamp showing the speaker's last update.

" } + }, + "LastAccessedAt": { + "target": "com.amazonaws.voiceid#Timestamp", + "traits": { + "smithy.api#documentation": "

The timestamp when the speaker was last accessed for enrollment, re-enrollment or a successful authentication. This timestamp is accurate to one hour.

" + } } }, "traits": { @@ -2593,8 +2609,7 @@ "smithy.api#documentation": "

Starts a new batch fraudster registration job using provided details.

", "smithy.api#http": { "method": "POST", - "uri": "/domains/{DomainId}/fraudster-registration-jobs", - "code": 200 + "uri": "/domains/{DomainId}/fraudster-registration-jobs" }, "smithy.api#idempotent": {} } @@ -2698,8 +2713,7 @@ "smithy.api#documentation": "

Starts a new batch speaker enrollment job using specified details.

", "smithy.api#http": { "method": "POST", - "uri": "/domains/{DomainId}/speaker-enrollment-jobs", - "code": 200 + "uri": "/domains/{DomainId}/speaker-enrollment-jobs" }, "smithy.api#idempotent": {} } @@ -2883,9 +2897,8 @@ "traits": { "smithy.api#documentation": "

Tags an Amazon Connect Voice ID resource with the provided list of tags.

", "smithy.api#http": { - "method": "POST", "uri": "/tags/{ResourceArn}", - "code": 200 + "method": "POST" } } }, @@ -2981,8 +2994,8 @@ "traits": { "smithy.api#documentation": "

Removes specified tags from a specified Amazon Connect Voice ID resource.

", "smithy.api#http": { - "method": "DELETE", "uri": "/tags/{ResourceArn}", + "method": "DELETE", "code": 204 } } @@ -3044,8 +3057,7 @@ "smithy.api#documentation": "

Updates the specified domain. This API has clobber behavior, and clears and replaces all attributes.\n If an optional field, such as 'Description' is not provided, it is removed from the domain.

", "smithy.api#http": { "method": "PUT", - "uri": "/domains/{DomainId}", - "code": 200 + "uri": "/domains/{DomainId}" } } }, @@ -3108,6 +3120,21 @@ }, "com.amazonaws.voiceid#VoiceID": { "type": "service", + "traits": { + "aws.api#service": { + "sdkId": "Voice ID", + "arnNamespace": "voiceid", + "cloudFormationName": "VoiceID", + "cloudTrailEventSource": "voiceid.amazonaws.com", + "endpointPrefix": "voiceid" + }, + "aws.auth#sigv4": { + "name": "voiceid" + }, + "aws.protocols#awsJson1_0": {}, + "smithy.api#documentation": "

Amazon Connect Voice ID provides real-time caller authentication and fraud screening. This guide\n describes the APIs used for this service.\n

", + "smithy.api#title": "Amazon Voice ID" + }, "version": "2021-09-27", "operations": [ { @@ -3173,22 +3200,7 @@ { "target": "com.amazonaws.voiceid#UpdateDomain" } - ], - "traits": { - "aws.api#service": { - "sdkId": "Voice ID", - "arnNamespace": "voiceid", - "cloudFormationName": "VoiceID", - "cloudTrailEventSource": "voiceid.amazonaws.com", - "endpointPrefix": "voiceid" - }, - "aws.auth#sigv4": { - "name": "voiceid" - }, - "aws.protocols#awsJson1_0": {}, - "smithy.api#documentation": "

Amazon Connect Voice ID provides real-time caller authentication and fraud screening. This guide\n describes the APIs used for this service.\n

", - "smithy.api#title": "Amazon Voice ID" - } + ] } } }