Organizations with APIs must review each integration to ensure they support 64-bit data types.
We're preparing to upgrade Aconex database fields to 64-bit, across all Aconex instances. If your organization integrates with Aconex APIs, you'll need to review them and ensure they support 64-bit data types. Any Aconex data being managed or stored as a 32-bit Integer must be updated to a String or Long, depending on your implementation.
Before the change, you'll need to review, test, and update your API integrations, where required, to ensure they support the 64-bit data types. This change impacts both Basic Auth and OAuth API integrations.
You'll soon have the chance to test your changes in the Early Access (EA1) environment. If you don't already have access to the Early Access (EA1) environment, please follow the instructions here, so you're ready to go. You should test on both existing and new data, to ensure you are testing against existing IDs and newly generated IDs.
Many Aconex ID fields are being migrated from 32-bit Integer to 64-bit Long. Existing IDs will remain unchanged. However, any new IDs generated for the relevant entities will be issued in the 64-bit format. Fields that are already represented as String are not affected by this change; only fields currently stored as Integer require updating.
As an example, the UserID for an existing user may be 1234567890 (a 32-bit Integer). After the upgrade to 64-bit, a newly created user might have the UserID of 1234567890123456789. The UserID field is already represented as a String in some of the Aconex APIs response structure. However, if you are storing the UserID in your own database as an Integer, you need to ensure your code and/or database supports and manages the value as a String.
In another example, the DocumentTypeId is represented as a 32-bit Integer in the Aconex API response structure. This means there is an impact to integrations using this field and you'll need to make changes as follows:
Below are some things to consider depending on the technology you are using for your integration(s).
| Technology used | Change details | Example errors |
|---|---|---|
| Java |
If you are representing the fields as an int / Integer, you'll need to convert them to a Long. Here's a code example: Integer myUserID= 1123456790; |
You may receive a Number Format Exception in your integration if you are still representing the field as an Integer instead of a Long. java.lang.NumberFormatException: For input string: "271341877549072448" at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) ~[?:1.8.0_361] at java.lang.Integer.parseInt(Integer.java:583) ~[?:1.8.0_361] at java.lang.Integer.parseInt(Integer.java:615) ~[?:1.8.0_361] at |
| Database |
If your application is storing the fields in a database, you need to change the column schema to allow 19 digits. i.e. NUMBER ( 19 ) |
You may receive a Numeric Overflow Exception in your integration if you are still handling and/or storing the field as an Integer instead of a Long. Caused by: java.sql.SQLException: Numeric Overflow at oracle.jdbc.driver.NumberCommonAccessor.throwOverflow(NumberCommonAccessor.java:4161) at oracle.jdbc.driver.NumberCommonAccessor.getInt(NumberCommonAccessor.java:111) at oracle.jdbc.driver.GeneratedStatement.getInt(GeneratedStatement.java:171) at oracle.jdbc.driver.GeneratedScrollableResultSet.getInt(GeneratedScrollableResultSet.java:269) at oracle.jdbc.driver.GeneratedResultSet.getInt(GeneratedResultSet.java:621) at com.zaxxer.hikari.pool.HikariProxyResultSet.getInt(HikariProxyResultSet.java) |
|
Javascript |
Serializing numbers in JavaScript is limited to 53 bits. If your application is using the fields in a web interface, you need to convert them to a String. If you are using Jackson serializer in your application, you can add the following annotation above the field: @JsonSerialize ( using = ToStringSerializer . class ) |
Below is a list of APIs and the response or request fields that are being upgraded from 32-bit Integers to 64-bit Longs.
Note: For most API endpoints, path parameters that represent identifiers, such as projectId and userId, will use the 64-bit ID format. Consumers of these APIs must ensure that such identifiers are stored as Long or String within their integrations.
| Module | API | URL | Change in response? | Change in request? | Field name(s) and impact |
| Documents | Current Set Definition | HTTP GET: /api/projects/{projectid}/currentSet |
Yes |
No |
DocumentTypeId → (INTEGER → LONG) |
| Documents | View Document Schema | HTTP GET: /api/projects/{projectid}/register/schema |
Yes |
No |
DocumentTypeId → (INTEGER → LONG) |
| Documents | Temporary File Upload | HTTP POST: https://hostname:port/api/projects/{projectid}/temporaryFile |
No |
Yes |
DocumentTypeId → (INTEGER → LONG) |
| Documents | Register Document | HTTP POST: /api/projects/{projectid}/register |
No |
Yes |
DocumentTypeId → (INTEGER → LONG) |
| Documents | Supersede Document | HTTP POST: /api/projects/{projectid}/register/{documentid}/supersede |
No |
Yes |
DocumentTypeId → (INTEGER → LONG) |
| Create Mail | HTTPS POST: /api/projects/{{projectid}}/mail/ |
No |
Yes |
mailTypeId → (INTEGER → LONG) |
|
| Reply Mail | HTTPS POST: /api/projects/{{projectid}}/mail/{{mailIdwithAttachment}}/reply |
No |
Yes |
mailTypeId → (INTEGER → LONG) | |
| Forward Mail | HTTPS POST: /api/projects/{{projectid}}/mail/{{mailIdwithAttachment}}/forward |
No |
Yes |
mailTypeId → (INTEGER → LONG) | |
| Saving to Drafts | HTTPS POST: /api/projects/{{projectid}}/mail/{{mail_id}}/forward?is_draft=true |
No |
Yes |
mailTypeId → (INTEGER → LONG) | |
| Register Mail | HTTPS POST: /api/projects/{{projectid}}/mail/ |
No |
Yes |
mailTypeId → (INTEGER → LONG) | |
| View Mail Search Schema | HTTPS GET: /api/projects/{projectid}/mail/schema/search |
Yes |
No |
mailTypeId → (INTEGER → LONG) | |
| View Mail Creation Schema | HTTPS GET: /api/projects/{projectid}/mail/schema/creation |
Yes |
No |
mailTypeId → (INTEGER → LONG) | |
| View Mail Reply Schema | HTTPS GET: /api/projects/{{projectId}}/mail/{{mailId}}/schema/reply |
Yes |
No |
mailTypeId → (INTEGER → LONG) | |
| View Mail Forward Schema | HTTPS GET: /api/projects/{{projectId}}/mail/{{mailId}}/schema/forward |
Yes |
No |
mailTypeId → (INTEGER → LONG) | |
| Directory | Get Organization Logo | HTTP GET: /api/organization/logo?{parameters} |
No |
Yes |
organization_id → (INTEGER → LONG) |
| Directory | Create New User | HTTP POST: /api/organizations/{organizationid}/users |
No |
Yes |
project_id → (INTEGER → LONG) |
| Workflows | Search Workflows Of Project | HTTP GET: /api/projects/{project_id}/workflows?{parameters} |
No |
Yes |
project_id → (INTEGER → LONG) |
| Workflows | Search Workflows Initiated By User's Organization | HTTP GET: /api/projects/{project_id}/workflows/initiated-by/us?{parameters} |
No |
Yes |
project_id → (INTEGER → LONG) |
| Workflows | Search Workflows Not Initiated By User's Organization | HTTP GET: /api/projects/{project_id}/workflows/initiated-by/others?{parameters} |
No |
Yes |
project_id → (INTEGER → LONG) |
| Workflows | Search Workflows Assigned to User's Organization | HTTP GET: /api/projects/{project_id}/workflows/assigned-to/us?{parameters} |
No |
Yes |
project_id → (INTEGER → LONG) |
| Workflows | Search Workflows Not Assigned to User's Organization | HTTP GET: /api/projects/{project_id}/workflows/assigned-to/others?{parameters} |
No |
Yes |
project_id → (INTEGER → LONG) |
| Workflows | Search Workflows By Status | HTTP GET: /api/projects/{project_id}/workflows/{status}?{parameters} |
No |
Yes |
project_id → (INTEGER → LONG) |
| Workflows | Search Workflows By Status And Initiated By User's Organization | HTTP GET: /api/projects/{project_id}/workflows/{status}/initiated-by/us?{parameters} |
No |
Yes |
project_id → (INTEGER → LONG) |
| Workflows | Search Workflows By Status And Not Initiated By User's Organization | HTTP GET: /api/projects/{project_id}/workflows/{status}/initiated-by/others?{parameters} |
No |
Yes |
project_id → (INTEGER → LONG) |
| Workflows | Search Workflows By Status And Assigned To User's Organization | HTTP GET: /api/projects/{project_id}/workflows/{status}/assigned-to/us?{parameters} |
No |
Yes |
project_id → (INTEGER → LONG) |
| Workflows | Search Workflows By Status And Not Assigned To User's Organization | HTTP GET: /api/projects/{project_id}/workflows/{status}/assigned-to/others?{parameters} |
No |
Yes |
project_id → (INTEGER → LONG) |
| Projects | Get Project Logo | HTTP GET: /api/project/logo?{parameters} |
No |
Yes |
project_id → (INTEGER → LONG) |
| User Roles |
User Role Search (Organization) |
HTTP GET: /api/roles?queryparams |
Yes |
No |
roleId → (INTEGER → LONG) |
|
User Roles |
User Role Search (Project) |
HTTP GET: /api/roles/projects/{project_id}?queryparams |
Yes |
No |
roleId → (INTEGER → LONG) |
|
User Roles |
User Search (User Role – Organization) |
HTTP GET: /api/roles/users?queryparams |
Yes |
No |
roleId → (INTEGER → LONG) |
|
User Roles |
User Search (User Role – Project) |
HTTP GET: /api/roles/users/projects/{project_id}?queryparams |
Yes |
No |
roleId → (INTEGER → LONG) |
|
User Roles |
User Entitlements (Organization) |
HTTP GET: /api/roles/user?queryparams |
Yes |
No |
roleId → (INTEGER → LONG) |
|
User Roles |
User Entitlements (Project) |
HTTP GET: /api/roles/user/projects/{project_id}?queryparams |
Yes |
No |
roleId → (INTEGER → LONG) |
|
User Roles |
Update User Role (Organization) |
HTTP PATCH: /api/roles |
No |
Yes |
roleId → (INTEGER → LONG) |
|
User Roles |
Update User Role (Project) |
HTTP PATCH: /api/roles/projects/{project_id} |
No |
Yes |
roleId → (INTEGER → LONG) |
|
User Roles |
Update Secured Asset permissions (Organization) |
HTTP PUT: /api/roles |
No |
Yes |
roleId → (INTEGER → LONG) |
|
User Roles |
Update Secured Asset permissions (Project) |
HTTP PUT: /api/roles/projects/{project_id} |
No |
Yes |
roleId → (INTEGER → LONG) |
|
User Roles |
Update Users assigned to User Role (Organization) |
HTTP PUT: /api/roles/userrole |
No |
Yes |
userId → (INTEGER → LONG) |
|
User Roles |
Update Users assigned to User Role (Project) |
HTTP PUT: /api/roles/userrole/projects/{project_id} |
No |
Yes |
userId → (INTEGER → LONG) |
| Packages | project-fields | HTTP GET /projects/{projectId}/project-fields | No | Yes | projectId → (INTEGER → LONG) |
| Packages | package-types | HTTP GET /projects/{projectId}/package-types | No | Yes | projectId → (INTEGER → LONG) |
| Packages | package-types | HTTP POST /projects/{projectId}/package-types | No | Yes | projectId → (INTEGER → LONG) |
| Packages | package-types | HTTP GET /projects/{projectId}/package-types/{packageTypeId} | No | Yes | projectId → (INTEGER → LONG) |
| Packages | project-fields | HTTP GET /projects/{projectId}/package-types/{packageTypeId}/project-fields | No | Yes | projectId → (INTEGER → LONG) |
| Packages | project-fields | HTTP POST /projects/{projectId}/package-types/{packageTypeId}/project-fields | No | Yes | projectId → (INTEGER → LONG) |
| Packages | packages | HTTP GET /projects/{projectId}/packages | No | Yes |
projectId → (INTEGER → LONG) Changed schema fields
|
| Packages | packages | HTTP POST /projects/{projectId}/packages | No | Yes |
projectId → (INTEGER → LONG) Changed schema fields
|
| Packages | list | HTTP POST /projects/{projectId}/packages/list | No | Yes |
projectId → (INTEGER → LONG) Changed schema fields
|
| Packages | packages | HTTP GET /projects/{projectId}/packages/{packageId} | No | Yes |
projectId → (INTEGER → LONG) Changed schema fields
|
| Packages | packages | HTTP PUT /projects/{projectId}/packages/{packageId} | No | Yes | projectId → (INTEGER → LONG) |
| Packages | collaborators | HTTP GET /projects/{projectId}/packages/{packageId}/collaborators | No | Yes |
projectId → (INTEGER → LONG) userId → (INTEGER → LONG) |
| Packages | collaborators | HTTP POST /projects/{projectId}/packages/{packageId}/collaborators | No | Yes |
projectId → (INTEGER → LONG) userId → (INTEGER → LONG) |
| Packages | collaborators | HTTP GET /projects/{projectId}/packages/{packageId}/collaborators/{userId} | No | Yes |
projectId → (INTEGER → LONG) userId → (INTEGER → LONG) |
| Packages | collaborators | HTTP PUT /projects/{projectId}/packages/{packageId}/collaborators/{userId} | No | Yes |
projectId → (INTEGER → LONG) userId → (INTEGER → LONG) |
| Packages | collaborators | HTTP DELETE /projects/{projectId}/packages/{packageId}/collaborators/{userId} | No | Yes |
projectId → (INTEGER → LONG) userId → (INTEGER → LONG) |
| Packages | transmittal-history | HTTP GET /projects/{projectId}/packages/{packageId}/transmittal-history | No | Yes | projectId → (INTEGER → LONG) |
| Packages | versions | HTTP GET /projects/{projectId}/packages/{packageId}/versions | No | Yes | projectId → (INTEGER → LONG) |
| Packages | versions | HTTP GET /projects/{projectId}/packages/{packageId}/versions/{versionId} | No | Yes | projectId → (INTEGER → LONG) |
| Packages | attachments | HTTP GET /projects/{projectId}/packages/{packageId}/attachments | No | Yes | projectId → (INTEGER → LONG) |
| Packages | file | HTTP GET /projects/{projectId}/packages/{packageId}/attachments/{fileId}/file | No | Yes | projectId → (INTEGER → LONG) |
| Packages | mails | HTTP GET /projects/{projectId}/packages/{packageId}/mails | No | Yes | projectId → (INTEGER → LONG) |
| Packages | addToPackage | HTTP POST /projects/{projectId}/packages/{packageId}/mails/addToPackage | No | Yes | projectId → (INTEGER → LONG) |
| Packages | deleteFromPackage | HTTP POST /projects/{projectId}/packages/{packageId}/mails/deleteFromPackage | No | Yes | projectId → (INTEGER → LONG) |
| Packages | mails | HTTP POST /projects/{projectId}/packages/{packageId}/mails/{mailId} | No | Yes | projectId → (INTEGER → LONG) |
| Packages | mails | HTTP DELETE /projects/{projectId}/packages/{packageId}/mails/{mailId} | No | Yes | projectId → (INTEGER → LONG) |
| Packages | package-events | HTTP GET /projects/{projectId}/package-events | No | Yes | projectId → (INTEGER → LONG) |
| Packages | shared | HTTP POST /projects/{projectId}/packages/{packageId}/attachments/shared | No | Yes | projectId → (INTEGER → LONG) |
| Packages | unshared | HTTP GET /projects/{projectId}/packages/attachments/unshared | No | Yes | projectId → (INTEGER → LONG) |
| Packages | versions | HTTP GET /projects/{projectId}/documents/{trackingId}/versions/{versionNumber} | No | Yes |
projectId → (INTEGER → LONG) trackingId → (INTEGER → LONG) |
| Packages | distribution-list | HTTP GET /projects/{projectId}/packages/{packageId}/distribution-list | No | Yes | projectId → (INTEGER → LONG) |
| Packages | schedule | HTTP GET /projects/{projectId}/packages/{packageId}/versions/{versionId}/schedule | No | Yes | projectId → (INTEGER → LONG) |
| Packages | documents-status | HTTP GET /projects/{projectId}/packages/{packageId}/documents-status | No | Yes | projectId → (INTEGER → LONG) |
| Packages | move | HTTP POST /projects/{projectId}/packages/{packageId}/move | No | Yes | projectId → (INTEGER → LONG) |
| Packages | related-packages | HTTP GET /projects/{projectId}/packages/{packageId}/related-packages | No | Yes | projectId → (INTEGER → LONG) |
| Packages | users | HTTP PUT /projects/{projectId}/packages/{packageId}/distribution-list/users/{userId} | No | Yes |
projectId → (INTEGER → LONG) userId → (INTEGER → LONG) |
| Packages | users | HTTP DELETE /projects/{projectId}/packages/{packageId}/distribution-list/users/{userId} | No | Yes |
projectId → (INTEGER → LONG) userId → (INTEGER → LONG) |
| Packages | groups | HTTP PUT /projects/{projectId}/packages/{packageId}/distribution-list/groups/{groupId} | No | Yes |
projectId → (INTEGER → LONG) groupId → (INTEGER → LONG) |
| Packages | groups | HTTP DELETE /projects/{projectId}/packages/{packageId}/distribution-list/groups/{groupId} | No | Yes |
projectId → (INTEGER → LONG) groupId → (INTEGER → LONG) |
| Packages | transmittal | HTTP POST /projects/{projectId}/packages/{packageId}/transmittal | No | Yes | projectId → (INTEGER → LONG) |
| Packages | transmittal | HTTP POST /projects/{projectId}/packages/{packageId}/versions/{versionId}/transmittal | No | Yes | projectId → (INTEGER → LONG) |
| Packages | total-size | HTTP GET /projects/{projectId}/attachments/total-size | No | Yes | projectId → (INTEGER → LONG) |
| Field - Observations | Get Subcontractors For Org | HTTP GET /api/organizations/{org_id}/subcontractors?page_no=1&page_size=20 |
Yes |
No |
organization_id → (NUMBER → STRING) |
| Field - Observations | Get Subcontractor By ID | HTTP GET /api/organizations/{org_id}/subcontractor/{subcontractor_id}?useExternalId=true/false |
Yes |
No |
organization_id → (NUMBER → STRING) |
| Field - Observations | Get Subcontractors For Project | HTTP GET /api/projects/{project_id}/observations/subcontractor |
Yes |
No |
organization_id → (NUMBER → STRING) |
| Field - Observations | Sync Subcontractors | HTTP POST /api/organizations/{org_id}/subcontractor?useExternalId=true/false |
Yes
|
No |
organization_id → (NUMBER → STRING) |
| Field - Observations | Update Subcontractors | HTTP PUT /api/organizations/{org_id}/subcontractor?useExternalId=true/false |
Yes |
No |
organization_id → (NUMBER → STRING) |
|
Field - Issues |
Get Issues count for groups |
HTTP GET /api/projects/{project_id}/areas/{area_id}/issues/count?include_child_areas={include_child_areas}&include_shared={include_shared}&group_by={group_by} |
Yes |
No |
organization_id → (NUMBER → STRING) issue_type → (NUMBER → STRING) assigned_to_org_user → (NUMBER → STRING) assigned_to → (NUMBER → STRING) captured_by → (NUMBER → STRING) |
| Field - Inspections | Create checklist item attachment | HTTP POST /api/projects/{project_id}/areas/{area_id}/checklists/{checklist_id}/items/{item_id}/attachments |
Yes |
No |
createdBy → (NUMBER → STRING) |
| Field - Daily Reports | Get daily report by ID | HTTP GET /api/projects/{project_id}/daily-reports/{dailyreport_id}?type={type} |
Yes |
No
|
respondedById → (NUMBER → STRING) |
| Field - Daily Reports | Get daily report by date and owner ID | HTTP GET /api/projects/{project_id}/dailyreportbydate/{dailyreport_date}?report_owner={report_owner_id} |
Yes |
No |
respondedById → (NUMBER → STRING) |
|
Field - Daily Reports |
GET Daily Report Filter By - ProjectId,OrganizationId,Date range,Status,Search String,Delay Type and report owner Id |
HTTP GET /api/projects/{project_id}/daily-reports/filter?organizationId={organizationId}&dailyreport_daterange={dailyreport_daterange}&status=&offset_from_utc=-330&search_string=&delay=&report_owner= |
Yes |
No |
reportOwnerId → (NUMBER → STRING) |
| Field - Daily Reports | Create daily report attachment | HTTP POST /api/projects/{project_id}/daily-reports/{dailyReportId}/attachments |
Yes |
No |
organization_id → (NUMBER → STRING) |
| Field - Test Plans | Test plan list | HTTP GET /projects/{projectId}/test-plans/ | Yes | No |
projectId → (INTEGER → STRING) nested type.projectId → (INTEGER → STRING) |
| Field - Test Plans | Test plan search | HTTP POST /projects/{projectId}/test-plans/search | Yes | No |
projectId → (INTEGER → STRING) nested type.projectId → (INTEGER → STRING) |
| Field - Test Plans | Test plan detail | HTTP GET /projects/{projectId}/test-plans/{testPlanId} | Yes | No |
projectId → (INTEGER → STRING) nested type.projectId → (INTEGER → STRING) |
| Field - Test Plans | Create test plan | HTTP POST /projects/{projectId}/test-plans | No | Yes |
projectId → (INTEGER → STRING) nested type.projectId → (INTEGER → STRING) |
| Field - Test Plans | Update test plan | HTTP PUT /projects/{projectId}/test-plans/{testPlanId} | Yes | Yes |
response projectId → (INTEGER → STRING) response nested type.projectId → (INTEGER → STRING) request nested type.projectId → (INTEGER → STRING) |
| Field - Test Plans | Close test plan | HTTP POST /projects/{projectId}/test-plans/{testPlanId}/actions/close | Yes | No |
nested testPlanDetail.projectId → (INTEGER → STRING) nested testPlanDetail.type.projectId → (INTEGER → STRING) |
| Field - Test Plans | Start test plan | HTTP POST /projects/{projectId}/test-plans/{testPlanId}/actions/start | Yes | No |
nested testPlanDetail.projectId → (INTEGER → STRING) nested testPlanDetail.type.projectId → (INTEGER → STRING) |
| Field - Test Plans | Publish test plan | HTTP POST /projects/{projectId}/test-plans/{testPlanId}/actions/publish | Yes | No |
nested testPlanDetail.projectId → (INTEGER → STRING) nested testPlanDetail.type.projectId → (INTEGER → STRING) |
| Field - Test Plans | Reopen test plan | HTTP POST /projects/{projectId}/test-plans/{testPlanId}/actions/reopen | Yes | No |
nested testPlanDetail.projectId → (INTEGER → STRING) nested testPlanDetail.type.projectId → (INTEGER → STRING) |
| Field - Test Plans | Mark test plan in progress | HTTP POST /projects/{projectId}/test-plans/{testPlanId}/actions/inprogress | Yes | No |
nested testPlanDetail.projectId → (INTEGER → STRING) nested testPlanDetail.type.projectId → (INTEGER → STRING) |
| Field - Test Plans | Submit test plan | HTTP POST /projects/{projectId}/test-plans/{testPlanId}/actions/submit | Yes | No |
nested testPlanDetail.projectId → (INTEGER → STRING) nested testPlanDetail.type.projectId → (INTEGER → STRING) |
| Field - Test Plans | Withdraw test plan submission | HTTP POST /projects/{projectId}/test-plans/{testPlanId}/actions/withdraw | Yes | No |
nested testPlanDetail.projectId → (INTEGER → STRING) nested testPlanDetail.type.projectId → (INTEGER → STRING) |
| Field - Test Plans | Request test plan resubmit | HTTP POST /projects/{projectId}/test-plans/{testPlanId}/actions/request-resubmit | Yes | No |
nested testPlanDetail.projectId → (INTEGER → STRING) nested testPlanDetail.type.projectId → (INTEGER → STRING) |
| Field - Test Plans | Submit test plan for close | HTTP POST /projects/{projectId}/test-plans/{testPlanId}/actions/submit/close | Yes | No |
nested testPlanDetail.projectId → (INTEGER → STRING) nested testPlanDetail.type.projectId → (INTEGER → STRING) |
| Field - Test Plans | Test plan import | HTTP POST /projects/{projectId}/test-plans/{testPlanId}/import | Yes | No |
nested testPlanDetail.projectId → (INTEGER → STRING) nested testPlanDetail.type.projectId → (INTEGER → STRING) |
| Field - Test Plans | Trusted test plan status | HTTP POST /trusted/projects/{projectId}/test-plans/status | Yes | No |
projectId → (INTEGER → STRING) nested type.projectId → (INTEGER → STRING) |
| Field - Test Plans | Template list | HTTP GET /projects/{projectId}/templates | Yes | No |
projectId → (INTEGER → STRING) nested category.projectId → (INTEGER → STRING) nested sourceTemplate.projectId → (INTEGER → STRING) |
| Field - Test Plans | Create template | HTTP POST /projects/{projectId}/templates | Yes | Yes |
request projectId → (INTEGER → STRING) request nested category.projectId → (INTEGER → STRING) response projectId → (INTEGER → STRING) response nested category.projectId → (INTEGER → STRING) response nested sourceTemplate.projectId → (INTEGER → STRING) |
| Field - Test Plans | Template detail | HTTP GET /projects/{projectId}/templates/{templateId} | Yes | No |
projectId → (INTEGER → STRING) nested category.projectId → (INTEGER → STRING) nested sourceTemplate.projectId → (INTEGER → STRING) |
| Field - Test Plans | Template detail by version | HTTP GET /projects/{projectId}/templates/{templateId}/versions/{version} | Yes | No |
projectId → (INTEGER → STRING) nested category.projectId → (INTEGER → STRING) nested sourceTemplate.projectId → (INTEGER → STRING) |
| Field - Test Plans | Templates to copy | HTTP GET /projects/{projectId}/templates/to-copy | Yes | No |
projectId → (INTEGER → STRING) nested category.projectId → (INTEGER → STRING) nested sourceTemplate.projectId → (INTEGER → STRING) |
| Field - Test Plans | Update template | HTTP PUT /projects/{projectId}/templates/{templateId}/update | Yes | Yes |
request nested testPlanTemplateDto.projectId → (INTEGER → STRING) request nested testPlanTemplateDto.category.projectId → (INTEGER → STRING) request publishReviewerOrgId → (INTEGER → STRING) response projectId → (INTEGER → STRING) response nested category.projectId → (INTEGER → STRING) response nested sourceTemplate.projectId → (INTEGER → STRING) |
| Field - Test Plans | Template activities list | HTTP GET /projects/{projectId}/templates/{templateId}/activities | Yes | No | nested reviews[].reviewerAction.projectId → (INTEGER → STRING) |
| Field - Test Plans | Template activities list by version | HTTP GET /projects/{projectId}/templates/{templateId}/versions/{version}/activities | Yes | No | nested reviews[].reviewerAction.projectId → (INTEGER → STRING) |
| Field - Test Plans | Template activity detail | HTTP GET /projects/{projectId}/templates/{templateId}/activity/{activityId} | Yes | No | nested reviews[].reviewerAction.projectId → (INTEGER → STRING) |
| Field - Test Plans | Create template activity | HTTP POST /projects/{projectId}/templates/{templateId}/activity | Yes | Yes |
request nested reviews[].reviewerAction.projectId → (INTEGER → STRING) response projectId → (INTEGER → STRING) response nested category.projectId → (INTEGER → STRING) response nested reviews[].reviewerAction.projectId → (INTEGER → STRING) |
| Field - Test Plans | Update template activity | HTTP PUT /projects/{projectId}/templates/{templateId}/activity/{activityId} | Yes | Yes |
request nested reviews[].reviewerAction.projectId → (INTEGER → STRING) response projectId → (INTEGER → STRING) response nested category.projectId → (INTEGER → STRING) response nested reviews[].reviewerAction.projectId → (INTEGER → STRING) |
| Field - Test Plans | Share template | HTTP POST /projects/{projectId}/templates/{templateId}/share | Yes | Yes |
request organizationIds → (INTEGER → STRING) response projectId → (INTEGER → STRING) response nested category.projectId → (INTEGER → STRING) nested sourceTemplate.projectId → (INTEGER → STRING) |
| Field - Test Plans | Bulk share templates | HTTP POST /projects/{projectId}/templates/bulk-share | Yes | Yes |
request nested organizationIds → (INTEGER → STRING) response projectId → (INTEGER → STRING) response nested category.projectId → (INTEGER → STRING) response nested sourceTemplate.projectId → (INTEGER → STRING) |
| Field - Test Plans | Copy templates | HTTP POST /projects/{projectId}/templates/copy | No | Yes | sourceProjectId → (INTEGER → STRING) |
| Field - Test Plans | Create template with activities | HTTP POST /projects/{projectId}/templates/with-activities | Yes | Yes |
request projectId → (INTEGER → STRING) request nested category.projectId → (INTEGER → STRING) request nested reviews[].reviewerAction.projectId → (INTEGER → STRING) response projectId → (INTEGER → STRING) response nested category.projectId → (INTEGER → STRING) response nested sourceTemplate.projectId → (INTEGER → STRING) |
| Field - Test Plans | Template import | HTTP POST /projects/{projectId}/templates/{templateId}/import | Yes | No |
nested templateDetail.projectId → (INTEGER → STRING) nested templateDetail.category.projectId → (INTEGER → STRING) nested templateDetail.sourceTemplate.projectId → (INTEGER → STRING) |
| Field - Test Plans | Add test plan type | HTTP POST /projects/{projectId}/settings/testplantype/ | Yes | Yes | projectId → (INTEGER → STRING) |
| Field - Test Plans | Get test plan types | HTTP GET /projects/{projectId}/settings/testplantype/ | Yes | No | projectId → (INTEGER → STRING) |
| Field - Test Plans | Edit test plan type | HTTP PUT /projects/{projectId}/settings/testplantype/{testPlanTypeId}/ | Yes | Yes | projectId → (INTEGER → STRING) |
| Field - Test Plans | Hide test plan type | HTTP PUT /projects/{projectId}/settings/testplantype/{testPlanTypeId}/hide | Yes | No | projectId → (INTEGER → STRING) |
| Field - Test Plans | Show test plan type | HTTP PUT /projects/{projectId}/settings/testplantype/{testPlanTypeId}/show | Yes | No | projectId → (INTEGER → STRING) |
| Field - Test Plans | Add reviewer action | HTTP POST /projects/{projectId}/settings/revieweraction/ | Yes | Yes | projectId → (INTEGER → STRING) |
| Field - Test Plans | Get reviewer actions | HTTP GET /projects/{projectId}/settings/revieweraction/ | Yes | No | projectId → (INTEGER → STRING) |
| Field - Test Plans | Edit reviewer action | HTTP PUT /projects/{projectId}/settings/revieweraction/{reviewerActionId}/ | Yes | Yes | projectId → (INTEGER → STRING) |
| Field - Test Plans | Hide reviewer action | HTTP PUT /projects/{projectId}/settings/revieweraction/{reviewerActionId}/hide | Yes | No | projectId → (INTEGER → STRING) |
| Field - Test Plans | Show reviewer action | HTTP PUT /projects/{projectId}/settings/revieweraction/{reviewerActionId}/show | Yes | No | projectId → (INTEGER → STRING) |
| Field - Test Plans | Get eligible template approval orgs | HTTP GET /projects/{projectId}/settings/templateapprovaleligibleorgs/ | Yes | No |
id → (INTEGER → STRING) projectId → (INTEGER → STRING) |
| Field - Test Plans | Get template approval orgs | HTTP GET /projects/{projectId}/settings/templateapprovalorgs/ | Yes | No |
id → (INTEGER → STRING) projectId → (INTEGER → STRING) |
| Field - Test Plans | Update template approval orgs | HTTP POST /projects/{projectId}/settings/templateapprovalorgs/ | Yes | Yes |
request org ids → (INTEGER → STRING) response id → (INTEGER → STRING) response projectId → (INTEGER → STRING) |
| Field - Test Plans | Add activity attachment | HTTP POST /projects/{projectId}/test-plans/{testPlanId}/activity/{activityId}/attachments/{attachmentId} | Yes | No | projectId → (INTEGER → STRING) |
| Field - Test Plans | Get activity attachments | HTTP GET /projects/{projectId}/test-plans/{testPlanId}/activity/{activityId}/attachments/ | Yes | No | projectId → (INTEGER → STRING) |
| Field - Test Plans | Get activity attachment detail | HTTP GET /projects/{projectId}/test-plans/{testPlanId}/activity/{activityId}/attachments/{attachmentId} | Yes | No | projectId → (INTEGER → STRING) |
| Field - Test Plans | Activity detail | HTTP GET /projects/{projectId}/test-plans/{testPlanId}/activity/{activityId} | Yes | No | nested reviews[].reviewerAction.projectId → (INTEGER → STRING) |
| Field - Test Plans | Update activity | HTTP PUT /projects/{projectId}/test-plans/{testPlanId}/activity/{activityId} | Yes | Yes |
request nested reviews[].reviewerAction.projectId → (INTEGER → STRING) response nested reviews[].reviewerAction.projectId → (INTEGER → STRING) |
| Field - Test Plans | Start activity | HTTP POST /projects/{projectId}/test-plans/{testPlanId}/activity/{activityId}/actions/start | Yes | No | nested reviews[].reviewerAction.projectId → (INTEGER → STRING) |
| Field - Test Plans | Complete activity | HTTP POST /projects/{projectId}/test-plans/{testPlanId}/activity/{activityId}/actions/complete | Yes | No | nested reviews[].reviewerAction.projectId → (INTEGER → STRING) |
| Field - Test Plans | Reopen activity | HTTP POST /projects/{projectId}/test-plans/{testPlanId}/activity/{activityId}/actions/reopen | Yes | No | nested reviews[].reviewerAction.projectId → (INTEGER → STRING) |
| Field - Test Plans | Submit activity for review | HTTP POST /projects/{projectId}/test-plans/{testPlanId}/activity/{activityId}/actions/review | Yes | No | nested reviews[].reviewerAction.projectId → (INTEGER → STRING) |
| Field - Test Plans | Mark activity in progress | HTTP POST /projects/{projectId}/test-plans/{testPlanId}/activity/{activityId}/actions/inprogress | Yes | No | nested reviews[].reviewerAction.projectId → (INTEGER → STRING) |
| Field - Test Plans | Activity reviews list | HTTP GET /projects/{projectId}/test-plans/{testPlanId}/activity/{activityId}/reviews | Yes | No | nested reviewerAction.projectId → (INTEGER → STRING) |
Towards the beginning of 2027 we're also planning to retire all Integration IDs. This means that Basic Auth will no longer be accepted for API access. We strongly encourage you to migrate to OAuth to avoid additional effort later.
If you're not already subscribed to receive updates, we encourage you to subscribe to API News for important information regarding Basic Auth retirement.
If you need assistance or need to discuss this change, please contact the Support team.