adcp 1.1.0__py3-none-any.whl → 1.2.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
adcp/__init__.py CHANGED
@@ -46,7 +46,7 @@ from adcp.types.generated import (
46
46
  UpdateMediaBuyResponse,
47
47
  )
48
48
 
49
- __version__ = "1.1.0"
49
+ __version__ = "1.2.0"
50
50
 
51
51
  __all__ = [
52
52
  # Client classes
adcp/types/generated.py CHANGED
@@ -23,6 +23,7 @@ from pydantic import BaseModel, Field, field_validator
23
23
 
24
24
  # These types are referenced in schemas but don't have schema files
25
25
  # Defining them as type aliases to maintain type safety
26
+ ActivationKey = dict[str, Any]
26
27
  PackageRequest = dict[str, Any]
27
28
  PushNotificationConfig = dict[str, Any]
28
29
  ReportingCapabilities = dict[str, Any]
@@ -125,9 +126,22 @@ class BrandManifest(BaseModel):
125
126
  metadata: dict[str, Any] | None = Field(None, description="Additional brand metadata")
126
127
 
127
128
 
128
- # Type alias for Brand Manifest Reference
129
129
  # Brand manifest provided either as an inline object or a URL string pointing to a hosted manifest
130
- BrandManifestRef = Any
130
+
131
+ class BrandManifestRefVariant1(BaseModel):
132
+ """Inline brand manifest object"""
133
+
134
+ pass
135
+
136
+
137
+ class BrandManifestRefVariant2(BaseModel):
138
+ """URL to a hosted brand manifest JSON file. The manifest at this URL must conform to the brand-manifest.json schema."""
139
+
140
+ pass
141
+
142
+
143
+ # Union type for Brand Manifest Reference
144
+ BrandManifestRef = BrandManifestRefVariant1 | BrandManifestRefVariant2
131
145
 
132
146
 
133
147
  class Format(BaseModel):
@@ -255,9 +269,22 @@ class PerformanceFeedback(BaseModel):
255
269
  applied_at: str | None = Field(None, description="ISO 8601 timestamp when feedback was applied to optimization algorithms")
256
270
 
257
271
 
258
- # Type alias for Start Timing
259
272
  # Campaign start timing: 'asap' or ISO 8601 date-time
260
- StartTiming = Any
273
+
274
+ class StartTimingVariant1(BaseModel):
275
+ """Start campaign as soon as possible"""
276
+
277
+ pass
278
+
279
+
280
+ class StartTimingVariant2(BaseModel):
281
+ """Scheduled start date/time in ISO 8601 format"""
282
+
283
+ pass
284
+
285
+
286
+ # Union type for Start Timing
287
+ StartTiming = StartTimingVariant1 | StartTimingVariant2
261
288
 
262
289
 
263
290
  class SubAsset(BaseModel):
@@ -314,6 +341,50 @@ class PromotedProducts(BaseModel):
314
341
  manifest_query: str | None = Field(None, description="Natural language query to select products from the brand manifest (e.g., 'all Kraft Heinz pasta sauces', 'organic products under $20')")
315
342
 
316
343
 
344
+ # A destination platform where signals can be activated (DSP, sales agent, etc.)
345
+
346
+ class PlatformDestination(BaseModel):
347
+ type: Literal["platform"] = Field(description="Discriminator indicating this is a platform-based destination")
348
+ platform: str = Field(description="Platform identifier for DSPs (e.g., 'the-trade-desk', 'amazon-dsp')")
349
+ account: str | None = Field(None, description="Optional account identifier on the platform")
350
+
351
+
352
+ class AgentDestination(BaseModel):
353
+ type: Literal["agent"] = Field(description="Discriminator indicating this is an agent URL-based destination")
354
+ agent_url: str = Field(description="URL identifying the destination agent (for sales agents, etc.)")
355
+ account: str | None = Field(None, description="Optional account identifier on the agent")
356
+
357
+
358
+ # Union type for Destination
359
+ Destination = PlatformDestination | AgentDestination
360
+
361
+
362
+ # A signal deployment to a specific destination platform with activation status and key
363
+
364
+ class PlatformDeployment(BaseModel):
365
+ type: Literal["platform"] = Field(description="Discriminator indicating this is a platform-based deployment")
366
+ platform: str = Field(description="Platform identifier for DSPs")
367
+ account: str | None = Field(None, description="Account identifier if applicable")
368
+ is_live: bool = Field(description="Whether signal is currently active on this destination")
369
+ activation_key: ActivationKey | None = Field(None, description="The key to use for targeting. Only present if is_live=true AND requester has access to this destination.")
370
+ estimated_activation_duration_minutes: float | None = Field(None, description="Estimated time to activate if not live, or to complete activation if in progress")
371
+ deployed_at: str | None = Field(None, description="Timestamp when activation completed (if is_live=true)")
372
+
373
+
374
+ class AgentDeployment(BaseModel):
375
+ type: Literal["agent"] = Field(description="Discriminator indicating this is an agent URL-based deployment")
376
+ agent_url: str = Field(description="URL identifying the destination agent")
377
+ account: str | None = Field(None, description="Account identifier if applicable")
378
+ is_live: bool = Field(description="Whether signal is currently active on this destination")
379
+ activation_key: ActivationKey | None = Field(None, description="The key to use for targeting. Only present if is_live=true AND requester has access to this destination.")
380
+ estimated_activation_duration_minutes: float | None = Field(None, description="Estimated time to activate if not live, or to complete activation if in progress")
381
+ deployed_at: str | None = Field(None, description="Timestamp when activation completed (if is_live=true)")
382
+
383
+
384
+ # Union type for Deployment
385
+ Deployment = PlatformDeployment | AgentDeployment
386
+
387
+
317
388
  # Type alias for Advertising Channels
318
389
  # Standard advertising channels supported by AdCP
319
390
  Channels = Literal["display", "video", "audio", "native", "dooh", "ctv", "podcast", "retail", "social"]
@@ -354,9 +425,46 @@ TaskStatus = Literal["submitted", "working", "input-required", "completed", "can
354
425
  PricingModel = Literal["cpm", "vcpm", "cpc", "cpcv", "cpv", "cpp", "flat_rate"]
355
426
 
356
427
 
357
- # Type alias for Pricing Option
358
428
  # A pricing model option offered by a publisher for a product. Each pricing model has its own schema with model-specific requirements.
359
- PricingOption = Any
429
+
430
+ class PricingOptionVariant1(BaseModel):
431
+ pass
432
+
433
+
434
+ class PricingOptionVariant2(BaseModel):
435
+ pass
436
+
437
+
438
+ class PricingOptionVariant3(BaseModel):
439
+ pass
440
+
441
+
442
+ class PricingOptionVariant4(BaseModel):
443
+ pass
444
+
445
+
446
+ class PricingOptionVariant5(BaseModel):
447
+ pass
448
+
449
+
450
+ class PricingOptionVariant6(BaseModel):
451
+ pass
452
+
453
+
454
+ class PricingOptionVariant7(BaseModel):
455
+ pass
456
+
457
+
458
+ class PricingOptionVariant8(BaseModel):
459
+ pass
460
+
461
+
462
+ class PricingOptionVariant9(BaseModel):
463
+ pass
464
+
465
+
466
+ # Union type for Pricing Option
467
+ PricingOption = PricingOptionVariant1 | PricingOptionVariant2 | PricingOptionVariant3 | PricingOptionVariant4 | PricingOptionVariant5 | PricingOptionVariant6 | PricingOptionVariant7 | PricingOptionVariant8 | PricingOptionVariant9
360
468
 
361
469
 
362
470
  # Type alias for Standard Format IDs
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: adcp
3
- Version: 1.1.0
3
+ Version: 1.2.0
4
4
  Summary: Official Python client for the Ad Context Protocol (AdCP)
5
5
  Author-email: AdCP Community <maintainers@adcontextprotocol.org>
6
6
  License: Apache-2.0
@@ -1,4 +1,4 @@
1
- adcp/__init__.py,sha256=p3emIEsC2FN_jcnHOP62BRPs6h4lgIhFselvAlTM0LI,2512
1
+ adcp/__init__.py,sha256=PKqv9xsX2JUnDqOIvOGsfYFYQX4QlWKOt5w0R4IiRXw,2512
2
2
  adcp/__main__.py,sha256=Avy_C71rruh2lOuojvuXDj09tkFOaek74nJ-dbx25Sw,12838
3
3
  adcp/client.py,sha256=xs_sG7soRH1szk0S0rFu_6Ge4Ffe2aUdaTYnLmvteeo,27950
4
4
  adcp/config.py,sha256=Vsy7ZPOI8G3fB_i5Nk-CHbC7wdasCUWuKlos0fwA0kY,2017
@@ -9,15 +9,15 @@ adcp/protocols/base.py,sha256=CGqUilQv_ymhnfdowBV_HJhIxYUDM3sRO7ahW-kRB0M,5087
9
9
  adcp/protocols/mcp.py,sha256=eIk8snCinZm-ZjdarGVMt5nEYJ4_8POM9Fa5Mkw7xxU,15902
10
10
  adcp/types/__init__.py,sha256=3E_TJUXqQQFcjmSZZSPLwqBP3s_ijsH2LDeuOU-MP30,402
11
11
  adcp/types/core.py,sha256=RXkKCWCXS9BVJTNpe3Opm5O1I_LaQPMUuVwa-ipvS1Q,4839
12
- adcp/types/generated.py,sha256=j21CgpQExfd2gZTEnDUlVO3hvBmdn-4yBzgC86GUEnI,52485
12
+ adcp/types/generated.py,sha256=UmHVH22lBayrNipgctAE-K_nsUuRfXvmDNhKZVq9mxQ,56514
13
13
  adcp/types/tasks.py,sha256=Ae9TSwG2F7oWXTcl4TvLhAzinbQkHNGF1Pc0q8RMNNM,23424
14
14
  adcp/utils/__init__.py,sha256=uetvSJB19CjQbtwEYZiTnumJG11GsafQmXm5eR3hL7E,153
15
15
  adcp/utils/operation_id.py,sha256=wQX9Bb5epXzRq23xoeYPTqzu5yLuhshg7lKJZihcM2k,294
16
16
  adcp/utils/preview_cache.py,sha256=8_2qs5CgrHv1_WOnD4bs43VWueu-rcZRu5PZMQ_lyuE,17573
17
17
  adcp/utils/response_parser.py,sha256=NQTLlbvmnM_tE4B5w3oB1Wshny1p-Uh8IWbghlwoNJc,4057
18
- adcp-1.1.0.dist-info/licenses/LICENSE,sha256=PF39NR3Ae8PLgBhg3Uxw6ju7iGVIf8hfv9LRWQdii_U,629
19
- adcp-1.1.0.dist-info/METADATA,sha256=51wZBtGtYyiqVRSaZtPW3OqvQOcZurM-A2FUvqRgrV8,14455
20
- adcp-1.1.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
21
- adcp-1.1.0.dist-info/entry_points.txt,sha256=DQKpcGsJX8DtVI_SGApQ7tNvqUB4zkTLaTAEpFgmi3U,44
22
- adcp-1.1.0.dist-info/top_level.txt,sha256=T1_NF0GefncFU9v_k56oDwKSJREyCqIM8lAwNZf0EOs,5
23
- adcp-1.1.0.dist-info/RECORD,,
18
+ adcp-1.2.0.dist-info/licenses/LICENSE,sha256=PF39NR3Ae8PLgBhg3Uxw6ju7iGVIf8hfv9LRWQdii_U,629
19
+ adcp-1.2.0.dist-info/METADATA,sha256=NJowqCc7uoc4hx99dhdokdnydbZcnl9ERjyEsY7-q2o,14455
20
+ adcp-1.2.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
21
+ adcp-1.2.0.dist-info/entry_points.txt,sha256=DQKpcGsJX8DtVI_SGApQ7tNvqUB4zkTLaTAEpFgmi3U,44
22
+ adcp-1.2.0.dist-info/top_level.txt,sha256=T1_NF0GefncFU9v_k56oDwKSJREyCqIM8lAwNZf0EOs,5
23
+ adcp-1.2.0.dist-info/RECORD,,
File without changes