@adcp/client 4.7.2 → 4.9.0

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.
Files changed (113) hide show
  1. package/bin/adcp.js +8 -0
  2. package/dist/lib/adapters/governance-adapter.d.ts +88 -0
  3. package/dist/lib/adapters/governance-adapter.d.ts.map +1 -0
  4. package/dist/lib/adapters/governance-adapter.js +96 -0
  5. package/dist/lib/adapters/governance-adapter.js.map +1 -0
  6. package/dist/lib/adapters/index.d.ts +1 -0
  7. package/dist/lib/adapters/index.d.ts.map +1 -1
  8. package/dist/lib/adapters/index.js +7 -1
  9. package/dist/lib/adapters/index.js.map +1 -1
  10. package/dist/lib/agents/index.generated.d.ts +49 -17
  11. package/dist/lib/agents/index.generated.d.ts.map +1 -1
  12. package/dist/lib/agents/index.generated.js +72 -24
  13. package/dist/lib/agents/index.generated.js.map +1 -1
  14. package/dist/lib/core/AgentClient.d.ts.map +1 -1
  15. package/dist/lib/core/AsyncHandler.d.ts +1 -1
  16. package/dist/lib/core/AsyncHandler.d.ts.map +1 -1
  17. package/dist/lib/core/AsyncHandler.js.map +1 -1
  18. package/dist/lib/core/ConversationTypes.d.ts +8 -2
  19. package/dist/lib/core/ConversationTypes.d.ts.map +1 -1
  20. package/dist/lib/core/CreativeAgentClient.d.ts +17 -1
  21. package/dist/lib/core/CreativeAgentClient.d.ts.map +1 -1
  22. package/dist/lib/core/CreativeAgentClient.js +21 -0
  23. package/dist/lib/core/CreativeAgentClient.js.map +1 -1
  24. package/dist/lib/core/GovernanceMiddleware.d.ts +86 -0
  25. package/dist/lib/core/GovernanceMiddleware.d.ts.map +1 -0
  26. package/dist/lib/core/GovernanceMiddleware.js +289 -0
  27. package/dist/lib/core/GovernanceMiddleware.js.map +1 -0
  28. package/dist/lib/core/GovernanceTypes.d.ts +118 -0
  29. package/dist/lib/core/GovernanceTypes.d.ts.map +1 -0
  30. package/dist/lib/core/GovernanceTypes.js +69 -0
  31. package/dist/lib/core/GovernanceTypes.js.map +1 -0
  32. package/dist/lib/core/SingleAgentClient.d.ts +35 -1
  33. package/dist/lib/core/SingleAgentClient.d.ts.map +1 -1
  34. package/dist/lib/core/SingleAgentClient.js +45 -0
  35. package/dist/lib/core/SingleAgentClient.js.map +1 -1
  36. package/dist/lib/core/TaskExecutor.d.ts +10 -0
  37. package/dist/lib/core/TaskExecutor.d.ts.map +1 -1
  38. package/dist/lib/core/TaskExecutor.js +95 -10
  39. package/dist/lib/core/TaskExecutor.js.map +1 -1
  40. package/dist/lib/index.d.ts +7 -3
  41. package/dist/lib/index.d.ts.map +1 -1
  42. package/dist/lib/index.js +22 -4
  43. package/dist/lib/index.js.map +1 -1
  44. package/dist/lib/observability/index.d.ts +8 -0
  45. package/dist/lib/observability/index.d.ts.map +1 -0
  46. package/dist/lib/observability/index.js +17 -0
  47. package/dist/lib/observability/index.js.map +1 -0
  48. package/dist/lib/observability/tracing.d.ts +42 -0
  49. package/dist/lib/observability/tracing.d.ts.map +1 -0
  50. package/dist/lib/observability/tracing.js +126 -0
  51. package/dist/lib/observability/tracing.js.map +1 -0
  52. package/dist/lib/protocols/a2a.d.ts.map +1 -1
  53. package/dist/lib/protocols/a2a.js +16 -1
  54. package/dist/lib/protocols/a2a.js.map +1 -1
  55. package/dist/lib/protocols/index.d.ts.map +1 -1
  56. package/dist/lib/protocols/index.js +37 -29
  57. package/dist/lib/protocols/index.js.map +1 -1
  58. package/dist/lib/protocols/mcp.d.ts.map +1 -1
  59. package/dist/lib/protocols/mcp.js +21 -1
  60. package/dist/lib/protocols/mcp.js.map +1 -1
  61. package/dist/lib/registry/types.generated.d.ts +750 -1
  62. package/dist/lib/registry/types.generated.d.ts.map +1 -1
  63. package/dist/lib/registry/types.generated.js +1 -1
  64. package/dist/lib/testing/agent-tester.d.ts +1 -1
  65. package/dist/lib/testing/agent-tester.d.ts.map +1 -1
  66. package/dist/lib/testing/agent-tester.js +37 -11
  67. package/dist/lib/testing/agent-tester.js.map +1 -1
  68. package/dist/lib/testing/formatter.d.ts.map +1 -1
  69. package/dist/lib/testing/formatter.js +6 -5
  70. package/dist/lib/testing/formatter.js.map +1 -1
  71. package/dist/lib/testing/index.d.ts +1 -1
  72. package/dist/lib/testing/index.d.ts.map +1 -1
  73. package/dist/lib/testing/index.js +3 -2
  74. package/dist/lib/testing/index.js.map +1 -1
  75. package/dist/lib/testing/orchestrator.d.ts +0 -2
  76. package/dist/lib/testing/orchestrator.d.ts.map +1 -1
  77. package/dist/lib/testing/orchestrator.js +24 -6
  78. package/dist/lib/testing/orchestrator.js.map +1 -1
  79. package/dist/lib/testing/scenarios/capabilities.d.ts.map +1 -1
  80. package/dist/lib/testing/scenarios/capabilities.js +111 -40
  81. package/dist/lib/testing/scenarios/capabilities.js.map +1 -1
  82. package/dist/lib/testing/scenarios/creative.d.ts +14 -0
  83. package/dist/lib/testing/scenarios/creative.d.ts.map +1 -1
  84. package/dist/lib/testing/scenarios/creative.js +241 -42
  85. package/dist/lib/testing/scenarios/creative.js.map +1 -1
  86. package/dist/lib/testing/scenarios/governance.d.ts +48 -0
  87. package/dist/lib/testing/scenarios/governance.d.ts.map +1 -1
  88. package/dist/lib/testing/scenarios/governance.js +675 -0
  89. package/dist/lib/testing/scenarios/governance.js.map +1 -1
  90. package/dist/lib/testing/scenarios/index.d.ts +3 -3
  91. package/dist/lib/testing/scenarios/index.d.ts.map +1 -1
  92. package/dist/lib/testing/scenarios/index.js +9 -1
  93. package/dist/lib/testing/scenarios/index.js.map +1 -1
  94. package/dist/lib/testing/scenarios/media-buy.d.ts +21 -1
  95. package/dist/lib/testing/scenarios/media-buy.d.ts.map +1 -1
  96. package/dist/lib/testing/scenarios/media-buy.js +282 -49
  97. package/dist/lib/testing/scenarios/media-buy.js.map +1 -1
  98. package/dist/lib/testing/types.d.ts +2 -2
  99. package/dist/lib/testing/types.d.ts.map +1 -1
  100. package/dist/lib/types/core.generated.d.ts +747 -8
  101. package/dist/lib/types/core.generated.d.ts.map +1 -1
  102. package/dist/lib/types/core.generated.js +1 -1
  103. package/dist/lib/types/schemas.generated.d.ts +25143 -19145
  104. package/dist/lib/types/schemas.generated.d.ts.map +1 -1
  105. package/dist/lib/types/schemas.generated.js +795 -282
  106. package/dist/lib/types/schemas.generated.js.map +1 -1
  107. package/dist/lib/types/tools.generated.d.ts +3529 -1964
  108. package/dist/lib/types/tools.generated.d.ts.map +1 -1
  109. package/dist/lib/utils/capabilities.d.ts +17 -2
  110. package/dist/lib/utils/capabilities.d.ts.map +1 -1
  111. package/dist/lib/utils/capabilities.js +35 -6
  112. package/dist/lib/utils/capabilities.js.map +1 -1
  113. package/package.json +14 -21
