Purple Grid API Documentation
Machine-readable OpenAPI 3.0 specification: https://marketplace.moveworks.com/api/purple-suite/grid/openapi.json
The consolidated all-apps document at https://marketplace.moveworks.com/api/purple-suite/openapi.json can be narrowed to this app with ?apps=grid, or combined with other apps comma-separated (e.g. ?apps=grid,itsm).
Overview
Endpoints
GET /api/purple-suite/grid/bases
List Grid bases
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
X-Instance-ID | header | string | yes | |
limit | query | integer | no | Legacy page size (default 50). Prefer $top. Ignored when $top/$skip are used. |
cursor | query | string | no | Legacy keyset cursor — pass the previous response's nextCursor. Prefer $skip/$top. |
$filter | query | string | no | OData filter expression. Comparison operators: eq, ne, gt, ge, lt, le. Logical: and, or, not, with parentheses for grouping. String functions: contains(field,'x'), startswith(field,'x'), endswith(field,'x'). Membership: field in ('a','b'). Case-insensitive matching via tolower(field) / toupper(field). Nested fields use a slash, e.g. pto_balance/vacation_days. String literals use single quotes; dates are ISO-8601. Examples: "status eq 'active'"; "salary gt 50000 and department eq 'Engineering'"; "contains(tolower(name),'acme')"; "closeDate gt 2026-01-01". |
$select | query | string | no | Comma-separated list of fields to return, e.g. "id,firstName,email". Nested fields via slash ("pto_balance/vacation_days"). The id field is always included. |
$orderby | query | string | no | Sort clause(s), comma-separated, each "field [asc|desc]" (asc is the default). Example: "createdAt desc, lastName asc". Null values sort last. |
$search | query | string | no | Free-text, case-insensitive substring match across the resource's searchable fields. |
$top | query | integer | no | Maximum number of items to return (page size). |
$skip | query | integer | no | Number of matching items to skip before returning results (offset paging). Combine with $top. |
$count | query | boolean | no | When true, include @odata.count (total matches after $filter/$search, before paging) in the response. |
Responses
200- Paginated list
application/jsondataarrayarray of:
BaseidstringseqIdinteger — Client-supplied display sequence numbernamestringtableCountintegercreatedBystringcreatedAtstringupdatedAtstring
nextCursorstring — Cursor for the next page, or null on the last page. With $top/$skip this is the next $skip value; otherwise a keyset cursor.totalinteger — Total documents in the collection.@odata.countinteger — Present only when $count=true: total matches after $filter/$search.@odata.truncatedboolean — Present and true only when the collection exceeded the in-memory query cap and results may be incomplete.
400- Invalid OData query (e.g. malformed $filter)
POST /api/purple-suite/grid/bases
Create a Grid base
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
X-Instance-ID | header | string | yes |
Request body
application/json — required
Base
idstringseqIdinteger — Client-supplied display sequence numbernamestringtableCountintegercreatedBystringcreatedAtstringupdatedAtstring
Responses
201- Created
application/jsonBaseidstringseqIdinteger — Client-supplied display sequence numbernamestringtableCountintegercreatedBystringcreatedAtstringupdatedAtstring
GET /api/purple-suite/grid/bases/{id}
Get a Grid base by id
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
X-Instance-ID | header | string | yes | |
id | path | string | yes |
Responses
200- Found
application/jsonBaseidstringseqIdinteger — Client-supplied display sequence numbernamestringtableCountintegercreatedBystringcreatedAtstringupdatedAtstring
404- Not found
DELETE /api/purple-suite/grid/bases/{id}
Delete a Grid base
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
X-Instance-ID | header | string | yes | |
id | path | string | yes |
Responses
200- Deleted
application/jsonsuccessboolean
404- Not found
PATCH /api/purple-suite/grid/bases/{id}
Rename or edit a Grid base
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
X-Instance-ID | header | string | yes | |
id | path | string | yes |
Request body
application/json
Base
idstringseqIdinteger — Client-supplied display sequence numbernamestringtableCountintegercreatedBystringcreatedAtstringupdatedAtstring
Responses
200- Updated
application/jsonBaseidstringseqIdinteger — Client-supplied display sequence numbernamestringtableCountintegercreatedBystringcreatedAtstringupdatedAtstring
404- Not found
GET /api/purple-suite/grid/tables
List Grid tables
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
X-Instance-ID | header | string | yes | |
limit | query | integer | no | Legacy page size (default 50). Prefer $top. Ignored when $top/$skip are used. |
cursor | query | string | no | Legacy keyset cursor — pass the previous response's nextCursor. Prefer $skip/$top. |
$filter | query | string | no | OData filter expression. Comparison operators: eq, ne, gt, ge, lt, le. Logical: and, or, not, with parentheses for grouping. String functions: contains(field,'x'), startswith(field,'x'), endswith(field,'x'). Membership: field in ('a','b'). Case-insensitive matching via tolower(field) / toupper(field). Nested fields use a slash, e.g. pto_balance/vacation_days. String literals use single quotes; dates are ISO-8601. Examples: "status eq 'active'"; "salary gt 50000 and department eq 'Engineering'"; "contains(tolower(name),'acme')"; "closeDate gt 2026-01-01". |
$select | query | string | no | Comma-separated list of fields to return, e.g. "id,firstName,email". Nested fields via slash ("pto_balance/vacation_days"). The id field is always included. |
$orderby | query | string | no | Sort clause(s), comma-separated, each "field [asc|desc]" (asc is the default). Example: "createdAt desc, lastName asc". Null values sort last. |
$search | query | string | no | Free-text, case-insensitive substring match across the resource's searchable fields. |
$top | query | integer | no | Maximum number of items to return (page size). |
$skip | query | integer | no | Number of matching items to skip before returning results (offset paging). Combine with $top. |
$count | query | boolean | no | When true, include @odata.count (total matches after $filter/$search, before paging) in the response. |
baseId | query | string | no | Filter tables by parent base ID |
Responses
200- Paginated list
application/jsondataarrayarray of:
TableidstringseqIdinteger — Client-supplied display sequence numberbaseIdstring — ID of the parent basenamestringfieldCountintegerrecordCountintegercreatedAtstringupdatedAtstring
nextCursorstring — Cursor for the next page, or null on the last page. With $top/$skip this is the next $skip value; otherwise a keyset cursor.totalinteger — Total documents in the collection.@odata.countinteger — Present only when $count=true: total matches after $filter/$search.@odata.truncatedboolean — Present and true only when the collection exceeded the in-memory query cap and results may be incomplete.
400- Invalid OData query (e.g. malformed $filter)
POST /api/purple-suite/grid/tables
Create a Grid table
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
X-Instance-ID | header | string | yes |
Request body
application/json — required
Table
idstringseqIdinteger — Client-supplied display sequence numberbaseIdstring — ID of the parent basenamestringfieldCountintegerrecordCountintegercreatedAtstringupdatedAtstring
Responses
201- Created
application/jsonTableidstringseqIdinteger — Client-supplied display sequence numberbaseIdstring — ID of the parent basenamestringfieldCountintegerrecordCountintegercreatedAtstringupdatedAtstring
GET /api/purple-suite/grid/tables/{id}
Get a Grid table by id
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
X-Instance-ID | header | string | yes | |
id | path | string | yes |
Responses
200- Found
application/jsonTableidstringseqIdinteger — Client-supplied display sequence numberbaseIdstring — ID of the parent basenamestringfieldCountintegerrecordCountintegercreatedAtstringupdatedAtstring
404- Not found
DELETE /api/purple-suite/grid/tables/{id}
Delete a Grid table
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
X-Instance-ID | header | string | yes | |
id | path | string | yes |
Responses
200- Deleted
application/jsonsuccessboolean
404- Not found
PATCH /api/purple-suite/grid/tables/{id}
Rename or edit a Grid table
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
X-Instance-ID | header | string | yes | |
id | path | string | yes |
Request body
application/json
Table
idstringseqIdinteger — Client-supplied display sequence numberbaseIdstring — ID of the parent basenamestringfieldCountintegerrecordCountintegercreatedAtstringupdatedAtstring
Responses
200- Updated
application/jsonTableidstringseqIdinteger — Client-supplied display sequence numberbaseIdstring — ID of the parent basenamestringfieldCountintegerrecordCountintegercreatedAtstringupdatedAtstring
404- Not found
GET /api/purple-suite/grid/fields
List Grid field (column) definitions
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
X-Instance-ID | header | string | yes | |
limit | query | integer | no | Legacy page size (default 50). Prefer $top. Ignored when $top/$skip are used. |
cursor | query | string | no | Legacy keyset cursor — pass the previous response's nextCursor. Prefer $skip/$top. |
$filter | query | string | no | OData filter expression. Comparison operators: eq, ne, gt, ge, lt, le. Logical: and, or, not, with parentheses for grouping. String functions: contains(field,'x'), startswith(field,'x'), endswith(field,'x'). Membership: field in ('a','b'). Case-insensitive matching via tolower(field) / toupper(field). Nested fields use a slash, e.g. pto_balance/vacation_days. String literals use single quotes; dates are ISO-8601. Examples: "status eq 'active'"; "salary gt 50000 and department eq 'Engineering'"; "contains(tolower(name),'acme')"; "closeDate gt 2026-01-01". |
$select | query | string | no | Comma-separated list of fields to return, e.g. "id,firstName,email". Nested fields via slash ("pto_balance/vacation_days"). The id field is always included. |
$orderby | query | string | no | Sort clause(s), comma-separated, each "field [asc|desc]" (asc is the default). Example: "createdAt desc, lastName asc". Null values sort last. |
$search | query | string | no | Free-text, case-insensitive substring match across the resource's searchable fields. |
$top | query | integer | no | Maximum number of items to return (page size). |
$skip | query | integer | no | Number of matching items to skip before returning results (offset paging). Combine with $top. |
$count | query | boolean | no | When true, include @odata.count (total matches after $filter/$search, before paging) in the response. |
tableId | query | string | no | Filter fields by parent table ID |
Responses
200- Paginated list
application/jsondataarrayarray of:
FieldidstringtableIdstring — ID of the parent tablenamestringtypestringoptionsobject — Field-type-specific configuration (e.g. choices for singleSelect)createdAtstringupdatedAtstring
nextCursorstring — Cursor for the next page, or null on the last page. With $top/$skip this is the next $skip value; otherwise a keyset cursor.totalinteger — Total documents in the collection.@odata.countinteger — Present only when $count=true: total matches after $filter/$search.@odata.truncatedboolean — Present and true only when the collection exceeded the in-memory query cap and results may be incomplete.
400- Invalid OData query (e.g. malformed $filter)
POST /api/purple-suite/grid/fields
Add a column to a Grid table
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
X-Instance-ID | header | string | yes |
Request body
application/json — required
Field
idstringtableIdstring — ID of the parent tablenamestringtypestringoptionsobject — Field-type-specific configuration (e.g. choices for singleSelect)createdAtstringupdatedAtstring
Responses
201- Created
application/jsonFieldidstringtableIdstring — ID of the parent tablenamestringtypestringoptionsobject — Field-type-specific configuration (e.g. choices for singleSelect)createdAtstringupdatedAtstring
GET /api/purple-suite/grid/fields/{id}
Get a Grid field definition by id
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
X-Instance-ID | header | string | yes | |
id | path | string | yes |
Responses
200- Found
application/jsonFieldidstringtableIdstring — ID of the parent tablenamestringtypestringoptionsobject — Field-type-specific configuration (e.g. choices for singleSelect)createdAtstringupdatedAtstring
404- Not found
DELETE /api/purple-suite/grid/fields/{id}
Delete a Grid field definition
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
X-Instance-ID | header | string | yes | |
id | path | string | yes |
Responses
200- Deleted
application/jsonsuccessboolean
404- Not found
PATCH /api/purple-suite/grid/fields/{id}
Edit a Grid field definition
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
X-Instance-ID | header | string | yes | |
id | path | string | yes |
Request body
application/json
Field
idstringtableIdstring — ID of the parent tablenamestringtypestringoptionsobject — Field-type-specific configuration (e.g. choices for singleSelect)createdAtstringupdatedAtstring
Responses
200- Updated
application/jsonFieldidstringtableIdstring — ID of the parent tablenamestringtypestringoptionsobject — Field-type-specific configuration (e.g. choices for singleSelect)createdAtstringupdatedAtstring
404- Not found
GET /api/purple-suite/grid/records
List Grid records (table rows)
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
X-Instance-ID | header | string | yes | |
limit | query | integer | no | Legacy page size (default 50). Prefer $top. Ignored when $top/$skip are used. |
cursor | query | string | no | Legacy keyset cursor — pass the previous response's nextCursor. Prefer $skip/$top. |
$filter | query | string | no | OData filter expression. Comparison operators: eq, ne, gt, ge, lt, le. Logical: and, or, not, with parentheses for grouping. String functions: contains(field,'x'), startswith(field,'x'), endswith(field,'x'). Membership: field in ('a','b'). Case-insensitive matching via tolower(field) / toupper(field). Nested fields use a slash, e.g. pto_balance/vacation_days. String literals use single quotes; dates are ISO-8601. Examples: "status eq 'active'"; "salary gt 50000 and department eq 'Engineering'"; "contains(tolower(name),'acme')"; "closeDate gt 2026-01-01". |
$select | query | string | no | Comma-separated list of fields to return, e.g. "id,firstName,email". Nested fields via slash ("pto_balance/vacation_days"). The id field is always included. |
$orderby | query | string | no | Sort clause(s), comma-separated, each "field [asc|desc]" (asc is the default). Example: "createdAt desc, lastName asc". Null values sort last. |
$search | query | string | no | Free-text, case-insensitive substring match across the resource's searchable fields. |
$top | query | integer | no | Maximum number of items to return (page size). |
$skip | query | integer | no | Number of matching items to skip before returning results (offset paging). Combine with $top. |
$count | query | boolean | no | When true, include @odata.count (total matches after $filter/$search, before paging) in the response. |
tableId | query | string | no | Filter records by parent table ID |
Responses
200- Paginated list
application/jsondataarrayarray of:
RecordidstringseqIdinteger — Client-supplied display sequence numbertableIdstring — ID of the parent tablenamestringstatusstringassigneestringfieldsobject — Arbitrary key-value cell data keyed by field namecreatedAtstringupdatedAtstring
nextCursorstring — Cursor for the next page, or null on the last page. With $top/$skip this is the next $skip value; otherwise a keyset cursor.totalinteger — Total documents in the collection.@odata.countinteger — Present only when $count=true: total matches after $filter/$search.@odata.truncatedboolean — Present and true only when the collection exceeded the in-memory query cap and results may be incomplete.
400- Invalid OData query (e.g. malformed $filter)
POST /api/purple-suite/grid/records
Create a Grid record (row)
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
X-Instance-ID | header | string | yes |
Request body
application/json — required
Record
idstringseqIdinteger — Client-supplied display sequence numbertableIdstring — ID of the parent tablenamestringstatusstringassigneestringfieldsobject — Arbitrary key-value cell data keyed by field namecreatedAtstringupdatedAtstring
Responses
201- Created
application/jsonRecordidstringseqIdinteger — Client-supplied display sequence numbertableIdstring — ID of the parent tablenamestringstatusstringassigneestringfieldsobject — Arbitrary key-value cell data keyed by field namecreatedAtstringupdatedAtstring
GET /api/purple-suite/grid/records/{id}
Get a Grid record (row) by id
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
X-Instance-ID | header | string | yes | |
id | path | string | yes |
Responses
200- Found
application/jsonRecordidstringseqIdinteger — Client-supplied display sequence numbertableIdstring — ID of the parent tablenamestringstatusstringassigneestringfieldsobject — Arbitrary key-value cell data keyed by field namecreatedAtstringupdatedAtstring
404- Not found
DELETE /api/purple-suite/grid/records/{id}
Delete a Grid record (row)
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
X-Instance-ID | header | string | yes | |
id | path | string | yes |
Responses
200- Deleted
application/jsonsuccessboolean
404- Not found
PATCH /api/purple-suite/grid/records/{id}
Edit cell values on a Grid record
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
X-Instance-ID | header | string | yes | |
id | path | string | yes |
Request body
application/json
Record
idstringseqIdinteger — Client-supplied display sequence numbertableIdstring — ID of the parent tablenamestringstatusstringassigneestringfieldsobject — Arbitrary key-value cell data keyed by field namecreatedAtstringupdatedAtstring
Responses
200- Updated
application/jsonRecordidstringseqIdinteger — Client-supplied display sequence numbertableIdstring — ID of the parent tablenamestringstatusstringassigneestringfieldsobject — Arbitrary key-value cell data keyed by field namecreatedAtstringupdatedAtstring
404- Not found
GET /api/purple-suite/grid/views
List Grid saved views
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
X-Instance-ID | header | string | yes | |
limit | query | integer | no | Legacy page size (default 50). Prefer $top. Ignored when $top/$skip are used. |
cursor | query | string | no | Legacy keyset cursor — pass the previous response's nextCursor. Prefer $skip/$top. |
$filter | query | string | no | OData filter expression. Comparison operators: eq, ne, gt, ge, lt, le. Logical: and, or, not, with parentheses for grouping. String functions: contains(field,'x'), startswith(field,'x'), endswith(field,'x'). Membership: field in ('a','b'). Case-insensitive matching via tolower(field) / toupper(field). Nested fields use a slash, e.g. pto_balance/vacation_days. String literals use single quotes; dates are ISO-8601. Examples: "status eq 'active'"; "salary gt 50000 and department eq 'Engineering'"; "contains(tolower(name),'acme')"; "closeDate gt 2026-01-01". |
$select | query | string | no | Comma-separated list of fields to return, e.g. "id,firstName,email". Nested fields via slash ("pto_balance/vacation_days"). The id field is always included. |
$orderby | query | string | no | Sort clause(s), comma-separated, each "field [asc|desc]" (asc is the default). Example: "createdAt desc, lastName asc". Null values sort last. |
$search | query | string | no | Free-text, case-insensitive substring match across the resource's searchable fields. |
$top | query | integer | no | Maximum number of items to return (page size). |
$skip | query | integer | no | Number of matching items to skip before returning results (offset paging). Combine with $top. |
$count | query | boolean | no | When true, include @odata.count (total matches after $filter/$search, before paging) in the response. |
tableId | query | string | no | Filter views by parent table ID |
Responses
200- Paginated list
application/jsondataarrayarray of:
ViewidstringtableIdstring — ID of the parent tablenamestringtypestringfilterByFormulastring — Grid formula used to filter rows in this viewsortFieldstringsortDirectionstringcreatedAtstringupdatedAtstring
nextCursorstring — Cursor for the next page, or null on the last page. With $top/$skip this is the next $skip value; otherwise a keyset cursor.totalinteger — Total documents in the collection.@odata.countinteger — Present only when $count=true: total matches after $filter/$search.@odata.truncatedboolean — Present and true only when the collection exceeded the in-memory query cap and results may be incomplete.
400- Invalid OData query (e.g. malformed $filter)
POST /api/purple-suite/grid/views
Create a Grid saved view
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
X-Instance-ID | header | string | yes |
Request body
application/json — required
View
idstringtableIdstring — ID of the parent tablenamestringtypestringfilterByFormulastring — Grid formula used to filter rows in this viewsortFieldstringsortDirectionstringcreatedAtstringupdatedAtstring
Responses
201- Created
application/jsonViewidstringtableIdstring — ID of the parent tablenamestringtypestringfilterByFormulastring — Grid formula used to filter rows in this viewsortFieldstringsortDirectionstringcreatedAtstringupdatedAtstring
GET /api/purple-suite/grid/views/{id}
Get a Grid saved view by id
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
X-Instance-ID | header | string | yes | |
id | path | string | yes |
Responses
200- Found
application/jsonViewidstringtableIdstring — ID of the parent tablenamestringtypestringfilterByFormulastring — Grid formula used to filter rows in this viewsortFieldstringsortDirectionstringcreatedAtstringupdatedAtstring
404- Not found
DELETE /api/purple-suite/grid/views/{id}
Delete a Grid saved view
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
X-Instance-ID | header | string | yes | |
id | path | string | yes |
Responses
200- Deleted
application/jsonsuccessboolean
404- Not found
PATCH /api/purple-suite/grid/views/{id}
Edit a Grid saved view
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
X-Instance-ID | header | string | yes | |
id | path | string | yes |
Request body
application/json
View
idstringtableIdstring — ID of the parent tablenamestringtypestringfilterByFormulastring — Grid formula used to filter rows in this viewsortFieldstringsortDirectionstringcreatedAtstringupdatedAtstring
Responses
200- Updated
application/jsonViewidstringtableIdstring — ID of the parent tablenamestringtypestringfilterByFormulastring — Grid formula used to filter rows in this viewsortFieldstringsortDirectionstringcreatedAtstringupdatedAtstring
404- Not found
GET /api/purple-suite/grid/automations
List automations
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
X-Instance-ID | header | string | yes | |
limit | query | integer | no | Legacy page size (default 50). Prefer $top. Ignored when $top/$skip are used. |
cursor | query | string | no | Legacy keyset cursor — pass the previous response's nextCursor. Prefer $skip/$top. |
$filter | query | string | no | OData filter expression. Comparison operators: eq, ne, gt, ge, lt, le. Logical: and, or, not, with parentheses for grouping. String functions: contains(field,'x'), startswith(field,'x'), endswith(field,'x'). Membership: field in ('a','b'). Case-insensitive matching via tolower(field) / toupper(field). Nested fields use a slash, e.g. pto_balance/vacation_days. String literals use single quotes; dates are ISO-8601. Examples: "status eq 'active'"; "salary gt 50000 and department eq 'Engineering'"; "contains(tolower(name),'acme')"; "closeDate gt 2026-01-01". |
$select | query | string | no | Comma-separated list of fields to return, e.g. "id,firstName,email". Nested fields via slash ("pto_balance/vacation_days"). The id field is always included. |
$orderby | query | string | no | Sort clause(s), comma-separated, each "field [asc|desc]" (asc is the default). Example: "createdAt desc, lastName asc". Null values sort last. |
$search | query | string | no | Free-text, case-insensitive substring match across the resource's searchable fields. |
$top | query | integer | no | Maximum number of items to return (page size). |
$skip | query | integer | no | Number of matching items to skip before returning results (offset paging). Combine with $top. |
$count | query | boolean | no | When true, include @odata.count (total matches after $filter/$search, before paging) in the response. |
Responses
200- Paginated list
application/jsondataarrayarray of:
AutomationidstringnamestringenabledbooleantriggerTypestringtriggerFieldstring — Field name that triggers the automation (for recordUpdated triggers)actionTypestringactionConfigobject — Action-specific configuration payloadrunCountinteger — Number of times this automation has runlastRunAtstring — ISO timestamp of the most recent executioncreatedAtstringupdatedAtstring
nextCursorstring — Cursor for the next page, or null on the last page. With $top/$skip this is the next $skip value; otherwise a keyset cursor.totalinteger — Total documents in the collection.@odata.countinteger — Present only when $count=true: total matches after $filter/$search.@odata.truncatedboolean — Present and true only when the collection exceeded the in-memory query cap and results may be incomplete.
400- Invalid OData query (e.g. malformed $filter)
POST /api/purple-suite/grid/automations
Create automation
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
X-Instance-ID | header | string | yes |
Request body
application/json — required
Automation
idstringnamestringenabledbooleantriggerTypestringtriggerFieldstring — Field name that triggers the automation (for recordUpdated triggers)actionTypestringactionConfigobject — Action-specific configuration payloadrunCountinteger — Number of times this automation has runlastRunAtstring — ISO timestamp of the most recent executioncreatedAtstringupdatedAtstring
Responses
201- Created
application/jsonAutomationidstringnamestringenabledbooleantriggerTypestringtriggerFieldstring — Field name that triggers the automation (for recordUpdated triggers)actionTypestringactionConfigobject — Action-specific configuration payloadrunCountinteger — Number of times this automation has runlastRunAtstring — ISO timestamp of the most recent executioncreatedAtstringupdatedAtstring
GET /api/purple-suite/grid/automations/{id}
Get automation
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
X-Instance-ID | header | string | yes | |
id | path | string | yes |
Responses
200- Found
application/jsonAutomationidstringnamestringenabledbooleantriggerTypestringtriggerFieldstring — Field name that triggers the automation (for recordUpdated triggers)actionTypestringactionConfigobject — Action-specific configuration payloadrunCountinteger — Number of times this automation has runlastRunAtstring — ISO timestamp of the most recent executioncreatedAtstringupdatedAtstring
404- Not found
DELETE /api/purple-suite/grid/automations/{id}
Delete automation
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
X-Instance-ID | header | string | yes | |
id | path | string | yes |
Responses
200- Deleted
application/jsonsuccessboolean
404- Not found
PATCH /api/purple-suite/grid/automations/{id}
Update automation
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
X-Instance-ID | header | string | yes | |
id | path | string | yes |
Request body
application/json
Automation
idstringnamestringenabledbooleantriggerTypestringtriggerFieldstring — Field name that triggers the automation (for recordUpdated triggers)actionTypestringactionConfigobject — Action-specific configuration payloadrunCountinteger — Number of times this automation has runlastRunAtstring — ISO timestamp of the most recent executioncreatedAtstringupdatedAtstring
Responses
200- Updated
application/jsonAutomationidstringnamestringenabledbooleantriggerTypestringtriggerFieldstring — Field name that triggers the automation (for recordUpdated triggers)actionTypestringactionConfigobject — Action-specific configuration payloadrunCountinteger — Number of times this automation has runlastRunAtstring — ISO timestamp of the most recent executioncreatedAtstringupdatedAtstring
404- Not found