@codespar/sdk 0.16.8 → 0.16.9
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.
|
@@ -835,7 +835,7 @@ export interface paths {
|
|
|
835
835
|
put?: never;
|
|
836
836
|
/**
|
|
837
837
|
* Open a session
|
|
838
|
-
* @description A session is the unit an agent's tool calls, policy evaluations and audit entries hang off. `servers` names the connected MCP servers it may reach (
|
|
838
|
+
* @description A session is the unit an agent's tool calls, policy evaluations and audit entries hang off. `servers` names the connected MCP servers it may reach (0–20), and every id must be one `GET /v1/servers` returns for this project — an id that is not gets 400 `unknown_servers` with the offenders listed, which is a different body from the schema `invalid_body` above it.
|
|
839
839
|
*
|
|
840
840
|
* `mocks` and `chaos` are accepted only on a project whose environment is `test`: a live-environment project gets 403 mocks_not_permitted, a payload over 64 KiB gets 413, and a malformed one gets 400 with RFC 6901 pointers pointing at the offending field.
|
|
841
841
|
*/
|
|
@@ -851,6 +851,8 @@ export interface paths {
|
|
|
851
851
|
"application/json": {
|
|
852
852
|
servers: string[];
|
|
853
853
|
user_id?: string;
|
|
854
|
+
/** @description The registered agent this session acts as (its handle). Approvals raised in the session are attributed to it. Must name an active agent of this org, or the request answers 422. */
|
|
855
|
+
agent_id?: string;
|
|
854
856
|
mocks?: {
|
|
855
857
|
[key: string]: unknown;
|
|
856
858
|
};
|
|
@@ -2791,9 +2793,9 @@ export interface paths {
|
|
|
2791
2793
|
*
|
|
2792
2794
|
* `revoked` is not `retired`. Retired is a graceful exit; revoked is authority withdrawn, possibly adversarial. Both are reachable states and this verb writes the second one.
|
|
2793
2795
|
*
|
|
2794
|
-
* WHAT IT STOPS: the agent can no longer be paid as an `agent:<id>` payee,
|
|
2796
|
+
* WHAT IT STOPS: the agent can no longer be paid as an `agent:<id>` payee, can no longer mint a new KYA-bearing mandate, and can no longer spend under consumer mandates bound to its key: every consumer lane, card included, refuses them. The mandates themselves are not revoked -- the consumer signed them -- they stop clearing the spend-time check.
|
|
2795
2797
|
*
|
|
2796
|
-
* WHAT IT DOES NOT STOP: spending under mandates
|
|
2798
|
+
* WHAT IT DOES NOT STOP: spending under consumer mandates not bound to a key (issued before that binding existed, or while the agent was unregistered), because they name no key a revocation could reach. The deployment can refuse those for every agent (CONSUMER_MANDATE_AGENT_ENFORCE); otherwise, revoke those mandates.
|
|
2797
2799
|
*
|
|
2798
2800
|
* A `{did}` belonging to another org returns 404, not 403: 403 would confirm that the identity exists, which is what a caller sweeping DIDs is asking.
|
|
2799
2801
|
*/
|
|
@@ -9331,7 +9333,7 @@ export interface paths {
|
|
|
9331
9333
|
ok: false;
|
|
9332
9334
|
provider: string;
|
|
9333
9335
|
/** @enum {string} */
|
|
9334
|
-
error: "server_unknown" | "verify_unsupported" | "not_connected" | "provider_rejected" | "provider_unreachable" | "redirect_not_followed" | "endpoint_missing" | "test_venue_unavailable";
|
|
9336
|
+
error: "server_unknown" | "verify_unsupported" | "not_connected" | "connection_expired" | "provider_rejected" | "provider_unreachable" | "redirect_not_followed" | "endpoint_missing" | "test_venue_unavailable";
|
|
9335
9337
|
/** @description Whose sentence this is depends on the code, and the difference matters. On `provider_rejected` and `provider_unreachable` it is up to 256 characters of the PROVIDER's own response body, or the transport error. On the others it is text we wrote, naming what is missing on our side. It is absent on `redirect_not_followed`, and on the `server_unknown` and `endpoint_missing` refusals that carry nothing but the code. On `test_venue_unavailable` it names the catalog file and the field to declare, and it is the one refusal here that is about the project's ENVIRONMENT rather than its connection: the identical request from a `live` project reaches the provider. */
|
|
9336
9338
|
detail?: string;
|
|
9337
9339
|
/** @description The provider's HTTP status, present only when a round trip completed: on `provider_rejected`, `redirect_not_followed`, and the `provider_unreachable` that came from a response rather than from a transport failure. Its ABSENCE on a 502 is the signal that nothing was reached at all. */
|
|
@@ -9345,6 +9347,8 @@ export interface paths {
|
|
|
9345
9347
|
alternative?: string;
|
|
9346
9348
|
/** @description Added only for a `cert` rail in the test environment, where the connect cannot be completed at all rather than merely being unfinished. */
|
|
9347
9349
|
caveat?: string;
|
|
9350
|
+
/** @description Present on `connection_expired` only: the ISO instant the connection's OAuth access token expired. */
|
|
9351
|
+
expires_at?: string;
|
|
9348
9352
|
};
|
|
9349
9353
|
};
|
|
9350
9354
|
};
|
|
@@ -9364,7 +9368,7 @@ export interface paths {
|
|
|
9364
9368
|
ok: false;
|
|
9365
9369
|
provider: string;
|
|
9366
9370
|
/** @enum {string} */
|
|
9367
|
-
error: "server_unknown" | "verify_unsupported" | "not_connected" | "provider_rejected" | "provider_unreachable" | "redirect_not_followed" | "endpoint_missing" | "test_venue_unavailable";
|
|
9371
|
+
error: "server_unknown" | "verify_unsupported" | "not_connected" | "connection_expired" | "provider_rejected" | "provider_unreachable" | "redirect_not_followed" | "endpoint_missing" | "test_venue_unavailable";
|
|
9368
9372
|
/** @description Whose sentence this is depends on the code, and the difference matters. On `provider_rejected` and `provider_unreachable` it is up to 256 characters of the PROVIDER's own response body, or the transport error. On the others it is text we wrote, naming what is missing on our side. It is absent on `redirect_not_followed`, and on the `server_unknown` and `endpoint_missing` refusals that carry nothing but the code. On `test_venue_unavailable` it names the catalog file and the field to declare, and it is the one refusal here that is about the project's ENVIRONMENT rather than its connection: the identical request from a `live` project reaches the provider. */
|
|
9369
9373
|
detail?: string;
|
|
9370
9374
|
/** @description The provider's HTTP status, present only when a round trip completed: on `provider_rejected`, `redirect_not_followed`, and the `provider_unreachable` that came from a response rather than from a transport failure. Its ABSENCE on a 502 is the signal that nothing was reached at all. */
|
|
@@ -9378,6 +9382,8 @@ export interface paths {
|
|
|
9378
9382
|
alternative?: string;
|
|
9379
9383
|
/** @description Added only for a `cert` rail in the test environment, where the connect cannot be completed at all rather than merely being unfinished. */
|
|
9380
9384
|
caveat?: string;
|
|
9385
|
+
/** @description Present on `connection_expired` only: the ISO instant the connection's OAuth access token expired. */
|
|
9386
|
+
expires_at?: string;
|
|
9381
9387
|
};
|
|
9382
9388
|
};
|
|
9383
9389
|
};
|
|
@@ -9392,7 +9398,7 @@ export interface paths {
|
|
|
9392
9398
|
ok: false;
|
|
9393
9399
|
provider: string;
|
|
9394
9400
|
/** @enum {string} */
|
|
9395
|
-
error: "server_unknown" | "verify_unsupported" | "not_connected" | "provider_rejected" | "provider_unreachable" | "redirect_not_followed" | "endpoint_missing" | "test_venue_unavailable";
|
|
9401
|
+
error: "server_unknown" | "verify_unsupported" | "not_connected" | "connection_expired" | "provider_rejected" | "provider_unreachable" | "redirect_not_followed" | "endpoint_missing" | "test_venue_unavailable";
|
|
9396
9402
|
/** @description Whose sentence this is depends on the code, and the difference matters. On `provider_rejected` and `provider_unreachable` it is up to 256 characters of the PROVIDER's own response body, or the transport error. On the others it is text we wrote, naming what is missing on our side. It is absent on `redirect_not_followed`, and on the `server_unknown` and `endpoint_missing` refusals that carry nothing but the code. On `test_venue_unavailable` it names the catalog file and the field to declare, and it is the one refusal here that is about the project's ENVIRONMENT rather than its connection: the identical request from a `live` project reaches the provider. */
|
|
9397
9403
|
detail?: string;
|
|
9398
9404
|
/** @description The provider's HTTP status, present only when a round trip completed: on `provider_rejected`, `redirect_not_followed`, and the `provider_unreachable` that came from a response rather than from a transport failure. Its ABSENCE on a 502 is the signal that nothing was reached at all. */
|
|
@@ -9406,10 +9412,12 @@ export interface paths {
|
|
|
9406
9412
|
alternative?: string;
|
|
9407
9413
|
/** @description Added only for a `cert` rail in the test environment, where the connect cannot be completed at all rather than merely being unfinished. */
|
|
9408
9414
|
caveat?: string;
|
|
9415
|
+
/** @description Present on `connection_expired` only: the ISO instant the connection's OAuth access token expired. */
|
|
9416
|
+
expires_at?: string;
|
|
9409
9417
|
};
|
|
9410
9418
|
};
|
|
9411
9419
|
};
|
|
9412
|
-
/** @description `not_connected`. There is no usable credential to test: no active connection for this project and provider, or the vault returned nothing for the reference it holds. This body carries the extra `hint` / `alternative` steer. */
|
|
9420
|
+
/** @description `not_connected`. There is no usable credential to test: no active connection for this project and provider, or the vault returned nothing for the reference it holds. This body carries the extra `hint` / `alternative` steer. Or `connection_expired`: the project has an authorization-code OAuth connection whose access token passed its expiry, and nothing refreshes it, so the fix is to reconnect. That body carries `expires_at` and no sandbox steer. */
|
|
9413
9421
|
424: {
|
|
9414
9422
|
headers: {
|
|
9415
9423
|
[name: string]: unknown;
|
|
@@ -9420,7 +9428,7 @@ export interface paths {
|
|
|
9420
9428
|
ok: false;
|
|
9421
9429
|
provider: string;
|
|
9422
9430
|
/** @enum {string} */
|
|
9423
|
-
error: "server_unknown" | "verify_unsupported" | "not_connected" | "provider_rejected" | "provider_unreachable" | "redirect_not_followed" | "endpoint_missing" | "test_venue_unavailable";
|
|
9431
|
+
error: "server_unknown" | "verify_unsupported" | "not_connected" | "connection_expired" | "provider_rejected" | "provider_unreachable" | "redirect_not_followed" | "endpoint_missing" | "test_venue_unavailable";
|
|
9424
9432
|
/** @description Whose sentence this is depends on the code, and the difference matters. On `provider_rejected` and `provider_unreachable` it is up to 256 characters of the PROVIDER's own response body, or the transport error. On the others it is text we wrote, naming what is missing on our side. It is absent on `redirect_not_followed`, and on the `server_unknown` and `endpoint_missing` refusals that carry nothing but the code. On `test_venue_unavailable` it names the catalog file and the field to declare, and it is the one refusal here that is about the project's ENVIRONMENT rather than its connection: the identical request from a `live` project reaches the provider. */
|
|
9425
9433
|
detail?: string;
|
|
9426
9434
|
/** @description The provider's HTTP status, present only when a round trip completed: on `provider_rejected`, `redirect_not_followed`, and the `provider_unreachable` that came from a response rather than from a transport failure. Its ABSENCE on a 502 is the signal that nothing was reached at all. */
|
|
@@ -9434,6 +9442,8 @@ export interface paths {
|
|
|
9434
9442
|
alternative?: string;
|
|
9435
9443
|
/** @description Added only for a `cert` rail in the test environment, where the connect cannot be completed at all rather than merely being unfinished. */
|
|
9436
9444
|
caveat?: string;
|
|
9445
|
+
/** @description Present on `connection_expired` only: the ISO instant the connection's OAuth access token expired. */
|
|
9446
|
+
expires_at?: string;
|
|
9437
9447
|
};
|
|
9438
9448
|
};
|
|
9439
9449
|
};
|
|
@@ -9448,7 +9458,7 @@ export interface paths {
|
|
|
9448
9458
|
ok: false;
|
|
9449
9459
|
provider: string;
|
|
9450
9460
|
/** @enum {string} */
|
|
9451
|
-
error: "server_unknown" | "verify_unsupported" | "not_connected" | "provider_rejected" | "provider_unreachable" | "redirect_not_followed" | "endpoint_missing" | "test_venue_unavailable";
|
|
9461
|
+
error: "server_unknown" | "verify_unsupported" | "not_connected" | "connection_expired" | "provider_rejected" | "provider_unreachable" | "redirect_not_followed" | "endpoint_missing" | "test_venue_unavailable";
|
|
9452
9462
|
/** @description Whose sentence this is depends on the code, and the difference matters. On `provider_rejected` and `provider_unreachable` it is up to 256 characters of the PROVIDER's own response body, or the transport error. On the others it is text we wrote, naming what is missing on our side. It is absent on `redirect_not_followed`, and on the `server_unknown` and `endpoint_missing` refusals that carry nothing but the code. On `test_venue_unavailable` it names the catalog file and the field to declare, and it is the one refusal here that is about the project's ENVIRONMENT rather than its connection: the identical request from a `live` project reaches the provider. */
|
|
9453
9463
|
detail?: string;
|
|
9454
9464
|
/** @description The provider's HTTP status, present only when a round trip completed: on `provider_rejected`, `redirect_not_followed`, and the `provider_unreachable` that came from a response rather than from a transport failure. Its ABSENCE on a 502 is the signal that nothing was reached at all. */
|
|
@@ -9462,6 +9472,8 @@ export interface paths {
|
|
|
9462
9472
|
alternative?: string;
|
|
9463
9473
|
/** @description Added only for a `cert` rail in the test environment, where the connect cannot be completed at all rather than merely being unfinished. */
|
|
9464
9474
|
caveat?: string;
|
|
9475
|
+
/** @description Present on `connection_expired` only: the ISO instant the connection's OAuth access token expired. */
|
|
9476
|
+
expires_at?: string;
|
|
9465
9477
|
};
|
|
9466
9478
|
};
|
|
9467
9479
|
};
|
|
@@ -9476,7 +9488,7 @@ export interface paths {
|
|
|
9476
9488
|
ok: false;
|
|
9477
9489
|
provider: string;
|
|
9478
9490
|
/** @enum {string} */
|
|
9479
|
-
error: "server_unknown" | "verify_unsupported" | "not_connected" | "provider_rejected" | "provider_unreachable" | "redirect_not_followed" | "endpoint_missing" | "test_venue_unavailable";
|
|
9491
|
+
error: "server_unknown" | "verify_unsupported" | "not_connected" | "connection_expired" | "provider_rejected" | "provider_unreachable" | "redirect_not_followed" | "endpoint_missing" | "test_venue_unavailable";
|
|
9480
9492
|
/** @description Whose sentence this is depends on the code, and the difference matters. On `provider_rejected` and `provider_unreachable` it is up to 256 characters of the PROVIDER's own response body, or the transport error. On the others it is text we wrote, naming what is missing on our side. It is absent on `redirect_not_followed`, and on the `server_unknown` and `endpoint_missing` refusals that carry nothing but the code. On `test_venue_unavailable` it names the catalog file and the field to declare, and it is the one refusal here that is about the project's ENVIRONMENT rather than its connection: the identical request from a `live` project reaches the provider. */
|
|
9481
9493
|
detail?: string;
|
|
9482
9494
|
/** @description The provider's HTTP status, present only when a round trip completed: on `provider_rejected`, `redirect_not_followed`, and the `provider_unreachable` that came from a response rather than from a transport failure. Its ABSENCE on a 502 is the signal that nothing was reached at all. */
|
|
@@ -9490,6 +9502,8 @@ export interface paths {
|
|
|
9490
9502
|
alternative?: string;
|
|
9491
9503
|
/** @description Added only for a `cert` rail in the test environment, where the connect cannot be completed at all rather than merely being unfinished. */
|
|
9492
9504
|
caveat?: string;
|
|
9505
|
+
/** @description Present on `connection_expired` only: the ISO instant the connection's OAuth access token expired. */
|
|
9506
|
+
expires_at?: string;
|
|
9493
9507
|
};
|
|
9494
9508
|
};
|
|
9495
9509
|
};
|
|
@@ -9504,7 +9518,7 @@ export interface paths {
|
|
|
9504
9518
|
ok: false;
|
|
9505
9519
|
provider: string;
|
|
9506
9520
|
/** @enum {string} */
|
|
9507
|
-
error: "server_unknown" | "verify_unsupported" | "not_connected" | "provider_rejected" | "provider_unreachable" | "redirect_not_followed" | "endpoint_missing" | "test_venue_unavailable";
|
|
9521
|
+
error: "server_unknown" | "verify_unsupported" | "not_connected" | "connection_expired" | "provider_rejected" | "provider_unreachable" | "redirect_not_followed" | "endpoint_missing" | "test_venue_unavailable";
|
|
9508
9522
|
/** @description Whose sentence this is depends on the code, and the difference matters. On `provider_rejected` and `provider_unreachable` it is up to 256 characters of the PROVIDER's own response body, or the transport error. On the others it is text we wrote, naming what is missing on our side. It is absent on `redirect_not_followed`, and on the `server_unknown` and `endpoint_missing` refusals that carry nothing but the code. On `test_venue_unavailable` it names the catalog file and the field to declare, and it is the one refusal here that is about the project's ENVIRONMENT rather than its connection: the identical request from a `live` project reaches the provider. */
|
|
9509
9523
|
detail?: string;
|
|
9510
9524
|
/** @description The provider's HTTP status, present only when a round trip completed: on `provider_rejected`, `redirect_not_followed`, and the `provider_unreachable` that came from a response rather than from a transport failure. Its ABSENCE on a 502 is the signal that nothing was reached at all. */
|
|
@@ -9518,6 +9532,8 @@ export interface paths {
|
|
|
9518
9532
|
alternative?: string;
|
|
9519
9533
|
/** @description Added only for a `cert` rail in the test environment, where the connect cannot be completed at all rather than merely being unfinished. */
|
|
9520
9534
|
caveat?: string;
|
|
9535
|
+
/** @description Present on `connection_expired` only: the ISO instant the connection's OAuth access token expired. */
|
|
9536
|
+
expires_at?: string;
|
|
9521
9537
|
};
|
|
9522
9538
|
};
|
|
9523
9539
|
};
|
|
@@ -12978,7 +12994,10 @@ export interface paths {
|
|
|
12978
12994
|
server_id: string;
|
|
12979
12995
|
/** @description Mirrors the catalog's `auth_type` at connect time: api_key, path_secret, cert, hmac_signed, jwt_ecdsa, two_header, oauth, cdp or none. Left open because the column is plain text. */
|
|
12980
12996
|
auth_type: string;
|
|
12981
|
-
/**
|
|
12997
|
+
/**
|
|
12998
|
+
* @description `expired` includes an OAuth connection whose access token passed `expires_at`: nothing refreshes it yet, calls through it answer `connection_expired`, and the fix is to reconnect. `?status=` filters on this same value.
|
|
12999
|
+
* @enum {string}
|
|
13000
|
+
*/
|
|
12982
13001
|
status: "pending" | "connected" | "revoked" | "expired";
|
|
12983
13002
|
display_name: string | null;
|
|
12984
13003
|
/** @description Provider metadata the OAuth callback wrote (scope, refresh ref) or the provisioning projection wrote (account_id). Always present; null for a key registered through POST /v1/connections, which never sets it. */
|
|
@@ -13071,7 +13090,10 @@ export interface paths {
|
|
|
13071
13090
|
server_id: string;
|
|
13072
13091
|
/** @description Mirrors the catalog's `auth_type` at connect time: api_key, path_secret, cert, hmac_signed, jwt_ecdsa, two_header, oauth, cdp or none. Left open because the column is plain text. */
|
|
13073
13092
|
auth_type: string;
|
|
13074
|
-
/**
|
|
13093
|
+
/**
|
|
13094
|
+
* @description `expired` includes an OAuth connection whose access token passed `expires_at`: nothing refreshes it yet, calls through it answer `connection_expired`, and the fix is to reconnect. `?status=` filters on this same value.
|
|
13095
|
+
* @enum {string}
|
|
13096
|
+
*/
|
|
13075
13097
|
status: "pending" | "connected" | "revoked" | "expired";
|
|
13076
13098
|
display_name: string | null;
|
|
13077
13099
|
/** @description Provider metadata the OAuth callback wrote (scope, refresh ref) or the provisioning projection wrote (account_id). Always present; null for a key registered through POST /v1/connections, which never sets it. */
|
|
@@ -13111,7 +13133,10 @@ export interface paths {
|
|
|
13111
13133
|
server_id: string;
|
|
13112
13134
|
/** @description Mirrors the catalog's `auth_type` at connect time: api_key, path_secret, cert, hmac_signed, jwt_ecdsa, two_header, oauth, cdp or none. Left open because the column is plain text. */
|
|
13113
13135
|
auth_type: string;
|
|
13114
|
-
/**
|
|
13136
|
+
/**
|
|
13137
|
+
* @description `expired` includes an OAuth connection whose access token passed `expires_at`: nothing refreshes it yet, calls through it answer `connection_expired`, and the fix is to reconnect. `?status=` filters on this same value.
|
|
13138
|
+
* @enum {string}
|
|
13139
|
+
*/
|
|
13115
13140
|
status: "pending" | "connected" | "revoked" | "expired";
|
|
13116
13141
|
display_name: string | null;
|
|
13117
13142
|
/** @description Provider metadata the OAuth callback wrote (scope, refresh ref) or the provisioning projection wrote (account_id). Always present; null for a key registered through POST /v1/connections, which never sets it. */
|
|
@@ -13298,7 +13323,10 @@ export interface paths {
|
|
|
13298
13323
|
server_id: string;
|
|
13299
13324
|
/** @description Mirrors the catalog's `auth_type` at connect time: api_key, path_secret, cert, hmac_signed, jwt_ecdsa, two_header, oauth, cdp or none. Left open because the column is plain text. */
|
|
13300
13325
|
auth_type: string;
|
|
13301
|
-
/**
|
|
13326
|
+
/**
|
|
13327
|
+
* @description `expired` includes an OAuth connection whose access token passed `expires_at`: nothing refreshes it yet, calls through it answer `connection_expired`, and the fix is to reconnect. `?status=` filters on this same value.
|
|
13328
|
+
* @enum {string}
|
|
13329
|
+
*/
|
|
13302
13330
|
status: "pending" | "connected" | "revoked" | "expired";
|
|
13303
13331
|
display_name: string | null;
|
|
13304
13332
|
/** @description Provider metadata the OAuth callback wrote (scope, refresh ref) or the provisioning projection wrote (account_id). Always present; null for a key registered through POST /v1/connections, which never sets it. */
|
|
@@ -13417,7 +13445,10 @@ export interface paths {
|
|
|
13417
13445
|
server_id: string;
|
|
13418
13446
|
/** @description Mirrors the catalog's `auth_type` at connect time: api_key, path_secret, cert, hmac_signed, jwt_ecdsa, two_header, oauth, cdp or none. Left open because the column is plain text. */
|
|
13419
13447
|
auth_type: string;
|
|
13420
|
-
/**
|
|
13448
|
+
/**
|
|
13449
|
+
* @description `expired` includes an OAuth connection whose access token passed `expires_at`: nothing refreshes it yet, calls through it answer `connection_expired`, and the fix is to reconnect. `?status=` filters on this same value.
|
|
13450
|
+
* @enum {string}
|
|
13451
|
+
*/
|
|
13421
13452
|
status: "pending" | "connected" | "revoked" | "expired";
|
|
13422
13453
|
display_name: string | null;
|
|
13423
13454
|
/** @description Provider metadata the OAuth callback wrote (scope, refresh ref) or the provisioning projection wrote (account_id). Always present; null for a key registered through POST /v1/connections, which never sets it. */
|
|
@@ -13561,7 +13592,10 @@ export interface paths {
|
|
|
13561
13592
|
server_id: string;
|
|
13562
13593
|
/** @description Mirrors the catalog's `auth_type` at connect time: api_key, path_secret, cert, hmac_signed, jwt_ecdsa, two_header, oauth, cdp or none. Left open because the column is plain text. */
|
|
13563
13594
|
auth_type: string;
|
|
13564
|
-
/**
|
|
13595
|
+
/**
|
|
13596
|
+
* @description `expired` includes an OAuth connection whose access token passed `expires_at`: nothing refreshes it yet, calls through it answer `connection_expired`, and the fix is to reconnect. `?status=` filters on this same value.
|
|
13597
|
+
* @enum {string}
|
|
13598
|
+
*/
|
|
13565
13599
|
status: "pending" | "connected" | "revoked" | "expired";
|
|
13566
13600
|
display_name: string | null;
|
|
13567
13601
|
/** @description Provider metadata the OAuth callback wrote (scope, refresh ref) or the provisioning projection wrote (account_id). Always present; null for a key registered through POST /v1/connections, which never sets it. */
|
|
@@ -14831,6 +14865,8 @@ export interface paths {
|
|
|
14831
14865
|
* The cumulative cap is checked and CONSUMED under an advisory lock, and the wallet hold is taken inside that same lock. The lock is released before the provider call, so a slow provider does not serialize everyone else.
|
|
14832
14866
|
*
|
|
14833
14867
|
* **There is no read route for the outcome.** An `attempt_id` that answered `psp_dispatch_uncertain` has no endpoint to ask about afterwards. Keep the `attempt_id` and present it again: the lifecycle is idempotent on it and answers the state that attempt stopped in, instead of firing a second one. Do NOT restart the same intent under a fresh `attempt_id`. That is how a payment gets made twice. A retry of an attempt that already holds money is not evaluated against the organization's policy rules again, so a budget or a rate limit cannot refuse the retry that finds out what happened.
|
|
14868
|
+
*
|
|
14869
|
+
* **A settled attempt answers its recorded response.** Presenting the `attempt_id` of an attempt that already settled, with the same amount, payee, mandate, rail and quote, returns the ORIGINAL 200 body verbatim (same `transactionId`, same receipt) with `idempotent_replay: true`, and nothing is dispatched, held, sealed or published. This holds on every rail and in test mode alike, and while the organization is paused, since the answer moves no money. Presenting it with any of those parameters changed is `attempt_id_conflict`. Idempotency is opt-in: a request without an `attempt_id` is its own payment and is never replayed, so two spends under one mandate are two payments. Send an `attempt_id` to make a retry safe.
|
|
14834
14870
|
*/
|
|
14835
14871
|
post: {
|
|
14836
14872
|
parameters: {
|
|
@@ -14928,7 +14964,7 @@ export interface paths {
|
|
|
14928
14964
|
};
|
|
14929
14965
|
};
|
|
14930
14966
|
};
|
|
14931
|
-
/** @description Local state refuses. `psp_attempt_in_flight`: the same attempt is already in flight. `psp_attempt_uncertain`: an earlier attempt ended with an unknown outcome and this intent is PINNED to it, so present the same `attempt_id` again, never a new one. `psp_attempt_conflict`: the earlier attempt was already compensated. */
|
|
14967
|
+
/** @description Local state refuses. `psp_attempt_in_flight`: the same attempt is already in flight; retry the SAME `attempt_id` once it has answered, never a new one. `psp_attempt_uncertain`: an earlier attempt ended with an unknown outcome and this intent is PINNED to it, so present the same `attempt_id` again, never a new one. `psp_attempt_conflict`: the earlier attempt was already compensated. `attempt_id_conflict`: this `attempt_id` was already used for a different payment (`mismatched_fields` names what differs); nothing was held or sent. `attempt_id_unavailable`: another project of this organization holds this `attempt_id`; use a new one. */
|
|
14932
14968
|
409: {
|
|
14933
14969
|
headers: {
|
|
14934
14970
|
[name: string]: unknown;
|
|
@@ -14937,7 +14973,7 @@ export interface paths {
|
|
|
14937
14973
|
"application/json": {
|
|
14938
14974
|
error: {
|
|
14939
14975
|
/** @enum {string} */
|
|
14940
|
-
code: "psp_attempt_in_flight" | "psp_attempt_uncertain" | "psp_attempt_conflict";
|
|
14976
|
+
code: "psp_attempt_in_flight" | "psp_attempt_uncertain" | "psp_attempt_conflict" | "attempt_id_conflict" | "attempt_id_unavailable";
|
|
14941
14977
|
message: string;
|
|
14942
14978
|
details?: {
|
|
14943
14979
|
[key: string]: unknown;
|
|
@@ -15058,6 +15094,8 @@ export interface paths {
|
|
|
15058
15094
|
* 3. The destination must be NAMED in a signed list of the mandate, and a merchant-list wildcard `"*"` NEVER authorizes money out. Which list is accepted is mid-rollout, so read this one carefully: the target rule is `withdrawal_allowlist` alone, and while the rollout flag is off a destination named explicitly in the signed `merchant_allowlist` is ALSO accepted, with the stricter rule's refusal recorded rather than applied. Tolerance never widens what passes: a wildcard is refused on both paths, and a destination in neither list is refused with its own code. Build against `withdrawal_allowlist`: it is the list that keeps working when the flag turns on.
|
|
15059
15095
|
*
|
|
15060
15096
|
* **There is no read route for the outcome.** An `attempt_id` that answered `psp_dispatch_uncertain` has no endpoint to ask about afterwards. Keep the `attempt_id` and present it again: the lifecycle is idempotent on it and answers the state that attempt stopped in, instead of firing a second one. Do NOT restart the same intent under a fresh `attempt_id`. That is how a payment gets made twice. A retry of an attempt that already holds money is not evaluated against the organization's policy rules again, so a budget or a rate limit cannot refuse the retry that finds out what happened.
|
|
15097
|
+
*
|
|
15098
|
+
* **A settled attempt answers its recorded response.** Presenting the `attempt_id` of an attempt that already settled, with the same amount, payee, mandate, rail and quote, returns the ORIGINAL 200 body verbatim (same `transactionId`, same receipt) with `idempotent_replay: true`, and nothing is dispatched, held, sealed or published. This holds on every rail and in test mode alike, and while the organization is paused, since the answer moves no money. Presenting it with any of those parameters changed is `attempt_id_conflict`. Idempotency is opt-in: a request without an `attempt_id` is its own payment and is never replayed, so two spends under one mandate are two payments. Send an `attempt_id` to make a retry safe.
|
|
15061
15099
|
*/
|
|
15062
15100
|
post: {
|
|
15063
15101
|
parameters: {
|
|
@@ -15134,7 +15172,7 @@ export interface paths {
|
|
|
15134
15172
|
};
|
|
15135
15173
|
};
|
|
15136
15174
|
};
|
|
15137
|
-
/** @description Local state refuses, on the same
|
|
15175
|
+
/** @description Local state refuses, on the same five conditions as the by-id route. */
|
|
15138
15176
|
409: {
|
|
15139
15177
|
headers: {
|
|
15140
15178
|
[name: string]: unknown;
|
|
@@ -15143,7 +15181,7 @@ export interface paths {
|
|
|
15143
15181
|
"application/json": {
|
|
15144
15182
|
error: {
|
|
15145
15183
|
/** @enum {string} */
|
|
15146
|
-
code: "psp_attempt_in_flight" | "psp_attempt_uncertain" | "psp_attempt_conflict";
|
|
15184
|
+
code: "psp_attempt_in_flight" | "psp_attempt_uncertain" | "psp_attempt_conflict" | "attempt_id_conflict" | "attempt_id_unavailable";
|
|
15147
15185
|
message: string;
|
|
15148
15186
|
details?: {
|
|
15149
15187
|
[key: string]: unknown;
|
|
@@ -15238,6 +15276,8 @@ export interface paths {
|
|
|
15238
15276
|
* The outcome is the same object the sibling route returns, carried on the last event. A client that does not need to follow progress should use `/execute`: streaming does not make settlement faster, it makes it observable while it runs.
|
|
15239
15277
|
*
|
|
15240
15278
|
* **There is no read route for the outcome.** An `attempt_id` that answered `psp_dispatch_uncertain` has no endpoint to ask about afterwards. Keep the `attempt_id` and present it again: the lifecycle is idempotent on it and answers the state that attempt stopped in, instead of firing a second one. Do NOT restart the same intent under a fresh `attempt_id`. That is how a payment gets made twice. A retry of an attempt that already holds money is not evaluated against the organization's policy rules again, so a budget or a rate limit cannot refuse the retry that finds out what happened.
|
|
15279
|
+
*
|
|
15280
|
+
* **A settled attempt answers its recorded response.** Presenting the `attempt_id` of an attempt that already settled, with the same amount, payee, mandate, rail and quote, returns the ORIGINAL 200 body verbatim (same `transactionId`, same receipt) with `idempotent_replay: true`, and nothing is dispatched, held, sealed or published. This holds on every rail and in test mode alike, and while the organization is paused, since the answer moves no money. Presenting it with any of those parameters changed is `attempt_id_conflict`. Idempotency is opt-in: a request without an `attempt_id` is its own payment and is never replayed, so two spends under one mandate are two payments. Send an `attempt_id` to make a retry safe.
|
|
15241
15281
|
*/
|
|
15242
15282
|
post: {
|
|
15243
15283
|
parameters: {
|
|
@@ -21008,7 +21048,11 @@ export interface paths {
|
|
|
21008
21048
|
};
|
|
21009
21049
|
};
|
|
21010
21050
|
};
|
|
21011
|
-
/**
|
|
21051
|
+
/**
|
|
21052
|
+
* @description `illegal_transition`: the consent's current status does not permit authorisation. `details.from` and `details.to` carry the pair.
|
|
21053
|
+
*
|
|
21054
|
+
* `consent_expired`: the consent is `pending` and its validity window (`details.expires_at`) has elapsed. TERMINAL: the grant can no longer be authorised. The status stays `pending` on the row and is read as expired by this route, so it still occupies this project's one open consent for the consumer at this bank: revoke it, then initiate a new consent. Another project is not blocked by it.
|
|
21055
|
+
*/
|
|
21012
21056
|
409: {
|
|
21013
21057
|
headers: {
|
|
21014
21058
|
[name: string]: unknown;
|
|
@@ -21017,7 +21061,7 @@ export interface paths {
|
|
|
21017
21061
|
"application/json": {
|
|
21018
21062
|
error: {
|
|
21019
21063
|
/** @enum {string} */
|
|
21020
|
-
code: "illegal_transition";
|
|
21064
|
+
code: "illegal_transition" | "consent_expired";
|
|
21021
21065
|
message: string;
|
|
21022
21066
|
details?: {
|
|
21023
21067
|
[key: string]: unknown;
|
|
@@ -21174,7 +21218,13 @@ export interface paths {
|
|
|
21174
21218
|
};
|
|
21175
21219
|
};
|
|
21176
21220
|
};
|
|
21177
|
-
/**
|
|
21221
|
+
/**
|
|
21222
|
+
* @description `consent_not_authorised`: the consent is not in `authorised`. `details.status` carries what it is.
|
|
21223
|
+
*
|
|
21224
|
+
* `consent_expired`: the consent's validity window (`details.expires_at`) has elapsed. The consent is moved to `expired` by this same call and nothing is fetched. TERMINAL: initiate a new consent.
|
|
21225
|
+
*
|
|
21226
|
+
* `consent_token_expired`: the consent is still valid but its access token (`details.token_expires_at`) has expired. NOT terminal: the consent stays `authorised`, because the grant is alive at the bank and the token is renewable. Nothing was fetched; do not initiate a new consent.
|
|
21227
|
+
*/
|
|
21178
21228
|
409: {
|
|
21179
21229
|
headers: {
|
|
21180
21230
|
[name: string]: unknown;
|
|
@@ -21183,7 +21233,7 @@ export interface paths {
|
|
|
21183
21233
|
"application/json": {
|
|
21184
21234
|
error: {
|
|
21185
21235
|
/** @enum {string} */
|
|
21186
|
-
code: "consent_not_authorised";
|
|
21236
|
+
code: "consent_not_authorised" | "consent_expired" | "consent_token_expired";
|
|
21187
21237
|
message: string;
|
|
21188
21238
|
details?: {
|
|
21189
21239
|
[key: string]: unknown;
|
|
@@ -22150,7 +22200,11 @@ export interface paths {
|
|
|
22150
22200
|
};
|
|
22151
22201
|
};
|
|
22152
22202
|
};
|
|
22153
|
-
/**
|
|
22203
|
+
/**
|
|
22204
|
+
* @description `illegal_transition`: the consent's current status does not permit authorisation. `details.from` and `details.to` carry the pair.
|
|
22205
|
+
*
|
|
22206
|
+
* `consent_expired`: the consent is `pending` and its validity window (`details.expires_at`) has elapsed. TERMINAL: the grant can no longer be authorised. The status stays `pending` on the row and is read as expired by this route, so it still occupies this project's one open consent for the consumer at this bank: revoke it, then initiate a new consent. Another project is not blocked by it.
|
|
22207
|
+
*/
|
|
22154
22208
|
409: {
|
|
22155
22209
|
headers: {
|
|
22156
22210
|
[name: string]: unknown;
|
|
@@ -22159,7 +22213,7 @@ export interface paths {
|
|
|
22159
22213
|
"application/json": {
|
|
22160
22214
|
error: {
|
|
22161
22215
|
/** @enum {string} */
|
|
22162
|
-
code: "illegal_transition";
|
|
22216
|
+
code: "illegal_transition" | "consent_expired";
|
|
22163
22217
|
message: string;
|
|
22164
22218
|
details?: {
|
|
22165
22219
|
[key: string]: unknown;
|
|
@@ -22311,7 +22365,13 @@ export interface paths {
|
|
|
22311
22365
|
};
|
|
22312
22366
|
};
|
|
22313
22367
|
};
|
|
22314
|
-
/**
|
|
22368
|
+
/**
|
|
22369
|
+
* @description `consent_not_authorised`: the consent is not in `authorised`. `details.status` carries what it is.
|
|
22370
|
+
*
|
|
22371
|
+
* `consent_expired`: the consent's validity window (`details.expires_at`) has elapsed. The consent is moved to `expired` by this same call and nothing is fetched. TERMINAL: initiate a new consent.
|
|
22372
|
+
*
|
|
22373
|
+
* `consent_token_expired`: the consent is still valid but its access token (`details.token_expires_at`) has expired. NOT terminal: the consent stays `authorised`, because the grant is alive at the bank and the token is renewable. Nothing was fetched; do not initiate a new consent.
|
|
22374
|
+
*/
|
|
22315
22375
|
409: {
|
|
22316
22376
|
headers: {
|
|
22317
22377
|
[name: string]: unknown;
|
|
@@ -22320,7 +22380,7 @@ export interface paths {
|
|
|
22320
22380
|
"application/json": {
|
|
22321
22381
|
error: {
|
|
22322
22382
|
/** @enum {string} */
|
|
22323
|
-
code: "consent_not_authorised";
|
|
22383
|
+
code: "consent_not_authorised" | "consent_expired" | "consent_token_expired";
|
|
22324
22384
|
message: string;
|
|
22325
22385
|
details?: {
|
|
22326
22386
|
[key: string]: unknown;
|
|
@@ -36578,6 +36638,10 @@ export interface components {
|
|
|
36578
36638
|
} | null;
|
|
36579
36639
|
/** @description The lifecycle steps, in order, each with a timestamp and an outcome. */
|
|
36580
36640
|
audit: unknown[];
|
|
36641
|
+
/** @description The attempt this payment settled under: the `attempt_id` sent, or the fresh one minted when none was. Presenting it again reads this outcome instead of paying again. */
|
|
36642
|
+
attempt_id: string;
|
|
36643
|
+
/** @description True when this `attempt_id` had already settled and this is its recorded outcome, answered again: every other field is the ORIGINAL response, verbatim, and nothing was sent, held, sealed or published by this call. False on the call that settled it. */
|
|
36644
|
+
idempotent_replay: boolean;
|
|
36581
36645
|
};
|
|
36582
36646
|
/** @description The destination of a TED, the Brazilian same-day bank wire. Present this object on a spend to send a wire instead of a Pix: its presence is what switches the rail, and what makes the three TED requirements on those operations bind. Money leaves the consumer's own sub-account, never a pooled one. */
|
|
36583
36647
|
TedDestination: {
|