/update/<registration-data>

Update existing PII for a registered entity.

After registering a new end user, use this endpoint to update any incorrect information before submitting that user through KYC or, if after the first pass through KYC, you receive a verification status of documents_required.

The following are valid /update paths:

  • /update/email: Update an entity's email. Must have a valid domain.
  • /update/phone: Update an entity's phone number.
  • /update/identity: Update an SSN or EIN.
    • Note: This cannot be done after an identity verification has passed or while verification is still pending.
  • /update/address: Update an entity's address.
    • Note: This cannot be done after an identity verification has passed or while verification is still pending. It cannot be changed for 30 days after an entity passes KYC.
  • /update/entity: Update an entity's name, birthdate/incorporation date, or business-related data such as DBA and website.
    • Note: This cannot be done while identity verification is still pending.

Requirements

All of these endpoints except for /update/entity require a uuid. This can be found in the response to the /get_entity endpoint. Find the address, email, identity, or phone in the list that needs updating and pass the same uuid to this endpoint along with the new values to update it.

❗️

Re-requesting KYC after Updating

Most end user data must go through re-verification of KYC in the event an end user needs to update their data after passing KYC, regardless of the KYC status.

You DO NOT need to request KYC again if you are updating:

  • Updating email
  • Updating phone number

Authentication

Apps using Access Token Authorization

Use a valid access token in an Authorization: Bearer request header.

See Authenticating with an Access Token for more details.

Apps using ECDSA Authentication

Both authsignature and usersignature headers are required for this request. The usersignature header should be generated with a keypair registered to the user (either registered from the /register endpoint or the /register_wallet endpoint).

See the section on ECDSA Authentication for more detail about ECDSA signature generation.

/update/email

Request

You must pass in both uuid and email keys. The UUID can be obtained from the response to a request to the /get_entity endpoint.

POST /0.2/update/email HTTP/1.1
sandbox.silamoney.com
Content-Type: application/json
// if using OAuth2
Authorization: Bearer [GENERATED JWT TOKEN HERE]
// if using ECDSA
authsignature: [GENERATED AUTHSIGNATURE HEX STRING HERE]

{
  "header": {
      "created": 1234567890,
      "app_handle": "your_app_handle",
      "user_handle": "your_individual_end_user",
      "reference": "<your unique id>"
  },
  "uuid": "7f83044b-63c8-4d56-b107-d52fa7ae2d7a",
  "email": "[email protected]"
}

***

HTTP/1.1 200 OK

{
  "success": true,
  "message": "Successfully updated email with UUID 7f83044b-63c8-4d56-b107-d52fa7ae2d7a.",
  "email": {
      "added_epoch": 1599090039,
      "modified_epoch": 1599092327,
      "uuid": "7f83044b-63c8-4d56-b107-d52fa7ae2d7a",
      "email": "[email protected]"
  },
  "status": "SUCCESS",
  "response_time_ms": "123",
  "reference": "<your unique id>",
  "sila_reference_id": "sila-assigned-id"
}
const email = {
  uuid: 'some-uuid-code',
  email: '[email protected]',
};
const res = await sila.updateEmail(userHandle, userPrivateKey, email);

// Success Response Object

console.log(res.statusCode); // 200
console.log(res.data.success); // true
console.log(res.data.status); // SUCCESS
console.log(res.data.message); // Successfully updated email
console.log(res.data.email.added_epoch);
console.log(res.data.email.modified_epoch);
console.log(res.data.email.uuid);
console.log(res.data.email.email);
payload = {
    "user_handle": user_handle,
    "email": email,
    "uuid": uuid
}

response = silasdk.User.updateRegistrationData(app, RegistrationFields.EMAIL, payload, eth_private_key)
    
# Email
{
    "status_code": 200,
    "success": true,
    "message": "Successfully Updated email to user your_individual_end_user.",
    "email": {
        "added_epoch": 1599006972,
        "modified_epoch": 1599006972,
        "uuid": "30c41951-1f2b-445b-8604-fa748316881d",
        "email": "[email protected]"
    },
    "status": "SUCCESS"
}
UserHandleMessage user = UserHandleMessage.builder()
        .userHandle("user_handle")
        .userPrivateKey("user_private_key")
        .build();
EmailMessage message = EmailMessage.builder()
        .uuid("some-uuid-code")
        .email("[email protected]")
        .build();
ApiResponse response = api.updateEmail(user, message);

// Success response
System.out.println(response.getStatusCode()); // 200
Response parsedResponse = (Response) response.getData();
System.out.println(parsedResponse.getSuccess()); // true
System.out.println(parsedResponse.getStatus()); // SUCCESS
System.out.println(parsedResponse.getMessage()); // Successfully updated [data]
System.out.println(parsedResponse.getEmail().getAddedEpoch());
System.out.println(parsedResponse.getEmail().getModifiedEpoch());
System.out.println(parsedResponse.getEmail().getUuid());
System.out.println(parsedResponse.getEmail().getEmail());
// Email
$userHandle = 'user_handle';
$privateKey = 'some private key';
$email = '[email protected]';
$uuid = 'some-uuid-code';
$response = $client->updateEmail($userHandle, $privateKey, $uuid, $email);

echo $response->getStatusCode(); // 200
echo $response->getData()->success; // TRUE
echo $response->getData()->status; // SUCCESS
echo $response->getData()->message; // Successfully updated [data] with UUID some-uuid-code.
echo $response->getData()->email->added_epoch;
echo $response->getData()->email->modified_epoch;
echo $response->getData()->email->uuid; // some-uuid-code
echo $response->getData()->email->email; // your.updated.email@domain.
var response = api.UpdateEmail(userHandle, privateKey, uuid, email);

