sinfactura-types 1.10.552 → 1.10.554
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.
- package/dist/auth.d.ts +128 -13
- package/dist/auth.js +11 -5
- package/dist/cjs/auth.js +11 -5
- package/dist/cjs/mercadopago.js +36 -5
- package/dist/customer.d.ts +20 -0
- package/dist/mercadopago.d.ts +86 -6
- package/dist/mercadopago.js +36 -5
- package/dist/order.d.ts +1 -0
- package/dist/storefrontEvent.d.ts +7 -4
- package/dist/userActivity.d.ts +12 -1
- package/package.json +1 -1
package/dist/auth.d.ts
CHANGED
|
@@ -491,12 +491,23 @@ declare global {
|
|
|
491
491
|
* somebody holds the password and stalled at the second factor.
|
|
492
492
|
* - `wrong_totp` — the step-up code was wrong.
|
|
493
493
|
* - `totp_replay` — an already-used code was presented again and rejected.
|
|
494
|
-
* - `wrong_passkey` — a passkey (WebAuthn) assertion was presented and failed
|
|
495
|
-
*
|
|
496
|
-
*
|
|
497
|
-
*
|
|
498
|
-
*
|
|
499
|
-
*
|
|
494
|
+
* - `wrong_passkey` — a passkey (WebAuthn) assertion was presented and failed.
|
|
495
|
+
* ⚠️ It means a DIFFERENT step on each kind of row:
|
|
496
|
+
* - **Operator rows (`kind: 'USER'`)** — the passkey is a SECOND factor, so
|
|
497
|
+
* this is a failed 2FA leg: a bad signature, an unknown or revoked
|
|
498
|
+
* credential, an expired challenge, or a signature counter that went
|
|
499
|
+
* backwards. Kept apart from `wrong_totp` so the trail can tell a
|
|
500
|
+
* mistyped code from a failing authenticator; the CLIENT still sees the
|
|
501
|
+
* same `INVALID_2FA_CODE` for both. A replayed assertion challenge is
|
|
502
|
+
* `totp_replay`, like a replayed code.
|
|
503
|
+
* - **Customer rows (`kind: 'CUSTOMER'`)** — the passkey is the FIRST
|
|
504
|
+
* factor (storefront `passkey-sign-in-verify`, provider `'passkey'`), so
|
|
505
|
+
* there is no second factor involved: the assertion against a credential
|
|
506
|
+
* that RESOLVED to this customer did not verify (a bad signature, a
|
|
507
|
+
* counter regression, a lost counter race). The client sees `401
|
|
508
|
+
* PASSKEY_NOT_RECOGNISED`, never `INVALID_2FA_CODE`. An unknown, revoked
|
|
509
|
+
* or other-host credential, a forged handle and an expired or replayed
|
|
510
|
+
* challenge are refused BEFORE a customer is known and write no row.
|
|
500
511
|
* - `totp_locked` — brute-force lockout active on the TOTP leg.
|
|
501
512
|
* - `enrollment_required` — the credentials were correct and the store's
|
|
502
513
|
* mandatory-2FA grace window has closed on a user who never enrolled. Like
|
|
@@ -662,8 +673,17 @@ declare global {
|
|
|
662
673
|
* assignable to the other's slot. Both spellings ship; this is documented
|
|
663
674
|
* rather than reconciled, because `method` is an established analytics
|
|
664
675
|
* contract.
|
|
676
|
+
*
|
|
677
|
+
* ⚠️ `'passkey'` is NOT a Firebase provider and is NEVER STORED as a
|
|
678
|
+
* `CustomerSignInMethod` entry. Like `hasPassword`, it is DERIVED: the api
|
|
679
|
+
* reports it from the customer's live passkeys (see
|
|
680
|
+
* {@link CustomerPasskeySummary}), and only while the platform's customer
|
|
681
|
+
* passkey switch is on. It cannot be unlinked through
|
|
682
|
+
* `unlink-sign-in-method` — a passkey is removed one credential at a time
|
|
683
|
+
* through `passkey-remove`. It is also the provider recorded on a
|
|
684
|
+
* {@link CustomerLoginAttempt} for a passkey sign-in.
|
|
665
685
|
*/
|
|
666
|
-
type CustomerSignInProvider = 'google' | 'facebook' | 'apple' | 'password';
|
|
686
|
+
type CustomerSignInProvider = 'google' | 'facebook' | 'apple' | 'password' | 'passkey';
|
|
667
687
|
/**
|
|
668
688
|
* Whether a stored sign-in method may be used, or has been explicitly turned
|
|
669
689
|
* off by the customer.
|
|
@@ -775,6 +795,13 @@ declare global {
|
|
|
775
795
|
* explicitly-refused. Do not render "never connected" off absence, and do not
|
|
776
796
|
* infer that a link attempt will succeed from it.
|
|
777
797
|
*
|
|
798
|
+
* ⚠️ One entry is DERIVED, not stored: `{ provider: 'passkey', status:
|
|
799
|
+
* 'linked' }` is appended while the customer-passkeys switch is on and the
|
|
800
|
+
* customer holds at least one live passkey. It stands for the whole set of
|
|
801
|
+
* passkeys (each is removed on its own through `passkey-remove`, never
|
|
802
|
+
* through unlink) and carries no `firebaseUid` or dates. Whether the switch
|
|
803
|
+
* is on is `passkeysAvailable`, not this entry.
|
|
804
|
+
*
|
|
778
805
|
* ⚠️ Note the nesting: `methods` sits under `data`, not at the root beside
|
|
779
806
|
* it, unlike `CustomerSessionsResponse.data` / `CustomerLoginHistoryResponse.data`
|
|
780
807
|
* which put their array directly at `data`. The reason is that `hasPassword`
|
|
@@ -792,7 +819,10 @@ declare global {
|
|
|
792
819
|
*/
|
|
793
820
|
interface CustomerSignInMethodsResponse {
|
|
794
821
|
data: {
|
|
795
|
-
/**
|
|
822
|
+
/**
|
|
823
|
+
* LINKED entries only, plus the derived `passkey` entry described above.
|
|
824
|
+
* A refused provider is invisible here.
|
|
825
|
+
*/
|
|
796
826
|
methods: CustomerSignInMethod[];
|
|
797
827
|
/**
|
|
798
828
|
* DERIVED, never stored: "does a usable password credential exist for
|
|
@@ -810,6 +840,22 @@ declare global {
|
|
|
810
840
|
* api sees both halves.
|
|
811
841
|
*/
|
|
812
842
|
hasPassword: boolean;
|
|
843
|
+
/**
|
|
844
|
+
* `true` iff the platform's customer-passkeys switch
|
|
845
|
+
* (`customerPasskeysEnabled`) is on — the storefront offers "Add a
|
|
846
|
+
* passkey" on it.
|
|
847
|
+
*
|
|
848
|
+
* ⚠️ Read the switch HERE, never off `methods`. The derived `passkey`
|
|
849
|
+
* entry in `methods` appears only when the switch is on AND the customer
|
|
850
|
+
* already holds a live passkey, so "no passkey entry" is the same body for
|
|
851
|
+
* "switch off" and for "switch on, nothing registered yet" — every
|
|
852
|
+
* customer at launch. Hiding registration off that absence means nobody
|
|
853
|
+
* can ever register a first passkey.
|
|
854
|
+
*
|
|
855
|
+
* Additive: an older api omits it, which a consumer should read as
|
|
856
|
+
* `false`.
|
|
857
|
+
*/
|
|
858
|
+
passkeysAvailable: boolean;
|
|
813
859
|
};
|
|
814
860
|
}
|
|
815
861
|
/**
|
|
@@ -838,6 +884,69 @@ declare global {
|
|
|
838
884
|
unlinked: true;
|
|
839
885
|
provider: CustomerSignInProvider;
|
|
840
886
|
}
|
|
887
|
+
/**
|
|
888
|
+
* One live customer passkey, as every customer-passkey read returns it.
|
|
889
|
+
*
|
|
890
|
+
* ⚠️ An ALLOW-LIST projection of the stored row: these five keys and nothing
|
|
891
|
+
* else. The row carries the public key and signature counter, which
|
|
892
|
+
* `response()` does not strip.
|
|
893
|
+
*/
|
|
894
|
+
interface CustomerPasskeySummary {
|
|
895
|
+
/** base64url credential id — what `passkey-remove` takes. */
|
|
896
|
+
credentialId: string;
|
|
897
|
+
/** The customer's own name for the device. Personal data. */
|
|
898
|
+
label: string;
|
|
899
|
+
/** unix ms */
|
|
900
|
+
createdAt: number;
|
|
901
|
+
/** unix ms — the last successful sign-in with it. Absent until first use. */
|
|
902
|
+
lastUsedAt?: number;
|
|
903
|
+
/**
|
|
904
|
+
* The host the passkey was registered on (`cesta.ar` or a verified custom
|
|
905
|
+
* domain). It signs in on that host only — render it so the customer can
|
|
906
|
+
* tell two same-named devices apart and knows where each one works.
|
|
907
|
+
*/
|
|
908
|
+
rpHost: string;
|
|
909
|
+
}
|
|
910
|
+
/**
|
|
911
|
+
* `passkey-register-options` (cookie-authenticated) and
|
|
912
|
+
* `passkey-sign-in-options` (public) `data` — a single-use, five-minute
|
|
913
|
+
* challenge. Same shape as the operator {@link PasskeyChallenge}.
|
|
914
|
+
*/
|
|
915
|
+
type CustomerPasskeyOptionsResponse = PasskeyChallenge;
|
|
916
|
+
/** `POST /auth` body for `passkey-register-verify`. Cookie-authenticated. */
|
|
917
|
+
interface CustomerPasskeyRegisterVerifyRequest {
|
|
918
|
+
mode: 'passkey-register-verify';
|
|
919
|
+
challengeId: string;
|
|
920
|
+
response: WebAuthnCredentialResponse;
|
|
921
|
+
/** The customer's own name for the device. */
|
|
922
|
+
label?: string;
|
|
923
|
+
}
|
|
924
|
+
/** `passkey-register-verify` `data` — the new credential. */
|
|
925
|
+
type CustomerPasskeyRegisterVerifyResponse = CustomerPasskeySummary;
|
|
926
|
+
/**
|
|
927
|
+
* `POST /auth` body for `passkey-sign-in-verify`. Public. The 200 is the
|
|
928
|
+
* SAME body, cookie and session a password sign-in answers with.
|
|
929
|
+
*/
|
|
930
|
+
interface CustomerPasskeySignInVerifyRequest {
|
|
931
|
+
mode: 'passkey-sign-in-verify';
|
|
932
|
+
challengeId: string;
|
|
933
|
+
response: WebAuthnCredentialResponse;
|
|
934
|
+
}
|
|
935
|
+
/** `GET /auth?mode=passkeys` `data` — the caller's own live passkeys. */
|
|
936
|
+
interface CustomerPasskeyListResponse {
|
|
937
|
+
credentials: CustomerPasskeySummary[];
|
|
938
|
+
}
|
|
939
|
+
/** `POST /auth` body for `passkey-remove`. Cookie-authenticated. */
|
|
940
|
+
interface CustomerPasskeyRemoveRequest {
|
|
941
|
+
mode: 'passkey-remove';
|
|
942
|
+
credentialId: string;
|
|
943
|
+
}
|
|
944
|
+
/** `passkey-remove` `data`. */
|
|
945
|
+
interface CustomerPasskeyRemoveResponse {
|
|
946
|
+
credentialId: string;
|
|
947
|
+
/** unix ms */
|
|
948
|
+
revokedAt: number;
|
|
949
|
+
}
|
|
841
950
|
/**
|
|
842
951
|
* One operator refresh-token row: active by default, retained history in the forensic view —
|
|
843
952
|
* `stacks/lambdas/auth/_sessions.ts`, rows from `listSessions`.
|
|
@@ -1102,11 +1211,14 @@ declare global {
|
|
|
1102
1211
|
* `SIGN_IN_METHODS_CONFLICT` since the sign-in-methods race fix shipped. A
|
|
1103
1212
|
* contract that lags its own emitter is the failure this tuple closes.
|
|
1104
1213
|
*
|
|
1105
|
-
* - `SIGN_IN_METHOD_LAST_CREDENTIAL` (unlink) — the
|
|
1106
|
-
*
|
|
1107
|
-
*
|
|
1108
|
-
*
|
|
1109
|
-
*
|
|
1214
|
+
* - `SIGN_IN_METHOD_LAST_CREDENTIAL` (unlink, `passkey-remove`) — the
|
|
1215
|
+
* guardrail. Removing this provider, or this passkey, would leave the account
|
|
1216
|
+
* with no way in at all: no other linked provider, no password and — while
|
|
1217
|
+
* the customer-passkeys switch is on — no other live passkey (with the switch
|
|
1218
|
+
* off a passkey cannot sign in, so it does not count). Correct ONLY because
|
|
1219
|
+
* the api sees the social providers, the password credential and the
|
|
1220
|
+
* passkeys together. Offer "set a password first", not a retry — the
|
|
1221
|
+
* remedy is the same whichever mode answered it.
|
|
1110
1222
|
* - `SIGN_IN_METHOD_NOT_LINKED` (unlink) — nothing to unlink. ⚠️ Reachable for a
|
|
1111
1223
|
* provider the customer signs in with RIGHT NOW: a working Google sign-in is
|
|
1112
1224
|
* still not a linked one.
|
|
@@ -1133,6 +1245,9 @@ declare global {
|
|
|
1133
1245
|
* - `SIGN_IN_METHODS_CONFLICT` — a concurrent writer won the row. The retry
|
|
1134
1246
|
* budget is already spent by the time this reaches the wire, so it is
|
|
1135
1247
|
* terminal for this request: surface "please retry", never auto-retry again.
|
|
1248
|
+
* Also answered by `passkey-register-verify` and `passkey-remove` when
|
|
1249
|
+
* another change to the customer's ways in (a passkey added or removed, a
|
|
1250
|
+
* provider unlinked) kept landing between their count and their write.
|
|
1136
1251
|
* ⚠️ It collapses TWO distinct DynamoDB failures — a transaction cancellation
|
|
1137
1252
|
* from the shared write helper and a bare conditional-check failure from the
|
|
1138
1253
|
* social path. That split never reaches the wire, and must not: a caller
|
package/dist/auth.js
CHANGED
|
@@ -19,11 +19,14 @@
|
|
|
19
19
|
* `SIGN_IN_METHODS_CONFLICT` since the sign-in-methods race fix shipped. A
|
|
20
20
|
* contract that lags its own emitter is the failure this tuple closes.
|
|
21
21
|
*
|
|
22
|
-
* - `SIGN_IN_METHOD_LAST_CREDENTIAL` (unlink) — the
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
22
|
+
* - `SIGN_IN_METHOD_LAST_CREDENTIAL` (unlink, `passkey-remove`) — the
|
|
23
|
+
* guardrail. Removing this provider, or this passkey, would leave the account
|
|
24
|
+
* with no way in at all: no other linked provider, no password and — while
|
|
25
|
+
* the customer-passkeys switch is on — no other live passkey (with the switch
|
|
26
|
+
* off a passkey cannot sign in, so it does not count). Correct ONLY because
|
|
27
|
+
* the api sees the social providers, the password credential and the
|
|
28
|
+
* passkeys together. Offer "set a password first", not a retry — the
|
|
29
|
+
* remedy is the same whichever mode answered it.
|
|
27
30
|
* - `SIGN_IN_METHOD_NOT_LINKED` (unlink) — nothing to unlink. ⚠️ Reachable for a
|
|
28
31
|
* provider the customer signs in with RIGHT NOW: a working Google sign-in is
|
|
29
32
|
* still not a linked one.
|
|
@@ -50,6 +53,9 @@
|
|
|
50
53
|
* - `SIGN_IN_METHODS_CONFLICT` — a concurrent writer won the row. The retry
|
|
51
54
|
* budget is already spent by the time this reaches the wire, so it is
|
|
52
55
|
* terminal for this request: surface "please retry", never auto-retry again.
|
|
56
|
+
* Also answered by `passkey-register-verify` and `passkey-remove` when
|
|
57
|
+
* another change to the customer's ways in (a passkey added or removed, a
|
|
58
|
+
* provider unlinked) kept landing between their count and their write.
|
|
53
59
|
* ⚠️ It collapses TWO distinct DynamoDB failures — a transaction cancellation
|
|
54
60
|
* from the shared write helper and a bare conditional-check failure from the
|
|
55
61
|
* social path. That split never reaches the wire, and must not: a caller
|
package/dist/cjs/auth.js
CHANGED
|
@@ -22,11 +22,14 @@ exports.SESSION_ACTION_ERROR_CODES = exports.PASSKEY_ERROR_CODES = exports.TWO_F
|
|
|
22
22
|
* `SIGN_IN_METHODS_CONFLICT` since the sign-in-methods race fix shipped. A
|
|
23
23
|
* contract that lags its own emitter is the failure this tuple closes.
|
|
24
24
|
*
|
|
25
|
-
* - `SIGN_IN_METHOD_LAST_CREDENTIAL` (unlink) — the
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
*
|
|
25
|
+
* - `SIGN_IN_METHOD_LAST_CREDENTIAL` (unlink, `passkey-remove`) — the
|
|
26
|
+
* guardrail. Removing this provider, or this passkey, would leave the account
|
|
27
|
+
* with no way in at all: no other linked provider, no password and — while
|
|
28
|
+
* the customer-passkeys switch is on — no other live passkey (with the switch
|
|
29
|
+
* off a passkey cannot sign in, so it does not count). Correct ONLY because
|
|
30
|
+
* the api sees the social providers, the password credential and the
|
|
31
|
+
* passkeys together. Offer "set a password first", not a retry — the
|
|
32
|
+
* remedy is the same whichever mode answered it.
|
|
30
33
|
* - `SIGN_IN_METHOD_NOT_LINKED` (unlink) — nothing to unlink. ⚠️ Reachable for a
|
|
31
34
|
* provider the customer signs in with RIGHT NOW: a working Google sign-in is
|
|
32
35
|
* still not a linked one.
|
|
@@ -53,6 +56,9 @@ exports.SESSION_ACTION_ERROR_CODES = exports.PASSKEY_ERROR_CODES = exports.TWO_F
|
|
|
53
56
|
* - `SIGN_IN_METHODS_CONFLICT` — a concurrent writer won the row. The retry
|
|
54
57
|
* budget is already spent by the time this reaches the wire, so it is
|
|
55
58
|
* terminal for this request: surface "please retry", never auto-retry again.
|
|
59
|
+
* Also answered by `passkey-register-verify` and `passkey-remove` when
|
|
60
|
+
* another change to the customer's ways in (a passkey added or removed, a
|
|
61
|
+
* provider unlinked) kept landing between their count and their write.
|
|
56
62
|
* ⚠️ It collapses TWO distinct DynamoDB failures — a transaction cancellation
|
|
57
63
|
* from the shared write helper and a bare conditional-check failure from the
|
|
58
64
|
* social path. That split never reaches the wire, and must not: a caller
|
package/dist/cjs/mercadopago.js
CHANGED
|
@@ -2,11 +2,40 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.MP_REFUND_RECOVERY_ERROR_CODES = exports.MP_POINT_TIP_ERROR_CODES = exports.MP_DYNAMIC_QR_ERROR_CODES = void 0;
|
|
4
4
|
/**
|
|
5
|
-
* Dynamic QR initiation refusals
|
|
6
|
-
* malformed
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
5
|
+
* Dynamic QR initiation refusals, by status:
|
|
6
|
+
* - 400 malformed request (`VALIDATION_FAILED`, `TIP_EXCEEDS_ORDER`, `TIP_ORDER_REQUIRED`), or an
|
|
7
|
+
* order whose paid sum cannot be converted for want of a usable rate (`FX_CONVERSION_UNAVAILABLE`);
|
|
8
|
+
* - 403 permission, plan or support session (`CAPABILITY_REQUIRED`, `ROLE_FORBIDDEN`,
|
|
9
|
+
* `PLAN_UPGRADE_REQUIRED`, `IMPERSONATION_READONLY`);
|
|
10
|
+
* - 404 missing order or worker (`TIP_ORDER_NOT_FOUND`, `TIP_RECIPIENT_NOT_FOUND`; the POST never
|
|
11
|
+
* answers `ORDER_NOT_FOUND`, only the re-sync read below does);
|
|
12
|
+
* - 409 order state, account, attempt or allocation conflicts (every other order/tip/attempt code);
|
|
13
|
+
* - 412 connection or configuration (`MP_NOT_CONNECTED`, `MP_TOKEN_EXPIRED`, `MP_USER_ID_MISSING`,
|
|
14
|
+
* `MP_NO_STORE_ON_ACCOUNT`);
|
|
15
|
+
* - 502 a definite POS or QR rejection (`MP_DYN_POS_CREATE_FAILED`, `MP_POS_INVALID`,
|
|
16
|
+
* `MP_DYN_QR_CREATE_FAILED`, `MP_DYN_QR_INVALID`);
|
|
17
|
+
* - 503 `PLATFORM_INTEGRATION_DISABLED`; 504 `MP_DYN_QR_UNCONFIRMED`, an unknown creation outcome.
|
|
18
|
+
* A thrown error answers `400 UNHANDLED_ERROR`, never a 500. The re-sync read
|
|
19
|
+
* (`GET /mercadopago/qr/dynamic?orderId=`) uses `VALIDATION_FAILED`, `PLAN_UPGRADE_REQUIRED`,
|
|
20
|
+
* `CAPABILITY_REQUIRED`, `ORDER_NOT_FOUND` and `ORDER_CANCELLED` from this list.
|
|
21
|
+
*
|
|
22
|
+
* Per Idempotency-Key on the tipped path: `MP_DYN_QR_IN_PROGRESS` = in flight
|
|
23
|
+
* (keep the key, poll); `MP_DYN_QR_REJECTED` = ended with no live charge (a
|
|
24
|
+
* fresh key is safe); `MP_DYN_QR_EXPIRED` = its QR expired (permanent for that
|
|
25
|
+
* key). A `contacting` attempt (MercadoPago may have been called) stays blocked
|
|
26
|
+
* indefinitely; a `reserved` one (provably never contacted) is released once it
|
|
27
|
+
* outlives the Lambda timeout. A fresh tipped reservation on an order already
|
|
28
|
+
* fully paid (till tenders plus linked payments cover its total, as its
|
|
29
|
+
* `financialStatus` derives) answers `PAYMENT_ALREADY_RECEIVED`; a part-paid
|
|
30
|
+
* order (a split) still mints the remainder. When a till tender or linked payment
|
|
31
|
+
* is in a currency the store holds no usable rate for, the paid sum is unknown, not
|
|
32
|
+
* paid: it answers `400 FX_CONVERSION_UNAVAILABLE` (configure the rate in Monedas,
|
|
33
|
+
* then retry with the same key).
|
|
34
|
+
* `MP_DYN_QR_INVALID` is untipped-only: on the tipped path a malformed 2xx is
|
|
35
|
+
* `MP_DYN_QR_UNCONFIRMED`. The retired `{ orderId }`-only body answers
|
|
36
|
+
* `VALIDATION_FAILED`. `INVALID_ORDER_STATE`, `ORDER_FX_RATE_UNAVAILABLE` and
|
|
37
|
+
* `ORDER_FX_AMOUNT_TOO_SMALL` were that body's alone and are no longer emitted;
|
|
38
|
+
* they stay listed so an existing client switch still compiles.
|
|
10
39
|
*/
|
|
11
40
|
exports.MP_DYNAMIC_QR_ERROR_CODES = [
|
|
12
41
|
'VALIDATION_FAILED',
|
|
@@ -40,6 +69,8 @@ exports.MP_DYNAMIC_QR_ERROR_CODES = [
|
|
|
40
69
|
'MP_DYN_QR_IN_PROGRESS',
|
|
41
70
|
'MP_DYN_QR_EXPIRED',
|
|
42
71
|
'MP_DYN_QR_UNCONFIRMED',
|
|
72
|
+
'MP_DYN_QR_REJECTED',
|
|
73
|
+
'FX_CONVERSION_UNAVAILABLE',
|
|
43
74
|
];
|
|
44
75
|
exports.MP_POINT_TIP_ERROR_CODES = [
|
|
45
76
|
'TIP_EXCEEDS_ORDER',
|
package/dist/customer.d.ts
CHANGED
|
@@ -554,6 +554,13 @@ declare global {
|
|
|
554
554
|
province: string;
|
|
555
555
|
postalCode: string;
|
|
556
556
|
};
|
|
557
|
+
/**
|
|
558
|
+
* Live storefront passkeys this customer holds. NEVER stored on the row:
|
|
559
|
+
* computed by the operator `GET /customers?customerId=` point read only, and
|
|
560
|
+
* absent when that count could not be read — absent means unknown, never
|
|
561
|
+
* zero. A count only; no credential id, key or label is served with it.
|
|
562
|
+
*/
|
|
563
|
+
passkeyCount?: number;
|
|
557
564
|
}
|
|
558
565
|
/**
|
|
559
566
|
* Every refusal `POST /customers { mode: 'data-export' | 'anonymize' }` and
|
|
@@ -1207,6 +1214,19 @@ declare global {
|
|
|
1207
1214
|
* operator handler additionally writes an un-deduped `ERROR` row.
|
|
1208
1215
|
*/
|
|
1209
1216
|
sessionRevocationComplete: boolean;
|
|
1217
|
+
/**
|
|
1218
|
+
* Storefront passkeys (`CUSTOMER_WEBAUTHN_CREDENTIAL#`) this erasure
|
|
1219
|
+
* revoked; every passkey `label` is removed with them. Optional only so the
|
|
1220
|
+
* field is additive — every erasure from this version on sets it.
|
|
1221
|
+
*/
|
|
1222
|
+
passkeysRevoked?: number;
|
|
1223
|
+
/**
|
|
1224
|
+
* `false` when the passkey partition could not be read or written to the
|
|
1225
|
+
* end, so a passkey may still sign in. BOTH erasure handlers write an
|
|
1226
|
+
* un-deduped `ERROR` row (`CUSTOMER_ANONYMIZE_PASSKEYS_INCOMPLETE`);
|
|
1227
|
+
* re-issuing the erasure re-runs the revocation. On BOTH wires.
|
|
1228
|
+
*/
|
|
1229
|
+
passkeyRevocationComplete?: boolean;
|
|
1210
1230
|
/**
|
|
1211
1231
|
* `ACCOUNT#` ledger rows whose denormalised `fullName` was removed by this
|
|
1212
1232
|
* erasure.
|
package/dist/mercadopago.d.ts
CHANGED
|
@@ -136,7 +136,58 @@ declare global {
|
|
|
136
136
|
expiresAt: number;
|
|
137
137
|
createdAt: number;
|
|
138
138
|
isNew: boolean;
|
|
139
|
+
/**
|
|
140
|
+
* Server clock (Unix ms) when this response was built. Present on the tipped
|
|
141
|
+
* create and replay; never persisted, so a replay carries the replay's instant.
|
|
142
|
+
* Estimate the client clock offset from this, not from `createdAt` (the
|
|
143
|
+
* reservation instant, taken before the POS lookup and the provider call).
|
|
144
|
+
*/
|
|
145
|
+
serverNow?: number;
|
|
139
146
|
}
|
|
147
|
+
/**
|
|
148
|
+
* `data` of `409 MP_DYN_QR_IN_PROGRESS`. `scope: 'attempt'` = this
|
|
149
|
+
* Idempotency-Key's own attempt is in flight; `'order'` = another identity
|
|
150
|
+
* holds the order's QR fence. `since` = the blocking attempt's reservation
|
|
151
|
+
* instant (absent only on a fence written before it was stamped). `expiresAt`
|
|
152
|
+
* only on `state: 'ready'` (an unexpired tipped QR), the instant the fence
|
|
153
|
+
* frees; `reserved`/`contacting` carry none.
|
|
154
|
+
*/
|
|
155
|
+
interface MpDynamicQrInProgressDetails {
|
|
156
|
+
serverNow: number;
|
|
157
|
+
scope: 'attempt' | 'order';
|
|
158
|
+
state: 'reserved' | 'contacting' | 'ready';
|
|
159
|
+
since?: number;
|
|
160
|
+
expiresAt?: number;
|
|
161
|
+
}
|
|
162
|
+
/** `data` of `409 MP_DYN_QR_EXPIRED`: the same key's saved QR expired at `expiresAt`. */
|
|
163
|
+
interface MpDynamicQrExpiredDetails {
|
|
164
|
+
serverNow: number;
|
|
165
|
+
expiresAt: number;
|
|
166
|
+
}
|
|
167
|
+
/** `data` of `409 MP_DYN_QR_REJECTED`: the same key's attempt ended with no live charge. */
|
|
168
|
+
interface MpDynamicQrRejectedDetails {
|
|
169
|
+
serverNow: number;
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* `data` of `GET /mercadopago/qr/dynamic?orderId=` — the re-sync read of the order's
|
|
173
|
+
* dynamic QR. Never carries the Idempotency-Key, owner, fingerprint or tip recipient.
|
|
174
|
+
* `ready` = an unexpired tipped QR (`qr.isNew` is always false); `pending` = an attempt
|
|
175
|
+
* holds the order's fence (`since` = its reservation instant; no `qrData`); `none` =
|
|
176
|
+
* nothing blocks the order.
|
|
177
|
+
*/
|
|
178
|
+
type MpDynamicQrStateResponse = {
|
|
179
|
+
state: 'ready';
|
|
180
|
+
qr: MpDynamicQrResponse;
|
|
181
|
+
serverNow: number;
|
|
182
|
+
} | {
|
|
183
|
+
state: 'pending';
|
|
184
|
+
phase: 'reserved' | 'contacting';
|
|
185
|
+
since?: number;
|
|
186
|
+
serverNow: number;
|
|
187
|
+
} | {
|
|
188
|
+
state: 'none';
|
|
189
|
+
serverNow: number;
|
|
190
|
+
};
|
|
140
191
|
type MpHookResult = 'config-missing' | 'test-event' | 'orphan' | 'duplicate' | 'not-approved' | 'item-saved' | 'error';
|
|
141
192
|
interface MpHookLogEntry {
|
|
142
193
|
hookId: string;
|
|
@@ -202,13 +253,42 @@ declare global {
|
|
|
202
253
|
}
|
|
203
254
|
}
|
|
204
255
|
/**
|
|
205
|
-
* Dynamic QR initiation refusals
|
|
206
|
-
* malformed
|
|
207
|
-
*
|
|
208
|
-
*
|
|
209
|
-
*
|
|
256
|
+
* Dynamic QR initiation refusals, by status:
|
|
257
|
+
* - 400 malformed request (`VALIDATION_FAILED`, `TIP_EXCEEDS_ORDER`, `TIP_ORDER_REQUIRED`), or an
|
|
258
|
+
* order whose paid sum cannot be converted for want of a usable rate (`FX_CONVERSION_UNAVAILABLE`);
|
|
259
|
+
* - 403 permission, plan or support session (`CAPABILITY_REQUIRED`, `ROLE_FORBIDDEN`,
|
|
260
|
+
* `PLAN_UPGRADE_REQUIRED`, `IMPERSONATION_READONLY`);
|
|
261
|
+
* - 404 missing order or worker (`TIP_ORDER_NOT_FOUND`, `TIP_RECIPIENT_NOT_FOUND`; the POST never
|
|
262
|
+
* answers `ORDER_NOT_FOUND`, only the re-sync read below does);
|
|
263
|
+
* - 409 order state, account, attempt or allocation conflicts (every other order/tip/attempt code);
|
|
264
|
+
* - 412 connection or configuration (`MP_NOT_CONNECTED`, `MP_TOKEN_EXPIRED`, `MP_USER_ID_MISSING`,
|
|
265
|
+
* `MP_NO_STORE_ON_ACCOUNT`);
|
|
266
|
+
* - 502 a definite POS or QR rejection (`MP_DYN_POS_CREATE_FAILED`, `MP_POS_INVALID`,
|
|
267
|
+
* `MP_DYN_QR_CREATE_FAILED`, `MP_DYN_QR_INVALID`);
|
|
268
|
+
* - 503 `PLATFORM_INTEGRATION_DISABLED`; 504 `MP_DYN_QR_UNCONFIRMED`, an unknown creation outcome.
|
|
269
|
+
* A thrown error answers `400 UNHANDLED_ERROR`, never a 500. The re-sync read
|
|
270
|
+
* (`GET /mercadopago/qr/dynamic?orderId=`) uses `VALIDATION_FAILED`, `PLAN_UPGRADE_REQUIRED`,
|
|
271
|
+
* `CAPABILITY_REQUIRED`, `ORDER_NOT_FOUND` and `ORDER_CANCELLED` from this list.
|
|
272
|
+
*
|
|
273
|
+
* Per Idempotency-Key on the tipped path: `MP_DYN_QR_IN_PROGRESS` = in flight
|
|
274
|
+
* (keep the key, poll); `MP_DYN_QR_REJECTED` = ended with no live charge (a
|
|
275
|
+
* fresh key is safe); `MP_DYN_QR_EXPIRED` = its QR expired (permanent for that
|
|
276
|
+
* key). A `contacting` attempt (MercadoPago may have been called) stays blocked
|
|
277
|
+
* indefinitely; a `reserved` one (provably never contacted) is released once it
|
|
278
|
+
* outlives the Lambda timeout. A fresh tipped reservation on an order already
|
|
279
|
+
* fully paid (till tenders plus linked payments cover its total, as its
|
|
280
|
+
* `financialStatus` derives) answers `PAYMENT_ALREADY_RECEIVED`; a part-paid
|
|
281
|
+
* order (a split) still mints the remainder. When a till tender or linked payment
|
|
282
|
+
* is in a currency the store holds no usable rate for, the paid sum is unknown, not
|
|
283
|
+
* paid: it answers `400 FX_CONVERSION_UNAVAILABLE` (configure the rate in Monedas,
|
|
284
|
+
* then retry with the same key).
|
|
285
|
+
* `MP_DYN_QR_INVALID` is untipped-only: on the tipped path a malformed 2xx is
|
|
286
|
+
* `MP_DYN_QR_UNCONFIRMED`. The retired `{ orderId }`-only body answers
|
|
287
|
+
* `VALIDATION_FAILED`. `INVALID_ORDER_STATE`, `ORDER_FX_RATE_UNAVAILABLE` and
|
|
288
|
+
* `ORDER_FX_AMOUNT_TOO_SMALL` were that body's alone and are no longer emitted;
|
|
289
|
+
* they stay listed so an existing client switch still compiles.
|
|
210
290
|
*/
|
|
211
|
-
export declare const MP_DYNAMIC_QR_ERROR_CODES: readonly ["VALIDATION_FAILED", "MP_NOT_CONNECTED", "MP_TOKEN_EXPIRED", "MP_USER_ID_MISSING", "MP_NO_STORE_ON_ACCOUNT", "MP_DYN_POS_CREATE_FAILED", "MP_POS_INVALID", "MP_DYN_QR_CREATE_FAILED", "MP_DYN_QR_INVALID", "PLATFORM_INTEGRATION_DISABLED", "PLAN_UPGRADE_REQUIRED", "ORDER_CANCELLED", "INVALID_ORDER_STATE", "PAYMENT_ALREADY_RECEIVED", "ORDER_NOT_FOUND", "ORDER_FX_RATE_UNAVAILABLE", "ORDER_FX_AMOUNT_TOO_SMALL", "CAPABILITY_REQUIRED", "ROLE_FORBIDDEN", "IMPERSONATION_READONLY", "TIP_EXCEEDS_ORDER", "TIP_RECIPIENT_NOT_FOUND", "TIP_ACCOUNT_UNVERIFIED", "TIP_SHARED_ACCOUNT_FORBIDDEN", "TIP_ORDER_REQUIRED", "TIP_ORDER_NOT_FOUND", "TIP_OPERATION_CONFLICT", "TIP_PAYMENT_NOT_FOUND", "MP_DYN_QR_IN_PROGRESS", "MP_DYN_QR_EXPIRED", "MP_DYN_QR_UNCONFIRMED"];
|
|
291
|
+
export declare const MP_DYNAMIC_QR_ERROR_CODES: readonly ["VALIDATION_FAILED", "MP_NOT_CONNECTED", "MP_TOKEN_EXPIRED", "MP_USER_ID_MISSING", "MP_NO_STORE_ON_ACCOUNT", "MP_DYN_POS_CREATE_FAILED", "MP_POS_INVALID", "MP_DYN_QR_CREATE_FAILED", "MP_DYN_QR_INVALID", "PLATFORM_INTEGRATION_DISABLED", "PLAN_UPGRADE_REQUIRED", "ORDER_CANCELLED", "INVALID_ORDER_STATE", "PAYMENT_ALREADY_RECEIVED", "ORDER_NOT_FOUND", "ORDER_FX_RATE_UNAVAILABLE", "ORDER_FX_AMOUNT_TOO_SMALL", "CAPABILITY_REQUIRED", "ROLE_FORBIDDEN", "IMPERSONATION_READONLY", "TIP_EXCEEDS_ORDER", "TIP_RECIPIENT_NOT_FOUND", "TIP_ACCOUNT_UNVERIFIED", "TIP_SHARED_ACCOUNT_FORBIDDEN", "TIP_ORDER_REQUIRED", "TIP_ORDER_NOT_FOUND", "TIP_OPERATION_CONFLICT", "TIP_PAYMENT_NOT_FOUND", "MP_DYN_QR_IN_PROGRESS", "MP_DYN_QR_EXPIRED", "MP_DYN_QR_UNCONFIRMED", "MP_DYN_QR_REJECTED", "FX_CONVERSION_UNAVAILABLE"];
|
|
212
292
|
export type MpDynamicQrErrorCode = (typeof MP_DYNAMIC_QR_ERROR_CODES)[number];
|
|
213
293
|
export declare const MP_POINT_TIP_ERROR_CODES: readonly ["TIP_EXCEEDS_ORDER", "VALIDATION_FAILED", "CAPABILITY_REQUIRED", "ROLE_FORBIDDEN", "PLAN_UPGRADE_REQUIRED", "TIP_RECIPIENT_NOT_FOUND", "TIP_ACCOUNT_UNVERIFIED", "TIP_SHARED_ACCOUNT_FORBIDDEN", "TIP_ORDER_REQUIRED", "TIP_ORDER_NOT_FOUND", "TIP_OPERATION_CONFLICT", "TIP_PAYMENT_MISMATCH", "TIP_PAYMENT_NOT_FOUND", "TIP_REFUND_EXCEEDS_ORDER"];
|
|
214
294
|
export type MpPointTipErrorCode = (typeof MP_POINT_TIP_ERROR_CODES)[number];
|
package/dist/mercadopago.js
CHANGED
|
@@ -1,9 +1,38 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Dynamic QR initiation refusals
|
|
3
|
-
* malformed
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
2
|
+
* Dynamic QR initiation refusals, by status:
|
|
3
|
+
* - 400 malformed request (`VALIDATION_FAILED`, `TIP_EXCEEDS_ORDER`, `TIP_ORDER_REQUIRED`), or an
|
|
4
|
+
* order whose paid sum cannot be converted for want of a usable rate (`FX_CONVERSION_UNAVAILABLE`);
|
|
5
|
+
* - 403 permission, plan or support session (`CAPABILITY_REQUIRED`, `ROLE_FORBIDDEN`,
|
|
6
|
+
* `PLAN_UPGRADE_REQUIRED`, `IMPERSONATION_READONLY`);
|
|
7
|
+
* - 404 missing order or worker (`TIP_ORDER_NOT_FOUND`, `TIP_RECIPIENT_NOT_FOUND`; the POST never
|
|
8
|
+
* answers `ORDER_NOT_FOUND`, only the re-sync read below does);
|
|
9
|
+
* - 409 order state, account, attempt or allocation conflicts (every other order/tip/attempt code);
|
|
10
|
+
* - 412 connection or configuration (`MP_NOT_CONNECTED`, `MP_TOKEN_EXPIRED`, `MP_USER_ID_MISSING`,
|
|
11
|
+
* `MP_NO_STORE_ON_ACCOUNT`);
|
|
12
|
+
* - 502 a definite POS or QR rejection (`MP_DYN_POS_CREATE_FAILED`, `MP_POS_INVALID`,
|
|
13
|
+
* `MP_DYN_QR_CREATE_FAILED`, `MP_DYN_QR_INVALID`);
|
|
14
|
+
* - 503 `PLATFORM_INTEGRATION_DISABLED`; 504 `MP_DYN_QR_UNCONFIRMED`, an unknown creation outcome.
|
|
15
|
+
* A thrown error answers `400 UNHANDLED_ERROR`, never a 500. The re-sync read
|
|
16
|
+
* (`GET /mercadopago/qr/dynamic?orderId=`) uses `VALIDATION_FAILED`, `PLAN_UPGRADE_REQUIRED`,
|
|
17
|
+
* `CAPABILITY_REQUIRED`, `ORDER_NOT_FOUND` and `ORDER_CANCELLED` from this list.
|
|
18
|
+
*
|
|
19
|
+
* Per Idempotency-Key on the tipped path: `MP_DYN_QR_IN_PROGRESS` = in flight
|
|
20
|
+
* (keep the key, poll); `MP_DYN_QR_REJECTED` = ended with no live charge (a
|
|
21
|
+
* fresh key is safe); `MP_DYN_QR_EXPIRED` = its QR expired (permanent for that
|
|
22
|
+
* key). A `contacting` attempt (MercadoPago may have been called) stays blocked
|
|
23
|
+
* indefinitely; a `reserved` one (provably never contacted) is released once it
|
|
24
|
+
* outlives the Lambda timeout. A fresh tipped reservation on an order already
|
|
25
|
+
* fully paid (till tenders plus linked payments cover its total, as its
|
|
26
|
+
* `financialStatus` derives) answers `PAYMENT_ALREADY_RECEIVED`; a part-paid
|
|
27
|
+
* order (a split) still mints the remainder. When a till tender or linked payment
|
|
28
|
+
* is in a currency the store holds no usable rate for, the paid sum is unknown, not
|
|
29
|
+
* paid: it answers `400 FX_CONVERSION_UNAVAILABLE` (configure the rate in Monedas,
|
|
30
|
+
* then retry with the same key).
|
|
31
|
+
* `MP_DYN_QR_INVALID` is untipped-only: on the tipped path a malformed 2xx is
|
|
32
|
+
* `MP_DYN_QR_UNCONFIRMED`. The retired `{ orderId }`-only body answers
|
|
33
|
+
* `VALIDATION_FAILED`. `INVALID_ORDER_STATE`, `ORDER_FX_RATE_UNAVAILABLE` and
|
|
34
|
+
* `ORDER_FX_AMOUNT_TOO_SMALL` were that body's alone and are no longer emitted;
|
|
35
|
+
* they stay listed so an existing client switch still compiles.
|
|
7
36
|
*/
|
|
8
37
|
export const MP_DYNAMIC_QR_ERROR_CODES = [
|
|
9
38
|
'VALIDATION_FAILED',
|
|
@@ -37,6 +66,8 @@ export const MP_DYNAMIC_QR_ERROR_CODES = [
|
|
|
37
66
|
'MP_DYN_QR_IN_PROGRESS',
|
|
38
67
|
'MP_DYN_QR_EXPIRED',
|
|
39
68
|
'MP_DYN_QR_UNCONFIRMED',
|
|
69
|
+
'MP_DYN_QR_REJECTED',
|
|
70
|
+
'FX_CONVERSION_UNAVAILABLE',
|
|
40
71
|
];
|
|
41
72
|
export const MP_POINT_TIP_ERROR_CODES = [
|
|
42
73
|
'TIP_EXCEEDS_ORDER',
|
package/dist/order.d.ts
CHANGED
|
@@ -98,15 +98,18 @@ declare global {
|
|
|
98
98
|
* ⚠️ `'email'` here is what `CustomerSignInProvider` spells
|
|
99
99
|
* `'password'`; the other members share their spelling. Neither value is
|
|
100
100
|
* assignable to the other's slot — map across explicitly.
|
|
101
|
+
*
|
|
102
|
+
* `'passkey'` is a storefront passkey sign-in. It is a sign-IN member
|
|
103
|
+
* only: a passkey is registered from an existing session, so
|
|
104
|
+
* `Customer Signed Up` never carries it.
|
|
101
105
|
*/
|
|
102
|
-
method: 'email' | 'google' | 'facebook' | 'apple';
|
|
106
|
+
method: 'email' | 'google' | 'facebook' | 'apple' | 'passkey';
|
|
103
107
|
}
|
|
104
108
|
interface CustomerSignedUpEvent extends StorefrontEventBase {
|
|
105
109
|
event: 'Customer Signed Up';
|
|
106
110
|
/**
|
|
107
|
-
*
|
|
108
|
-
*
|
|
109
|
-
* without splitting it.
|
|
111
|
+
* The sign-in twin's union minus `'passkey'` — a passkey is registered
|
|
112
|
+
* from an existing session, never at sign-up.
|
|
110
113
|
*
|
|
111
114
|
* ⚠️ Only `'email'` is emitted today — registration is api-side and has
|
|
112
115
|
* no social leg. The social members are reachable shape, not observed
|
package/dist/userActivity.d.ts
CHANGED
|
@@ -160,6 +160,17 @@ declare global {
|
|
|
160
160
|
trigger: 'self' | 'two-factor-disabled' | 'two-factor-reset';
|
|
161
161
|
target_user_id?: string;
|
|
162
162
|
}
|
|
163
|
+
/**
|
|
164
|
+
* A staff member removed a storefront customer's passkeys — `POST /customers`
|
|
165
|
+
* mode `revoke-passkeys`. Operator-on-customer: `user_id`/`actor_*` are the
|
|
166
|
+
* operator, `customer_id` the customer. `revoked_count` is how many live
|
|
167
|
+
* passkeys this action retracted. Carries no credential id, label or host.
|
|
168
|
+
*/
|
|
169
|
+
interface CustomerPasskeysRevokedEvent extends UserActivityEventBase {
|
|
170
|
+
event: 'Customer Passkeys Revoked';
|
|
171
|
+
customer_id: string;
|
|
172
|
+
revoked_count: number;
|
|
173
|
+
}
|
|
163
174
|
interface StoreSettingsUpdatedEvent extends UserActivityEventBase {
|
|
164
175
|
event: 'Store Settings Updated';
|
|
165
176
|
section: string;
|
|
@@ -1317,7 +1328,7 @@ declare global {
|
|
|
1317
1328
|
carrier?: string;
|
|
1318
1329
|
tracking_set: boolean;
|
|
1319
1330
|
}
|
|
1320
|
-
type UserActivityEvent = CustomerConsentImportedEvent | CustomerConsentImportCompletedEvent | UserLoggedInEvent | UserLoggedOutEvent | UserPasswordChangedEvent | UserSuspendedEvent | TwoFactorEnrolledEvent | TwoFactorDisabledEvent | TwoFactorResetEvent | TwoFactorRecoveryCodesGeneratedEvent | PasskeyRegisteredEvent | PasskeyRevokedEvent | StoreSettingsUpdatedEvent | PlanChangedEvent | InvoiceCreatedEvent | OrderCreatedEvent | OrderCancelledEvent | OrderEditedEvent | OrderReturnedEvent | ReturnLineRegradedEvent | ProductPriceChangedEvent | CustomerCreatedEvent | CustomerEditedEvent | CustomerRecordServedEvent | CustomerCreditCheckPerformedEvent | CustomersMergedEvent | CustomerMergeCancelledEvent | CashDrawerOpenedEvent | CashDrawerClosedEvent | TenantImpersonatedEvent | SecretRotatedEvent | UserCreatedEvent | UserUpdatedEvent | ProductCreatedEvent | ProductUpdatedEvent | StockIncomeCreatedEvent | StockAdjustedEvent | CategoryCreatedEvent | CategoryUpdatedEvent | BrandCreatedEvent | BrandUpdatedEvent | SupplierCreatedEvent | SupplierUpdatedEvent | SupplierInvoiceCreatedEvent | SupplierInvoiceMatchOverriddenEvent | SupplierClaimRaisedEvent | SupplierClaimStatusChangedEvent | SupplierAccountCreatedEvent | SupplierAccountUpdatedEvent | AccountCreatedEvent | AccountDeletedEvent | CustomerBalanceReprojectedEvent | BasketUpdatedEvent | BasketDiscountGrantedEvent | BasketDeletedEvent | CashDrawerMovementEvent | CashDrawerReconciledEvent | PaymentCreatedEvent | PaymentLinkedEvent | PaymentUnlinkedEvent | PaymentLinkageUpdatedEvent | CreditLimitOverriddenEvent | AppointmentSelfBookingBlockOverriddenEvent | AppointmentSelfBookingBlockLiftedEvent | NotificationReadEvent | LogDeletedEvent | PlanCreatedEvent | StoreMaintenanceToggledEvent | PlatformMaintenanceToggledEvent | MaintenanceBroadcastSentEvent | TenantCreatedEvent | LiteralUpdatedEvent | SupportTicketCreatedEvent | SupportTicketUpdatedEvent | AuditTrailViewedEvent | ReportViewedEvent | CustomerPiiViewedEvent | CashDrawerUiOpenedEvent | CashDrawerUiClosedEvent | ExportInitiatedEvent | ImpersonationUiStartedEvent | ImpersonationUiEndedEvent | PaymentViewedEvent | InvoiceViewedEvent | CustomerDetailViewedEvent | SupplierAccountViewedEvent | SearchPerformedEvent | ActionDeniedEvent | TwoFactorChallengeShownEvent | TwoFactorCodeValidationFailedEvent | TwoFactorEnrollmentStartedEvent | TwoFactorRecoveryCodesRevealedEvent | TwoFactorResetInitiatedEvent | IntegrationTokenRefreshedEvent | WaitlistConvertedEvent | PlatformConfigUpdatedEvent | MlChannelStatusChangedEvent | IntegrationConnectionChangedEvent | PrintRuleCreatedEvent | PrintRuleEditedEvent | PrintRuleDeletedEvent | WebhookCreatedEvent | WebhookUpdatedEvent | WebhookDeletedEvent | PrinterActiveToggledEvent | PrinterRawFormatsUpdatedEvent | PrinterProfileUpdatedEvent | PlanTemplateUpdatedEvent | SupplierAccountDeletedEvent | CustomerPasswordResetInitiatedEvent | UserSessionsRevokedEvent | UserAnonymizedEvent | UserPasswordResetInitiatedByOperatorEvent | AgentCommandDispatchedEvent | PrintJobCancelledEvent | PrintAgentPairingCodeMintedEvent | PrintAgentPairedEvent | PrintAgentRevokedEvent | RmaRequestedEvent | RmaTransitionedEvent | RmaTrackingUpdatedEvent | ClockedInEvent | ClockedOutEvent | AttendanceCorrectedEvent;
|
|
1331
|
+
type UserActivityEvent = CustomerConsentImportedEvent | CustomerConsentImportCompletedEvent | UserLoggedInEvent | UserLoggedOutEvent | UserPasswordChangedEvent | UserSuspendedEvent | TwoFactorEnrolledEvent | TwoFactorDisabledEvent | TwoFactorResetEvent | TwoFactorRecoveryCodesGeneratedEvent | PasskeyRegisteredEvent | PasskeyRevokedEvent | CustomerPasskeysRevokedEvent | StoreSettingsUpdatedEvent | PlanChangedEvent | InvoiceCreatedEvent | OrderCreatedEvent | OrderCancelledEvent | OrderEditedEvent | OrderReturnedEvent | ReturnLineRegradedEvent | ProductPriceChangedEvent | CustomerCreatedEvent | CustomerEditedEvent | CustomerRecordServedEvent | CustomerCreditCheckPerformedEvent | CustomersMergedEvent | CustomerMergeCancelledEvent | CashDrawerOpenedEvent | CashDrawerClosedEvent | TenantImpersonatedEvent | SecretRotatedEvent | UserCreatedEvent | UserUpdatedEvent | ProductCreatedEvent | ProductUpdatedEvent | StockIncomeCreatedEvent | StockAdjustedEvent | CategoryCreatedEvent | CategoryUpdatedEvent | BrandCreatedEvent | BrandUpdatedEvent | SupplierCreatedEvent | SupplierUpdatedEvent | SupplierInvoiceCreatedEvent | SupplierInvoiceMatchOverriddenEvent | SupplierClaimRaisedEvent | SupplierClaimStatusChangedEvent | SupplierAccountCreatedEvent | SupplierAccountUpdatedEvent | AccountCreatedEvent | AccountDeletedEvent | CustomerBalanceReprojectedEvent | BasketUpdatedEvent | BasketDiscountGrantedEvent | BasketDeletedEvent | CashDrawerMovementEvent | CashDrawerReconciledEvent | PaymentCreatedEvent | PaymentLinkedEvent | PaymentUnlinkedEvent | PaymentLinkageUpdatedEvent | CreditLimitOverriddenEvent | AppointmentSelfBookingBlockOverriddenEvent | AppointmentSelfBookingBlockLiftedEvent | NotificationReadEvent | LogDeletedEvent | PlanCreatedEvent | StoreMaintenanceToggledEvent | PlatformMaintenanceToggledEvent | MaintenanceBroadcastSentEvent | TenantCreatedEvent | LiteralUpdatedEvent | SupportTicketCreatedEvent | SupportTicketUpdatedEvent | AuditTrailViewedEvent | ReportViewedEvent | CustomerPiiViewedEvent | CashDrawerUiOpenedEvent | CashDrawerUiClosedEvent | ExportInitiatedEvent | ImpersonationUiStartedEvent | ImpersonationUiEndedEvent | PaymentViewedEvent | InvoiceViewedEvent | CustomerDetailViewedEvent | SupplierAccountViewedEvent | SearchPerformedEvent | ActionDeniedEvent | TwoFactorChallengeShownEvent | TwoFactorCodeValidationFailedEvent | TwoFactorEnrollmentStartedEvent | TwoFactorRecoveryCodesRevealedEvent | TwoFactorResetInitiatedEvent | IntegrationTokenRefreshedEvent | WaitlistConvertedEvent | PlatformConfigUpdatedEvent | MlChannelStatusChangedEvent | IntegrationConnectionChangedEvent | PrintRuleCreatedEvent | PrintRuleEditedEvent | PrintRuleDeletedEvent | WebhookCreatedEvent | WebhookUpdatedEvent | WebhookDeletedEvent | PrinterActiveToggledEvent | PrinterRawFormatsUpdatedEvent | PrinterProfileUpdatedEvent | PlanTemplateUpdatedEvent | SupplierAccountDeletedEvent | CustomerPasswordResetInitiatedEvent | UserSessionsRevokedEvent | UserAnonymizedEvent | UserPasswordResetInitiatedByOperatorEvent | AgentCommandDispatchedEvent | PrintJobCancelledEvent | PrintAgentPairingCodeMintedEvent | PrintAgentPairedEvent | PrintAgentRevokedEvent | RmaRequestedEvent | RmaTransitionedEvent | RmaTrackingUpdatedEvent | ClockedInEvent | ClockedOutEvent | AttendanceCorrectedEvent;
|
|
1321
1332
|
}
|
|
1322
1333
|
/**
|
|
1323
1334
|
* Canonical whitelist of UI-only `UserActivityEvent` variant names. Imported by
|