adcp 2.5.0__py3-none-any.whl → 2.6.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
@@ -101,6 +101,8 @@ from adcp.types._generated import TaskStatus as GeneratedTaskStatus
101
101
  from adcp.types.aliases import (
102
102
  ActivateSignalErrorResponse,
103
103
  ActivateSignalSuccessResponse,
104
+ AgentDeployment,
105
+ AgentDestination,
104
106
  BothPreviewRender,
105
107
  BuildCreativeErrorResponse,
106
108
  BuildCreativeSuccessResponse,
@@ -111,14 +113,21 @@ from adcp.types.aliases import (
111
113
  InlineDaastAsset,
112
114
  InlineVastAsset,
113
115
  MediaSubAsset,
116
+ PlatformDeployment,
117
+ PlatformDestination,
114
118
  PreviewCreativeFormatRequest,
115
119
  PreviewCreativeInteractiveResponse,
116
120
  PreviewCreativeManifestRequest,
117
121
  PreviewCreativeStaticResponse,
122
+ PropertyId,
118
123
  PropertyIdActivationKey,
124
+ PropertyTag,
119
125
  PropertyTagActivationKey,
120
126
  ProvidePerformanceFeedbackErrorResponse,
121
127
  ProvidePerformanceFeedbackSuccessResponse,
128
+ PublisherPropertiesAll,
129
+ PublisherPropertiesById,
130
+ PublisherPropertiesByTag,
122
131
  SyncCreativesErrorResponse,
123
132
  SyncCreativesSuccessResponse,
124
133
  TextSubAsset,
@@ -165,7 +174,7 @@ from adcp.validation import (
165
174
  validate_publisher_properties_item,
166
175
  )
167
176
 
168
- __version__ = "2.5.0"
177
+ __version__ = "2.6.0"
169
178
 
170
179
  __all__ = [
171
180
  # Client classes
@@ -281,6 +290,8 @@ __all__ = [
281
290
  # Semantic type aliases (for better API ergonomics)
282
291
  "ActivateSignalSuccessResponse",
283
292
  "ActivateSignalErrorResponse",
293
+ "AgentDeployment",
294
+ "AgentDestination",
284
295
  "BothPreviewRender",
285
296
  "BuildCreativeSuccessResponse",
286
297
  "BuildCreativeErrorResponse",
@@ -290,14 +301,21 @@ __all__ = [
290
301
  "InlineDaastAsset",
291
302
  "InlineVastAsset",
292
303
  "MediaSubAsset",
304
+ "PlatformDeployment",
305
+ "PlatformDestination",
293
306
  "PreviewCreativeFormatRequest",
294
307
  "PreviewCreativeManifestRequest",
295
308
  "PreviewCreativeStaticResponse",
296
309
  "PreviewCreativeInteractiveResponse",
310
+ "PropertyId",
297
311
  "PropertyIdActivationKey",
312
+ "PropertyTag",
298
313
  "PropertyTagActivationKey",
299
314
  "ProvidePerformanceFeedbackSuccessResponse",
300
315
  "ProvidePerformanceFeedbackErrorResponse",
316
+ "PublisherPropertiesAll",
317
+ "PublisherPropertiesById",
318
+ "PublisherPropertiesByTag",
301
319
  "SyncCreativesSuccessResponse",
302
320
  "SyncCreativesErrorResponse",
303
321
  "TextSubAsset",
adcp/types/__init__.py CHANGED
@@ -17,6 +17,11 @@ from adcp.types.aliases import (
17
17
  InlineDaastAsset,
18
18
  InlineVastAsset,
19
19
  MediaSubAsset,
20
+ PropertyId,
21
+ PropertyTag,
22
+ PublisherPropertiesAll,
23
+ PublisherPropertiesById,
24
+ PublisherPropertiesByTag,
20
25
  TextSubAsset,
21
26
  UrlDaastAsset,
22
27
  UrlPreviewRender,
@@ -89,6 +94,13 @@ __all__ = [
89
94
  "UrlVastAsset",
90
95
  # Package type aliases
91
96
  "CreatedPackageReference",
97
+ # Publisher properties types
98
+ "PropertyId",
99
+ "PropertyTag",
100
+ # Publisher properties aliases
101
+ "PublisherPropertiesAll",
102
+ "PublisherPropertiesById",
103
+ "PublisherPropertiesByTag",
92
104
  # Stable API types (commonly used)
93
105
  "BrandManifest",
94
106
  "Creative",
adcp/types/aliases.py CHANGED
@@ -48,6 +48,12 @@ from adcp.types._generated import (
48
48
  # DAAST assets
49
49
  DaastAsset1,
50
50
  DaastAsset2,
51
+ # Deployment types
52
+ Deployment1,
53
+ Deployment2,
54
+ # Destination types
55
+ Destination1,
56
+ Destination2,
51
57
  # Preview creative requests
52
58
  PreviewCreativeRequest1,
53
59
  PreviewCreativeRequest2,
@@ -84,6 +90,21 @@ from adcp.types.generated_poc.create_media_buy_response import (
84
90
  )
85
91
  from adcp.types.generated_poc.package import Package as FullPackageInternal
86
92
 
93
+ # Import PublisherProperties types and related types from product module
94
+ from adcp.types.generated_poc.product import (
95
+ PropertyId,
96
+ PropertyTag,
97
+ )
98
+ from adcp.types.generated_poc.product import (
99
+ PublisherProperties as PublisherPropertiesInternal,
100
+ )
101
+ from adcp.types.generated_poc.product import (
102
+ PublisherProperties4 as PublisherPropertiesByIdInternal,
103
+ )
104
+ from adcp.types.generated_poc.product import (
105
+ PublisherProperties5 as PublisherPropertiesByTagInternal,
106
+ )
107
+
87
108
  # ============================================================================
88
109
  # RESPONSE TYPE ALIASES - Success/Error Discriminated Unions
89
110
  # ============================================================================
@@ -252,6 +273,213 @@ Used in:
252
273
  Fields: buyer_ref, package_id only
253
274
  """
254
275
 
276
+ # ============================================================================
277
+ # PUBLISHER PROPERTIES ALIASES - Selection Type Discriminated Unions
278
+ # ============================================================================
279
+ # The AdCP schemas define PublisherProperties as a discriminated union with
280
+ # three variants based on the `selection_type` field:
281
+ #
282
+ # 1. All Properties (selection_type='all'):
283
+ # - Includes all properties from the publisher
284
+ # - Only requires publisher_domain
285
+ #
286
+ # 2. By ID (selection_type='by_id'):
287
+ # - Specific properties selected by property_id
288
+ # - Requires publisher_domain + property_ids array
289
+ #
290
+ # 3. By Tag (selection_type='by_tag'):
291
+ # - Properties selected by tags
292
+ # - Requires publisher_domain + property_tags array
293
+ #
294
+ # These semantic aliases match the discriminator values and make code more
295
+ # readable when constructing or pattern-matching publisher properties.
296
+
297
+ PublisherPropertiesAll = PublisherPropertiesInternal
298
+ """Publisher properties covering all properties from the publisher.
299
+
300
+ This variant uses selection_type='all' and includes all properties listed
301
+ in the publisher's adagents.json file.
302
+
303
+ Fields:
304
+ - publisher_domain: Domain where adagents.json is hosted
305
+ - selection_type: Literal['all']
306
+
307
+ Example:
308
+ ```python
309
+ from adcp import PublisherPropertiesAll
310
+
311
+ props = PublisherPropertiesAll(
312
+ publisher_domain="example.com",
313
+ selection_type="all"
314
+ )
315
+ ```
316
+ """
317
+
318
+ PublisherPropertiesById = PublisherPropertiesByIdInternal
319
+ """Publisher properties selected by specific property IDs.
320
+
321
+ This variant uses selection_type='by_id' and specifies an explicit list
322
+ of property IDs from the publisher's adagents.json file.
323
+
324
+ Fields:
325
+ - publisher_domain: Domain where adagents.json is hosted
326
+ - selection_type: Literal['by_id']
327
+ - property_ids: List of PropertyId (non-empty)
328
+
329
+ Example:
330
+ ```python
331
+ from adcp import PublisherPropertiesById, PropertyId
332
+
333
+ props = PublisherPropertiesById(
334
+ publisher_domain="example.com",
335
+ selection_type="by_id",
336
+ property_ids=[PropertyId("homepage"), PropertyId("sports_section")]
337
+ )
338
+ ```
339
+ """
340
+
341
+ PublisherPropertiesByTag = PublisherPropertiesByTagInternal
342
+ """Publisher properties selected by tags.
343
+
344
+ This variant uses selection_type='by_tag' and specifies property tags.
345
+ The product covers all properties in the publisher's adagents.json that
346
+ have these tags.
347
+
348
+ Fields:
349
+ - publisher_domain: Domain where adagents.json is hosted
350
+ - selection_type: Literal['by_tag']
351
+ - property_tags: List of PropertyTag (non-empty)
352
+
353
+ Example:
354
+ ```python
355
+ from adcp import PublisherPropertiesByTag, PropertyTag
356
+
357
+ props = PublisherPropertiesByTag(
358
+ publisher_domain="example.com",
359
+ selection_type="by_tag",
360
+ property_tags=[PropertyTag("premium"), PropertyTag("video")]
361
+ )
362
+ ```
363
+ """
364
+
365
+ # ============================================================================
366
+ # DEPLOYMENT & DESTINATION ALIASES - Signal Deployment Type Discriminated Unions
367
+ # ============================================================================
368
+ # The AdCP schemas define Deployment and Destination as discriminated unions
369
+ # with two variants based on the `type` field:
370
+ #
371
+ # Deployment (where a signal is activated):
372
+ # - Platform (type='platform'): DSP platform with platform ID
373
+ # - Agent (type='agent'): Sales agent with agent URL
374
+ #
375
+ # Destination (where a signal can be activated):
376
+ # - Platform (type='platform'): Target DSP platform
377
+ # - Agent (type='agent'): Target sales agent
378
+ #
379
+ # These are used in GetSignalsResponse to describe signal availability and
380
+ # activation status across different advertising platforms and agents.
381
+
382
+ PlatformDeployment = Deployment1
383
+ """Signal deployment to a DSP platform.
384
+
385
+ This variant uses type='platform' for platform-based signal deployments
386
+ like The Trade Desk, Amazon DSP, etc.
387
+
388
+ Fields:
389
+ - type: Literal['platform']
390
+ - platform: Platform identifier (e.g., 'the-trade-desk')
391
+ - account: Optional account identifier
392
+ - is_live: Whether signal is currently active
393
+ - deployed_at: Activation timestamp if live
394
+ - activation_key: Targeting key if live and accessible
395
+ - estimated_activation_duration_minutes: Time to complete activation
396
+
397
+ Example:
398
+ ```python
399
+ from adcp import PlatformDeployment
400
+
401
+ deployment = PlatformDeployment(
402
+ type="platform",
403
+ platform="the-trade-desk",
404
+ account="advertiser-123",
405
+ is_live=True,
406
+ deployed_at=datetime.now(timezone.utc)
407
+ )
408
+ ```
409
+ """
410
+
411
+ AgentDeployment = Deployment2
412
+ """Signal deployment to a sales agent.
413
+
414
+ This variant uses type='agent' for agent-based signal deployments
415
+ using agent URLs.
416
+
417
+ Fields:
418
+ - type: Literal['agent']
419
+ - agent_url: URL identifying the destination agent
420
+ - account: Optional account identifier
421
+ - is_live: Whether signal is currently active
422
+ - deployed_at: Activation timestamp if live
423
+ - activation_key: Targeting key if live and accessible
424
+ - estimated_activation_duration_minutes: Time to complete activation
425
+
426
+ Example:
427
+ ```python
428
+ from adcp import AgentDeployment
429
+
430
+ deployment = AgentDeployment(
431
+ type="agent",
432
+ agent_url="https://agent.example.com",
433
+ is_live=False,
434
+ estimated_activation_duration_minutes=30.0
435
+ )
436
+ ```
437
+ """
438
+
439
+ PlatformDestination = Destination1
440
+ """Available signal destination on a DSP platform.
441
+
442
+ This variant uses type='platform' for platform-based signal destinations.
443
+
444
+ Fields:
445
+ - type: Literal['platform']
446
+ - platform: Platform identifier (e.g., 'the-trade-desk', 'amazon-dsp')
447
+ - account: Optional account identifier on the platform
448
+
449
+ Example:
450
+ ```python
451
+ from adcp import PlatformDestination
452
+
453
+ destination = PlatformDestination(
454
+ type="platform",
455
+ platform="the-trade-desk",
456
+ account="advertiser-123"
457
+ )
458
+ ```
459
+ """
460
+
461
+ AgentDestination = Destination2
462
+ """Available signal destination via a sales agent.
463
+
464
+ This variant uses type='agent' for agent-based signal destinations.
465
+
466
+ Fields:
467
+ - type: Literal['agent']
468
+ - agent_url: URL identifying the destination agent
469
+ - account: Optional account identifier on the agent
470
+
471
+ Example:
472
+ ```python
473
+ from adcp import AgentDestination
474
+
475
+ destination = AgentDestination(
476
+ type="agent",
477
+ agent_url="https://agent.example.com",
478
+ account="partner-456"
479
+ )
480
+ ```
481
+ """
482
+
255
483
  # ============================================================================
256
484
  # EXPORTS
257
485
  # ============================================================================
@@ -300,4 +528,17 @@ __all__ = [
300
528
  # Package type aliases
301
529
  "CreatedPackageReference",
302
530
  "Package",
531
+ # Publisher properties types
532
+ "PropertyId",
533
+ "PropertyTag",
534
+ # Publisher properties aliases
535
+ "PublisherPropertiesAll",
536
+ "PublisherPropertiesById",
537
+ "PublisherPropertiesByTag",
538
+ # Deployment aliases
539
+ "PlatformDeployment",
540
+ "AgentDeployment",
541
+ # Destination aliases
542
+ "PlatformDestination",
543
+ "AgentDestination",
303
544
  ]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: adcp
3
- Version: 2.5.0
3
+ Version: 2.6.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=09hCpp_u_UXT672Lo8HbPTu_RNiWWzQf-UGBVIqFjds,8592
1
+ adcp/__init__.py,sha256=WTIxgfr9VU1apx9J6AinZ3xwV61Z2O0smUnQEdEarmY,9034
2
2
  adcp/__main__.py,sha256=YF2GUXF1LICW1TPxNQiGIfSp5cpAsejoEG2fuOgbzrc,12839
3
3
  adcp/adagents.py,sha256=o-vTBmdZvu9aER-TAlLLL3s-WGYY8N67jnrAH24lST8,22333
4
4
  adcp/client.py,sha256=Z70D0bHcLNmr0NBGXbFUvW8dBdzHkcv8CmFcYo3pIjw,28803
@@ -13,9 +13,9 @@ adcp/protocols/base.py,sha256=vBHD23Fzl_CCk_Gy9nvSbBYopcJlYkYyzoz-rhI8wHg,5214
13
13
  adcp/protocols/mcp.py,sha256=d9uSpGd0BKvQ0JxztkfDvHwoDrDYhuiw5oivpYOAbmM,16647
14
14
  adcp/testing/__init__.py,sha256=ZWp_floWjVZfy8RBG5v_FUXQ8YbN7xjXvVcX-_zl_HU,1416
15
15
  adcp/testing/test_helpers.py,sha256=-UKuxxyKQald5EvXxguQH34b3J0JdsxKH_nRT6GTjkQ,10029
16
- adcp/types/__init__.py,sha256=CXlUUpMRWyM20focXgl8pEz3WMqvpjAW9PzmyHXKRzA,2608
16
+ adcp/types/__init__.py,sha256=V_Tme95-OoTGZkrMTQwNP76cN5QelO-Q-9sRTg-EBIA,2926
17
17
  adcp/types/_generated.py,sha256=p4U_P3BROGjCnS0Cd2o9ZJ_bShQLffB3D9_0D29JB0g,14926
18
- adcp/types/aliases.py,sha256=FGb7zYy6V2gKtzWWc2c_vx3NLwXYpEsyjts9peyOixQ,11244
18
+ adcp/types/aliases.py,sha256=puqrz_cwlfSq6Td78EIaWtDUzcsCGMVM98Pv3T7qSlo,18445
19
19
  adcp/types/base.py,sha256=QoEuVfI4yzefup0dc2KN11AcJTbcGxRep7xOw5hXfs8,837
20
20
  adcp/types/core.py,sha256=RXkKCWCXS9BVJTNpe3Opm5O1I_LaQPMUuVwa-ipvS1Q,4839
21
21
  adcp/types/stable.py,sha256=Q_rxnpLuUGfqGusiJcMuPADIGLQgs2uLp98S4YnAksw,4997
@@ -121,9 +121,9 @@ adcp/utils/__init__.py,sha256=uetvSJB19CjQbtwEYZiTnumJG11GsafQmXm5eR3hL7E,153
121
121
  adcp/utils/operation_id.py,sha256=wQX9Bb5epXzRq23xoeYPTqzu5yLuhshg7lKJZihcM2k,294
122
122
  adcp/utils/preview_cache.py,sha256=oc1AUkPrHHmUqfZa5920OCKY7qrDDR86XO6oi1PEHTA,18504
123
123
  adcp/utils/response_parser.py,sha256=uPk2vIH-RYZmq7y3i8lC4HTMQ3FfKdlgXKTjgJ1955M,6253
124
- adcp-2.5.0.dist-info/licenses/LICENSE,sha256=PF39NR3Ae8PLgBhg3Uxw6ju7iGVIf8hfv9LRWQdii_U,629
125
- adcp-2.5.0.dist-info/METADATA,sha256=FckzUUiNpYqMSnMYPC810uZJL8il646fzXbR_-ooPXI,25810
126
- adcp-2.5.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
127
- adcp-2.5.0.dist-info/entry_points.txt,sha256=DQKpcGsJX8DtVI_SGApQ7tNvqUB4zkTLaTAEpFgmi3U,44
128
- adcp-2.5.0.dist-info/top_level.txt,sha256=T1_NF0GefncFU9v_k56oDwKSJREyCqIM8lAwNZf0EOs,5
129
- adcp-2.5.0.dist-info/RECORD,,
124
+ adcp-2.6.0.dist-info/licenses/LICENSE,sha256=PF39NR3Ae8PLgBhg3Uxw6ju7iGVIf8hfv9LRWQdii_U,629
125
+ adcp-2.6.0.dist-info/METADATA,sha256=r91G1kiiN13GSt8F5PBOxJQiqHBayDibdtvAd8v-blI,25810
126
+ adcp-2.6.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
127
+ adcp-2.6.0.dist-info/entry_points.txt,sha256=DQKpcGsJX8DtVI_SGApQ7tNvqUB4zkTLaTAEpFgmi3U,44
128
+ adcp-2.6.0.dist-info/top_level.txt,sha256=T1_NF0GefncFU9v_k56oDwKSJREyCqIM8lAwNZf0EOs,5
129
+ adcp-2.6.0.dist-info/RECORD,,
File without changes