Our API Documentation offers organizations and entities a clear path to integrating with our CA services. It covers endpoints, request/response formats, authentication, and lifecycle management. With our API, organizations can issue, manage, and validate digital certificates, ensuring secure communication and fostering trust in online interactions.
This documentation aims to provide all the information you need to work with our API.
To authenticate requests, include an Authorization
header with the value "Bearer {YOUR_ACCESS_TOKEN}"
.
All authenticated endpoints are marked with a requires authentication
badge in the documentation below.
You can retrieve your token by visiting your dashboard and clicking Create Token in the API Keys section.
curl --request GET \
--get "https://dev-tonoteca.gettonote.com/api/v1" \
--header "Authorization: Bearer {YOUR_ACCESS_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
cache-control
: no-cache, private
content-type
: application/json
{
"message": "Bad hostname provided.",
"exception": "Symfony\\Component\\HttpKernel\\Exception\\NotFoundHttpException",
"file": "/var/app/staging/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php",
"line": 493,
"trace": [
{
"file": "/var/app/staging/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/Handler.php",
"line": 463,
"function": "prepareException",
"class": "Illuminate\\Foundation\\Exceptions\\Handler",
"type": "->"
},
{
"file": "/var/app/staging/vendor/nunomaduro/collision/src/Adapters/Laravel/ExceptionHandler.php",
"line": 54,
"function": "render",
"class": "Illuminate\\Foundation\\Exceptions\\Handler",
"type": "->"
},
{
"file": "/var/app/staging/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php",
"line": 51,
"function": "render",
"class": "NunoMaduro\\Collision\\Adapters\\Laravel\\ExceptionHandler",
"type": "->"
},
{
"file": "/var/app/staging/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
"line": 188,
"function": "handleException",
"class": "Illuminate\\Routing\\Pipeline",
"type": "->"
},
{
"file": "/var/app/staging/vendor/laravel/framework/src/Illuminate/Http/Middleware/TrustProxies.php",
"line": 39,
"function": "Illuminate\\Pipeline\\{closure}",
"class": "Illuminate\\Pipeline\\Pipeline",
"type": "->"
},
{
"file": "/var/app/staging/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
"line": 183,
"function": "handle",
"class": "Illuminate\\Http\\Middleware\\TrustProxies",
"type": "->"
},
{
"file": "/var/app/staging/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php",
"line": 119,
"function": "Illuminate\\Pipeline\\{closure}",
"class": "Illuminate\\Pipeline\\Pipeline",
"type": "->"
},
{
"file": "/var/app/staging/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
"line": 175,
"function": "then",
"class": "Illuminate\\Pipeline\\Pipeline",
"type": "->"
},
{
"file": "/var/app/staging/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php",
"line": 144,
"function": "sendRequestThroughRouter",
"class": "Illuminate\\Foundation\\Http\\Kernel",
"type": "->"
},
{
"file": "/var/app/staging/vendor/knuckleswtf/scribe/src/Extracting/Strategies/Responses/ResponseCalls.php",
"line": 300,
"function": "handle",
"class": "Illuminate\\Foundation\\Http\\Kernel",
"type": "->"
},
{
"file": "/var/app/staging/vendor/knuckleswtf/scribe/src/Extracting/Strategies/Responses/ResponseCalls.php",
"line": 288,
"function": "callLaravelOrLumenRoute",
"class": "Knuckles\\Scribe\\Extracting\\Strategies\\Responses\\ResponseCalls",
"type": "->"
},
{
"file": "/var/app/staging/vendor/knuckleswtf/scribe/src/Extracting/Strategies/Responses/ResponseCalls.php",
"line": 91,
"function": "makeApiCall",
"class": "Knuckles\\Scribe\\Extracting\\Strategies\\Responses\\ResponseCalls",
"type": "->"
},
{
"file": "/var/app/staging/vendor/knuckleswtf/scribe/src/Extracting/Strategies/Responses/ResponseCalls.php",
"line": 44,
"function": "makeResponseCall",
"class": "Knuckles\\Scribe\\Extracting\\Strategies\\Responses\\ResponseCalls",
"type": "->"
},
{
"file": "/var/app/staging/vendor/knuckleswtf/scribe/src/Extracting/Strategies/Responses/ResponseCalls.php",
"line": 35,
"function": "makeResponseCallIfConditionsPass",
"class": "Knuckles\\Scribe\\Extracting\\Strategies\\Responses\\ResponseCalls",
"type": "->"
},
{
"file": "/var/app/staging/vendor/knuckleswtf/scribe/src/Extracting/Extractor.php",
"line": 236,
"function": "__invoke",
"class": "Knuckles\\Scribe\\Extracting\\Strategies\\Responses\\ResponseCalls",
"type": "->"
},
{
"file": "/var/app/staging/vendor/knuckleswtf/scribe/src/Extracting/Extractor.php",
"line": 163,
"function": "iterateThroughStrategies",
"class": "Knuckles\\Scribe\\Extracting\\Extractor",
"type": "->"
},
{
"file": "/var/app/staging/vendor/knuckleswtf/scribe/src/Extracting/Extractor.php",
"line": 95,
"function": "fetchResponses",
"class": "Knuckles\\Scribe\\Extracting\\Extractor",
"type": "->"
},
{
"file": "/var/app/staging/vendor/knuckleswtf/scribe/src/GroupedEndpoints/GroupedEndpointsFromApp.php",
"line": 125,
"function": "processRoute",
"class": "Knuckles\\Scribe\\Extracting\\Extractor",
"type": "->"
},
{
"file": "/var/app/staging/vendor/knuckleswtf/scribe/src/GroupedEndpoints/GroupedEndpointsFromApp.php",
"line": 72,
"function": "extractEndpointsInfoFromLaravelApp",
"class": "Knuckles\\Scribe\\GroupedEndpoints\\GroupedEndpointsFromApp",
"type": "->"
},
{
"file": "/var/app/staging/vendor/knuckleswtf/scribe/src/GroupedEndpoints/GroupedEndpointsFromApp.php",
"line": 50,
"function": "extractEndpointsInfoAndWriteToDisk",
"class": "Knuckles\\Scribe\\GroupedEndpoints\\GroupedEndpointsFromApp",
"type": "->"
},
{
"file": "/var/app/staging/vendor/knuckleswtf/scribe/src/Commands/GenerateDocumentation.php",
"line": 53,
"function": "get",
"class": "Knuckles\\Scribe\\GroupedEndpoints\\GroupedEndpointsFromApp",
"type": "->"
},
{
"file": "/var/app/staging/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php",
"line": 36,
"function": "handle",
"class": "Knuckles\\Scribe\\Commands\\GenerateDocumentation",
"type": "->"
},
{
"file": "/var/app/staging/vendor/laravel/framework/src/Illuminate/Container/Util.php",
"line": 41,
"function": "Illuminate\\Container\\{closure}",
"class": "Illuminate\\Container\\BoundMethod",
"type": "::"
},
{
"file": "/var/app/staging/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php",
"line": 93,
"function": "unwrapIfClosure",
"class": "Illuminate\\Container\\Util",
"type": "::"
},
{
"file": "/var/app/staging/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php",
"line": 35,
"function": "callBoundMethod",
"class": "Illuminate\\Container\\BoundMethod",
"type": "::"
},
{
"file": "/var/app/staging/vendor/laravel/framework/src/Illuminate/Container/Container.php",
"line": 662,
"function": "call",
"class": "Illuminate\\Container\\BoundMethod",
"type": "::"
},
{
"file": "/var/app/staging/vendor/laravel/framework/src/Illuminate/Console/Command.php",
"line": 211,
"function": "call",
"class": "Illuminate\\Container\\Container",
"type": "->"
},
{
"file": "/var/app/staging/vendor/symfony/console/Command/Command.php",
"line": 326,
"function": "execute",
"class": "Illuminate\\Console\\Command",
"type": "->"
},
{
"file": "/var/app/staging/vendor/laravel/framework/src/Illuminate/Console/Command.php",
"line": 180,
"function": "run",
"class": "Symfony\\Component\\Console\\Command\\Command",
"type": "->"
},
{
"file": "/var/app/staging/vendor/symfony/console/Application.php",
"line": 1096,
"function": "run",
"class": "Illuminate\\Console\\Command",
"type": "->"
},
{
"file": "/var/app/staging/vendor/symfony/console/Application.php",
"line": 324,
"function": "doRunCommand",
"class": "Symfony\\Component\\Console\\Application",
"type": "->"
},
{
"file": "/var/app/staging/vendor/symfony/console/Application.php",
"line": 175,
"function": "doRun",
"class": "Symfony\\Component\\Console\\Application",
"type": "->"
},
{
"file": "/var/app/staging/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php",
"line": 201,
"function": "run",
"class": "Symfony\\Component\\Console\\Application",
"type": "->"
},
{
"file": "/var/app/staging/artisan",
"line": 35,
"function": "handle",
"class": "Illuminate\\Foundation\\Console\\Kernel",
"type": "->"
}
]
}
Search for a signatory by phone number or email and return the Digital ID key of the signatory. Digital ID of user is only returned if signatory was created by you.
curl --request POST \
"https://dev-tonoteca.gettonote.com/api/v1/digital-id/search" \
--header "Authorization: Bearer {YOUR_ACCESS_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"email\": \"john.doe@example.com\",
\"phone\": \"+2348023456789\"
}"
{
"exists": true,
"is_signatory": true,
"identity": "1e487525-7c87-4798-8df4-46e670c61075"
}
Verify a signatory's identity via ID number (based on type) and facial recognition
curl --request POST \
"https://dev-tonoteca.gettonote.com/api/v1/digital-id/biometric-verification" \
--header "Authorization: Bearer {YOUR_ACCESS_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"type\": \"passport\",
\"id_number\": \"A09011994\",
\"photo_string\": \"data:image\\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII=\"
}"
{
"success": true,
"message": "Biometric verification successful",
"verification_id": 102
}
Create an account for a signatory and return the Digital ID key of the signatory
curl --request POST \
"https://dev-tonoteca.gettonote.com/api/v1/digital-id/register" \
--header "Authorization: Bearer {YOUR_ACCESS_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"verification_id\": 1,
\"name\": \"John Doe\",
\"organisation\": \"Acme Inc\",
\"organisational_unit\": \"Sales and Marketing\",
\"city\": \"Ikeja\",
\"state\": \"Lagos\",
\"country\": \"NG\",
\"consent\": false,
\"callback_url\": \"https:\\/\\/example.com\\/callback\",
\"meta\": {
\"user_id\": 1,
\"role\": \"admin\",
\"subscription_plan\": \"basic\"
},
\"key_storage_type\": \"myself\",
\"passphrase\": \"V0rt3x$unsh1n3#L1ght\",
\"passphrase_hint\": \"Combines elements of nature with numeric and special characters.\"
}"
{
"message": "Registration completed. Download your private key",
"identity": "1e487525-7c87-4798-8df4-46e670c61075",
"key_storage_type": "myself",
"private_key_url": "http://ca.test/api/v1/digital-id/private-key/eyJpdiI..."
}
Send an OTP to the prospective signatory via email
curl --request POST \
"https://dev-tonoteca.gettonote.com/api/v1/digital-id/otp/email" \
--header "Authorization: Bearer {YOUR_ACCESS_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"verification_id\": 1,
\"email\": \"john.doe@example.com\"
}"
{
"success": true,
"message": "OTP sent successfully",
"verification_id": 102
}
Verify the OTP from the prospective signatory's email
curl --request POST \
"https://dev-tonoteca.gettonote.com/api/v1/digital-id/otp/email/verify" \
--header "Authorization: Bearer {YOUR_ACCESS_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"verification_id\": 1,
\"token\": \"123456\"
}"
{
"success": true,
"message": "OTP verified successfully"
}
Send an OTP to phone either by phone call or sms of the prospective signatory.
curl --request POST \
"https://dev-tonoteca.gettonote.com/api/v1/digital-id/otp" \
--header "Authorization: Bearer {YOUR_ACCESS_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"verification_id\": 1,
\"type\": \"call\",
\"phone\": \"+2348023456789\"
}"
{
"success": true,
"message": "OTP sent successfully"
}
Verify OTP token sent to phone of the prospective signatory.
curl --request POST \
"https://dev-tonoteca.gettonote.com/api/v1/digital-id/otp/verify" \
--header "Authorization: Bearer {YOUR_ACCESS_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"verification_id\": 1,
\"token\": \"123456\"
}"
{
"success": true,
"message": "OTP verified successfully"
}
Get the ID type the signatory used for biometric verification during registration
curl --request GET \
--get "https://dev-tonoteca.gettonote.com/api/v1/digital-id/access-recovery/verification" \
--header "Authorization: Bearer {YOUR_ACCESS_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"identity\": \"1e487525-7c87-4798-8df4-46e670c61075\"
}"
{
"identity": "1e487525-7c87-4798-8df4-46e670c61075",
"message": "Registration completed."
}
Verify a signatory's identity via ID number (based on type) and facial recognition
curl --request POST \
"https://dev-tonoteca.gettonote.com/api/v1/digital-id/access-recovery/verification/verify" \
--header "Authorization: Bearer {YOUR_ACCESS_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"identity\": \"1e487525-7c87-4798-8df4-46e670c61075\",
\"id_number\": \"A09011994\",
\"photo_string\": \"data:image\\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII=\"
}"
{
"success": true,
"message": "Biometric verification successful"
}
Verify the OTP from the prospective signatory's email
curl --request POST \
"https://dev-tonoteca.gettonote.com/api/v1/digital-id/access-recovery/otp/email/verify" \
--header "Authorization: Bearer {YOUR_ACCESS_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"identity\": \"1e487525-7c87-4798-8df4-46e670c61075\",
\"token\": \"123456\"
}"
{
"success": true,
"message": "OTP verified successfully"
}
Get a signatory's profile details
curl --request GET \
--get "https://dev-tonoteca.gettonote.com/api/v1/digital-id/access-recovery/profile" \
--header "Authorization: Bearer {YOUR_ACCESS_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"identity\": \"1e487525-7c87-4798-8df4-46e670c61075\"
}"
{
"data": {
"name": "Mary Wiza",
"organisation": "Zulauf-Morissette",
"organisational_unit": "Municipal Clerk",
"city": "Isobelburgh",
"state": "Nevada",
"country": "NG",
"country_name": "Nigeria"
}
}
Update a signatory's profile and generate new key pairs
curl --request PUT \
"https://dev-tonoteca.gettonote.com/api/v1/digital-id/access-recovery/profile" \
--header "Authorization: Bearer {YOUR_ACCESS_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"identity\": \"1e487525-7c87-4798-8df4-46e670c61075\",
\"name\": \"John Doe\",
\"organisation\": \"Acme Inc\",
\"organisational_unit\": \"Sales and Marketing\",
\"city\": \"Ikeja\",
\"state\": \"Lagos\",
\"country\": \"NG\",
\"consent\": false,
\"callback_url\": \"https:\\/\\/example.com\\/callback\",
\"meta\": {
\"user_id\": 1,
\"role\": \"admin\",
\"subscription_plan\": \"basic\"
},
\"key_storage_type\": \"myself\",
\"passphrase\": \"V0rt3x$unsh1n3#L1ght\",
\"passphrase_hint\": \"Combines elements of nature with numeric and special characters.\"
}"
{
"message": "Profile updated. Download your private key",
"key_storage_type": "myself",
"private_key_url": "http://ca.test/api/v1/digital-id/private-key/eyJpdiI..."
}
Return an associative array (or dictionary, map, key-value pair etc) of country names with their respective ISO Alpha-2 code as the keys and names as the values
curl --request GET \
--get "https://dev-tonoteca.gettonote.com/api/v1/helpers/countries" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
{
"message": "Unauthenticated."
}
Return the document sign types with their respective labels
curl --request GET \
--get "https://dev-tonoteca.gettonote.com/api/v1/helpers/document-signing/types/label" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
{
"message": "Unauthenticated."
}
Return the document sign types with their respective descriptions
curl --request GET \
--get "https://dev-tonoteca.gettonote.com/api/v1/helpers/document-signing/types/description" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
{
"message": "Unauthenticated."
}
Return a list of Nigerian Identity types as a key value/label pair
curl --request GET \
--get "https://dev-tonoteca.gettonote.com/api/v1/helpers/id-types/nigeria" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
{
"message": "Unauthenticated."
}
The available options for storing signatories' [private] keys
curl --request GET \
--get "https://dev-tonoteca.gettonote.com/api/v1/helpers/key-storage/types" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
{
"message": "Unauthenticated."
}
List the OTP types available
curl --request GET \
--get "https://dev-tonoteca.gettonote.com/api/v1/helpers/otp-types" \
--header "Content-Type: application/json" \
--header "Accept: application/json"
{
"message": "Unauthenticated."
}
Get the storage type chosen by a signatory
curl --request GET \
--get "https://dev-tonoteca.gettonote.com/api/v1/signing/key-storage-type" \
--header "Authorization: Bearer {YOUR_ACCESS_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"identity\": \"1e487525-7c87-4798-8df4-46e670c61075\"
}"
{
"success": true,
"key_storage_ type": "myself"
}
A masked phone number of the signatory
curl --request GET \
--get "https://dev-tonoteca.gettonote.com/api/v1/signing/documents/phone-number" \
--header "Authorization: Bearer {YOUR_ACCESS_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"identity\": \"1e487525-7c87-4798-8df4-46e670c61075\"
}"
{
"success": true,
"phone_number": "+2348*******89"
}
Send OTP SMS or call to the signatory's phone number
curl --request POST \
"https://dev-tonoteca.gettonote.com/api/v1/signing/documents/otp" \
--header "Authorization: Bearer {YOUR_ACCESS_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"identity\": \"1e487525-7c87-4798-8df4-46e670c61075\",
\"type\": \"call\"
}"
{
"success": true,
"message": "OTP sent successfully"
}
Verify OTP token sent to phone of the signatory.
curl --request POST \
"https://dev-tonoteca.gettonote.com/api/v1/signing/documents/otp/verify" \
--header "Authorization: Bearer {YOUR_ACCESS_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"identity\": \"1e487525-7c87-4798-8df4-46e670c61075\",
\"token\": \"123456\"
}"
{
"success": true,
"message": "OTP verified successfully"
}
Create a certificate for signing a document by a signatory who chose to download their private key.
curl --request POST \
"https://dev-tonoteca.gettonote.com/api/v1/signing/documents/certificate/create/myself" \
--header "Authorization: Bearer {YOUR_ACCESS_TOKEN}" \
--header "Content-Type: multipart/form-data" \
--header "Accept: application/json" \
--form "identity=1e487525-7c87-4798-8df4-46e670c61075"\
--form "document_id=e228766c-1b06-4e96-b299-2e610b592def"\
--form "certificate_passphrase=VigilantElephant253!"\
--form "private_key=@/tmp/phpXyoirX"
{
"success": true,
"message": "Signature recorded"
}
Create a certificate for signing a document by a signatory who has his private key saved with us.
curl --request POST \
"https://dev-tonoteca.gettonote.com/api/v1/signing/documents/certificate/create/assisted" \
--header "Authorization: Bearer {YOUR_ACCESS_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"identity\": \"1e487525-7c87-4798-8df4-46e670c61075\",
\"document_id\": \"e228766c-1b06-4e96-b299-2e610b592def\",
\"certificate_passphrase\": \"VigilantElephant253!\",
\"passphrase\": \"V0rt3x$unsh1n3#L1ght\"
}"
{
"success": true,
"message": "Signature recorded"
}
Remove all the details of a signatory from a document signing record. This deletes the certificate generated and all other records.
curl --request DELETE \
"https://dev-tonoteca.gettonote.com/api/v1/signing/documents/certificate/delete/signatory" \
--header "Authorization: Bearer {YOUR_ACCESS_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"identity\": \"1e487525-7c87-4798-8df4-46e670c61075\",
\"document_id\": \"e228766c-1b06-4e96-b299-2e610b592def\"
}"
{
"success": true,
"message": "Signatory deleted from document"
}
Delete all the signatories for a document. This deletes the certificates generated and all other records.
curl --request DELETE \
"https://dev-tonoteca.gettonote.com/api/v1/signing/documents/certificate/delete/signatories" \
--header "Authorization: Bearer {YOUR_ACCESS_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"document_id\": \"e228766c-1b06-4e96-b299-2e610b592def\"
}"
{
"success": true,
"message": "All signatories deleted from document"
}
Create a certificate for signing documents based on organisation credentials.
curl --request POST \
"https://dev-tonoteca.gettonote.com/api/v1/signing/documents/certificate/generate" \
--header "Authorization: Bearer {YOUR_ACCESS_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"signatories\": \"897d0a4e-dffb-49dd-bf69-416b92bb8103,2738af7f-d393-4b55-8b79-adc07abfa547,f70afc88-7548-4da7-8d92-b4ce7efb922e\"
}"
{
"certificate": "*** Certificate string ***",
"signatories": {
"897d0a4e-dffb-49dd-bf69-416b92bb8103": "*** Certificate string ***",
"2738af7f-d393-4b55-8b79-adc07abfa547": "*** Certificate string ***",
"f70afc88-7548-4da7-8d92-b4ce7efb922e": "*** Certificate string ***"
}
}
Sign a document using a certificate.
curl --request POST \
"https://dev-tonoteca.gettonote.com/api/v1/signing/documents/certificate/sign" \
--header "Authorization: Bearer {YOUR_ACCESS_TOKEN}" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"document\": \"https:\\/\\/example.com\\/file.pdf\",
\"signing_type\": 1,
\"name\": \"John Doe\",
\"location\": \"Lagos, Nigeria\",
\"reason\": \"Testing CertAuth\",
\"contact_info\": \"Area 11, 28 Port Harcourt Crescent, Off Gimbiya St, Garki, Abuja\",
\"document_id\": \"e228766c-1b06-4e96-b299-2e610b592def\",
\"certificate_passphrase\": \"VigilantElephant253!\"
}"
{
"success": true,
"signed_pdf": "*** Base 64 string ***"
}