// Success Object Response
Console.WriteLine(response.StatusCode); // 200
var parsedResponse = (EmailResponse)response.Data;
Console.WriteLine(parsedResponse.Success); // true
Console.WriteLine(parsedResponse.Status); // SUCCESS
Console.WriteLine(parsedResponse.Message); // Successfully updated email
Console.WriteLine(parsedResponse.Email.AddedEpoch);
Console.WriteLine(parsedResponse.Email.ModifiedEpoch);
Console.WriteLine(parsedResponse.Email.Uuid);
Console.WriteLine(parsedResponse.Email.Email);

Request Attributes

KeyTypeDescription
headerJSON objectRequired.

Required keys:

created - Unix epoch timestamp in seconds. Must not be future-dated and must not be dated more than 5 minutes in the past.
app_handle - your app_handle
user_handle - registered entity handle

Optional key:

reference - Can be any string value for your own reference. If not provided, one will be assigned.
uuidStringRequired.

UUID for email object. Can be obtained from /get_entity
emailStringRequired.

Email address to be registered to the specified user_handle. Must have a valid domain.

Responses

Status CodeSuccess AttributeDescription
200trueEmail was successfully updated.
400falseBad request format - check validation_details for more information.
404falseUUID is not assigned to an email registered to the current user.
403falseauthsignature or usersignature header was absent or incorrect.

/update/phone

Request

POST /0.2/update/phone HTTP/1.1
sandbox.silamoney.com
Content-Type: application/json
// if using OAuth2
Authorization: Bearer [GENERATED JWT TOKEN HERE]
// if using ECDSA
authsignature: [GENERATED AUTHSIGNATURE HEX STRING HERE]

{
  "header": {
      "created": 1234567890,
      "auth_handle": "your_app_handle",
      "user_handle": "your_individual_end_user",
      "reference": "<your unique id>"
  },
  "uuid": "51fb4167-83d4-467b-8f08-eb03dbd6facf",
  "phone": "9871237654"
}

***

HTTP/1.1 200 OK

{
  "success": true,
  "message": "Successfully updated phone with UUID 51fb4167-83d4-467b-8f08-eb03dbd6facf.",
  "phone": {
      "added_epoch": 1599090039,
      "modified_epoch": 1599092327,
      "uuid": "51fb4167-83d4-467b-8f08-eb03dbd6facf",
      "phone": "9871237654",
      "primary": false
  },
  "status": "SUCCESS",
  "reference": "<your unique id>",
  "sila_reference_id": "sila-assigned-id"
}
const phone = {
    phone: '9871237654',
    uuid: '51fb4167-83d4-467b-8f08-eb03dbd6facf'
}
const res = await sila.updatePhone(handle, key, phone);

// Success Response Object
console.log(res.statusCode); // 200
console.log(res.data.success); // true
console.log(res.data.status); // SUCCESS
console.log(res.data.message); // Successfully added phone
console.log(res.data.phone.added_epoch);
console.log(res.data.phone.modified_epoch);
console.log(res.data.phone.uuid);
console.log(res.data.phone.phone);
console.log(res.data.phone.primary);
payload = {
    "user_handle": user_handle,
    "phone": phone,
    "uuid": uuid
}

response = silasdk.User.updateRegistrationData(app, silasdk.RegistrationFields.PHONE, payload, eth_private_key)

{
    "status_code": 200,
    "success": true,
    "message": "Successfully Updated phone to user your_individual_end_user.",
    "phone": {
        "added_epoch": 1599007660,
        "modified_epoch": 1599007660,
        "uuid": "ac6435a7-d960-4b0a-9c04-adf99102ba57",
        "phone": "3189250987"
    },
    "status": "SUCCESS"
}
UserHandleMessage user = UserHandleMessage.builder()
        .userHandle("user_handle")
        .userPrivateKey("user_private_key")
        .build();
PhoneMessage message = PhoneMessage.builder()
        .uuid("some-uuid-code")
        .phone("1234567890")
        .build();
ApiResponse response = api.updatePhone(user, message);

// Success response
System.out.println(response.getStatusCode()); // 200
PhoneResponse parsedResponse = (PhoneResponse) response.getData();
System.out.println(parsedResponse.getSuccess()); // true
System.out.println(parsedResponse.getStatus()); // SUCCESS
System.out.println(parsedResponse.getMessage()); // Successfully updated phone
System.out.println(parsedResponse.getPhone().getAddedEpoch());
System.out.println(parsedResponse.getPhone().getModifiedEpoch());
System.out.println(parsedResponse.getPhone().getUuid());
System.out.println(parsedResponse.getPhone().getPhone());
$userHandle = 'user_handle';
$privateKey = 'some private key';
$phone = '1234567890';
$uuid = 'some-uuid-code';
$response = $client->updatePhone($userHandle, $privateKey, $uuid, $phone);

echo $response->getStatusCode(); // 200
echo $response->getData()->success; // TRUE
echo $response->getData()->status; // SUCCESS
echo $response->getData()->message; // Successfully updated phone with UUID some-uuid-code.
echo $response->getData()->phone->added_epoch;
echo $response->getData()->phone->modified_epoch;
echo $response->getData()->phone->uuid; // some-uuid-code
echo $response->getData()->phone->phone; // 1234567890
echo $response->getData()->phone->primary; //false
var response = api.UpdatePhone(userHandle, privateKey, uuid, phone);

