@sixtyninecommerce/admin 0.7.0 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (161) hide show
  1. package/README.md +2445 -17
  2. package/dist/api-tokens/index.d.ts +15 -5
  3. package/dist/api-tokens/index.js +1 -0
  4. package/dist/apps/event-subscription.d.ts +59 -0
  5. package/dist/apps/event-subscription.js +32 -0
  6. package/dist/apps/hook-secret.d.ts +22 -0
  7. package/dist/apps/hook-secret.js +36 -0
  8. package/dist/apps/index.d.ts +54 -3
  9. package/dist/apps/index.js +17 -0
  10. package/dist/audit/index.d.ts +7 -0
  11. package/dist/auth/queries.d.ts +5 -1
  12. package/dist/auth/queries.js +6 -0
  13. package/dist/bulk/index.d.ts +323 -0
  14. package/dist/bulk/index.js +162 -0
  15. package/dist/catalog/assets.d.ts +147 -0
  16. package/dist/catalog/assets.js +164 -0
  17. package/dist/catalog/collections.d.ts +109 -0
  18. package/dist/catalog/collections.js +91 -0
  19. package/dist/catalog/facets.d.ts +103 -0
  20. package/dist/catalog/facets.js +100 -0
  21. package/dist/catalog/index.d.ts +115 -0
  22. package/dist/catalog/index.js +21 -0
  23. package/dist/catalog/options.d.ts +89 -0
  24. package/dist/catalog/options.js +88 -0
  25. package/dist/catalog/products-bulk.d.ts +21 -0
  26. package/dist/catalog/products-bulk.js +58 -0
  27. package/dist/catalog/products.d.ts +489 -0
  28. package/dist/catalog/products.js +365 -0
  29. package/dist/catalog/properties.d.ts +234 -0
  30. package/dist/catalog/properties.js +158 -0
  31. package/dist/catalog/types.d.ts +174 -0
  32. package/dist/catalog/types.js +141 -0
  33. package/dist/catalog/variants.d.ts +274 -0
  34. package/dist/catalog/variants.js +258 -0
  35. package/dist/catalog/visibility.d.ts +57 -0
  36. package/dist/catalog/visibility.js +59 -0
  37. package/dist/client.d.ts +171 -3
  38. package/dist/client.js +81 -12
  39. package/dist/compliance/index.d.ts +88 -0
  40. package/dist/compliance/index.js +88 -0
  41. package/dist/customer-data-redaction.d.ts +14 -0
  42. package/dist/customer-data-redaction.js +22 -0
  43. package/dist/customers/index.d.ts +428 -17
  44. package/dist/customers/index.js +322 -15
  45. package/dist/documents/index.d.ts +513 -16
  46. package/dist/documents/index.js +229 -3
  47. package/dist/events/index.d.ts +259 -0
  48. package/dist/events/index.js +147 -0
  49. package/dist/feeds/ai.d.ts +46 -0
  50. package/dist/feeds/ai.js +43 -0
  51. package/dist/feeds/categories.d.ts +50 -0
  52. package/dist/feeds/categories.js +56 -0
  53. package/dist/feeds/configs.d.ts +54 -0
  54. package/dist/feeds/configs.js +85 -0
  55. package/dist/feeds/identifier-fields.d.ts +25 -0
  56. package/dist/feeds/identifier-fields.js +29 -0
  57. package/dist/feeds/index.d.ts +54 -0
  58. package/dist/feeds/index.js +46 -0
  59. package/dist/feeds/preserve.d.ts +38 -0
  60. package/dist/feeds/preserve.js +74 -0
  61. package/dist/feeds/rules.d.ts +42 -0
  62. package/dist/feeds/rules.js +56 -0
  63. package/dist/feeds/types.d.ts +654 -0
  64. package/dist/feeds/types.js +135 -0
  65. package/dist/fulfillments/index.d.ts +360 -0
  66. package/dist/fulfillments/index.js +425 -0
  67. package/dist/heads/index.d.ts +60 -0
  68. package/dist/heads/index.js +45 -0
  69. package/dist/hooks/assignments.d.ts +90 -0
  70. package/dist/hooks/assignments.js +53 -0
  71. package/dist/hooks/index.d.ts +97 -0
  72. package/dist/hooks/index.js +76 -0
  73. package/dist/index.d.ts +84 -9
  74. package/dist/index.js +16 -1
  75. package/dist/jobs/bulk-action-run.d.ts +65 -0
  76. package/dist/jobs/bulk-action-run.js +70 -0
  77. package/dist/locations/index.d.ts +6 -2
  78. package/dist/meta/index.d.ts +32 -0
  79. package/dist/orders/commit-edit.d.ts +123 -0
  80. package/dist/orders/commit-edit.js +142 -0
  81. package/dist/orders/get.d.ts +722 -0
  82. package/dist/orders/get.js +530 -0
  83. package/dist/orders/index.d.ts +105 -20
  84. package/dist/orders/index.js +44 -0
  85. package/dist/orders/line-price-preview.d.ts +297 -0
  86. package/dist/orders/line-price-preview.js +50 -0
  87. package/dist/orders/manual-discounts.d.ts +132 -0
  88. package/dist/orders/manual-discounts.js +95 -0
  89. package/dist/orders/manual-pricing.d.ts +192 -0
  90. package/dist/orders/manual-pricing.js +72 -0
  91. package/dist/orders/order-entry.d.ts +566 -0
  92. package/dist/orders/order-entry.js +129 -0
  93. package/dist/orders/parcel-charge.d.ts +45 -0
  94. package/dist/orders/parcel-charge.js +55 -0
  95. package/dist/orders/plan-edit.d.ts +489 -0
  96. package/dist/orders/plan-edit.js +93 -0
  97. package/dist/orders/status.d.ts +235 -0
  98. package/dist/orders/status.js +96 -0
  99. package/dist/orders/surcharges.d.ts +75 -2
  100. package/dist/orders/surcharges.js +110 -4
  101. package/dist/payments/account-credit.d.ts +171 -0
  102. package/dist/payments/account-credit.js +107 -0
  103. package/dist/payments/index.d.ts +368 -2
  104. package/dist/payments/index.js +138 -0
  105. package/dist/platform/catalog.d.ts +148 -0
  106. package/dist/platform/catalog.js +74 -0
  107. package/dist/platform/entitlements.d.ts +111 -0
  108. package/dist/platform/entitlements.js +86 -0
  109. package/dist/platform/legal-entities.d.ts +139 -0
  110. package/dist/platform/legal-entities.js +126 -0
  111. package/dist/platform/legal-entity-numbering.d.ts +103 -0
  112. package/dist/platform/legal-entity-numbering.js +101 -0
  113. package/dist/platform/organization-membership.d.ts +80 -0
  114. package/dist/platform/organization-membership.js +71 -0
  115. package/dist/platform/organization-settings.d.ts +33 -0
  116. package/dist/platform/organization-settings.js +42 -0
  117. package/dist/platform/organization-sharing.d.ts +172 -0
  118. package/dist/platform/organization-sharing.js +120 -0
  119. package/dist/platform/organizations.d.ts +205 -0
  120. package/dist/platform/organizations.js +180 -0
  121. package/dist/platform/provision-store.d.ts +88 -8
  122. package/dist/platform/provision-store.js +12 -0
  123. package/dist/platform/reports.d.ts +46 -0
  124. package/dist/platform/reports.js +31 -0
  125. package/dist/platform/server-metrics.d.ts +58 -0
  126. package/dist/platform/server-metrics.js +11 -0
  127. package/dist/pos/index.d.ts +567 -0
  128. package/dist/pos/index.js +205 -0
  129. package/dist/pricing/index.d.ts +405 -0
  130. package/dist/pricing/index.js +351 -0
  131. package/dist/provenance/index.d.ts +93 -0
  132. package/dist/provenance/index.js +53 -0
  133. package/dist/reports/index.d.ts +199 -0
  134. package/dist/reports/index.js +154 -0
  135. package/dist/shipping/parcel-count-suggestion.d.ts +52 -0
  136. package/dist/shipping/parcel-count-suggestion.js +73 -0
  137. package/dist/shipping/parcel-rule.d.ts +48 -0
  138. package/dist/shipping/parcel-rule.js +91 -0
  139. package/dist/stock/index.d.ts +166 -0
  140. package/dist/stock/index.js +115 -0
  141. package/dist/stock/transfers.d.ts +520 -0
  142. package/dist/stock/transfers.js +437 -0
  143. package/dist/stored-value/index.d.ts +154 -0
  144. package/dist/stored-value/index.js +130 -0
  145. package/dist/tenant/capabilities.d.ts +10 -0
  146. package/dist/tenant/entitlements.d.ts +35 -0
  147. package/dist/tenant/entitlements.js +15 -0
  148. package/dist/tenant/field-groups.d.ts +64 -0
  149. package/dist/tenant/field-groups.js +34 -0
  150. package/dist/tenant/legal-entity.d.ts +32 -0
  151. package/dist/tenant/legal-entity.js +41 -0
  152. package/dist/tenant/notifications.d.ts +148 -0
  153. package/dist/tenant/notifications.js +79 -0
  154. package/dist/tenant/retention.d.ts +10 -4
  155. package/dist/tenant/settings-sources.d.ts +103 -0
  156. package/dist/tenant/settings-sources.js +92 -0
  157. package/dist/types.d.ts +86 -11
  158. package/dist/uploads/index.d.ts +11 -7
  159. package/dist/users/index.d.ts +104 -0
  160. package/dist/users/index.js +80 -0
  161. package/package.json +3 -2
