Opero Docs
Opero APIcompanies

Read relation-table rows through Dynamic Form

POST
/v1/companies/{companyId}/forms/{formId}/relation-tables/table-layout

Authorization

api-token
AuthorizationBearer <token>

Opero API token. Send it as Authorization: Bearer ek_...

In: header

Path Parameters

formId*string

Dynamic Form ID

companyId*string

Query Parameters

capability*string
recordId?string

Dynamic record ID for VIEW or EDIT.

expand?string

Comma-separated Form field keys to expand.

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

application/json

application/json

curl -X POST "https://example.com/v1/companies/string/forms/string/relation-tables/table-layout?capability=CREATE" \  -H "Content-Type: application/json" \  -d '{    "recordIds": [      "rec_1",      "rec_2"    ],    "columns": [      "name",      "quantity",      "product.name",      "product.sku"    ]  }'
{  "data": {    "layout": {      "id": "layout_123",      "versionId": "version_123",      "catalogProfile": "DYNAMIC_OBJECT",      "mode": "VIEW",      "moduleKey": "crm",      "objectKey": "invoice_line",      "formId": "line-view-form"    },    "fields": [      {        "nodeId": "block_line_name",        "fieldId": "field_name_id",        "fieldKey": "name",        "label": "Name",        "type": "LINES",        "options": {},        "resolvedOptions": {          "state": "ready",          "source": "sql_query",          "queryId": "query_123",          "data": [            {              "value": "prod_1",              "label": "Product A"            }          ],          "meta": {            "hasMore": false          }        },        "config": {},        "editable": false,        "isRequired": false      }    ],    "columns": [      {        "path": "product.name",        "label": "Product / Name",        "type": "LINES",        "source": "row",        "editable": true,        "nodeId": "block_line_name",        "fieldKey": "name",        "fieldId": "field_name_id"      }    ],    "records": [      {        "id": "rec_1",        "values": {}      }    ]  }}
{  "error": {    "code": "NOT_FOUND",    "message": "Resource not found",    "meta": {      "partiallyApplied": true,      "failedPhase": "defaultForms",      "committedObjects": [        {          "id": "5e2af9bc-be0b-4ad8-af57-e8319fb115d3",          "key": "session",          "created": true        }      ],      "fieldsWritten": 1,      "fieldsDeleted": 0    },    "fieldErrors": {      "name": [        "Field \"name\" is required"      ]    },    "unavailableMutationScopes": [      "contractor.bankAccounts"    ],    "clientMutationId": "019f2e3a-7c8b-7a33-9fc8-90db2b5b1e50",    "relationTableErrors": {},    "idempotencyConflict": {},    "errors": [      {        "message": "relation \"foo\" does not exist"      }    ],    "impacts": [      {}    ],    "validation": {}  }}
{  "error": {    "code": "NOT_FOUND",    "message": "Resource not found",    "meta": {      "partiallyApplied": true,      "failedPhase": "defaultForms",      "committedObjects": [        {          "id": "5e2af9bc-be0b-4ad8-af57-e8319fb115d3",          "key": "session",          "created": true        }      ],      "fieldsWritten": 1,      "fieldsDeleted": 0    },    "fieldErrors": {      "name": [        "Field \"name\" is required"      ]    },    "unavailableMutationScopes": [      "contractor.bankAccounts"    ],    "clientMutationId": "019f2e3a-7c8b-7a33-9fc8-90db2b5b1e50",    "relationTableErrors": {},    "idempotencyConflict": {},    "errors": [      {        "message": "relation \"foo\" does not exist"      }    ],    "impacts": [      {}    ],    "validation": {}  }}
{  "error": {    "code": "NOT_FOUND",    "message": "Resource not found",    "meta": {      "partiallyApplied": true,      "failedPhase": "defaultForms",      "committedObjects": [        {          "id": "5e2af9bc-be0b-4ad8-af57-e8319fb115d3",          "key": "session",          "created": true        }      ],      "fieldsWritten": 1,      "fieldsDeleted": 0    },    "fieldErrors": {      "name": [        "Field \"name\" is required"      ]    },    "unavailableMutationScopes": [      "contractor.bankAccounts"    ],    "clientMutationId": "019f2e3a-7c8b-7a33-9fc8-90db2b5b1e50",    "relationTableErrors": {},    "idempotencyConflict": {},    "errors": [      {        "message": "relation \"foo\" does not exist"      }    ],    "impacts": [      {}    ],    "validation": {}  }}
{  "error": {    "code": "NOT_FOUND",    "message": "Resource not found",    "meta": {      "partiallyApplied": true,      "failedPhase": "defaultForms",      "committedObjects": [        {          "id": "5e2af9bc-be0b-4ad8-af57-e8319fb115d3",          "key": "session",          "created": true        }      ],      "fieldsWritten": 1,      "fieldsDeleted": 0    },    "fieldErrors": {      "name": [        "Field \"name\" is required"      ]    },    "unavailableMutationScopes": [      "contractor.bankAccounts"    ],    "clientMutationId": "019f2e3a-7c8b-7a33-9fc8-90db2b5b1e50",    "relationTableErrors": {},    "idempotencyConflict": {},    "errors": [      {        "message": "relation \"foo\" does not exist"      }    ],    "impacts": [      {}    ],    "validation": {}  }}