Forms API Migration Guide (2026 April Release)
The ACC Forms API Migration Guide was created for developers who are migrating from Forms API v1 to v2. It outlines the changes developers need to make to their code.
General Changes
- Changes to URIs (v1 to v2).
- Some query parameters have been added, removed, or replaced.
- Response structure has been significantly reorganized with the introduction of the
nativeFormobject. - The
formTemplateobject has been replaced withformTemplateIdreference. - Weather data is no longer included in the response (only
weatherIdis provided). Use the new GET weather endpoint to retrieve weather details. - Values (
customValuesandtabularValues) are now nested within thenativeFormobject. - Custom tables now require
columnId(UUID) to identify columns—columnNameis only supported for built-in tables. - Form status values have changed to align with the UI. See Status Changes for the full mapping.
New Features
New features for v2 include:
- Custom Table Support: The v2 API supports custom tables in addition to the built-in tables (worklogEntries, materialsEntries, equipmentEntries). See Working with Custom Tables for details.
- Enhanced Filtering and Sorting: New
sortparameter replacessortBy/sortOrderwith support for multi-field sorting. Newsearchparameter for text search. - Granular Data Inclusion: The
includeparameter allows you to selectively include additional data likenativeValues,tableMetadata,layoutInformation,sublocations, andinactiveFormTemplates. - Native Form Structure: The
nativeFormobject provides a more structured representation of form data with layout information and detailed column metadata. - Sublocation Support: New
includeSubLocationsparameter to include forms from sublocations. - Batch Update Options: New query parameters
excludeFormResponseandincludeNativeFormValuesfor controlling response data. - Batch Delete Endpoint: New POST values:batch-delete endpoint for deleting table rows from both native and custom tables.
- Dedicated Table Values Endpoint: New GET table values endpoint for retrieving values from a specific table with pagination support.
- Weather Data Endpoint: New v3 endpoint to retrieve weather details using the
weatherIdfrom forms. See Weather Data for details.
The following tables show the specific changes for each endpoint:
GET Forms
Status Changes
The v2 API uses updated status values that are consistent with the Forms UI. If your integration filters or displays form statuses, you will need to update your code to use the new values.
Note: The status query parameter on GET forms also uses the v2 values. For example, to filter for draft forms in v2, use status=inProgress instead of status=draft.
PUT values:batch-update
Working with Custom Tables
One of the key enhancements in v2 is support for custom tables. In v1, you could only work with the three built-in tables (worklogEntries, materialsEntries, equipmentEntries). In v2, you can work with any custom table defined in your form template.
In v1, you specified the table using the table field with one of the built-in aliases:
In v2, you use the schema field, which accepts both built-in aliases and custom table identifiers (UUIDs):
Built-in tables (worklogEntries, materialsEntries, equipmentEntries) support both columnName and columnId to identify columns:
Custom tables require columnId (UUID)—columnName is not supported:
To find the column UUIDs for custom tables, use GET sections to retrieve the table’s column definitions. For a complete workflow, see the Work with Form Layouts and Custom Tables tutorial.
In v1, tabular data was returned at the top level with built-in table names:
In v2, all tabular data is returned in a unified array within nativeForm.tabularValues, with each row identified by its schema:
Note that for custom tables, the table field is null (or omitted), and you should use the schema field to identify the table type. Custom table rows are included in nativeForm.tabularValues alongside built-in table rows - no additional API calls are needed to fetch custom table values. Built-in tables have both table and schema fields populated with the same alias value (worklogEntries, materialsEntries, or equipmentEntries), while custom tables only have the schema field containing a UUID.
For tables with many rows or when you need pagination, use the dedicated GET table values endpoint:
The fieldId path parameter is the table’s schema identifier (UUID). For built-in tables, use these UUIDs:
- Work Log:
6c8055d5-1301-46f6-9d18-8a2a208a277e - Materials:
2adf5ad9-d9d3-ee42-6fd8-015c34ce474d - Equipment:
8af6c450-dd2a-32ae-0090-5493a9cc884e
For custom tables, use the schema UUID from the form’s layout definition.
The response includes both schema (for backwards compatibility) and fieldId fields with the same UUID value.
Understanding nativeForm
The v2 API introduces the nativeForm object, which provides a more structured representation of form data:
The nativeForm.layoutInfo object provides metadata about the form’s layout:
In v2, tabular values include additional metadata:
updatedAt: Timestamp when the row was last updatedupdatedBy: User ID who last updated the rowrank: Sort order of the row in the tablecolumns: Array of column values with detailed metadata includingformValueId,columnId, andcolumnName
Custom values (non-tabular form fields) are now nested within nativeForm.customValues and retain the same structure as v1, but with the added context of being part of the native form structure.
Using the include Parameter
The v2 GET Forms endpoint supports an include parameter that allows you to selectively include additional data in the response:
nativeValues: Include thenativeFormobject with form valuestableMetadata: Include metadata about tables in the formlayoutInfo: Include detailed layout informationsublocations: Include sublocation datainactiveFormTemplates: Include forms created from inactive templates
Example:
By default, if the include parameter is not specified, the response will not include the nativeForm object. This allows you to optimize response size when you only need form metadata.
Deleting Table Values
Use the POST values:batch-delete endpoint to delete rows from both native and custom tables:
Request body:
Optional query parameters:
excludeFormResponse=true: Returns HTTP 204 with no body (faster for bulk operations)includeNativeFormValues=true: Includes the full native form values in the response
Weather Data
To retrieve full weather details using the weatherId from forms, use the GET weather endpoint:
The response includes:
- Daily summary (
summaryKey,precipitationType,precipitationAccumulation) - Hourly observations (typically at 07:00, 12:00, and 16:00 local time) with temperature, wind speed, wind direction, and humidity
Note: Weather values are returned in metric units (Celsius, km/h, mm).
Imported from the Autodesk Platform Services documentation: https://aps.autodesk.com/en/docs/acc/v1/overview/migration-guides/forms-v1-to-v2.