@base44/app-plugin-commerce 0.1.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 (173) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +117 -0
  3. package/base44/agents/commerce/StoreAdmin.jsonc +64 -0
  4. package/base44/entities/commerce.Cart.jsonc +73 -0
  5. package/base44/entities/commerce.Coupon.jsonc +113 -0
  6. package/base44/entities/commerce.Customer.jsonc +96 -0
  7. package/base44/entities/commerce.DownloadPermission.jsonc +54 -0
  8. package/base44/entities/commerce.EmailLog.jsonc +43 -0
  9. package/base44/entities/commerce.Order.jsonc +287 -0
  10. package/base44/entities/commerce.OrderNote.jsonc +31 -0
  11. package/base44/entities/commerce.OrderRefund.jsonc +64 -0
  12. package/base44/entities/commerce.PaymentGateway.jsonc +48 -0
  13. package/base44/entities/commerce.Product.jsonc +291 -0
  14. package/base44/entities/commerce.ProductAttribute.jsonc +39 -0
  15. package/base44/entities/commerce.ProductAttributeTerm.jsonc +38 -0
  16. package/base44/entities/commerce.ProductCategory.jsonc +51 -0
  17. package/base44/entities/commerce.ProductReview.jsonc +48 -0
  18. package/base44/entities/commerce.ProductTag.jsonc +30 -0
  19. package/base44/entities/commerce.ProductVariation.jsonc +167 -0
  20. package/base44/entities/commerce.ShippingClass.jsonc +30 -0
  21. package/base44/entities/commerce.ShippingZone.jsonc +41 -0
  22. package/base44/entities/commerce.ShippingZoneMethod.jsonc +84 -0
  23. package/base44/entities/commerce.StoreSettings.jsonc +23 -0
  24. package/base44/entities/commerce.TaxClass.jsonc +23 -0
  25. package/base44/entities/commerce.TaxRate.jsonc +68 -0
  26. package/base44/entities/commerce.Webhook.jsonc +57 -0
  27. package/base44/entities/commerce.WebhookDelivery.jsonc +45 -0
  28. package/base44/functions/commerce/admin-coupons/entry.ts +100 -0
  29. package/base44/functions/commerce/admin-customers/entry.ts +141 -0
  30. package/base44/functions/commerce/admin-orders/entry.ts +396 -0
  31. package/base44/functions/commerce/admin-orders/helpers.ts +246 -0
  32. package/base44/functions/commerce/admin-products/entry.ts +506 -0
  33. package/base44/functions/commerce/admin-refunds/entry.ts +158 -0
  34. package/base44/functions/commerce/admin-reports/entry.ts +283 -0
  35. package/base44/functions/commerce/admin-reviews/entry.ts +66 -0
  36. package/base44/functions/commerce/admin-tools/entry.ts +261 -0
  37. package/base44/functions/commerce/admin-webhooks/entry.ts +52 -0
  38. package/base44/functions/commerce/payment-webhook/entry.ts +135 -0
  39. package/base44/functions/commerce/payments/entry.ts +238 -0
  40. package/base44/functions/commerce/seed-store/defaults.ts +162 -0
  41. package/base44/functions/commerce/seed-store/entry.ts +310 -0
  42. package/base44/functions/commerce/seed-store/sample-data.ts +349 -0
  43. package/base44/functions/commerce/storefront-account/entry.ts +207 -0
  44. package/base44/functions/commerce/storefront-cart/cart-pricing.ts +258 -0
  45. package/base44/functions/commerce/storefront-cart/entry.ts +283 -0
  46. package/base44/functions/commerce/storefront-catalog/entry.ts +459 -0
  47. package/base44/functions/commerce/storefront-checkout/cart-pricing.ts +258 -0
  48. package/base44/functions/commerce/storefront-checkout/entry.ts +485 -0
  49. package/base44/shared/commerce/auth.ts +60 -0
  50. package/base44/shared/commerce/coupons.ts +257 -0
  51. package/base44/shared/commerce/data/continents.ts +75 -0
  52. package/base44/shared/commerce/data/countries.ts +307 -0
  53. package/base44/shared/commerce/data/currencies.ts +46 -0
  54. package/base44/shared/commerce/email-templates.ts +240 -0
  55. package/base44/shared/commerce/emails.ts +225 -0
  56. package/base44/shared/commerce/money.ts +66 -0
  57. package/base44/shared/commerce/orders.ts +251 -0
  58. package/base44/shared/commerce/payments.ts +495 -0
  59. package/base44/shared/commerce/reviews.ts +36 -0
  60. package/base44/shared/commerce/scan.ts +57 -0
  61. package/base44/shared/commerce/sequence.ts +35 -0
  62. package/base44/shared/commerce/settings.ts +57 -0
  63. package/base44/shared/commerce/shipping.ts +215 -0
  64. package/base44/shared/commerce/stock.ts +227 -0
  65. package/base44/shared/commerce/stripe.ts +463 -0
  66. package/base44/shared/commerce/tax.ts +136 -0
  67. package/base44/shared/commerce/totals.ts +314 -0
  68. package/base44/shared/commerce/webhooks.ts +116 -0
  69. package/package.json +37 -0
  70. package/scripts/install.js +156 -0
  71. package/skills/commerce/SKILL.md +62 -0
  72. package/skills/commerce/docs/api-admin.md +186 -0
  73. package/skills/commerce/docs/api-storefront.md +408 -0
  74. package/skills/commerce/installation-guidelines.md +91 -0
  75. package/skills/commerce/post-installation.md +157 -0
  76. package/skills/commerce/references/emails.md +13 -0
  77. package/skills/commerce/references/guest-access-security.md +18 -0
  78. package/skills/commerce/references/limits-and-performance.md +16 -0
  79. package/skills/commerce/references/media-and-downloads.md +4 -0
  80. package/skills/commerce/references/online-payments.md +201 -0
  81. package/skills/commerce/references/product-render.md +87 -0
  82. package/skills/commerce/references/scheduled-work.md +19 -0
  83. package/skills/commerce/references/storefront-product-page.md +83 -0
  84. package/skills/commerce/references/webhooks.md +8 -0
  85. package/src/commerce/admin/README.md +107 -0
  86. package/src/commerce/admin/bot/Markdown.jsx +138 -0
  87. package/src/commerce/admin/bot/StoreAdminBot.jsx +249 -0
  88. package/src/commerce/admin/bot/pipe-tables.js +116 -0
  89. package/src/commerce/admin/components/AddressForm.jsx +78 -0
  90. package/src/commerce/admin/components/ConfirmDialog.jsx +52 -0
  91. package/src/commerce/admin/components/CountrySelect.jsx +81 -0
  92. package/src/commerce/admin/components/DataTable.jsx +192 -0
  93. package/src/commerce/admin/components/DateRangePicker.jsx +91 -0
  94. package/src/commerce/admin/components/EmptyState.jsx +17 -0
  95. package/src/commerce/admin/components/MediaUploader.jsx +116 -0
  96. package/src/commerce/admin/components/MetaDataEditor.jsx +45 -0
  97. package/src/commerce/admin/components/MoneyInput.jsx +50 -0
  98. package/src/commerce/admin/components/PageHeader.jsx +29 -0
  99. package/src/commerce/admin/components/RichTextarea.jsx +21 -0
  100. package/src/commerce/admin/components/SearchSelect.jsx +142 -0
  101. package/src/commerce/admin/components/StatusBadge.jsx +17 -0
  102. package/src/commerce/admin/context/BasePathContext.jsx +26 -0
  103. package/src/commerce/admin/context/SettingsContext.jsx +207 -0
  104. package/src/commerce/admin/hooks/useAsync.js +46 -0
  105. package/src/commerce/admin/hooks/useDebounce.js +11 -0
  106. package/src/commerce/admin/hooks/useMoney.js +52 -0
  107. package/src/commerce/admin/hooks/usePagedList.js +83 -0
  108. package/src/commerce/admin/hooks/usePaymentProvider.js +27 -0
  109. package/src/commerce/admin/hooks/useRealtime.js +129 -0
  110. package/src/commerce/admin/index.jsx +34 -0
  111. package/src/commerce/admin/layout/AccessDenied.jsx +54 -0
  112. package/src/commerce/admin/layout/AdminLayout.jsx +33 -0
  113. package/src/commerce/admin/layout/AuthGuard.jsx +84 -0
  114. package/src/commerce/admin/layout/Sidebar.jsx +130 -0
  115. package/src/commerce/admin/layout/Topbar.jsx +94 -0
  116. package/src/commerce/admin/lib/api.js +55 -0
  117. package/src/commerce/admin/lib/constants.js +157 -0
  118. package/src/commerce/admin/lib/format.js +27 -0
  119. package/src/commerce/admin/lib/geo-data.js +125 -0
  120. package/src/commerce/admin/lib/order-utils.js +147 -0
  121. package/src/commerce/admin/lib/paths.js +35 -0
  122. package/src/commerce/admin/lib/product-utils.js +55 -0
  123. package/src/commerce/admin/pages/Dashboard.jsx +245 -0
  124. package/src/commerce/admin/pages/coupons/CouponEditor.jsx +565 -0
  125. package/src/commerce/admin/pages/coupons/CouponsList.jsx +172 -0
  126. package/src/commerce/admin/pages/customers/CustomerEditor.jsx +318 -0
  127. package/src/commerce/admin/pages/customers/CustomersList.jsx +169 -0
  128. package/src/commerce/admin/pages/orders/OrderEditor.jsx +952 -0
  129. package/src/commerce/admin/pages/orders/OrdersList.jsx +227 -0
  130. package/src/commerce/admin/pages/orders/components/AddProductDialog.jsx +149 -0
  131. package/src/commerce/admin/pages/orders/components/DownloadPermissionsPanel.jsx +119 -0
  132. package/src/commerce/admin/pages/orders/components/LineItemsTable.jsx +208 -0
  133. package/src/commerce/admin/pages/orders/components/OrderNotesPanel.jsx +123 -0
  134. package/src/commerce/admin/pages/orders/components/PaymentPanel.jsx +199 -0
  135. package/src/commerce/admin/pages/orders/components/RefundPanel.jsx +239 -0
  136. package/src/commerce/admin/pages/orders/components/TotalsBox.jsx +52 -0
  137. package/src/commerce/admin/pages/products/AttributeTerms.jsx +180 -0
  138. package/src/commerce/admin/pages/products/Attributes.jsx +183 -0
  139. package/src/commerce/admin/pages/products/Categories.jsx +236 -0
  140. package/src/commerce/admin/pages/products/ProductEditor.jsx +267 -0
  141. package/src/commerce/admin/pages/products/ProductsList.jsx +391 -0
  142. package/src/commerce/admin/pages/products/Reviews.jsx +255 -0
  143. package/src/commerce/admin/pages/products/Tags.jsx +150 -0
  144. package/src/commerce/admin/pages/products/components/ProductDataPanel.jsx +132 -0
  145. package/src/commerce/admin/pages/products/components/PublishBox.jsx +101 -0
  146. package/src/commerce/admin/pages/products/components/TaxonomyPanel.jsx +243 -0
  147. package/src/commerce/admin/pages/products/components/tabs/AdvancedTab.jsx +48 -0
  148. package/src/commerce/admin/pages/products/components/tabs/AttributesTab.jsx +208 -0
  149. package/src/commerce/admin/pages/products/components/tabs/DownloadsTab.jsx +91 -0
  150. package/src/commerce/admin/pages/products/components/tabs/ExternalTab.jsx +41 -0
  151. package/src/commerce/admin/pages/products/components/tabs/GeneralTab.jsx +103 -0
  152. package/src/commerce/admin/pages/products/components/tabs/InventoryTab.jsx +93 -0
  153. package/src/commerce/admin/pages/products/components/tabs/LinkedTab.jsx +102 -0
  154. package/src/commerce/admin/pages/products/components/tabs/ShippingTab.jsx +86 -0
  155. package/src/commerce/admin/pages/products/components/tabs/VariationsTab.jsx +377 -0
  156. package/src/commerce/admin/pages/reports/Reports.jsx +416 -0
  157. package/src/commerce/admin/pages/settings/EmailsSettings.jsx +240 -0
  158. package/src/commerce/admin/pages/settings/GeneralSettings.jsx +232 -0
  159. package/src/commerce/admin/pages/settings/InventorySettings.jsx +146 -0
  160. package/src/commerce/admin/pages/settings/PaymentsSettings.jsx +260 -0
  161. package/src/commerce/admin/pages/settings/ProductsSettings.jsx +118 -0
  162. package/src/commerce/admin/pages/settings/SettingsLayout.jsx +53 -0
  163. package/src/commerce/admin/pages/settings/ShippingSettings.jsx +304 -0
  164. package/src/commerce/admin/pages/settings/ShippingZoneEditor.jsx +514 -0
  165. package/src/commerce/admin/pages/settings/TaxRatesTable.jsx +231 -0
  166. package/src/commerce/admin/pages/settings/TaxSettings.jsx +281 -0
  167. package/src/commerce/admin/pages/settings/useGroupForm.jsx +76 -0
  168. package/src/commerce/admin/pages/status/WebhookEditor.jsx +296 -0
  169. package/src/commerce/admin/pages/status/Webhooks.jsx +53 -0
  170. package/src/commerce/admin/routes.jsx +151 -0
  171. package/src/commerce/utils/index.js +19 -0
  172. package/src/commerce/utils/shipping-promos.js +99 -0
  173. package/src/commerce/utils/variants.js +411 -0
