Sample code for 30+ languages & platforms
Pascal (Lazarus/Delphi)

Amazon Cognito - Describe User Pool

See more Amazon Cognito Examples

Returns the configuration information and metadata of the specified user pool.

Chilkat Pascal (Lazarus/Delphi) Downloads

Pascal (Lazarus/Delphi)
program ChilkatDemo;

// Demonstrates using the Chilkat Pascal wrapper via the C bridge DLL.
// Builds as a console application under Lazarus (FPC) or Delphi.

{$IFDEF FPC}
  {$MODE DELPHI}
{$ENDIF}
{$APPTYPE CONSOLE}

uses
  {$IFDEF UNIX}
  cthreads,
  {$ENDIF}
  SysUtils,
  CkDllLoader,
  Chilkat.AuthAws,
  Chilkat.Rest,
  Chilkat.JsonObject,
  Chilkat.StringBuilder;

// ---------------------------------------------------------------------------

procedure RunDemo;
var
  success: Boolean;
  rest: TRest;
  authAws: TAuthAws;
  bTls: Boolean;
  port: Integer;
  bAutoReconnect: Boolean;
  json: TJsonObject;
  sbRequestBody: TStringBuilder;
  sbResponseBody: TStringBuilder;
  respStatusCode: Integer;
  jsonResponse: TJsonObject;
  Name: string;
  Priority: Integer;
  strVal: string;
  AttributeDataType: string;
  DeveloperOnlyAttribute: Boolean;
  Mutable: Boolean;
  Required: Boolean;
  StringAttributeConstraintsMaxLength: string;
  StringAttributeConstraintsMinLength: string;
  NumberAttributeConstraintsMinValue: string;
  UserPoolAdminCreateUserConfigAllowAdminCreateUserOnly: Boolean;
  UserPoolAdminCreateUserConfigInviteMessageTemplateEmailMessage: string;
  UserPoolAdminCreateUserConfigInviteMessageTemplateEmailSubject: string;
  UserPoolAdminCreateUserConfigInviteMessageTemplateSMSMessage: string;
  UserPoolAdminCreateUserConfigUnusedAccountValidityDays: Integer;
  UserPoolArn: string;
  UserPoolCreationDate: string;
  UserPoolEmailConfigurationEmailSendingAccount: string;
  UserPoolEmailConfigurationFrom: string;
  UserPoolEmailConfigurationReplyToEmailAddress: string;
  UserPoolEmailConfigurationSourceArn: string;
  UserPoolEmailVerificationMessage: string;
  UserPoolEmailVerificationSubject: string;
  UserPoolEstimatedNumberOfUsers: Integer;
  UserPoolId: string;
  UserPoolLastModifiedDate: string;
  UserPoolMfaConfiguration: string;
  UserPoolName: string;
  UserPoolPoliciesPasswordPolicyMinimumLength: Integer;
  UserPoolPoliciesPasswordPolicyRequireLowercase: Boolean;
  UserPoolPoliciesPasswordPolicyRequireNumbers: Boolean;
  UserPoolPoliciesPasswordPolicyRequireSymbols: Boolean;
  UserPoolPoliciesPasswordPolicyRequireUppercase: Boolean;
  UserPoolPoliciesPasswordPolicyTemporaryPasswordValidityDays: Integer;
  UserPoolSmsAuthenticationMessage: string;
  UserPoolSmsConfigurationExternalId: string;
  UserPoolSmsConfigurationSnsCallerArn: string;
  UserPoolSmsVerificationMessage: string;
  UserPoolUserPoolTagsSampleUserPoolTag: string;
  UserPoolUsernameConfigurationCaseSensitive: Boolean;
  UserPoolVerificationMessageTemplateDefaultEmailOption: string;
  UserPoolVerificationMessageTemplateEmailMessage: string;
  UserPoolVerificationMessageTemplateEmailSubject: string;
  UserPoolVerificationMessageTemplateSmsMessage: string;
  i: Integer;
  count_i: Integer;