@@ -121,6 +121,26 @@ export interface paths {
121
121
  patch?: never;
122
122
  trace?: never;
123
123
  };
124
+ "/api/brands/history": {
125
+ parameters: {
126
+ query?: never;
127
+ header?: never;
128
+ path?: never;
129
+ cookie?: never;
130
+ };
131
+ /**
132
+ * Brand activity history
133
+ * @description Returns the edit history for a brand in the registry, newest first. Only brands with community or enriched edits have history; brand.json-sourced brands are authoritative and do not generate revisions.
134
+ */
135
+ get: operations["getBrandHistory"];
136
+ put?: never;
137
+ post?: never;
138
+ delete?: never;
139
+ options?: never;
140
+ head?: never;
141
+ patch?: never;
142
+ trace?: never;
143
+ };
124
144
  "/api/brands/enrich": {
125
145
  parameters: {
126
146
  query?: never;
@@ -141,6 +161,26 @@ export interface paths {
141
161
  patch?: never;
142
162
  trace?: never;
143
163
  };
164
+ "/api/properties/history": {
165
+ parameters: {
166
+ query?: never;
167
+ header?: never;
168
+ path?: never;
169
+ cookie?: never;
170
+ };
171
+ /**
172
+ * Property activity history
173
+ * @description Returns the edit history for a property in the registry, newest first.
174
+ */
175
+ get: operations["getPropertyHistory"];
176
+ put?: never;
177
+ post?: never;
178
+ delete?: never;
179
+ options?: never;
180
+ head?: never;
181
+ patch?: never;
182
+ trace?: never;
183
+ };
144
184
  "/api/properties/resolve": {
145
185
  parameters: {
146
186
  query?: never;
@@ -631,6 +671,108 @@ export interface paths {
631
671
  patch?: never;
632
672
  trace?: never;
633
673
  };
674
+ "/api/policies/registry": {
675
+ parameters: {
676
+ query?: never;
677
+ header?: never;
678
+ path?: never;
679
+ cookie?: never;
680
+ };
681
+ /**
682
+ * List policies
683
+ * @description Browse and search the governance policy registry. Returns approved policies with optional filtering by category, enforcement level, jurisdiction, vertical, and governance domain.
684
+ */
685
+ get: operations["listPolicies"];
686
+ put?: never;
687
+ post?: never;
688
+ delete?: never;
689
+ options?: never;
690
+ head?: never;
691
+ patch?: never;
692
+ trace?: never;
693
+ };
694
+ "/api/policies/resolve": {
695
+ parameters: {
696
+ query?: never;
697
+ header?: never;
698
+ path?: never;
699
+ cookie?: never;
700
+ };
701
+ /**
702
+ * Resolve policy
703
+ * @description Resolve a single policy by ID. Optionally pin to a specific version — returns null if the version does not match.
704
+ */
705
+ get: operations["resolvePolicy"];
706
+ put?: never;
707
+ post?: never;
708
+ delete?: never;
709
+ options?: never;
710
+ head?: never;
711
+ patch?: never;
712
+ trace?: never;
713
+ };
714
+ "/api/policies/resolve/bulk": {
715
+ parameters: {
716
+ query?: never;
717
+ header?: never;
718
+ path?: never;
719
+ cookie?: never;
720
+ };
721
+ get?: never;
722
+ put?: never;
723
+ /**
724
+ * Bulk resolve policies
725
+ * @description Resolve up to 100 policies by ID in a single request. Returns a map of policy_id to Policy (or null if not found).
726
+ *
727
+ * **Rate limit:** 20 requests per minute per IP address.
728
+ */
729
+ post: operations["resolvePoliciesBulk"];
730
+ delete?: never;
731
+ options?: never;
732
+ head?: never;
733
+ patch?: never;
734
+ trace?: never;
735
+ };
736
+ "/api/policies/history": {
737
+ parameters: {
738
+ query?: never;
739
+ header?: never;
740
+ path?: never;
741
+ cookie?: never;
742
+ };
743
+ /**
744
+ * Policy revision history
745
+ * @description Retrieve the edit history for a policy. Each revision records who made the change, a summary, and whether it was a rollback.
746
+ */
747
+ get: operations["getPolicyHistory"];
748
+ put?: never;
749
+ post?: never;
750
+ delete?: never;
751
+ options?: never;
752
+ head?: never;
753
+ patch?: never;
754
+ trace?: never;
755
+ };
756
+ "/api/policies/save": {
757
+ parameters: {
758
+ query?: never;
759
+ header?: never;
760
+ path?: never;
761
+ cookie?: never;
762
+ };
763
+ get?: never;
764
+ put?: never;
765
+ /**
766
+ * Save policy
767
+ * @description Create or update a community-contributed policy. Requires authentication. Registry-sourced and pending-review policies cannot be edited (returns 409). Updates automatically create a revision record.
768
+ */
769
+ post: operations["savePolicy"];
770
+ delete?: never;
771
+ options?: never;
772
+ head?: never;
773
+ patch?: never;
774
+ trace?: never;
775
+ };
634
776
  }
635
777
  export type webhooks = Record<string, never>;
636
778
  export interface components {
@@ -674,6 +816,48 @@ export interface components {
674
816
  /** @enum {string} */
675
817
  keller_type?: "master" | "sub_brand" | "endorsed" | "independent";
676
818
  };
819
+ BrandActivity: {
820
+ /** @example acmecorp.com */
821
+ domain: string;
822
+ /** @example 3 */
823
+ total: number;
824
+ revisions: {
825
+ /** @example 3 */
826
+ revision_number: number;
827
+ /** @example Pinnacle Media */
828
+ editor_name: string;
829
+ /** @example Updated logo and brand colors */
830
+ edit_summary: string;
831
+ /** @description Source type of the record at the time of this revision (brand_json, enriched, community) */
832
+ source?: string;
833
+ is_rollback: boolean;
834
+ /** @description Revision number that was restored; only present when is_rollback is true */
835
+ rolled_back_to?: number;
836
+ /** @example 2026-03-01T12:34:56Z */
837
+ created_at: string;
838
+ }[];
839
+ };
840
+ PropertyActivity: {
841
+ /** @example examplepub.com */
842
+ domain: string;
843
+ /** @example 3 */
844
+ total: number;
845
+ revisions: {
846
+ /** @example 3 */
847
+ revision_number: number;
848
+ /** @example Pinnacle Media */
849
+ editor_name: string;
850
+ /** @example Updated logo and brand colors */
851
+ edit_summary: string;
852
+ /** @description Source type of the record at the time of this revision (brand_json, enriched, community) */
853
+ source?: string;
854
+ is_rollback: boolean;
855
+ /** @description Revision number that was restored; only present when is_rollback is true */
856
+ rolled_back_to?: number;
857
+ /** @example 2026-03-01T12:34:56Z */
858
+ created_at: string;
859
+ }[];
860
+ };
677
861
  ResolvedProperty: {
678
862
  /** @example examplepub.com */
679
863
  publisher_domain: string;
@@ -842,6 +1026,183 @@ export interface components {
842
1026
  property_ids?: string[];
843
1027
  tags?: string[];
844
1028
  };
1029
+ PolicySummary: {
1030
+ /** @example gdpr_consent */
1031
+ policy_id: string;
1032
+ /** @example 1.0.0 */
1033
+ version: string;
1034
+ /** @example GDPR Consent Requirements */
1035
+ name: string;
1036
+ /** @example Requirements for valid consent under GDPR */
1037
+ description: string | null;
1038
+ /** @enum {string} */
1039
+ category: "regulation" | "standard";
1040
+ /** @enum {string} */
1041
+ enforcement: "must" | "should" | "may";
1042
+ /**
1043
+ * @example [
1044
+ * "EU",
1045
+ * "EEA"
1046
+ * ]
1047
+ */
1048
+ jurisdictions: string[];
1049
+ /**
1050
+ * @example {
1051
+ * "EU": [
1052
+ * "DE",
1053
+ * "FR",
1054
+ * "IT"
1055
+ * ]
1056
+ * }
1057
+ */
1058
+ region_aliases: {
1059
+ [key: string]: string[];
1060
+ };
1061
+ /**
1062
+ * @example [
1063
+ * "finance",
1064
+ * "healthcare"
1065
+ * ]
1066
+ */
1067
+ verticals: string[];
1068
+ /**
1069
+ * @example [
1070
+ * "display",
1071
+ * "video"
1072
+ * ]
1073
+ */
1074
+ channels: string[] | null;
1075
+ /**
1076
+ * @example [
1077
+ * "campaign",
1078
+ * "creative"
1079
+ * ]
1080
+ */
1081
+ governance_domains: string[];
1082
+ /** @example 2025-05-25 */
1083
+ effective_date: string | null;
1084
+ sunset_date: string | null;
1085
+ /** @example https://eur-lex.europa.eu/eli/reg/2016/679/oj */
1086
+ source_url: string | null;
1087
+ /** @example EUR-Lex */
1088
+ source_name: string | null;
1089
+ /** @enum {string} */
1090
+ source_type: "registry" | "community";
1091
+ /** @enum {string} */
1092
+ review_status: "pending" | "approved";
1093
+ /** @example 2026-03-01T12:00:00.000Z */
1094
+ created_at: string;
1095
+ /** @example 2026-03-01T12:00:00.000Z */
1096
+ updated_at: string;
1097
+ };
1098
+ Policy: {
1099
+ /** @example gdpr_consent */
1100
+ policy_id: string;
1101
+ /** @example 1.0.0 */
1102
+ version: string;
1103
+ /** @example GDPR Consent Requirements */
1104
+ name: string;
1105
+ /** @example Requirements for valid consent under GDPR */
1106
+ description: string | null;
1107
+ /** @enum {string} */
1108
+ category: "regulation" | "standard";
1109
+ /** @enum {string} */
1110
+ enforcement: "must" | "should" | "may";
1111
+ /**
1112
+ * @example [
1113
+ * "EU",
1114
+ * "EEA"
1115
+ * ]
1116
+ */
1117
+ jurisdictions: string[];
1118
+ /**
1119
+ * @example {
1120
+ * "EU": [
1121
+ * "DE",
1122
+ * "FR",
1123
+ * "IT"
1124
+ * ]
1125
+ * }
1126
+ */
1127
+ region_aliases: {
1128
+ [key: string]: string[];
1129
+ };
1130
+ /**
1131
+ * @example [
1132
+ * "finance",
1133
+ * "healthcare"
1134
+ * ]
1135
+ */
1136
+ verticals: string[];
1137
+ /**
1138
+ * @example [
1139
+ * "display",
1140
+ * "video"
1141
+ * ]
1142
+ */
1143
+ channels: string[] | null;
1144
+ /**
1145
+ * @example [
1146
+ * "campaign",
1147
+ * "creative"
1148
+ * ]
1149
+ */
1150
+ governance_domains: string[];
1151
+ /** @example 2025-05-25 */
1152
+ effective_date: string | null;
1153
+ sunset_date: string | null;
1154
+ /** @example https://eur-lex.europa.eu/eli/reg/2016/679/oj */
1155
+ source_url: string | null;
1156
+ /** @example EUR-Lex */
1157
+ source_name: string | null;
1158
+ /** @example Data subjects must provide freely given, specific, informed and unambiguous consent... */
1159
+ policy: string;
1160
+ guidance: string | null;
1161
+ exemplars: {
1162
+ pass?: {
1163
+ /** @example Ad for alcohol shown during children's programming */
1164
+ scenario: string;
1165
+ /** @example Violates watershed timing rules for alcohol advertising */
1166
+ explanation: string;
1167
+ }[];
1168
+ fail?: {
1169
+ /** @example Ad for alcohol shown during children's programming */
1170
+ scenario: string;
1171
+ /** @example Violates watershed timing rules for alcohol advertising */
1172
+ explanation: string;
1173
+ }[];
1174
+ } | null;
1175
+ ext: {
1176
+ [key: string]: unknown;
1177
+ } | null;
1178
+ /** @enum {string} */
1179
+ source_type: "registry" | "community";
1180
+ /** @enum {string} */
1181
+ review_status: "pending" | "approved";
1182
+ /** @example 2026-03-01T12:00:00.000Z */
1183
+ created_at: string;
1184
+ /** @example 2026-03-01T12:00:00.000Z */
1185
+ updated_at: string;
1186
+ };
1187
+ PolicyHistory: {
1188
+ /** @example gdpr_consent */
1189
+ policy_id: string;
1190
+ /** @example 3 */
1191
+ total: number;
1192
+ revisions: {
1193
+ /** @example 2 */
1194
+ revision_number: number;
1195
+ /** @example Pinnacle Media */
1196
+ editor_name: string;
1197
+ /** @example Clarified consent requirements for minors */
1198
+ edit_summary: string;
1199
+ is_rollback: boolean;
1200
+ /** @description Revision number that was restored; only present when is_rollback is true */
1201
+ rolled_back_to?: number;
1202
+ /** @example 2026-03-01T12:34:56Z */
1203
+ created_at: string;
1204
+ }[];
1205
+ };
845
1206
  };
846
1207
  responses: never;
847
1208
  parameters: never;
@@ -1094,7 +1455,6 @@ export interface operations {
1094
1455
  stats: {
1095
1456
  total: number;
1096
1457
  brand_json: number;
1097
- hosted: number;
1098
1458
  community: number;
1099
1459
  enriched: number;
1100
1460
  };
@@ -1103,6 +1463,51 @@ export interface operations {
1103
1463
  };
1104
1464
  };
1105
1465
  };
1466
+ getBrandHistory: {
1467
+ parameters: {
1468
+ query: {
1469
+ domain: string;
1470
+ limit?: string;
1471
+ offset?: string;
1472
+ };
1473
+ header?: never;
1474
+ path?: never;
1475
+ cookie?: never;
1476
+ };
1477
+ requestBody?: never;
1478
+ responses: {
1479
+ /** @description Brand activity history */
1480
+ 200: {
1481
+ headers: {
1482
+ [name: string]: unknown;
1483
+ };
1484
+ content: {
1485
+ "application/json": components["schemas"]["BrandActivity"];
1486
+ };
1487
+ };
1488
+ /** @description domain parameter required */
1489
+ 400: {
1490
+ headers: {
1491
+ [name: string]: unknown;
1492
+ };
1493
+ content: {
1494
+ "application/json": components["schemas"]["Error"];
1495
+ };
1496
+ };
1497
+ /** @description Brand not found */
1498
+ 404: {
1499
+ headers: {
1500
+ [name: string]: unknown;
1501
+ };
1502
+ content: {
1503
+ "application/json": {
1504
+ error: string;
1505
+ domain: string;
1506
+ };
1507
+ };
1508
+ };
1509
+ };
1510
+ };
1106
1511
  enrichBrand: {
1107
1512
  parameters: {
1108
1513
  query: {
@@ -1136,6 +1541,51 @@ export interface operations {
1136
1541
  };
1137
1542
  };
1138
1543
  };
1544
+ getPropertyHistory: {
1545
+ parameters: {
1546
+ query: {
1547
+ domain: string;
1548
+ limit?: string;
1549
+ offset?: string;
1550
+ };
1551
+ header?: never;
1552
+ path?: never;
1553
+ cookie?: never;
1554
+ };
1555
+ requestBody?: never;
1556
+ responses: {
1557
+ /** @description Property activity history */
1558
+ 200: {
1559
+ headers: {
1560
+ [name: string]: unknown;
1561
+ };
1562
+ content: {
1563
+ "application/json": components["schemas"]["PropertyActivity"];
1564
+ };
1565
+ };
1566
+ /** @description domain parameter required */
1567
+ 400: {
1568
+ headers: {
1569
+ [name: string]: unknown;
1570
+ };
1571
+ content: {
1572
+ "application/json": components["schemas"]["Error"];
1573
+ };
1574
+ };
1575
+ /** @description Property not found */
1576
+ 404: {
1577
+ headers: {
1578
+ [name: string]: unknown;
1579
+ };
1580
+ content: {
1581
+ "application/json": {
1582
+ error: string;
1583
+ domain: string;
1584
+ };
1585
+ };
1586
+ };
1587
+ };
1588
+ };
1139
1589
  resolveProperty: {
1140
1590
  parameters: {
1141
1591
  query: {
@@ -1999,6 +2449,305 @@ export interface operations {
1999
2449
  };
2000
2450
  };
2001
2451
  };
2452
+ listPolicies: {
2453
+ parameters: {
2454
+ query?: {
2455
+ /** @description Full-text search on policy name and description */
2456
+ search?: string;
2457
+ category?: "regulation" | "standard";
2458
+ enforcement?: "must" | "should" | "may";
2459
+ /** @description Filter by jurisdiction (includes region alias matching) */
2460
+ jurisdiction?: string;
2461
+ vertical?: string;
2462
+ /** @description Filter by governance domain */
2463
+ domain?: string;
2464
+ /** @description Results per page (default 20, max 1000) */
2465
+ limit?: string;
2466
+ /** @description Pagination offset (default 0) */
2467
+ offset?: string;
2468
+ };
2469
+ header?: never;
2470
+ path?: never;
2471
+ cookie?: never;
2472
+ };
2473
+ requestBody?: never;
2474
+ responses: {
2475
+ /** @description Policy listing with facet stats */
2476
+ 200: {
2477
+ headers: {
2478
+ [name: string]: unknown;
2479
+ };
2480
+ content: {
2481
+ "application/json": {
2482
+ policies: components["schemas"]["PolicySummary"][];
2483
+ stats: {
2484
+ total: number;
2485
+ regulation: number;
2486
+ standard: number;
2487
+ };
2488
+ };
2489
+ };
2490
+ };
2491
+ };
2492
+ };
2493
+ resolvePolicy: {
2494
+ parameters: {
2495
+ query: {
2496
+ policy_id: string;
2497
+ /** @description Return null if the current version does not match */
2498
+ version?: string;
2499
+ };
2500
+ header?: never;
2501
+ path?: never;
2502
+ cookie?: never;
2503
+ };
2504
+ requestBody?: never;
2505
+ responses: {
2506
+ /** @description Policy resolved */
2507
+ 200: {
2508
+ headers: {
2509
+ [name: string]: unknown;
2510
+ };
2511
+ content: {
2512
+ "application/json": components["schemas"]["Policy"];
2513
+ };
2514
+ };
2515
+ /** @description Missing policy_id */
2516
+ 400: {
2517
+ headers: {
2518
+ [name: string]: unknown;
2519
+ };
2520
+ content: {
2521
+ "application/json": components["schemas"]["Error"];
2522
+ };
2523
+ };
2524
+ /** @description Policy not found */
2525
+ 404: {
2526
+ headers: {
2527
+ [name: string]: unknown;
2528
+ };
2529
+ content: {
2530
+ "application/json": {
2531
+ error: string;
2532
+ policy_id: string;
2533
+ };
2534
+ };
2535
+ };
2536
+ };
2537
+ };
2538
+ resolvePoliciesBulk: {
2539
+ parameters: {
2540
+ query?: never;
2541
+ header?: never;
2542
+ path?: never;
2543
+ cookie?: never;
2544
+ };
2545
+ requestBody?: {
2546
+ content: {
2547
+ "application/json": {
2548
+ /**
2549
+ * @example [
2550
+ * "gdpr_consent",
2551
+ * "coppa_children"
2552
+ * ]
2553
+ */
2554
+ policy_ids: string[];
2555
+ };
2556
+ };
2557
+ };
2558
+ responses: {
2559
+ /** @description Bulk resolution results */
2560
+ 200: {
2561
+ headers: {
2562
+ [name: string]: unknown;
2563
+ };
2564
+ content: {
2565
+ "application/json": {
2566
+ results: {
2567
+ [key: string]: components["schemas"]["Policy"] & (Record<string, never> | null);
2568
+ };
2569
+ };
2570
+ };
2571
+ };
2572
+ /** @description Invalid request */
2573
+ 400: {
2574
+ headers: {
2575
+ [name: string]: unknown;
2576
+ };
2577
+ content: {
2578
+ "application/json": components["schemas"]["Error"];
2579
+ };
2580
+ };
2581
+ /** @description Rate limit exceeded */
2582
+ 429: {
2583
+ headers: {
2584
+ [name: string]: unknown;
2585
+ };
2586
+ content: {
2587
+ "application/json": components["schemas"]["Error"];
2588
+ };
2589
+ };
2590
+ };
2591
+ };
2592
+ getPolicyHistory: {
2593
+ parameters: {
2594
+ query: {
2595
+ policy_id: string;
2596
+ /** @description Results per page (max 100, default 20) */
2597
+ limit?: string;
2598
+ /** @description Pagination offset (default 0) */
2599
+ offset?: string;
2600
+ };
2601
+ header?: never;
2602
+ path?: never;
2603
+ cookie?: never;
2604
+ };
2605
+ requestBody?: never;
2606
+ responses: {
2607
+ /** @description Revision history */
2608
+ 200: {
2609
+ headers: {
2610
+ [name: string]: unknown;
2611
+ };
2612
+ content: {
2613
+ "application/json": components["schemas"]["PolicyHistory"];
2614
+ };
2615
+ };
2616
+ /** @description Missing policy_id */
2617
+ 400: {
2618
+ headers: {
2619
+ [name: string]: unknown;
2620
+ };
2621
+ content: {
2622
+ "application/json": components["schemas"]["Error"];
2623
+ };
2624
+ };
2625
+ /** @description Policy not found */
2626
+ 404: {
2627
+ headers: {
2628
+ [name: string]: unknown;
2629
+ };
2630
+ content: {
2631
+ "application/json": {
2632
+ error: string;
2633
+ policy_id: string;
2634
+ };
2635
+ };
2636
+ };
2637
+ };
2638
+ };
2639
+ savePolicy: {
2640
+ parameters: {
2641
+ query?: never;
2642
+ header?: never;
2643
+ path?: never;
2644
+ cookie?: never;
2645
+ };
2646
+ requestBody?: {
2647
+ content: {
2648
+ "application/json": {
2649
+ /**
2650
+ * @description Lowercase alphanumeric with underscores
2651
+ * @example my_brand_safety
2652
+ */
2653
+ policy_id: string;
2654
+ /** @example 1.0.0 */
2655
+ version: string;
2656
+ /** @example Acme Corp Brand Safety */
2657
+ name: string;
2658
+ /** @enum {string} */
2659
+ category: "regulation" | "standard";
2660
+ /** @enum {string} */
2661
+ enforcement: "must" | "should" | "may";
2662
+ /** @example Ads must not appear adjacent to content depicting violence... */
2663
+ policy: string;
2664
+ description?: string;
2665
+ jurisdictions?: string[];
2666
+ region_aliases?: {
2667
+ [key: string]: string[];
2668
+ };
2669
+ verticals?: string[];
2670
+ channels?: string[];
2671
+ effective_date?: string;
2672
+ sunset_date?: string;
2673
+ governance_domains?: string[];
2674
+ /** @description Must use http:// or https:// */
2675
+ source_url?: string;
2676
+ source_name?: string;
2677
+ guidance?: string;
2678
+ exemplars?: {
2679
+ pass?: {
2680
+ scenario: string;
2681
+ explanation: string;
2682
+ }[];
2683
+ fail?: {
2684
+ scenario: string;
2685
+ explanation: string;
2686
+ }[];
2687
+ };
2688
+ ext?: {
2689
+ [key: string]: unknown;
2690
+ };
2691
+ };
2692
+ };
2693
+ };
2694
+ responses: {
2695
+ /** @description Policy saved */
2696
+ 200: {
2697
+ headers: {
2698
+ [name: string]: unknown;
2699
+ };
2700
+ content: {
2701
+ "application/json": {
2702
+ /** @enum {boolean} */
2703
+ success: true;
2704
+ message: string;
2705
+ policy_id: string;
2706
+ revision_number: number | null;
2707
+ };
2708
+ };
2709
+ };
2710
+ /** @description Validation error */
2711
+ 400: {
2712
+ headers: {
2713
+ [name: string]: unknown;
2714
+ };
2715
+ content: {
2716
+ "application/json": components["schemas"]["Error"];
2717
+ };
2718
+ };
2719
+ /** @description Authentication required */
2720
+ 401: {
2721
+ headers: {
2722
+ [name: string]: unknown;
2723
+ };
2724
+ content: {
2725
+ "application/json": components["schemas"]["Error"];
2726
+ };
2727
+ };
2728
+ /** @description Cannot edit registry-sourced or pending policy */
2729
+ 409: {
2730
+ headers: {
2731
+ [name: string]: unknown;
2732
+ };
2733
+ content: {
2734
+ "application/json": {
2735
+ error: string;
2736
+ policy_id: string;
2737
+ };
2738
+ };
2739
+ };
2740
+ /** @description Rate limit exceeded */
2741
+ 429: {
2742
+ headers: {
2743
+ [name: string]: unknown;
2744
+ };
2745
+ content: {
2746
+ "application/json": components["schemas"]["Error"];
2747
+ };
2748
+ };
2749
+ };
2750
+ };
2002
2751
  }
2003
2752
  export type ResolvedBrand = components['schemas']['ResolvedBrand'];
2004
2753
  export type LocalizedName = components['schemas']['LocalizedName'];