// Success Object Response
Console.WriteLine(response.StatusCode); // 200
var parsedResponse = (PhoneResponse)response.Data;
Console.WriteLine(parsedResponse.Success); // true
Console.WriteLine(parsedResponse.Status); // SUCCESS
Console.WriteLine(parsedResponse.Message); // Successfully updated phone
Console.WriteLine(parsedResponse.Phone.AddedEpoch);
Console.WriteLine(parsedResponse.Phone.ModifiedEpoch);
Console.WriteLine(parsedResponse.Phone.Uuid);
Console.WriteLine(parsedResponse.Phone.Phone);
Console.WriteLine(parsedResponse.Phone.Primary);

Request Attributes

KeyTypeDescription
headerJSON objectRequired.

Required keys:

created - Unix epoch timestamp in seconds. Must not be future-dated and must not be dated more than 5 minutes in the past.
app_handle - your app_handle
user_handle - registered entity handle

Optional key:

reference - Can be any string value for your own reference. If not provided, one will be assigned.
uuidStringRequired.

UUID for phone object. Can be obtained from /get_entity
emailStringRequired.

Phone number to be registered to the specified user_handle.

Responses

Status CodeSuccess AttributeDescription
200truePhone was successfully updated.
400falseBad request format - check validation_details for more information.
404falseUUID is not associated with a phone number registered to the current user.
403falseauthsignature or usersignature header was absent or incorrect.

/update/identity

Request

POST /0.2/update/identity HTTP/1.1
sandbox.silamoney.com
Content-Type: application/json
// if using OAuth2
Authorization: Bearer [GENERATED JWT TOKEN HERE]
// if using ECDSA
authsignature: [GENERATED AUTHSIGNATURE HEX STRING HERE]

{
  "header": {
      "created": 1234567890,
      "auth_handle": "your_app_handle",
      "user_handle": "your_individual_end_user",
      "reference": "<your unique id>"
  },
  "uuid": "15aaf8fd-f3ca-4355-a72c-ecebd54984dd",
  "identity_alias": "SSN",
  "identity_value": "123452233"
}

***

HTTP/1.1 200 OK
{
  "success": true,
  "message": "Successfully updated identity with UUID 15aaf8fd-f3ca-4355-a72c-ecebd54984dd.",
  "identity": {
      "added_epoch": 1599090039,
      "modified_epoch": 1599091288,
      "uuid": "15aaf8fd-f3ca-4355-a72c-ecebd54984dd",
      "identity_type": "SSN",
      "identity": "*2233",
      "document_id": null,
      "document_name": null
  },
  "status": "SUCCESS",
  "customer_reference_id": "<your unique id>",
  "sila_reference_id": "sila_assigned_id"
}
const identity = {
    uuid: '51fb4167-83d4-467b-8f08-eb03dbd6facf',
    identity_alias: 'SSN',
    identity_value: '123455898'
}
const res = await sila.updateIdentity(handle, key, identity);

// Success Response Object
console.log(res.statusCode); // 200
console.log(res.data.success); // true
console.log(res.data.status); // SUCCESS
console.log(res.data.message); // Successfully added identity
console.log(res.data.identity.added_epoch);
console.log(res.data.identity.modified_epoch);
console.log(res.data.identity.uuid);
console.log(res.data.identity.identity_type);
console.log(res.data.identity.identity);
# Update Identity
payload = {
    "user_handle": business_handle,
    "identity_alias": identityAlias,
    "identity_value": identityValue,
    "uuid": uuid
}

response = silasdk.User.updateRegistrationData(app, silasdk.RegistrationFields.IDENTITY, payload, eth_private_key)

{
    "success": true,
    "message": "Successfully Updated identity to user your_individual_end_user.",
    "phone": {
        "Updated_epoch": 1599007660,
        "modified_epoch": 1599007660,
        "uuid": "ac6435a7-d960-4b0a-9c04-adf99102ba57",
        "identity_alias": "SSN",
        "identity_value": "*2222"
    },
    "status": "SUCCESS"
}
UserHandleMessage user = UserHandleMessage.builder()
        .userHandle("user_handle")
        .userPrivateKey("user_private_key")
        .build();
IdentityMessage message = IdentityMessage.builder()
        .uuid("some-uuid-code")
        .identityAlias("SSN")
        .identityValue("123452222")
        .build();
ApiResponse response = api.updateIdentity(user, message);

// Success response
System.out.println(response.getStatusCode()); // 200
IdentityResponse parsedResponse = (IdentityResponse) response.getData();
System.out.println(parsedResponse.getSuccess()); // true
System.out.println(parsedResponse.getStatus()); // SUCCESS
System.out.println(parsedResponse.getMessage()); // Successfully updated identity
System.out.println(parsedResponse.getIdentity().getAddedEpoch());
System.out.println(parsedResponse.getIdentity().getModifiedEpoch());
System.out.println(parsedResponse.getIdentity().getUuid());
System.out.println(parsedResponse.getIdentity().getIdentityType());
System.out.println(parsedResponse.getIdentity().getIdentity());
use Silamoney\Client\Domain\IdentityAlias;

$userHandle = 'user_handle';
$privateKey = 'some private key';
$identityAlias = IdentityAlias::SSN();
$identityValue = '654322222';
$uuid = 'some-uuid-code';
$response = $client->updateIdentity($userHandle, $privateKey, $uuid,  $identityAlias, $identityValue);

