Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
35 changes: 35 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -613,6 +613,41 @@ serve(MySeller(), name="my-seller")

**Principal contract.** `caller_identity` MUST be a stable, globally-unique identifier per tenant — an opaque buyer ID, not an email or display name. Email reuse after account deletion would cause cross-principal cache collisions. The value is logged at DEBUG (prefix-truncated) and keyed on in the cache; treat it as you would any user-scoping identifier.

### AdCP 3.0.0-rc.4 migration

**`plan.budget.authority_level` removed.** The single enum (`agent_full` / `agent_limited` / `human_required`) is replaced by two orthogonal fields on `plan.budget`, plus a new top-level flag on `plan`:

| Old (removed) | New |
|---|---|
| `budget.authority_level: agent_full` | `budget.reallocation_unlimited: true` |
| `budget.authority_level: agent_limited` | `budget.reallocation_threshold: <amount>` (in `budget.currency`) |
| `budget.authority_level: human_required` | Set `plan.human_review_required: true` **and** `budget.reallocation_threshold: 0` |

`reallocation_threshold` and `reallocation_unlimited` are mutually exclusive — pick one. `plan.human_review_required` is a separate field governing decisions that affect data subjects (targeting, creative, delivery) under GDPR Art 22 / EU AI Act Annex III; set it independently from the budget reallocation autonomy.

```python
# Before (rc.3 and earlier)
plan = SyncPlansRequest(plans=[{
"plan_id": "...",
"budget": {"total": 100000, "currency": "USD", "authority_level": "agent_limited"},
}])

# After (rc.4+)
plan = SyncPlansRequest(plans=[{
"plan_id": "...",
"budget": {
"total": 100000,
"currency": "USD",
"reallocation_threshold": 5000, # agent may reallocate up to $5K per change
},
"human_review_required": False, # defaults to False; set True for GDPR Art 22 gating
}])
```

Any hand-coded `plan.budget` payload using `authority_level` will fail Pydantic validation against the rc.4 schema with `extra fields not permitted`. The SDK itself has no code references to the old enum; downstream consumers need to update their payloads.

**`update_rights` task added.** Buyers can now modify an existing rights acquisition without re-acquiring. See `client.update_rights(request)` or the MCP/A2A `update_rights` tool.

## Available Tools

All AdCP tools with full type safety:
Expand Down
24 changes: 7 additions & 17 deletions schemas/cache/a2ui/bound-value.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "/schemas/latest/a2ui/bound-value.json",
"title": "A2UI Bound Value",
"description": "A value that can be a literal or bound to a path in the data model",
"oneOf": [
Expand All @@ -12,9 +13,7 @@
"description": "Static string value"
}
},
"required": [
"literalString"
],
"required": ["literalString"],
"additionalProperties": false
},
{
Expand All @@ -26,9 +25,7 @@
"description": "Static number value"
}
},
"required": [
"literalNumber"
],
"required": ["literalNumber"],
"additionalProperties": false
},
{
Expand All @@ -40,9 +37,7 @@
"description": "Static boolean value"
}
},
"required": [
"literalBoolean"
],
"required": ["literalBoolean"],
"additionalProperties": false
},
{
Expand All @@ -54,9 +49,7 @@
"description": "JSON pointer path to value in data model (e.g., '/products/0/title')"
}
},
"required": [
"path"
],
"required": ["path"],
"additionalProperties": false
},
{
Expand All @@ -70,11 +63,8 @@
"type": "string"
}
},
"required": [
"literalString",
"path"
],
"required": ["literalString", "path"],
"additionalProperties": false
}
]
}
}
8 changes: 3 additions & 5 deletions schemas/cache/a2ui/component.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "/schemas/latest/a2ui/component.json",
"title": "A2UI Component",
"description": "A component in an A2UI surface",
"type": "object",
Expand All @@ -23,9 +24,6 @@
}
}
},
"required": [
"id",
"component"
],
"required": ["id", "component"],
"additionalProperties": true
}
}
Loading
Loading