---
id: config-list-data-attributes-for-data-agreement
title: "List data attributes of a data agreement"
description: "Lists the data attributes of one data agreement in its current state (also a draft), one page at a time. Each item also names its data agreement."
sidebar_label: "List data attributes of a data agreement"
hide_title: true
hide_table_of_contents: true
api: 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
sidebar_class_name: "get api-method"
info_path: docs/consent-management-admin-api/igrant-io-api-documentation
custom_edit_url: null
---

> **Build this with an AI coding agent.** Install the iGrant.io Agent Skills, then ask your agent to build the integration:
>
> ```bash
> npx skills add L3-iGrant/skills
> ```


import ApiTabs from "@theme/ApiTabs";
import DiscriminatorTabs from "@theme/DiscriminatorTabs";
import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
import SecuritySchemes from "@theme/ApiExplorer/SecuritySchemes";
import MimeTabs from "@theme/MimeTabs";
import ParamsItem from "@theme/ParamsItem";
import ResponseSamples from "@theme/ResponseSamples";
import SchemaItem from "@theme/SchemaItem";
import SchemaTabs from "@theme/SchemaTabs";
import Markdown from "@theme/Markdown";
import OperationTabs from "@theme/OperationTabs";
import TabItem from "@theme/TabItem";

<h1 className={"openapi__heading"}>List data attributes of a data agreement</h1>

<MethodEndpoint method={"get"} path={"/v4/config/consent/data-agreement/{dataAgreementId}/data-attributes"}></MethodEndpoint>



Lists the data attributes of one data agreement in its current state (also a draft), one page at a time. Each item also names its data agreement.

## Request

<details style={{"marginBottom":"1rem"}} className={"openapi-markdown__details"} data-collapsed={false} open={true}><summary style={{}}><h3 className={"openapi-markdown__details-summary-header-params"}>Path Parameters</h3></summary><div><ul><ParamsItem className={"paramsItem"} param={{"description":"Data agreement ID.","in":"path","name":"dataAgreementId","required":true,"schema":{"type":"string"},"example":"6af080eb2d6fb7b6ac6efc57"}}></ParamsItem></ul></div></details><details style={{"marginBottom":"1rem"}} className={"openapi-markdown__details"} data-collapsed={false} open={true}><summary style={{}}><h3 className={"openapi-markdown__details-summary-header-params"}>Query Parameters</h3></summary><div><ul><ParamsItem className={"paramsItem"} param={{"description":"Number of records to skip for pagination. A negative or unreadable value falls back to `0`.","in":"query","name":"offset","required":false,"schema":{"type":"integer","default":0,"minimum":0}}}></ParamsItem><ParamsItem className={"paramsItem"} param={{"name":"limit","in":"query","description":"Maximum number of records to return per page.","required":false,"schema":{"type":"integer","default":10}}}></ParamsItem></ul></div></details><div><div><ApiTabs label={undefined} id={undefined}><TabItem label={"200"} value={"200"}><div>

One page of data attributes.