echo $response->getStatusCode(); // 200
echo $response->getData()->success; // TRUE
echo $response->getData()->status; // SUCCESS
echo $response->getData()->message; // Successfully updated identity with UUID some-uuid-code.
echo $response->getData()->identity->added_epoch;
echo $response->getData()->identity->modified_epoch;
echo $response->getData()->identity->uuid; // some-uuid-code
echo $response->getData()->identity->identity_type; // SSN
echo $response->getData()->identity->identity; // 654322222
var identity = new IdentityMessage
{
    Uuid = "some-uuid-code",
    IdentityAlias = "SSN",
    IdentityValue = "543212222"
};
var response = api.UpdateIdentity(user.UserHandle, user.PrivateKey, identity);

// Success Object Response
Console.WriteLine(response.StatusCode); // 200
var parsedResponse = (IdentityResponse)response.Data;
Console.WriteLine(parsedResponse.Success); // true
Console.WriteLine(parsedResponse.Status); // SUCCESS
Console.WriteLine(parsedResponse.Message); // Successfully updated identity
Console.WriteLine(parsedResponse.Identity.AddedEpoch);
Console.WriteLine(parsedResponse.Identity.ModifiedEpoch);
Console.WriteLine(parsedResponse.Identity.Uuid);
Console.WriteLine(parsedResponse.Identity.IdentityType);
Console.WriteLine(parsedResponse.Identity.Identity);

Request Attributes

KeyTypeDescription
headerJSON objectRequired.

Required keys:

created - Unix epoch timestamp in seconds. Must not be future-dated and must not be dated more than 5 minutes in the past.
app_handle - your app_handle
user_handle - registered entity handle

Optional key:

reference - Can be any string value for your own reference. If not provided, one will be assigned.
uuidStringRequired.

UUID for identity object. Can be obtained from /get_entity
identity_aliasStringRequired.

An entity cannot have more than one SSN or EIN registered to them.

Valid values:
SSN for an individual entity
EIN for a business entity
identity_valueStringRequired.

If identity.identity_alias is an SSN, this value should match the required simplified SSN regex pattern: ^\d{3}-?\d{2}-?\d{4}$.

If identity.identity_alias is EIN, this value should match the required EIN regex pattern: ^\d{2}-?\d{7}$.

Responses

Status CodeSuccess AttributeDescription
200trueIdentity was successfully updated.
400falseBad request format - check validation_details for more information.
404falseUUID is not associated with an identity linked to the current user.
403falseauthsignature or usersignature header was absent or incorrect.

/update/address

Request

POST /0.2/update/address HTTP/1.1
sandbox.silamoney.com
Content-Type: application/json
// if using OAuth2
Authorization: Bearer [GENERATED JWT TOKEN HERE]
// if using ECDSA
authsignature: [GENERATED AUTHSIGNATURE HEX STRING HERE]

{
  "header": {
      "created": 1234567890,
      "app_handle": "your_app_handle",
      "user_handle": "your_individual_end_user",
      "reference": "<your unique id>"
  },
  "uuid": "5de836eb-9234-42bc-b7da-5e9991ab2d4b",
  "address_alias": "New nickname"
}

***

HTTP/1.1 200 OK

{
  "success": true,
  "message": "Successfully updated address with UUID 5de836eb-9234-42bc-b7da-5e9991ab2d4b.",
  "address": {
      "added_epoch": 1599090039,
      "modified_epoch": 1599093463,
      "uuid": "5de836eb-9234-42bc-b7da-5e9991ab2d4b",
      "nickname": "New nickname",
      "street_address_1": "123 NW 1st Ave.",
      "street_address_2": "",
      "city": "Portland",
      "state": "OR",
      "country": "US",
      "postal_code": "12345"
  },
  "status": "SUCCESS",
  "customer_reference_id": "<your unique id>",
  "sila_reference_id": "sila_assigned_id"
}
const address = {
  alias: "Home Number Two",
  street_address_1: "324 Songbird Avenue",
  street_address_2: "Apt. 132",
  city: "Portland",
  state: "VA",
  postal_code: "12345",
  country: "US",
  uuid: "5de836eb-9234-42bc-b7da-5e9991ab2d4b",
};

const res = await sila.updateAddress(handle, key, address);

console.log(res.statusCode);
console.log(res.data.success);
console.log(res.data.status);
console.log(res.data.message);
console.log(res.data.address.added_epoch);
console.log(res.data.address.modified_epoch);
console.log(res.data.address.uuid);
console.log(res.data.address.nickname);
console.log(res.data.address.street_address_1);
console.log(res.data.address.street_address_2);
console.log(res.data.address.city);
console.log(res.data.address.state);
console.log(res.data.address.country);
console.log(res.data.address.postal_code);
payload = {
    "user_handle": user_handle,
    "address_alias": address_alias,
    "street_address_1": street_address_1,
    "street_address_2": street_address_2,
    "city": city,
    "state": state,
    "postal_code": postal_code,
    "country": country,
    "uuid": uuid
}

response = silasdk.User.updateRegistrationData(app, silasdk.RegistrationFields.ADDRESS, payload, eth_private_key)

{
    "status_code": 200,
    "success": true,
    "message": "Successfully updated address to user your_individual_end_user.",
    "address": {
        "added_epoch": 1599008272,
        "modified_epoch": 1599008272,
        "uuid": "2966e38f-e713-4994-a22f-56e076963d01",
        "nickname": "Home Number Two",
        "street_address_1": "324 Songbird Avenue",
        "street_address_2": "Apt 132",
        "city": "Portland",
        "state": "VA",
        "country": "US",
        "postal_code": "12345"
    },
    "status": "SUCCESS"
}
UserHandleMessage user = UserHandleMessage.builder()
        .userHandle("user_handle")
        .userPrivateKey("user_private_key")
        .build();
