# Policy Targets

> Binding contracts for [policy-engine-contracts.md](policy-engine-contracts.md).  
> Contract version: `policy-targets.v1`

---

## 1. PolicyTargetBinding

| Field | Type | Meaning |
| --- | --- | --- |
| `target_kind` | string | Open — see §2 |
| `target_id` | uuid? | Universal ID when known |
| `target_code` | string? | Stable code when ID not yet assigned |
| `match` | enum | `exact` \| `any` \| `pattern` |
| `pattern` | string? | When `match=pattern` |

---

## 2. Target kinds (open)

| target_kind | Meaning |
| --- | --- |
| `product` | PlatformProduct |
| `bundle` | Business Bundle |
| `capability` | Capability |
| `subscription` | Subscription / plan |
| `license` | SubscriptionLicense / license |
| `tenant` | Tenant |
| `workspace` | Workspace |
| `business_type` | Business type catalog code |
| `country` | Country code |
| `region` | Region code |
| `industry` | Industry tag |
| `automation` | Automation type or pack |
| `asset` | Asset |
| `metadata` | Metadata bag / attribute path |
| `extension` | Extension |
| `pricing_item` | Pricing catalog item |
| *(future)* | Any new commercial object type |

---

## 3. Examples

| Policy | Targets |
| --- | --- |
| Trial eligibility | `business_type`, `country`, `product` |
| Regional sellability | `region`, `bundle` |
| Capability access | `capability`, `license`, `tenant` |
| Marketplace listing | `asset`, `product` |
| Quota SMS | `capability=sms`, `subscription` |
| Feature visibility | `product`, `workspace` |

---

## 4. Invariants

1. Target kinds are an open string registry.
2. Policies MAY target multiple kinds in one definition.
3. Future object types require **only** new target_kind values — not Core architecture redesign.
