Developer's Guide
Introduction
In Jodoo, APIs include App API, Form & Data API, Docs API, Workflow API, and Contact API.
Note:
Starting from V2, Jodoo will introduce (never reduce) new input and output parameters while maintaining compatibility with previous versions. Developers should anticipate the addition of new parameters and ensure the stability of their codes. For instance, in the department API of version 2, a new parameter called "seq" has been added, but it does not impact the logic of version 1. It is not expected that similar updates will require the creation of new versions in the future.
Rule(s)
- The URL for accessing APIs is https://api.jodoo.com/api. Note: This is not a direct URL, and it should be used in conjunction with parameters such as "appid".
- All API requests are required to be authenticated and initiated via HTTPS.
- All requests should be made using the POST method.
- Data transmission encode should be UTF-8.
- You should use the form_data format for the file upload API and use JSON for others.
Rate Limit
Maximum global request acceptance rate: 50 requests per second.
The request rate limit for each API can be found in the corresponding API documentation.
Authentication Method
Jodoo uses simple token-based authentication method. By default, API Key will not be generated and you need to click Create API Key to generate the key.
Steps: Open Platform > API Key > Create API Key. One company can generate up to 500 API keys.
Enable, disable, or delete existing API keys.
On the Guide page, click API Docs. Then you can read certain API documents according to your needs.
Use HTTP Headers to set the value of Authorization as "Bearer YOUR_APIKEY" for security authentication.
For example:
1 $ curl -i https://app.jodoo.com/api/v5/callback \
2 -H "Authorization: Bearer YOUR_APIKEY"
Error Reference
All APIs follow a response format of "code + error message" to indicate the reason for an error. The API should return an HTTP status code "2xx" for successful requests. In case of an error, it should return the HTTP status code "400", and the response body should include an error code ("code") and an error message ("msg") to provide detailed information about the error.
1 HTTP/1.1 400
2 Content-Type: application/json
3 {
4 "code": 8303,
5 "msg": "Too Many Requests",
6 }
Status Code
The followings are the status code references:
Status Code | Response |
2xx | Success |
400 | Bad Request |
502 | Bad Gateway |
579 | File Upload Failed |
Error Code
If the status code is 400, the server will return an error code ("code") and an error message ("msg"). Details about the error codes are as follows:
Code | Message | Description |
1 | Invalid Request | The request is invalid. |
1005 | Duplicate Email | The email already exists. |
1010 | Member Not Found | The member does not exist. |
1017 | Invalid Member Name | The member's name is in an invalid format. |
1018 | Invalid Email | The email is in an invalid format. |
1019 | Invalid Member Nickname | The member's nickname is in an invalid format. |
1022 | Invalid Company/Team | The member's current company/team does not exist. |
1024 | Invalid Mobile Number | The mobile number is invalid. Enter a new number and try again. |
1027 | Duplicate Phone Number | The phone number already exists. |
1058 | No Permission | Do not have permission to call the task list. |
1065 | Duplicate Member | The member has already been added to the team. |
1082 | Phone Number/Email Required | The phone number/email is required. |
1085 | Nickname Required | The member's nickname is required. |
1087 | Duplicate Unique Fields | Duplicate unique fields. |
1092 | Username Limit Exceeded | The length of the username has exceeded the limit. |
1096 | Invalid Request Parameter(s) | The request contains invalid member parameter(s). |
1201 | Invalid Role | The role does not exist. |
1203 | Invalid Role Group/Role | The role group/role information is invalid. |
1205 | Role Group Required | The role group is required. |
1206 | Invalid Role Group | The role group does not exist. |
1207 | Role Group Name Limit Exceeded | The length of the role group name has exceeded the limit. |
1208 | Role Group with Member(s) | Can't delete a role group with member(s). |
2004 | Invalid App | The app does not exist. |
3000 | Invalid Form | The form does not exist. |
3001 | Name Required | The member or department name is required. |
3005 | Invalid Parameter(s) | The request contains invalid parameter(s). |
3041 | Serial No. Limit Exceeded | The number of Serial No. fields has exceeded the limit in the form. |
3042 | Invalid Field Alias | Failed to verify the field alias. |
3083 | Widget Limit Exceeded | The number of widgets has exceeded the limit in the form. |
3091 | Form Name Limit Exceeded | The number of characters in the form name exceeds 100. |
3092 | Title Limit Exceeded | The number of characters in the title exceeds 100. |
4000 | Data Submission Failed | Failed to submit data. |
4001 | Invalid Data | Data does not exist. |
4007 | No Approver | No approver for the workflow. |
4008 | Closed Workflow | The workflow was closed. |
4009 | No Permission | Do not have permission to approve. |
4015 | Invalid Approver | The approver of the transferred node is invalid. |
4016 | Action Failed | The workflow can't be transferred to oneself. |
4025 | No Permission | Do not have permission for the workflow. |
4042 | Data Deletion Failed | Failed to delete the data. |
4402 | Aggregation Validation Failed | Failed to validate the aggregation calculation. |
4815 | Invalid Filter | The filter condition is invalid. |
5003 | Invalid Node | The workflow node doesn't exist. |
5004 | No Approval Comment | No comment for approval. |
5009 | Invalid Approver | The approver of the returned node is invalid. |
5011 | Invalid Node | The target node is invalid. |
5012 | No Signature | No signature for approval. |
5034 | Child Workflow(s)/Plugin Node(s) Found | This node has child workflow(s)/plugin node(s). |
5044 | Child Workflow Error | The child workflow is wrongly configured. For example, no initiator for the child workflow. |
5045 | Child Workflow Limit Exceeded | The number of child workflow exceeds 200. |
5049 | Transfer Disabled | The Transfer feature hasn't been enabled at this node. |
5053 | Action Failed | The initial department is invalid. Can't flow to the node with multi-level approval. |
6000 | Duplicate Sub-Department | There is a sub-department with the same name within the same-level department. |
6001 | Invalid Parent Department | The parent department doesn't exist. |
6002 | Invalid Department | The department doesn't exist. |
6003 | Department with Sub-Department(s) | Can't delete a department with sub-department(s). |
6004 | Department Update Failed | Failed to update the department. |
6005 | Department Creation Failed | Failed to create the department. |
6006 | Department with Member(s) | Can't delete a department with member(s). |
6010 | Invalid Department ID | The department ID is in an invalid format. |
6011 | Circular Department Relationship | There is a circular relationship among departments. |
6012 | Invalid Department Name | The department name is invalid. |
6013 | Duplicate Department ID | The department ID already exists. |
6014 | No Sub-Department Under Root Department | There must be at least one sub-department belonging to the root department. |
6015 | Root Department | Can't delete a root department. |
6017 | Department Cascading Levels Limit Exceeded | The number of cascade levels in the department exceeds the limit. |
6019 | Member List Required | The member list is required. |
6020 | Imported Departments Limit Exceeded | The number of departments in a single import exceeds the limit. |
6021 | Imported Members Limit Exceeded | The number of members in a single import exceeds the limit. |
6064 | Duplicate Department | The parent department already exists. |
7103 | System Limit Exceeded | System usage exceeds the limit. The system has been suspended. Go to Management > Plan Details to view the usage details and upgrade plan to restore the system. |
7212 | Data Limit Exceed | Monthly data exceeds the limit. Can't submit new data. Contact the business owner to upgrade the plan. |
7216 | Attachment Upload Limit Exceeded | Attachment upload limit exceeded. Contact the link creator to fix it. |
7217 | Attachment Upload Limit Exceeded | Attachment upload limit exceeded. Contact the business owner to fix it. |
7218 | Attachment Upload Limit Exceeded | Attachment upload limit exceeded. Contact the link creator to fix it. |
7219 | Attachment Upload Limit Exceeded | Attachment upload limit exceeded. Contact the business owner to fix it. |
8017 | Invalid Company/Team | Company/Team doesn't exist or has been closed. |
8301 | Invalid Authorization | Failed to verify the API key for authorization. |
8302 | No Permission | Do not have permission for the API calls. |
8303 | Company/Team Request Limit Exceeded | The call frequency of the company/team exceeds the frequency limit. |
8304 | Request Limit Exceeded | The call frequency exceeds the frequency limit. |
9004 | Creation Failed | Failed to create the task. |
9007 | Lock Obtain Failed | Failed to obtain the lock. |
17017 | Invalid Parameter(s) | The request contains invalid parameter(s). |
17018 | Invalid API Key | The API key is invalid. |
17023 | Batch Update Limit Exceeded | The batch update at one time exceeds the limit. |
17024 | Batch Creation Limit Exceeded | The batch creation at one time exceeds the limit. |
17025 | Invalid transaction_id Parameter(s) | The transaction_id contains invalid parameter(s). |
17026 | Duplicate transaction_id | The transaction_id already exists. |
17027 | Uploading Failed | Failed to upload the API file. |
17032 | Invalid Field Type | The field type isn't supported. |
17034 | Invalid Sub-Field Type | The sub-field type isn't supported. |
50000 | Invalid Node | The target node doesn't exist. |
50004 | Invalid Task | The task doesn't exist. |
50008 | Action Failed | Workflow processing error. |
50011 | Invalid Task | The task doesn't exist. |
50014 | Invalid Approver | No permission to close the task. |
50016 | Invalid instance_id | The instance_id is invalid. |
50019 | Invalid Action | The action is not supported. |
50021 | Invalid data_id | The data_id is invalid. |
50031 | Invalid data_id | The data_id is invalid. |
50040 | Return Failed | This node can't be returned. |
50041 | Return Failed | Can't return to the current node. |
50047 | Workflow Being Migrated | Workflow being migrated. Try again later. |
50049 | Return Failed | Can't return to the Start Node without an initiator. |
50051 | Duplicate Request | The workflow has been approved/transferred/returned. |
50053 | Invalid Approver | No approver to add. |
50054 | No Nesting | Can't add nested approval. For example, after approver A has added approver B, approver B can't add approver C. |
50055 | Action Failed | No pre-approver or post-approver was added. |
50056 | Invalid Parent Task | The parent task is lost. For example, approver A has added approver B. After approver B had approved the assigned task, the initial task for approver A was lost. |
50057 | Add Approver Disabled | The Add Approver feature hasn't been enabled. |
50059 | Approver Added | The member is added as an approver. |
50060 | Invalid Approver | The approver is invalid. |
50061 | Approver Limit Exceeded | Can't add more than one approver. |
50062 | Added Approver Reviewing | The added approver is reviewing the task. |
50070 | Return Failed | Can't return to the plugin node. |
50073 | Return Failed | Can't return to the in-progress node. |