AddressMessage message = AddressMessage.builder()
        .uuid("some-uuid-code")
        .addressAlias("new address")
        .streetAddress1("324 Songbird Avenue")
        .streetAddress2("Apt. 132") // Optional.
        .city("Portland")
        .state("VA")
        .country("US")
        .postalCode("12345")
        .build();
ApiResponse response = api.updateAddress(user, message);

// Success response
System.out.println(response.getStatusCode()); // 200
AddressResponse parsedResponse = (AddressResponse) response.getData();
System.out.println(parsedResponse.getSuccess()); // true
System.out.println(parsedResponse.getStatus()); // SUCCESS
System.out.println(parsedResponse.getMessage()); // Successfully updated address
System.out.println(parsedResponse.getAddress().getAddedEpoch());
System.out.println(parsedResponse.getAddress().getModifiedEpoch());
System.out.println(parsedResponse.getAddress().getUuid());
System.out.println(parsedResponse.getAddress().getNickname());
System.out.println(parsedResponse.getAddress().getStreetAddress1());
System.out.println(parsedResponse.getAddress().getStreetAddress2());
System.out.println(parsedResponse.getAddress().getCity());
System.out.println(parsedResponse.getAddress().getState());
System.out.println(parsedResponse.getAddress().getCountry());
System.out.println(parsedResponse.getAddress().getPostalCode());
use Silamoney\Client\Domain\Country;

$userHandle = 'user_handle';
$privateKey = 'some private key';
$nickname = 'update_address'; // Optional. This is a nickname that can be attached to the address object. While a required field, it can be left blank if desired.
$streetAddress1 = '124 Main St'; // Optional. This is line 1 of a street address. Post office boxes are not accepted in this field.
$city = 'Sometown'; // Optional. Name of the city where the person being verified is a current resident.
$state = 'CA'; // Optional. Name of state where verified person is a current resident.
$country = Country::US(); // Optional. Two-letter country code.
$postalCode = '54321'; // Optional. In the US, this can be the 5-digit ZIP code or ZIP+4 code.
$streetAddress2 = '' // Optional. This is line 2 of a street address. This may include suite or apartment numbers.
$uuid = 'some-uuid-code';
$response = $client->updateAddress($userHandle, $privateKey, $uuid, $nickname, $streetAddress1, $city, $state, $country, $postalCode, $streetAddress2);

echo $response->getStatusCode(); // 200
echo $response->getData()->success; // TRUE
echo $response->getData()->status; // SUCCESS
echo $response->getData()->message; // Successfully added identity to user user_handle.
echo $response->getData()->address->added_epoch;
echo $response->getData()->address->modified_epoch;
echo $response->getData()->address->uuid; // some-uuid-code
echo $response->getData()->address->nickname; // update_address
echo $response->getData()->address->street_address_1; // 124 Main St
echo $response->getData()->address->street_address_2; //
echo $response->getData()->address->city; // Sometown
echo $response->getData()->address->state; // CA
echo $response->getData()->address->country; // US
echo $response->getData()->address->postal_code; // 54321
var address = new AddressMessage
{
    Uuid = "some-uuid-code", // Required
    AddressAlias = "new_address",
    StreetAddress1 = "324 Songbird Avenue",
    StreetAddress2 = "Apt. 132",
    City = "Portland",
    State = "VA",
    PostalCode = "12345",
    Country = "US"
};
var response = api.UpdateAddress(user.UserHandle, user.PrivateKey, address);

// Success Object Response
Console.WriteLine(response.StatusCode); // 200
var parsedResponse = (AddressResponse)response.Data;
Console.WriteLine(parsedResponse.Success); // true
Console.WriteLine(parsedResponse.Status); // SUCCESS
Console.WriteLine(parsedResponse.Message); // Successfully updated address
Console.WriteLine(parsedResponse.Address.AddedEpoch);
Console.WriteLine(parsedResponse.Address.ModifiedEpoch);
Console.WriteLine(parsedResponse.Address.Uuid);
Console.WriteLine(parsedResponse.Address.Nickname);
Console.WriteLine(parsedResponse.Address.StreetAddress1);
Console.WriteLine(parsedResponse.Address.StreetAddress2);
Console.WriteLine(parsedResponse.Address.City);
Console.WriteLine(parsedResponse.Address.State);
Console.WriteLine(parsedResponse.Address.Country);
Console.WriteLine(parsedResponse.Address.PostalCode);

Request Attributes

KeyTypeDescription
headerJSON objectRequired.

Required keys:

created - Unix epoch timestamp in seconds. Must not be future-dated and must not be dated more than 5 minutes in the past.
app_handle - your app_handle
user_handle - registered entity handle

Optional key:

reference - Can be any string value for your own reference. If not provided, one will be assigned.
uuidStringRequired.

UUID for address object. Can be obtained from /get_entity
address_aliasStringOptional.

This is a nickname that can be attached to the address object. Can be left an empty string.
street_address_1StringOptional.

This is line 1 of a street address. Post office boxes are not accepted in this field.
street_address_2StringOptional.

This is line 2 of a street address. This may include suite or apartment numbers (though, if desired, you can put these in line 1).
cityStringOptional.

Name of the city where the person being verified is a current resident.
stateStringOptional.

