Partner API — v1.0.0
Type: Initial Release · Endpoints introduced: 21
Agreement
GET /tenant/agreement/get-agreement
Tag: Agreement
Summary: fetch agreements
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
agreementId |
string | No | agreement Id |
Response Codes
| Code | Description |
|---|---|
| 200 | will fetch the agreement |
| 400 | Bad request response if fetching the agreement gets failed |
| 404 | No data response if there is no agreement present |
200 — will fetch the agreement
{
"message": "Agreements fetched successfully",
"data": [
{
"id": "4162f690-a5d7-43a5-ba54-82c6f3aa3e09",
"content": "US Patriot ACT: To help the government fight the funding of terrorism and money laundering activities",
"status": "PENDING",
"first_name": "Jone",
"last_name": "Doe",
"email": "test@test.com",
"account_address": "4162f690-a5d7-43a5-ba54-82c6f3aa3e09",
"ip": "0.0.0.0",
"agreement_type": "US_PATRIOTIC_ACT",
"created_at": "2023-06-27T01:05:26.0000000+00:00",
"agreementId": "4162f690-a5d7-43a5-ba54-82c6f3aa3e09"
}
]
}
400 — Bad request response if fetching the agreement gets failed
{
"errors": [
{
"type": "catch",
"message": "Shows what kind of error occurred in the execution of this API"
},
{
"type": "fetch",
"message": "Could't fetch token"
},
{
"type": "catch",
"message": "err.message"
},
{
"type": "Agreement",
"message": "Tenant Id is missing in Headers"
},
{
"type": "fetch",
"message": "Could't fetch token"
},
{
"data": {},
"message": "No data found"
}
]
}
404 — No data response if there is no agreement present
GET /tenant/agreement/terms-and-privacy-agreements
Tag: Agreement
Summary: Fetch Agreement Template
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
type |
string | Yes | Template type e.g. PRIVACY_POLICY or TERMS_CONDITIONS |
Response Codes
| Code | Description |
|---|---|
| 200 | Success response of the fetch agreement template |
| 400 | Error Response |
200 — Success response of the fetch agreement template
{
"message": "Fetched template successfully",
"data": {
"templateId": "4b9c4c86-0701-40cf-9ebb-59bc0ddd4650",
"html": "<Content>",
"type": "UL_TEMPLATE"
}
}
400 — Error Response
{
"errors": [
{
"type": "Catch",
"message": "Shows what kind of error occurred in the execution of this API"
},
{
"type": "Agreement",
"message": "No Template with the type {agreementType}"
}
]
}
POST /tenant/agreement/preview-UL-agreement
Tag: Agreement
Summary: preview UL agreements
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
firstName |
string | Yes | tenant customer first name e.g. Jone |
lastName |
string | Yes | tenant customer last name e.g. Doe |
email |
string | Yes | tenant email e.g. lorem@mygmail.com |
ip |
string | Yes | IP Address e.g. 0.0.0.0 |
accountAddress |
string | Yes | tenant customer account address e.g. 0x874259c8e1d58ac53f6f22e3f3e5a5dc86773248 |
Example Request
{
"firstName": "Jone",
"lastName": "Doe",
"email": "lorem@mygmail.com",
"ip": "0.0.0.0",
"accountAddress": "0x874259c8e1d58ac53f6f22e3f3e5a5dc86773248"
}
Response Codes
| Code | Description |
|---|---|
| 200 | will preview the agreement of UL |
| 400 | Bad request response if fetching the UL agreement gets failed |
| 404 | No data response if there is no agreement present |
200 — will preview the agreement of UL
{
"message": "Agreements fetched successfully",
"data": [
{
"id": "4162f690-a5d7-43a5-ba54-82c6f3aa3e09",
"content": "US Patriot ACT: To help the government fight the funding of terrorism and money laundering activities",
"status": "PENDING",
"first_name": "Jone",
"last_name": "Doe",
"email": "test@test.com",
"account_address": "4162f690-a5d7-43a5-ba54-82c6f3aa3e09",
"ip": "0.0.0.0",
"agreement_type": "US_PATRIOTIC_ACT",
"created_at": "2023-06-27T01:05:26.0000000+00:00",
"agreementId": "4162f690-a5d7-43a5-ba54-82c6f3aa3e09"
}
]
}
400 — Bad request response if fetching the UL agreement gets failed
{
"errors": [
{
"type": "catch",
"message": "Shows what kind of error occurred in the execution of this API"
},
{
"type": "fetch",
"message": "Could't fetch token"
},
{
"type": "catch",
"message": "err.message"
},
{
"type": "Agreement",
"message": "Tenant Id is missing in Headers"
},
{
"type": "fetch",
"message": "Could't fetch token"
},
{
"data": {},
"message": "No data found"
}
]
}
404 — No data response if there is no agreement present
POST /tenant/agreement/preview-agreement
Tag: Agreement
Summary: preview agreements
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
firstName |
string | Yes | tenant customer first name e.g. Jone |
middleName |
string | No | tenant customer middle name |
lastName |
string | Yes | tenant customer last name e.g. Doe |
ip |
string | Yes | IP Address e.g. 0.0.0.0 |
accountAddress |
string | Yes | tenant customer account address e.g. 0x874259c8e1d58ac53f6f22e3f3e5a5dc86773248 |
dateOfBirth |
string | Yes | tenant customer date of birth e.g. 02-02-1997 |
email |
string | Yes | tenant email e.g. lorem@mygmail.com |
taxCountry |
string | Yes | tenant customer tax country code e.g. BO |
taxIdNumber |
string | Yes | tenant customer tax id code e.g. 122-22-2332 |
phoneNumber |
object | Yes | — |
address |
object | Yes | — |
Example Request
{
"firstName": "Jone",
"middleName": "string",
"lastName": "Doe",
"ip": "0.0.0.0",
"accountAddress": "0x874259c8e1d58ac53f6f22e3f3e5a5dc86773248",
"dateOfBirth": "1997-02-02",
"email": "lorem@mygmail.com",
"taxCountry": "BO",
"taxIdNumber": "122-22-2332",
"phoneNumber": {
"country": "IN ",
"number": "7027779322 ",
"sms": true
},
"address": {
"address1": "address1 ",
"address2": "address2 ",
"postalCode": "Lorem",
"city": "Lorem",
"state": "KY",
"country": "BO"
}
}
Response Codes
| Code | Description |
|---|---|
| 200 | will preview the agreement |
| 400 | Bad request response if fetching the agreement gets failed |
| 404 | No data response if there is no agreement present |
200 — will preview the agreement
{
"message": "Agreements fetched successfully",
"data": [
{
"id": "4162f690-a5d7-43a5-ba54-82c6f3aa3e09",
"content": "US Patriot ACT: To help the government fight the funding of terrorism and money laundering activities",
"status": "PENDING",
"first_name": "Jone",
"last_name": "Doe",
"email": "test@test.com",
"account_address": "4162f690-a5d7-43a5-ba54-82c6f3aa3e09",
"ip": "0.0.0.0",
"agreement_type": "US_PATRIOTIC_ACT",
"created_at": "2023-06-27T01:05:26.0000000+00:00",
"agreementId": "4162f690-a5d7-43a5-ba54-82c6f3aa3e09"
}
]
}
400 — Bad request response if fetching the agreement gets failed
{
"errors": [
{
"type": "catch",
"message": "Shows what kind of error occurred in the execution of this API"
},
{
"type": "fetch",
"message": "Could't fetch token"
},
{
"type": "catch",
"message": "err.message"
},
{
"type": "Agreement",
"message": "Tenant Id is missing in Headers"
},
{
"type": "fetch",
"message": "Could't fetch token"
},
{
"data": {},
"message": "No data found"
}
]
}
404 — No data response if there is no agreement present
PUT /tenant/agreement/preview-agreement/{agreementId}
Tag: Agreement
Summary: Update consent of agreement
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
status |
string | Yes | Status e.g. ACCEPTED |
Example Request
Path Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
agreementId |
string | Yes | — |
Response Codes
| Code | Description |
|---|---|
| 200 | will Update consent of agreement |
| 400 | Bad request response if Update consent of agreement get failed |
200 — will Update consent of agreement
{
"data": {
"customerAccountId": "c02d249a-e720-4df8-b1b6-f016e2d351de",
"id": "c02d249a-e720-4df8-b1b6-f016e2d351de",
"status": "PENDING",
"createdAt": "2023-05-01T11:30:25.0000000+00:00",
"updatedAt": "2023-05-01T11:30:25.0000000+00:00"
},
"message": "Agreement successfully updated"
}
400 — Bad request response if Update consent of agreement get failed
{
"errors": [
{
"type": "catch",
"message": "Could't Update agreement"
},
{
"type": "Agreement",
"message": "Tenant Id is missing in Headers"
},
{
"type": "Agreement",
"message": "Could't Update agreement"
},
{
"type": "catch",
"message": "err.message"
}
]
}
PUT /tenant/agreement/ul-preview-agreement/{agreementId}
Tag: Agreement
Summary: Update consent of UL agreement
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
status |
string | Yes | Status e.g. ACCEPTED |
Example Request
Path Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
agreementId |
string | Yes | — |
Response Codes
| Code | Description |
|---|---|
| 200 | will Update consent of UL agreement |
| 400 | Bad request response if Update consent of UL agreement get failed |
200 — will Update consent of UL agreement
{
"data": {
"customerAccountId": "c02d249a-e720-4df8-b1b6-f016e2d351de",
"id": "c02d249a-e720-4df8-b1b6-f016e2d351de",
"status": "PENDING",
"createdAt": "2023-05-01T11:30:25.0000000+00:00",
"updatedAt": "2023-05-01T11:30:25.0000000+00:00"
},
"message": "Agreement successfully updated"
}
400 — Bad request response if Update consent of UL agreement get failed
{
"errors": [
{
"type": "catch",
"message": "Could't Update agreement"
},
{
"type": "Agreement",
"message": "Tenant Id is missing in Headers"
},
{
"type": "Agreement",
"message": "Could't Update agreement"
},
{
"type": "catch",
"message": "err.message"
}
]
}
General
GET /transactions/identifier/{identifier}/type/{type}/history
Summary: API endpoint to fetch the on chain or off chain transactions history
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
startdate |
string | No | mm/dd/yyyy |
enddate |
string | No | mm/dd/yyyy |
startblock |
string | No | 13390483 |
endblock |
string | No | 18590483 |
sort |
string | No | Defaults to descending order. Available values: asc, desc |
page |
string | No | 1 |
offset |
string | No | 12 |
Path Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
identifier |
string | Yes | Pass any one identifier(namespace or tenantNamespace or customNamespace or accountAddress) namespace: example "tenant.user.ul" tenantNamespace example "tenant.ul" accountAddress example "0x520b81aaA2AB71812f163e5e6B5a9e4B9f117975" customNamespace example "custom.domain" |
type |
string | Yes | transaction type |
Response Codes
| Code | Description |
|---|---|
| 200 | Fetch on chain or off chain transactions history |
| 400 | Error : 400 response |
GET /transactions/{identifier}/balance
Summary: Gets the balance of the address.
Path Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
identifier |
string | Yes | Pass any one identifier(namespace or tenantNamespace or customNamespace or accountAddress) namespace: example "tenant.user.ul" tenantNamespace example "tenant.ul" accountAddress example "0x520b81aaA2AB71812f163e5e6B5a9e4B9f117975" customNamespace example "custom.domain" |
Response Codes
| Code | Description |
|---|---|
| 200 | Gets the balance of the address. |
| 400 | Error : 400 response |
Off Chain Transactions
GET /offchainTransaction/transfer-method
Tag: Off Chain Transactions
Summary: fetch transfer methods
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
type |
string | Yes | e.g. ach |
namespace |
string | No | e.g. fourthunicorn.raju1bh4.ul |
blockchainAddress |
string | No | e.g. 0x8262f83b50e933677a89c854ba7dc64d3ae52001 |
Response Codes
| Code | Description |
|---|---|
| 200 | will fetch transfer methods via identityId |
| 400 | Bad request response if transfer methods fetching get failed |
200 — will fetch transfer methods via identityId
{
"data": {
"id": "string",
"bankDetails": "string",
"type": "string",
"createdAt": "string"
},
"message": "Successfully fetched from transfer methods"
}
400 — Bad request response if transfer methods fetching get failed
{
"errors": [
{
"type": "catch",
"message": "shows the error message while API failed in execution"
},
{
"type": "Transfer Method",
"message": "Please provide either namespace or blockchain address"
},
{
"type": "Transfer Method",
"message": "Tenant Id is missing in Headers"
},
{
"message": "Please provide valid namespace",
"type": "No data found"
},
{
"type": "Transfer Method",
"message": "Couldn't allow the transaction, customer doesn't belong to Tenant"
},
{
"type": "Transfer Method",
"message": "isTenantAuthorized?.message"
},
{
"message": "Please provide valid namespace",
"type": "No data found"
},
{
"data": [],
"message": "No Transfer Method Available For : namespace"
},
{
"type": "Transfer Method",
"message": "Couldn't allow the transaction, customer doesn't belong to Tenant"
},
{
"type": "Transfer Method",
"message": "isTenantAuthorized?.message"
},
{
"message": "Please provide valid namespace",
"type": "No data found"
},
{
"message": "Failed to fetch the transfer method",
"type": "catch"
}
]
}
POST /offchainTransaction/transfer-method
Tag: Off Chain Transactions
Summary: create a transfer for tenant or customer
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
namespace |
string | Yes | Transfer method identity owner |
blockchainAddress |
string | Yes | Blockchain Address |
type |
string | Yes | Transfer method type One of: card, ach e.g. ['card', 'ach'] |
bankName |
string | Yes | bank Name of User e.g. Royal bank |
bankAccountName |
string | Yes | bank Account Name of User e.g. foobar |
bankAccountNumber |
string | Yes | bank Account Number of User e.g. GB94BARC10201530093459 |
routingNumber |
string | Yes | routingNumber e.g. 011401533 |
accountType |
string | Yes | Account type checking | saving e.g. checking |
Example Request
{
"namespace": "string",
"blockchainAddress": "string",
"type": [
"card",
"ach"
],
"bankName": "Royal bank",
"bankAccountName": "foobar",
"bankAccountNumber": "GB94BARC10201530093459",
"routingNumber": "011401533",
"accountType": "checking"
}
Response Codes
| Code | Description |
|---|---|
| 400 | Bad request response if transfer methods fetching get failed |
400 — Bad request response if transfer methods fetching get failed
{
"errors": [
{
"type": "catch",
"message": "shows the error message while API failed in execution"
},
{
"type": "Transfer Method",
"message": "Please provide either namespace or blockchain address"
},
{
"type": "Transfer Method",
"message": "Tenant Id is missing in Headers"
},
{
"message": "Please provide valid namespace",
"type": "No data found"
},
{
"type": "Transfer Method",
"message": "Couldn't allow the transaction, customer doesn't belong to Tenant"
},
{
"type": "Transfer Method",
"message": "isTenantAuthorized?.message"
},
{
"message": "Please provide valid namespace",
"type": "No data found"
},
{
"data": [],
"message": "No Transfer Method Available For : namespace"
},
{
"type": "Transfer Method",
"message": "Couldn't allow the transaction, customer doesn't belong to Tenant"
},
{
"type": "Transfer Method",
"message": "isTenantAuthorized?.message"
},
{
"message": "Please provide valid namespace",
"type": "No data found"
},
{
"message": "Failed to fetch the transfer method",
"type": "catch"
}
]
}
Payment
POST /transaction/add-fund
Tag: Payment
Summary: fetch add fund url for wallet user account
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
amount |
number | Yes | amount |
namespace |
string | Yes | Fund user namespace e.g. test.jones1.ul |
successUrl |
string | No | success redirect url e.g. https://example.com/payments/success |
failureUrl |
string | No | failure redirect url e.g. https://example.com/payments/failure |
cancelUrl |
string | No | cancel redirect url e.g. https://example.com/payments/cancel |
ipAddress |
string | Yes | Ip Address e.g. 127.0.0.1 |
token |
string | Yes | Token Symbol e.g. THAI |
Example Request
{
"amount": 0,
"namespace": "test.jones1.ul",
"successUrl": "https://example.com/payments/success",
"failureUrl": "https://example.com/payments/failure",
"cancelUrl": "https://example.com/payments/cancel",
"ipAddress": "127.0.0.1",
"token": "THAI"
}
Response Codes
| Code | Description |
|---|---|
| 201 | Success Response when url is fetched successfully |
| 400 | Error response for all possible cases when calling add fund api gets failed. |
201 — Success Response when url is fetched successfully
{
"data": {
"namespace": "blrwizards.sheetalstagk.ul",
"url": "https://pay.sandbox.checkout.com/page/hpp_CizJqjrq23?_pcf"
}
}
400 — Error response for all possible cases when calling add fund api gets failed.
{
"errors": [
{
"type": "Add Fund",
"message": "please enter namespace of user"
},
{
"type": "Add Fund ",
"message": "no payment provider detail found"
},
{
"type": "Add Fund",
"message": "Something went wrong, please try again"
}
]
}
POST /transaction/add-fund-ach
Tag: Payment
Summary: Initiate fund deposit request through cliq ACH
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
transactionAmount |
number | Yes | amount e.g. 1 |
token |
string | Yes | Token | under which token that amount to be transferred e.g. USBC |
customerBankAccountType |
string | Yes | Customer Bank Account Type e.g. checking |
customerBankAccountNumber |
string | No | Customer Bank Account Number e.g. 1 |
customerBankRoutingNumber |
string | No | Customer Bank Routing Number e.g. 102000076 |
ipAddress |
string | Yes | Ip Address e.g. 127.0.0.1 |
Example Request
{
"transactionAmount": 1,
"token": "USBC",
"customerBankAccountType": "checking",
"customerBankAccountNumber": "1",
"customerBankRoutingNumber": "102000076",
"ipAddress": "127.0.0.1"
}
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
namespace |
string | No | e.g. wizzit.albertab.ul |
customNamespace |
string | No | — |
accountAddress |
string | No | e.g. 0x29358a44c1a18cd08974625d258986e243805c34 |
Response Codes
| Code | Description |
|---|---|
| 201 | Success Response when request initiated successfully |
| 400 | Error response for all possible cases when calling add-fund-ach API gets fail. |
201 — Success Response when request initiated successfully
{
"data": {
"namespace": "produled.qamark.ul",
"transactionId": "49dad5f9-173d-4e63-a08f-f3a62eb905c4",
"amount": 1,
"cardTransactionHistory": {
"card_transaction_id": "49dad5f9-173d-4e63-a08f-f3a62eb905c4",
"status": "APPROVED",
"description": "card transaction status is approved",
"created_at": "2023-07-20T07:29:55.0000000+00:00",
"cardTransactionHistoryId": "f5ae6c1f-cbfc-41f5-af83-33a898255e57"
}
}
}
400 — Error response for all possible cases when calling add-fund-ach API gets fail.
{
"errors": [
{
"error_code": "ULDT2005",
"type": "deposit-tier2-failed",
"message": "Maximum allowed number of deposit transactions per month for a user per wallet criteria not met"
}
]
}
POST /transaction/expire-session
Tag: Payment
Summary: Expire payment session
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
transactionId |
string | Yes | transaction id of the transaction for which session you want to expire |
Example Request
Response Codes
| Code | Description |
|---|---|
| 201 | Success Response when session expired successfully |
| 400 | Error response for all possible cases when calling session expired gets failed. |
201 — Success Response when session expired successfully
400 — Error response for all possible cases when calling session expired gets failed.
{
"errors": [
{
"type": "Add Fund",
"message": "please enter namespace of user"
},
{
"type": "Add Fund ",
"message": "no payment provider detail found"
},
{
"type": "Add Fund",
"message": "Something went wrong, please try again"
}
]
}
Tenant Customers
GET /tenant/customer/customer-details
Tag: Tenant Customers
Summary: fetch details of a customer using either user-namespace, account-address, customer-name or custom-namespace
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
namespace |
string | No | User namespace e.g. esstech.merryw.ul |
accountAddress |
string | No | Account Address e.g. 0x520b81aaA2AB71812f163e5e6B5a9e4B9f117975 |
name |
string | No | Customer Name |
customNamespace |
string | No | Custom Namespace |
Response Codes
| Code | Description |
|---|---|
| 200 | will fetch the tenant customer details successfully |
| 400 | Bad request response if tenant customer detail fetching get failed |
| 404 | will give you the error response when it don't find any data related the given user-namespace, account-address, customer-name or custom-namespace |
200 — will fetch the tenant customer details successfully
{
"message": "Customer details fetched successfully",
"data": [
{
"domainNamespace": "ul-ledger.user.ul",
"customNamespace": "esstech.ul",
"namespaceProvider": "msv",
"tenantName": "Prod Uled",
"firstName": "amber",
"middleName": "donald",
"lastName": "wenny",
"taxIdNumber": "122-22-2332",
"ssn": "ssn",
"phoneNumber": "+15417543010",
"dateOfBirth": "1997-04-02",
"address": {
"city": "Lorem",
"state": "KY",
"street": "Lorem",
"address1": "address1 ",
"country": "BO",
"postalCode": "Lorem",
"isoCountryCode": "US"
},
"latLong": {
"lat_long_data": "Lorem",
"lat_long_country": "US",
"lat_long_city": "address1"
},
"email": "amber.wenny@mail.com",
"accountAddress": "0x3107259fa40121c259e524042b30326fd9625516",
"kycStatus": "PENDING",
"fundingStatus": "ACCEPTED",
"complianceStatus": "ACCEPTED",
"accountStatus": "ACTIVE",
"customerAccountCategory": "bronze",
"wallets": [
{
"tenantName": "globalIdInc3",
"domainNamespace": "globalidinc3.universalle1.ul",
"accountAddress": "0x3107259fa40121C259W524042b31386fD9625228",
"isGlobal": false,
"isPrimary": false,
"customNamespace": "johnwink004",
"namespaceProvider": "ens"
},
{
"tenantName": "globalIdInc3",
"domainNamespace": "globalidinc3.universalle2.ul",
"accountAddress": "0x3107259fa40121C259E524042b31386fS9625228",
"isGlobal": false,
"isPrimary": false,
"customNamespace": "johnwink005",
"namespaceProvider": "ens"
},
{
"tenantName": "globalIdInc3",
"domainNamespace": "globalidinc3.universalle3.ul",
"accountAddress": "0x3107259fa40121C258W524042b31386fD9625228",
"isGlobal": false,
"isPrimary": false,
"customNamespace": "johnwink1004",
"namespaceProvider": "ens"
},
{
"tenantName": "globalIdInc3",
"domainNamespace": "globalidinc3.universalle4.ul",
"accountAddress": "0x3107259fa40121C255E524042b31386fS9625228",
"isGlobal": false,
"isPrimary": false,
"customNamespace": "johnwink1005",
"namespaceProvider": "ens"
},
{
"tenantName": "globalIdInc3",
"domainNamespace": "globalidinc3.universalle5.ul",
"accountAddress": "0x3107259fa40121C245E524042b31386fS9625228",
"isGlobal": false,
"isPrimary": false,
"customNamespace": "johnwink1006",
"namespaceProvider": "ens"
},
{
"tenantName": "globalIdInc3",
"domainNamespace": "globalidinc3.universalle6.ul",
"accountAddress": "0x3107259fa40121C245E524042b3138c6fS9625228",
"isGlobal": false,
"isPrimary": false,
"customNamespace": "johnwink100a6",
"namespaceProvider": "ens"
},
{
"tenantName": "globalIdInc3",
"domainNamespace": "globalidinc3.universalle7.ul",
"accountAddress": "0x3107259fa40121C24d5E524042b3138c6fS9625228",
"isGlobal": false,
"isPrimary": false,
"customNamespace": "johnwinkv100a6",
"namespaceProvider": "ens"
},
{
"tenantName": "globalIdInc3",
"domainNamespace": "globalidinc3.universalle8.ul",
"accountAddress": "0x3107259fa40121C2sg4d5E524042b3138c6fS9625228",
"isGlobal": false,
"isPrimary": false,
"customNamespace": "johnwingkv10s0a6",
"namespaceProvider": "ens"
},
{
"tenantName": "globalIdInc3",
"domainNamespace": "globalidinc3.universall.ul",
"accountAddress": "0x3107259fa40121c259e124042b31386fd9625228",
"isGlobal": false,
"isPrimary": true,
"customNamespace": null,
"namespaceProvider": null
}
],
"PEPScreeningPassed": "Pending",
"geographyScreening": "string",
"locationConfidenceScore": "string",
"nameScreening": "string",
"overallComplianceStatus": "string"
}
]
}
400 — Bad request response if tenant customer detail fetching get failed
{
"errors": [
{
"type": "More value",
"message": "Please provide only one value"
},
{
"type": "No value",
"message": "Please provide any one value"
},
{
"type": "No value",
"message": "Please provide valid tenant id"
},
{
"type": "No data found",
"message": "No data found"
},
{
"type": "catch",
"message": "error[1]"
},
{
"type": "catch",
"message": "err.message"
}
]
}
404 — will give you the error response when it don't find any data related the given user-namespace, account-address, customer-name or custom-namespace
POST /tenant/customer
Tag: Tenant Customers
Summary: onboard tenant customer
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
firstName |
string | Yes | tenant customer first name e.g. Jone |
middleName |
string | No | tenant customer middle name |
lastName |
string | Yes | tenant customer last name e.g. Doe |
accountAddress |
string | Yes | account address of customer |
customerMetaData |
object | No | meta data details of customer |
tenantId |
string | Yes | tenant id of customer e.g. e1e9adb4-d3bd-4ba5-98b8-011c03a9d2b1 |
customNamespace |
string | No | custom namespace for tenant wallet user e.g. jonedoe |
provider |
string | No | custom namespace provider e.g. ens |
ulNamespace |
string | No | if a cutomster onboarded in tenant A and wants to onboard in tenant B, then ul namespace is required e.g. digit.sam.ul |
maritalStatus |
string | No | marital status One of: married, unmarried e.g. ['married', 'unmarried'] |
dateOfBirth |
string | Yes | tenant customer date of birth e.g. 02-02-1997 |
email |
string | Yes | tenant email e.g. lorem@mygmail.com |
gender |
string | No | please give every letter in CAPS One of: male, female, others, unknown e.g. unknown |
phoneNumber |
string | Yes | phone number of tenant customer e.g. 123455656789 |
nationality |
string | No | Nationality of user |
ip_address |
string | Yes | ip address |
ssn |
string | No | ssn details |
stateLicenseId |
string | No | state license id |
tin |
string | No | tin number |
address |
object | Yes | — |
lat_long |
object | No | — |
tax |
object | No | — |
governmentDocuments |
array[object] | No | — |
passport |
object | No | — |
others |
object | No | — |
selfieContent |
string | Yes | selfie of user |
metroLocationDetails |
object | No | — |
additionalLatLong |
object | No | — |
additionalAddress |
object | No | — |
geoLocationDetails |
object | No | — |
metroAreaDetails |
object | No | — |
countryDetails |
object | No | — |
gidName |
string | No | GID Name |
gidDOB |
string | No | GID DOB e.g. 2012-12-12 |
gidPhoto |
string | No | GID Photo |
gidIdNumber |
string | No | GID ID Number |
gidCountry |
string | No | GID Country |
gidState |
string | No | GID State |
gidIssueDate |
string | No | GID Issue Date e.g. 2012-12-12 |
gidExpirationDate |
string | No | GID Expiration Date e.g. 2012-12-12 |
gidAddress |
object | No | — |
gidGender |
string | No | GID Gender |
bankAccount |
boolean | No | bank account e.g. false |
bankAccountDetails |
object | Yes | — |
Example Request
{
"firstName": "Jone",
"middleName": "string",
"lastName": "Doe",
"accountAddress": "string",
"customerMetaData": {},
"tenantId": "e1e9adb4-d3bd-4ba5-98b8-011c03a9d2b1",
"customNamespace": "jonedoe",
"provider": "ens",
"ulNamespace": "digit.sam.ul",
"maritalStatus": [
"married",
"unmarried"
],
"dateOfBirth": "1997-02-02",
"email": "lorem@mygmail.com",
"gender": "unknown",
"phoneNumber": "123455656789",
"nationality": "string",
"ip_address": "string",
"ssn": "string",
"stateLicenseId": "string",
"tin": "string",
"address": {
"city": "Lorem",
"state": "KY",
"street": "Lorem",
"address1": "address1 ",
"country": "BO",
"postalCode": "Lorem",
"isoCountryCode": "US"
},
"lat_long": {
"lat_long_data": "Lorem",
"lat_long_country": "US",
"lat_long_city": "address1 "
},
"tax": {
"country": "BO",
"idNumber": "122-22-2332",
"state": "string"
},
"governmentDocuments": [
{
"description": "national id card of user",
"fileName": "idCard.png",
"side": "front",
"type": "DriversLicense",
"content": "string",
"number": "123455",
"issuedCountry": "INDIA",
"expired": false,
"validFromDate": "2012-12-12",
"validTillDate": "2012-02-02"
}
],
"passport": {
"description": "national id card of user",
"fileName": "idCard.png",
"side": "front",
"type": "DriversLicense",
"content": "string",
"number": "123455",
"issuedCountry": "INDIA",
"expired": false,
"validFromDate": "2012-12-12",
"validTillDate": "2012-02-02"
},
"others": {
"stateIdLicense": "321",
"proofOfAddress": "321",
"alienIdCard": "321"
},
"selfieContent": "string",
"metroLocationDetails": {
"shortName": "San Francisco",
"fullName": "San Francisco, California",
"code": "USA-SFO"
},
"additionalLatLong": {
"lat": "37.8888888",
"long": "-122.1777777"
},
"additionalAddress": {
"fullName": "United States of America",
"nameISO3": "USA"
},
"geoLocationDetails": {
"declaredAddress": "San Francisco",
"phoneNumber": "+91-9876676556",
"iPAddress": "127.0.0.1"
},
"metroAreaDetails": {
"deviceData": "example",
"declaredAddress": "San Francisco, California",
"phoneNumber": "+91-987765566",
"iPAddress": "127.0.0.1"
},
"countryDetails": {
"deviceData": "example",
"declaredAddress": "San Francisco, California",
"phoneNumber": "+91-9876665654",
"iPAddress": "127.0.0.1"
},
"gidName": "string",
"gidDOB": "2012-12-12",
"gidPhoto": "string",
"gidIdNumber": "string",
"gidCountry": "string",
"gidState": "string",
"gidIssueDate": "2012-12-12",
"gidExpirationDate": "2012-12-12",
"gidAddress": {
"fullAddress": "Lorem Ipsum 30, 13612 Tallinn, Estonia"
},
"gidGender": "string",
"bankAccount": "false",
"bankAccountDetails": {
"bankName": "US Bank",
"accountHolderName": "John Doe",
"bankType": "Savings"
}
}
Response Codes
| Code | Description |
|---|---|
| 201 | Created response after tenant customer successfully onboard |
| 400 | Error response after tenant customer onboarding gets failed |
201 — Created response after tenant customer successfully onboard
{
"data": {
"firstName": "Jone",
"middleName": "string",
"lastName": "Doe",
"accountAddress": "string",
"tenantId": "e1e9adb4-d3bd-4ba5-98b8-011c03a9d2b1",
"dateOfBirth": "1997-02-02",
"email": "lorem@mygmail.com",
"gender": "male",
"phoneNumber": "123455656789",
"address": {
"city": "Lorem",
"state": "KY",
"street": "Lorem",
"address1": "address1 ",
"country": "BO",
"postalCode": "Lorem",
"isoCountryCode": "US"
},
"tax": {
"country": "BO",
"idNumber": "122-22-2332",
"state": "string"
},
"documents": [
{
"description": "national id card of user",
"fileName": "idCard.png",
"side": "front",
"type": "DriversLicense",
"content": "string",
"number": "123455",
"issuedCountry": "INDIA",
"expired": false,
"validFromDate": "2012-12-12",
"validTillDate": "2012-02-02"
}
],
"faceImage": "string",
"complianceStatus": "PENDING",
"customerAccountId": "11167c62-b6b4-4031-ac92-6ef56e9648bd",
"domainNamespace": "allahabad.amitp.ul"
},
"message": "Customer's profile submitted for review"
}
400 — Error response after tenant customer onboarding gets failed
{
"errors": [
{
"type": "catch",
"message": "Please provide valid tenant id"
},
{
"type": "Onboard Customer",
"message": "Please provide a valid ISO 3166-1 alpha-2 country and state code"
},
{
"type": "Onboard Customer",
"message": "Custom namespace is taken"
},
{
"type": "Duplicate",
"message": "Account address already taken"
},
{
"type": "Tenant",
"message": "Tenant's account has been blocked. You will be not able to onboard any user. Please get in touch with support team"
},
{
"type": "Duplicate",
"message": "No data found with given tenant Id"
},
{
"type": "Tenant",
"message": "Tenant onboarding status is isTenantAvailableCheck?.onboardingStatus"
},
{
"type": "onboard",
"message": "A user is already been registered with provided email id"
},
{
"type": "onboard",
"message": "Wallet user already exists inside tenant"
},
{
"message": "There are no sufficient documents",
"type": "Documents"
},
{
"message": "A user is already been registered with provided email id",
"type": "Duplicate"
},
{
"type": "Finclusive",
"message": "messages"
},
{
"type": "catch",
"message": "err[1]"
},
{
"type": "catch",
"message": "error.message"
},
{
"type": "Identity",
"message": "error in deleting identity"
},
{
"type": "Rule Error",
"errors": "axiosResponse.errors"
}
]
}
POST /tenant/customer/add-wallet
Tag: Tenant Customers
Summary: Add wallet to wallet user
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
customerAccountId |
string | Yes | id of wallet user e.g. e1e9adb4-d3bd-4ba5-98b8-011c03a9d2b1 |
tenantId |
string | Yes | tenant id in which wallet user is onboard e.g. e1e9adb4-d3bd-4ba5-98b8-011c03a9d2b1 |
customNamespace |
string | Yes | custom namespace for tenant wallet user e.g. jonedoe |
provider |
string | Yes | custom namespace provider e.g. ens |
accountAddress |
string | Yes | account address of wallet user e.g. walletUserAccountAddress |
Example Request
{
"customerAccountId": "e1e9adb4-d3bd-4ba5-98b8-011c03a9d2b1",
"tenantId": "e1e9adb4-d3bd-4ba5-98b8-011c03a9d2b1",
"customNamespace": "jonedoe",
"provider": "ens",
"accountAddress": "walletUserAccountAddress"
}
Response Codes
| Code | Description |
|---|---|
| 201 | Success Response when wallet is added successfully |
| 400 | Error response for all possible cases when adding wallet api gets failed. |
201 — Success Response when wallet is added successfully
{
"data": {
"customerAccountId": "1a310d45-0f5f-4f44-bc1d-6ddfd9547787e",
"namespace": "tenantDomain.sheetalku1.ul"
},
"message": "wallet added successfully"
}
400 — Error response for all possible cases when adding wallet api gets failed.
{
"errors": [
{
"type": "Add Wallet ",
"message": "Multi wallet feature has been disabled by tenant name"
},
{
"type": "Add Wallet",
"message": "Not able to fetch basic details of wallet user"
},
{
"type": "Add Wallet",
"message": "Wallet user details not found"
},
{
"type": "Add Wallet",
"message": "Please use unique account address"
},
{
"type": "Add Wallet",
"message": "Custom namespace is already taken"
},
{
"type": "Add Wallet",
"message": "Something went wrong, please try again"
}
]
}
POST /tenant/customer/upgrade
Tag: Tenant Customers
Summary: update tenant customer | Modifier - Gurumoorthy
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
tenantId |
string | Yes | tenant id of customer e.g. e1e9adb4-d3bd-4ba5-98b8-011c03a9d2b1 |
customerAccountId |
string | Yes | customer account id of customer e.g. cbf2f17a-d0d1-42da-a6cc-cb28f99484ea |
tax |
object | No | — |
tin |
string | No | Tin Id |
stateLicenseId |
string | No | state license id |
governmentDocuments |
array[string] | No | — |
gidName |
string | No | GID Name |
gidDOB |
string | No | GID DOB e.g. 2012-12-12 |
gidPhoto |
string | No | GID Photo |
gidIdNumber |
string | No | GID ID Number |
gidCountry |
string | No | GID Country |
gidState |
string | No | GID State |
gidIssueDate |
string | No | GID Issue Date e.g. 2012-12-12 |
gidExpirationDate |
string | No | GID Expiration Date e.g. 2012-12-12 |
gidAddress |
object | No | — |
gidGender |
string | No | GID Gender |
reRunComplianceCheck |
boolean | No | Re - Run Compliance Check |
bankAccount |
boolean | No | bank account e.g. false |
bankAccountDetails |
object | Yes | — |
Example Request
{
"tenantId": "e1e9adb4-d3bd-4ba5-98b8-011c03a9d2b1",
"customerAccountId": "cbf2f17a-d0d1-42da-a6cc-cb28f99484ea",
"tax": {
"country": "BO",
"idNumber": "134567890",
"state": "US"
},
"tin": "string",
"stateLicenseId": "string",
"governmentDocuments": [
{
"description": "national id card of user",
"fileName": "idCard.png",
"side": "front",
"type": "DriversLicense",
"content": "string",
"number": "123455",
"issuedCountry": "INDIA",
"expired": false,
"validFromDate": "2012-12-12",
"validTillDate": "2012-02-02"
},
{
"description": "national id card of user",
"fileName": "idCard.png",
"side": "back",
"type": "DriversLicense",
"content": "string",
"number": "123455",
"issuedCountry": "INDIA",
"expired": false,
"validFromDate": "2012-12-12",
"validTillDate": "2012-02-02"
}
],
"gidName": "string",
"gidDOB": "2012-12-12",
"gidPhoto": "string",
"gidIdNumber": "string",
"gidCountry": "string",
"gidState": "string",
"gidIssueDate": "2012-12-12",
"gidExpirationDate": "2012-12-12",
"gidAddress": {
"fullAddress": "Lorem Ipsum 30, 13612 Tallinn, Estonia"
},
"gidGender": "string",
"reRunComplianceCheck": true,
"bankAccount": "false",
"bankAccountDetails": {
"bankName": "US Bank",
"accountHolderName": "John Doe",
"bankType": "Savings"
}
}
Response Codes
| Code | Description |
|---|---|
| 202 | Success response |
| 400 | Error response |
202 — Success response
400 — Error response
{
"errors": [
{
"type": "Customer",
"message": "There is no account for the given customer Id"
},
{
"type": "Upgrade",
"message": "Customer cannot able to upgrade while ONBOARDING status is PENDING"
},
{
"type": "Upgrade",
"message": "Customer cannot able to upgrade while ONBOARDING status is REJECTED"
},
{
"type": "Documents",
"message": "There are no sufficient documents"
},
{
"type": "Finclusive",
"message": "messages"
},
{
"type": "Rule failed",
"message": "ruleCheck.errors"
},
{
"type": "Upgrade customer",
"message": "Customer is already upgraded to silver"
},
{
"type": "catch",
"message": "err[1]"
},
{
"type": "catch",
"message": "error"
}
]
}
PUT /tenant/customer/primary-wallet/{namespace}/{isPrimary}
Tag: Tenant Customers
Summary: TenantCustomerController_updatePrimaryWallet
Path Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
namespace |
string | Yes | Namespace e.g. sans.ul |
isPrimary |
boolean | Yes | true/false e.g. True |
Response Codes
| Code | Description |
|---|---|
| 200 | — |
PUT /tenant/customer/{customerId}
Tag: Tenant Customers
Summary: TenantCustomerController_updateCustomer
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
customNamespace |
string | Yes | Custom namespace of customer e.g. myNamespace |
Example Request
Path Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
customerId |
string | Yes | Customer Id e.g. 90a8983d-2aba-4a2c-b094-399f644ba1b1 |
Response Codes
| Code | Description |
|---|---|
| 200 | — |
Verification APIs
POST /tenant/customer/get-auth-url
Tag: Verification APIs
Summary: Get VFP (Verification Fingerprint)
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
sourceIp |
string | Yes | Source Ip e.g. 127.0.0.1 |
finalTargetUrl |
string | Yes | Final Target Url e.g. https://google.com |
mobileNumber |
string | Yes | Mobile Number e.g. 2001001686 |
dob |
string | No | DOB e.g. 01-01-1994 |
ssn |
string | No | ssn e.g. 1232 |
Example Request
{
"sourceIp": "127.0.0.1",
"finalTargetUrl": "https://google.com",
"mobileNumber": "2001001686",
"dob": "1994-01-01",
"ssn": "1232"
}
Response Codes
| Code | Description |
|---|---|
| 202 | Success response |
| 400 | Error response |
202 — Success response
{
"data": {
"requestId": "7f83-b0c4-90e0-90b3-11e10800200c9a66",
"status": "0",
"description": "Success"
},
"message": "Success"
}
400 — Error response
{
"errors": [
{
"message": "Get auth URL request got failed",
"type": "Prove"
},
{
"type": "Prove",
"message": "Either dob or ssn required and should be valid."
},
{
"type": "Prove",
"message": "SMS request got failed"
},
{
"type": "Prove",
"message": "Get auth URL request got failed"
}
]
}
POST /tenant/customer/validate-user
Tag: Verification APIs
Summary: validate user
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
vfp |
string | Yes | verification finger print of user |
requestId |
string | Yes | Request Id |
Example Request
Response Codes
| Code | Description |
|---|---|
| 202 | Success Response |
| 400 | Error response |
202 — Success Response
{
"data": {
"firstName": "Tod",
"lastName": "Weedall",
"addresses": {
"address": "39 South Trail",
"extendedAddress": "string",
"city": "San Antonio",
"region": "TX",
"postalCode": "78285"
},
"emailAddresses": [
"tweedalld@ehow.com"
],
"ssn": "565228370",
"dob": "1984-12-10",
"trustScore": 1000
}
}
400 — Error response
{
"errors": [
{
"type": "Catch",
"message": [
{
"type": "catch",
"message": "Shows the unknown errors while the API execution"
},
{
"type": "Prove",
"message": "Request Id not found"
},
{
"errors": "tokenErrors"
},
{
"type": "catch",
"message": "err.message"
},
{
"type": "catch",
"message": "err.message"
}
]
}
]
}