begin
  success := False;

  //  This example requires the Chilkat API to have been previously unlocked.
  //  See Global Unlock Sample for sample code.

  rest := TRest.Create;

  authAws := TAuthAws.Create;
  authAws.AccessKey := 'AWS_ACCESS_KEY';
  authAws.SecretKey := 'AWS_SECRET_KEY';
  //  Don't forget to change the region to your particular region. (Also make the same change in the call to Connect below.)
  authAws.Region := 'us-west-2';
  authAws.ServiceName := 'cognito-idp';
  //  SetAuthAws causes Chilkat to automatically add the following headers: Authorization, X-Amz-Date
  rest.SetAuthAws(authAws);

  //  URL: https://cognito-idp.us-west-2.amazonaws.com/
  bTls := True;
  port := 443;
  bAutoReconnect := True;
  //  Use the same region as specified above.
  success := rest.Connect('cognito-idp.us-west-2.amazonaws.com',port,bTls,bAutoReconnect);
  if (success <> True) then
    begin
      WriteLn('ConnectFailReason: ' + rest.ConnectFailReason);
      WriteLn(rest.LastErrorText);
      Exit;
    end;

  //  Note: The above code does not need to be repeatedly called for each REST request.
  //  The rest object can be setup once, and then many requests can be sent.  Chilkat will automatically
  //  reconnect within a FullRequest* method as needed.  It is only the very first connection that is explicitly
  //  made via the Connect method.

  json := TJsonObject.Create;
  json.UpdateString('UserPoolId','us-west-2_yt6WzO3SA');

  rest.AddHeader('Content-Type','application/x-amz-json-1.0');
  rest.AddHeader('X-Amz-Target','AWSCognitoIdentityProviderService.DescribeUserPool');
  rest.AddHeader('Accept-Encoding','identity');

  sbRequestBody := TStringBuilder.Create;
  json.EmitSb(sbRequestBody);
  sbResponseBody := TStringBuilder.Create;
  success := rest.FullRequestSb('POST','/',sbRequestBody,sbResponseBody);
  if (success <> True) then
    begin
      WriteLn(rest.LastErrorText);
      Exit;
    end;

  respStatusCode := rest.ResponseStatusCode;
  WriteLn('response status code = ' + respStatusCode);
  if (respStatusCode <> 200) then
    begin
      WriteLn('Response Status Code = ' + respStatusCode);
      WriteLn('Response Header:');
      WriteLn(rest.ResponseHeader);
      WriteLn('Response Body:');
      WriteLn(sbResponseBody.GetAsString());
      Exit;
    end;

  jsonResponse := TJsonObject.Create;
  jsonResponse.LoadSb(sbResponseBody);

  jsonResponse.EmitCompact := False;
  WriteLn(jsonResponse.Emit());

  //  Sample JSON response:
  //  (Sample code for parsing the JSON response is shown below)

  //  Use this online tool to generate parsing code from sample JSON: 
  //  Generate Parsing Code from JSON

  //  {
  //    "UserPool": {
  //      "AccountRecoverySetting": {
  //        "RecoveryMechanisms": [
  //          {
  //            "Name": "verified_phone_number",
  //            "Priority": 1
  //          },
  //          {
  //            "Name": "verified_email",
  //            "Priority": 2
  //          }
  //        ]
  //      },
  //      "AdminCreateUserConfig": {
  //        "AllowAdminCreateUserOnly": false,
  //        "InviteMessageTemplate": {
  //          "EmailMessage": "Your username is {username} and temporary password is {####}. ",
  //          "EmailSubject": "Your temporary password",
  //          "SMSMessage": "Your username is {username} and temporary password is {####}. "
  //        },
  //        "UnusedAccountValidityDays": 7
  //      },
  //      "Arn": "arn:aws:cognito-idp:us-west-2:954491834127:userpool/us-west-2_yt6WzO3SA",
  //      "AutoVerifiedAttributes": [
  //        "email",
  //        "phone_number"
  //      ],
  //      "CreationDate": 1.636388909817E9,
  //      "EmailConfiguration": {
  //        "EmailSendingAccount": "DEVELOPER",
  //        "From": "admin@chilkatsoft.com",
  //        "ReplyToEmailAddress": "admin@chilkatsoft.com",
  //        "SourceArn": "arn:aws:ses:us-west-2:954491834127:identity/admin@chilkatsoft.com"
  //      },
  //      "EmailVerificationMessage": "Your verification code is {####}. ",
  //      "EmailVerificationSubject": "Your verification code",
  //      "EstimatedNumberOfUsers": 0,
  //      "Id": "us-west-2_yt6WzO3SA",
  //      "LambdaConfig": {},
  //      "LastModifiedDate": 1.636388910377E9,
  //      "MfaConfiguration": "ON",
  //      "Name": "chilkat",
  //      "Policies": {
  //        "PasswordPolicy": {
  //          "MinimumLength": 8,
  //          "RequireLowercase": true,
  //          "RequireNumbers": true,
  //          "RequireSymbols": true,
  //          "RequireUppercase": true,
  //          "TemporaryPasswordValidityDays": 7
  //        }
  //      },
  //      "SchemaAttributes": [
  //        {
  //          "AttributeDataType": "String",
  //          "DeveloperOnlyAttribute": false,
  //          "Mutable": false,
  //          "Name": "sub",
  //          "Required": true,
  //          "StringAttributeConstraints": {
  //            "MaxLength": "2048",
  //            "MinLength": "1"
  //          }
  //        },
  //        {
  //          "AttributeDataType": "String",
  //          "DeveloperOnlyAttribute": false,
  //          "Mutable": true,
  //          "Name": "name",
  //          "Required": false,
  //          "StringAttributeConstraints": {
  //            "MaxLength": "2048",
  //            "MinLength": "0"
  //          }
  //        },
  //        {
  //          "AttributeDataType": "String",
  //          "DeveloperOnlyAttribute": false,
  //          "Mutable": true,
  //          "Name": "given_name",
  //          "Required": false,
  //          "StringAttributeConstraints": {
  //            "MaxLength": "2048",
  //            "MinLength": "0"
  //          }
  //        },
  //        {
  //          "AttributeDataType": "String",
  //          "DeveloperOnlyAttribute": false,
  //          "Mutable": true,
  //          "Name": "family_name",
  //          "Required": false,
  //          "StringAttributeConstraints": {
  //            "MaxLength": "2048",
  //            "MinLength": "0"
  //          }
  //        },
  //        {
  //          "AttributeDataType": "String",
  //          "DeveloperOnlyAttribute": false,
  //          "Mutable": true,
  //          "Name": "middle_name",
  //          "Required": false,
  //          "StringAttributeConstraints": {
  //            "MaxLength": "2048",
  //            "MinLength": "0"
  //          }
  //        },
  //        {
  //          "AttributeDataType": "String",
  //          "DeveloperOnlyAttribute": false,
  //          "Mutable": true,
  //          "Name": "nickname",
  //          "Required": false,
  //          "StringAttributeConstraints": {
  //            "MaxLength": "2048",
  //            "MinLength": "0"
  //          }
  //        },
  //        {
  //          "AttributeDataType": "String",
  //          "DeveloperOnlyAttribute": false,
  //          "Mutable": true,
  //          "Name": "preferred_username",
  //          "Required": false,
  //          "StringAttributeConstraints": {
  //            "MaxLength": "2048",
  //            "MinLength": "0"
  //          }
  //        },
  //        {
  //          "AttributeDataType": "String",
  //          "DeveloperOnlyAttribute": false,
  //          "Mutable": true,
  //          "Name": "profile",
  //          "Required": false,
  //          "StringAttributeConstraints": {
  //            "MaxLength": "2048",
  //            "MinLength": "0"
  //          }
  //        },
  //        {
  //          "AttributeDataType": "String",
  //          "DeveloperOnlyAttribute": false,
  //          "Mutable": true,
  //          "Name": "picture",
  //          "Required": false,
  //          "StringAttributeConstraints": {
  //            "MaxLength": "2048",
  //            "MinLength": "0"
  //          }
  //        },
  //        {
  //          "AttributeDataType": "String",
  //          "DeveloperOnlyAttribute": false,
  //          "Mutable": true,
  //          "Name": "website",
  //          "Required": false,
  //          "StringAttributeConstraints": {
  //            "MaxLength": "2048",
  //            "MinLength": "0"
  //          }
  //        },
  //        {
  //          "AttributeDataType": "String",
  //          "DeveloperOnlyAttribute": false,
  //          "Mutable": true,
  //          "Name": "email",
  //          "Required": true,
  //          "StringAttributeConstraints": {
  //            "MaxLength": "2048",
  //            "MinLength": "0"
  //          }
  //        },
  //        {
  //          "AttributeDataType": "Boolean",
  //          "DeveloperOnlyAttribute": false,
  //          "Mutable": true,
  //          "Name": "email_verified",
  //          "Required": false
  //        },
  //        {
  //          "AttributeDataType": "String",
  //          "DeveloperOnlyAttribute": false,
  //          "Mutable": true,
  //          "Name": "gender",
  //          "Required": false,
  //          "StringAttributeConstraints": {
  //            "MaxLength": "2048",
  //            "MinLength": "0"
  //          }
  //        },
  //        {
  //          "AttributeDataType": "String",
  //          "DeveloperOnlyAttribute": false,
  //          "Mutable": true,
  //          "Name": "birthdate",
  //          "Required": false,
  //          "StringAttributeConstraints": {
  //            "MaxLength": "10",
  //            "MinLength": "10"
  //          }
  //        },
  //        {
  //          "AttributeDataType": "String",
  //          "DeveloperOnlyAttribute": false,
  //          "Mutable": true,
  //          "Name": "zoneinfo",
  //          "Required": false,
  //          "StringAttributeConstraints": {
  //            "MaxLength": "2048",
  //            "MinLength": "0"
  //          }
  //        },
  //        {
  //          "AttributeDataType": "String",
  //          "DeveloperOnlyAttribute": false,
  //          "Mutable": true,
  //          "Name": "locale",
  //          "Required": false,
  //          "StringAttributeConstraints": {
  //            "MaxLength": "2048",
  //            "MinLength": "0"
  //          }
  //        },
  //        {
  //          "AttributeDataType": "String",
  //          "DeveloperOnlyAttribute": false,
  //          "Mutable": true,
  //          "Name": "phone_number",
  //          "Required": false,
  //          "StringAttributeConstraints": {
  //            "MaxLength": "2048",
  //            "MinLength": "0"
  //          }
  //        },
  //        {
  //          "AttributeDataType": "Boolean",
  //          "DeveloperOnlyAttribute": false,
  //          "Mutable": true,
  //          "Name": "phone_number_verified",
  //          "Required": false
  //        },
  //        {
  //          "AttributeDataType": "String",
  //          "DeveloperOnlyAttribute": false,
  //          "Mutable": true,
  //          "Name": "address",
  //          "Required": false,
  //          "StringAttributeConstraints": {
  //            "MaxLength": "2048",
  //            "MinLength": "0"
  //          }
  //        },
  //        {
  //          "AttributeDataType": "Number",
  //          "DeveloperOnlyAttribute": false,
  //          "Mutable": true,
  //          "Name": "updated_at",
  //          "NumberAttributeConstraints": {
  //            "MinValue": "0"
  //          },
  //          "Required": false
  //        }
  //      ],
  //      "SmsAuthenticationMessage": "Your verification code is {####}. ",
  //      "SmsConfiguration": {
  //        "ExternalId": "94b17737-216b-4cf7-a29e-17e990e91300",
  //        "SnsCallerArn": "arn:aws:iam::954491834127:role/service-role/chilkat-SMS-Role"
  //      },
  //      "SmsVerificationMessage": "Your verification code is {####}. ",
  //      "UserPoolTags": {
  //        "sampleUserPoolTag": "test"
  //      },
  //      "UsernameConfiguration": {
  //        "CaseSensitive": false
  //      },
  //      "VerificationMessageTemplate": {
  //        "DefaultEmailOption": "CONFIRM_WITH_CODE",
  //        "EmailMessage": "Your verification code is {####}. ",
  //        "EmailSubject": "Your verification code",
  //        "SmsMessage": "Your verification code is {####}. "
  //      }
  //    }
  //  }

  UserPoolAdminCreateUserConfigAllowAdminCreateUserOnly := jsonResponse.BoolOf('UserPool.AdminCreateUserConfig.AllowAdminCreateUserOnly');
  UserPoolAdminCreateUserConfigInviteMessageTemplateEmailMessage := jsonResponse.StringOf('UserPool.AdminCreateUserConfig.InviteMessageTemplate.EmailMessage');
  UserPoolAdminCreateUserConfigInviteMessageTemplateEmailSubject := jsonResponse.StringOf('UserPool.AdminCreateUserConfig.InviteMessageTemplate.EmailSubject');
  UserPoolAdminCreateUserConfigInviteMessageTemplateSMSMessage := jsonResponse.StringOf('UserPool.AdminCreateUserConfig.InviteMessageTemplate.SMSMessage');
  UserPoolAdminCreateUserConfigUnusedAccountValidityDays := jsonResponse.IntOf('UserPool.AdminCreateUserConfig.UnusedAccountValidityDays');
  UserPoolArn := jsonResponse.StringOf('UserPool.Arn');
  UserPoolCreationDate := jsonResponse.StringOf('UserPool.CreationDate');
  UserPoolEmailConfigurationEmailSendingAccount := jsonResponse.StringOf('UserPool.EmailConfiguration.EmailSendingAccount');
  UserPoolEmailConfigurationFrom := jsonResponse.StringOf('UserPool.EmailConfiguration.From');
  UserPoolEmailConfigurationReplyToEmailAddress := jsonResponse.StringOf('UserPool.EmailConfiguration.ReplyToEmailAddress');
  UserPoolEmailConfigurationSourceArn := jsonResponse.StringOf('UserPool.EmailConfiguration.SourceArn');
  UserPoolEmailVerificationMessage := jsonResponse.StringOf('UserPool.EmailVerificationMessage');
  UserPoolEmailVerificationSubject := jsonResponse.StringOf('UserPool.EmailVerificationSubject');
  UserPoolEstimatedNumberOfUsers := jsonResponse.IntOf('UserPool.EstimatedNumberOfUsers');
  UserPoolId := jsonResponse.StringOf('UserPool.Id');
  UserPoolLastModifiedDate := jsonResponse.StringOf('UserPool.LastModifiedDate');
  UserPoolMfaConfiguration := jsonResponse.StringOf('UserPool.MfaConfiguration');
  UserPoolName := jsonResponse.StringOf('UserPool.Name');
  UserPoolPoliciesPasswordPolicyMinimumLength := jsonResponse.IntOf('UserPool.Policies.PasswordPolicy.MinimumLength');
  UserPoolPoliciesPasswordPolicyRequireLowercase := jsonResponse.BoolOf('UserPool.Policies.PasswordPolicy.RequireLowercase');
  UserPoolPoliciesPasswordPolicyRequireNumbers := jsonResponse.BoolOf('UserPool.Policies.PasswordPolicy.RequireNumbers');
  UserPoolPoliciesPasswordPolicyRequireSymbols := jsonResponse.BoolOf('UserPool.Policies.PasswordPolicy.RequireSymbols');
  UserPoolPoliciesPasswordPolicyRequireUppercase := jsonResponse.BoolOf('UserPool.Policies.PasswordPolicy.RequireUppercase');
  UserPoolPoliciesPasswordPolicyTemporaryPasswordValidityDays := jsonResponse.IntOf('UserPool.Policies.PasswordPolicy.TemporaryPasswordValidityDays');
  UserPoolSmsAuthenticationMessage := jsonResponse.StringOf('UserPool.SmsAuthenticationMessage');
  UserPoolSmsConfigurationExternalId := jsonResponse.StringOf('UserPool.SmsConfiguration.ExternalId');
  UserPoolSmsConfigurationSnsCallerArn := jsonResponse.StringOf('UserPool.SmsConfiguration.SnsCallerArn');
  UserPoolSmsVerificationMessage := jsonResponse.StringOf('UserPool.SmsVerificationMessage');
  UserPoolUserPoolTagsSampleUserPoolTag := jsonResponse.StringOf('UserPool.UserPoolTags.sampleUserPoolTag');
  UserPoolUsernameConfigurationCaseSensitive := jsonResponse.BoolOf('UserPool.UsernameConfiguration.CaseSensitive');
  UserPoolVerificationMessageTemplateDefaultEmailOption := jsonResponse.StringOf('UserPool.VerificationMessageTemplate.DefaultEmailOption');
  UserPoolVerificationMessageTemplateEmailMessage := jsonResponse.StringOf('UserPool.VerificationMessageTemplate.EmailMessage');
  UserPoolVerificationMessageTemplateEmailSubject := jsonResponse.StringOf('UserPool.VerificationMessageTemplate.EmailSubject');
  UserPoolVerificationMessageTemplateSmsMessage := jsonResponse.StringOf('UserPool.VerificationMessageTemplate.SmsMessage');

  i := 0;
  count_i := jsonResponse.SizeOfArray('UserPool.AccountRecoverySetting.RecoveryMechanisms');
  while i < count_i do
    begin
      jsonResponse.I := i;
      Name := jsonResponse.StringOf('UserPool.AccountRecoverySetting.RecoveryMechanisms[i].Name');
      Priority := jsonResponse.IntOf('UserPool.AccountRecoverySetting.RecoveryMechanisms[i].Priority');
      i := i + 1;
    end;

  i := 0;
  count_i := jsonResponse.SizeOfArray('UserPool.AutoVerifiedAttributes');
  while i < count_i do
    begin
      jsonResponse.I := i;
      strVal := jsonResponse.StringOf('UserPool.AutoVerifiedAttributes[i]');
      i := i + 1;
    end;

  i := 0;
  count_i := jsonResponse.SizeOfArray('UserPool.SchemaAttributes');
  while i < count_i do
    begin
      jsonResponse.I := i;
      AttributeDataType := jsonResponse.StringOf('UserPool.SchemaAttributes[i].AttributeDataType');
      DeveloperOnlyAttribute := jsonResponse.BoolOf('UserPool.SchemaAttributes[i].DeveloperOnlyAttribute');
      Mutable := jsonResponse.BoolOf('UserPool.SchemaAttributes[i].Mutable');
      Name := jsonResponse.StringOf('UserPool.SchemaAttributes[i].Name');
      Required := jsonResponse.BoolOf('UserPool.SchemaAttributes[i].Required');
      StringAttributeConstraintsMaxLength := jsonResponse.StringOf('UserPool.SchemaAttributes[i].StringAttributeConstraints.MaxLength');
      StringAttributeConstraintsMinLength := jsonResponse.StringOf('UserPool.SchemaAttributes[i].StringAttributeConstraints.MinLength');
      NumberAttributeConstraintsMinValue := jsonResponse.StringOf('UserPool.SchemaAttributes[i].NumberAttributeConstraints.MinValue');
      i := i + 1;
    end;



  rest.Free;
  authAws.Free;
  json.Free;
  sbRequestBody.Free;
  sbResponseBody.Free;
  jsonResponse.Free;

end;

// ---------------------------------------------------------------------------

begin

  try
    RunDemo;
  except
    on E: Exception do
      WriteLn('Unhandled exception: ', E.ClassName, ': ', E.Message);
  end;

  WriteLn;
  {$IFDEF MSWINDOWS}
  WriteLn('Press Enter to exit...');
  ReadLn;
  {$ENDIF}
end.