Interface IVerifyV2Client
Exposes Verify v2 API features for multi-channel user verification using PIN codes sent via SMS, Voice, Email, WhatsApp, or Silent Authentication.
public interface IVerifyV2Client
Methods
CancelAsync(Result<CancelRequest>)
Cancels an in-progress verification request. Cancellation is only possible 30 seconds after the request started and before the second event has taken place.
Task<Result<Unit>> CancelAsync(Result<CancelRequest> request)
Parameters
requestResult<CancelRequest>The cancellation request containing the verification request ID to cancel.
Returns
- Task<Result<Unit>>
Success if the verification was cancelled, or Failure with error details if cancellation failed (e.g., request not found, already completed, or outside the cancellation window).
Examples
var request = CancelRequest.Parse(requestId);
var result = await client.CancelAsync(request);
result.Match(
success => Console.WriteLine("Verification cancelled"),
failure => Console.WriteLine($"Failed: {failure.GetFailureMessage()}"));
- See Also
CreateTemplateAsync(Result<CreateTemplateRequest>)
Creates a new custom verification template. Templates allow customization of the verification message text.
Task<Result<Template>> CreateTemplateAsync(Result<CreateTemplateRequest> request)
Parameters
requestResult<CreateTemplateRequest>The request containing the template name. Names must be unique and match the pattern ^[A-Za-z0-9_-]+$.
Returns
- Task<Result<Template>>
The created Template with its assigned ID, or Failure if template creation is not enabled for your account.
Examples
var request = CreateTemplateRequest.Build()
.WithName("my-custom-template")
.Create();
var result = await client.CreateTemplateAsync(request);
- See Also
CreateTemplateFragmentAsync(Result<CreateTemplateFragmentRequest>)
Creates a new template fragment for a specific channel and locale. Fragments define the actual message text used for verification.
Task<Result<TemplateFragment>> CreateTemplateFragmentAsync(Result<CreateTemplateFragmentRequest> request)
Parameters
requestResult<CreateTemplateFragmentRequest>The request containing the template ID, channel (SMS or Voice), locale, and message text with placeholders.
Returns
- Task<Result<TemplateFragment>>
The created TemplateFragment, or Failure if the template is not found or the channel/locale combination already exists.
Examples
var request = CreateTemplateFragmentRequest.Build()
.WithTemplateId(templateId)
.WithText("Your ${brand} code is ${code}. Valid for ${time-limit} ${time-limit-unit}.")
.WithLocale("en-us")
.WithChannel(VerificationChannel.Sms)
.Create();
var result = await client.CreateTemplateFragmentAsync(request);
- See Also
DeleteTemplateAsync(Result<DeleteTemplateRequest>)
Deletes a template. A template can only be deleted if it has no template fragments attached.
Task<Result<Unit>> DeleteTemplateAsync(Result<DeleteTemplateRequest> request)
Parameters
requestResult<DeleteTemplateRequest>The request containing the template ID to delete.
Returns
- Task<Result<Unit>>
Success if the template was deleted, or Failure if the template was not found or still has fragments attached.
Examples
var request = DeleteTemplateRequest.Parse(templateId);
var result = await client.DeleteTemplateAsync(request);
- See Also
DeleteTemplateFragmentAsync(Result<DeleteTemplateFragmentRequest>)
Deletes a template fragment from a template.
Task<Result<Unit>> DeleteTemplateFragmentAsync(Result<DeleteTemplateFragmentRequest> request)
Parameters
requestResult<DeleteTemplateFragmentRequest>The request containing both the template ID and template fragment ID to delete.
Returns
- Task<Result<Unit>>
Success if the fragment was deleted, or Failure if the template or fragment was not found.
Examples
var request = DeleteTemplateFragmentRequest.Build()
.WithTemplateId(templateId)
.WithTemplateFragmentId(fragmentId)
.Create();
var result = await client.DeleteTemplateFragmentAsync(request);
- See Also
GetTemplateAsync(Result<GetTemplateRequest>)
Retrieves a single template by its ID.
Task<Result<Template>> GetTemplateAsync(Result<GetTemplateRequest> request)
Parameters
requestResult<GetTemplateRequest>The request containing the template ID to retrieve.
Returns
Examples
var request = GetTemplateRequest.Parse(templateId);
var result = await client.GetTemplateAsync(request);
result.IfSuccess(template => Console.WriteLine($"Template: {template.Name}"));
- See Also
GetTemplateFragmentAsync(Result<GetTemplateFragmentRequest>)
Retrieves a single template fragment by its template ID and fragment ID.
Task<Result<TemplateFragment>> GetTemplateFragmentAsync(Result<GetTemplateFragmentRequest> request)
Parameters
requestResult<GetTemplateFragmentRequest>The request containing the template ID and fragment ID to retrieve.
Returns
- Task<Result<TemplateFragment>>
The TemplateFragment if found, or Failure if the template or fragment does not exist.
Examples
var request = GetTemplateFragmentRequest.Parse(templateId, fragmentId);
var result = await client.GetTemplateFragmentAsync(request);
result.IfSuccess(fragment => Console.WriteLine($"Fragment text: {fragment.Text}"));
- See Also
GetTemplateFragmentsAsync(Result<GetTemplateFragmentsRequest>)
Retrieves a paginated list of all template fragments for a specific template.
Task<Result<GetTemplateFragmentsResponse>> GetTemplateFragmentsAsync(Result<GetTemplateFragmentsRequest> request)
Parameters
requestResult<GetTemplateFragmentsRequest>The request containing the template ID and optional pagination parameters.
Returns
- Task<Result<GetTemplateFragmentsResponse>>
A GetTemplateFragmentsResponse containing the fragments and pagination information.
Examples
var request = GetTemplateFragmentsRequest.Build()
.WithTemplateId(templateId)
.WithPageSize(10)
.Create();
var result = await client.GetTemplateFragmentsAsync(request);
result.IfSuccess(response => {
foreach (var fragment in response.Embedded.Fragments)
Console.WriteLine($"Fragment: {fragment.Channel} - {fragment.Locale}");
});
- See Also
GetTemplatesAsync(Result<GetTemplatesRequest>)
Retrieves a paginated list of all templates for your account.
Task<Result<GetTemplatesResponse>> GetTemplatesAsync(Result<GetTemplatesRequest> request)
Parameters
requestResult<GetTemplatesRequest>The request containing optional pagination parameters (page, page_size).
Returns
- Task<Result<GetTemplatesResponse>>
A GetTemplatesResponse containing the templates and pagination information.
Examples
var request = GetTemplatesRequest.Build()
.WithPageSize(10)
.WithPage(1)
.Create();
var result = await client.GetTemplatesAsync(request);
result.IfSuccess(response => {
foreach (var template in response.Embedded.Templates)
Console.WriteLine($"Template: {template.Name}");
});
- See Also
NextWorkflowAsync(Result<NextWorkflowRequest>)
Advances the verification to the next workflow step, if available. Use this to skip the current channel and try the next fallback channel immediately.
Task<Result<Unit>> NextWorkflowAsync(Result<NextWorkflowRequest> request)
Parameters
requestResult<NextWorkflowRequest>The request containing the verification request ID to advance.
Returns
- Task<Result<Unit>>
Success if the workflow advanced to the next step, or Failure if no more workflows are available or the request was not found.
Examples
var request = NextWorkflowRequest.Parse(requestId);
var result = await client.NextWorkflowAsync(request);
- See Also
StartVerificationAsync(Result<StartVerificationRequest>)
Initiates a verification request to send a PIN code to a user through the specified workflow channels.
Task<Result<StartVerificationResponse>> StartVerificationAsync(Result<StartVerificationRequest> request)
Parameters
requestResult<StartVerificationRequest>The verification request containing the brand, workflows, locale, and other configuration options.
Returns
- Task<Result<StartVerificationResponse>>
A StartVerificationResponse containing the request ID for subsequent operations. For Silent Auth workflows, also includes a check URL.
Examples
var request = StartVerificationRequest.Build()
.WithBrand("MyApp")
.WithWorkflow(SmsWorkflow.Parse("447700900000"))
.WithFallbackWorkflow(VoiceWorkflow.Parse("447700900000"))
.Create();
var result = await client.StartVerificationAsync(request);
result.IfSuccess(response => Console.WriteLine($"Request ID: {response.RequestId}"));
- See Also
UpdateTemplateAsync(Result<UpdateTemplateRequest>)
Updates a template's name or default status.
Task<Result<Template>> UpdateTemplateAsync(Result<UpdateTemplateRequest> request)
Parameters
requestResult<UpdateTemplateRequest>The request containing the template ID and the properties to update.
Returns
- Task<Result<Template>>
The updated Template, or Failure if the template was not found or the new name conflicts with an existing template.
Examples
var request = UpdateTemplateRequest.Build()
.WithId(templateId)
.WithName("new-template-name")
.SetAsDefaultTemplate()
.Create();
var result = await client.UpdateTemplateAsync(request);
- See Also
UpdateTemplateFragmentAsync(Result<UpdateTemplateFragmentRequest>)
Updates the text content of a template fragment.
Task<Result<TemplateFragment>> UpdateTemplateFragmentAsync(Result<UpdateTemplateFragmentRequest> request)
Parameters
requestResult<UpdateTemplateFragmentRequest>The request containing the template ID, fragment ID, and new text content.
Returns
- Task<Result<TemplateFragment>>
The updated TemplateFragment, or Failure if the template or fragment was not found.
Examples
var request = UpdateTemplateFragmentRequest.Build()
.WithId(templateId)
.WithFragmentId(fragmentId)
.WithText("Updated: Your ${brand} verification code is ${code}")
.Create();
var result = await client.UpdateTemplateFragmentAsync(request);
- See Also
VerifyCodeAsync(Result<VerifyCodeRequest>)
Validates a PIN code submitted by the user against an existing verification request.
Task<Result<Unit>> VerifyCodeAsync(Result<VerifyCodeRequest> request)
Parameters
requestResult<VerifyCodeRequest>The request containing the verification request ID and the code to validate.
Returns
- Task<Result<Unit>>
Success if the code is correct, or Failure if the code is invalid or the maximum number of attempts (3) has been exceeded.
Examples
var request = VerifyCodeRequest.Build()
.WithRequestId(requestId)
.WithCode("1234")
.Create();
var result = await client.VerifyCodeAsync(request);
result.Match(
success => Console.WriteLine("Code verified successfully"),
failure => Console.WriteLine($"Invalid code: {failure.GetFailureMessage()}"));
- See Also