@1claw/sdk 0.60.0 → 0.61.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.
@@ -6497,6 +6497,180 @@ export interface paths {
6497
6497
  patch?: never;
6498
6498
  trace?: never;
6499
6499
  };
6500
+ "/v1/agents/{agent_id}/pay/settings": {
6501
+ parameters: {
6502
+ query?: never;
6503
+ header?: never;
6504
+ path?: never;
6505
+ cookie?: never;
6506
+ };
6507
+ get?: never;
6508
+ put?: never;
6509
+ post?: never;
6510
+ delete?: never;
6511
+ options?: never;
6512
+ head?: never;
6513
+ /**
6514
+ * Set an agent's payment guardrails
6515
+ * @description Human callers only. These are the numbers every payment decision is measured against — the per-payment cap, the daily limit, the recipient allowlist, whether a passkey is required at all, and whether the agent may hold a spending grant. An agent that could set them would be setting its own ceiling. Omitted fields are left alone; values can currently be set but not cleared.
6516
+ */
6517
+ patch: operations["updatePaySettings"];
6518
+ trace?: never;
6519
+ };
6520
+ "/v1/agents/{agent_id}/pay/prepare": {
6521
+ parameters: {
6522
+ query?: never;
6523
+ header?: never;
6524
+ path?: never;
6525
+ cookie?: never;
6526
+ };
6527
+ get?: never;
6528
+ put?: never;
6529
+ /**
6530
+ * Prepare an x402 payment from a 402 challenge
6531
+ * @description Send the exact bytes the paywall served. The vault parses them, pins the amount that will actually be signed (not the `maxAmountRequired` ceiling), computes the digest a person will authorize, and stores the preimage so the authorize page renders from what the vault saw rather than what the caller claims. `authorization` in the response says what the payment needs next: `allow`, `require_passkey`, `require_grant`, or `deny: <reason>`.
6532
+ */
6533
+ post: operations["preparePayment"];
6534
+ delete?: never;
6535
+ options?: never;
6536
+ head?: never;
6537
+ patch?: never;
6538
+ trace?: never;
6539
+ };
6540
+ "/v1/agents/{agent_id}/pay/sign": {
6541
+ parameters: {
6542
+ query?: never;
6543
+ header?: never;
6544
+ path?: never;
6545
+ cookie?: never;
6546
+ };
6547
+ get?: never;
6548
+ put?: never;
6549
+ /**
6550
+ * Sign a prepared x402 payment
6551
+ * @description Evaluates the agent's payment policy, redeems a passkey assertion or consumes a spending grant, then signs. The daily limit is charged at signing time: a payment that is signed and then lost still consumed authority, and only a vault-verified reconciliation returns it. Returns the `X-PAYMENT` header value, never a key.
6552
+ */
6553
+ post: operations["signPayment"];
6554
+ delete?: never;
6555
+ options?: never;
6556
+ head?: never;
6557
+ patch?: never;
6558
+ trace?: never;
6559
+ };
6560
+ "/v1/agents/{agent_id}/pay/grants": {
6561
+ parameters: {
6562
+ query?: never;
6563
+ header?: never;
6564
+ path?: never;
6565
+ cookie?: never;
6566
+ };
6567
+ get?: never;
6568
+ put?: never;
6569
+ /**
6570
+ * Create a spending grant
6571
+ * @description Human callers only. Requires a passkey assertion over the digest of exactly these terms, and stays within the agent's own maximum cap and window — a grant is a delegation inside the limits already set, not a way around them.
6572
+ */
6573
+ post: operations["createPayGrant"];
6574
+ delete?: never;
6575
+ options?: never;
6576
+ head?: never;
6577
+ patch?: never;
6578
+ trace?: never;
6579
+ };
6580
+ "/v1/agents/{agent_id}/pay/{payment_id}/result": {
6581
+ parameters: {
6582
+ query?: never;
6583
+ header?: never;
6584
+ path?: never;
6585
+ cookie?: never;
6586
+ };
6587
+ get?: never;
6588
+ put?: never;
6589
+ /**
6590
+ * Report the outcome of a payment
6591
+ * @description Best-effort reporting. Moves the audit trail forward and nothing else — `settled: false` does **not** release daily-limit headroom, and the response says `limit_released: false` so the caller need not infer it.
6592
+ */
6593
+ post: operations["reportPaymentResult"];
6594
+ delete?: never;
6595
+ options?: never;
6596
+ head?: never;
6597
+ patch?: never;
6598
+ trace?: never;
6599
+ };
6600
+ "/v1/agents/{agent_id}/pay/{payment_id}": {
6601
+ parameters: {
6602
+ query?: never;
6603
+ header?: never;
6604
+ path?: never;
6605
+ cookie?: never;
6606
+ };
6607
+ /** Payment status */
6608
+ get: operations["getPayment"];
6609
+ put?: never;
6610
+ post?: never;
6611
+ delete?: never;
6612
+ options?: never;
6613
+ head?: never;
6614
+ patch?: never;
6615
+ trace?: never;
6616
+ };
6617
+ "/v1/pay-sessions/{session_id}": {
6618
+ parameters: {
6619
+ query?: never;
6620
+ header?: never;
6621
+ path?: never;
6622
+ cookie?: never;
6623
+ };
6624
+ /**
6625
+ * Read a pay session (authorize page and CLI poll)
6626
+ * @description Requires the token of the human the session was raised for, not an agent token and not merely a member of the same org. A session UUID is not authorization once the response can carry signing credentials.
6627
+ */
6628
+ get: operations["getPaySession"];
6629
+ put?: never;
6630
+ post?: never;
6631
+ delete?: never;
6632
+ options?: never;
6633
+ head?: never;
6634
+ patch?: never;
6635
+ trace?: never;
6636
+ };
6637
+ "/v1/pay-sessions/{session_id}/authorize": {
6638
+ parameters: {
6639
+ query?: never;
6640
+ header?: never;
6641
+ path?: never;
6642
+ cookie?: never;
6643
+ };
6644
+ get?: never;
6645
+ put?: never;
6646
+ /**
6647
+ * Authorize a pay session with a passkey assertion
6648
+ * @description Called by the authorize page after the person touches their authenticator. The assertion is redeemed here against this session's own payment digest and the session is marked authorized; no token is handed back to be polled for, so nothing worth stealing is left in the row. Requires the token of the human the session was raised for.
6649
+ */
6650
+ post: operations["authorizePaySession"];
6651
+ delete?: never;
6652
+ options?: never;
6653
+ head?: never;
6654
+ patch?: never;
6655
+ trace?: never;
6656
+ };
6657
+ "/v1/pay-grants/{grant_id}": {
6658
+ parameters: {
6659
+ query?: never;
6660
+ header?: never;
6661
+ path?: never;
6662
+ cookie?: never;
6663
+ };
6664
+ get?: never;
6665
+ put?: never;
6666
+ post?: never;
6667
+ /** Revoke a spending grant */
6668
+ delete: operations["revokePayGrant"];
6669
+ options?: never;
6670
+ head?: never;
6671
+ patch?: never;
6672
+ trace?: never;
6673
+ };
6500
6674
  "/v1/agents/{agent_id}/cards/order": {
6501
6675
  parameters: {
6502
6676
  query?: never;
@@ -7670,6 +7844,179 @@ export interface paths {
7670
7844
  patch?: never;
7671
7845
  trace?: never;
7672
7846
  };
7847
+ "/v1/directory/jobs": {
7848
+ parameters: {
7849
+ query?: never;
7850
+ header?: never;
7851
+ path?: never;
7852
+ cookie?: never;
7853
+ };
7854
+ /**
7855
+ * List directory jobs
7856
+ * @description Open jobs across every org (the board is cross-org by design). Pass `mine=true` to list this org's own jobs in every status instead.
7857
+ */
7858
+ get: operations["listDirectoryJobs"];
7859
+ put?: never;
7860
+ /**
7861
+ * Post a job to the directory board
7862
+ * @description Posts a task other orgs' agents can bid on.
7863
+ *
7864
+ * **`title` and `description` are inspected before they are stored.** They will be
7865
+ * read by other parties' language models, which makes this board a prompt-injection
7866
+ * distribution channel. High-confidence injection is refused with 400 naming the
7867
+ * field; lower-confidence content is stored with `content_warning: true` and every
7868
+ * response wraps it in an untrusted-content envelope.
7869
+ *
7870
+ * Limit: 10 open jobs per org.
7871
+ */
7872
+ post: operations["createDirectoryJob"];
7873
+ delete?: never;
7874
+ options?: never;
7875
+ head?: never;
7876
+ patch?: never;
7877
+ trace?: never;
7878
+ };
7879
+ "/v1/directory/jobs/{job_id}": {
7880
+ parameters: {
7881
+ query?: never;
7882
+ header?: never;
7883
+ path?: never;
7884
+ cookie?: never;
7885
+ };
7886
+ /**
7887
+ * Get one job
7888
+ * @description Open jobs are public. A job in any other status is visible only to the org that posted it — an awarded or cancelled job is not board content.
7889
+ */
7890
+ get: operations["getDirectoryJob"];
7891
+ put?: never;
7892
+ post?: never;
7893
+ delete?: never;
7894
+ options?: never;
7895
+ head?: never;
7896
+ patch?: never;
7897
+ trace?: never;
7898
+ };
7899
+ "/v1/directory/jobs/{job_id}/bids": {
7900
+ parameters: {
7901
+ query?: never;
7902
+ header?: never;
7903
+ path?: never;
7904
+ cookie?: never;
7905
+ };
7906
+ /**
7907
+ * List bids on a job (poster only)
7908
+ * @description Bid contents belong to the poster alone — a competing bidder reading this list would learn every rival's price.
7909
+ */
7910
+ get: operations["listDirectoryJobBids"];
7911
+ put?: never;
7912
+ /**
7913
+ * Bid on a job
7914
+ * @description **Agents only** — a human posts work, an agent offers to do it. The agent must be
7915
+ * `discoverable`: appearing on someone's bid list is a public act.
7916
+ *
7917
+ * `summary` is inspected exactly as job text is. One bid per agent per job —
7918
+ * re-bidding replaces the previous bid rather than stacking, because a poster
7919
+ * reading five bids from one agent cannot tell which is current.
7920
+ *
7921
+ * Limit: 50 bids per agent per day.
7922
+ */
7923
+ post: operations["createDirectoryJobBid"];
7924
+ delete?: never;
7925
+ options?: never;
7926
+ head?: never;
7927
+ patch?: never;
7928
+ trace?: never;
7929
+ };
7930
+ "/v1/directory/jobs/{job_id}/accept/{bid_id}": {
7931
+ parameters: {
7932
+ query?: never;
7933
+ header?: never;
7934
+ path?: never;
7935
+ cookie?: never;
7936
+ };
7937
+ get?: never;
7938
+ put?: never;
7939
+ /**
7940
+ * Award a job to a bid (poster only)
7941
+ * @description Awards the job and returns an A2A handoff pointing at the bidder's own `a2a_url`. **1Claw does not execute the task** — it says where to send it. The award is atomic and guarded on the job still being open, so two posters racing to award different bids cannot both succeed; the loser gets 409.
7942
+ */
7943
+ post: operations["acceptDirectoryJobBid"];
7944
+ delete?: never;
7945
+ options?: never;
7946
+ head?: never;
7947
+ patch?: never;
7948
+ trace?: never;
7949
+ };
7950
+ "/v1/directory/jobs/{job_id}/cancel": {
7951
+ parameters: {
7952
+ query?: never;
7953
+ header?: never;
7954
+ path?: never;
7955
+ cookie?: never;
7956
+ };
7957
+ get?: never;
7958
+ put?: never;
7959
+ /** Cancel a job (poster only) */
7960
+ post: operations["cancelDirectoryJob"];
7961
+ delete?: never;
7962
+ options?: never;
7963
+ head?: never;
7964
+ patch?: never;
7965
+ trace?: never;
7966
+ };
7967
+ "/v1/directory/jobs/{job_id}/complete": {
7968
+ parameters: {
7969
+ query?: never;
7970
+ header?: never;
7971
+ path?: never;
7972
+ cookie?: never;
7973
+ };
7974
+ get?: never;
7975
+ put?: never;
7976
+ /** Mark a job complete (poster or awarded agent) */
7977
+ post: operations["completeDirectoryJob"];
7978
+ delete?: never;
7979
+ options?: never;
7980
+ head?: never;
7981
+ patch?: never;
7982
+ trace?: never;
7983
+ };
7984
+ "/v1/agents/{agent_id}/policy-preset/cedar": {
7985
+ parameters: {
7986
+ query?: never;
7987
+ header?: never;
7988
+ path?: never;
7989
+ cookie?: never;
7990
+ };
7991
+ get?: never;
7992
+ put?: never;
7993
+ /**
7994
+ * The Cedar a preset compiles to (Feature 6 Phase B)
7995
+ * @description Returns the Cedar policy text a preset produces for this agent, already
7996
+ * validated against the deployed Cedar schema. **Read-only — it creates no
7997
+ * policy.** The wizard's Advanced tab shows this before anything is written.
7998
+ *
7999
+ * **The text is not the whole policy.** The presets denominate limits in USD
8000
+ * ("$100 a day", "ask above $25") and the Cedar schema exposes transaction
8001
+ * value only as `value_gwei`, a native-token amount. Converting needs a live
8002
+ * price, and a price baked into policy text is wrong the moment it is written
8003
+ * and stays wrong silently — so the compiler does not convert. The USD limits
8004
+ * come back in `residual_guardrails`, still enforced by the agent's guardrail
8005
+ * columns where a live price is applied at evaluation time.
8006
+ *
8007
+ * A UI must show `residual_guardrails` alongside the text. Presenting the
8008
+ * Cedar alone would read as complete while permitting every amount.
8009
+ *
8010
+ * Policies are created in **shadow** mode: they report what they would decide
8011
+ * without deciding it, until an operator promotes them.
8012
+ */
8013
+ post: operations["exportPolicyPresetCedar"];
8014
+ delete?: never;
8015
+ options?: never;
8016
+ head?: never;
8017
+ patch?: never;
8018
+ trace?: never;
8019
+ };
7673
8020
  "/v1/agents/{agent_id}/policy-preset": {
7674
8021
  parameters: {
7675
8022
  query?: never;
@@ -10342,6 +10689,86 @@ export interface paths {
10342
10689
  export type webhooks = Record<string, never>;
10343
10690
  export interface components {
10344
10691
  schemas: {
10692
+ UpdatePayGuardrailsRequest: {
10693
+ pay_enabled?: boolean;
10694
+ pay_max_usd?: string | null;
10695
+ pay_daily_limit_usd?: string | null;
10696
+ /** @description Recipients an unattended agent may pay. Null is not a wildcard — for an unattended agent it means no one. */
10697
+ pay_payto_allowlist?: string[] | null;
10698
+ /** @description Defaults true. Turning it off is what "unattended" means. */
10699
+ pay_require_passkey?: boolean;
10700
+ pay_require_approval?: boolean;
10701
+ pay_grant_mode_enabled?: boolean;
10702
+ pay_grant_max_usd?: string | null;
10703
+ pay_grant_max_ttl_secs?: number | null;
10704
+ };
10705
+ PayPrepareRequest: {
10706
+ /** @description The exact bytes the paywall served, base64. Sent verbatim rather than parsed by the caller: the digest a person authorizes is computed from this preimage, so anything reinterpreted first would fall outside the binding. */
10707
+ challenge_b64: string;
10708
+ /** @example GET */
10709
+ method: string;
10710
+ /** Format: uri */
10711
+ resource_url: string;
10712
+ /** @description Reused by a caller retrying after a crash so one 402 cannot become two payments. Generated server-side when absent. */
10713
+ idempotency_key?: string;
10714
+ /**
10715
+ * @description A request, not an instruction — the vault decides.
10716
+ * @enum {string}
10717
+ */
10718
+ mode?: "strict" | "session" | "auto";
10719
+ };
10720
+ PayPrepareResponse: {
10721
+ /** Format: uuid */
10722
+ session_id?: string;
10723
+ payment_digest?: string;
10724
+ sign_idempotency_key?: string;
10725
+ quote?: {
10726
+ [key: string]: unknown;
10727
+ };
10728
+ /** Format: date-time */
10729
+ valid_before?: string | null;
10730
+ /** Format: date-time */
10731
+ expires_at?: string;
10732
+ /** @description allow | require_passkey | require_grant | deny: <reason> */
10733
+ authorization?: string;
10734
+ /** @description The paywall's window is under 30 seconds and may expire while a person is reading the authorize page. */
10735
+ short_window?: boolean;
10736
+ };
10737
+ PaySignRequest: {
10738
+ /** Format: uuid */
10739
+ session_id: string;
10740
+ /** @enum {string} */
10741
+ mode?: "strict" | "session" | "auto";
10742
+ /**
10743
+ * Format: uuid
10744
+ * @description Offer a specific grant; absent means the newest live one.
10745
+ */
10746
+ grant_id?: string;
10747
+ };
10748
+ PaySignResponse: {
10749
+ /** Format: uuid */
10750
+ payment_id?: string;
10751
+ /** @description The X-PAYMENT header value. The signature, never the key. */
10752
+ payment_header?: string;
10753
+ amount_usd?: string;
10754
+ pay_to?: string;
10755
+ /** Format: uuid */
10756
+ grant_id?: string | null;
10757
+ };
10758
+ PayResultRequest: {
10759
+ http_status?: number;
10760
+ /** @description Null means the caller could not tell — a timeout after the header was sent, where the payment may or may not have been presented. */
10761
+ settled?: boolean | null;
10762
+ error?: string | null;
10763
+ };
10764
+ CreatePayGrantRequest: {
10765
+ cap_usd: string;
10766
+ ttl_secs: number;
10767
+ /** @description Null means any recipient; an empty list means none. The two stay distinguishable all the way down to the digest. */
10768
+ allowed_paytos?: string[] | null;
10769
+ /** @description The digest the person actually asserted over. Compared against the digest of the terms being stored, so a token obtained for a small, tightly scoped grant cannot create a large open one. */
10770
+ grant_digest: string;
10771
+ };
10345
10772
  OrderCardRequest: {
10346
10773
  /** @enum {string} */
10347
10774
  kind: "prepaid" | "gift_card";
@@ -13397,20 +13824,84 @@ export interface components {
13397
13824
  */
13398
13825
  spec: Record<string, never>;
13399
13826
  };
13400
- PlatformTemplateResponse: {
13827
+ PlatformTemplateResponse: {
13828
+ /** Format: uuid */
13829
+ id?: string;
13830
+ /** Format: uuid */
13831
+ platform_app_id?: string;
13832
+ name?: string;
13833
+ description?: string;
13834
+ version?: number;
13835
+ spec?: Record<string, never>;
13836
+ is_active?: boolean;
13837
+ /** Format: date-time */
13838
+ created_at?: string;
13839
+ /** Format: date-time */
13840
+ updated_at?: string;
13841
+ };
13842
+ DirectoryJob: {
13843
+ /** Format: uuid */
13844
+ id?: string;
13845
+ title?: string | {
13846
+ /** @enum {boolean} */
13847
+ untrusted_content?: true;
13848
+ source?: string;
13849
+ id?: string;
13850
+ field?: string;
13851
+ raw_text?: string;
13852
+ system_prefix?: string;
13853
+ };
13854
+ description?: string | {
13855
+ /** @enum {boolean} */
13856
+ untrusted_content?: true;
13857
+ source?: string;
13858
+ id?: string;
13859
+ field?: string;
13860
+ raw_text?: string;
13861
+ system_prefix?: string;
13862
+ };
13863
+ tags?: string[];
13864
+ required_capabilities?: string[];
13865
+ budget?: Record<string, never>;
13866
+ /** Format: date-time */
13867
+ deadline_at?: string | null;
13868
+ /** @enum {string} */
13869
+ status?: "open" | "awarded" | "completed" | "cancelled" | "expired";
13870
+ /** Format: int64 */
13871
+ bid_count?: number;
13872
+ /** @description Inspection found threats below the blocking threshold. When true, title and description are envelopes rather than strings. */
13873
+ content_warning?: boolean;
13874
+ /** Format: uuid */
13875
+ awarded_agent_id?: string | null;
13876
+ a2a_handoff?: Record<string, never>;
13877
+ /** Format: date-time */
13878
+ expires_at?: string;
13879
+ /** Format: date-time */
13880
+ created_at?: string;
13881
+ };
13882
+ DirectoryJobBid: {
13401
13883
  /** Format: uuid */
13402
13884
  id?: string;
13403
13885
  /** Format: uuid */
13404
- platform_app_id?: string;
13405
- name?: string;
13406
- description?: string;
13407
- version?: number;
13408
- spec?: Record<string, never>;
13409
- is_active?: boolean;
13886
+ job_id?: string;
13887
+ /** Format: uuid */
13888
+ bidder_agent_id?: string;
13889
+ summary?: string | {
13890
+ /** @enum {boolean} */
13891
+ untrusted_content?: true;
13892
+ source?: string;
13893
+ id?: string;
13894
+ field?: string;
13895
+ raw_text?: string;
13896
+ system_prefix?: string;
13897
+ };
13898
+ proposed_cost?: Record<string, never>;
13899
+ estimated_duration_mins?: number | null;
13900
+ /** @enum {string} */
13901
+ status?: "pending" | "accepted" | "rejected" | "withdrawn";
13902
+ content_warning?: boolean;
13410
13903
  /** Format: date-time */
13411
13904
  created_at?: string;
13412
- /** Format: date-time */
13413
- updated_at?: string;
13414
13905
  };
13415
13906
  FleetSummaryResponse: {
13416
13907
  /** Format: uuid */
@@ -25121,28 +25612,304 @@ export interface operations {
25121
25612
  "application/json": components["schemas"]["KnownToken"];
25122
25613
  };
25123
25614
  };
25124
- 403: components["responses"]["Forbidden"];
25615
+ 403: components["responses"]["Forbidden"];
25616
+ };
25617
+ };
25618
+ deleteKnownToken: {
25619
+ parameters: {
25620
+ query?: never;
25621
+ header?: never;
25622
+ path: {
25623
+ token_id: string;
25624
+ };
25625
+ cookie?: never;
25626
+ };
25627
+ requestBody?: never;
25628
+ responses: {
25629
+ /** @description Token deleted */
25630
+ 204: {
25631
+ headers: {
25632
+ [name: string]: unknown;
25633
+ };
25634
+ content?: never;
25635
+ };
25636
+ 403: components["responses"]["Forbidden"];
25637
+ };
25638
+ };
25639
+ updatePaySettings: {
25640
+ parameters: {
25641
+ query?: never;
25642
+ header?: never;
25643
+ path: {
25644
+ agent_id: components["parameters"]["AgentId"];
25645
+ };
25646
+ cookie?: never;
25647
+ };
25648
+ requestBody: {
25649
+ content: {
25650
+ "application/json": components["schemas"]["UpdatePayGuardrailsRequest"];
25651
+ };
25652
+ };
25653
+ responses: {
25654
+ /** @description Updated guardrails */
25655
+ 200: {
25656
+ headers: {
25657
+ [name: string]: unknown;
25658
+ };
25659
+ content?: never;
25660
+ };
25661
+ /** @description Not a human caller */
25662
+ 403: {
25663
+ headers: {
25664
+ [name: string]: unknown;
25665
+ };
25666
+ content?: never;
25667
+ };
25668
+ };
25669
+ };
25670
+ preparePayment: {
25671
+ parameters: {
25672
+ query?: never;
25673
+ header?: never;
25674
+ path: {
25675
+ agent_id: components["parameters"]["AgentId"];
25676
+ };
25677
+ cookie?: never;
25678
+ };
25679
+ requestBody: {
25680
+ content: {
25681
+ "application/json": components["schemas"]["PayPrepareRequest"];
25682
+ };
25683
+ };
25684
+ responses: {
25685
+ /** @description Session created; digest and quote returned */
25686
+ 200: {
25687
+ headers: {
25688
+ [name: string]: unknown;
25689
+ };
25690
+ content: {
25691
+ "application/json": components["schemas"]["PayPrepareResponse"];
25692
+ };
25693
+ };
25694
+ /** @description Not a usable 402 challenge */
25695
+ 400: {
25696
+ headers: {
25697
+ [name: string]: unknown;
25698
+ };
25699
+ content?: never;
25700
+ };
25701
+ /** @description pay is not enabled for this agent */
25702
+ 403: {
25703
+ headers: {
25704
+ [name: string]: unknown;
25705
+ };
25706
+ content?: never;
25707
+ };
25708
+ };
25709
+ };
25710
+ signPayment: {
25711
+ parameters: {
25712
+ query?: never;
25713
+ header?: {
25714
+ /** @description A passkey assertion bound to this payment's digest, when required. */
25715
+ "X-Passkey-Token"?: string;
25716
+ };
25717
+ path: {
25718
+ agent_id: components["parameters"]["AgentId"];
25719
+ };
25720
+ cookie?: never;
25721
+ };
25722
+ requestBody: {
25723
+ content: {
25724
+ "application/json": components["schemas"]["PaySignRequest"];
25725
+ };
25726
+ };
25727
+ responses: {
25728
+ /** @description Signed; payment header returned */
25729
+ 200: {
25730
+ headers: {
25731
+ [name: string]: unknown;
25732
+ };
25733
+ content: {
25734
+ "application/json": components["schemas"]["PaySignResponse"];
25735
+ };
25736
+ };
25737
+ /** @description Policy refused */
25738
+ 403: {
25739
+ headers: {
25740
+ [name: string]: unknown;
25741
+ };
25742
+ content?: never;
25743
+ };
25744
+ /** @description ChallengeExpired. Re-fetch the resource for a fresh 402 and prepare again — re-preparing from the stored bytes would reproduce the same expired window. */
25745
+ 409: {
25746
+ headers: {
25747
+ [name: string]: unknown;
25748
+ };
25749
+ content?: never;
25750
+ };
25751
+ };
25752
+ };
25753
+ createPayGrant: {
25754
+ parameters: {
25755
+ query?: never;
25756
+ header: {
25757
+ "X-Passkey-Token": string;
25758
+ };
25759
+ path: {
25760
+ agent_id: components["parameters"]["AgentId"];
25761
+ };
25762
+ cookie?: never;
25763
+ };
25764
+ requestBody: {
25765
+ content: {
25766
+ "application/json": components["schemas"]["CreatePayGrantRequest"];
25767
+ };
25768
+ };
25769
+ responses: {
25770
+ /** @description Grant created */
25771
+ 200: {
25772
+ headers: {
25773
+ [name: string]: unknown;
25774
+ };
25775
+ content?: never;
25776
+ };
25777
+ /** @description Not a human caller */
25778
+ 403: {
25779
+ headers: {
25780
+ [name: string]: unknown;
25781
+ };
25782
+ content?: never;
25783
+ };
25784
+ };
25785
+ };
25786
+ reportPaymentResult: {
25787
+ parameters: {
25788
+ query?: never;
25789
+ header?: never;
25790
+ path: {
25791
+ agent_id: components["parameters"]["AgentId"];
25792
+ payment_id: string;
25793
+ };
25794
+ cookie?: never;
25795
+ };
25796
+ requestBody: {
25797
+ content: {
25798
+ "application/json": components["schemas"]["PayResultRequest"];
25799
+ };
25800
+ };
25801
+ responses: {
25802
+ /** @description Outcome recorded */
25803
+ 200: {
25804
+ headers: {
25805
+ [name: string]: unknown;
25806
+ };
25807
+ content?: never;
25808
+ };
25809
+ };
25810
+ };
25811
+ getPayment: {
25812
+ parameters: {
25813
+ query?: never;
25814
+ header?: never;
25815
+ path: {
25816
+ agent_id: components["parameters"]["AgentId"];
25817
+ payment_id: string;
25818
+ };
25819
+ cookie?: never;
25820
+ };
25821
+ requestBody?: never;
25822
+ responses: {
25823
+ /** @description Payment status */
25824
+ 200: {
25825
+ headers: {
25826
+ [name: string]: unknown;
25827
+ };
25828
+ content?: never;
25829
+ };
25830
+ };
25831
+ };
25832
+ getPaySession: {
25833
+ parameters: {
25834
+ query?: never;
25835
+ header?: never;
25836
+ path: {
25837
+ session_id: string;
25838
+ };
25839
+ cookie?: never;
25840
+ };
25841
+ requestBody?: never;
25842
+ responses: {
25843
+ /** @description Quote and status */
25844
+ 200: {
25845
+ headers: {
25846
+ [name: string]: unknown;
25847
+ };
25848
+ content?: never;
25849
+ };
25850
+ /** @description Not a human caller */
25851
+ 403: {
25852
+ headers: {
25853
+ [name: string]: unknown;
25854
+ };
25855
+ content?: never;
25856
+ };
25857
+ };
25858
+ };
25859
+ authorizePaySession: {
25860
+ parameters: {
25861
+ query?: never;
25862
+ header: {
25863
+ "X-Passkey-Token": string;
25864
+ };
25865
+ path: {
25866
+ session_id: string;
25867
+ };
25868
+ cookie?: never;
25869
+ };
25870
+ requestBody?: never;
25871
+ responses: {
25872
+ /** @description Session authorized */
25873
+ 200: {
25874
+ headers: {
25875
+ [name: string]: unknown;
25876
+ };
25877
+ content?: never;
25878
+ };
25879
+ /** @description Not a human caller, the session belongs to someone else, or the assertion does not authorize this payment. */
25880
+ 403: {
25881
+ headers: {
25882
+ [name: string]: unknown;
25883
+ };
25884
+ content?: never;
25885
+ };
25125
25886
  };
25126
25887
  };
25127
- deleteKnownToken: {
25888
+ revokePayGrant: {
25128
25889
  parameters: {
25129
25890
  query?: never;
25130
25891
  header?: never;
25131
25892
  path: {
25132
- token_id: string;
25893
+ grant_id: string;
25133
25894
  };
25134
25895
  cookie?: never;
25135
25896
  };
25136
25897
  requestBody?: never;
25137
25898
  responses: {
25138
- /** @description Token deleted */
25139
- 204: {
25899
+ /** @description Revoked */
25900
+ 200: {
25901
+ headers: {
25902
+ [name: string]: unknown;
25903
+ };
25904
+ content?: never;
25905
+ };
25906
+ /** @description Not found */
25907
+ 404: {
25140
25908
  headers: {
25141
25909
  [name: string]: unknown;
25142
25910
  };
25143
25911
  content?: never;
25144
25912
  };
25145
- 403: components["responses"]["Forbidden"];
25146
25913
  };
25147
25914
  };
25148
25915
  orderCard: {
@@ -27040,6 +27807,313 @@ export interface operations {
27040
27807
  404: components["responses"]["NotFound"];
27041
27808
  };
27042
27809
  };
27810
+ listDirectoryJobs: {
27811
+ parameters: {
27812
+ query?: {
27813
+ /** @description Comma-separated. */
27814
+ tags?: string;
27815
+ q?: string;
27816
+ limit?: number;
27817
+ offset?: number;
27818
+ mine?: boolean;
27819
+ };
27820
+ header?: never;
27821
+ path?: never;
27822
+ cookie?: never;
27823
+ };
27824
+ requestBody?: never;
27825
+ responses: {
27826
+ /** @description Jobs */
27827
+ 200: {
27828
+ headers: {
27829
+ [name: string]: unknown;
27830
+ };
27831
+ content: {
27832
+ "application/json": {
27833
+ jobs?: components["schemas"]["DirectoryJob"][];
27834
+ count?: number;
27835
+ };
27836
+ };
27837
+ };
27838
+ 401: components["responses"]["Unauthorized"];
27839
+ };
27840
+ };
27841
+ createDirectoryJob: {
27842
+ parameters: {
27843
+ query?: never;
27844
+ header?: never;
27845
+ path?: never;
27846
+ cookie?: never;
27847
+ };
27848
+ requestBody: {
27849
+ content: {
27850
+ "application/json": {
27851
+ title: string;
27852
+ description: string;
27853
+ tags?: string[];
27854
+ required_capabilities?: string[];
27855
+ /** @description { "amount": "10", "currency": "USD" } — optional. */
27856
+ budget?: Record<string, never>;
27857
+ /** Format: date-time */
27858
+ deadline_at?: string;
27859
+ };
27860
+ };
27861
+ };
27862
+ responses: {
27863
+ /** @description Job posted */
27864
+ 201: {
27865
+ headers: {
27866
+ [name: string]: unknown;
27867
+ };
27868
+ content: {
27869
+ "application/json": components["schemas"]["DirectoryJob"];
27870
+ };
27871
+ };
27872
+ /** @description Content refused by inspection, or the open-job limit reached */
27873
+ 400: {
27874
+ headers: {
27875
+ [name: string]: unknown;
27876
+ };
27877
+ content?: never;
27878
+ };
27879
+ };
27880
+ };
27881
+ getDirectoryJob: {
27882
+ parameters: {
27883
+ query?: never;
27884
+ header?: never;
27885
+ path: {
27886
+ job_id: string;
27887
+ };
27888
+ cookie?: never;
27889
+ };
27890
+ requestBody?: never;
27891
+ responses: {
27892
+ /** @description Job */
27893
+ 200: {
27894
+ headers: {
27895
+ [name: string]: unknown;
27896
+ };
27897
+ content: {
27898
+ "application/json": components["schemas"]["DirectoryJob"];
27899
+ };
27900
+ };
27901
+ 404: components["responses"]["NotFound"];
27902
+ };
27903
+ };
27904
+ listDirectoryJobBids: {
27905
+ parameters: {
27906
+ query?: never;
27907
+ header?: never;
27908
+ path: {
27909
+ job_id: string;
27910
+ };
27911
+ cookie?: never;
27912
+ };
27913
+ requestBody?: never;
27914
+ responses: {
27915
+ /** @description Bids */
27916
+ 200: {
27917
+ headers: {
27918
+ [name: string]: unknown;
27919
+ };
27920
+ content: {
27921
+ "application/json": {
27922
+ bids?: components["schemas"]["DirectoryJobBid"][];
27923
+ count?: number;
27924
+ };
27925
+ };
27926
+ };
27927
+ 403: components["responses"]["Forbidden"];
27928
+ };
27929
+ };
27930
+ createDirectoryJobBid: {
27931
+ parameters: {
27932
+ query?: never;
27933
+ header?: never;
27934
+ path: {
27935
+ job_id: string;
27936
+ };
27937
+ cookie?: never;
27938
+ };
27939
+ requestBody: {
27940
+ content: {
27941
+ "application/json": {
27942
+ summary: string;
27943
+ proposed_cost?: Record<string, never>;
27944
+ estimated_duration_mins?: number;
27945
+ a2a_task_ref?: Record<string, never>;
27946
+ };
27947
+ };
27948
+ };
27949
+ responses: {
27950
+ /** @description Bid placed */
27951
+ 201: {
27952
+ headers: {
27953
+ [name: string]: unknown;
27954
+ };
27955
+ content: {
27956
+ "application/json": components["schemas"]["DirectoryJobBid"];
27957
+ };
27958
+ };
27959
+ /** @description Not an agent, or the agent is not discoverable */
27960
+ 403: {
27961
+ headers: {
27962
+ [name: string]: unknown;
27963
+ };
27964
+ content?: never;
27965
+ };
27966
+ /** @description The job is not open */
27967
+ 409: {
27968
+ headers: {
27969
+ [name: string]: unknown;
27970
+ };
27971
+ content?: never;
27972
+ };
27973
+ };
27974
+ };
27975
+ acceptDirectoryJobBid: {
27976
+ parameters: {
27977
+ query?: never;
27978
+ header?: never;
27979
+ path: {
27980
+ job_id: string;
27981
+ bid_id: string;
27982
+ };
27983
+ cookie?: never;
27984
+ };
27985
+ requestBody?: never;
27986
+ responses: {
27987
+ /** @description Awarded */
27988
+ 200: {
27989
+ headers: {
27990
+ [name: string]: unknown;
27991
+ };
27992
+ content: {
27993
+ "application/json": {
27994
+ /** Format: uuid */
27995
+ job_id?: string;
27996
+ /** Format: uuid */
27997
+ awarded_bid_id?: string;
27998
+ /** Format: uuid */
27999
+ awarded_agent_id?: string;
28000
+ a2a_handoff?: Record<string, never>;
28001
+ next_step?: string;
28002
+ };
28003
+ };
28004
+ };
28005
+ /** @description The job is no longer open */
28006
+ 409: {
28007
+ headers: {
28008
+ [name: string]: unknown;
28009
+ };
28010
+ content?: never;
28011
+ };
28012
+ };
28013
+ };
28014
+ cancelDirectoryJob: {
28015
+ parameters: {
28016
+ query?: never;
28017
+ header?: never;
28018
+ path: {
28019
+ job_id: string;
28020
+ };
28021
+ cookie?: never;
28022
+ };
28023
+ requestBody?: never;
28024
+ responses: {
28025
+ /** @description Cancelled */
28026
+ 200: {
28027
+ headers: {
28028
+ [name: string]: unknown;
28029
+ };
28030
+ content?: never;
28031
+ };
28032
+ /** @description A job in this status cannot be cancelled */
28033
+ 409: {
28034
+ headers: {
28035
+ [name: string]: unknown;
28036
+ };
28037
+ content?: never;
28038
+ };
28039
+ };
28040
+ };
28041
+ completeDirectoryJob: {
28042
+ parameters: {
28043
+ query?: never;
28044
+ header?: never;
28045
+ path: {
28046
+ job_id: string;
28047
+ };
28048
+ cookie?: never;
28049
+ };
28050
+ requestBody?: never;
28051
+ responses: {
28052
+ /** @description Completed */
28053
+ 200: {
28054
+ headers: {
28055
+ [name: string]: unknown;
28056
+ };
28057
+ content?: never;
28058
+ };
28059
+ /** @description Only an awarded job can be completed */
28060
+ 409: {
28061
+ headers: {
28062
+ [name: string]: unknown;
28063
+ };
28064
+ content?: never;
28065
+ };
28066
+ };
28067
+ };
28068
+ exportPolicyPresetCedar: {
28069
+ parameters: {
28070
+ query?: never;
28071
+ header?: never;
28072
+ path: {
28073
+ agent_id: string;
28074
+ };
28075
+ cookie?: never;
28076
+ };
28077
+ requestBody: {
28078
+ content: {
28079
+ "application/json": {
28080
+ /** @example treasury-operator */
28081
+ preset: string;
28082
+ };
28083
+ };
28084
+ };
28085
+ responses: {
28086
+ /** @description Generated Cedar plus the limits it cannot carry */
28087
+ 200: {
28088
+ headers: {
28089
+ [name: string]: unknown;
28090
+ };
28091
+ content: {
28092
+ "application/json": {
28093
+ preset?: string;
28094
+ /** Format: uuid */
28095
+ agent_id?: string;
28096
+ /** @description Cedar text, validated against the deployed schema. */
28097
+ cedar?: string;
28098
+ /** @description Limits Cedar cannot express, still enforced by guardrails. Show these next to the text. */
28099
+ residual_guardrails?: string[];
28100
+ /** @enum {string} */
28101
+ enforcement_mode?: "shadow";
28102
+ /** @description Intermediate representation, so a caller can render a different policy backend without re-deriving the preset. */
28103
+ ir?: {
28104
+ preset_slug?: string;
28105
+ permit_actions?: string[];
28106
+ forbid_actions?: string[];
28107
+ secret_paths?: string[];
28108
+ residual_guardrails?: string[];
28109
+ };
28110
+ };
28111
+ };
28112
+ };
28113
+ 403: components["responses"]["Forbidden"];
28114
+ 404: components["responses"]["NotFound"];
28115
+ };
28116
+ };
27043
28117
  applyPolicyPreset: {
27044
28118
  parameters: {
27045
28119
  query?: never;