@adcp/sdk 13.0.0-rc.4 → 13.0.0-rc.6

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 (175) hide show
  1. package/README.md +7 -1
  2. package/bin/adcp.js +7 -1
  3. package/dist/lib/adapters/property-list-adapter.d.mts +5 -1
  4. package/dist/lib/adapters/property-list-adapter.d.ts +5 -1
  5. package/dist/lib/adapters/property-list-adapter.d.ts.map +1 -1
  6. package/dist/lib/adapters/property-list-adapter.js +7 -7
  7. package/dist/lib/adapters/property-list-adapter.js.map +1 -1
  8. package/dist/lib/adapters/property-list-adapter.mjs +7 -7
  9. package/dist/lib/adapters/property-list-adapter.mjs.map +1 -1
  10. package/dist/lib/auth/oauth/CLIFlowHandler.d.mts +10 -3
  11. package/dist/lib/auth/oauth/CLIFlowHandler.d.ts +10 -3
  12. package/dist/lib/auth/oauth/CLIFlowHandler.d.ts.map +1 -1
  13. package/dist/lib/auth/oauth/CLIFlowHandler.js +40 -4
  14. package/dist/lib/auth/oauth/CLIFlowHandler.js.map +1 -1
  15. package/dist/lib/auth/oauth/CLIFlowHandler.mjs +40 -4
  16. package/dist/lib/auth/oauth/CLIFlowHandler.mjs.map +1 -1
  17. package/dist/lib/auth/oauth/index.d.mts +1 -1
  18. package/dist/lib/auth/oauth/index.d.ts +1 -1
  19. package/dist/lib/auth/oauth/index.d.ts.map +1 -1
  20. package/dist/lib/auth/oauth/index.js +2 -0
  21. package/dist/lib/auth/oauth/index.js.map +1 -1
  22. package/dist/lib/auth/oauth/index.mjs +2 -0
  23. package/dist/lib/auth/oauth/index.mjs.map +1 -1
  24. package/dist/lib/auth/oauth/web-flow.d.mts +12 -0
  25. package/dist/lib/auth/oauth/web-flow.d.ts +12 -0
  26. package/dist/lib/auth/oauth/web-flow.d.ts.map +1 -1
  27. package/dist/lib/auth/oauth/web-flow.js +20 -2
  28. package/dist/lib/auth/oauth/web-flow.js.map +1 -1
  29. package/dist/lib/auth/oauth/web-flow.mjs +19 -2
  30. package/dist/lib/auth/oauth/web-flow.mjs.map +1 -1
  31. package/dist/lib/core/AgentClient.d.ts.map +1 -1
  32. package/dist/lib/core/SingleAgentClient.d.mts +27 -1
  33. package/dist/lib/core/SingleAgentClient.d.ts +27 -1
  34. package/dist/lib/core/SingleAgentClient.d.ts.map +1 -1
  35. package/dist/lib/core/SingleAgentClient.js +46 -18
  36. package/dist/lib/core/SingleAgentClient.js.map +1 -1
  37. package/dist/lib/core/SingleAgentClient.mjs +46 -18
  38. package/dist/lib/core/SingleAgentClient.mjs.map +1 -1
  39. package/dist/lib/net/address-guards.d.ts.map +1 -1
  40. package/dist/lib/net/address-guards.js +4 -0
  41. package/dist/lib/net/address-guards.js.map +1 -1
  42. package/dist/lib/net/address-guards.mjs +4 -0
  43. package/dist/lib/net/address-guards.mjs.map +1 -1
  44. package/dist/lib/protocols/a2a.js +2 -2
  45. package/dist/lib/protocols/a2a.js.map +1 -1
  46. package/dist/lib/protocols/a2a.mjs +2 -2
  47. package/dist/lib/protocols/a2a.mjs.map +1 -1
  48. package/dist/lib/protocols/index.d.ts.map +1 -1
  49. package/dist/lib/protocols/index.js +28 -7
  50. package/dist/lib/protocols/index.js.map +1 -1
  51. package/dist/lib/protocols/index.mjs +28 -7
  52. package/dist/lib/protocols/index.mjs.map +1 -1
  53. package/dist/lib/protocols/mcp-modern.d.ts.map +1 -1
  54. package/dist/lib/protocols/mcp-modern.js +18 -5
  55. package/dist/lib/protocols/mcp-modern.js.map +1 -1
  56. package/dist/lib/protocols/mcp-modern.mjs +18 -5
  57. package/dist/lib/protocols/mcp-modern.mjs.map +1 -1
  58. package/dist/lib/protocols/mcp-tasks.d.ts.map +1 -1
  59. package/dist/lib/protocols/mcp-tasks.js +2 -12
  60. package/dist/lib/protocols/mcp-tasks.js.map +1 -1
  61. package/dist/lib/protocols/mcp-tasks.mjs +2 -12
  62. package/dist/lib/protocols/mcp-tasks.mjs.map +1 -1
  63. package/dist/lib/protocols/mcp.js +2 -2
  64. package/dist/lib/protocols/mcp.js.map +1 -1
  65. package/dist/lib/protocols/mcp.mjs +2 -2
  66. package/dist/lib/protocols/mcp.mjs.map +1 -1
  67. package/dist/lib/registry/types.generated.d.mts +554 -15
  68. package/dist/lib/registry/types.generated.d.ts +554 -15
  69. package/dist/lib/registry/types.generated.d.ts.map +1 -1
  70. package/dist/lib/registry/types.generated.js.map +1 -1
  71. package/dist/lib/schemas-data/v2.5/_provenance.json +1 -1
  72. package/dist/lib/server/decisioning/account.d.mts +6 -4
  73. package/dist/lib/server/decisioning/account.d.ts +6 -4
  74. package/dist/lib/server/decisioning/account.d.ts.map +1 -1
  75. package/dist/lib/server/decisioning/account.js.map +1 -1
  76. package/dist/lib/server/decisioning/account.mjs.map +1 -1
  77. package/dist/lib/server/decisioning/manifest-helpers.d.mts +6 -5
  78. package/dist/lib/server/decisioning/manifest-helpers.d.ts +6 -5
  79. package/dist/lib/server/decisioning/manifest-helpers.d.ts.map +1 -1
  80. package/dist/lib/server/decisioning/manifest-helpers.js.map +1 -1
  81. package/dist/lib/server/decisioning/manifest-helpers.mjs.map +1 -1
  82. package/dist/lib/server/decisioning/runtime/from-platform.js +4 -2
  83. package/dist/lib/server/decisioning/runtime/from-platform.js.map +1 -1
  84. package/dist/lib/server/decisioning/runtime/from-platform.mjs +4 -2
  85. package/dist/lib/server/decisioning/runtime/from-platform.mjs.map +1 -1
  86. package/dist/lib/server/decisioning/tenant-store.d.mts +26 -14
  87. package/dist/lib/server/decisioning/tenant-store.d.ts +26 -14
  88. package/dist/lib/server/decisioning/tenant-store.d.ts.map +1 -1
  89. package/dist/lib/server/decisioning/tenant-store.js +6 -1
  90. package/dist/lib/server/decisioning/tenant-store.js.map +1 -1
  91. package/dist/lib/server/decisioning/tenant-store.mjs +6 -1
  92. package/dist/lib/server/decisioning/tenant-store.mjs.map +1 -1
  93. package/dist/lib/server/pin-and-bind-fetch.d.mts +2 -0
  94. package/dist/lib/server/pin-and-bind-fetch.d.ts +2 -0
  95. package/dist/lib/server/pin-and-bind-fetch.d.ts.map +1 -1
  96. package/dist/lib/server/pin-and-bind-fetch.js +2 -0
  97. package/dist/lib/server/pin-and-bind-fetch.js.map +1 -1
  98. package/dist/lib/server/pin-and-bind-fetch.mjs +2 -0
  99. package/dist/lib/server/pin-and-bind-fetch.mjs.map +1 -1
  100. package/dist/lib/server/structured-serialize.d.ts.map +1 -1
  101. package/dist/lib/server/structured-serialize.js +10 -2
  102. package/dist/lib/server/structured-serialize.js.map +1 -1
  103. package/dist/lib/server/structured-serialize.mjs +10 -2
  104. package/dist/lib/server/structured-serialize.mjs.map +1 -1
  105. package/dist/lib/server/webhook-emitter.d.ts.map +1 -1
  106. package/dist/lib/server/webhook-emitter.js +4 -2
  107. package/dist/lib/server/webhook-emitter.js.map +1 -1
  108. package/dist/lib/server/webhook-emitter.mjs +4 -2
  109. package/dist/lib/server/webhook-emitter.mjs.map +1 -1
  110. package/dist/lib/signing/middleware.d.mts +2 -1
  111. package/dist/lib/signing/middleware.d.ts +2 -1
  112. package/dist/lib/signing/middleware.d.ts.map +1 -1
  113. package/dist/lib/signing/middleware.js +26 -4
  114. package/dist/lib/signing/middleware.js.map +1 -1
  115. package/dist/lib/signing/middleware.mjs +26 -4
  116. package/dist/lib/signing/middleware.mjs.map +1 -1
  117. package/dist/lib/signing/webhook-verifier.d.ts.map +1 -1
  118. package/dist/lib/signing/webhook-verifier.js +4 -2
  119. package/dist/lib/signing/webhook-verifier.js.map +1 -1
  120. package/dist/lib/signing/webhook-verifier.mjs +4 -2
  121. package/dist/lib/signing/webhook-verifier.mjs.map +1 -1
  122. package/dist/lib/testing/agent-tester.d.ts.map +1 -1
  123. package/dist/lib/testing/agent-tester.js +46 -1
  124. package/dist/lib/testing/agent-tester.js.map +1 -1
  125. package/dist/lib/testing/agent-tester.mjs +46 -1
  126. package/dist/lib/testing/agent-tester.mjs.map +1 -1
  127. package/dist/lib/types/asset-instances.d.mts +8 -6
  128. package/dist/lib/types/asset-instances.d.ts +8 -6
  129. package/dist/lib/types/asset-instances.d.ts.map +1 -1
  130. package/dist/lib/types/asset-instances.js.map +1 -1
  131. package/dist/lib/types/index.d.ts.map +1 -1
  132. package/dist/lib/types/index.js.map +1 -1
  133. package/dist/lib/types/index.mjs.map +1 -1
  134. package/dist/lib/utils/capabilities.d.mts +2 -0
  135. package/dist/lib/utils/capabilities.d.ts +2 -0
  136. package/dist/lib/utils/capabilities.d.ts.map +1 -1
  137. package/dist/lib/utils/capabilities.js +2 -1
  138. package/dist/lib/utils/capabilities.js.map +1 -1
  139. package/dist/lib/utils/capabilities.mjs +2 -1
  140. package/dist/lib/utils/capabilities.mjs.map +1 -1
  141. package/dist/lib/utils/probe-policy.d.mts +0 -16
  142. package/dist/lib/utils/probe-policy.d.ts +0 -16
  143. package/dist/lib/utils/probe-policy.d.ts.map +1 -1
  144. package/dist/lib/utils/probe-policy.js +15 -1
  145. package/dist/lib/utils/probe-policy.js.map +1 -1
  146. package/dist/lib/utils/probe-policy.mjs +15 -1
  147. package/dist/lib/utils/probe-policy.mjs.map +1 -1
  148. package/dist/lib/utils/redact-args.d.mts +36 -0
  149. package/dist/lib/utils/redact-args.d.ts +37 -0
  150. package/dist/lib/utils/redact-args.d.ts.map +1 -0
  151. package/dist/lib/utils/redact-args.js +46 -0
  152. package/dist/lib/utils/redact-args.js.map +1 -0
  153. package/dist/lib/utils/redact-args.mjs +22 -0
  154. package/dist/lib/utils/redact-args.mjs.map +1 -0
  155. package/dist/lib/v2/projection/creative-delivery.js +1 -5
  156. package/dist/lib/v2/projection/creative-delivery.js.map +1 -1
  157. package/dist/lib/v2/projection/creative-delivery.mjs +1 -5
  158. package/dist/lib/v2/projection/creative-delivery.mjs.map +1 -1
  159. package/dist/lib/validation/index.d.mts +15 -1
  160. package/dist/lib/validation/index.d.ts +15 -1
  161. package/dist/lib/validation/index.d.ts.map +1 -1
  162. package/dist/lib/validation/index.js +4 -8
  163. package/dist/lib/validation/index.js.map +1 -1
  164. package/dist/lib/validation/index.mjs +4 -8
  165. package/dist/lib/validation/index.mjs.map +1 -1
  166. package/dist/lib/version.d.mts +3 -3
  167. package/dist/lib/version.d.ts +3 -3
  168. package/dist/lib/version.js +3 -3
  169. package/dist/lib/version.js.map +1 -1
  170. package/dist/lib/version.mjs +3 -3
  171. package/dist/lib/version.mjs.map +1 -1
  172. package/examples/hello_seller_adapter_multi_tenant.ts +7 -0
  173. package/package.json +3 -2
  174. package/skills/build-holdco-agent/SKILL.md +19 -0
  175. package/skills/cross-cutting.md +3 -1