Two character of the US state, or DC, where verified person is a current resident.
countryStringOptional.

Two-letter country code. US only valid value
postal_codeStringOptional.

In the US, this can be the 5-digit ZIP code or ZIP+4 code.

Responses

Status CodeSuccess AttributeDescription
200trueAddress was successfully updated.
400falseBad request format - check validation_details for more information.
404falseUUID is not associated with an address registered to the given user.
403falseauthsignature or usersignature header was absent or incorrect.

/update/entity

Request

POST /0.2/update/entity HTTP/1.1
sandbox.silamoney.com
Content-Type: application/json
// if using OAuth2
Authorization: Bearer [GENERATED JWT TOKEN HERE]
// if using ECDSA
authsignature: [GENERATED AUTHSIGNATURE HEX STRING HERE]

{
  "header": {
      "created": 1234567890,
      "app_handle": "your_app_handle",
      "user_handle": "your_individual_end_user",
      "reference": "<your unique id>"
  },
    "first_name": "Newfirst",
    "last_name": "Newlast",
    "entity_name": "New Full Name",
    "birthdate": "1990-02-28"
}

***

HTTP/1.1 200 OK

{
  "success": true,
  "message": "Successfully updated entity with handle \"your_individual_end_user\".",
  "user_handle": "your_individual_end_user",
  "entity_type": "individual",
  "entity": {
      "created_epoch": 1599090039,
      "entity_name": "New Full Name",
      "birthdate": "1990-02-28",
      "first_name": "Newfirst",
      "last_name": "Newlast"
  },
  "status": "SUCCESS",
  "customer_reference_id": "<your unique id>",
  "sila_reference_id": "sila_assigned_id"
}
// Individual
const entity = {
  first_name: "NewFirst",
  last_name: "NewLast",
  entity_name: "NewFirst NewLast",
  birthdate: "1994-01-08",
};

const res = await sila.updateEntity(handle, key, entity);

console.log(res.statusCode);
console.log(res.data.success);
console.log(res.data.status);
console.log(res.data.message);
console.log(res.data.entity_type);
console.log(res.data.user_handle);
console.log(res.data.entity.created_epoch);
console.log(res.data.entity.entity_name);
console.log(res.data.entity.birthdate);
console.log(res.data.entity.first_name);
console.log(res.data.entity.last_name);

// Business
const business = {
  entity_name: "New Company",
  business_type: "corporation",
  naics_code: 721,
  doing_business_as: "NC Ltc.",
  business_website: "https://newdomain.go",
  registration_state: "OR",
};

const res = await sila.updateEntity(handle, key, business);

console.log(res.statusCode);
console.log(res.data.success);
console.log(res.data.status);
console.log(res.data.message);
console.log(res.data.entity_type);
console.log(res.data.user_handle);
console.log(res.data.entity.created_epoch);
console.log(res.data.entity.entity_name);
console.log(res.data.entity.business_type);
console.log(res.data.entity.naics_code);
console.log(res.data.entity.doing_business_as);
console.log(res.data.entity.business_website);
console.log(res.data.entity.registration_state);
# Update Business Entity
payload = {
    "user_handle": business_handle,
    "entity_name": entity_name,
    "birthdate": birthdate,
    "business_type": business_type,
    "naics_code": naics_code,
    "doing_business_as": doing_business_as,
    "business_website": business_website,
    "registration_state":"NY"
}
response = silasdk.User.updateRegistrationData(app, silasdk.RegistrationFields.ENTITY, payload, eth_private_key)

# Success Response
{
    "status_code": 200,
    "success": true,
    "message": "Successfully updated entity with handle your_business_end_user.",
    "user_handle": "your_business_end_user",
    "entity_type": "business",
    "entity": {
        "created_epoch": 1599090039,
        "entity_name": "New Company",
        "birthdate": "1990-02-28",
        "business_type": "corporation",
        "naics_code": 721,
        "doing_business_as": "NC Limited",
        "business_website": "https://yourwebsite.domain",
        "business_uuid": "2966e38f-e713-4994-a22f-56e076963d01",
        "naics_category": "Accommodation and Food Services",
        "naics_subcategory": "Accommodation",
        "registration_state":"NY"
    },
    "status": "SUCCESS"
}
// Individual entity
UserHandleMessage user = UserHandleMessage.builder()
        .userHandle("user_handle")
        .userPrivateKey("user_private_key")
        .build();
IndividualEntityMessage message = IndividualEntityMessage.builder()
        .firstName("NewFirst")
        .lastName("NewLast")
        .entityName("NewFirst NewLast")
        .birthdate(LocalDate.of(1994, 1, 8))
        .build();
ApiResponse response = api.updateEntity(user, message);

// Success response
System.out.println(response.getStatusCode()); // 200
IndividualEntityResponse parsedResponse = (IndividualEntityResponse) response.getData();
System.out.println(parsedResponse.getSuccess()); // true
System.out.println(parsedResponse.getStatus()); // SUCCESS
System.out.println(parsedResponse.getMessage()); // Successfully updated entity
System.out.println(parsedResponse.getUserHandle()); // user_handle
System.out.println(parsedResponse.getEntityType()); // individual
System.out.println(parsedResponse.getEntity().getCreatedEpoch());
System.out.println(parsedResponse.getEntity().getEntityName());
System.out.println(parsedResponse.getEntity().getBirthdate());
System.out.println(parsedResponse.getEntity().getFirstName());
System.out.println(parsedResponse.getEntity().getLastName());

