> For the complete documentation index, see [llms.txt](https://docs.vida.id/identity-stack/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.vida.id/identity-stack/sign/digital-signature/directsign-api/api-reference/choose-signer/signer-is-not-verified-by-vida.md).

# Signer is not verified by VIDA

{% hint style="warning" %}
**Important**: The content of this page is only applicable if the client does NOT use VIDA full verification.&#x20;

To be able to use Registration API, the client has to undergo Registration Authority Assessment. Please contact VIDA team for more details
{% endhint %}

## Description

If the client already has an existing authoritative source connection to verify the signers — for example: direct connection or existing KYC provider — the client can use Registration API to register the pre-verified signer.&#x20;

The usage of this API is strictly defined by Registration Authoritity assessment & agreement. Please contact VIDA team for more details.

1. The API below will generate an identifier `registrationId` for the pre-verified user, which will be used for DirectSign digital signature using Komdigi-rooted certificate.&#x20;
2. After a successful Registration, please refer to [Create Envelope with Document Upload](/identity-stack/sign/digital-signature/directsign-api/api-reference/create-envelope/create-envelope-with-document-upload.md) for signing document using DirectSign API

***

## API Authentication

Please refer to [API Authentication](/identity-stack/verify/indonesia-verification/integration/api/api-authentication.md) for getting API Token access

***

## Registration API

### API Endpoint

<mark style="color:green;">`POST`</mark> <mark style="color:$primary;">`https://{{environment_url}/main/v2/services/ra`</mark>

### Request Body

<pre class="language-json"><code class="lang-json"><strong>{
</strong>    "partnerTrxId": "UUID",  
    "mobile": "+6281234567890", 
    "email": "email@email.com",
    "govId": "3511001234567890",
    "govIdType": "KTP",
    "fullName": "John Doe",
    "dob": "1995-01-21",
    "selfiePhoto": "&#x3C;base64 of Selfie image>",
    
    "idCardPhoto": "&#x3C;base64 of ID card image>",
    "motherMaidenName": "TestMMN",
    "pob": "TestPOB",
    "address": "TestAddress",
    "village": "TestVillage",
    "district": "TestDistrict",
    "city": "TestCity",
    "province": "TestProvince",
    "consent": {
        "consentedAt": "{{today}}",
        "consentGiven": true
    }
}
</code></pre>

<table><thead><tr><th width="192.8828125">Name</th><th width="95.2265625">Type</th><th width="126.19921875">Mandatory?</th><th>Description</th></tr></thead><tbody><tr><td>partnerTrxId</td><td>String</td><td>Yes</td><td>Client-provided unique signer identifier<br><br>This identifier should ideally be kept the same with the client's own user identifier.<br><br>partnerTrxId will be used to in <a data-mention href="#get-registration-id">#get-registration-id</a><a data-mention href="#get-transaction-details">#get-transaction-details</a>API</td></tr><tr><td>mobile</td><td>String</td><td>Yes</td><td>The signer's phone number<br><br>Format: </td></tr><tr><td>email</td><td>String</td><td>Yes*</td><td>The signer's email address<br><br>If the client do verify the signer's email address, then this field is mandatory. Otherwise, this field should be left blank</td></tr><tr><td>govId</td><td>String</td><td>Yes</td><td>The signer's government ID / NIK</td></tr><tr><td>govIdType</td><td>String</td><td>Yes</td><td>The government ID type (eg: KTP)</td></tr><tr><td>fullName</td><td>String</td><td>Yes</td><td>The signer's full name</td></tr><tr><td>dob</td><td>String</td><td>Yes</td><td>The signer's date of birth</td></tr><tr><td>selfiePhoto</td><td>String</td><td>Yes</td><td>The signer's liveness-accepted selfie photo<br><br>Base64 of XXX file extension<br>Minimum size:<br>Maximum size: </td></tr><tr><td>idCardPhoto</td><td>String</td><td>No</td><td>The signer's ID Card photo<br><br>Base64 of XXX file extension<br>Minimum size:<br>Maximum size: </td></tr><tr><td>motherMaidenName</td><td>String</td><td>No</td><td>The signer's mother maiden name</td></tr><tr><td>pob</td><td>String</td><td>No</td><td>The signer's place of birth</td></tr><tr><td>address</td><td>String</td><td>No</td><td>The signer's address</td></tr><tr><td>village</td><td>String</td><td>No</td><td>The signer's village address</td></tr><tr><td>district</td><td>String</td><td>No</td><td>The signer's district address</td></tr><tr><td>city</td><td>String</td><td>No</td><td>The signer's city address</td></tr><tr><td>province</td><td>String</td><td>No</td><td>The signer's province address</td></tr><tr><td>consent</td><td>Array</td><td>Yes</td><td>Consent collection</td></tr><tr><td>consent.consentedAt</td><td>String</td><td>Yes</td><td>The timestamp (in epoch) of when the user's consent is collected</td></tr><tr><td>consent.consentGiven</td><td>Boolean</td><td>Yes</td><td>Consent status (true)</td></tr></tbody></table>

### Response Body

#### Success

```json
{
    "data": {
        "registrationId": "004646b4-879e-4b99-90d6-1cc21c713891"
    }
}
```

***

## Get Registration ID

### API Endpoint

<mark style="color:green;">`GET`</mark> <mark style="color:$primary;">`https://{{environment_url}/main/v2/services/ra/<partnerTrxId>/user`</mark>

### Response Body

#### Success

```json
{
    "data": {
        "partnerTrxId": "Test123",
        "registrationId": "004646b4-879e-4b99-90d6-1cc21c713812"
    }
}
```

***

## Get Transaction Details

### API Endpoint

<mark style="color:green;">`GET`</mark> <mark style="color:$primary;">`https://{{environment_url}/main/v2/services/ra/<partnerTrxId>/transaction-detail`</mark>

### Response Body

#### Success

```json
{
    "data": {
        "registrationId": "UUID",  
        "mobile": "+6281234567890", 
        "email": "email@email.com",
        "govId": "3511001234567890",
        "govIdType": "KTP",
        "fullName": "John Doe",
        "dob": "1995-01-21",
        "selfiePhoto": "<base64 of Selfie image>",
        "idCardPhoto": "<base64 of ID card image>",
        "motherMaidenName": "TestMMN",
        "pob": "TestPOB",
        "address": "TestAddress",
        "village": "TestVillage",
        "district": "TestDistrict",
        "city": "TestCity",
        "province": "TestProvince",
        "consent": {
            "consentedAt": "{{today}}",
            "consentGiven": true
        }
    }
}
```

***

## Verify by Submitting

#### Request - Without Mobile Number

```json
"{
    ""errors"": [
        {
            ""code"": 1006,
            ""title"": ""mobile"",
            ""detail"": ""Must not be blank""
        }
    ]
}"
```

#### Request - Without DOB

```json
"{
    ""errors"": [
        {
            ""code"": 1006,
            ""title"": ""dob"",
            ""detail"": ""must not be null""
        }
    ]
}"
```

#### Request - Without FullName

```json
{
    "errors": [
        {
            "code": 1006,
            "title": "fullName",
            "detail": "must not be blank"
        }
    ]
}
```

#### Request - Without Consent

```json
"{
    ""errors"": [
        {
            ""code"": 1006,
            ""title"": ""consent"",
            ""detail"": ""Invalid Consent field""
        }
    ]
}"
```

#### Request - Without Selfie

```json
"{
    ""errors"": [
        {
            ""code"": 1006,
            ""title"": ""selfiePhoto"",
            ""detail"": ""must not be blank""
        }
    ]
}"
```

#### Request - Without Gov ID

```json
"{
    ""errors"": [
        {
            ""code"": 1006,
            ""title"": ""govId"",
            ""detail"": ""Invalid GovId""
        }
    ]
}"
```

## Verify if User Exists

### fullName has changed

```json
"{
    ""errors"": [
        {
            ""code"": 4501,
            ""title"": ""User update failed. Modification of the user's dob/fullName is not permitted."",
            ""detail"": ""Cannot update user '06db127f-bd42-5866-b5d3-707bba67d20a' due to changes in certificate attributes (fullName/dob)""
        }
    ]
}"
```

### DOB has changed

```json
"{
    ""errors"": [
        {
            ""code"": 4501,
            ""title"": ""User update failed. Modification of the user's dob/fullName is not permitted."",
            ""detail"": ""Cannot update user '06db127f-bd42-5866-b5d3-707bba67d20a' due to changes in certificate attributes (fullName/dob)""
        }
    ]
}"
```

### FullName, Email has changed

```json
"{
    ""errors"": [
        {
            ""code"": 4501,
            ""title"": ""User update failed. Modification of the user's dob/fullName is not permitted."",
            ""detail"": ""Cannot reregister user due to changes in certificate attributes (fullName/dob)""
        }
    ]
}"
```

### FullName, MMN has changed

```json
"{
    ""errors"": [
        {
            ""code"": 4501,
            ""title"": ""User update failed. Modification of the user's dob/fullName is not permitted."",
            ""detail"": ""Cannot reregister user due to changes in certificate attributes (fullName/dob)""
        }
    ]
}"
```

## Check external RA user

```json
"{
    ""errors"": [
        {
            ""code"": 1000,
            ""title"": ""An error occurred while processing request"",
            ""detail"": """"
        }
    ]
}"
```

## Check VIDA RA user

```json
"{
    ""errors"": [
        {
            ""code"": 1000,
            ""title"": ""An error occurred while processing request"",
            ""detail"": """"
        }
    ]
}"
```
