Additional documentation
Status codes
Each time any error occurs, as part of the response you’ll find a error code (in addition to the corresponding HTTP status code). Find below the list of error codes and descriptions:
Domain and scope error codes
Error code | Status code | Message |
---|---|---|
2000 | 400 | Domain not valid |
2010 | 400 | Scope not valid |
API key error codes
Error code | Status code | Message |
---|---|---|
2100 | 401 | The API key is expired. Please, refresh the API key and try the operation again |
2105 | 401 | The API key is not valid |
2110 | 403 | The API key is not allowed for this operation |
2115 | 401 | The API key was revoked |
2120 | 401 | The API key was soft locked temporarily. Please, renew the secret to unlock the API key |
2125 | 401 | The API key was hard locked. Please, contact with support to unlock the API key |
Developer error codes
Error code | Status code | Message |
---|---|---|
2200 | 400 | A developer with the specified email already exists |
2205 | 404 | Developer not found |
2210 | 400 | An application with the specified name already exists |
2215 | 404 | Application not found |
2220 | 400 | Unable to update the application. At least a passcode was found |
Passcode error codes
Error code | Status code | Message |
---|---|---|
2300 | 404 | Passcode not found |
2305 | 400 | The passcode has expired |
2310 | 400 | The passcode has been revoked |
2315 | 400 | The passcode has not been yet consented |
2320 | 400 | Given passcode has already been consented |
File error codes
Error code | Status code | Message |
---|---|---|
2400 | 423 | Unable to post a new file. A previous file with the same domain and scope is being processed |
2405 | 423 | Unable to post a new file. A previous file with the same domain and scope is in quarantine |
2410 | 404 | The file was not found |
2415 | 400 | Unable to process the operation in the current file state |
2420 | 410 | The file has not been uploaded yet or the content is empty |
2425 | 413 | The file size exceeds the size allowed by the server |
2430 | 400 | Unable to complete file upload. File format not allowed |
2435 | 404 | No available or in-process file was found for the specified domain and scope |
Server error codes
Error code | Status code | Message |
---|---|---|
2500 | 500 | An unexpected error has occurred while sending the confirmation email |
2505 | 408 | The server didn’t receive a timely response from the licensing server |
2510 | 429 | Too many requests |
Tracking error codes
Error code | Status code | Message |
---|---|---|
2700 | 404 | Tracking not found |
Refresh Secret error codes
Error code | Status code | Message |
---|---|---|
2800 | 400 | Unable to update the secret. The initial API key is not valid |
2805 | 400 | Unable to update the secret. The specified context is not valid |
2810 | 400 | Unable to update the secret. The secret is not valid, the API key was hard locked. Please, contact with support to unlock the API key |
2815 | 401 | The API key was hard locked |
2820 | 401 | The API key was revoked |
Refresh API key error codes
Error code | Status code | Message |
---|---|---|
2900 | 400 | Unable to refresh the API key. The initial API key is not valid |
2905 | 400 | Unable to refresh the API key. The secret is not valid |
2910 | 409 | The API key was soft locked temporarily. Please, renew the secret to unlock the API key |
2915 | 401 | The API key was hard locked. Please contact with support to unlock the API key |
2920 | 401 | The API key was revoked |
Security error codes
Error code | Status code | Message |
---|---|---|
4000 | 400 | The token ‘XXX’ is not valid |
4005 | 500 | There was an error trying to validate the captcha |
4010 | 400 | Captcha value not valid |
Generic error codes
Error code | Status code | Message |
---|---|---|
5000 | 500 | An unexpected error has occurred while processing the request |
5001 | 400 | The HTTP header ‘XXX’ was not found |
5002 | 400 | The message received may vary. Anyway, a descriptive message with the result of the validation of the body will be given |
5003 | 403 | SSL required |
5004 | 400 | The query parameter ‘XXX’ was not found |
5005 | 400 | Invalid query parameter (XXX) . Allowed values are: A,B,C |
5006 | 400 | Invalid HTTP header (XXX) . Allowed values are: A,B,C |
Cache error codes
Error code | Status code | Message |
---|---|---|
6000 | 400 | The key ‘XXX’ was not found in the cache |
Other error codes
Error code | Status code | Message |
---|---|---|
9999 | 501 | The operation is not implemented |
Notification information
Some operations described in the API reference section that end with a notification that the platform will send to the other side. All notifications are given following the format below:
{
"type": "NOTIFICATION TYPE",
"payload":
{
"NOTIFICATION OBJECT"
}
}
In this section, you could find the payload and details that will come with each notification.
Passcode consent operations
- SDI will notify to the 3rd party application that a passcode generated has been consented.
{ "type": "consent", "payload": { "passcode": "<The passcode being consented>", "apikey": "<The API key that the 3rd party app should use to connect with the Sage product that consented the passcode>" } }
Passcode revoke operations
- SDI will notify to the 3rd party application that a previous granted passcode has now been revoked.
{ "type": "revoke", "payload": { "passcode": "<The passcode that has been revoked>" } }
Tracking file operations
- The file is not valid and SDI warn the owner of the file with the issues found. This is normally due to some issues with the file formar according to the JSON-schema defined. In the payload, an array with the first ten validation errors could be found.
{ "type": "tracking", "payload": { "passcode": "<The passcode that has been revoked>", "scope": "<The name of the scope that the files belongs to>", "trackingUrl": "<This is the URL given in the response of the completeURL POST operation>", "status": "forbidden", "errors": { { "line": <Line number of the JSON file where the error resides>, "kind": "<Type of error produced during the schema validation process>", "message": "<Error message>" }, { "line": <Line number of the JSON file where the error resides>, "kind": "<Type of error produced during the schema validation process>", "message": "Error message" }, ... { "line": <Line number of the JSON file where the error resides>, "kind": "<Type of error produced during the schema validation process>", "message": "<Error message>" } } } }
- The progress processing the file has changed and the consumer is notified. This way, it’s possible to keep track of the progress and inform the user (where applies).
{ "type": "tracking", "payload": { "passcode": "<The passcode that has been revoked>", "scope": "<The name of the scope that the files belongs to>", "trackingUrl": "<This is the URL given in the response of the completeURL POST operation>", "status": "processing", "progress": <Progress percentage updated> } }
- The file has been successfully delivered, validated and ingested by the consumer, but still there is no result file available (until the consumer ingest the file).
{ "type": "tracking", "payload": { "passcode": "<The passcode that has been revoked>", "scope": "<The name of the scope that the files belongs to>", "trackingUrl": "<This is the URL given in the response of the completeURL POST operation>", "status": "accepted", "resultFileAvailable": false } }
- The file has been ingested in the consumer application and produced a result file with the details.
{ "type": "tracking", "payload": { "passcode": "<The passcode that has been revoked>", "scope": "<The name of the scope that the files belongs to>", "trackingUrl": "<This is the URL given in the response of the completeURL POST operation>", "status": "accepted", "resultFileAvailable": true } }
- The consumer file ingestion has failed, but still there is no result file available (until the consumer produces the file with the details).
{ "type": "tracking", "payload": { "passcode": "<The passcode that has been revoked>", "scope": "<The name of the scope that the files belongs to>", "trackingUrl": "<This is the URL given in the response of the completeURL POST operation>", "status": "failed", "resultFileAvailable": false } }
- The consumer file ingestion has failed and the consumer application has produced a result file with the details.
{ "type": "tracking", "payload": { "passcode": "<The passcode that has been revoked>", "scope": "<The name of the scope that the files belongs to>", "trackingUrl": "<This is the URL given in the response of the completeURL POST operation>", "status": "failed", "resultFileAvailable": true } }
- The file has been delivered to the consumer, but the consumer failed processing it for any reason.
{ "type": "tracking", "payload": { "passcode": "<The passcode that has been revoked>", "scope": "<The name of the scope that the files belongs to>", "trackingUrl": "<This is the URL given in the response of the completeURL POST operation>", "status": "badRequest" } }
File upload operations
- The platform will advice each consumer that the other side has uploaded a new file to any of the scopes available, and it’s ready to be consumed by the other side.
{ "type": "fileUploaded", "payload": { "passcode": "<The passcode behind the integration that the new file belongs to>", "scope": "<The name of scope that receives the new file>" } }