---
id: service-read-update-my-data
title: "List data update requests of the individual"
description: "Lists all the requests of the individual to update its data in your organisation, open and closed, in no fixed order. `dataRequests` is `null` when the individual has made none. The items do not show the consent record, the data agreement or the data attribute of a request: the webhook event `data.update.initiated` has them. This route takes an API key or a token of the identity provider of the organisation, not an individual token or a token of the privacy dashboard login."
sidebar_label: "List data update requests of the individual"
hide_title: true
hide_table_of_contents: true
api: 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
sidebar_class_name: "get api-method"
info_path: docs/consent-management-individual-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 update requests of the individual</h1>

<MethodEndpoint method={"get"} path={"/v4/service/consent/organisation/data-update"}></MethodEndpoint>



Lists all the requests of the individual to update its data in your organisation, open and closed, in no fixed order. `dataRequests` is `null` when the individual has made none. The items do not show the consent record, the data agreement or the data attribute of a request: the webhook event `data.update.initiated` has them. This route takes an API key or a token of the identity provider of the organisation, not an individual token or a token of the privacy dashboard login.

## Request

<details style={{"marginBottom":"1rem"}} className={"openapi-markdown__details"} data-collapsed={false} open={true}><summary style={{}}><h3 className={"openapi-markdown__details-summary-header-params"}>Header Parameters</h3></summary><div><ul><ParamsItem className={"paramsItem"} param={{"in":"header","name":"X-ConsentBB-IndividualId","required":false,"schema":{"type":"string"},"example":"6af081b138e8f33dcf799628","description":"ID of the individual, or its `externalId`. Mandatory with an API key: without it the answer is `400` (\"IndividualId is not present in request header\"), and an unknown individual gets `400` too. With an individual token, leave it out: the server takes the individual from the token. Send it only on the routes that list it: with an API key that has resource scopes (for example `consent-records:read`), another route answers `400` to a request with this header."}}></ParamsItem></ul></div></details><div><div><ApiTabs label={undefined} id={undefined}><TabItem label={"200"} value={"200"}><div>

The data update requests of the individual.

