Sample code for 30+ languages & platforms
C++

Amazon Cognito - Admin Create User

See more Amazon Cognito Examples

Creates a new user in the specified user pool.

Chilkat C++ Downloads

C++
#include <CkRest.h>
#include <CkAuthAws.h>
#include <CkJsonObject.h>
#include <CkStringBuilder.h>

void ChilkatSample(void)
    {
    bool success = false;

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

    CkRest rest;

    CkAuthAws authAws;
    authAws.put_AccessKey("AWS_ACCESS_KEY");
    authAws.put_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.put_Region("us-west-2");
    authAws.put_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/
    bool bTls = true;
    int port = 443;
    bool 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) {
        std::cout << "ConnectFailReason: " << rest.get_ConnectFailReason() << "\r\n";
        std::cout << rest.lastErrorText() << "\r\n";
        return;
    }

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

    // The following JSON is sent in the request body.

    // {
    //     "DesiredDeliveryMediums" : [ "SMS", "EMAIL" ],	
    //     "UserAttributes": [
    //          {
    //            "Name": "phone_number",
    //            "Value": "+16302581871"
    //          },
    //          {
    //            "Name": "email",
    //            "Value": "admin@chilkatsoft.com"
    //          }
    //        ],
    //      "UserPoolId": "us-west-2_yt6WzO3SA",
    //      "Username": "Matt"
    // }
    // 

    CkJsonObject json;
    json.UpdateString("DesiredDeliveryMediums[0]","SMS");
    json.UpdateString("DesiredDeliveryMediums[1]","EMAIL");
    json.UpdateString("UserAttributes[0].Name","phone_number");
    json.UpdateString("UserAttributes[0].Value","+16302581871");
    json.UpdateString("UserAttributes[1].Name","email");
    json.UpdateString("UserAttributes[1].Value","admin@chilkatsoft.com");
    json.UpdateString("UserPoolId","us-west-2_yt6WzO3SA");
    json.UpdateString("Username","Matt");

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

    CkStringBuilder sbRequestBody;
    json.EmitSb(sbRequestBody);
    CkStringBuilder sbResponseBody;
    success = rest.FullRequestSb("POST","/",sbRequestBody,sbResponseBody);
    if (success != true) {
        std::cout << rest.lastErrorText() << "\r\n";
        return;
    }

    int respStatusCode = rest.get_ResponseStatusCode();
    std::cout << "response status code = " << respStatusCode << "\r\n";
    if (respStatusCode != 200) {
        std::cout << "Response Status Code = " << respStatusCode << "\r\n";
        std::cout << "Response Header:" << "\r\n";
        std::cout << rest.responseHeader() << "\r\n";
        std::cout << "Response Body:" << "\r\n";
        std::cout << sbResponseBody.getAsString() << "\r\n";
        return;
    }

    CkJsonObject jsonResponse;
    jsonResponse.LoadSb(sbResponseBody);

    jsonResponse.put_EmitCompact(false);
    std::cout << jsonResponse.emit() << "\r\n";

    // 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

    // {
    //   "User": {
    //     "Attributes": [
    //       {
    //         "Name": "sub",
    //         "Value": "dcd3db0c-32cf-4a33-a6b2-173653f7c0e7"
    //       },
    //       {
    //         "Name": "phone_number",
    //         "Value": "+16302581871"
    //       },
    //       {
    //         "Name": "email",
    //         "Value": "admin@chilkatsoft.com"
    //       }
    //     ],
    //     "Enabled": true,
    //     "UserCreateDate": 1.636407153801E9,
    //     "UserLastModifiedDate": 1.636407153801E9,
    //     "UserStatus": "FORCE_CHANGE_PASSWORD",
    //     "Username": "matt"
    //   }
    // }

    const char *Name = 0;
    const char *Value = 0;

    bool UserEnabled = jsonResponse.BoolOf("User.Enabled");
    const char *UserUserCreateDate = jsonResponse.stringOf("User.UserCreateDate");
    const char *UserUserLastModifiedDate = jsonResponse.stringOf("User.UserLastModifiedDate");
    const char *UserUserStatus = jsonResponse.stringOf("User.UserStatus");
    const char *UserUsername = jsonResponse.stringOf("User.Username");
    int i = 0;
    int count_i = jsonResponse.SizeOfArray("User.Attributes");
    while (i < count_i) {
        jsonResponse.put_I(i);
        Name = jsonResponse.stringOf("User.Attributes[i].Name");
        Value = jsonResponse.stringOf("User.Attributes[i].Value");
        i = i + 1;
    }
    }