Create a new Factor for the Entity
Create a new Factor for the Entity
Path parameters
-
The unique SID identifier of the Service.
Minimum length is
34
, maximum length is34
. Format should match the following pattern:^VA[0-9a-fA-F]{32}$
. -
Customer unique identity for the Entity owner of the Factor. This identifier should be immutable, not PII, length between 8 and 64 characters, and generated by your external system, such as your user's UUID, GUID, or SID. It can only contain dash (-) separated alphanumeric characters.
Body
-
The friendly name of this Factor. This can be any string up to 64 characters, meant for humans to distinguish between Factors. For
factor_type
push
, this could be a device name. Forfactor_type
totp
, this value is used as the “account name” in constructing thebinding.uri
property. At the same time, we recommend avoiding providing PII. -
The Type of this Factor. Currently
push
andtotp
are supported.Values are
push
ortotp
. -
The algorithm used when
factor_type
ispush
. Algorithm supported:ES256
-
The Ecdsa public key in PKIX, ASN.1 DER format encoded in Base64.
Required when
factor_type
ispush
-
The ID that uniquely identifies your app in the Google or Apple store, such as
com.example.myapp
. It can be up to 100 characters long.Required when
factor_type
ispush
. -
Values are
apn
,fcm
, ornone
. -
For APN, the device token. For FCM, the registration token. It is used to send the push notifications. Must be between 32 and 255 characters long.
Required when
factor_type
ispush
. -
The Verify Push SDK version used to configure the factor
Required when
factor_type
ispush
-
The shared secret for TOTP factors encoded in Base32. This can be provided when creating the Factor, otherwise it will be generated.
Used when
factor_type
istotp
-
Defines how often, in seconds, are TOTP codes generated. i.e, a new TOTP code is generated every time_step seconds. Must be between 20 and 60 seconds, inclusive. The default value is defined at the service level in the property
totp.time_step
. Defaults to 30 seconds if not configured.Used when
factor_type
istotp
-
The number of time-steps, past and future, that are valid for validation of TOTP codes. Must be between 0 and 2, inclusive. The default value is defined at the service level in the property
totp.skew
. If not configured defaults to 1.Used when
factor_type
istotp
-
Number of digits for generated TOTP codes. Must be between 3 and 8, inclusive. The default value is defined at the service level in the property
totp.code_length
. If not configured defaults to 6.Used when
factor_type
istotp
-
Values are
sha1
,sha256
, orsha512
. -
Custom metadata associated with the factor. This is added by the Device/SDK directly to allow for the inclusion of device information. It must be a stringified JSON with only strings values eg.
{"os": "Android"}
. Can be up to 1024 characters in length.
curl \
--request POST 'https://verify.twilio.com/v2/Services/{ServiceSid}/Entities/{Identity}/Factors' \
--user "username:password" \
--header "Content-Type: application/x-www-form-urlencoded" \
--data 'Metadata=%7B%22os%22%3A+%22Android%22%7D&FactorType=push&Binding.Alg=ES256&Config.AppId=com.example.myapp&FriendlyName=FriendlyName&Binding.PublicKey=dGVzdF9rZXk%3D&Config.SdkVersion=1.0&Config.NotificationToken=test_token&Config.NotificationPlatform=fcm'
{"Metadata"=>"{\"os\": \"Android\"}", "FactorType"=>"push", "Binding.Alg"=>"ES256", "Config.AppId"=>"com.example.myapp", "FriendlyName"=>"FriendlyName", "Binding.PublicKey"=>"dGVzdF9rZXk=", "Config.SdkVersion"=>"1.0", "Config.NotificationToken"=>"test_token", "Config.NotificationPlatform"=>"fcm"}
{"Config.Alg"=>"sha1", "FactorType"=>"totp", "Config.Skew"=>1, "FriendlyName"=>"FriendlyName", "Binding.Secret"=>"GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQ", "Config.TimeStep"=>30, "Config.CodeLength"=>6}
{
"sid": "YFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"url": "https://verify.twilio.com/v2/Services/VAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Entities/ff483d1ff591898a9942916050d2ca3f/Factors/YFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"config": {
"app_id": "com.example.myapp",
"sdk_version": "1.0",
"notification_token": "test_token",
"notification_platform": "fcm"
},
"status": "unverified",
"binding": {
"alg": "ES256",
"public_key": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE8GdwtibWe0kpgsFl6xPQBwhtwUEyeJkeozFmi2jiJDzxFSMwVy3kVR1h/dPVYOfgkC0EkfBRJ0J/6xW47FD5vA=="
},
"identity": "ff483d1ff591898a9942916050d2ca3f",
"metadata": {
"os": "Android"
},
"entity_sid": "YEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"account_sid": "ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"factor_type": "push",
"service_sid": "VAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"date_created": "2015-07-30T20:00:00Z",
"date_updated": "2015-07-30T20:00:00Z",
"friendly_name": "friendly_name"
}
{
"sid": "YFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"url": "https://verify.twilio.com/v2/Services/VAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/Entities/ff483d1ff591898a9942916050d2ca3f/Factors/YFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"config": {
"alg": "sha1",
"skew": 1,
"time_step": 30,
"code_length": 6
},
"status": "unverified",
"binding": {
"uri": "otpauth://totp/test-issuer:John%E2%80%99s%20Account%20Name?secret=GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQ&issuer=test-issuer&algorithm=SHA1&digits=6&period=30",
"secret": "GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQ"
},
"identity": "ff483d1ff591898a9942916050d2ca3f",
"metadata": null,
"entity_sid": "YEaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"account_sid": "ACaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"factor_type": "totp",
"service_sid": "VAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"date_created": "2015-07-30T20:00:00Z",
"date_updated": "2015-07-30T20:00:00Z",
"friendly_name": "friendly_name"
}