@@ -0,0 +1,287 @@
1
+ {
2
+ "name": "commerce.Order",
3
+ "type": "object",
4
+ "description": "A store order with embedded line items, shipping/tax/fee/coupon lines and totals. Lifecycle side effects are managed by shared/orders transitionOrder.",
5
+ "properties": {
6
+ "order_number": {
7
+ "type": "integer",
8
+ "description": "Human-facing sequential number, assigned by shared/sequence"
9
+ },
10
+ "order_key": {
11
+ "type": "string",
12
+ "description": "Random secret key for guest order tracking (order_xxxxx)"
13
+ },
14
+ "status": {
15
+ "type": "string",
16
+ "enum": ["pending", "processing", "on-hold", "completed", "cancelled", "refunded", "failed"],
17
+ "default": "pending",
18
+ "description": "Order status"
19
+ },
20
+ "currency": {
21
+ "type": "string",
22
+ "default": "USD",
23
+ "description": "ISO 4217 currency code"
24
+ },
25
+ "prices_include_tax": {
26
+ "type": "boolean",
27
+ "default": false,
28
+ "description": "Whether catalog prices included tax at time of order"
29
+ },
30
+ "created_via": {
31
+ "type": "string",
32
+ "enum": ["checkout", "admin", "api"],
33
+ "default": "checkout",
34
+ "description": "Order creation channel"
35
+ },
36
+ "customer_id": {
37
+ "type": "string",
38
+ "description": "Customer entity id; empty = guest"
39
+ },
40
+ "customer_note": {
41
+ "type": "string",
42
+ "description": "Note provided by the customer at checkout"
43
+ },
44
+ "customer_ip": {
45
+ "type": "string",
46
+ "description": "Customer IP address"
47
+ },
48
+ "customer_user_agent": {
49
+ "type": "string",
50
+ "description": "Customer user agent"
51
+ },
52
+ "billing": {
53
+ "type": "object",
54
+ "description": "Billing address",
55
+ "properties": {
56
+ "first_name": { "type": "string" },
57
+ "last_name": { "type": "string" },
58
+ "company": { "type": "string" },
59
+ "address_1": { "type": "string" },
60
+ "address_2": { "type": "string" },
61
+ "city": { "type": "string" },
62
+ "state": { "type": "string" },
63
+ "postcode": { "type": "string" },
64
+ "country": { "type": "string" },
65
+ "email": { "type": "string", "format": "email" },
66
+ "phone": { "type": "string" }
67
+ }
68
+ },
69
+ "shipping": {
70
+ "type": "object",
71
+ "description": "Shipping address",
72
+ "properties": {
73
+ "first_name": { "type": "string" },
74
+ "last_name": { "type": "string" },
75
+ "company": { "type": "string" },
76
+ "address_1": { "type": "string" },
77
+ "address_2": { "type": "string" },
78
+ "city": { "type": "string" },
79
+ "state": { "type": "string" },
80
+ "postcode": { "type": "string" },
81
+ "country": { "type": "string" },
82
+ "phone": { "type": "string" }
83
+ }
84
+ },
85
+ "payment_method": {
86
+ "type": "string",
87
+ "description": "PaymentGateway slug (e.g. bacs|cheque|cod|stripe)"
88
+ },
89
+ "payment_method_title": {
90
+ "type": "string",
91
+ "description": "Customer-facing payment method title"
92
+ },
93
+ "transaction_id": {
94
+ "type": "string",
95
+ "description": "External gateway transaction id"
96
+ },
97
+ "date_paid": {
98
+ "type": "string",
99
+ "format": "date-time",
100
+ "description": "When payment was confirmed"
101
+ },
102
+ "date_completed": {
103
+ "type": "string",
104
+ "format": "date-time",
105
+ "description": "When the order was completed"
106
+ },
107
+ "line_items": {
108
+ "type": "array",
109
+ "description": "Product line items",
110
+ "items": {
111
+ "type": "object",
112
+ "properties": {
113
+ "line_id": { "type": "string", "description": "Stable uuid for refund references" },
114
+ "product_id": { "type": "string" },
115
+ "variation_id": { "type": "string" },
116
+ "name": { "type": "string" },
117
+ "sku": { "type": "string" },
118
+ "quantity": { "type": "integer" },
119
+ "price": { "type": "number", "description": "Per-unit price after discounts, ex tax" },
120
+ "tax_class": { "type": "string" },
121
+ "subtotal": { "type": "number", "description": "Line total before discounts, ex tax" },
122
+ "subtotal_tax": { "type": "number" },
123
+ "total": { "type": "number", "description": "Line total after discounts, ex tax" },
124
+ "total_tax": { "type": "number" },
125
+ "taxes": {
126
+ "type": "array",
127
+ "items": {
128
+ "type": "object",
129
+ "properties": {
130
+ "rate_id": { "type": "string" },
131
+ "total": { "type": "number" },
132
+ "subtotal": { "type": "number" }
133
+ }
134
+ }
135
+ },
136
+ "attributes": {
137
+ "type": "array",
138
+ "description": "Chosen variation attributes for display",
139
+ "items": {
140
+ "type": "object",
141
+ "properties": {
142
+ "name": { "type": "string" },
143
+ "option": { "type": "string" }
144
+ }
145
+ }
146
+ },
147
+ "meta_data": {
148
+ "type": "array",
149
+ "items": {
150
+ "type": "object",
151
+ "properties": {
152
+ "key": { "type": "string" },
153
+ "value": { "type": "string" }
154
+ }
155
+ }
156
+ }
157
+ }
158
+ }
159
+ },
160
+ "shipping_lines": {
161
+ "type": "array",
162
+ "description": "Chosen shipping methods",
163
+ "items": {
164
+ "type": "object",
165
+ "properties": {
166
+ "line_id": { "type": "string" },
167
+ "method_id": { "type": "string", "description": "flat_rate|free_shipping|local_pickup" },
168
+ "instance_id": { "type": "string", "description": "ShippingZoneMethod id" },
169
+ "method_title": { "type": "string" },
170
+ "total": { "type": "number" },
171
+ "total_tax": { "type": "number" },
172
+ "taxes": {
173
+ "type": "array",
174
+ "items": {
175
+ "type": "object",
176
+ "properties": {
177
+ "rate_id": { "type": "string" },
178
+ "total": { "type": "number" }
179
+ }
180
+ }
181
+ }
182
+ }
183
+ }
184
+ },
185
+ "tax_lines": {
186
+ "type": "array",
187
+ "description": "Aggregated tax totals per rate",
188
+ "items": {
189
+ "type": "object",
190
+ "properties": {
191
+ "rate_id": { "type": "string" },
192
+ "rate_code": { "type": "string" },
193
+ "label": { "type": "string" },
194
+ "rate_percent": { "type": "number" },
195
+ "compound": { "type": "boolean" },
196
+ "tax_total": { "type": "number" },
197
+ "shipping_tax_total": { "type": "number" }
198
+ }
199
+ }
200
+ },
201
+ "fee_lines": {
202
+ "type": "array",
203
+ "description": "Additional fees",
204
+ "items": {
205
+ "type": "object",
206
+ "properties": {
207
+ "line_id": { "type": "string" },
208
+ "name": { "type": "string" },
209
+ "tax_class": { "type": "string" },
210
+ "tax_status": { "type": "string", "enum": ["taxable", "none"] },
211
+ "total": { "type": "number" },
212
+ "total_tax": { "type": "number" }
213
+ }
214
+ }
215
+ },
216
+ "coupon_lines": {
217
+ "type": "array",
218
+ "description": "Applied coupons",
219
+ "items": {
220
+ "type": "object",
221
+ "properties": {
222
+ "code": { "type": "string" },
223
+ "coupon_id": { "type": "string" },
224
+ "discount": { "type": "number" },
225
+ "discount_tax": { "type": "number" },
226
+ "free_shipping": { "type": "boolean" }
227
+ }
228
+ }
229
+ },
230
+ "discount_total": { "type": "number", "default": 0 },
231
+ "discount_tax": { "type": "number", "default": 0 },
232
+ "shipping_total": { "type": "number", "default": 0 },
233
+ "shipping_tax": { "type": "number", "default": 0 },
234
+ "cart_tax": { "type": "number", "default": 0 },
235
+ "total_tax": { "type": "number", "default": 0 },
236
+ "subtotal": { "type": "number", "default": 0, "description": "Sum of line subtotals, ex tax" },
237
+ "total": { "type": "number", "default": 0, "description": "Grand total incl. tax and shipping" },
238
+ "total_refunded": {
239
+ "type": "number",
240
+ "default": 0,
241
+ "description": "Sum of refunds. Maintained by commerce/admin-refunds."
242
+ },
243
+ "stock_reduced": {
244
+ "type": "boolean",
245
+ "default": false,
246
+ "description": "Lifecycle flag guarding double stock reduce/restore"
247
+ },
248
+ "coupon_usages_counted": {
249
+ "type": "boolean",
250
+ "default": false,
251
+ "description": "Lifecycle flag guarding double coupon usage counting"
252
+ },
253
+ "download_permissions_granted": {
254
+ "type": "boolean",
255
+ "default": false,
256
+ "description": "Lifecycle flag guarding duplicate download permission grants"
257
+ },
258
+ "hold_expires_at": {
259
+ "type": "string",
260
+ "format": "date-time",
261
+ "description": "Unpaid-order stock hold deadline; expired holds are released opportunistically"
262
+ },
263
+ "emails_sent": {
264
+ "type": "array",
265
+ "items": { "type": "string" },
266
+ "description": "Email types already fired for this order, prevents duplicates"
267
+ },
268
+ "meta_data": {
269
+ "type": "array",
270
+ "description": "Custom key/value metadata",
271
+ "items": {
272
+ "type": "object",
273
+ "properties": {
274
+ "key": { "type": "string" },
275
+ "value": { "type": "string" }
276
+ }
277
+ }
278
+ }
279
+ },
280
+ "required": ["status", "currency"],
281
+ "rls": {
282
+ "read": { "user_condition": { "role": "admin" } },
283
+ "create": { "user_condition": { "role": "admin" } },
284
+ "update": { "user_condition": { "role": "admin" } },
285
+ "delete": { "user_condition": { "role": "admin" } }
286
+ }
287
+ }
@@ -0,0 +1,31 @@
1
+ {
2
+ "name": "commerce.OrderNote",
3
+ "type": "object",
4
+ "description": "Note attached to an order: system, private admin, or customer-facing. Customer notes are served to buyers via commerce/storefront-account.",
5
+ "properties": {
6
+ "order_id": {
7
+ "type": "string",
8
+ "description": "Order id"
9
+ },
10
+ "note": {
11
+ "type": "string",
12
+ "description": "Note content"
13
+ },
14
+ "is_customer_note": {
15
+ "type": "boolean",
16
+ "default": false,
17
+ "description": "Customer-facing note (triggers customer_note email)"
18
+ },
19
+ "added_by": {
20
+ "type": "string",
21
+ "description": "\"system\" or the admin's email"
22
+ }
23
+ },
24
+ "required": ["order_id", "note"],
25
+ "rls": {
26
+ "read": { "user_condition": { "role": "admin" } },
27
+ "create": { "user_condition": { "role": "admin" } },
28
+ "update": { "user_condition": { "role": "admin" } },
29
+ "delete": { "user_condition": { "role": "admin" } }
30
+ }
31
+ }
@@ -0,0 +1,64 @@
1
+ {
2
+ "name": "commerce.OrderRefund",
3
+ "type": "object",
4
+ "description": "A full or partial refund of an order. Created via commerce/admin-refunds, which also maintains order.total_refunded and optional restocking.",
5
+ "properties": {
6
+ "order_id": {
7
+ "type": "string",
8
+ "description": "Order id"
9
+ },
10
+ "amount": {
11
+ "type": "number",
12
+ "description": "Total amount refunded"
13
+ },
14
+ "reason": {
15
+ "type": "string"
16
+ },
17
+ "refunded_by": {
18
+ "type": "string",
19
+ "description": "Admin email"
20
+ },
21
+ "refunded_payment": {
22
+ "type": "boolean",
23
+ "default": false,
24
+ "description": "True when a real gateway refund was made (Stripe wiring placeholder — see skills/commerce/references/online-payments.md)"
25
+ },
26
+ "restock_items": {
27
+ "type": "boolean",
28
+ "default": false,
29
+ "description": "Whether refunded line quantities were restocked"
30
+ },
31
+ "line_items": {
32
+ "type": "array",
33
+ "description": "Per-line refund breakdown; line_id references Order.line_items",
34
+ "items": {
35
+ "type": "object",
36
+ "properties": {
37
+ "line_id": { "type": "string" },
38
+ "product_id": { "type": "string" },
39
+ "variation_id": { "type": "string" },
40
+ "quantity": { "type": "integer" },
41
+ "refund_total": { "type": "number" },
42
+ "refund_tax": { "type": "number" }
43
+ }
44
+ }
45
+ },
46
+ "meta_data": {
47
+ "type": "array",
48
+ "items": {
49
+ "type": "object",
50
+ "properties": {
51
+ "key": { "type": "string" },
52
+ "value": { "type": "string" }
53
+ }
54
+ }
55
+ }
56
+ },
57
+ "required": ["order_id", "amount"],
58
+ "rls": {
59
+ "read": { "user_condition": { "role": "admin" } },
60
+ "create": { "user_condition": { "role": "admin" } },
61
+ "update": { "user_condition": { "role": "admin" } },
62
+ "delete": { "user_condition": { "role": "admin" } }
63
+ }
64
+ }
@@ -0,0 +1,48 @@
1
+ {
2
+ "name": "commerce.PaymentGateway",
3
+ "type": "object",
4
+ "description": "Payment gateway configuration (data model only — no processing). Seeded: bacs, cheque, cod, stripe (placeholder). Secrets are never stored here; use Base44 secrets.",
5
+ "properties": {
6
+ "slug": {
7
+ "type": "string",
8
+ "minLength": 1,
9
+ "description": "Unique gateway id, e.g. bacs | cheque | cod | stripe"
10
+ },
11
+ "title": {
12
+ "type": "string",
13
+ "description": "Customer-facing title shown at checkout"
14
+ },
15
+ "description": {
16
+ "type": "string",
17
+ "description": "Customer-facing description/instructions shown at checkout"
18
+ },
19
+ "enabled": {
20
+ "type": "boolean",
21
+ "default": false
22
+ },
23
+ "order": {
24
+ "type": "integer",
25
+ "default": 0,
26
+ "description": "Display order at checkout and in admin"
27
+ },
28
+ "method_title": {
29
+ "type": "string",
30
+ "description": "Admin-facing label"
31
+ },
32
+ "method_description": {
33
+ "type": "string",
34
+ "description": "Admin-facing description"
35
+ },
36
+ "settings": {
37
+ "type": "object",
38
+ "description": "Per-gateway settings. bacs: {account_details: [{account_name, account_number, bank_name, sort_code, iban, bic}]}; cod: {enable_for_methods, enable_for_virtual}; stripe: {connector: \"stripe\"} placeholder — see skills/commerce/references/online-payments.md"
39
+ }
40
+ },
41
+ "required": ["slug"],
42
+ "rls": {
43
+ "read": { "user_condition": { "role": "admin" } },
44
+ "create": { "user_condition": { "role": "admin" } },
45
+ "update": { "user_condition": { "role": "admin" } },
46
+ "delete": { "user_condition": { "role": "admin" } }
47
+ }
48
+ }