</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={true} className={"schemaItem"}><details style={{}} className={"openapi-markdown__details"}><summary style={{}}><span className={"openapi-schema__container"}><strong className={"openapi-schema__property"}>dataRequests</strong><span className={"openapi-schema__name"}> object[]</span><span className={"openapi-schema__divider"}></span><span className={"openapi-schema__nullable"}>nullable</span><span className={"openapi-schema__required"}>required</span></span></summary><div style={{"marginLeft":"1rem"}}><li><div style={{"fontSize":"var(--ifm-code-font-size)","opacity":"0.6","marginLeft":"-.5rem","paddingBottom":".5rem"}}>Array [</div></li><SchemaItem collapsible={false} name={"id"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","example":"6af19d442d6fb7b6ac6efd11","description":"ID of the data request."}}></SchemaItem><SchemaItem collapsible={false} name={"userId"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","example":"6af081b138e8f33dcf799628","description":"ID of the individual who made the request."}}></SchemaItem><SchemaItem collapsible={false} name={"userName"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","example":"individual@example.com","description":"E-mail address of the individual when the request was made. It is empty when the individual has no e-mail address."}}></SchemaItem><SchemaItem collapsible={false} name={"organisationId"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","example":"6ae2bf741c3dadfeb27982ec","description":"ID of your organisation."}}></SchemaItem><SchemaItem collapsible={false} name={"type"} required={true} schemaName={"integer"} qualifierMessage={"**Possible values:** [`1`, `2`, `3`]"} schema={{"type":"integer","enum":[1,2,3],"example":1,"description":"Type of the request: `1` delete the data, `2` download the data, `3` update the data."}}></SchemaItem><SchemaItem collapsible={false} name={"typeStr"} required={true} schemaName={"string"} qualifierMessage={"**Possible values:** [`Delete Data`, `Download Data`, `Update Data`]"} schema={{"type":"string","enum":["Delete Data","Download Data","Update Data"],"example":"Delete Data","description":"Name of the type."}}></SchemaItem><SchemaItem collapsible={false} name={"state"} required={true} schemaName={"integer"} qualifierMessage={"**Possible values:** [`1`, `2`, `6`, `7`, `8`]"} schema={{"type":"integer","enum":[1,2,6,7,8],"example":2,"description":"State of the request: `1` initiated, `2` acknowledged, `6` processed without action, `7` processed with action, `8` cancelled by the individual. A request in state `1` or `2` is open; a request in state `6`, `7` or `8` is closed."}}></SchemaItem><SchemaItem collapsible={false} name={"stateStr"} required={true} schemaName={"string"} qualifierMessage={"**Possible values:** [`Request initiated`, `Request acknowledged`, `Request processed without action`, `Request processed with action`, `Request cancelled by user`]"} schema={{"type":"string","enum":["Request initiated","Request acknowledged","Request processed without action","Request processed with action","Request cancelled by user"],"example":"Request acknowledged","description":"Name of the state."}}></SchemaItem><SchemaItem collapsible={false} name={"requestedDate"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","example":"2026-11-09 10:15:32 +0000 UTC","description":"Date and time of the request in UTC, in the text form `YYYY-MM-DD hh:mm:ss +0000 UTC` (not RFC 3339). It comes from the `id` and has a precision of one second."}}></SchemaItem><SchemaItem collapsible={false} name={"closedDate"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","example":"0001-01-01 00:00:00 +0000 UTC","description":"Date and time in UTC when the request went to state `6`, `7` or `8`, in the same text form as `requestedDate` (with milliseconds when they are not zero, for example `2026-11-10 09:03:12.548 +0000 UTC`). An open request has the value `0001-01-01 00:00:00 +0000 UTC`."}}></SchemaItem><SchemaItem collapsible={false} name={"comment"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","example":"We are checking your request.","description":"The comment of your organisation for the current state of the request (the `comment` of the update that set this state). It is empty when there is none."}}></SchemaItem><li><div style={{"fontSize":"var(--ifm-code-font-size)","opacity":"0.6","marginLeft":"-.5rem"}}>]</div></li></div></details></SchemaItem></ul></details></TabItem><TabItem label={"Example (from schema)"} value={"Example (from schema)"}><ResponseSamples responseExample={"{\n  \"dataRequests\": [\n    {\n      \"id\": \"6af19d442d6fb7b6ac6efd11\",\n      \"userId\": \"6af081b138e8f33dcf799628\",\n      \"userName\": \"individual@example.com\",\n      \"organisationId\": \"6ae2bf741c3dadfeb27982ec\",\n      \"type\": 1,\n      \"typeStr\": \"Delete Data\",\n      \"state\": 2,\n      \"stateStr\": \"Request acknowledged\",\n      \"requestedDate\": \"2026-11-09 10:15:32 +0000 UTC\",\n      \"closedDate\": \"0001-01-01 00:00:00 +0000 UTC\",\n      \"comment\": \"We are checking your request.\"\n    }\n  ]\n}"} language={"json"}></ResponseSamples></TabItem><TabItem label={"Example"} value={"Example"}><ResponseSamples responseExample={"{\n  \"dataRequests\": [\n    {\n      \"id\": \"6af2cdfc2d6fb7b6ac6efd17\",\n      \"userId\": \"6af081b138e8f33dcf799628\",\n      \"userName\": \"individual@example.com\",\n      \"organisationId\": \"6ae2bf741c3dadfeb27982ec\",\n      \"type\": 3,\n      \"typeStr\": \"Update Data\",\n      \"state\": 1,\n      \"requestedDate\": \"2026-11-10 07:55:40 +0000 UTC\",\n      \"closedDate\": \"0001-01-01 00:00:00 +0000 UTC\",\n      \"stateStr\": \"Request initiated\",\n      \"comment\": \"\"\n    }\n  ]\n}"} language={"json"}></ResponseSamples></TabItem></SchemaTabs></TabItem></MimeTabs></div></TabItem><TabItem label={"400"} value={"400"}><div>

The `X-ConsentBB-IndividualId` header is missing, or the individual does not exist.

</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={"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>

Internal server error.

</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>
      