// Business entity
UserHandleMessage user = UserHandleMessage.builder()
        .userHandle("user_handle")
        .userPrivateKey("user_private_key")
        .build();
BusinessEntityMessage message = BusinessEntityMessage.builder()
        .entityName("New Company")
        .birthdate(LocalDate.now())
        .businessType("corporation")
        .naicsCode(721)
        .doingBusinessAs("NC")
        .businessWebsite("https://somedomain.go")
        .registrationState("registration state") // Optional for KYB flow
        .build();
ApiResponse response = api.updateEntity(user, message);

// Success response
System.out.println(response.getStatusCode()); // 200
BusinessEntityMessage parsedResponse = (BusinessEntityMessage) response.getData();
System.out.println(parsedResponse.getSuccess()); // true
System.out.println(parsedResponse.getStatus()); // SUCCESS
System.out.println(parsedResponse.getMessage()); // Successfully updated entity
System.out.println(parsedResponse.getUserHandle()); // user_handle
System.out.println(parsedResponse.getEntityType()); // business
System.out.println(parsedResponse.getEntity().getCreatedEpoch());
System.out.println(parsedResponse.getEntity().getEntityName());
System.out.println(parsedResponse.getEntity().getBirthdate());
System.out.println(parsedResponse.getEntity().getBusinessType());
System.out.println(parsedResponse.getEntity().getNaicsCode());
System.out.println(parsedResponse.getEntity().getNaicsCategory());
System.out.println(parsedResponse.getEntity().getNaicsSubcategory());
System.out.println(parsedResponse.getEntity().getBusinessUuid());
System.out.println(parsedResponse.getEntity().getDoingBusinessAs());
System.out.println(parsedResponse.getEntity().getBusinessWebsite());
System.out.println(parsedResponse.getEntity().getRegistrationState());
// Request - Individual
use DateTime;

$userHandle = 'user_handle';
$privateKey = 'some private key';
$entityName = 'Full Name'; // Optional. The individual full name
$birthdate = new DateTime::createFromFormat('m/d/Y', '1/8/1960'); // Optional. Only date part will be taken when sent to api
$firstName = 'First'; // Optional. The individual first name
$lastName = 'Last'; // Optional. The individual last name
$response = $client->updateEntity($userHandle, $privateKey, $firstName, $lastName, $entityName, $birthdate);

// Response 200 - Individual
echo $response->getStatusCode(); // 200
echo $response->getData()->success; // TRUE
echo $response->getData()->status; // SUCCESS
echo $response->getData()->message; // Successfully added identity to user user_handle.
echo $response->getData()->user_handle;
echo $response->getData()->entity_type; // individual
echo $response->getData()->entity->created_epoch;
echo $response->getData()->entity->entity_name; // Full Name
echo $response->getData()->entity->birthdate; // 1960-01-08
echo $response->getData()->entity->first_name; // First
echo $response->getData()->entity->last_name; // Last

// Request - Business
use DateTime;

$userHandle = 'user_handle';
$privateKey = 'some private key';
$entityName = 'Company Name'; // Optional. The individual full name
$birthdate = new DateTime::createFromFormat('m/d/Y', '1/8/2009'); // Optional. Only date part will be taken when sent to api
$businessType = 'corporation'; // Optional. You can get this values from getBusinessTypes
$naicsCode = 721; // Optional. You can get this codes from getNaicsCategories
$doingBusinessAs = 'Public Company Name'; // Optional.
$businessWebsite = 'https://yourcompony.domain'; // Optional. Must be a valid URL
$registrationState = "LA"; // Optional

$response = $client->updateBusinessEntity($userHandle, $privateKey, $entityName, $birthdate, $businessType, $naicsCode, $doingBusinessAs, $businessWebsite, $registrationState);

// Response 200 - Business
echo $response->getStatusCode(); // 200
echo $response->getData()->success; // TRUE
echo $response->getData()->status; // SUCCESS
echo $response->getData()->message; // Successfully added identity to user user_handle.
echo $response->getData()->entity_type; // business
echo $response->getData()->entity->created_epoch;
echo $response->getData()->entity->entity_name; // Company Name
echo $response->getData()->entity->birthdate; // 2009-01-08
echo $response->getData()->entity->business_type; // corporation
echo $response->getData()->entity->naics_code; // 721
echo $response->getData()->entity->business_uuid; // The business uuid
echo $response->getData()->entity->naics_category; // The NAICS category
echo $response->getData()->entity->naics_subcategory; // The NAICS subcategory
echo $response->getData()->entity->doing_business_as; // Publick Company Name
echo $response->getData()->entity->business_website; // https://yourcompany.domain
// Request - Individual
var entity = new IndividualEntityMessage
{
    FirstName = "NewFirst",
    LastName = "NewLast",
    EntityName = "NewFirst NewLast",
    BirthDate = new DateTime(1994, 1, 8)
};
var response = api.UpdateEntity(user.UserHandle, user.PrivateKey, entity);

// Success Object Response - Individual
Console.WriteLine(response.StatusCode); // 200
var parsedResponse = (IndividualEntityResponse)response.Data;
Console.WriteLine(parsedResponse.Success); // true
Console.WriteLine(parsedResponse.Status); // SUCCESS
Console.WriteLine(parsedResponse.Message); // Successfully updated entity
Console.WriteLine(parsedResponse.UserHandle); // youruserhandle
Console.WriteLine(parsedResponse.EntityType); // individual
Console.WriteLine(parsedResponse.Entity.CreatedEpoch);
Console.WriteLine(parsedResponse.Entity.EntityName);
Console.WriteLine(parsedResponse.Entity.Birthdate);
Console.WriteLine(parsedResponse.Entity.FirstName);
Console.WriteLine(parsedResponse.Entity.LastName);
POST /0.2/update/entity HTTP/1.1
Host: sandbox.silamoney.com
authsignature: [GENERATED AUTHSIGNATURE HEX STRING HERE]
usersignature: [GENERATED USERSIGNATURE HEX STRING HERE]
Content-Type: application/json