</div><div><MimeTabs className={"openapi-tabs__mime"} schemaType={"response"}><TabItem label={"application/json"} value={"application/json"}><SchemaTabs className={"openapi-tabs__schema"}><TabItem label={"Schema"} value={"Schema"}><details style={{}} className={"openapi-markdown__details response"} data-collapsed={false} open={true}><summary style={{}} className={"openapi-markdown__details-summary-response"}><strong>Schema</strong></summary><div style={{"textAlign":"left","marginLeft":"1rem"}}></div><ul style={{"marginLeft":"1rem"}}><SchemaItem collapsible={false} name={"dataAttributes"} required={false} schemaName={"object[]"} qualifierMessage={undefined} schema={{"type":"array","items":{"allOf":[{"type":"object","description":"One item of personal data that a purpose uses, for example an email address.","x-not-in-database":false,"required":["name","description"],"properties":{"id":{"type":"string","example":"6af080eb2d6fb7b6ac6efc5a","description":"Data attribute ID. The server sets it."},"name":{"type":"string","example":"Email address","description":"Name of the data attribute."},"description":{"type":"string","maxLength":500,"example":"Email address to send the newsletter to","description":"What the data is and why the purpose needs it. Up to 500 characters."},"sensitivity":{"type":"boolean","example":false,"description":"`true` for sensitive data, for example health data (GDPR Article 9)."},"category":{"type":"string","example":"Contact","description":"A free category that groups the data attributes, for example `Contact`."},"restrictions":{"type":"array","nullable":true,"example":null,"description":"Not used. The server does not store the restrictions of a request, so an answer has `null` here.","items":{"type":"object","properties":{"schemaId":{"type":"string"},"credDefId":{"type":"string"}}}},"scope":{"type":"string","description":"Not used by the consent routes. The server returns it only when it has a value."}}},{"type":"object","properties":{"dataAgreement":{"type":"object","description":"The data agreement of the data attribute.","properties":{"id":{"type":"string","description":"Data agreement ID."},"purpose":{"type":"string","description":"Purpose of the data agreement."}}}}}]}}}></SchemaItem><SchemaItem collapsible={true} className={"schemaItem"}><details style={{}} className={"openapi-markdown__details"}><summary style={{}}><span className={"openapi-schema__container"}><strong className={"openapi-schema__property"}>pagination</strong><span className={"openapi-schema__name"}> object</span></span></summary><div style={{"marginLeft":"1rem"}}><SchemaItem collapsible={false} name={"currentPage"} required={false} schemaName={"integer"} qualifierMessage={undefined} schema={{"type":"integer","description":"Current page number","example":1}}></SchemaItem><SchemaItem collapsible={false} name={"totalItems"} required={false} schemaName={"integer"} qualifierMessage={undefined} schema={{"type":"integer","description":"Total number of items available","example":25}}></SchemaItem><SchemaItem collapsible={false} name={"totalPages"} required={false} schemaName={"integer"} qualifierMessage={undefined} schema={{"type":"integer","description":"Total number of pages based on limit","example":3}}></SchemaItem><SchemaItem collapsible={false} name={"limit"} required={false} schemaName={"integer"} qualifierMessage={undefined} schema={{"type":"integer","description":"Number of items per page","example":10}}></SchemaItem><SchemaItem collapsible={false} name={"hasPrevious"} required={false} schemaName={"boolean"} qualifierMessage={undefined} schema={{"type":"boolean","description":"Indicates if there's a previous page","example":false}}></SchemaItem><SchemaItem collapsible={false} name={"hasNext"} required={false} schemaName={"boolean"} qualifierMessage={undefined} schema={{"type":"boolean","description":"Indicates if there's a next page","example":true}}></SchemaItem></div></details></SchemaItem></ul></details></TabItem><TabItem label={"Example (from schema)"} value={"Example (from schema)"}><ResponseSamples responseExample={"{\n  \"dataAttributes\": [\n    {\n      \"id\": \"6af080eb2d6fb7b6ac6efc5a\",\n      \"name\": \"Email address\",\n      \"description\": \"Email address to send the newsletter to\",\n      \"sensitivity\": false,\n      \"category\": \"Contact\",\n      \"restrictions\": null,\n      \"scope\": \"string\",\n      \"dataAgreement\": {\n        \"id\": \"string\",\n        \"purpose\": \"string\"\n      }\n    }\n  ],\n  \"pagination\": {\n    \"currentPage\": 1,\n    \"totalItems\": 25,\n    \"totalPages\": 3,\n    \"limit\": 10,\n    \"hasPrevious\": false,\n    \"hasNext\": true\n  }\n}"} language={"json"}></ResponseSamples></TabItem><TabItem label={"Example"} value={"Example"}><ResponseSamples responseExample={"{\n  \"dataAttributes\": [\n    {\n      \"id\": \"6af0818f2d6fb7b6ac6efc69\",\n      \"name\": \"Email address\",\n      \"description\": \"Email address to send the newsletter to\",\n      \"sensitivity\": false,\n      \"category\": \"Contact\",\n      \"dataAgreement\": {\n        \"id\": \"6af080eb2d6fb7b6ac6efc57\",\n        \"purpose\": \"Newsletter\"\n      }\n    },\n    {\n      \"id\": \"6af0818f2d6fb7b6ac6efc6a\",\n      \"name\": \"Preferred language\",\n      \"description\": \"Language of the newsletter\",\n      \"sensitivity\": false,\n      \"category\": \"Preferences\",\n      \"dataAgreement\": {\n        \"id\": \"6af080eb2d6fb7b6ac6efc57\",\n        \"purpose\": \"Newsletter\"\n      }\n    },\n    {\n      \"id\": \"6af081a12d6fb7b6ac6efc6d\",\n      \"name\": \"First name\",\n      \"description\": \"First name to greet the reader in the newsletter\",\n      \"sensitivity\": false,\n      \"category\": \"Contact\",\n      \"dataAgreement\": {\n        \"id\": \"6af080eb2d6fb7b6ac6efc57\",\n        \"purpose\": \"Newsletter\"\n      }\n    }\n  ],\n  \"pagination\": {\n    \"currentPage\": 1,\n    \"totalItems\": 3,\n    \"totalPages\": 1,\n    \"limit\": 10,\n    \"hasPrevious\": false,\n    \"hasNext\": false\n  }\n}"} language={"json"}></ResponseSamples></TabItem></SchemaTabs></TabItem></MimeTabs></div></TabItem><TabItem label={"401"} value={"401"}><div>