@@ -750,6 +750,86 @@ export interface paths {
750
750
  patch?: never;
751
751
  trace?: never;
752
752
  };
753
+ "/api/registry/mirror-proposals": {
754
+ parameters: {
755
+ query?: never;
756
+ header?: never;
757
+ path?: never;
758
+ cookie?: never;
759
+ };
760
+ /**
761
+ * List community mirror proposals
762
+ * @description List the caller's own community-mirror proposals. Registry moderators and AgenticAdvertising.org administrators see the review queue and may filter by status; their default is `pending`.
763
+ */
764
+ get: operations["listCommunityMirrorProposals"];
765
+ put?: never;
766
+ post?: never;
767
+ delete?: never;
768
+ options?: never;
769
+ head?: never;
770
+ patch?: never;
771
+ trace?: never;
772
+ };
773
+ "/api/registry/mirror-proposals/{id}": {
774
+ parameters: {
775
+ query?: never;
776
+ header?: never;
777
+ path?: never;
778
+ cookie?: never;
779
+ };
780
+ /**
781
+ * Get community mirror proposal
782
+ * @description Fetch a proposal owned by the caller. Registry moderators and AgenticAdvertising.org administrators may fetch any proposal.
783
+ */
784
+ get: operations["getCommunityMirrorProposal"];
785
+ put?: never;
786
+ post?: never;
787
+ delete?: never;
788
+ options?: never;
789
+ head?: never;
790
+ patch?: never;
791
+ trace?: never;
792
+ };
793
+ "/api/registry/mirror-proposals/{id}/approve": {
794
+ parameters: {
795
+ query?: never;
796
+ header?: never;
797
+ path?: never;
798
+ cookie?: never;
799
+ };
800
+ get?: never;
801
+ put?: never;
802
+ /**
803
+ * Approve community mirror proposal
804
+ * @description Approve and atomically publish a pending proposal. Requires a registry moderator or AgenticAdvertising.org administrator.
805
+ */
806
+ post: operations["approveCommunityMirrorProposal"];
807
+ delete?: never;
808
+ options?: never;
809
+ head?: never;
810
+ patch?: never;
811
+ trace?: never;
812
+ };
813
+ "/api/registry/mirror-proposals/{id}/reject": {
814
+ parameters: {
815
+ query?: never;
816
+ header?: never;
817
+ path?: never;
818
+ cookie?: never;
819
+ };
820
+ get?: never;
821
+ put?: never;
822
+ /**
823
+ * Reject community mirror proposal
824
+ * @description Reject a pending proposal with reviewer notes. Requires a registry moderator or AgenticAdvertising.org administrator.
825
+ */
826
+ post: operations["rejectCommunityMirrorProposal"];
827
+ delete?: never;
828
+ options?: never;
829
+ head?: never;
830
+ patch?: never;
831
+ trace?: never;
832
+ };
753
833
  "/api/registry/mirrors": {
754
834
  parameters: {
755
835
  query?: never;
@@ -783,8 +863,8 @@ export interface paths {
783
863
  */
784
864
  get: operations["getCommunityMirror"];
785
865
  /**
786
- * Publish community mirror
787
- * @description Publish or update a catalog-only adagents.json community mirror. Requires a registry moderator or AgenticAdvertising.org admin. The service validates the assembled document against adagents.json, forces `authorized_agents: []`, regenerates `$schema` and `last_updated`, and updates derived publisher-domain catalog rows.
866
+ * Publish or propose community mirror
867
+ * @description Submit a catalog-only adagents.json community mirror. Registry moderators and AgenticAdvertising.org administrators publish immediately; other authenticated organization callers create or refresh a pending proposal and receive HTTP 202. Contributor proposals are limited to 1 MiB and 2,000 catalog items. The service validates the assembled document against adagents.json, forces `authorized_agents: []`, and regenerates `$schema` and `last_updated`.
788
868
  */
789
869
  put: operations["publishCommunityMirror"];
790
870
  post?: never;
@@ -2594,6 +2674,8 @@ export interface components {
2594
2674
  display_name: string;
2595
2675
  /** @description Canonical format discriminator, such as `image`, `video_hosted`, `native_in_feed`, or `custom`. */
2596
2676
  format_kind: string;
2677
+ /** @description Optional public HTTPS page where a human can inspect a sample render of this catalog format using publisher- or community-mirror-provided example assets. Informational only; this is not a renderer endpoint, buyer-asset preview, validation result, creative approval, proof of publisher acceptance, or live delivery guarantee. */
2678
+ sample_render_url?: string;
2597
2679
  /** @description Canonical format params from the publisher's adagents.json declaration. */
2598
2680
  params?: {
2599
2681
  [key: string]: unknown;
@@ -2719,19 +2801,37 @@ export interface components {
2719
2801
  } & {
2720
2802
  [key: string]: unknown;
2721
2803
  };
2722
- CommunityMirrorListResponse: {
2723
- mirrors: components["schemas"]["CommunityMirrorSummary"][];
2804
+ CommunityMirrorProposalListResponse: {
2805
+ proposals: components["schemas"]["CommunityMirrorProposalSummary"][];
2724
2806
  total: number;
2725
2807
  };
2726
- CommunityMirrorSummary: {
2808
+ CommunityMirrorProposalSummary: {
2809
+ /**
2810
+ * Format: uuid
2811
+ * @description Opaque identifier for the proposal.
2812
+ * @example 4ec8bc86-6180-4d0e-aa72-9cbf402d3638
2813
+ */
2814
+ id: string;
2727
2815
  /**
2728
2816
  * @description Lowercase platform identifier, normalized by the service.
2729
2817
  * @example example_platform
2730
2818
  */
2731
2819
  platform: string;
2732
2820
  catalog_etag: string | null;
2733
- /** @description HTTPS successor document URL, when this mirror has been superseded. */
2821
+ /** @description HTTPS URL. */
2734
2822
  superseded_by: string | null;
2823
+ /** @description SHA-256 digest that reviewers must echo when approving or rejecting this exact revision. */
2824
+ proposal_digest: string;
2825
+ /** @description Digest of the public mirror state this proposal was reviewed against, or null when none existed. */
2826
+ base_mirror_digest: string | null;
2827
+ /** @enum {string} */
2828
+ status: "pending" | "approved" | "rejected";
2829
+ /** Format: date-time */
2830
+ proposed_at: string;
2831
+ /** Format: date-time */
2832
+ reviewed_at: string | null;
2833
+ /** Format: date-time */
2834
+ published_at: string | null;
2735
2835
  /** Format: date-time */
2736
2836
  updated_at: string;
2737
2837
  };
@@ -2741,16 +2841,44 @@ export interface components {
2741
2841
  /** @description Seconds to wait before retrying. */
2742
2842
  retryAfter?: number;
2743
2843
  };
2744
- CommunityMirrorGetResponse: {
2844
+ CommunityMirrorProposalGetResponse: {
2845
+ proposal: components["schemas"]["CommunityMirrorProposal"];
2846
+ };
2847
+ CommunityMirrorProposal: {
2848
+ /**
2849
+ * Format: uuid
2850
+ * @description Opaque identifier for the proposal.
2851
+ * @example 4ec8bc86-6180-4d0e-aa72-9cbf402d3638
2852
+ */
2853
+ id: string;
2745
2854
  /**
2746
2855
  * @description Lowercase platform identifier, normalized by the service.
2747
2856
  * @example example_platform
2748
2857
  */
2749
2858
  platform: string;
2859
+ adagents_json: components["schemas"]["CommunityMirrorAdagentsJson"];
2750
2860
  catalog_etag: string | null;
2751
- /** @description HTTPS successor document URL, when this mirror has been superseded. */
2861
+ /** @description HTTPS URL. */
2752
2862
  superseded_by: string | null;
2753
- adagents_json: components["schemas"]["CommunityMirrorAdagentsJson"];
2863
+ /** @description SHA-256 digest that reviewers must echo when approving or rejecting this exact revision. */
2864
+ proposal_digest: string;
2865
+ /** @description Digest of the public mirror state this proposal was reviewed against, or null when none existed. */
2866
+ base_mirror_digest: string | null;
2867
+ /** @enum {string} */
2868
+ status: "pending" | "approved" | "rejected";
2869
+ proposed_by_organization_id: string | null;
2870
+ /**
2871
+ * Format: email
2872
+ * @description Contributor email, returned only to registry moderators and AgenticAdvertising.org administrators.
2873
+ */
2874
+ proposed_by_email?: string | null;
2875
+ /** Format: date-time */
2876
+ proposed_at: string;
2877
+ /** Format: date-time */
2878
+ reviewed_at: string | null;
2879
+ review_notes: string | null;
2880
+ /** Format: date-time */
2881
+ published_at: string | null;
2754
2882
  /** Format: date-time */
2755
2883
  created_at: string;
2756
2884
  /** Format: date-time */
@@ -2791,6 +2919,14 @@ export interface components {
2791
2919
  } & {
2792
2920
  [key: string]: unknown;
2793
2921
  };
2922
+ CommunityMirrorProposalApprovalResponse: components["schemas"]["CommunityMirrorPublishResponse"] & {
2923
+ /**
2924
+ * Format: uuid
2925
+ * @description Opaque identifier for the proposal.
2926
+ * @example 4ec8bc86-6180-4d0e-aa72-9cbf402d3638
2927
+ */
2928
+ proposal_id: string;
2929
+ };
2794
2930
  CommunityMirrorPublishResponse: {
2795
2931
  /** @enum {boolean} */
2796
2932
  success: true;
@@ -2812,6 +2948,75 @@ export interface components {
2812
2948
  /** @description Validation details for request-body parse failures or adagents.json conformance errors. */
2813
2949
  details?: unknown[];
2814
2950
  };
2951
+ CommunityMirrorProposalReviewRequest: {
2952
+ /** @description SHA-256 digest that reviewers must echo when approving or rejecting this exact revision. */
2953
+ proposal_digest: string;
2954
+ review_notes?: string;
2955
+ };
2956
+ CommunityMirrorProposalDecisionResponse: {
2957
+ /** @enum {boolean} */
2958
+ success: true;
2959
+ proposal: components["schemas"]["CommunityMirrorProposal"];
2960
+ };
2961
+ CommunityMirrorProposalRejectRequest: {
2962
+ /** @description SHA-256 digest that reviewers must echo when approving or rejecting this exact revision. */
2963
+ proposal_digest: string;
2964
+ review_notes: string;
2965
+ };
2966
+ CommunityMirrorListResponse: {
2967
+ mirrors: components["schemas"]["CommunityMirrorSummary"][];
2968
+ total: number;
2969
+ };
2970
+ CommunityMirrorSummary: {
2971
+ /**
2972
+ * @description Lowercase platform identifier, normalized by the service.
2973
+ * @example example_platform
2974
+ */
2975
+ platform: string;
2976
+ catalog_etag: string | null;
2977
+ /** @description HTTPS successor document URL, when this mirror has been superseded. */
2978
+ superseded_by: string | null;
2979
+ /** Format: date-time */
2980
+ updated_at: string;
2981
+ };
2982
+ CommunityMirrorGetResponse: {
2983
+ /**
2984
+ * @description Lowercase platform identifier, normalized by the service.
2985
+ * @example example_platform
2986
+ */
2987
+ platform: string;
2988
+ catalog_etag: string | null;
2989
+ /** @description HTTPS successor document URL, when this mirror has been superseded. */
2990
+ superseded_by: string | null;
2991
+ adagents_json: components["schemas"]["CommunityMirrorAdagentsJson"];
2992
+ /** Format: date-time */
2993
+ created_at: string;
2994
+ /** Format: date-time */
2995
+ updated_at: string;
2996
+ };
2997
+ CommunityMirrorProposalSubmissionResponse: {
2998
+ /** @enum {boolean} */
2999
+ success: true;
3000
+ /** @enum {string} */
3001
+ status: "pending";
3002
+ /**
3003
+ * Format: uuid
3004
+ * @description Opaque identifier for the proposal.
3005
+ * @example 4ec8bc86-6180-4d0e-aa72-9cbf402d3638
3006
+ */
3007
+ proposal_id: string;
3008
+ /** @description SHA-256 digest that reviewers must echo when approving or rejecting this exact revision. */
3009
+ proposal_digest: string;
3010
+ /**
3011
+ * @description Lowercase platform identifier, normalized by the service.
3012
+ * @example example_platform
3013
+ */
3014
+ platform: string;
3015
+ /** @description Authenticated API path for fetching proposal status and content. */
3016
+ status_url: string;
3017
+ /** Format: date-time */
3018
+ submitted_at: string;
3019
+ };
2815
3020
  /** @description Catalog-only adagents.json body for a community mirror. At least one of `formats`, `properties`, `placements`, `collections`, or `signals` must be present and non-empty. The service regenerates `$schema` and `last_updated` before persisting. */
2816
3021
  CommunityMirrorPublishRequest: ({
2817
3022
  catalog_etag?: string;
@@ -3759,7 +3964,7 @@ export interface components {
3759
3964
  * @description Stable rejection tag. UI maps this to operator-friendly prose.
3760
3965
  * @enum {string}
3761
3966
  */
3762
- code: "invalid_blob_shape" | "missing_field" | "invalid_field_type" | "field_too_long" | "invalid_url" | "invalid_env_reference" | "invalid_auth_method_value";
3967
+ code: "invalid_blob_shape" | "missing_field" | "invalid_field_type" | "field_too_long" | "invalid_url" | "invalid_env_reference" | "invalid_auth_method_value" | "array_too_many" | "array_too_few" | "aggregate_too_long";
3763
3968
  /**
3764
3969
  * @description Field the UI should scroll to + highlight.
3765
3970
  * @enum {string}
@@ -5103,9 +5308,9 @@ export interface operations {
5103
5308
  capabilities?: "true";
5104
5309
  properties?: "true";
5105
5310
  compliance?: "true";
5106
- /** @description Measurement-vendor filter: exact match on `measurement.metrics[].metric_id`. Repeatable (each value is OR'd within the param, AND'd with other filters). Implies `type=measurement`. */
5311
+ /** @description Measurement-vendor filter: exact match on `measurement.metrics[].metric_id`. Repeatable; multiple values are AND'd (vendor must carry all named metrics). When combined with `accreditation`, a cross-product AND applies — each (metric_id, accreditation) pair must be covered by the same metrics element. Duplicate values are ignored. Maximum 20 unique values; maximum 100 cross-product pairs. Implies `type=measurement`. */
5107
5312
  metric_id?: string | string[];
5108
- /** @description Measurement-vendor filter: exact match on `measurement.metrics[].accreditations[].accrediting_body` (e.g. `MRC`, `JIC`, `ARF`). Repeatable. Implies `type=measurement`. Accreditation claims are vendor-asserted; AAO does not independently verify (`verified_by_aao` is always `false` in the response). */
5313
+ /** @description Measurement-vendor filter: exact match on `measurement.metrics[].accreditations[].accrediting_body` (e.g. `MRC`, `JIC`, `ARF`). Repeatable; multiple values are AND'd. When combined with `metric_id`, a cross-product AND applies — see `metric_id` description. Duplicate values are ignored. Maximum 20 unique values; maximum 100 cross-product pairs. Implies `type=measurement`. Accreditation claims are vendor-asserted; AAO does not independently verify (`verified_by_aao` is always `false` in the response). */
5109
5314
  accreditation?: string | string[];
5110
5315
  /** @description Measurement-vendor filter: case-insensitive substring match against `measurement.metrics[].metric_id`. v1 scope: metric_id only (description/standard search is a follow-up). Max 64 chars; SQL wildcard characters are escaped. Implies `type=measurement`. */
5111
5316
  q?: string;
@@ -5829,6 +6034,322 @@ export interface operations {
5829
6034
  };
5830
6035
  };
5831
6036
  };
6037
+ listCommunityMirrorProposals: {
6038
+ parameters: {
6039
+ query?: {
6040
+ status?: "pending" | "approved" | "rejected";
6041
+ /** @description Set to `true` for the cross-organization moderator queue; non-moderators receive 403. */
6042
+ review_queue?: "true" | "false";
6043
+ limit?: number;
6044
+ offset?: number;
6045
+ };
6046
+ header?: never;
6047
+ path?: never;
6048
+ cookie?: never;
6049
+ };
6050
+ requestBody?: never;
6051
+ responses: {
6052
+ /** @description Community mirror proposal list */
6053
+ 200: {
6054
+ headers: {
6055
+ [name: string]: unknown;
6056
+ };
6057
+ content: {
6058
+ "application/json": components["schemas"]["CommunityMirrorProposalListResponse"];
6059
+ };
6060
+ };
6061
+ /** @description Invalid status */
6062
+ 400: {
6063
+ headers: {
6064
+ [name: string]: unknown;
6065
+ };
6066
+ content: {
6067
+ "application/json": components["schemas"]["Error"];
6068
+ };
6069
+ };
6070
+ /** @description Authentication required */
6071
+ 401: {
6072
+ headers: {
6073
+ [name: string]: unknown;
6074
+ };
6075
+ content: {
6076
+ "application/json": components["schemas"]["Error"];
6077
+ };
6078
+ };
6079
+ /** @description Moderator access required for the review queue */
6080
+ 403: {
6081
+ headers: {
6082
+ [name: string]: unknown;
6083
+ };
6084
+ content: {
6085
+ "application/json": components["schemas"]["Error"];
6086
+ };
6087
+ };
6088
+ /** @description Rate limit exceeded */
6089
+ 429: {
6090
+ headers: {
6091
+ [name: string]: unknown;
6092
+ };
6093
+ content: {
6094
+ "application/json": components["schemas"]["RateLimitError"];
6095
+ };
6096
+ };
6097
+ /** @description Failed to list proposals */
6098
+ 500: {
6099
+ headers: {
6100
+ [name: string]: unknown;
6101
+ };
6102
+ content: {
6103
+ "application/json": components["schemas"]["Error"];
6104
+ };
6105
+ };
6106
+ };
6107
+ };
6108
+ getCommunityMirrorProposal: {
6109
+ parameters: {
6110
+ query?: never;
6111
+ header?: never;
6112
+ path: {
6113
+ id: string;
6114
+ };
6115
+ cookie?: never;
6116
+ };
6117
+ requestBody?: never;
6118
+ responses: {
6119
+ /** @description Community mirror proposal */
6120
+ 200: {
6121
+ headers: {
6122
+ [name: string]: unknown;
6123
+ };
6124
+ content: {
6125
+ "application/json": components["schemas"]["CommunityMirrorProposalGetResponse"];
6126
+ };
6127
+ };
6128
+ /** @description Invalid proposal identifier */
6129
+ 400: {
6130
+ headers: {
6131
+ [name: string]: unknown;
6132
+ };
6133
+ content: {
6134
+ "application/json": components["schemas"]["Error"];
6135
+ };
6136
+ };
6137
+ /** @description Authentication required */
6138
+ 401: {
6139
+ headers: {
6140
+ [name: string]: unknown;
6141
+ };
6142
+ content: {
6143
+ "application/json": components["schemas"]["Error"];
6144
+ };
6145
+ };
6146
+ /** @description Proposal not found or not visible to the caller */
6147
+ 404: {
6148
+ headers: {
6149
+ [name: string]: unknown;
6150
+ };
6151
+ content: {
6152
+ "application/json": components["schemas"]["Error"];
6153
+ };
6154
+ };
6155
+ /** @description Rate limit exceeded */
6156
+ 429: {
6157
+ headers: {
6158
+ [name: string]: unknown;
6159
+ };
6160
+ content: {
6161
+ "application/json": components["schemas"]["RateLimitError"];
6162
+ };
6163
+ };
6164
+ /** @description Failed to read proposal */
6165
+ 500: {
6166
+ headers: {
6167
+ [name: string]: unknown;
6168
+ };
6169
+ content: {
6170
+ "application/json": components["schemas"]["Error"];
6171
+ };
6172
+ };
6173
+ };
6174
+ };
6175
+ approveCommunityMirrorProposal: {
6176
+ parameters: {
6177
+ query?: never;
6178
+ header?: never;
6179
+ path: {
6180
+ id: string;
6181
+ };
6182
+ cookie?: never;
6183
+ };
6184
+ requestBody: {
6185
+ content: {
6186
+ "application/json": components["schemas"]["CommunityMirrorProposalReviewRequest"];
6187
+ };
6188
+ };
6189
+ responses: {
6190
+ /** @description Proposal approved and mirror published */
6191
+ 200: {
6192
+ headers: {
6193
+ [name: string]: unknown;
6194
+ };
6195
+ content: {
6196
+ "application/json": components["schemas"]["CommunityMirrorProposalApprovalResponse"];
6197
+ };
6198
+ };
6199
+ /** @description Invalid identifier, review body, or stale schema conformance */
6200
+ 400: {
6201
+ headers: {
6202
+ [name: string]: unknown;
6203
+ };
6204
+ content: {
6205
+ "application/json": components["schemas"]["CommunityMirrorPublishError"];
6206
+ };
6207
+ };
6208
+ /** @description Authentication required */
6209
+ 401: {
6210
+ headers: {
6211
+ [name: string]: unknown;
6212
+ };
6213
+ content: {
6214
+ "application/json": components["schemas"]["Error"];
6215
+ };
6216
+ };
6217
+ /** @description Reviewer role required */
6218
+ 403: {
6219
+ headers: {
6220
+ [name: string]: unknown;
6221
+ };
6222
+ content: {
6223
+ "application/json": components["schemas"]["Error"];
6224
+ };
6225
+ };
6226
+ /** @description Proposal not found */
6227
+ 404: {
6228
+ headers: {
6229
+ [name: string]: unknown;
6230
+ };
6231
+ content: {
6232
+ "application/json": components["schemas"]["Error"];
6233
+ };
6234
+ };
6235
+ /** @description Proposal changed after review, its base mirror is stale, or it was already reviewed */
6236
+ 409: {
6237
+ headers: {
6238
+ [name: string]: unknown;
6239
+ };
6240
+ content: {
6241
+ "application/json": components["schemas"]["Error"];
6242
+ };
6243
+ };
6244
+ /** @description Rate limit exceeded */
6245
+ 429: {
6246
+ headers: {
6247
+ [name: string]: unknown;
6248
+ };
6249
+ content: {
6250
+ "application/json": components["schemas"]["RateLimitError"];
6251
+ };
6252
+ };
6253
+ /** @description Failed to approve proposal */
6254
+ 500: {
6255
+ headers: {
6256
+ [name: string]: unknown;
6257
+ };
6258
+ content: {
6259
+ "application/json": components["schemas"]["Error"];
6260
+ };
6261
+ };
6262
+ };
6263
+ };
6264
+ rejectCommunityMirrorProposal: {
6265
+ parameters: {
6266
+ query?: never;
6267
+ header?: never;
6268
+ path: {
6269
+ id: string;
6270
+ };
6271
+ cookie?: never;
6272
+ };
6273
+ requestBody: {
6274
+ content: {
6275
+ "application/json": components["schemas"]["CommunityMirrorProposalRejectRequest"];
6276
+ };
6277
+ };
6278
+ responses: {
6279
+ /** @description Proposal rejected */
6280
+ 200: {
6281
+ headers: {
6282
+ [name: string]: unknown;
6283
+ };
6284
+ content: {
6285
+ "application/json": components["schemas"]["CommunityMirrorProposalDecisionResponse"];
6286
+ };
6287
+ };
6288
+ /** @description Invalid identifier or review body */
6289
+ 400: {
6290
+ headers: {
6291
+ [name: string]: unknown;
6292
+ };
6293
+ content: {
6294
+ "application/json": components["schemas"]["CommunityMirrorPublishError"];
6295
+ };
6296
+ };
6297
+ /** @description Authentication required */
6298
+ 401: {
6299
+ headers: {
6300
+ [name: string]: unknown;
6301
+ };
6302
+ content: {
6303
+ "application/json": components["schemas"]["Error"];
6304
+ };
6305
+ };
6306
+ /** @description Reviewer role required */
6307
+ 403: {
6308
+ headers: {
6309
+ [name: string]: unknown;
6310
+ };
6311
+ content: {
6312
+ "application/json": components["schemas"]["Error"];
6313
+ };
6314
+ };
6315
+ /** @description Proposal not found */
6316
+ 404: {
6317
+ headers: {
6318
+ [name: string]: unknown;
6319
+ };
6320
+ content: {
6321
+ "application/json": components["schemas"]["Error"];
6322
+ };
6323
+ };
6324
+ /** @description Proposal changed after review or was already reviewed */
6325
+ 409: {
6326
+ headers: {
6327
+ [name: string]: unknown;
6328
+ };
6329
+ content: {
6330
+ "application/json": components["schemas"]["Error"];
6331
+ };
6332
+ };
6333
+ /** @description Rate limit exceeded */
6334
+ 429: {
6335
+ headers: {
6336
+ [name: string]: unknown;
6337
+ };
6338
+ content: {
6339
+ "application/json": components["schemas"]["RateLimitError"];
6340
+ };
6341
+ };
6342
+ /** @description Failed to reject proposal */
6343
+ 500: {
6344
+ headers: {
6345
+ [name: string]: unknown;
6346
+ };
6347
+ content: {
6348
+ "application/json": components["schemas"]["Error"];
6349
+ };
6350
+ };
6351
+ };
6352
+ };
5832
6353
  listCommunityMirrors: {
5833
6354
  parameters: {
5834
6355
  query?: {
@@ -5956,6 +6477,15 @@ export interface operations {
5956
6477
  "application/json": components["schemas"]["CommunityMirrorPublishResponse"];
5957
6478
  };
5958
6479
  };
6480
+ /** @description Community mirror proposal accepted for review */
6481
+ 202: {
6482
+ headers: {
6483
+ [name: string]: unknown;
6484
+ };
6485
+ content: {
6486
+ "application/json": components["schemas"]["CommunityMirrorProposalSubmissionResponse"];
6487
+ };
6488
+ };
5959
6489
  /** @description Invalid platform, request body, or adagents.json conformance failure */
5960
6490
  400: {
5961
6491
  headers: {
@@ -5974,7 +6504,7 @@ export interface operations {
5974
6504
  "application/json": components["schemas"]["Error"];
5975
6505
  };
5976
6506
  };
5977
- /** @description Only registry moderators or AgenticAdvertising.org admins can manage community mirrors */
6507
+ /** @description Organization context required for community proposals */
5978
6508
  403: {
5979
6509
  headers: {
5980
6510
  [name: string]: unknown;
@@ -5983,6 +6513,15 @@ export interface operations {
5983
6513
  "application/json": components["schemas"]["Error"];
5984
6514
  };
5985
6515
  };
6516
+ /** @description Proposal body or catalog item count exceeds the contributor limit */
6517
+ 413: {
6518
+ headers: {
6519
+ [name: string]: unknown;
6520
+ };
6521
+ content: {
6522
+ "application/json": components["schemas"]["Error"];
6523
+ };
6524
+ };
5986
6525
  /** @description Rate limit exceeded */
5987
6526
  429: {
5988
6527
  headers: {
@@ -8429,8 +8968,8 @@ export interface operations {
8429
8968
  client_secret: string;
8430
8969
  /** @description Space-separated OAuth scope values. */
8431
8970
  scope?: string;
8432
- /** @description RFC 8707 resource indicator. */
8433
- resource?: string;
8971
+ /** @description RFC 8707 resource indicator. Accepts a single URI string or an array of 1–8 URI strings for multi-resource authorization servers (Keycloak strict, AWS Cognito multi-RS). */
8972
+ resource?: string | string[];
8434
8973
  /** @description Audience parameter for audience-validating authorization servers. */
8435
8974
  audience?: string;
8436
8975
  /**