> For the complete documentation index, see [llms.txt](https://docs.truedat.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.truedat.io/v8.12/api-integrations/data-catalog-data-lineage-and-grants-apis/data-structures.md).

# Data Structures

## Get bucket structures

> Searches bucket structures using the provided filters.\
> \
> Results are filtered by the caller's active search permission.\
> \
> \`x-total-count\` reports the total matches.\
> \
> \*\*Permissions:\*\*\
> \- Uses the active search permission, typically \*\*'View structures'\*\*.\
> \- When the request includes \`my\_grant\_requests=true\`, the permission automatically switches to \*\*'Create grant request'\*\*.\
> \- When \`link\_structures=true\` is present, it switches to \*\*'Link structures'\*\*<br>

```json
{"openapi":"3.0.0","info":{"title":"td-dd","version":"Truedat 8.12.2"},"paths":{"/api/buckets/structures":{"post":{"description":"Searches bucket structures using the provided filters.\n\nResults are filtered by the caller's active search permission.\n\n`x-total-count` reports the total matches.\n\n**Permissions:**\n- Uses the active search permission, typically **'View structures'**.\n- When the request includes `my_grant_requests=true`, the permission automatically switches to **'Create grant request'**.\n- When `link_structures=true` is present, it switches to **'Link structures'**\n","operationId":"TdDdWeb.DataStructureController.get_bucket_structures","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DataStructureSearchRequest"}}},"description":"Bucket structures filters","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DataStructureSearchResponse"}}},"description":"Bucket structures response"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TdDdUnauthorizedResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TdDdForbiddenResponse"}}},"description":"Forbidden"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TdDdUnprocessableEntityObjectResponse"}}},"description":"Unprocessable Entity"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TdDdInternalServerErrorResponse"}}},"description":"Internal Server Error"}},"summary":"Get bucket structures","tags":["Data Structures"]}}},"components":{"schemas":{"DataStructureSearchRequest":{"additionalProperties":true,"description":"Search parameters for data structures. Common values include `query`, `filters`, `must`, `must_not`, `with`, `without`, `sort`, `scroll`, `scroll_id`, `page` (default `0`), and `size` (default `50`). `filters` and `must` are object-based criteria evaluated by the Elasticsearch layer; the endpoint also supports hierarchical flags such as `include_children`, `data_structure_id`, and other catalog-specific values depending on the view being used.","properties":{"data_structure_id":{"description":"Optional structure ID used in hierarchical views to filter by parent/child scope.","type":"integer"},"filters":{"additionalProperties":{"items":{"oneOf":[{"type":"integer"},{"type":"string"}]},"type":"array"},"description":"Exact filters to apply to the data structure search query.","type":"object"},"include_children":{"default":false,"description":"When true, includes child structures in the result set for hierarchical queries.","type":"boolean"},"must":{"additionalProperties":true,"description":"Mandatory filters that must match in the result documents.","type":"object"},"must_not":{"additionalProperties":{"items":{"type":"string"},"type":"array"},"description":"Negative filters used to exclude matching results.","type":"object"},"page":{"default":0,"description":"Page number for pagination (zero-based).","minimum":0,"type":"integer"},"query":{"description":"Full-text search query used to narrow data structure results.","type":"string"},"scroll":{"description":"Scroll time (for example `1m`) to enable scrolling.","type":"string"},"scroll_id":{"description":"Scroll ID for retrieving the next page when scrolling is enabled.","type":"string"},"size":{"default":50,"description":"Number of results per page.","maximum":100,"minimum":1,"type":"integer"},"sort":{"description":"Sorting criteria, either a list of sort fields or a field-order map.","oneOf":[{"items":{"type":"string"},"type":"array"},{"additionalProperties":{"enum":["asc","desc"],"type":"string"},"type":"object"}]},"with":{"description":"Fields that must exist in the result documents.","oneOf":[{"items":{"type":"string"},"type":"array"},{"type":"string"}]},"without":{"description":"Fields that must not exist in the result documents.","oneOf":[{"items":{"type":"string"},"type":"array"},{"type":"string"}]}},"title":"DataStructureSearchRequest","type":"object"},"DataStructureSearchResponse":{"additionalProperties":false,"properties":{"_actions":{"additionalProperties":true,"nullable":true,"type":"object"},"data":{"items":{"$ref":"#/components/schemas/DataStructure"},"type":"array"},"filters":{"additionalProperties":true,"type":"object"},"scroll_id":{"nullable":true,"type":"string"}},"required":["data"],"title":"DataStructureSearchResponse","type":"object"},"DataStructure":{"additionalProperties":false,"properties":{"my_grant_request":{"nullable":true,"type":"object"},"siblings":{"items":{"$ref":"#/components/schemas/DataStructure"},"nullable":true,"type":"array"},"inserted_at":{"format":"date-time","type":"string"},"note_last_changed_by":{"nullable":true,"type":"string"},"links":{"items":{"type":"object"},"nullable":true,"type":"array"},"type":{"type":"string"},"domains":{"items":{"$ref":"#/components/schemas/Domain"},"nullable":true,"type":"array"},"my_grants":{"items":{"$ref":"#/components/schemas/DataStructure"},"nullable":true,"type":"array"},"path":{"items":{"type":"string"},"nullable":true,"type":"array"},"note_last_changed_at":{"format":"date-time","nullable":true,"type":"string"},"parent_id":{"nullable":true,"type":"string"},"class":{"nullable":true,"type":"string"},"versions":{"items":{"$ref":"#/components/schemas/DataStructureVersion"},"nullable":true,"type":"array"},"source":{"additionalProperties":true,"nullable":true,"type":"object"},"original_name":{"nullable":true,"type":"string"},"deleted_at":{"format":"date-time","nullable":true,"type":"string"},"source_id":{"nullable":true,"type":"integer"},"children":{"items":{"$ref":"#/components/schemas/DataStructure"},"nullable":true,"type":"array"},"note":{"additionalProperties":true,"nullable":true,"type":"object"},"updated_at":{"format":"date-time","type":"string"},"description":{"nullable":true,"type":"string"},"name":{"type":"string"},"id":{"type":"integer"},"user_permissions":{"$ref":"#/components/schemas/UserPermissions"},"field_type":{"nullable":true,"type":"string"},"system_id":{"nullable":true,"type":"integer"},"classes":{"additionalProperties":true,"nullable":true,"type":"object"},"metadata_versions":{"items":{"type":"object"},"nullable":true,"type":"array"},"external_id":{"nullable":true,"type":"string"},"system":{"$ref":"#/components/schemas/System"},"ancestry":{"items":{"type":"object"},"nullable":true,"type":"array"},"parents":{"items":{"$ref":"#/components/schemas/DataStructure"},"nullable":true,"type":"array"},"domain_ids":{"items":{"type":"integer"},"nullable":true,"type":"array"},"linked_concepts":{"nullable":true,"type":"boolean"},"group":{"nullable":true,"type":"string"},"domain":{"additionalProperties":true,"nullable":true,"type":"object"},"confidential":{"nullable":true,"type":"boolean"},"metadata":{"additionalProperties":true,"nullable":true,"type":"object"},"non_published_note":{"additionalProperties":true,"nullable":true,"type":"object"},"data_fields":{"items":{"type":"object"},"nullable":true,"type":"array"},"last_change_at":{"format":"date-time","nullable":true,"type":"string"},"version":{"nullable":true,"type":"integer"},"relations":{"additionalProperties":true,"nullable":true,"type":"object"}},"required":["id","name","type","system"],"title":"DataStructure","type":"object"},"Domain":{"additionalProperties":false,"properties":{"external_id":{"type":"string"},"id":{"type":"integer"},"name":{"type":"string"},"parent_id":{"nullable":true,"type":"integer"},"parents":{"items":{"additionalProperties":false,"properties":{"external_id":{"type":"string"},"id":{"type":"integer"},"name":{"type":"string"}},"type":"object"},"nullable":true,"type":"array"},"updated_at":{"nullable":true,"type":"string"}},"required":["id","external_id","name"],"title":"Domain","type":"object"},"DataStructureVersion":{"additionalProperties":false,"properties":{"_actions":{"additionalProperties":true,"nullable":true,"type":"object"},"children":{"items":{"$ref":"#/components/schemas/DataStructureVersion"},"nullable":true,"type":"array"},"class":{"nullable":true,"type":"string"},"classes":{"additionalProperties":{"type":"string"},"nullable":true,"type":"object"},"data_fields":{"items":{"additionalProperties":true,"type":"object"},"nullable":true,"type":"array"},"data_structure":{"additionalProperties":false,"properties":{"deleted_at":{"format":"date-time","nullable":true,"type":"string"},"domains":{"items":{"$ref":"#/components/schemas/Domain"},"nullable":true,"type":"array"},"external_id":{"type":"string"},"id":{"type":"integer"}},"type":"object"},"deleted_at":{"format":"date-time","nullable":true,"type":"string"},"domains":{"items":{"$ref":"#/components/schemas/Domain"},"nullable":true,"type":"array"},"external_id":{"nullable":true,"type":"string"},"grant":{"$ref":"#/components/schemas/DataStructure"},"grants":{"items":{"$ref":"#/components/schemas/DataStructure"},"nullable":true,"type":"array"},"group":{"nullable":true,"type":"string"},"implementation_count":{"nullable":true,"type":"integer"},"inserted_at":{"format":"date-time","type":"string"},"metadata":{"additionalProperties":true,"type":"object"},"name":{"nullable":true,"type":"string"},"note":{"$ref":"#/components/schemas/Note"},"parents":{"items":{"$ref":"#/components/schemas/DataStructureVersion"},"nullable":true,"type":"array"},"siblings":{"items":{"$ref":"#/components/schemas/DataStructureVersion"},"nullable":true,"type":"array"},"system":{"$ref":"#/components/schemas/System"},"type":{"nullable":true,"type":"string"},"updated_at":{"format":"date-time","type":"string"},"user_permissions":{"$ref":"#/components/schemas/UserPermissions"},"version":{"type":"integer"}},"required":["version"],"title":"DataStructureVersion","type":"object"},"Note":{"additionalProperties":true,"description":"Dynamic content of the published note","title":"Note","type":"object"},"System":{"additionalProperties":false,"properties":{"external_id":{"nullable":true,"type":"string"},"id":{"type":"integer"},"name":{"type":"string"}},"required":["id","name"],"title":"System","type":"object"},"UserPermissions":{"additionalProperties":true,"properties":{"confidential":{"type":"boolean"},"profile_permission":{"type":"boolean"},"request_grant":{"type":"boolean"},"update":{"type":"boolean"},"update_grant_removal":{"type":"boolean"},"view_lineage":{"type":"boolean"},"view_profiling_permission":{"type":"boolean"}},"title":"UserPermissions","type":"object"},"TdDdUnauthorizedResponse":{"anyOf":[{"$ref":"#/components/schemas/TdDdUnauthorizedMessageResponse"},{"$ref":"#/components/schemas/TdDdUnauthorizedErrorResponse"}],"description":"Unauthorized response from auth plug or error view","title":"TdDdUnauthorizedResponse"},"TdDdUnauthorizedMessageResponse":{"additionalProperties":false,"properties":{"message":{"type":"string"}},"required":["message"],"title":"TdDdUnauthorizedMessageResponse","type":"object"},"TdDdUnauthorizedErrorResponse":{"properties":{"errors":{"properties":{"detail":{"type":"string"}},"type":"object"}},"required":["errors"],"title":"TdDdUnauthorizedErrorResponse","type":"object"},"TdDdForbiddenResponse":{"additionalProperties":false,"properties":{"errors":{"additionalProperties":false,"properties":{"detail":{"type":"string"}},"required":["detail"],"type":"object"}},"required":["errors"],"title":"TdDdForbiddenResponse","type":"object"},"TdDdUnprocessableEntityObjectResponse":{"additionalProperties":false,"properties":{"errors":{"properties":{"detail":{"type":"string"}},"type":"object"}},"required":["errors"],"title":"TdDdUnprocessableEntityObjectResponse","type":"object"},"TdDdInternalServerErrorResponse":{"additionalProperties":false,"properties":{"errors":{"additionalProperties":false,"properties":{"detail":{"type":"string"}},"required":["detail"],"type":"object"}},"required":["errors"],"title":"TdDdInternalServerErrorResponse","type":"object"}}}}
```

## Bulk update template content for data structures

> Updates template content (notes) for data structures using a CSV upload.\
> \
> Requires the bulk note-update permission.\
> \
> \*\*Request parameters:\*\*\
> \- \`structures\` (required) – CSV file containing the template updates. It must contain at least the columns required by the template.\
> \- \`lang\` (optional) – language for labels and translations; defaults to the configured application language.\
> \- \`auto\_publish\` (optional) – string \`'true'\` or \`'false'\`; defaults to \`'false'\`. When \`'true'\`, the workflow may publish the content if allowed and if the published content would change.\
> \
> If the same file hash is already being processed, the endpoint returns the existing event status (\`200\` with event details). Otherwise, it starts a background job and returns a \`task\_reference\` (response status \`202\`).\
> \
> The response includes \`hash\`, \`status\`, and \`task\_reference\`.<br>

```json
{"openapi":"3.0.0","info":{"title":"td-dd","version":"Truedat 8.12.2"},"paths":{"/api/data_structures/bulk_update_template_content":{"post":{"description":"Updates template content (notes) for data structures using a CSV upload.\n\nRequires the bulk note-update permission.\n\n**Request parameters:**\n- `structures` (required) – CSV file containing the template updates. It must contain at least the columns required by the template.\n- `lang` (optional) – language for labels and translations; defaults to the configured application language.\n- `auto_publish` (optional) – string `'true'` or `'false'`; defaults to `'false'`. When `'true'`, the workflow may publish the content if allowed and if the published content would change.\n\nIf the same file hash is already being processed, the endpoint returns the existing event status (`200` with event details). Otherwise, it starts a background job and returns a `task_reference` (response status `202`).\n\nThe response includes `hash`, `status`, and `task_reference`.\n","operationId":"TdDdWeb.DataStructureController.bulk_update_template_content","parameters":[],"requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/DataStructureBulkUpdateTemplateContentRequest"}}},"description":"Bulk update template content payload","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DataStructureBulkUpdateTemplateContentResponse"}}},"description":"Bulk update template content response"},"202":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DataStructureBulkUpdateTemplateContentResponse"}}},"description":"Bulk update template content accepted"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TdDdUnauthorizedResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TdDdForbiddenResponse"}}},"description":"Forbidden"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TdDdUnprocessableEntityObjectResponse"}}},"description":"Unprocessable Entity"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TdDdInternalServerErrorResponse"}}},"description":"Internal Server Error"}},"summary":"Bulk update template content for data structures","tags":["Data Structures"]}}},"components":{"schemas":{"DataStructureBulkUpdateTemplateContentRequest":{"properties":{"auto_publish":{"default":"false","enum":["true","false"],"type":"string"},"lang":{"type":"string"},"structures":{"format":"binary","type":"string"}},"required":["structures"],"title":"DataStructureBulkUpdateTemplateContentRequest","type":"object"},"DataStructureBulkUpdateTemplateContentResponse":{"properties":{"hash":{"type":"string"},"status":{"type":"string"},"task_reference":{"additionalProperties":true,"type":"object"}},"title":"DataStructureBulkUpdateTemplateContentResponse","type":"object"},"TdDdUnauthorizedResponse":{"anyOf":[{"$ref":"#/components/schemas/TdDdUnauthorizedMessageResponse"},{"$ref":"#/components/schemas/TdDdUnauthorizedErrorResponse"}],"description":"Unauthorized response from auth plug or error view","title":"TdDdUnauthorizedResponse"},"TdDdUnauthorizedMessageResponse":{"additionalProperties":false,"properties":{"message":{"type":"string"}},"required":["message"],"title":"TdDdUnauthorizedMessageResponse","type":"object"},"TdDdUnauthorizedErrorResponse":{"properties":{"errors":{"properties":{"detail":{"type":"string"}},"type":"object"}},"required":["errors"],"title":"TdDdUnauthorizedErrorResponse","type":"object"},"TdDdForbiddenResponse":{"additionalProperties":false,"properties":{"errors":{"additionalProperties":false,"properties":{"detail":{"type":"string"}},"required":["detail"],"type":"object"}},"required":["errors"],"title":"TdDdForbiddenResponse","type":"object"},"TdDdUnprocessableEntityObjectResponse":{"additionalProperties":false,"properties":{"errors":{"properties":{"detail":{"type":"string"}},"type":"object"}},"required":["errors"],"title":"TdDdUnprocessableEntityObjectResponse","type":"object"},"TdDdInternalServerErrorResponse":{"additionalProperties":false,"properties":{"errors":{"additionalProperties":false,"properties":{"detail":{"type":"string"}},"required":["detail"],"type":"object"}},"required":["errors"],"title":"TdDdInternalServerErrorResponse","type":"object"}}}}
```

## Bulk upload data structure domains

> Bulk uploads domain assignments for data structures from a CSV payload.\
> \
> Requires the \*\*'Manage structure domain'\*\* permission.\
> \
> The CSV must contain \`external\_id\` and \`domain\_external\_ids\` columns; the latter can be a comma-separated list of domain external IDs.<br>

```json
{"openapi":"3.0.0","info":{"title":"td-dd","version":"Truedat 8.12.2"},"paths":{"/api/data_structures/bulk_upload_domains":{"post":{"description":"Bulk uploads domain assignments for data structures from a CSV payload.\n\nRequires the **'Manage structure domain'** permission.\n\nThe CSV must contain `external_id` and `domain_external_ids` columns; the latter can be a comma-separated list of domain external IDs.\n","operationId":"TdDdWeb.DataStructureController.bulk_upload_domains","parameters":[],"requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/DataStructureBulkUploadDomainsRequest"}}},"description":"Bulk upload domains payload","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DataStructureBulkUploadDomainsResponse"}}},"description":"Bulk upload domains response"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TdDdUnauthorizedResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TdDdForbiddenResponse"}}},"description":"Forbidden"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TdDdUnprocessableEntityObjectResponse"}}},"description":"Unprocessable Entity"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TdDdInternalServerErrorResponse"}}},"description":"Internal Server Error"}},"summary":"Bulk upload data structure domains","tags":["Data Structures"]}}},"components":{"schemas":{"DataStructureBulkUploadDomainsRequest":{"properties":{"structures_domains":{"format":"binary","type":"string"}},"required":["structures_domains"],"title":"DataStructureBulkUploadDomainsRequest","type":"object"},"DataStructureBulkUploadDomainsResponse":{"properties":{"errors":{"items":{"additionalProperties":true,"type":"object"},"type":"array"},"ids":{"items":{"type":"integer"},"type":"array"}},"title":"DataStructureBulkUploadDomainsResponse","type":"object"},"TdDdUnauthorizedResponse":{"anyOf":[{"$ref":"#/components/schemas/TdDdUnauthorizedMessageResponse"},{"$ref":"#/components/schemas/TdDdUnauthorizedErrorResponse"}],"description":"Unauthorized response from auth plug or error view","title":"TdDdUnauthorizedResponse"},"TdDdUnauthorizedMessageResponse":{"additionalProperties":false,"properties":{"message":{"type":"string"}},"required":["message"],"title":"TdDdUnauthorizedMessageResponse","type":"object"},"TdDdUnauthorizedErrorResponse":{"properties":{"errors":{"properties":{"detail":{"type":"string"}},"type":"object"}},"required":["errors"],"title":"TdDdUnauthorizedErrorResponse","type":"object"},"TdDdForbiddenResponse":{"additionalProperties":false,"properties":{"errors":{"additionalProperties":false,"properties":{"detail":{"type":"string"}},"required":["detail"],"type":"object"}},"required":["errors"],"title":"TdDdForbiddenResponse","type":"object"},"TdDdUnprocessableEntityObjectResponse":{"additionalProperties":false,"properties":{"errors":{"properties":{"detail":{"type":"string"}},"type":"object"}},"required":["errors"],"title":"TdDdUnprocessableEntityObjectResponse","type":"object"},"TdDdInternalServerErrorResponse":{"additionalProperties":false,"properties":{"errors":{"additionalProperties":false,"properties":{"detail":{"type":"string"}},"required":["detail"],"type":"object"}},"required":["errors"],"title":"TdDdInternalServerErrorResponse","type":"object"}}}}
```

## Update data structure

> Updates the specified data structure using the required \`data\_structure\` object.\
> \
> The optional \`inherit\` query parameter defaults to \`false\`; when true, the update is propagated according to the service workflow.\
> \
> The \`data\_structure\` payload must contain at least one updatable field.\
> \
> Requires the \*\*'Update structures'\*\* permission.<br>

```json
{"openapi":"3.0.0","info":{"title":"td-dd","version":"Truedat 8.12.2"},"paths":{"/api/data_structures/{id}":{"put":{"description":"Updates the specified data structure using the required `data_structure` object.\n\nThe optional `inherit` query parameter defaults to `false`; when true, the update is propagated according to the service workflow.\n\nThe `data_structure` payload must contain at least one updatable field.\n\nRequires the **'Update structures'** permission.\n","operationId":"TdDdWeb.DataStructureController.update","parameters":[{"description":"Data structure ID","in":"path","name":"id","required":true,"schema":{"type":"integer"}},{"description":"Whether to inherit changes to versions","in":"query","name":"inherit","required":false,"schema":{"default":false,"type":"boolean"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DataStructureUpdateRequest"}}},"description":"Data structure update payload","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DataStructureUpdateResponse"}}},"description":"Data structure updated"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TdDdUnauthorizedResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TdDdForbiddenResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TdDdNotFoundErrorResponse"}}},"description":"Not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TdDdConflictResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TdDdUnprocessableEntityObjectResponse"}}},"description":"Unprocessable Entity"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TdDdInternalServerErrorResponse"}}},"description":"Internal Server Error"}},"summary":"Update data structure","tags":["Data Structures"]}}},"components":{"schemas":{"DataStructureUpdateRequest":{"properties":{"data_structure":{"additionalProperties":true,"type":"object"},"inherit":{"type":"boolean"}},"required":["data_structure"],"title":"DataStructureUpdateRequest","type":"object"},"DataStructureUpdateResponse":{"additionalProperties":false,"properties":{"data":{"$ref":"#/components/schemas/DataStructure"},"user_permissions":{"$ref":"#/components/schemas/UserPermissions"}},"required":["data"],"title":"DataStructureUpdateResponse","type":"object"},"DataStructure":{"additionalProperties":false,"properties":{"my_grant_request":{"nullable":true,"type":"object"},"siblings":{"items":{"$ref":"#/components/schemas/DataStructure"},"nullable":true,"type":"array"},"inserted_at":{"format":"date-time","type":"string"},"note_last_changed_by":{"nullable":true,"type":"string"},"links":{"items":{"type":"object"},"nullable":true,"type":"array"},"type":{"type":"string"},"domains":{"items":{"$ref":"#/components/schemas/Domain"},"nullable":true,"type":"array"},"my_grants":{"items":{"$ref":"#/components/schemas/DataStructure"},"nullable":true,"type":"array"},"path":{"items":{"type":"string"},"nullable":true,"type":"array"},"note_last_changed_at":{"format":"date-time","nullable":true,"type":"string"},"parent_id":{"nullable":true,"type":"string"},"class":{"nullable":true,"type":"string"},"versions":{"items":{"$ref":"#/components/schemas/DataStructureVersion"},"nullable":true,"type":"array"},"source":{"additionalProperties":true,"nullable":true,"type":"object"},"original_name":{"nullable":true,"type":"string"},"deleted_at":{"format":"date-time","nullable":true,"type":"string"},"source_id":{"nullable":true,"type":"integer"},"children":{"items":{"$ref":"#/components/schemas/DataStructure"},"nullable":true,"type":"array"},"note":{"additionalProperties":true,"nullable":true,"type":"object"},"updated_at":{"format":"date-time","type":"string"},"description":{"nullable":true,"type":"string"},"name":{"type":"string"},"id":{"type":"integer"},"user_permissions":{"$ref":"#/components/schemas/UserPermissions"},"field_type":{"nullable":true,"type":"string"},"system_id":{"nullable":true,"type":"integer"},"classes":{"additionalProperties":true,"nullable":true,"type":"object"},"metadata_versions":{"items":{"type":"object"},"nullable":true,"type":"array"},"external_id":{"nullable":true,"type":"string"},"system":{"$ref":"#/components/schemas/System"},"ancestry":{"items":{"type":"object"},"nullable":true,"type":"array"},"parents":{"items":{"$ref":"#/components/schemas/DataStructure"},"nullable":true,"type":"array"},"domain_ids":{"items":{"type":"integer"},"nullable":true,"type":"array"},"linked_concepts":{"nullable":true,"type":"boolean"},"group":{"nullable":true,"type":"string"},"domain":{"additionalProperties":true,"nullable":true,"type":"object"},"confidential":{"nullable":true,"type":"boolean"},"metadata":{"additionalProperties":true,"nullable":true,"type":"object"},"non_published_note":{"additionalProperties":true,"nullable":true,"type":"object"},"data_fields":{"items":{"type":"object"},"nullable":true,"type":"array"},"last_change_at":{"format":"date-time","nullable":true,"type":"string"},"version":{"nullable":true,"type":"integer"},"relations":{"additionalProperties":true,"nullable":true,"type":"object"}},"required":["id","name","type","system"],"title":"DataStructure","type":"object"},"Domain":{"additionalProperties":false,"properties":{"external_id":{"type":"string"},"id":{"type":"integer"},"name":{"type":"string"},"parent_id":{"nullable":true,"type":"integer"},"parents":{"items":{"additionalProperties":false,"properties":{"external_id":{"type":"string"},"id":{"type":"integer"},"name":{"type":"string"}},"type":"object"},"nullable":true,"type":"array"},"updated_at":{"nullable":true,"type":"string"}},"required":["id","external_id","name"],"title":"Domain","type":"object"},"DataStructureVersion":{"additionalProperties":false,"properties":{"_actions":{"additionalProperties":true,"nullable":true,"type":"object"},"children":{"items":{"$ref":"#/components/schemas/DataStructureVersion"},"nullable":true,"type":"array"},"class":{"nullable":true,"type":"string"},"classes":{"additionalProperties":{"type":"string"},"nullable":true,"type":"object"},"data_fields":{"items":{"additionalProperties":true,"type":"object"},"nullable":true,"type":"array"},"data_structure":{"additionalProperties":false,"properties":{"deleted_at":{"format":"date-time","nullable":true,"type":"string"},"domains":{"items":{"$ref":"#/components/schemas/Domain"},"nullable":true,"type":"array"},"external_id":{"type":"string"},"id":{"type":"integer"}},"type":"object"},"deleted_at":{"format":"date-time","nullable":true,"type":"string"},"domains":{"items":{"$ref":"#/components/schemas/Domain"},"nullable":true,"type":"array"},"external_id":{"nullable":true,"type":"string"},"grant":{"$ref":"#/components/schemas/DataStructure"},"grants":{"items":{"$ref":"#/components/schemas/DataStructure"},"nullable":true,"type":"array"},"group":{"nullable":true,"type":"string"},"implementation_count":{"nullable":true,"type":"integer"},"inserted_at":{"format":"date-time","type":"string"},"metadata":{"additionalProperties":true,"type":"object"},"name":{"nullable":true,"type":"string"},"note":{"$ref":"#/components/schemas/Note"},"parents":{"items":{"$ref":"#/components/schemas/DataStructureVersion"},"nullable":true,"type":"array"},"siblings":{"items":{"$ref":"#/components/schemas/DataStructureVersion"},"nullable":true,"type":"array"},"system":{"$ref":"#/components/schemas/System"},"type":{"nullable":true,"type":"string"},"updated_at":{"format":"date-time","type":"string"},"user_permissions":{"$ref":"#/components/schemas/UserPermissions"},"version":{"type":"integer"}},"required":["version"],"title":"DataStructureVersion","type":"object"},"Note":{"additionalProperties":true,"description":"Dynamic content of the published note","title":"Note","type":"object"},"System":{"additionalProperties":false,"properties":{"external_id":{"nullable":true,"type":"string"},"id":{"type":"integer"},"name":{"type":"string"}},"required":["id","name"],"title":"System","type":"object"},"UserPermissions":{"additionalProperties":true,"properties":{"confidential":{"type":"boolean"},"profile_permission":{"type":"boolean"},"request_grant":{"type":"boolean"},"update":{"type":"boolean"},"update_grant_removal":{"type":"boolean"},"view_lineage":{"type":"boolean"},"view_profiling_permission":{"type":"boolean"}},"title":"UserPermissions","type":"object"},"TdDdUnauthorizedResponse":{"anyOf":[{"$ref":"#/components/schemas/TdDdUnauthorizedMessageResponse"},{"$ref":"#/components/schemas/TdDdUnauthorizedErrorResponse"}],"description":"Unauthorized response from auth plug or error view","title":"TdDdUnauthorizedResponse"},"TdDdUnauthorizedMessageResponse":{"additionalProperties":false,"properties":{"message":{"type":"string"}},"required":["message"],"title":"TdDdUnauthorizedMessageResponse","type":"object"},"TdDdUnauthorizedErrorResponse":{"properties":{"errors":{"properties":{"detail":{"type":"string"}},"type":"object"}},"required":["errors"],"title":"TdDdUnauthorizedErrorResponse","type":"object"},"TdDdForbiddenResponse":{"additionalProperties":false,"properties":{"errors":{"additionalProperties":false,"properties":{"detail":{"type":"string"}},"required":["detail"],"type":"object"}},"required":["errors"],"title":"TdDdForbiddenResponse","type":"object"},"TdDdNotFoundErrorResponse":{"additionalProperties":false,"properties":{"errors":{"properties":{"detail":{"type":"string"}},"type":"object"}},"required":["errors"],"title":"TdDdNotFoundErrorResponse","type":"object"},"TdDdConflictResponse":{"additionalProperties":false,"properties":{"errors":{"additionalProperties":false,"properties":{"detail":{"type":"string"}},"required":["detail"],"type":"object"}},"required":["errors"],"title":"TdDdConflictResponse","type":"object"},"TdDdUnprocessableEntityObjectResponse":{"additionalProperties":false,"properties":{"errors":{"properties":{"detail":{"type":"string"}},"type":"object"}},"required":["errors"],"title":"TdDdUnprocessableEntityObjectResponse","type":"object"},"TdDdInternalServerErrorResponse":{"additionalProperties":false,"properties":{"errors":{"additionalProperties":false,"properties":{"detail":{"type":"string"}},"required":["detail"],"type":"object"}},"required":["errors"],"title":"TdDdInternalServerErrorResponse","type":"object"}}}}
```

## Delete data structure

> Deletes the specified data structure.\
> \
> The \`logical\` query parameter defaults to \`false\`: omit it or send \`false\` for permanent deletion, and send \`true\` to soft-delete the latest version.\
> \
> Requires the \*\*'Delete structures'\*\* permission.<br>

```json
{"openapi":"3.0.0","info":{"title":"td-dd","version":"Truedat 8.12.2"},"paths":{"/api/data_structures/{id}":{"delete":{"description":"Deletes the specified data structure.\n\nThe `logical` query parameter defaults to `false`: omit it or send `false` for permanent deletion, and send `true` to soft-delete the latest version.\n\nRequires the **'Delete structures'** permission.\n","operationId":"TdDdWeb.DataStructureController.delete","parameters":[{"description":"Data structure ID","in":"path","name":"id","required":true,"schema":{"type":"integer"}},{"description":"If true, performs logical deletion (soft delete)","in":"query","name":"logical","required":false,"schema":{"default":"false","enum":["true","false"],"type":"string"}}],"responses":{"204":{"description":"Data structure deleted"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TdDdUnauthorizedResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TdDdForbiddenResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TdDdNotFoundErrorResponse"}}},"description":"Not found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TdDdInternalServerErrorResponse"}}},"description":"Internal Server Error"}},"summary":"Delete data structure","tags":["Data Structures"]}}},"components":{"schemas":{"TdDdUnauthorizedResponse":{"anyOf":[{"$ref":"#/components/schemas/TdDdUnauthorizedMessageResponse"},{"$ref":"#/components/schemas/TdDdUnauthorizedErrorResponse"}],"description":"Unauthorized response from auth plug or error view","title":"TdDdUnauthorizedResponse"},"TdDdUnauthorizedMessageResponse":{"additionalProperties":false,"properties":{"message":{"type":"string"}},"required":["message"],"title":"TdDdUnauthorizedMessageResponse","type":"object"},"TdDdUnauthorizedErrorResponse":{"properties":{"errors":{"properties":{"detail":{"type":"string"}},"type":"object"}},"required":["errors"],"title":"TdDdUnauthorizedErrorResponse","type":"object"},"TdDdForbiddenResponse":{"additionalProperties":false,"properties":{"errors":{"additionalProperties":false,"properties":{"detail":{"type":"string"}},"required":["detail"],"type":"object"}},"required":["errors"],"title":"TdDdForbiddenResponse","type":"object"},"TdDdNotFoundErrorResponse":{"additionalProperties":false,"properties":{"errors":{"properties":{"detail":{"type":"string"}},"type":"object"}},"required":["errors"],"title":"TdDdNotFoundErrorResponse","type":"object"},"TdDdInternalServerErrorResponse":{"additionalProperties":false,"properties":{"errors":{"additionalProperties":false,"properties":{"detail":{"type":"string"}},"required":["detail"],"type":"object"}},"required":["errors"],"title":"TdDdInternalServerErrorResponse","type":"object"}}}}
```

## Update data structure

> Updates the specified data structure using the required \`data\_structure\` object.\
> \
> The optional \`inherit\` query parameter defaults to \`false\`; when true, the update is propagated according to the service workflow.\
> \
> The \`data\_structure\` payload must contain at least one updatable field.\
> \
> Requires the \*\*'Update structures'\*\* permission.<br>

```json
{"openapi":"3.0.0","info":{"title":"td-dd","version":"Truedat 8.12.2"},"paths":{"/api/data_structures/{id}":{"patch":{"description":"Updates the specified data structure using the required `data_structure` object.\n\nThe optional `inherit` query parameter defaults to `false`; when true, the update is propagated according to the service workflow.\n\nThe `data_structure` payload must contain at least one updatable field.\n\nRequires the **'Update structures'** permission.\n","operationId":"TdDdWeb.DataStructureController.update (2)","parameters":[{"description":"Data structure ID","in":"path","name":"id","required":true,"schema":{"type":"integer"}},{"description":"Whether to inherit changes to versions","in":"query","name":"inherit","required":false,"schema":{"default":false,"type":"boolean"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DataStructureUpdateRequest"}}},"description":"Data structure update payload","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DataStructureUpdateResponse"}}},"description":"Data structure updated"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TdDdUnauthorizedResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TdDdForbiddenResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TdDdNotFoundErrorResponse"}}},"description":"Not found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TdDdConflictResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TdDdUnprocessableEntityObjectResponse"}}},"description":"Unprocessable Entity"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TdDdInternalServerErrorResponse"}}},"description":"Internal Server Error"}},"summary":"Update data structure","tags":["Data Structures"]}}},"components":{"schemas":{"DataStructureUpdateRequest":{"properties":{"data_structure":{"additionalProperties":true,"type":"object"},"inherit":{"type":"boolean"}},"required":["data_structure"],"title":"DataStructureUpdateRequest","type":"object"},"DataStructureUpdateResponse":{"additionalProperties":false,"properties":{"data":{"$ref":"#/components/schemas/DataStructure"},"user_permissions":{"$ref":"#/components/schemas/UserPermissions"}},"required":["data"],"title":"DataStructureUpdateResponse","type":"object"},"DataStructure":{"additionalProperties":false,"properties":{"my_grant_request":{"nullable":true,"type":"object"},"siblings":{"items":{"$ref":"#/components/schemas/DataStructure"},"nullable":true,"type":"array"},"inserted_at":{"format":"date-time","type":"string"},"note_last_changed_by":{"nullable":true,"type":"string"},"links":{"items":{"type":"object"},"nullable":true,"type":"array"},"type":{"type":"string"},"domains":{"items":{"$ref":"#/components/schemas/Domain"},"nullable":true,"type":"array"},"my_grants":{"items":{"$ref":"#/components/schemas/DataStructure"},"nullable":true,"type":"array"},"path":{"items":{"type":"string"},"nullable":true,"type":"array"},"note_last_changed_at":{"format":"date-time","nullable":true,"type":"string"},"parent_id":{"nullable":true,"type":"string"},"class":{"nullable":true,"type":"string"},"versions":{"items":{"$ref":"#/components/schemas/DataStructureVersion"},"nullable":true,"type":"array"},"source":{"additionalProperties":true,"nullable":true,"type":"object"},"original_name":{"nullable":true,"type":"string"},"deleted_at":{"format":"date-time","nullable":true,"type":"string"},"source_id":{"nullable":true,"type":"integer"},"children":{"items":{"$ref":"#/components/schemas/DataStructure"},"nullable":true,"type":"array"},"note":{"additionalProperties":true,"nullable":true,"type":"object"},"updated_at":{"format":"date-time","type":"string"},"description":{"nullable":true,"type":"string"},"name":{"type":"string"},"id":{"type":"integer"},"user_permissions":{"$ref":"#/components/schemas/UserPermissions"},"field_type":{"nullable":true,"type":"string"},"system_id":{"nullable":true,"type":"integer"},"classes":{"additionalProperties":true,"nullable":true,"type":"object"},"metadata_versions":{"items":{"type":"object"},"nullable":true,"type":"array"},"external_id":{"nullable":true,"type":"string"},"system":{"$ref":"#/components/schemas/System"},"ancestry":{"items":{"type":"object"},"nullable":true,"type":"array"},"parents":{"items":{"$ref":"#/components/schemas/DataStructure"},"nullable":true,"type":"array"},"domain_ids":{"items":{"type":"integer"},"nullable":true,"type":"array"},"linked_concepts":{"nullable":true,"type":"boolean"},"group":{"nullable":true,"type":"string"},"domain":{"additionalProperties":true,"nullable":true,"type":"object"},"confidential":{"nullable":true,"type":"boolean"},"metadata":{"additionalProperties":true,"nullable":true,"type":"object"},"non_published_note":{"additionalProperties":true,"nullable":true,"type":"object"},"data_fields":{"items":{"type":"object"},"nullable":true,"type":"array"},"last_change_at":{"format":"date-time","nullable":true,"type":"string"},"version":{"nullable":true,"type":"integer"},"relations":{"additionalProperties":true,"nullable":true,"type":"object"}},"required":["id","name","type","system"],"title":"DataStructure","type":"object"},"Domain":{"additionalProperties":false,"properties":{"external_id":{"type":"string"},"id":{"type":"integer"},"name":{"type":"string"},"parent_id":{"nullable":true,"type":"integer"},"parents":{"items":{"additionalProperties":false,"properties":{"external_id":{"type":"string"},"id":{"type":"integer"},"name":{"type":"string"}},"type":"object"},"nullable":true,"type":"array"},"updated_at":{"nullable":true,"type":"string"}},"required":["id","external_id","name"],"title":"Domain","type":"object"},"DataStructureVersion":{"additionalProperties":false,"properties":{"_actions":{"additionalProperties":true,"nullable":true,"type":"object"},"children":{"items":{"$ref":"#/components/schemas/DataStructureVersion"},"nullable":true,"type":"array"},"class":{"nullable":true,"type":"string"},"classes":{"additionalProperties":{"type":"string"},"nullable":true,"type":"object"},"data_fields":{"items":{"additionalProperties":true,"type":"object"},"nullable":true,"type":"array"},"data_structure":{"additionalProperties":false,"properties":{"deleted_at":{"format":"date-time","nullable":true,"type":"string"},"domains":{"items":{"$ref":"#/components/schemas/Domain"},"nullable":true,"type":"array"},"external_id":{"type":"string"},"id":{"type":"integer"}},"type":"object"},"deleted_at":{"format":"date-time","nullable":true,"type":"string"},"domains":{"items":{"$ref":"#/components/schemas/Domain"},"nullable":true,"type":"array"},"external_id":{"nullable":true,"type":"string"},"grant":{"$ref":"#/components/schemas/DataStructure"},"grants":{"items":{"$ref":"#/components/schemas/DataStructure"},"nullable":true,"type":"array"},"group":{"nullable":true,"type":"string"},"implementation_count":{"nullable":true,"type":"integer"},"inserted_at":{"format":"date-time","type":"string"},"metadata":{"additionalProperties":true,"type":"object"},"name":{"nullable":true,"type":"string"},"note":{"$ref":"#/components/schemas/Note"},"parents":{"items":{"$ref":"#/components/schemas/DataStructureVersion"},"nullable":true,"type":"array"},"siblings":{"items":{"$ref":"#/components/schemas/DataStructureVersion"},"nullable":true,"type":"array"},"system":{"$ref":"#/components/schemas/System"},"type":{"nullable":true,"type":"string"},"updated_at":{"format":"date-time","type":"string"},"user_permissions":{"$ref":"#/components/schemas/UserPermissions"},"version":{"type":"integer"}},"required":["version"],"title":"DataStructureVersion","type":"object"},"Note":{"additionalProperties":true,"description":"Dynamic content of the published note","title":"Note","type":"object"},"System":{"additionalProperties":false,"properties":{"external_id":{"nullable":true,"type":"string"},"id":{"type":"integer"},"name":{"type":"string"}},"required":["id","name"],"title":"System","type":"object"},"UserPermissions":{"additionalProperties":true,"properties":{"confidential":{"type":"boolean"},"profile_permission":{"type":"boolean"},"request_grant":{"type":"boolean"},"update":{"type":"boolean"},"update_grant_removal":{"type":"boolean"},"view_lineage":{"type":"boolean"},"view_profiling_permission":{"type":"boolean"}},"title":"UserPermissions","type":"object"},"TdDdUnauthorizedResponse":{"anyOf":[{"$ref":"#/components/schemas/TdDdUnauthorizedMessageResponse"},{"$ref":"#/components/schemas/TdDdUnauthorizedErrorResponse"}],"description":"Unauthorized response from auth plug or error view","title":"TdDdUnauthorizedResponse"},"TdDdUnauthorizedMessageResponse":{"additionalProperties":false,"properties":{"message":{"type":"string"}},"required":["message"],"title":"TdDdUnauthorizedMessageResponse","type":"object"},"TdDdUnauthorizedErrorResponse":{"properties":{"errors":{"properties":{"detail":{"type":"string"}},"type":"object"}},"required":["errors"],"title":"TdDdUnauthorizedErrorResponse","type":"object"},"TdDdForbiddenResponse":{"additionalProperties":false,"properties":{"errors":{"additionalProperties":false,"properties":{"detail":{"type":"string"}},"required":["detail"],"type":"object"}},"required":["errors"],"title":"TdDdForbiddenResponse","type":"object"},"TdDdNotFoundErrorResponse":{"additionalProperties":false,"properties":{"errors":{"properties":{"detail":{"type":"string"}},"type":"object"}},"required":["errors"],"title":"TdDdNotFoundErrorResponse","type":"object"},"TdDdConflictResponse":{"additionalProperties":false,"properties":{"errors":{"additionalProperties":false,"properties":{"detail":{"type":"string"}},"required":["detail"],"type":"object"}},"required":["errors"],"title":"TdDdConflictResponse","type":"object"},"TdDdUnprocessableEntityObjectResponse":{"additionalProperties":false,"properties":{"errors":{"properties":{"detail":{"type":"string"}},"type":"object"}},"required":["errors"],"title":"TdDdUnprocessableEntityObjectResponse","type":"object"},"TdDdInternalServerErrorResponse":{"additionalProperties":false,"properties":{"errors":{"additionalProperties":false,"properties":{"detail":{"type":"string"}},"required":["detail"],"type":"object"}},"required":["errors"],"title":"TdDdInternalServerErrorResponse","type":"object"}}}}
```

## Upload data structures metadata

> Uploads metadata for data structures via multipart form data.\
> \
> Requires the \*\*'Manage structure metadata'\*\* permission on the target domain. When no \`domain\` is specified, the permission is checked globally. Administrators and service accounts can upload metadata without domain restrictions.\
> \
> \*\*Request body (multipart/form-data):\*\*\
> \- \`data\_structures\` (required) – CSV file with structure metadata. Columns:\
> &#x20; \- \`external\_id\` (required) – Unique structure external ID within the system.\
> &#x20; \- \`name\` (required) – Structure name.\
> &#x20; \- \`system\` (required) – System name.\
> &#x20; \- \`group\` (required) – Group name.\
> &#x20; \- \`type\` (required) – Structure type.\
> &#x20; \- \`class\` (optional) – Structure class (e.g., \`"field"\`).\
> &#x20; \- \`description\` (optional) – Structure description.\
> &#x20; \- \`ou\` (optional) – Domain name.\
> &#x20; \- \`m:\*\` (optional) – Metadata fields prefixed with \`m:\` (e.g., \`m:data\_type\`).\
> \- \`data\_fields\` (optional) – CSV file with field metadata. Columns:\
> &#x20; \- \`external\_id\` (required) – External ID of the parent structure.\
> &#x20; \- \`field\_name\` (required) – Field name.\
> &#x20; \- \`type\` (required) – Field type.\
> &#x20; \- \`description\` (optional) – Field description.\
> &#x20; \- \`nullable\` (optional) – Field nullability.\
> &#x20; \- \`precision\` (optional) – Field precision.\
> &#x20; \- \`field\_external\_id\` (optional) – Field external ID.\
> &#x20; \- \`m:\*\` (optional) – Metadata fields prefixed with \`m:\`.\
> \- \`data\_structure\_relations\` (optional) – CSV file with structure relations. Columns:\
> &#x20; \- \`parent\_external\_id\` (required) – External ID of the parent.\
> &#x20; \- \`child\_external\_id\` (required) – External ID of the child.\
> \- \`external\_id\` (optional) – When provided, the upload is processed synchronously and the response returns the latest version of the specified structure.\
> \- \`parent\_external\_id\` (optional) – Parent external ID for synchronous uploads. When provided together with \`external\_id\`, the parent must already exist.\
> \- \`domain\` (optional) – Domain external ID to assign to all uploaded structures.\
> \- \`inherit\_domains\` (optional) – Whether to inherit domains from the parent (\`true\`/\`false\`). Default: \`false\`.\
> \- \`source\` (optional) – Source external ID.\
> \- \`op\` (optional) – Operation type (e.g., 'upsert').\
> \- \`job\_id\` (optional) – Job ID for tracking.\
> \
> \*\*Behavior differences:\*\*\
> \- \*\*With \`external\_id\`:\*\* The upload is processed synchronously and the latest version of the specified structure is returned.\
> \- \*\*Without \`external\_id\`:\*\* The upload is processed asynchronously and the endpoint returns \`202 Accepted\` immediately.<br>

```json
{"openapi":"3.0.0","info":{"title":"td-dd","version":"Truedat 8.12.2"},"paths":{"/api/data_structures/metadata":{"post":{"description":"Uploads metadata for data structures via multipart form data.\n\nRequires the **'Manage structure metadata'** permission on the target domain. When no `domain` is specified, the permission is checked globally. Administrators and service accounts can upload metadata without domain restrictions.\n\n**Request body (multipart/form-data):**\n- `data_structures` (required) – CSV file with structure metadata. Columns:\n  - `external_id` (required) – Unique structure external ID within the system.\n  - `name` (required) – Structure name.\n  - `system` (required) – System name.\n  - `group` (required) – Group name.\n  - `type` (required) – Structure type.\n  - `class` (optional) – Structure class (e.g., `\"field\"`).\n  - `description` (optional) – Structure description.\n  - `ou` (optional) – Domain name.\n  - `m:*` (optional) – Metadata fields prefixed with `m:` (e.g., `m:data_type`).\n- `data_fields` (optional) – CSV file with field metadata. Columns:\n  - `external_id` (required) – External ID of the parent structure.\n  - `field_name` (required) – Field name.\n  - `type` (required) – Field type.\n  - `description` (optional) – Field description.\n  - `nullable` (optional) – Field nullability.\n  - `precision` (optional) – Field precision.\n  - `field_external_id` (optional) – Field external ID.\n  - `m:*` (optional) – Metadata fields prefixed with `m:`.\n- `data_structure_relations` (optional) – CSV file with structure relations. Columns:\n  - `parent_external_id` (required) – External ID of the parent.\n  - `child_external_id` (required) – External ID of the child.\n- `external_id` (optional) – When provided, the upload is processed synchronously and the response returns the latest version of the specified structure.\n- `parent_external_id` (optional) – Parent external ID for synchronous uploads. When provided together with `external_id`, the parent must already exist.\n- `domain` (optional) – Domain external ID to assign to all uploaded structures.\n- `inherit_domains` (optional) – Whether to inherit domains from the parent (`true`/`false`). Default: `false`.\n- `source` (optional) – Source external ID.\n- `op` (optional) – Operation type (e.g., 'upsert').\n- `job_id` (optional) – Job ID for tracking.\n\n**Behavior differences:**\n- **With `external_id`:** The upload is processed synchronously and the latest version of the specified structure is returned.\n- **Without `external_id`:** The upload is processed asynchronously and the endpoint returns `202 Accepted` immediately.\n","operationId":"TdDdWeb.MetadataController.upload","parameters":[],"requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/MetadataUploadRequest"}}},"description":"Metadata upload payload","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DataStructureVersionResponse"}}},"description":"Metadata upload completed"},"202":{"description":"Metadata upload accepted"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TdDdUnauthorizedResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TdDdForbiddenResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TdDdNotFoundErrorResponse"}}},"description":"Not found"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TdDdUnprocessableEntityStringResponse"}}},"description":"Unprocessable Entity"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TdDdInternalServerErrorResponse"}}},"description":"Internal Server Error"}},"summary":"Upload data structures metadata","tags":["Data Structures"]}}},"components":{"schemas":{"MetadataUploadRequest":{"additionalProperties":false,"properties":{"data_fields":{"description":"CSV file with field metadata","format":"binary","nullable":true,"type":"string"},"data_structure_relations":{"description":"CSV file with structure relations","format":"binary","nullable":true,"type":"string"},"data_structures":{"description":"CSV file with structure metadata","format":"binary","type":"string"},"domain":{"description":"Domain external ID to assign to all structures","nullable":true,"type":"string"},"external_id":{"description":"External ID of the structure to update synchronously","nullable":true,"type":"string"},"inherit_domains":{"description":"Inherit domains from parent (true/false)","nullable":true,"type":"string"},"job_id":{"description":"Job ID for tracking","nullable":true,"type":"string"},"op":{"description":"Operation type (upsert, etc.)","nullable":true,"type":"string"},"parent_external_id":{"description":"Parent external ID for synchronous update","nullable":true,"type":"string"},"source":{"description":"Source external ID","nullable":true,"type":"string"}},"required":["data_structures"],"title":"MetadataUploadRequest","type":"object"},"DataStructureVersionResponse":{"properties":{"data":{"additionalProperties":true,"type":"object"}},"title":"DataStructureVersionResponse","type":"object"},"TdDdUnauthorizedResponse":{"anyOf":[{"$ref":"#/components/schemas/TdDdUnauthorizedMessageResponse"},{"$ref":"#/components/schemas/TdDdUnauthorizedErrorResponse"}],"description":"Unauthorized response from auth plug or error view","title":"TdDdUnauthorizedResponse"},"TdDdUnauthorizedMessageResponse":{"additionalProperties":false,"properties":{"message":{"type":"string"}},"required":["message"],"title":"TdDdUnauthorizedMessageResponse","type":"object"},"TdDdUnauthorizedErrorResponse":{"properties":{"errors":{"properties":{"detail":{"type":"string"}},"type":"object"}},"required":["errors"],"title":"TdDdUnauthorizedErrorResponse","type":"object"},"TdDdForbiddenResponse":{"additionalProperties":false,"properties":{"errors":{"additionalProperties":false,"properties":{"detail":{"type":"string"}},"required":["detail"],"type":"object"}},"required":["errors"],"title":"TdDdForbiddenResponse","type":"object"},"TdDdNotFoundErrorResponse":{"additionalProperties":false,"properties":{"errors":{"properties":{"detail":{"type":"string"}},"type":"object"}},"required":["errors"],"title":"TdDdNotFoundErrorResponse","type":"object"},"TdDdUnprocessableEntityStringResponse":{"additionalProperties":false,"properties":{"error":{"type":"string"},"message":{"type":"string"}},"title":"TdDdUnprocessableEntityStringResponse","type":"object"},"TdDdInternalServerErrorResponse":{"additionalProperties":false,"properties":{"errors":{"additionalProperties":false,"properties":{"detail":{"type":"string"}},"required":["detail"],"type":"object"}},"required":["errors"],"title":"TdDdInternalServerErrorResponse","type":"object"}}}}
```

## Upload data structures metadata

> Uploads metadata for data structures via multipart form data.\
> \
> Requires the \*\*'Manage structure metadata'\*\* permission on the target domain. When no \`domain\` is specified, the permission is checked globally. Administrators and service accounts can upload metadata without domain restrictions.\
> \
> \*\*Request body (multipart/form-data):\*\*\
> \- \`data\_structures\` (required) – CSV file with structure metadata. Columns:\
> &#x20; \- \`external\_id\` (required) – Unique structure external ID within the system.\
> &#x20; \- \`name\` (required) – Structure name.\
> &#x20; \- \`system\` (required) – System name.\
> &#x20; \- \`group\` (required) – Group name.\
> &#x20; \- \`type\` (required) – Structure type.\
> &#x20; \- \`class\` (optional) – Structure class (e.g., \`"field"\`).\
> &#x20; \- \`description\` (optional) – Structure description.\
> &#x20; \- \`ou\` (optional) – Domain name.\
> &#x20; \- \`m:\*\` (optional) – Metadata fields prefixed with \`m:\` (e.g., \`m:data\_type\`).\
> \- \`data\_fields\` (optional) – CSV file with field metadata. Columns:\
> &#x20; \- \`external\_id\` (required) – External ID of the parent structure.\
> &#x20; \- \`field\_name\` (required) – Field name.\
> &#x20; \- \`type\` (required) – Field type.\
> &#x20; \- \`description\` (optional) – Field description.\
> &#x20; \- \`nullable\` (optional) – Field nullability.\
> &#x20; \- \`precision\` (optional) – Field precision.\
> &#x20; \- \`field\_external\_id\` (optional) – Field external ID.\
> &#x20; \- \`m:\*\` (optional) – Metadata fields prefixed with \`m:\`.\
> \- \`data\_structure\_relations\` (optional) – CSV file with structure relations. Columns:\
> &#x20; \- \`parent\_external\_id\` (required) – External ID of the parent.\
> &#x20; \- \`child\_external\_id\` (required) – External ID of the child.\
> \- \`external\_id\` (optional) – When provided, the upload is processed synchronously and the response returns the latest version of the specified structure.\
> \- \`parent\_external\_id\` (optional) – Parent external ID for synchronous uploads. When provided together with \`external\_id\`, the parent must already exist.\
> \- \`domain\` (optional) – Domain external ID to assign to all uploaded structures.\
> \- \`inherit\_domains\` (optional) – Whether to inherit domains from the parent (\`true\`/\`false\`). Default: \`false\`.\
> \- \`source\` (optional) – Source external ID.\
> \- \`op\` (optional) – Operation type (e.g., 'upsert').\
> \- \`job\_id\` (optional) – Job ID for tracking.\
> \
> \*\*Behavior differences:\*\*\
> \- \*\*With \`external\_id\`:\*\* The upload is processed synchronously and the latest version of the specified structure is returned.\
> \- \*\*Without \`external\_id\`:\*\* The upload is processed asynchronously and the endpoint returns \`202 Accepted\` immediately.<br>

```json
{"openapi":"3.0.0","info":{"title":"td-dd","version":"Truedat 8.12.2"},"paths":{"/api/data_structures/metadata":{"patch":{"description":"Uploads metadata for data structures via multipart form data.\n\nRequires the **'Manage structure metadata'** permission on the target domain. When no `domain` is specified, the permission is checked globally. Administrators and service accounts can upload metadata without domain restrictions.\n\n**Request body (multipart/form-data):**\n- `data_structures` (required) – CSV file with structure metadata. Columns:\n  - `external_id` (required) – Unique structure external ID within the system.\n  - `name` (required) – Structure name.\n  - `system` (required) – System name.\n  - `group` (required) – Group name.\n  - `type` (required) – Structure type.\n  - `class` (optional) – Structure class (e.g., `\"field\"`).\n  - `description` (optional) – Structure description.\n  - `ou` (optional) – Domain name.\n  - `m:*` (optional) – Metadata fields prefixed with `m:` (e.g., `m:data_type`).\n- `data_fields` (optional) – CSV file with field metadata. Columns:\n  - `external_id` (required) – External ID of the parent structure.\n  - `field_name` (required) – Field name.\n  - `type` (required) – Field type.\n  - `description` (optional) – Field description.\n  - `nullable` (optional) – Field nullability.\n  - `precision` (optional) – Field precision.\n  - `field_external_id` (optional) – Field external ID.\n  - `m:*` (optional) – Metadata fields prefixed with `m:`.\n- `data_structure_relations` (optional) – CSV file with structure relations. Columns:\n  - `parent_external_id` (required) – External ID of the parent.\n  - `child_external_id` (required) – External ID of the child.\n- `external_id` (optional) – When provided, the upload is processed synchronously and the response returns the latest version of the specified structure.\n- `parent_external_id` (optional) – Parent external ID for synchronous uploads. When provided together with `external_id`, the parent must already exist.\n- `domain` (optional) – Domain external ID to assign to all uploaded structures.\n- `inherit_domains` (optional) – Whether to inherit domains from the parent (`true`/`false`). Default: `false`.\n- `source` (optional) – Source external ID.\n- `op` (optional) – Operation type (e.g., 'upsert').\n- `job_id` (optional) – Job ID for tracking.\n\n**Behavior differences:**\n- **With `external_id`:** The upload is processed synchronously and the latest version of the specified structure is returned.\n- **Without `external_id`:** The upload is processed asynchronously and the endpoint returns `202 Accepted` immediately.\n","operationId":"TdDdWeb.MetadataController.upload (2)","parameters":[],"requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/MetadataUploadRequest"}}},"description":"Metadata upload payload","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DataStructureVersionResponse"}}},"description":"Metadata upload completed"},"202":{"description":"Metadata upload accepted"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TdDdUnauthorizedResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TdDdForbiddenResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TdDdNotFoundErrorResponse"}}},"description":"Not found"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TdDdUnprocessableEntityStringResponse"}}},"description":"Unprocessable Entity"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TdDdInternalServerErrorResponse"}}},"description":"Internal Server Error"}},"summary":"Upload data structures metadata","tags":["Data Structures"]}}},"components":{"schemas":{"MetadataUploadRequest":{"additionalProperties":false,"properties":{"data_fields":{"description":"CSV file with field metadata","format":"binary","nullable":true,"type":"string"},"data_structure_relations":{"description":"CSV file with structure relations","format":"binary","nullable":true,"type":"string"},"data_structures":{"description":"CSV file with structure metadata","format":"binary","type":"string"},"domain":{"description":"Domain external ID to assign to all structures","nullable":true,"type":"string"},"external_id":{"description":"External ID of the structure to update synchronously","nullable":true,"type":"string"},"inherit_domains":{"description":"Inherit domains from parent (true/false)","nullable":true,"type":"string"},"job_id":{"description":"Job ID for tracking","nullable":true,"type":"string"},"op":{"description":"Operation type (upsert, etc.)","nullable":true,"type":"string"},"parent_external_id":{"description":"Parent external ID for synchronous update","nullable":true,"type":"string"},"source":{"description":"Source external ID","nullable":true,"type":"string"}},"required":["data_structures"],"title":"MetadataUploadRequest","type":"object"},"DataStructureVersionResponse":{"properties":{"data":{"additionalProperties":true,"type":"object"}},"title":"DataStructureVersionResponse","type":"object"},"TdDdUnauthorizedResponse":{"anyOf":[{"$ref":"#/components/schemas/TdDdUnauthorizedMessageResponse"},{"$ref":"#/components/schemas/TdDdUnauthorizedErrorResponse"}],"description":"Unauthorized response from auth plug or error view","title":"TdDdUnauthorizedResponse"},"TdDdUnauthorizedMessageResponse":{"additionalProperties":false,"properties":{"message":{"type":"string"}},"required":["message"],"title":"TdDdUnauthorizedMessageResponse","type":"object"},"TdDdUnauthorizedErrorResponse":{"properties":{"errors":{"properties":{"detail":{"type":"string"}},"type":"object"}},"required":["errors"],"title":"TdDdUnauthorizedErrorResponse","type":"object"},"TdDdForbiddenResponse":{"additionalProperties":false,"properties":{"errors":{"additionalProperties":false,"properties":{"detail":{"type":"string"}},"required":["detail"],"type":"object"}},"required":["errors"],"title":"TdDdForbiddenResponse","type":"object"},"TdDdNotFoundErrorResponse":{"additionalProperties":false,"properties":{"errors":{"properties":{"detail":{"type":"string"}},"type":"object"}},"required":["errors"],"title":"TdDdNotFoundErrorResponse","type":"object"},"TdDdUnprocessableEntityStringResponse":{"additionalProperties":false,"properties":{"error":{"type":"string"},"message":{"type":"string"}},"title":"TdDdUnprocessableEntityStringResponse","type":"object"},"TdDdInternalServerErrorResponse":{"additionalProperties":false,"properties":{"errors":{"additionalProperties":false,"properties":{"detail":{"type":"string"}},"required":["detail"],"type":"object"}},"required":["errors"],"title":"TdDdInternalServerErrorResponse","type":"object"}}}}
```

## List data structures

> Retrieves up to 10,000 data structures using the caller's active search permission.\
> \
> Does \*\*not\*\* read query parameters; use the search action for query, filters, sorting, pagination, and scroll behavior.\
> \
> Soft-deleted structures are excluded by default in the search flow\
> \
> \*\*Permissions:\*\*\
> \- Uses the active search permission, typically \*\*'View structures'\*\*.\
> \- When the request includes \`my\_grant\_requests=true\`, the permission automatically switches to \*\*'Create grant request'\*\*.\
> \- When \`link\_structures=true\` is present, it switches to \*\*'Link structures'\*\*.<br>

```json
{"openapi":"3.0.0","info":{"title":"td-dd","version":"Truedat 8.12.2"},"paths":{"/api/data_structures":{"get":{"description":"Retrieves up to 10,000 data structures using the caller's active search permission.\n\nDoes **not** read query parameters; use the search action for query, filters, sorting, pagination, and scroll behavior.\n\nSoft-deleted structures are excluded by default in the search flow\n\n**Permissions:**\n- Uses the active search permission, typically **'View structures'**.\n- When the request includes `my_grant_requests=true`, the permission automatically switches to **'Create grant request'**.\n- When `link_structures=true` is present, it switches to **'Link structures'**.\n","operationId":"TdDdWeb.DataStructureController.index","parameters":[],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DataStructureSearchResponse"}}},"description":"Data structures list response"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TdDdUnauthorizedResponse"}}},"description":"Unauthorized"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TdDdUnprocessableEntityObjectResponse"}}},"description":"Unprocessable Entity"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TdDdInternalServerErrorResponse"}}},"description":"Internal Server Error"}},"summary":"List data structures","tags":["Data Structures"]}}},"components":{"schemas":{"DataStructureSearchResponse":{"additionalProperties":false,"properties":{"_actions":{"additionalProperties":true,"nullable":true,"type":"object"},"data":{"items":{"$ref":"#/components/schemas/DataStructure"},"type":"array"},"filters":{"additionalProperties":true,"type":"object"},"scroll_id":{"nullable":true,"type":"string"}},"required":["data"],"title":"DataStructureSearchResponse","type":"object"},"DataStructure":{"additionalProperties":false,"properties":{"my_grant_request":{"nullable":true,"type":"object"},"siblings":{"items":{"$ref":"#/components/schemas/DataStructure"},"nullable":true,"type":"array"},"inserted_at":{"format":"date-time","type":"string"},"note_last_changed_by":{"nullable":true,"type":"string"},"links":{"items":{"type":"object"},"nullable":true,"type":"array"},"type":{"type":"string"},"domains":{"items":{"$ref":"#/components/schemas/Domain"},"nullable":true,"type":"array"},"my_grants":{"items":{"$ref":"#/components/schemas/DataStructure"},"nullable":true,"type":"array"},"path":{"items":{"type":"string"},"nullable":true,"type":"array"},"note_last_changed_at":{"format":"date-time","nullable":true,"type":"string"},"parent_id":{"nullable":true,"type":"string"},"class":{"nullable":true,"type":"string"},"versions":{"items":{"$ref":"#/components/schemas/DataStructureVersion"},"nullable":true,"type":"array"},"source":{"additionalProperties":true,"nullable":true,"type":"object"},"original_name":{"nullable":true,"type":"string"},"deleted_at":{"format":"date-time","nullable":true,"type":"string"},"source_id":{"nullable":true,"type":"integer"},"children":{"items":{"$ref":"#/components/schemas/DataStructure"},"nullable":true,"type":"array"},"note":{"additionalProperties":true,"nullable":true,"type":"object"},"updated_at":{"format":"date-time","type":"string"},"description":{"nullable":true,"type":"string"},"name":{"type":"string"},"id":{"type":"integer"},"user_permissions":{"$ref":"#/components/schemas/UserPermissions"},"field_type":{"nullable":true,"type":"string"},"system_id":{"nullable":true,"type":"integer"},"classes":{"additionalProperties":true,"nullable":true,"type":"object"},"metadata_versions":{"items":{"type":"object"},"nullable":true,"type":"array"},"external_id":{"nullable":true,"type":"string"},"system":{"$ref":"#/components/schemas/System"},"ancestry":{"items":{"type":"object"},"nullable":true,"type":"array"},"parents":{"items":{"$ref":"#/components/schemas/DataStructure"},"nullable":true,"type":"array"},"domain_ids":{"items":{"type":"integer"},"nullable":true,"type":"array"},"linked_concepts":{"nullable":true,"type":"boolean"},"group":{"nullable":true,"type":"string"},"domain":{"additionalProperties":true,"nullable":true,"type":"object"},"confidential":{"nullable":true,"type":"boolean"},"metadata":{"additionalProperties":true,"nullable":true,"type":"object"},"non_published_note":{"additionalProperties":true,"nullable":true,"type":"object"},"data_fields":{"items":{"type":"object"},"nullable":true,"type":"array"},"last_change_at":{"format":"date-time","nullable":true,"type":"string"},"version":{"nullable":true,"type":"integer"},"relations":{"additionalProperties":true,"nullable":true,"type":"object"}},"required":["id","name","type","system"],"title":"DataStructure","type":"object"},"Domain":{"additionalProperties":false,"properties":{"external_id":{"type":"string"},"id":{"type":"integer"},"name":{"type":"string"},"parent_id":{"nullable":true,"type":"integer"},"parents":{"items":{"additionalProperties":false,"properties":{"external_id":{"type":"string"},"id":{"type":"integer"},"name":{"type":"string"}},"type":"object"},"nullable":true,"type":"array"},"updated_at":{"nullable":true,"type":"string"}},"required":["id","external_id","name"],"title":"Domain","type":"object"},"DataStructureVersion":{"additionalProperties":false,"properties":{"_actions":{"additionalProperties":true,"nullable":true,"type":"object"},"children":{"items":{"$ref":"#/components/schemas/DataStructureVersion"},"nullable":true,"type":"array"},"class":{"nullable":true,"type":"string"},"classes":{"additionalProperties":{"type":"string"},"nullable":true,"type":"object"},"data_fields":{"items":{"additionalProperties":true,"type":"object"},"nullable":true,"type":"array"},"data_structure":{"additionalProperties":false,"properties":{"deleted_at":{"format":"date-time","nullable":true,"type":"string"},"domains":{"items":{"$ref":"#/components/schemas/Domain"},"nullable":true,"type":"array"},"external_id":{"type":"string"},"id":{"type":"integer"}},"type":"object"},"deleted_at":{"format":"date-time","nullable":true,"type":"string"},"domains":{"items":{"$ref":"#/components/schemas/Domain"},"nullable":true,"type":"array"},"external_id":{"nullable":true,"type":"string"},"grant":{"$ref":"#/components/schemas/DataStructure"},"grants":{"items":{"$ref":"#/components/schemas/DataStructure"},"nullable":true,"type":"array"},"group":{"nullable":true,"type":"string"},"implementation_count":{"nullable":true,"type":"integer"},"inserted_at":{"format":"date-time","type":"string"},"metadata":{"additionalProperties":true,"type":"object"},"name":{"nullable":true,"type":"string"},"note":{"$ref":"#/components/schemas/Note"},"parents":{"items":{"$ref":"#/components/schemas/DataStructureVersion"},"nullable":true,"type":"array"},"siblings":{"items":{"$ref":"#/components/schemas/DataStructureVersion"},"nullable":true,"type":"array"},"system":{"$ref":"#/components/schemas/System"},"type":{"nullable":true,"type":"string"},"updated_at":{"format":"date-time","type":"string"},"user_permissions":{"$ref":"#/components/schemas/UserPermissions"},"version":{"type":"integer"}},"required":["version"],"title":"DataStructureVersion","type":"object"},"Note":{"additionalProperties":true,"description":"Dynamic content of the published note","title":"Note","type":"object"},"System":{"additionalProperties":false,"properties":{"external_id":{"nullable":true,"type":"string"},"id":{"type":"integer"},"name":{"type":"string"}},"required":["id","name"],"title":"System","type":"object"},"UserPermissions":{"additionalProperties":true,"properties":{"confidential":{"type":"boolean"},"profile_permission":{"type":"boolean"},"request_grant":{"type":"boolean"},"update":{"type":"boolean"},"update_grant_removal":{"type":"boolean"},"view_lineage":{"type":"boolean"},"view_profiling_permission":{"type":"boolean"}},"title":"UserPermissions","type":"object"},"TdDdUnauthorizedResponse":{"anyOf":[{"$ref":"#/components/schemas/TdDdUnauthorizedMessageResponse"},{"$ref":"#/components/schemas/TdDdUnauthorizedErrorResponse"}],"description":"Unauthorized response from auth plug or error view","title":"TdDdUnauthorizedResponse"},"TdDdUnauthorizedMessageResponse":{"additionalProperties":false,"properties":{"message":{"type":"string"}},"required":["message"],"title":"TdDdUnauthorizedMessageResponse","type":"object"},"TdDdUnauthorizedErrorResponse":{"properties":{"errors":{"properties":{"detail":{"type":"string"}},"type":"object"}},"required":["errors"],"title":"TdDdUnauthorizedErrorResponse","type":"object"},"TdDdUnprocessableEntityObjectResponse":{"additionalProperties":false,"properties":{"errors":{"properties":{"detail":{"type":"string"}},"type":"object"}},"required":["errors"],"title":"TdDdUnprocessableEntityObjectResponse","type":"object"},"TdDdInternalServerErrorResponse":{"additionalProperties":false,"properties":{"errors":{"additionalProperties":false,"properties":{"detail":{"type":"string"}},"required":["detail"],"type":"object"}},"required":["errors"],"title":"TdDdInternalServerErrorResponse","type":"object"}}}}
```

## Search structure tags

> Searches for structure tags (associations between tags and data structures) using optional filters.\
> \
> Requires the \*\*'View structures'\*\* permission.\
> \
> \*\*Request body:\*\*\
> \- \`since\` (optional, ISO 8601 timestamp) – Return structure tags updated at or after this time.\
> \- \`min\_id\` (optional, integer) – Return structure tags with ID greater than or equal to this value.\
> \- \`size\` (optional, integer) – Maximum number of results to return. If omitted, the service default applies.\
> Only the allowed filters are applied; other fields in the request body are ignored.\
> \
> The response includes an \`x-total-count\` header indicating the total number of matching structure tags.<br>

```json
{"openapi":"3.0.0","info":{"title":"td-dd","version":"Truedat 8.12.2"},"paths":{"/api/data_structures/structure_tags/search":{"post":{"description":"Searches for structure tags (associations between tags and data structures) using optional filters.\n\nRequires the **'View structures'** permission.\n\n**Request body:**\n- `since` (optional, ISO 8601 timestamp) – Return structure tags updated at or after this time.\n- `min_id` (optional, integer) – Return structure tags with ID greater than or equal to this value.\n- `size` (optional, integer) – Maximum number of results to return. If omitted, the service default applies.\nOnly the allowed filters are applied; other fields in the request body are ignored.\n\nThe response includes an `x-total-count` header indicating the total number of matching structure tags.\n","operationId":"TdDdWeb.StructureTagSearchController.search","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StructureTagSearchRequest"}}},"description":"Structure tag search filters","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StructureTagSearchResponse"}}},"description":"Structure tag search response"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TdDdUnauthorizedResponse"}}},"description":"Unauthorized"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TdDdInternalServerErrorResponse"}}},"description":"Internal Server Error"}},"summary":"Search structure tags","tags":["Data Structures"]}}},"components":{"schemas":{"StructureTagSearchRequest":{"additionalProperties":false,"properties":{"min_id":{"description":"Return structure tags with ID greater than or equal to this value","nullable":true,"type":"integer"},"since":{"description":"Return structure tags updated at or after this timestamp (ISO 8601)","nullable":true,"type":"string"},"size":{"description":"Maximum number of results to return","minimum":1,"nullable":true,"type":"integer"}},"title":"StructureTagSearchRequest","type":"object"},"StructureTagSearchResponse":{"additionalProperties":false,"properties":{"data":{"description":"List of structure tags matching the search","items":{"$ref":"#/components/schemas/StructureTagResource"},"type":"array"}},"required":["data"],"title":"StructureTagSearchResponse","type":"object"},"StructureTagResource":{"additionalProperties":false,"properties":{"comment":{"nullable":true,"type":"string"},"data_structure_id":{"type":"integer"},"id":{"type":"integer"},"inserted_at":{"format":"date-time","type":"string"},"tag_id":{"type":"integer"},"updated_at":{"format":"date-time","type":"string"}},"required":["id","data_structure_id","tag_id","inserted_at","updated_at"],"title":"StructureTagResource","type":"object"},"TdDdUnauthorizedResponse":{"anyOf":[{"$ref":"#/components/schemas/TdDdUnauthorizedMessageResponse"},{"$ref":"#/components/schemas/TdDdUnauthorizedErrorResponse"}],"description":"Unauthorized response from auth plug or error view","title":"TdDdUnauthorizedResponse"},"TdDdUnauthorizedMessageResponse":{"additionalProperties":false,"properties":{"message":{"type":"string"}},"required":["message"],"title":"TdDdUnauthorizedMessageResponse","type":"object"},"TdDdUnauthorizedErrorResponse":{"properties":{"errors":{"properties":{"detail":{"type":"string"}},"type":"object"}},"required":["errors"],"title":"TdDdUnauthorizedErrorResponse","type":"object"},"TdDdInternalServerErrorResponse":{"additionalProperties":false,"properties":{"errors":{"additionalProperties":false,"properties":{"detail":{"type":"string"}},"required":["detail"],"type":"object"}},"required":["errors"],"title":"TdDdInternalServerErrorResponse","type":"object"}}}}
```

## Get data structures metrics

> Retrieves data‑structure metrics (aggregates) for the authenticated user.\
> \
> Requires administrative privileges (\*\*administrator or service account\*\*).\
> \
> The supported filter is \`since\`, supplied as an ISO-8601 timestamp; \`page\` defaults to \`0\` and \`size\` to \`50\`. The response is paginated and includes \`x-total-count\`.<br>

```json
{"openapi":"3.0.0","info":{"title":"td-dd","version":"Truedat 8.12.2"},"paths":{"/api/data_structures/metrics":{"post":{"description":"Retrieves data‑structure metrics (aggregates) for the authenticated user.\n\nRequires administrative privileges (**administrator or service account**).\n\nThe supported filter is `since`, supplied as an ISO-8601 timestamp; `page` defaults to `0` and `size` to `50`. The response is paginated and includes `x-total-count`.\n","operationId":"TdDdWeb.DataStructureController.metrics","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DataStructureMetricsRequest"}}},"description":"Metrics filters","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DataStructureMetricsResponse"}}},"description":"Data structures metrics"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TdDdUnauthorizedResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TdDdForbiddenResponse"}}},"description":"Forbidden"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TdDdUnprocessableEntityObjectResponse"}}},"description":"Unprocessable Entity"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TdDdInternalServerErrorResponse"}}},"description":"Internal Server Error"}},"summary":"Get data structures metrics","tags":["Data Structures"]}}},"components":{"schemas":{"DataStructureMetricsRequest":{"additionalProperties":true,"description":"Metrics request for data structure aggregates. The optional `since` parameter can be sent as an ISO-8601 `DateTime` string to filter metrics from a given date onward. Pagination defaults are `page = 0` and `size = 50` when not provided.","properties":{"page":{"default":0,"description":"Page number for pagination.","minimum":0,"type":"integer"},"since":{"description":"Start date for metrics, expressed as an ISO-8601 timestamp.","format":"date-time","type":"string"},"size":{"default":50,"description":"Number of results per page.","minimum":1,"type":"integer"}},"title":"DataStructureMetricsRequest","type":"object"},"DataStructureMetricsResponse":{"additionalProperties":false,"properties":{"data":{"items":{"$ref":"#/components/schemas/DataStructureMetric"},"type":"array"}},"required":["data"],"title":"DataStructureMetricsResponse","type":"object"},"DataStructureMetric":{"additionalProperties":false,"properties":{"class":{"nullable":true,"type":"string"},"confidential":{"type":"boolean"},"deleted_at":{"nullable":true,"type":"string"},"description":{"nullable":true,"type":"string"},"domain_ids":{"items":{"type":"integer"},"type":"array"},"external_id":{"nullable":true,"type":"string"},"field_type":{"nullable":true,"type":"string"},"id":{"type":"integer"},"inserted_at":{"type":"string"},"last_change_at":{"nullable":true,"type":"string"},"linked_concepts":{"nullable":true,"type":"boolean"},"metadata":{"additionalProperties":true,"type":"object"},"name":{"type":"string"},"parent_id":{"nullable":true,"type":"integer"},"source_id":{"nullable":true,"type":"integer"},"system_id":{"type":"integer"},"type":{"type":"string"},"updated_at":{"type":"string"},"version":{"type":"integer"}},"required":["id","name","type","system_id","domain_ids","inserted_at","updated_at","version","confidential"],"title":"DataStructureMetric","type":"object"},"TdDdUnauthorizedResponse":{"anyOf":[{"$ref":"#/components/schemas/TdDdUnauthorizedMessageResponse"},{"$ref":"#/components/schemas/TdDdUnauthorizedErrorResponse"}],"description":"Unauthorized response from auth plug or error view","title":"TdDdUnauthorizedResponse"},"TdDdUnauthorizedMessageResponse":{"additionalProperties":false,"properties":{"message":{"type":"string"}},"required":["message"],"title":"TdDdUnauthorizedMessageResponse","type":"object"},"TdDdUnauthorizedErrorResponse":{"properties":{"errors":{"properties":{"detail":{"type":"string"}},"type":"object"}},"required":["errors"],"title":"TdDdUnauthorizedErrorResponse","type":"object"},"TdDdForbiddenResponse":{"additionalProperties":false,"properties":{"errors":{"additionalProperties":false,"properties":{"detail":{"type":"string"}},"required":["detail"],"type":"object"}},"required":["errors"],"title":"TdDdForbiddenResponse","type":"object"},"TdDdUnprocessableEntityObjectResponse":{"additionalProperties":false,"properties":{"errors":{"properties":{"detail":{"type":"string"}},"type":"object"}},"required":["errors"],"title":"TdDdUnprocessableEntityObjectResponse","type":"object"},"TdDdInternalServerErrorResponse":{"additionalProperties":false,"properties":{"errors":{"additionalProperties":false,"properties":{"detail":{"type":"string"}},"required":["detail"],"type":"object"}},"required":["errors"],"title":"TdDdInternalServerErrorResponse","type":"object"}}}}
```

## Bulk update data structures

> Performs a bulk update on structures selected by \`search\_params\` using \`update\_attributes\`.\
> \
> Requires the bulk note-update permission.\
> \
> The response is raw JSON containing updated structure IDs in \`ids\` and per-item failures in \`errors\`; processing can publish when \`auto\_publish\` is supplied.<br>

```json
{"openapi":"3.0.0","info":{"title":"td-dd","version":"Truedat 8.12.2"},"paths":{"/api/data_structures/bulk_update":{"post":{"description":"Performs a bulk update on structures selected by `search_params` using `update_attributes`.\n\nRequires the bulk note-update permission.\n\nThe response is raw JSON containing updated structure IDs in `ids` and per-item failures in `errors`; processing can publish when `auto_publish` is supplied.\n","operationId":"TdDdWeb.DataStructureController.bulk_update","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DataStructureBulkUpdateRequest"}}},"description":"Bulk update request","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DataStructureBulkUpdateResponse"}}},"description":"Bulk update response"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TdDdUnauthorizedResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TdDdForbiddenResponse"}}},"description":"Forbidden"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TdDdUnprocessableEntityObjectResponse"}}},"description":"Unprocessable Entity"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TdDdInternalServerErrorResponse"}}},"description":"Internal Server Error"}},"summary":"Bulk update data structures","tags":["Data Structures"]}}},"components":{"schemas":{"DataStructureBulkUpdateRequest":{"properties":{"bulk_update_request":{"additionalProperties":true,"type":"object"}},"required":["bulk_update_request"],"title":"DataStructureBulkUpdateRequest","type":"object"},"DataStructureBulkUpdateResponse":{"properties":{"errors":{"items":{"additionalProperties":true,"type":"object"},"type":"array"},"ids":{"items":{"type":"integer"},"type":"array"}},"title":"DataStructureBulkUpdateResponse","type":"object"},"TdDdUnauthorizedResponse":{"anyOf":[{"$ref":"#/components/schemas/TdDdUnauthorizedMessageResponse"},{"$ref":"#/components/schemas/TdDdUnauthorizedErrorResponse"}],"description":"Unauthorized response from auth plug or error view","title":"TdDdUnauthorizedResponse"},"TdDdUnauthorizedMessageResponse":{"additionalProperties":false,"properties":{"message":{"type":"string"}},"required":["message"],"title":"TdDdUnauthorizedMessageResponse","type":"object"},"TdDdUnauthorizedErrorResponse":{"properties":{"errors":{"properties":{"detail":{"type":"string"}},"type":"object"}},"required":["errors"],"title":"TdDdUnauthorizedErrorResponse","type":"object"},"TdDdForbiddenResponse":{"additionalProperties":false,"properties":{"errors":{"additionalProperties":false,"properties":{"detail":{"type":"string"}},"required":["detail"],"type":"object"}},"required":["errors"],"title":"TdDdForbiddenResponse","type":"object"},"TdDdUnprocessableEntityObjectResponse":{"additionalProperties":false,"properties":{"errors":{"properties":{"detail":{"type":"string"}},"type":"object"}},"required":["errors"],"title":"TdDdUnprocessableEntityObjectResponse","type":"object"},"TdDdInternalServerErrorResponse":{"additionalProperties":false,"properties":{"errors":{"additionalProperties":false,"properties":{"detail":{"type":"string"}},"required":["detail"],"type":"object"}},"required":["errors"],"title":"TdDdInternalServerErrorResponse","type":"object"}}}}
```

## Search data structures

> Searches data structures using the supplied filters.\
> \
> Search parameters are documented in DataStructureSearchRequest schema. \`page\` defaults to \`0\` and \`size\` defaults to \`50\`; \`scroll\` and \`scroll\_id\` support retrieving large result sets.\
> \
> The response contains permission-filtered structures, aggregation filters when returned by the search layer, and a \`scroll\_id\` when scrolling is active.\
> \
> The \`x-total-count\` header reports the total number of matches.\
> \
> \*\*Permissions:\*\*\
> \- Uses the active search permission, typically \*\*'View structures'\*\*.\
> \- When the request includes \`my\_grant\_requests=true\`, the permission automatically switches to \*\*'Create grant request'\*\*.\
> \- When \`link\_structures=true\` is present, it switches to \*\*'Link structures'\*\*.<br>

```json
{"openapi":"3.0.0","info":{"title":"td-dd","version":"Truedat 8.12.2"},"paths":{"/api/data_structures/search":{"post":{"description":"Searches data structures using the supplied filters.\n\nSearch parameters are documented in DataStructureSearchRequest schema. `page` defaults to `0` and `size` defaults to `50`; `scroll` and `scroll_id` support retrieving large result sets.\n\nThe response contains permission-filtered structures, aggregation filters when returned by the search layer, and a `scroll_id` when scrolling is active.\n\nThe `x-total-count` header reports the total number of matches.\n\n**Permissions:**\n- Uses the active search permission, typically **'View structures'**.\n- When the request includes `my_grant_requests=true`, the permission automatically switches to **'Create grant request'**.\n- When `link_structures=true` is present, it switches to **'Link structures'**.\n","operationId":"TdDdWeb.DataStructureController.search","parameters":[],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DataStructureSearchRequest"}}},"description":"Search filters","required":false},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DataStructureSearchResponse"}}},"description":"Search data structures response"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TdDdUnauthorizedResponse"}}},"description":"Unauthorized"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TdDdUnprocessableEntityObjectResponse"}}},"description":"Unprocessable Entity"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TdDdInternalServerErrorResponse"}}},"description":"Internal Server Error"}},"summary":"Search data structures","tags":["Data Structures"]}}},"components":{"schemas":{"DataStructureSearchRequest":{"additionalProperties":true,"description":"Search parameters for data structures. Common values include `query`, `filters`, `must`, `must_not`, `with`, `without`, `sort`, `scroll`, `scroll_id`, `page` (default `0`), and `size` (default `50`). `filters` and `must` are object-based criteria evaluated by the Elasticsearch layer; the endpoint also supports hierarchical flags such as `include_children`, `data_structure_id`, and other catalog-specific values depending on the view being used.","properties":{"data_structure_id":{"description":"Optional structure ID used in hierarchical views to filter by parent/child scope.","type":"integer"},"filters":{"additionalProperties":{"items":{"oneOf":[{"type":"integer"},{"type":"string"}]},"type":"array"},"description":"Exact filters to apply to the data structure search query.","type":"object"},"include_children":{"default":false,"description":"When true, includes child structures in the result set for hierarchical queries.","type":"boolean"},"must":{"additionalProperties":true,"description":"Mandatory filters that must match in the result documents.","type":"object"},"must_not":{"additionalProperties":{"items":{"type":"string"},"type":"array"},"description":"Negative filters used to exclude matching results.","type":"object"},"page":{"default":0,"description":"Page number for pagination (zero-based).","minimum":0,"type":"integer"},"query":{"description":"Full-text search query used to narrow data structure results.","type":"string"},"scroll":{"description":"Scroll time (for example `1m`) to enable scrolling.","type":"string"},"scroll_id":{"description":"Scroll ID for retrieving the next page when scrolling is enabled.","type":"string"},"size":{"default":50,"description":"Number of results per page.","maximum":100,"minimum":1,"type":"integer"},"sort":{"description":"Sorting criteria, either a list of sort fields or a field-order map.","oneOf":[{"items":{"type":"string"},"type":"array"},{"additionalProperties":{"enum":["asc","desc"],"type":"string"},"type":"object"}]},"with":{"description":"Fields that must exist in the result documents.","oneOf":[{"items":{"type":"string"},"type":"array"},{"type":"string"}]},"without":{"description":"Fields that must not exist in the result documents.","oneOf":[{"items":{"type":"string"},"type":"array"},{"type":"string"}]}},"title":"DataStructureSearchRequest","type":"object"},"DataStructureSearchResponse":{"additionalProperties":false,"properties":{"_actions":{"additionalProperties":true,"nullable":true,"type":"object"},"data":{"items":{"$ref":"#/components/schemas/DataStructure"},"type":"array"},"filters":{"additionalProperties":true,"type":"object"},"scroll_id":{"nullable":true,"type":"string"}},"required":["data"],"title":"DataStructureSearchResponse","type":"object"},"DataStructure":{"additionalProperties":false,"properties":{"my_grant_request":{"nullable":true,"type":"object"},"siblings":{"items":{"$ref":"#/components/schemas/DataStructure"},"nullable":true,"type":"array"},"inserted_at":{"format":"date-time","type":"string"},"note_last_changed_by":{"nullable":true,"type":"string"},"links":{"items":{"type":"object"},"nullable":true,"type":"array"},"type":{"type":"string"},"domains":{"items":{"$ref":"#/components/schemas/Domain"},"nullable":true,"type":"array"},"my_grants":{"items":{"$ref":"#/components/schemas/DataStructure"},"nullable":true,"type":"array"},"path":{"items":{"type":"string"},"nullable":true,"type":"array"},"note_last_changed_at":{"format":"date-time","nullable":true,"type":"string"},"parent_id":{"nullable":true,"type":"string"},"class":{"nullable":true,"type":"string"},"versions":{"items":{"$ref":"#/components/schemas/DataStructureVersion"},"nullable":true,"type":"array"},"source":{"additionalProperties":true,"nullable":true,"type":"object"},"original_name":{"nullable":true,"type":"string"},"deleted_at":{"format":"date-time","nullable":true,"type":"string"},"source_id":{"nullable":true,"type":"integer"},"children":{"items":{"$ref":"#/components/schemas/DataStructure"},"nullable":true,"type":"array"},"note":{"additionalProperties":true,"nullable":true,"type":"object"},"updated_at":{"format":"date-time","type":"string"},"description":{"nullable":true,"type":"string"},"name":{"type":"string"},"id":{"type":"integer"},"user_permissions":{"$ref":"#/components/schemas/UserPermissions"},"field_type":{"nullable":true,"type":"string"},"system_id":{"nullable":true,"type":"integer"},"classes":{"additionalProperties":true,"nullable":true,"type":"object"},"metadata_versions":{"items":{"type":"object"},"nullable":true,"type":"array"},"external_id":{"nullable":true,"type":"string"},"system":{"$ref":"#/components/schemas/System"},"ancestry":{"items":{"type":"object"},"nullable":true,"type":"array"},"parents":{"items":{"$ref":"#/components/schemas/DataStructure"},"nullable":true,"type":"array"},"domain_ids":{"items":{"type":"integer"},"nullable":true,"type":"array"},"linked_concepts":{"nullable":true,"type":"boolean"},"group":{"nullable":true,"type":"string"},"domain":{"additionalProperties":true,"nullable":true,"type":"object"},"confidential":{"nullable":true,"type":"boolean"},"metadata":{"additionalProperties":true,"nullable":true,"type":"object"},"non_published_note":{"additionalProperties":true,"nullable":true,"type":"object"},"data_fields":{"items":{"type":"object"},"nullable":true,"type":"array"},"last_change_at":{"format":"date-time","nullable":true,"type":"string"},"version":{"nullable":true,"type":"integer"},"relations":{"additionalProperties":true,"nullable":true,"type":"object"}},"required":["id","name","type","system"],"title":"DataStructure","type":"object"},"Domain":{"additionalProperties":false,"properties":{"external_id":{"type":"string"},"id":{"type":"integer"},"name":{"type":"string"},"parent_id":{"nullable":true,"type":"integer"},"parents":{"items":{"additionalProperties":false,"properties":{"external_id":{"type":"string"},"id":{"type":"integer"},"name":{"type":"string"}},"type":"object"},"nullable":true,"type":"array"},"updated_at":{"nullable":true,"type":"string"}},"required":["id","external_id","name"],"title":"Domain","type":"object"},"DataStructureVersion":{"additionalProperties":false,"properties":{"_actions":{"additionalProperties":true,"nullable":true,"type":"object"},"children":{"items":{"$ref":"#/components/schemas/DataStructureVersion"},"nullable":true,"type":"array"},"class":{"nullable":true,"type":"string"},"classes":{"additionalProperties":{"type":"string"},"nullable":true,"type":"object"},"data_fields":{"items":{"additionalProperties":true,"type":"object"},"nullable":true,"type":"array"},"data_structure":{"additionalProperties":false,"properties":{"deleted_at":{"format":"date-time","nullable":true,"type":"string"},"domains":{"items":{"$ref":"#/components/schemas/Domain"},"nullable":true,"type":"array"},"external_id":{"type":"string"},"id":{"type":"integer"}},"type":"object"},"deleted_at":{"format":"date-time","nullable":true,"type":"string"},"domains":{"items":{"$ref":"#/components/schemas/Domain"},"nullable":true,"type":"array"},"external_id":{"nullable":true,"type":"string"},"grant":{"$ref":"#/components/schemas/DataStructure"},"grants":{"items":{"$ref":"#/components/schemas/DataStructure"},"nullable":true,"type":"array"},"group":{"nullable":true,"type":"string"},"implementation_count":{"nullable":true,"type":"integer"},"inserted_at":{"format":"date-time","type":"string"},"metadata":{"additionalProperties":true,"type":"object"},"name":{"nullable":true,"type":"string"},"note":{"$ref":"#/components/schemas/Note"},"parents":{"items":{"$ref":"#/components/schemas/DataStructureVersion"},"nullable":true,"type":"array"},"siblings":{"items":{"$ref":"#/components/schemas/DataStructureVersion"},"nullable":true,"type":"array"},"system":{"$ref":"#/components/schemas/System"},"type":{"nullable":true,"type":"string"},"updated_at":{"format":"date-time","type":"string"},"user_permissions":{"$ref":"#/components/schemas/UserPermissions"},"version":{"type":"integer"}},"required":["version"],"title":"DataStructureVersion","type":"object"},"Note":{"additionalProperties":true,"description":"Dynamic content of the published note","title":"Note","type":"object"},"System":{"additionalProperties":false,"properties":{"external_id":{"nullable":true,"type":"string"},"id":{"type":"integer"},"name":{"type":"string"}},"required":["id","name"],"title":"System","type":"object"},"UserPermissions":{"additionalProperties":true,"properties":{"confidential":{"type":"boolean"},"profile_permission":{"type":"boolean"},"request_grant":{"type":"boolean"},"update":{"type":"boolean"},"update_grant_removal":{"type":"boolean"},"view_lineage":{"type":"boolean"},"view_profiling_permission":{"type":"boolean"}},"title":"UserPermissions","type":"object"},"TdDdUnauthorizedResponse":{"anyOf":[{"$ref":"#/components/schemas/TdDdUnauthorizedMessageResponse"},{"$ref":"#/components/schemas/TdDdUnauthorizedErrorResponse"}],"description":"Unauthorized response from auth plug or error view","title":"TdDdUnauthorizedResponse"},"TdDdUnauthorizedMessageResponse":{"additionalProperties":false,"properties":{"message":{"type":"string"}},"required":["message"],"title":"TdDdUnauthorizedMessageResponse","type":"object"},"TdDdUnauthorizedErrorResponse":{"properties":{"errors":{"properties":{"detail":{"type":"string"}},"type":"object"}},"required":["errors"],"title":"TdDdUnauthorizedErrorResponse","type":"object"},"TdDdUnprocessableEntityObjectResponse":{"additionalProperties":false,"properties":{"errors":{"properties":{"detail":{"type":"string"}},"type":"object"}},"required":["errors"],"title":"TdDdUnprocessableEntityObjectResponse","type":"object"},"TdDdInternalServerErrorResponse":{"additionalProperties":false,"properties":{"errors":{"additionalProperties":false,"properties":{"detail":{"type":"string"}},"required":["detail"],"type":"object"}},"required":["errors"],"title":"TdDdInternalServerErrorResponse","type":"object"}}}}
```

## Get structures for a system

> Retrieves up to 1,000 structures for the specified system, excluding deleted structures.\
> \
> Results are filtered by the caller's active search permission.\
> \
> \`x-total-count\` reports the total matches.\
> \
> \*\*Permissions:\*\*\
> \- Uses the active search permission, typically \*\*'View structures'\*\*.\
> \- When the request includes \`my\_grant\_requests=true\`, the permission automatically switches to \*\*'Create grant request'\*\*.\
> \- When \`link\_structures=true\` is present, it switches to \*\*'Link structures'\*\*.<br>

```json
{"openapi":"3.0.0","info":{"title":"td-dd","version":"Truedat 8.12.2"},"paths":{"/api/systems/{system_id}/structures":{"get":{"description":"Retrieves up to 1,000 structures for the specified system, excluding deleted structures.\n\nResults are filtered by the caller's active search permission.\n\n`x-total-count` reports the total matches.\n\n**Permissions:**\n- Uses the active search permission, typically **'View structures'**.\n- When the request includes `my_grant_requests=true`, the permission automatically switches to **'Create grant request'**.\n- When `link_structures=true` is present, it switches to **'Link structures'**.\n","operationId":"TdDdWeb.DataStructureController.get_system_structures","parameters":[{"description":"System ID","in":"path","name":"system_id","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DataStructureSearchResponse"}}},"description":"System structures response"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TdDdUnauthorizedResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TdDdForbiddenResponse"}}},"description":"Forbidden"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TdDdUnprocessableEntityObjectResponse"}}},"description":"Unprocessable Entity"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TdDdInternalServerErrorResponse"}}},"description":"Internal Server Error"}},"summary":"Get structures for a system","tags":["Data Structures"]}}},"components":{"schemas":{"DataStructureSearchResponse":{"additionalProperties":false,"properties":{"_actions":{"additionalProperties":true,"nullable":true,"type":"object"},"data":{"items":{"$ref":"#/components/schemas/DataStructure"},"type":"array"},"filters":{"additionalProperties":true,"type":"object"},"scroll_id":{"nullable":true,"type":"string"}},"required":["data"],"title":"DataStructureSearchResponse","type":"object"},"DataStructure":{"additionalProperties":false,"properties":{"my_grant_request":{"nullable":true,"type":"object"},"siblings":{"items":{"$ref":"#/components/schemas/DataStructure"},"nullable":true,"type":"array"},"inserted_at":{"format":"date-time","type":"string"},"note_last_changed_by":{"nullable":true,"type":"string"},"links":{"items":{"type":"object"},"nullable":true,"type":"array"},"type":{"type":"string"},"domains":{"items":{"$ref":"#/components/schemas/Domain"},"nullable":true,"type":"array"},"my_grants":{"items":{"$ref":"#/components/schemas/DataStructure"},"nullable":true,"type":"array"},"path":{"items":{"type":"string"},"nullable":true,"type":"array"},"note_last_changed_at":{"format":"date-time","nullable":true,"type":"string"},"parent_id":{"nullable":true,"type":"string"},"class":{"nullable":true,"type":"string"},"versions":{"items":{"$ref":"#/components/schemas/DataStructureVersion"},"nullable":true,"type":"array"},"source":{"additionalProperties":true,"nullable":true,"type":"object"},"original_name":{"nullable":true,"type":"string"},"deleted_at":{"format":"date-time","nullable":true,"type":"string"},"source_id":{"nullable":true,"type":"integer"},"children":{"items":{"$ref":"#/components/schemas/DataStructure"},"nullable":true,"type":"array"},"note":{"additionalProperties":true,"nullable":true,"type":"object"},"updated_at":{"format":"date-time","type":"string"},"description":{"nullable":true,"type":"string"},"name":{"type":"string"},"id":{"type":"integer"},"user_permissions":{"$ref":"#/components/schemas/UserPermissions"},"field_type":{"nullable":true,"type":"string"},"system_id":{"nullable":true,"type":"integer"},"classes":{"additionalProperties":true,"nullable":true,"type":"object"},"metadata_versions":{"items":{"type":"object"},"nullable":true,"type":"array"},"external_id":{"nullable":true,"type":"string"},"system":{"$ref":"#/components/schemas/System"},"ancestry":{"items":{"type":"object"},"nullable":true,"type":"array"},"parents":{"items":{"$ref":"#/components/schemas/DataStructure"},"nullable":true,"type":"array"},"domain_ids":{"items":{"type":"integer"},"nullable":true,"type":"array"},"linked_concepts":{"nullable":true,"type":"boolean"},"group":{"nullable":true,"type":"string"},"domain":{"additionalProperties":true,"nullable":true,"type":"object"},"confidential":{"nullable":true,"type":"boolean"},"metadata":{"additionalProperties":true,"nullable":true,"type":"object"},"non_published_note":{"additionalProperties":true,"nullable":true,"type":"object"},"data_fields":{"items":{"type":"object"},"nullable":true,"type":"array"},"last_change_at":{"format":"date-time","nullable":true,"type":"string"},"version":{"nullable":true,"type":"integer"},"relations":{"additionalProperties":true,"nullable":true,"type":"object"}},"required":["id","name","type","system"],"title":"DataStructure","type":"object"},"Domain":{"additionalProperties":false,"properties":{"external_id":{"type":"string"},"id":{"type":"integer"},"name":{"type":"string"},"parent_id":{"nullable":true,"type":"integer"},"parents":{"items":{"additionalProperties":false,"properties":{"external_id":{"type":"string"},"id":{"type":"integer"},"name":{"type":"string"}},"type":"object"},"nullable":true,"type":"array"},"updated_at":{"nullable":true,"type":"string"}},"required":["id","external_id","name"],"title":"Domain","type":"object"},"DataStructureVersion":{"additionalProperties":false,"properties":{"_actions":{"additionalProperties":true,"nullable":true,"type":"object"},"children":{"items":{"$ref":"#/components/schemas/DataStructureVersion"},"nullable":true,"type":"array"},"class":{"nullable":true,"type":"string"},"classes":{"additionalProperties":{"type":"string"},"nullable":true,"type":"object"},"data_fields":{"items":{"additionalProperties":true,"type":"object"},"nullable":true,"type":"array"},"data_structure":{"additionalProperties":false,"properties":{"deleted_at":{"format":"date-time","nullable":true,"type":"string"},"domains":{"items":{"$ref":"#/components/schemas/Domain"},"nullable":true,"type":"array"},"external_id":{"type":"string"},"id":{"type":"integer"}},"type":"object"},"deleted_at":{"format":"date-time","nullable":true,"type":"string"},"domains":{"items":{"$ref":"#/components/schemas/Domain"},"nullable":true,"type":"array"},"external_id":{"nullable":true,"type":"string"},"grant":{"$ref":"#/components/schemas/DataStructure"},"grants":{"items":{"$ref":"#/components/schemas/DataStructure"},"nullable":true,"type":"array"},"group":{"nullable":true,"type":"string"},"implementation_count":{"nullable":true,"type":"integer"},"inserted_at":{"format":"date-time","type":"string"},"metadata":{"additionalProperties":true,"type":"object"},"name":{"nullable":true,"type":"string"},"note":{"$ref":"#/components/schemas/Note"},"parents":{"items":{"$ref":"#/components/schemas/DataStructureVersion"},"nullable":true,"type":"array"},"siblings":{"items":{"$ref":"#/components/schemas/DataStructureVersion"},"nullable":true,"type":"array"},"system":{"$ref":"#/components/schemas/System"},"type":{"nullable":true,"type":"string"},"updated_at":{"format":"date-time","type":"string"},"user_permissions":{"$ref":"#/components/schemas/UserPermissions"},"version":{"type":"integer"}},"required":["version"],"title":"DataStructureVersion","type":"object"},"Note":{"additionalProperties":true,"description":"Dynamic content of the published note","title":"Note","type":"object"},"System":{"additionalProperties":false,"properties":{"external_id":{"nullable":true,"type":"string"},"id":{"type":"integer"},"name":{"type":"string"}},"required":["id","name"],"title":"System","type":"object"},"UserPermissions":{"additionalProperties":true,"properties":{"confidential":{"type":"boolean"},"profile_permission":{"type":"boolean"},"request_grant":{"type":"boolean"},"update":{"type":"boolean"},"update_grant_removal":{"type":"boolean"},"view_lineage":{"type":"boolean"},"view_profiling_permission":{"type":"boolean"}},"title":"UserPermissions","type":"object"},"TdDdUnauthorizedResponse":{"anyOf":[{"$ref":"#/components/schemas/TdDdUnauthorizedMessageResponse"},{"$ref":"#/components/schemas/TdDdUnauthorizedErrorResponse"}],"description":"Unauthorized response from auth plug or error view","title":"TdDdUnauthorizedResponse"},"TdDdUnauthorizedMessageResponse":{"additionalProperties":false,"properties":{"message":{"type":"string"}},"required":["message"],"title":"TdDdUnauthorizedMessageResponse","type":"object"},"TdDdUnauthorizedErrorResponse":{"properties":{"errors":{"properties":{"detail":{"type":"string"}},"type":"object"}},"required":["errors"],"title":"TdDdUnauthorizedErrorResponse","type":"object"},"TdDdForbiddenResponse":{"additionalProperties":false,"properties":{"errors":{"additionalProperties":false,"properties":{"detail":{"type":"string"}},"required":["detail"],"type":"object"}},"required":["errors"],"title":"TdDdForbiddenResponse","type":"object"},"TdDdUnprocessableEntityObjectResponse":{"additionalProperties":false,"properties":{"errors":{"properties":{"detail":{"type":"string"}},"type":"object"}},"required":["errors"],"title":"TdDdUnprocessableEntityObjectResponse","type":"object"},"TdDdInternalServerErrorResponse":{"additionalProperties":false,"properties":{"errors":{"additionalProperties":false,"properties":{"detail":{"type":"string"}},"required":["detail"],"type":"object"}},"required":["errors"],"title":"TdDdInternalServerErrorResponse","type":"object"}}}}
```
