---
title: "Update Purpose"
method: PUT
path: "/api/consentmanager/v1/purposes/{purposeId}"
tags: ["Purposes"]
---

# Update Purpose

`PUT /api/consentmanager/v1/purposes/{purposeId}`

## Request

- Base URL: `https://hostname`
- URL: `https://hostname/api/consentmanager/v1/purposes/{purposeId}`
- Auth: OAuth 2
  - Client credentials
  - Token URL: `https://{hostname}/api/access/v1/oauth/token` scopes: `CONSENT`

Use this API to update an existing Purpose. Before calling this API, ensure that the Purpose is in **Draft** status. If the Purpose is in **Active** status, use the [Create New Purpose Version](https://developer.onetrust.com/onetrust/reference/createnewpurposeversionusingpost) API to create a new version of the Purpose.

> 🗒 Things to Know
> 
> - This API returns Purpose descriptions inside `<p>` and `</p> `HTML tags. These can be sanitized depending on your formatting needs.

## Path parameters

- `purposeId` string, uuid, required

## Query parameters

- `isInternalOrg` boolean

## Request body

- ConsentPreferencesUniversalConsentPreferenceManagEditPurposeDto
  - `Organizations` string[]: A list of External Organization Ids.
  - `Name` string, required: Name of the Purpose
  - `Description` string, required: Detailed description of the Purpose's intended use
  - `ConsentLifeSpan` integer, required: The lifespan of consents recorded against this purpose in seconds
  - `DefaultLanguage` string: The default language for the Purpose in BCP 47 format
  - `Type` 'STANDARD' | 'COOKIE' | 'IAB' | 'MOBILE' | 'NOTIFICATION_OPT_OUT': Type of the Purpose
  - `ParentPurposeId` string, uuid: Unique identifier of the parent purpose
  - `attributeValues` object: Map of attribute values associated with the purpose
  - `EnableGeolocation` boolean: Flag to enable geolocation tracking for this purpose
  - `CustomPreferenceIds` string[]: List of custom preference IDs associated with the purpose
  - `ImplicitConsentLifeSpan` integer: Lifespan for implicit consents in seconds
  - `ImplicitConsentConfirmDesc` string: Description shown when confirming implicit consent
  - `HardOptOutDisplayFormat` 'HIDE' | 'LOCK': The format in which the purpose displays in a Trust Center when the consent status is Hard opt-out. Hard opt-out purposes can either be displayed but locked, or hidden.
  - `PurposeCategory` ConsentPreferencesUniversalConsentPreferenceManagAttributeValueInformation
    - `id` string, uuid: Unique identifier for the attribute option
    - `value` string, required: Attribute value
    - `valueKey` string: Translation key used for localizing the value
    - `colorCode` string: Color code associated with the option. Used for score-based attributes.
    - `optionSelectionValue` string: Selection score value linked to the option. Used for score-based or numerical-based attributes.
    - `displayLabel` string: Display name for the option, used for external attributes managed by other systems
    - `associatedAttributeValueInformation` ConsentPreferencesUniversalConsentPreferenceManagAssociatedAttributeValueInformation[]: Associated attribute option information
      - `id` string, uuid: Unique identifier for the attribute option
      - `value` string, required: Attribute value
      - `valueKey` string: Translation key used for localizing the value
      - `colorCode` string: Color code associated with the option. Used for score-based attributes.
    - `disabled` boolean: Indicates whether this attribute option is currently disabled.
  - `LastMajorVersion` integer: Version number of the last major update
  - `VersionNotes` string: Release notes for the current version
  - `IsMajorVersion` boolean: Indicates if this is a major version update
  - `HardOptOutMessage` string: The message to display with the purpose when the consent status is Hard opt-out. This message only displays when hardOptOutDisplayFormat is set to LOCK.
  - `Status` 'DRAFT' | 'ACTIVE' | 'RETIRED', required: The current status of the Purpose
  - `Languages` ConsentPreferencesUniversalConsentPreferenceManagPurposeLanguageDto[]: List of language-specific details for the Purpose
    - `Name` string, required: The Purpose name
    - `Description` string, required: The Purpose description
    - `Description of Implicit Purpose Confirmation checkbox` string: The Implicit Purpose Confirmation checkbox description
    - `Language` string: The Purpose content language code
    - `Default` boolean: Whether this language is the default one for the Purpose
    - `HardOptOutMessage` string: The message to display with the purpose when the consent status is Hard opt-out. This message only displays when hardOptOutDisplayFormat is set to LOCK.
  - `TopicIds` string[]: List of unique identifiers for Topics associated with this Purpose
  - `Version` integer, required: Version number of the Purpose being updated
  - `ExpiryDateType` 'LAST_TRANSACTION_DATE' | 'CONSENT_DATE': Date field considered for Purpose lifespan/expiry

## Response `200`

OK - Successfully updated purpose

- ConsentPreferencesUniversalConsentPreferenceManagPurposeDetailsDto
  - `Id` string, uuid: Globally unique identifier of the Purpose
  - `Label` string: Name of the Purpose
  - `Description` string: Detailed description of the Purpose's intended use
  - `Status` 'DRAFT' | 'ACTIVE' | 'RETIRED': Status of the Purpose
  - `Version` integer: Current version of the Purpose
  - `RetireOnDate` string, date-time: Date when the purpose will be retired
  - `ParentPurposeId` string, uuid: Unique identifier of the parent purpose
  - `ExternalReference` string: External reference identifier for the purpose
  - `PurposeType` 'STANDARD' | 'COOKIE' | 'IAB' | 'MOBILE' | 'NOTIFICATION_OPT_OUT': Type of the purpose
  - `ConsentLifeSpan` integer: Lifespan of the consent in seconds
  - `ImplicitConsentLifeSpan` integer: Lifespan for implicit consents in seconds
  - `ImplicitConsentConfirmDesc` string: Description shown when confirming implicit consent
  - `PurposeCategory` ConsentPreferencesUniversalConsentPreferenceManagAttributeValueInformation
    - `id` string, uuid: Unique identifier for the attribute option
    - `value` string, required: Attribute value
    - `valueKey` string: Translation key used for localizing the value
    - `colorCode` string: Color code associated with the option. Used for score-based attributes.
    - `optionSelectionValue` string: Selection score value linked to the option. Used for score-based or numerical-based attributes.
    - `displayLabel` string: Display name for the option, used for external attributes managed by other systems
    - `associatedAttributeValueInformation` ConsentPreferencesUniversalConsentPreferenceManagAssociatedAttributeValueInformation[]: Associated attribute option information
      - `id` string, uuid: Unique identifier for the attribute option
      - `value` string, required: Attribute value
      - `valueKey` string: Translation key used for localizing the value
      - `colorCode` string: Color code associated with the option. Used for score-based attributes.
    - `disabled` boolean: Indicates whether this attribute option is currently disabled.
  - `Languages` ConsentPreferencesUniversalConsentPreferenceManagPurposeLanguageDto[]: List of languages supported by the purpose
    - `Name` string, required: The Purpose name
    - `Description` string, required: The Purpose description
    - `Description of Implicit Purpose Confirmation checkbox` string: The Implicit Purpose Confirmation checkbox description
    - `Language` string: The Purpose content language code
    - `Default` boolean: Whether this language is the default one for the Purpose
    - `HardOptOutMessage` string: The message to display with the purpose when the consent status is Hard opt-out. This message only displays when hardOptOutDisplayFormat is set to LOCK.
  - `Topics` ConsentPreferencesUniversalConsentPreferenceManagPurposeTopicDto[]: List of topics associated with the purpose
    - `Id` string, uuid: The unique identifier of the Purpose and Topic relation
    - `Name` string: The Topic name
    - `IntegrationKey` string: The Topic integration key (combination of Purpose and Topic names)
    - `CanDelete` boolean: Whether this Topic can be deleted or not
  - `CustomPreferences` ConsentPreferencesUniversalConsentPreferenceManagPurposeCustomPreferenceDto[]: List of custom preferences associated with the purpose
    - `Id` string, uuid, required: Unique identifier for the Custom Preference
    - `Name` string, required: The display name of the Custom Preference
    - `Description` string: Detailed description explaining the purpose and usage of this Custom Preference
    - `SelectionType` 'SINGLE_CHOICE' | 'MULTI_CHOICE' | 'SINGLE_CHOICE' | 'MULTI_CHOICE', required: Defines how options can be selected in this Custom Preference
    - `DisplayAs` 'BUTTONS' | 'CHECKBOXES' | 'BUTTONs' | 'CHECKBOXES' | 'DROPDOWN' | 'RADIO_BUTTONS', required: Specifies how the preference options should be displayed in the UI
    - `CreatedDate` string, date-time: Timestamp when the Custom Preference was created
    - `UpdatedDate` string, date-time: Timestamp when the Custom Preference was last updated
    - `NumberOfOptions` integer: Total number of available options for this Custom Preference
    - `Required` boolean: Indicates whether a response is mandatory for this Custom Preference
    - `NumberOfLanguages` integer: Number of languages this Custom Preference has been translated into
    - `DefaultLanguage` string: The default language code for this Custom Preference (BCP 47 format)
    - `Disabled` boolean: Indicates if this Custom Preference is currently disabled
    - `Options` ConsentPreferencesUniversalConsentPreferenceManagCustomPreferenceOptionDto[]: List of available options for this Custom Preference
      - `Id` string, uuid: Unique Identifier identifying an Option
      - `Label` string: The Option label
      - `Order` integer: The order of the option, Starts from 0
      - `IsDefault` boolean: Whether the Option is default option or not
      - `CanDelete` boolean: Whether the Option can be deleted or not
      - `Disabled` boolean: Whether Custom Preference is disabled or not
    - `Languages` ConsentPreferencesUniversalConsentPreferenceManagCustomPreferenceLanguageDto[]: List of language configurations for this Custom Preference
      - `Name` string, required: The Custom Preference name
      - `Description` string, required: The description of the Custom Preference
      - `Language` string: The Custom Preference content language code
      - `Default` boolean: Whether this language is the default one for the Custom Preference
      - `Options` ConsentPreferencesUniversalConsentPreferenceManagCustomPreferenceOptionDto[]: Options associated with a Custom Preference
        - `Id` string, uuid: Unique Identifier identifying an Option
        - `Label` string: The Option label
        - `Order` integer: The order of the option, Starts from 0
        - `IsDefault` boolean: Whether the Option is default option or not
        - `CanDelete` boolean: Whether the Option can be deleted or not
        - `Disabled` boolean: Whether Custom Preference is disabled or not
    - `Organizations` string[]: List of Organization IDs that have access to this Custom Preference
    - `TotalLinkedActivePurposes` integer: Count of active purposes that reference this Custom Preference
    - `PurposeCustomPreferenceId` string, uuid: Unique identifier of the Purpose and Custom Preference relation
  - `ExpiryDateType` 'LAST_TRANSACTION_DATE' | 'CONSENT_DATE': Date field considered for purpose lifespan/expiry
  - `attributeValues` object: Map of attribute values associated with the purpose
  - `IsMajorVersion` boolean
  - `HardOptOutDisplayFormat` 'HIDE' | 'LOCK': The format in which the purpose displays in a Trust Center when the consent status is Hard opt-out. Hard opt-out purposes can either be displayed but locked, or hidden.
  - `attributes` object: Additional attributes attached to the purpose
  - `EnableGeolocation` boolean: Flag to enable geolocation tracking for this purpose
  - `LastMajorVersion` integer: Last major version number of the purpose
  - `VersionNotes` string: Notes about the current version of the purpose
  - `HardOptOutMessage` string: The message to display with the purpose when the consent status is Hard opt-out. This message only displays when hardOptOutDisplayFormat is set to LOCK.

## Other responses

- `400`: Bad Request
- `401`: Unauthorized
- `403`: Forbidden
- `404`: Not Found
- `429`: Too Many Requests. For more information, see [API Rate Limits](https://developer.onetrust.com/onetrust/reference/rate-limits-overview).
- `500`: Internal Server Error

---

[API](https://skmtc.dev/onetrust/apis/consent-preferences-universal-consent-preference-management.md) - [All operations](https://skmtc.dev/onetrust/apis/consent-preferences-universal-consent-preference-management/llms.txt) - [OpenAPI document](https://skmtc.dev/onetrust/apis/consent-preferences-universal-consent-preference-management/revisions/fe4a0697ec9d?raw)