The API key or the token is missing or not valid.

</div><div><MimeTabs className={"openapi-tabs__mime"} schemaType={"response"}><TabItem label={"application/json"} value={"application/json"}><SchemaTabs className={"openapi-tabs__schema"}><TabItem label={"Schema"} value={"Schema"}><details style={{}} className={"openapi-markdown__details response"} data-collapsed={false} open={true}><summary style={{}} className={"openapi-markdown__details-summary-response"}><strong>Schema</strong></summary><div style={{"textAlign":"left","marginLeft":"1rem"}}></div><ul style={{"marginLeft":"1rem"}}><SchemaItem collapsible={false} name={"errorCode"} required={true} schemaName={"integer"} qualifierMessage={undefined} schema={{"type":"integer","example":400}}></SchemaItem><SchemaItem collapsible={false} name={"errorDescription"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","example":"Bad input parameter"}}></SchemaItem><SchemaItem collapsible={false} name={"errorKey"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"A text code of the refusal that does not change when the text changes. Only some refusals have it, for example `organisation_suspended`, `feature_disabled` or `purpose_exists`."}}></SchemaItem></ul></details></TabItem><TabItem label={"Example (from schema)"} value={"Example (from schema)"}><ResponseSamples responseExample={"{\n  \"errorCode\": 400,\n  \"errorDescription\": \"Bad input parameter\",\n  \"errorKey\": \"string\"\n}"} language={"json"}></ResponseSamples></TabItem></SchemaTabs></TabItem></MimeTabs></div></TabItem><TabItem label={"500"} value={"500"}><div>

The data agreement does not exist, or the server failed.

</div><div><MimeTabs className={"openapi-tabs__mime"} schemaType={"response"}><TabItem label={"application/json"} value={"application/json"}><SchemaTabs className={"openapi-tabs__schema"}><TabItem label={"Schema"} value={"Schema"}><details style={{}} className={"openapi-markdown__details response"} data-collapsed={false} open={true}><summary style={{}} className={"openapi-markdown__details-summary-response"}><strong>Schema</strong></summary><div style={{"textAlign":"left","marginLeft":"1rem"}}></div><ul style={{"marginLeft":"1rem"}}><SchemaItem collapsible={false} name={"errorCode"} required={true} schemaName={"integer"} qualifierMessage={undefined} schema={{"type":"integer","example":400}}></SchemaItem><SchemaItem collapsible={false} name={"errorDescription"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","example":"Bad input parameter"}}></SchemaItem><SchemaItem collapsible={false} name={"errorKey"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"A text code of the refusal that does not change when the text changes. Only some refusals have it, for example `organisation_suspended`, `feature_disabled` or `purpose_exists`."}}></SchemaItem></ul></details></TabItem><TabItem label={"Example (from schema)"} value={"Example (from schema)"}><ResponseSamples responseExample={"{\n  \"errorCode\": 400,\n  \"errorDescription\": \"Bad input parameter\",\n  \"errorKey\": \"string\"\n}"} language={"json"}></ResponseSamples></TabItem></SchemaTabs></TabItem></MimeTabs></div></TabItem></ApiTabs></div></div>
      