@@ -0,0 +1,171 @@
1
+ import type { Transport } from '@sixtyninecommerce/core';
2
+ import type { Call } from '../types.js';
3
+ /**
4
+ * Unapplied cash: money a customer paid on an order OVER what the order bills,
5
+ * moved to their account and held there until it pays an invoice or is paid
6
+ * back. Never a credit note: nothing that was billed is credited.
7
+ *
8
+ * Every amount is in minor units of `currencyCode`, and
9
+ * `amount = applied + refunded + remaining`.
10
+ */
11
+ export interface UnappliedCash {
12
+ id: string;
13
+ customerId: string;
14
+ /** The currency of the payment the money came from: its order's. */
15
+ currencyCode: string;
16
+ /** What was moved to the account. */
17
+ amount: number;
18
+ /** What of it has paid invoices. */
19
+ applied: number;
20
+ /** What of it was paid back to the customer. */
21
+ refunded: number;
22
+ /** What is still on the account, applied to nothing. */
23
+ remaining: number;
24
+ /** The order the money was paid on. */
25
+ orderId: string;
26
+ /** The payment of that order it was taken from. */
27
+ paymentId: string;
28
+ /** Date only (`YYYY-MM-DD`). */
29
+ receivedOn: string;
30
+ reference: string | null;
31
+ /** The reason given when the money was moved. */
32
+ notes: string | null;
33
+ /** ISO-8601 with offset. */
34
+ createdAt: string;
35
+ }
36
+ export interface CreditOverpaymentInput {
37
+ orderId: string;
38
+ /**
39
+ * Minor units of the order's currency. Omit it to move everything the order
40
+ * holds over what it bills.
41
+ */
42
+ amount?: number;
43
+ /** Why, in your own words: shown on the receipt and in the order's history. */
44
+ reason?: string;
45
+ }
46
+ export interface ApplyUnappliedCashInput {
47
+ unappliedCashId: string;
48
+ /** The AR invoice to pay. Give exactly one of `invoiceId` and `orderId`. */
49
+ invoiceId?: string;
50
+ /** An order, paid through the live AR invoice that bills it. */
51
+ orderId?: string;
52
+ /**
53
+ * Minor units. Omit it to apply as much as fits: the lesser of what the cash
54
+ * still holds and what the invoice still owes.
55
+ */
56
+ amount?: number;
57
+ }
58
+ export interface RefundUnappliedCashInput {
59
+ unappliedCashId: string;
60
+ /** Minor units. Omit it to pay back everything the cash still holds. */
61
+ amount?: number;
62
+ /** Free text stored on the refund. Shown to nobody automatically. */
63
+ reason?: string;
64
+ }
65
+ /** A payout's refund, as this surface projects it. */
66
+ export interface UnappliedCashRefund {
67
+ id: string;
68
+ /** Minor units. */
69
+ total: number;
70
+ /** `Pending`, `Settled` or `Failed`. */
71
+ state: string;
72
+ method: string | null;
73
+ transactionId: string | null;
74
+ reason: string | null;
75
+ }
76
+ /** What of an order's money is on its customer's account now. */
77
+ export interface OrderMoneyOnAccount {
78
+ /** The order's currency. Every amount here is in its minor units. */
79
+ currencyCode: string;
80
+ /**
81
+ * Money that left the order for the customer's account and was not paid back
82
+ * since. Already taken off the order's `refundable` and `overpaid`.
83
+ */
84
+ creditedToAccount: number;
85
+ /** The same figure per payment of the order, newest first. */
86
+ perPayment: Array<{
87
+ paymentId: string;
88
+ creditedToAccount: number;
89
+ }>;
90
+ }
91
+ /**
92
+ * An order's overpayment on the customer's account (`admin.payments.accountCredit`).
93
+ *
94
+ * For a store that keeps its own accounts-receivable ledger and a customer with
95
+ * a credit account in it. Anywhere else an overpayment is refunded: the calls
96
+ * here are refused `AR_LEDGER_NOT_ENABLED`, `AR_ACCOUNT_REQUIRED` or
97
+ * `AR_ACCOUNT_IN_ERP`. The last one covers every customer of a store whose ERP
98
+ * integration is on, and any ERP-linked account: balances are kept in the ERP
99
+ * there, where a credit recorded here would not show.
100
+ *
101
+ * Needs `UpdateOrder` to write, `ReadOrder` to read. Every write honours
102
+ * `options.idempotencyKey`: a repeat under the same key answers the first
103
+ * call's result instead of running again.
104
+ */
105
+ export interface AccountCreditModule {
106
+ /**
107
+ * Move money a customer paid on an order over what it bills onto their
108
+ * account. Answers one {@link UnappliedCash} per payment the money came from,
109
+ * newest payment first.
110
+ *
111
+ * Only money a settled payment still holds can move, net of every refund and
112
+ * of what was moved before, and at most what the order holds over its
113
+ * billable total. From then on that money is no longer the order's:
114
+ * `payments.refundPosition` takes it off `refundable` and `payments.position`
115
+ * no longer reports it as `overpaid` (read it with {@link onOrder}).
116
+ *
117
+ * An order that is already on a live AR invoice is refused
118
+ * `AR_ORDER_ALREADY_INVOICED`: refund its overpayment with `payments.refund`.
119
+ *
120
+ * Other refusals: `ACCOUNT_CREDIT_NOTHING_OVERPAID`,
121
+ * `ACCOUNT_CREDIT_EXCEEDS_OVERPAYMENT`, `ACCOUNT_CREDIT_AMOUNT_INVALID`,
122
+ * `ACCOUNT_CREDIT_NO_CUSTOMER`, `ACCOUNT_CREDIT_ORDER_NOT_FOUND`, and the three
123
+ * account refusals above.
124
+ */
125
+ creditOverpayment(input: CreditOverpaymentInput, options?: Call): Promise<UnappliedCash[]>;
126
+ /** A customer's unapplied cash in this store, oldest first. */
127
+ list(customerId: string, options?: Call): Promise<UnappliedCash[]>;
128
+ /**
129
+ * Pay an AR invoice with unapplied cash. The customer's balance does not
130
+ * move: the cash was already theirs.
131
+ *
132
+ * The invoice must be the same customer's, in the same currency, live and
133
+ * still owing. Refusals: `AR_INVOICE_NOT_FOUND`, `AR_CURRENCY_MISMATCH`,
134
+ * `AR_INVOICE_NOT_OPEN`, `AR_ORDER_NOT_INVOICED` (an order with no live
135
+ * invoice: invoice it first), `UNAPPLIED_CASH_EXCEEDED`,
136
+ * `UNAPPLIED_CASH_NOT_FOUND`, `UNAPPLIED_CASH_REFUND_UNRECONCILED` (a payout
137
+ * of the same cash has an unknown outcome), `AR_LEDGER_NOT_ENABLED`.
138
+ */
139
+ apply(input: ApplyUnappliedCashInput, options?: Call): Promise<UnappliedCash>;
140
+ /**
141
+ * Pay unapplied cash back to the customer: a refund of the payment it was
142
+ * taken from, with `payments.refund`'s rules and refusals. When one refuses,
143
+ * nothing has changed.
144
+ *
145
+ * At most what the cash still holds, and at most what the customer's account
146
+ * is in credit by in that currency (`UNAPPLIED_CASH_EXCEEDED`): cash is
147
+ * applied to what a customer owes before it is paid out.
148
+ *
149
+ * **`IDEMPOTENCY_OUTCOME_UNKNOWN`** means the payment provider was asked and
150
+ * never confirmed. The cash STAYS on the account and is frozen
151
+ * (`UNAPPLIED_CASH_REFUND_UNRECONCILED`). Find the attempt with
152
+ * `payments.unreconciledRefunds(orderId)`, check the provider, and record its
153
+ * answer with `payments.reconcileRefund(...)`: `MADE` takes the cash off the
154
+ * account then, `NOT_MADE` unfreezes it. Never pay out again on the
155
+ * assumption that nothing happened.
156
+ */
157
+ refund(input: RefundUnappliedCashInput, options?: Call): Promise<UnappliedCashRefund>;
158
+ /** What of an order's money is on its customer's account now. Needs `ReadOrder`. */
159
+ onOrder(orderId: string, options?: Call): Promise<OrderMoneyOnAccount>;
160
+ }
161
+ export declare const CREDIT_ORDER_OVERPAYMENT_MUTATION = "\n mutation CreditOrderOverpaymentToAccount(\n $input: CreditOrderOverpaymentInput!\n $idempotencyKey: String\n ) {\n creditOrderOverpaymentToAccount(input: $input, idempotencyKey: $idempotencyKey) {\n \n id\n customerId\n currencyCode\n amount\n applied\n refunded\n remaining\n orderId\n paymentId\n receivedOn\n reference\n notes\n createdAt\n\n }\n }\n";
162
+ export declare const UNAPPLIED_CASH_QUERY = "\n query ArUnappliedCash($customerId: ID!) {\n arUnappliedCash(customerId: $customerId) {\n \n id\n customerId\n currencyCode\n amount\n applied\n refunded\n remaining\n orderId\n paymentId\n receivedOn\n reference\n notes\n createdAt\n\n }\n }\n";
163
+ export declare const APPLY_UNAPPLIED_CASH_MUTATION = "\n mutation ApplyArUnappliedCash($input: ApplyArUnappliedCashInput!, $idempotencyKey: String) {\n applyArUnappliedCash(input: $input, idempotencyKey: $idempotencyKey) {\n \n id\n customerId\n currencyCode\n amount\n applied\n refunded\n remaining\n orderId\n paymentId\n receivedOn\n reference\n notes\n createdAt\n\n }\n }\n";
164
+ export declare const REFUND_UNAPPLIED_CASH_MUTATION = "\n mutation RefundArUnappliedCash($input: RefundArUnappliedCashInput!, $idempotencyKey: String) {\n refundArUnappliedCash(input: $input, idempotencyKey: $idempotencyKey) {\n id\n total\n state\n method\n transactionId\n reason\n }\n }\n";
165
+ /**
166
+ * Its own query, never a field added to `payments.refundPosition`'s: an SDK
167
+ * released ahead of a server without `creditedToAccount` must not break that
168
+ * read.
169
+ */
170
+ export declare const ORDER_MONEY_ON_ACCOUNT_QUERY = "\n query OrderMoneyOnAccount($orderId: ID!) {\n orderRefundPosition(orderId: $orderId) {\n currencyCode\n creditedToAccount\n perPayment {\n paymentId\n creditedToAccount\n }\n }\n }\n";
171
+ export declare function createAccountCreditModule(transport: Transport): AccountCreditModule;
@@ -0,0 +1,107 @@
1
+ const UNAPPLIED_CASH_FIELDS = /* GraphQL */ `
2
+ id
3
+ customerId
4
+ currencyCode
5
+ amount
6
+ applied
7
+ refunded
8
+ remaining
9
+ orderId
10
+ paymentId
11
+ receivedOn
12
+ reference
13
+ notes
14
+ createdAt
15
+ `;
16
+ export const CREDIT_ORDER_OVERPAYMENT_MUTATION = /* GraphQL */ `
17
+ mutation CreditOrderOverpaymentToAccount(
18
+ $input: CreditOrderOverpaymentInput!
19
+ $idempotencyKey: String
20
+ ) {
21
+ creditOrderOverpaymentToAccount(input: $input, idempotencyKey: $idempotencyKey) {
22
+ ${UNAPPLIED_CASH_FIELDS}
23
+ }
24
+ }
25
+ `;
26
+ export const UNAPPLIED_CASH_QUERY = /* GraphQL */ `
27
+ query ArUnappliedCash($customerId: ID!) {
28
+ arUnappliedCash(customerId: $customerId) {
29
+ ${UNAPPLIED_CASH_FIELDS}
30
+ }
31
+ }
32
+ `;
33
+ export const APPLY_UNAPPLIED_CASH_MUTATION = /* GraphQL */ `
34
+ mutation ApplyArUnappliedCash($input: ApplyArUnappliedCashInput!, $idempotencyKey: String) {
35
+ applyArUnappliedCash(input: $input, idempotencyKey: $idempotencyKey) {
36
+ ${UNAPPLIED_CASH_FIELDS}
37
+ }
38
+ }
39
+ `;
40
+ export const REFUND_UNAPPLIED_CASH_MUTATION = /* GraphQL */ `
41
+ mutation RefundArUnappliedCash($input: RefundArUnappliedCashInput!, $idempotencyKey: String) {
42
+ refundArUnappliedCash(input: $input, idempotencyKey: $idempotencyKey) {
43
+ id
44
+ total
45
+ state
46
+ method
47
+ transactionId
48
+ reason
49
+ }
50
+ }
51
+ `;
52
+ /**
53
+ * Its own query, never a field added to `payments.refundPosition`'s: an SDK
54
+ * released ahead of a server without `creditedToAccount` must not break that
55
+ * read.
56
+ */
57
+ export const ORDER_MONEY_ON_ACCOUNT_QUERY = /* GraphQL */ `
58
+ query OrderMoneyOnAccount($orderId: ID!) {
59
+ orderRefundPosition(orderId: $orderId) {
60
+ currencyCode
61
+ creditedToAccount
62
+ perPayment {
63
+ paymentId
64
+ creditedToAccount
65
+ }
66
+ }
67
+ }
68
+ `;
69
+ export function createAccountCreditModule(transport) {
70
+ return {
71
+ async creditOverpayment(input, options) {
72
+ const data = await transport.graphql({
73
+ api: 'admin',
74
+ query: CREDIT_ORDER_OVERPAYMENT_MUTATION,
75
+ // A variable, not a header: the Admin API takes the key as an argument.
76
+ // `undefined`, never an explicit null: `JSON.stringify` drops it, so an
77
+ // omitted key stays off the wire entirely.
78
+ variables: { input, idempotencyKey: options?.idempotencyKey },
79
+ }, options);
80
+ return data.creditOrderOverpaymentToAccount;
81
+ },
82
+ async list(customerId, options) {
83
+ const data = await transport.graphql({ api: 'admin', query: UNAPPLIED_CASH_QUERY, variables: { customerId } }, options);
84
+ return data.arUnappliedCash;
85
+ },
86
+ async apply(input, options) {
87
+ const data = await transport.graphql({
88
+ api: 'admin',
89
+ query: APPLY_UNAPPLIED_CASH_MUTATION,
90
+ variables: { input, idempotencyKey: options?.idempotencyKey },
91
+ }, options);
92
+ return data.applyArUnappliedCash;
93
+ },
94
+ async refund(input, options) {
95
+ const data = await transport.graphql({
96
+ api: 'admin',
97
+ query: REFUND_UNAPPLIED_CASH_MUTATION,
98
+ variables: { input, idempotencyKey: options?.idempotencyKey },
99
+ }, options);
100
+ return data.refundArUnappliedCash;
101
+ },
102
+ async onOrder(orderId, options) {
103
+ const data = await transport.graphql({ api: 'admin', query: ORDER_MONEY_ON_ACCOUNT_QUERY, variables: { orderId } }, options);
104
+ return data.orderRefundPosition;
105
+ },
106
+ };
107
+ }