{
    "header": {
        "created": 1234567890,
        "app_handle": "your_app_handle",
        "user_handle": "your_business_end_user",
        "reference": "<your unique id>"
    },
    "business_type": "corporation",
    "entity_name": "Your Business Customer, Inc.",
    "birthdate": "1975-01-15",
    "naics_code": 721,
    "doing_business_as": "Your Business Customer Alias Co."
    "registration_state": "OR",
    "business_website": "http://www.yourbusinesscustomer.com"
}

***

HTTP/1.1 200 OK

{
    "success": true,
    "message": "Successfully updated entity with handle \"your_business_end_user\".",
    "user_handle": "your_business_end_user",
    "entity_type": "business",
    "entity": {
        "created_epoch": 1599090039,
        "business_type": "corporation",
        "entity_name": "Your Business Customer, Inc.",
        "birthdate": "1975-01-15",
        "naics_code": 721,
        "doing_business_as": "Your Business Customer Alias Co."
        "registration_state": "OR",
        "business_website": "http://www.yourbusinesscustomer.com"
    },
    "status": "SUCCESS",
    "reference": "<your unique id>"
}
// Request - Business
var entity = new BusinessEntityMessage
{
    EntityName = "New Company",
    BusinessType = "type",
    NaicsCode = 123,
    DoingBusinessAs = "NC Ltd.",
    BusinessWebsite = "https://domain.go",
    RegistrationState="DC"
};
var response = api.UpdateEntity(user.UserHandle, user.PrivateKey, entity);

// Success Object Response - Business
Console.WriteLine(response.StatusCode); // 200
var parsedResponse = (BusinessEntityResponse)response.Data;
Console.WriteLine(parsedResponse.Success); // true
Console.WriteLine(parsedResponse.Status); // SUCCESS
Console.WriteLine(parsedResponse.Message); // Successfully updated entity
Console.WriteLine(parsedResponse.UserHandle); // youruserhandle
Console.WriteLine(parsedResponse.EntityType); // business
Console.WriteLine(parsedResponse.Entity.CreatedEpoch);
Console.WriteLine(parsedResponse.Entity.EntityName);
Console.WriteLine(parsedResponse.Entity.BusinessType);
Console.WriteLine(parsedResponse.Entity.NaicsCode);
Console.WriteLine(parsedResponse.Entity.BusinessUuid);
Console.WriteLine(parsedResponse.Entity.NaicsCategory);
Console.WriteLine(parsedResponse.Entity.NaicsSubcategory);
Console.WriteLine(parsedResponse.Entity.DoingBusinessAs);
Console.WriteLine(parsedResponse.Entity.BusinessWebsite);
Console.WriteLine(parsedResponse.Entity.RegistrationState); // DC

Request Attributes

KeyTypeDescriptionIndividual or Business Entity
headerJSON objectRequired.

Required keys:

created - Unix epoch timestamp in seconds. Must not be future-dated and must not be dated more than 5 minutes in the past.
app_handle - your app_handle
user_handle - registered entity handle

Optional key:

reference - Can be any string value for your own reference. If not provided, one will be assigned.
Both
uuidStringRequired.

UUID for address object. Can be obtained from /get_entity
Both
first_nameStringOptional.Individual only
last_nameStringOptional.Individual only
entity_nameStringOptional.

Full name of individual or legal name of business.
Both
birthdateDateOptional.

Date must be in this format: YYYY-MM-DD

If the entity type is individual, the end user must be 18+. Birthdate cannot be a future date.
Both
business_typeStringOptional.

Do NOT include if business_type_uuid has a value.

Get from allowed business types in /get_business_types endpoint.
Business only
naics_codeIntegerOptional.

This field is used to specify a valid NAICS code.

Get from allowed NAICS codes in /get_naics_categories endpoint.
Business only
doing_business_asStringOptional.

Input if business name differs from legally registered name.
Business only
business_websiteStringOptional.

Must be in URI format.

This value should match the regex pattern: ^(?:[a-z0-9.-+])://(?:[^\s:@/]+ (?::[^\s:@/])?@)?(?:(?:25[0-5]|2[0-4]\d|[0-1]?\d?\d)(?:.(?:25 [0-5]|2[0-4]\d|[0-1]?\d?\d)){3}|[[0-9a-f:.]+]|(a-z\xA1-\uFFFF0- 9?(?:.(?!-)[a-z\xA1-\uFFFF0-9-]{1,63}(?<!-)).(?!-)(?:[a-z\xA1- \uFFFF-]{2,63}|xn--[a-z0-9]{1,59})(?<!-).?|localhost))(?::\d {2,5})?(?:[/?#][^\s])?\Z

Example: http://www.yourdomain.com
Business only
registration_stateStringOptional.

2 letter US state abbreviation.

Options are the 50 US states and DC.
Business only

Responses

Status CodeSuccess AttributeDescription
200trueEntity was successfully updated.
400falseBad request format - check validation_details for more information.
403falseauthsignature or usersignature header was absent or incorrect.