---
title: "Create a partner-purpose association"
method: POST
path: "/metadata/partners-purposes"
tags: ["metadata"]
---

# Create a partner-purpose association

`POST /metadata/partners-purposes`

Creates a new association between a partner and purpose, optionally scoped to an organization

## Request body

- PartnersPurposesInput
  - `metadata_partner_id` string, required — Foreign key reference to metadata-partners(id)
  - `metadata_purpose_id` string, required — Foreign key reference to metadata-purposes(id)
  - `organization_id` string, nullable — Optional organization ID for org-specific overrides. Null indicates a global association
  - `processing_rules` string[], required — Processing rules for this partner-purpose combination. `essential` carries no user choice: the purpose is disclosed but cannot be consented to or objected to, so it cannot be combined with `opt-in` or `opt-out`
  - `is_flexible` boolean — Whether the declared processing rule may be overridden by a publisher restriction. Defaults to false. Cannot be set on an `essential` association. Writable only with client type auth

## Response `201`

- PartnersPurposes
  - `id` string, required — Unique identifier for the partner-purpose association
  - `metadata_partner_id` string, required — Foreign key reference to metadata-partners(id)
  - `metadata_purpose_id` string, required — Foreign key reference to metadata-purposes(id)
  - `organization_id` string, nullable — Optional organization ID for org-specific overrides. Null indicates a global association
  - `processing_rules` string[], required — Processing rules for this partner-purpose combination. `essential` carries no user choice: the purpose is disclosed but cannot be consented to or objected to, so it cannot be combined with `opt-in` or `opt-out`
  - `is_org_override` boolean — Read-only flag indicating if this is an organization override of a global association
  - `is_flexible` boolean — Whether the declared processing rule may be overridden by a publisher restriction. The declared rule stays authoritative until a publisher restricts the purpose. Cannot be set on an `essential` association, which declares no legal basis to override. Writable only with client type auth
  - `default_purposes_id` string, nullable — Legacy foreign key reference to metadata-partners-default-purposes(id)
  - `legitimate_interest_purposes_id` string, nullable — Legacy foreign key reference to metadata-partners-legitimate-interest-purposes(id)
  - `created_at` string, date-time — Timestamp of record creation
  - `updated_at` string, date-time — Timestamp of last update
  - `version` integer — Version number for concurrency control

## Changes

- **2026-08-20** `70997bf7efc9` — 1 warning, 3 info
  - added the new `essential` enum value to the `processing_rules/items/` response property for the response status `201`
  - added the new optional request property `is_flexible`
  - added the new `essential` enum value to the request property `processing_rules/items/`
  - added the optional property `is_flexible` to the response with the `201` status

[Change history](https://skmtc.dev/didomi/apis/didomi-api/changes/metadata/partners-purposes/post.md)

---

[API](https://skmtc.dev/didomi/apis/didomi-api.md) · [All operations](https://skmtc.dev/didomi/apis/didomi-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/didomi/didomi-api/revisions/ec56dd9d42ea/schema)
