@offerkit/sdk 0.2.3 → 0.2.5
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/README.md +84 -0
- package/dist/index.cjs +1898 -0
- package/dist/index.d.cts +3246 -0
- package/dist/index.d.cts.map +1 -0
- package/dist/index.d.mts +551 -313
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +238 -140
- package/dist/index.mjs.map +1 -1
- package/package.json +8 -6
package/dist/index.mjs
CHANGED
|
@@ -38,8 +38,9 @@ const apiKeys = {
|
|
|
38
38
|
revoke: oc.route({
|
|
39
39
|
method: "DELETE",
|
|
40
40
|
path: "/api-keys/{id}",
|
|
41
|
-
summary: "Disable an API key (cannot be re-enabled)"
|
|
42
|
-
|
|
41
|
+
summary: "Disable an API key (cannot be re-enabled)",
|
|
42
|
+
inputStructure: "detailed"
|
|
43
|
+
}).input(z.object({ params: z.object({ id: z.string() }) })).output(z.object({ ok: z.literal(true) }))
|
|
43
44
|
};
|
|
44
45
|
//#endregion
|
|
45
46
|
//#region ../contract/src/mcp.ts
|
|
@@ -140,8 +141,9 @@ const campaigns = {
|
|
|
140
141
|
})).route({
|
|
141
142
|
method: "GET",
|
|
142
143
|
path: "/campaigns/{id}",
|
|
143
|
-
summary: "Get campaign"
|
|
144
|
-
|
|
144
|
+
summary: "Get campaign",
|
|
145
|
+
inputStructure: "detailed"
|
|
146
|
+
}).input(z.object({ params: z.object({ id: z.string().uuid() }) })).output(campaignOutput),
|
|
145
147
|
create: oc.route({
|
|
146
148
|
method: "POST",
|
|
147
149
|
path: "/campaigns",
|
|
@@ -150,16 +152,18 @@ const campaigns = {
|
|
|
150
152
|
update: oc.route({
|
|
151
153
|
method: "PATCH",
|
|
152
154
|
path: "/campaigns/{id}",
|
|
153
|
-
summary: "Update campaign"
|
|
155
|
+
summary: "Update campaign",
|
|
156
|
+
inputStructure: "detailed"
|
|
154
157
|
}).input(z.object({
|
|
155
|
-
id: z.string().uuid(),
|
|
156
|
-
patch: campaignUpdateInput
|
|
158
|
+
params: z.object({ id: z.string().uuid() }),
|
|
159
|
+
body: z.object({ patch: campaignUpdateInput })
|
|
157
160
|
})).output(campaignOutput),
|
|
158
161
|
delete: oc.route({
|
|
159
162
|
method: "DELETE",
|
|
160
163
|
path: "/campaigns/{id}",
|
|
161
|
-
summary: "Soft-delete campaign"
|
|
162
|
-
|
|
164
|
+
summary: "Soft-delete campaign",
|
|
165
|
+
inputStructure: "detailed"
|
|
166
|
+
}).input(z.object({ params: z.object({ id: z.string().uuid() }) })).output(z.object({ ok: z.literal(true) }))
|
|
163
167
|
};
|
|
164
168
|
//#endregion
|
|
165
169
|
//#region ../contract/src/schemas/customer.ts
|
|
@@ -226,16 +230,18 @@ const customers = {
|
|
|
226
230
|
})).route({
|
|
227
231
|
method: "GET",
|
|
228
232
|
path: "/customers/{id}",
|
|
229
|
-
summary: "Get customer"
|
|
230
|
-
|
|
233
|
+
summary: "Get customer",
|
|
234
|
+
inputStructure: "detailed"
|
|
235
|
+
}).input(z.object({ params: z.object({ id: z.string().uuid() }) })).output(customerOutput),
|
|
231
236
|
getByExternalId: oc.meta(mcpMeta({
|
|
232
237
|
expose: true,
|
|
233
238
|
riskLevel: "safe"
|
|
234
239
|
})).route({
|
|
235
240
|
method: "GET",
|
|
236
241
|
path: "/customers/by-external-id/{externalId}",
|
|
237
|
-
summary: "Get a customer by integrator-supplied externalId"
|
|
238
|
-
|
|
242
|
+
summary: "Get a customer by integrator-supplied externalId",
|
|
243
|
+
inputStructure: "detailed"
|
|
244
|
+
}).input(z.object({ params: z.object({ externalId: z.string().min(1).max(256) }) })).output(customerOutput),
|
|
239
245
|
create: oc.route({
|
|
240
246
|
method: "POST",
|
|
241
247
|
path: "/customers",
|
|
@@ -249,16 +255,18 @@ const customers = {
|
|
|
249
255
|
update: oc.route({
|
|
250
256
|
method: "PATCH",
|
|
251
257
|
path: "/customers/{id}",
|
|
252
|
-
summary: "Update customer"
|
|
258
|
+
summary: "Update customer",
|
|
259
|
+
inputStructure: "detailed"
|
|
253
260
|
}).input(z.object({
|
|
254
|
-
id: z.string().uuid(),
|
|
255
|
-
patch: customerUpdateInput
|
|
261
|
+
params: z.object({ id: z.string().uuid() }),
|
|
262
|
+
body: z.object({ patch: customerUpdateInput })
|
|
256
263
|
})).output(customerOutput),
|
|
257
264
|
delete: oc.route({
|
|
258
265
|
method: "DELETE",
|
|
259
266
|
path: "/customers/{id}",
|
|
260
|
-
summary: "Soft-delete customer"
|
|
261
|
-
|
|
267
|
+
summary: "Soft-delete customer",
|
|
268
|
+
inputStructure: "detailed"
|
|
269
|
+
}).input(z.object({ params: z.object({ id: z.string().uuid() }) })).output(z.object({ ok: z.literal(true) }))
|
|
262
270
|
};
|
|
263
271
|
//#endregion
|
|
264
272
|
//#region ../contract/src/schemas/loyalty.ts
|
|
@@ -416,8 +424,9 @@ const loyalty = {
|
|
|
416
424
|
get: oc.route({
|
|
417
425
|
method: "GET",
|
|
418
426
|
path: "/loyalty/programs/{id}",
|
|
419
|
-
summary: "Get loyalty program"
|
|
420
|
-
|
|
427
|
+
summary: "Get loyalty program",
|
|
428
|
+
inputStructure: "detailed"
|
|
429
|
+
}).input(z.object({ params: z.object({ id: z.string().uuid() }) })).output(loyaltyProgramOutput),
|
|
421
430
|
create: oc.route({
|
|
422
431
|
method: "POST",
|
|
423
432
|
path: "/loyalty/programs",
|
|
@@ -426,23 +435,26 @@ const loyalty = {
|
|
|
426
435
|
update: oc.route({
|
|
427
436
|
method: "PATCH",
|
|
428
437
|
path: "/loyalty/programs/{id}",
|
|
429
|
-
summary: "Update loyalty program"
|
|
438
|
+
summary: "Update loyalty program",
|
|
439
|
+
inputStructure: "detailed"
|
|
430
440
|
}).input(z.object({
|
|
431
|
-
id: z.string().uuid(),
|
|
432
|
-
patch: loyaltyProgramUpdateInput
|
|
441
|
+
params: z.object({ id: z.string().uuid() }),
|
|
442
|
+
body: z.object({ patch: loyaltyProgramUpdateInput })
|
|
433
443
|
})).output(loyaltyProgramOutput),
|
|
434
444
|
delete: oc.route({
|
|
435
445
|
method: "DELETE",
|
|
436
446
|
path: "/loyalty/programs/{id}",
|
|
437
|
-
summary: "Soft-delete program"
|
|
438
|
-
|
|
447
|
+
summary: "Soft-delete program",
|
|
448
|
+
inputStructure: "detailed"
|
|
449
|
+
}).input(z.object({ params: z.object({ id: z.string().uuid() }) })).output(z.object({ ok: z.literal(true) }))
|
|
439
450
|
},
|
|
440
451
|
tiers: {
|
|
441
452
|
list: oc.route({
|
|
442
453
|
method: "GET",
|
|
443
454
|
path: "/loyalty/programs/{programId}/tiers",
|
|
444
|
-
summary: "List tiers"
|
|
445
|
-
|
|
455
|
+
summary: "List tiers",
|
|
456
|
+
inputStructure: "detailed"
|
|
457
|
+
}).input(z.object({ params: z.object({ programId: z.string().uuid() }) })).output(z.object({ data: z.array(loyaltyTierOutput) })),
|
|
446
458
|
create: oc.route({
|
|
447
459
|
method: "POST",
|
|
448
460
|
path: "/loyalty/tiers",
|
|
@@ -451,23 +463,26 @@ const loyalty = {
|
|
|
451
463
|
update: oc.route({
|
|
452
464
|
method: "PATCH",
|
|
453
465
|
path: "/loyalty/tiers/{id}",
|
|
454
|
-
summary: "Update tier"
|
|
466
|
+
summary: "Update tier",
|
|
467
|
+
inputStructure: "detailed"
|
|
455
468
|
}).input(z.object({
|
|
456
|
-
id: z.string().uuid(),
|
|
457
|
-
patch: loyaltyTierUpdateInput
|
|
469
|
+
params: z.object({ id: z.string().uuid() }),
|
|
470
|
+
body: z.object({ patch: loyaltyTierUpdateInput })
|
|
458
471
|
})).output(loyaltyTierOutput),
|
|
459
472
|
delete: oc.route({
|
|
460
473
|
method: "DELETE",
|
|
461
474
|
path: "/loyalty/tiers/{id}",
|
|
462
|
-
summary: "Delete tier"
|
|
463
|
-
|
|
475
|
+
summary: "Delete tier",
|
|
476
|
+
inputStructure: "detailed"
|
|
477
|
+
}).input(z.object({ params: z.object({ id: z.string().uuid() }) })).output(z.object({ ok: z.literal(true) }))
|
|
464
478
|
},
|
|
465
479
|
earningRules: {
|
|
466
480
|
list: oc.route({
|
|
467
481
|
method: "GET",
|
|
468
482
|
path: "/loyalty/programs/{programId}/earning-rules",
|
|
469
|
-
summary: "List earning rules"
|
|
470
|
-
|
|
483
|
+
summary: "List earning rules",
|
|
484
|
+
inputStructure: "detailed"
|
|
485
|
+
}).input(z.object({ params: z.object({ programId: z.string().uuid() }) })).output(z.object({ data: z.array(loyaltyEarningRuleOutput) })),
|
|
471
486
|
create: oc.route({
|
|
472
487
|
method: "POST",
|
|
473
488
|
path: "/loyalty/earning-rules",
|
|
@@ -476,23 +491,26 @@ const loyalty = {
|
|
|
476
491
|
update: oc.route({
|
|
477
492
|
method: "PATCH",
|
|
478
493
|
path: "/loyalty/earning-rules/{id}",
|
|
479
|
-
summary: "Update earning rule"
|
|
494
|
+
summary: "Update earning rule",
|
|
495
|
+
inputStructure: "detailed"
|
|
480
496
|
}).input(z.object({
|
|
481
|
-
id: z.string().uuid(),
|
|
482
|
-
patch: loyaltyEarningRuleUpdateInput
|
|
497
|
+
params: z.object({ id: z.string().uuid() }),
|
|
498
|
+
body: z.object({ patch: loyaltyEarningRuleUpdateInput })
|
|
483
499
|
})).output(loyaltyEarningRuleOutput),
|
|
484
500
|
delete: oc.route({
|
|
485
501
|
method: "DELETE",
|
|
486
502
|
path: "/loyalty/earning-rules/{id}",
|
|
487
|
-
summary: "Delete earning rule"
|
|
488
|
-
|
|
503
|
+
summary: "Delete earning rule",
|
|
504
|
+
inputStructure: "detailed"
|
|
505
|
+
}).input(z.object({ params: z.object({ id: z.string().uuid() }) })).output(z.object({ ok: z.literal(true) }))
|
|
489
506
|
},
|
|
490
507
|
rewards: {
|
|
491
508
|
list: oc.route({
|
|
492
509
|
method: "GET",
|
|
493
510
|
path: "/loyalty/programs/{programId}/rewards",
|
|
494
|
-
summary: "List rewards"
|
|
495
|
-
|
|
511
|
+
summary: "List rewards",
|
|
512
|
+
inputStructure: "detailed"
|
|
513
|
+
}).input(z.object({ params: z.object({ programId: z.string().uuid() }) })).output(z.object({ data: z.array(loyaltyRewardOutput) })),
|
|
496
514
|
create: oc.route({
|
|
497
515
|
method: "POST",
|
|
498
516
|
path: "/loyalty/rewards",
|
|
@@ -501,28 +519,35 @@ const loyalty = {
|
|
|
501
519
|
update: oc.route({
|
|
502
520
|
method: "PATCH",
|
|
503
521
|
path: "/loyalty/rewards/{id}",
|
|
504
|
-
summary: "Update reward"
|
|
522
|
+
summary: "Update reward",
|
|
523
|
+
inputStructure: "detailed"
|
|
505
524
|
}).input(z.object({
|
|
506
|
-
id: z.string().uuid(),
|
|
507
|
-
patch: loyaltyRewardUpdateInput
|
|
525
|
+
params: z.object({ id: z.string().uuid() }),
|
|
526
|
+
body: z.object({ patch: loyaltyRewardUpdateInput })
|
|
508
527
|
})).output(loyaltyRewardOutput),
|
|
509
528
|
delete: oc.route({
|
|
510
529
|
method: "DELETE",
|
|
511
530
|
path: "/loyalty/rewards/{id}",
|
|
512
|
-
summary: "Soft-delete reward"
|
|
513
|
-
|
|
531
|
+
summary: "Soft-delete reward",
|
|
532
|
+
inputStructure: "detailed"
|
|
533
|
+
}).input(z.object({ params: z.object({ id: z.string().uuid() }) })).output(z.object({ ok: z.literal(true) }))
|
|
514
534
|
},
|
|
515
535
|
members: {
|
|
516
536
|
list: oc.route({
|
|
517
537
|
method: "GET",
|
|
518
538
|
path: "/loyalty/programs/{programId}/members",
|
|
519
|
-
summary: "List members of a program"
|
|
520
|
-
|
|
539
|
+
summary: "List members of a program",
|
|
540
|
+
inputStructure: "detailed"
|
|
541
|
+
}).input(z.object({
|
|
542
|
+
params: z.object({ programId: z.string().uuid() }),
|
|
543
|
+
query: paginationInput
|
|
544
|
+
})).output(paginatedOutput(loyaltyMemberOutput)),
|
|
521
545
|
get: oc.route({
|
|
522
546
|
method: "GET",
|
|
523
547
|
path: "/loyalty/members/{id}",
|
|
524
|
-
summary: "Get member"
|
|
525
|
-
|
|
548
|
+
summary: "Get member",
|
|
549
|
+
inputStructure: "detailed"
|
|
550
|
+
}).input(z.object({ params: z.object({ id: z.string().uuid() }) })).output(loyaltyMemberOutput),
|
|
526
551
|
enroll: oc.route({
|
|
527
552
|
method: "POST",
|
|
528
553
|
path: "/loyalty/members",
|
|
@@ -574,8 +599,9 @@ const loyalty = {
|
|
|
574
599
|
})).route({
|
|
575
600
|
method: "GET",
|
|
576
601
|
path: "/loyalty/members/{id}/transactions",
|
|
577
|
-
summary: "Member transaction ledger"
|
|
578
|
-
|
|
602
|
+
summary: "Member transaction ledger",
|
|
603
|
+
inputStructure: "detailed"
|
|
604
|
+
}).input(z.object({ params: z.object({ id: z.string().uuid() }) })).output(z.object({ data: z.array(loyaltyTransactionOutput) }))
|
|
579
605
|
}
|
|
580
606
|
};
|
|
581
607
|
//#endregion
|
|
@@ -650,6 +676,10 @@ const referralConversionOutput = z.object({
|
|
|
650
676
|
createdAt: z.string().datetime(),
|
|
651
677
|
updatedAt: z.string().datetime()
|
|
652
678
|
});
|
|
679
|
+
const referralProgramConversionOutput = referralConversionOutput.extend({
|
|
680
|
+
code: z.string(),
|
|
681
|
+
referrerCustomerId: z.string().uuid()
|
|
682
|
+
});
|
|
653
683
|
const referralIssueInput = z.object({
|
|
654
684
|
programId: z.string().uuid(),
|
|
655
685
|
referrerCustomerId: z.string().uuid(),
|
|
@@ -690,8 +720,9 @@ const referrals = {
|
|
|
690
720
|
get: oc.route({
|
|
691
721
|
method: "GET",
|
|
692
722
|
path: "/referral-programs/{id}",
|
|
693
|
-
summary: "Get referral program"
|
|
694
|
-
|
|
723
|
+
summary: "Get referral program",
|
|
724
|
+
inputStructure: "detailed"
|
|
725
|
+
}).input(z.object({ params: z.object({ id: z.string().uuid() }) })).output(referralProgramOutput),
|
|
695
726
|
create: oc.route({
|
|
696
727
|
method: "POST",
|
|
697
728
|
path: "/referral-programs",
|
|
@@ -700,32 +731,52 @@ const referrals = {
|
|
|
700
731
|
update: oc.route({
|
|
701
732
|
method: "PATCH",
|
|
702
733
|
path: "/referral-programs/{id}",
|
|
703
|
-
summary: "Update referral program"
|
|
734
|
+
summary: "Update referral program",
|
|
735
|
+
inputStructure: "detailed"
|
|
704
736
|
}).input(z.object({
|
|
705
|
-
id: z.string().uuid(),
|
|
706
|
-
patch: referralProgramUpdateInput
|
|
737
|
+
params: z.object({ id: z.string().uuid() }),
|
|
738
|
+
body: z.object({ patch: referralProgramUpdateInput })
|
|
707
739
|
})).output(referralProgramOutput),
|
|
708
740
|
delete: oc.route({
|
|
709
741
|
method: "DELETE",
|
|
710
742
|
path: "/referral-programs/{id}",
|
|
711
|
-
summary: "Soft-delete referral program"
|
|
712
|
-
|
|
743
|
+
summary: "Soft-delete referral program",
|
|
744
|
+
inputStructure: "detailed"
|
|
745
|
+
}).input(z.object({ params: z.object({ id: z.string().uuid() }) })).output(z.object({ ok: z.literal(true) }))
|
|
713
746
|
},
|
|
714
747
|
listCodes: oc.route({
|
|
715
748
|
method: "GET",
|
|
716
749
|
path: "/referral-programs/{programId}/codes",
|
|
717
|
-
summary: "List referral codes in a program"
|
|
718
|
-
|
|
750
|
+
summary: "List referral codes in a program",
|
|
751
|
+
inputStructure: "detailed"
|
|
752
|
+
}).input(z.object({
|
|
753
|
+
params: z.object({ programId: z.string().uuid() }),
|
|
754
|
+
query: paginationInput
|
|
755
|
+
})).output(paginatedOutput(referralCodeOutput)),
|
|
719
756
|
listConversions: oc.route({
|
|
720
757
|
method: "GET",
|
|
721
758
|
path: "/referral-codes/{codeId}/conversions",
|
|
722
|
-
summary: "List conversions for a referral code"
|
|
723
|
-
|
|
759
|
+
summary: "List conversions for a referral code",
|
|
760
|
+
inputStructure: "detailed"
|
|
761
|
+
}).input(z.object({
|
|
762
|
+
params: z.object({ codeId: z.string().uuid() }),
|
|
763
|
+
query: paginationInput
|
|
764
|
+
})).output(paginatedOutput(referralConversionOutput)),
|
|
765
|
+
listProgramConversions: oc.route({
|
|
766
|
+
method: "GET",
|
|
767
|
+
path: "/referral-programs/{programId}/conversions",
|
|
768
|
+
summary: "List conversions in a referral program",
|
|
769
|
+
inputStructure: "detailed"
|
|
770
|
+
}).input(z.object({
|
|
771
|
+
params: z.object({ programId: z.string().uuid() }),
|
|
772
|
+
query: paginationInput
|
|
773
|
+
})).output(paginatedOutput(referralProgramConversionOutput)),
|
|
724
774
|
getByCode: oc.route({
|
|
725
775
|
method: "GET",
|
|
726
776
|
path: "/referrals/{code}",
|
|
727
|
-
summary: "Look up a referral code"
|
|
728
|
-
|
|
777
|
+
summary: "Look up a referral code",
|
|
778
|
+
inputStructure: "detailed"
|
|
779
|
+
}).input(z.object({ params: z.object({ code: z.string() }) })).output(referralCodeOutput),
|
|
729
780
|
issue: oc.route({
|
|
730
781
|
method: "POST",
|
|
731
782
|
path: "/referrals/issue",
|
|
@@ -795,7 +846,9 @@ const voucherUpdateInput = voucherCreateInput.omit({
|
|
|
795
846
|
}).partial().extend({ active: z.boolean().optional() });
|
|
796
847
|
const voucherBulkCreateInput = z.object({
|
|
797
848
|
campaignId: z.string().uuid(),
|
|
798
|
-
count: z.number().int().min(1).max(1e5)
|
|
849
|
+
count: z.number().int().min(1).max(1e5),
|
|
850
|
+
discount: voucherDiscount.optional(),
|
|
851
|
+
giftBalance: z.number().int().min(1).optional()
|
|
799
852
|
});
|
|
800
853
|
//#endregion
|
|
801
854
|
//#region ../contract/src/schemas/redemption.ts
|
|
@@ -832,11 +885,14 @@ const breakdownEntry = z.object({
|
|
|
832
885
|
const redemptionExplanation = z.object({
|
|
833
886
|
code: z.enum([
|
|
834
887
|
"voucher_not_found",
|
|
888
|
+
"campaign_inactive",
|
|
835
889
|
"voucher_disabled",
|
|
836
890
|
"voucher_expired",
|
|
837
891
|
"redemption_limit_reached",
|
|
892
|
+
"validation_failed",
|
|
838
893
|
"currency_mismatch",
|
|
839
894
|
"gift_balance_zero",
|
|
895
|
+
"no_discount_effect",
|
|
840
896
|
"order_required",
|
|
841
897
|
"exclusivity_lost",
|
|
842
898
|
"zero_after_running_total",
|
|
@@ -1042,16 +1098,18 @@ const promotions = {
|
|
|
1042
1098
|
update: oc.route({
|
|
1043
1099
|
method: "PATCH",
|
|
1044
1100
|
path: "/promotions/tiers/{id}",
|
|
1045
|
-
summary: "Update promotion tier"
|
|
1101
|
+
summary: "Update promotion tier",
|
|
1102
|
+
inputStructure: "detailed"
|
|
1046
1103
|
}).input(z.object({
|
|
1047
|
-
id: z.string().uuid(),
|
|
1048
|
-
patch: promotionTierUpdateInput
|
|
1104
|
+
params: z.object({ id: z.string().uuid() }),
|
|
1105
|
+
body: z.object({ patch: promotionTierUpdateInput })
|
|
1049
1106
|
})).output(promotionTierOutput),
|
|
1050
1107
|
delete: oc.route({
|
|
1051
1108
|
method: "DELETE",
|
|
1052
1109
|
path: "/promotions/tiers/{id}",
|
|
1053
|
-
summary: "Soft-delete promotion tier"
|
|
1054
|
-
|
|
1110
|
+
summary: "Soft-delete promotion tier",
|
|
1111
|
+
inputStructure: "detailed"
|
|
1112
|
+
}).input(z.object({ params: z.object({ id: z.string().uuid() }) })).output(z.object({ ok: z.literal(true) }))
|
|
1055
1113
|
},
|
|
1056
1114
|
qualify: oc.meta(mcpMeta({
|
|
1057
1115
|
expose: true,
|
|
@@ -1091,8 +1149,9 @@ const rewardTypes = {
|
|
|
1091
1149
|
get: oc.route({
|
|
1092
1150
|
method: "GET",
|
|
1093
1151
|
path: "/reward-types/{id}",
|
|
1094
|
-
summary: "Get reward type"
|
|
1095
|
-
|
|
1152
|
+
summary: "Get reward type",
|
|
1153
|
+
inputStructure: "detailed"
|
|
1154
|
+
}).input(z.object({ params: z.object({ id: z.string().uuid() }) })).output(rewardTypeOutput),
|
|
1096
1155
|
create: oc.route({
|
|
1097
1156
|
method: "POST",
|
|
1098
1157
|
path: "/reward-types",
|
|
@@ -1101,16 +1160,18 @@ const rewardTypes = {
|
|
|
1101
1160
|
update: oc.route({
|
|
1102
1161
|
method: "PATCH",
|
|
1103
1162
|
path: "/reward-types/{id}",
|
|
1104
|
-
summary: "Update reward type"
|
|
1163
|
+
summary: "Update reward type",
|
|
1164
|
+
inputStructure: "detailed"
|
|
1105
1165
|
}).input(z.object({
|
|
1106
|
-
id: z.string().uuid(),
|
|
1107
|
-
patch: rewardTypeUpdateInput
|
|
1166
|
+
params: z.object({ id: z.string().uuid() }),
|
|
1167
|
+
body: z.object({ patch: rewardTypeUpdateInput })
|
|
1108
1168
|
})).output(rewardTypeOutput),
|
|
1109
1169
|
delete: oc.route({
|
|
1110
1170
|
method: "DELETE",
|
|
1111
1171
|
path: "/reward-types/{id}",
|
|
1112
|
-
summary: "Soft-delete reward type"
|
|
1113
|
-
|
|
1172
|
+
summary: "Soft-delete reward type",
|
|
1173
|
+
inputStructure: "detailed"
|
|
1174
|
+
}).input(z.object({ params: z.object({ id: z.string().uuid() }) })).output(z.object({ ok: z.literal(true) }))
|
|
1114
1175
|
};
|
|
1115
1176
|
//#endregion
|
|
1116
1177
|
//#region ../contract/src/schemas/segment.ts
|
|
@@ -1140,8 +1201,9 @@ const segments = {
|
|
|
1140
1201
|
get: oc.route({
|
|
1141
1202
|
method: "GET",
|
|
1142
1203
|
path: "/segments/{id}",
|
|
1143
|
-
summary: "Get segment"
|
|
1144
|
-
|
|
1204
|
+
summary: "Get segment",
|
|
1205
|
+
inputStructure: "detailed"
|
|
1206
|
+
}).input(z.object({ params: z.object({ id: z.string().uuid() }) })).output(segmentOutput),
|
|
1145
1207
|
create: oc.route({
|
|
1146
1208
|
method: "POST",
|
|
1147
1209
|
path: "/segments",
|
|
@@ -1150,16 +1212,18 @@ const segments = {
|
|
|
1150
1212
|
update: oc.route({
|
|
1151
1213
|
method: "PATCH",
|
|
1152
1214
|
path: "/segments/{id}",
|
|
1153
|
-
summary: "Update segment"
|
|
1215
|
+
summary: "Update segment",
|
|
1216
|
+
inputStructure: "detailed"
|
|
1154
1217
|
}).input(z.object({
|
|
1155
|
-
id: z.string().uuid(),
|
|
1156
|
-
patch: segmentUpdateInput
|
|
1218
|
+
params: z.object({ id: z.string().uuid() }),
|
|
1219
|
+
body: z.object({ patch: segmentUpdateInput })
|
|
1157
1220
|
})).output(segmentOutput),
|
|
1158
1221
|
delete: oc.route({
|
|
1159
1222
|
method: "DELETE",
|
|
1160
1223
|
path: "/segments/{id}",
|
|
1161
|
-
summary: "Soft-delete segment"
|
|
1162
|
-
|
|
1224
|
+
summary: "Soft-delete segment",
|
|
1225
|
+
inputStructure: "detailed"
|
|
1226
|
+
}).input(z.object({ params: z.object({ id: z.string().uuid() }) })).output(z.object({ ok: z.literal(true) })),
|
|
1163
1227
|
preview: oc.meta(mcpMeta({
|
|
1164
1228
|
expose: true,
|
|
1165
1229
|
riskLevel: "safe",
|
|
@@ -1211,8 +1275,9 @@ const validationRules = {
|
|
|
1211
1275
|
get: oc.route({
|
|
1212
1276
|
method: "GET",
|
|
1213
1277
|
path: "/validation-rules/{id}",
|
|
1214
|
-
summary: "Get validation rule"
|
|
1215
|
-
|
|
1278
|
+
summary: "Get validation rule",
|
|
1279
|
+
inputStructure: "detailed"
|
|
1280
|
+
}).input(z.object({ params: z.object({ id: z.string().uuid() }) })).output(validationRuleOutput),
|
|
1216
1281
|
create: oc.route({
|
|
1217
1282
|
method: "POST",
|
|
1218
1283
|
path: "/validation-rules",
|
|
@@ -1221,16 +1286,18 @@ const validationRules = {
|
|
|
1221
1286
|
update: oc.route({
|
|
1222
1287
|
method: "PATCH",
|
|
1223
1288
|
path: "/validation-rules/{id}",
|
|
1224
|
-
summary: "Update validation rule"
|
|
1289
|
+
summary: "Update validation rule",
|
|
1290
|
+
inputStructure: "detailed"
|
|
1225
1291
|
}).input(z.object({
|
|
1226
|
-
id: z.string().uuid(),
|
|
1227
|
-
patch: validationRuleUpdateInput
|
|
1292
|
+
params: z.object({ id: z.string().uuid() }),
|
|
1293
|
+
body: z.object({ patch: validationRuleUpdateInput })
|
|
1228
1294
|
})).output(validationRuleOutput),
|
|
1229
1295
|
delete: oc.route({
|
|
1230
1296
|
method: "DELETE",
|
|
1231
1297
|
path: "/validation-rules/{id}",
|
|
1232
|
-
summary: "Soft-delete validation rule"
|
|
1233
|
-
|
|
1298
|
+
summary: "Soft-delete validation rule",
|
|
1299
|
+
inputStructure: "detailed"
|
|
1300
|
+
}).input(z.object({ params: z.object({ id: z.string().uuid() }) })).output(z.object({ ok: z.literal(true) }))
|
|
1234
1301
|
};
|
|
1235
1302
|
//#endregion
|
|
1236
1303
|
//#region ../contract/src/routes/vouchers.ts
|
|
@@ -1254,8 +1321,9 @@ const vouchers = {
|
|
|
1254
1321
|
})).route({
|
|
1255
1322
|
method: "GET",
|
|
1256
1323
|
path: "/vouchers/{code}",
|
|
1257
|
-
summary: "Get voucher by code"
|
|
1258
|
-
|
|
1324
|
+
summary: "Get voucher by code",
|
|
1325
|
+
inputStructure: "detailed"
|
|
1326
|
+
}).input(z.object({ params: z.object({ code: z.string() }) })).output(voucherOutput),
|
|
1259
1327
|
create: oc.route({
|
|
1260
1328
|
method: "POST",
|
|
1261
1329
|
path: "/vouchers",
|
|
@@ -1264,16 +1332,18 @@ const vouchers = {
|
|
|
1264
1332
|
update: oc.route({
|
|
1265
1333
|
method: "PATCH",
|
|
1266
1334
|
path: "/vouchers/{code}",
|
|
1267
|
-
summary: "Update voucher"
|
|
1335
|
+
summary: "Update voucher",
|
|
1336
|
+
inputStructure: "detailed"
|
|
1268
1337
|
}).input(z.object({
|
|
1269
|
-
code: z.string(),
|
|
1270
|
-
patch: voucherUpdateInput
|
|
1338
|
+
params: z.object({ code: z.string() }),
|
|
1339
|
+
body: z.object({ patch: voucherUpdateInput })
|
|
1271
1340
|
})).output(voucherOutput),
|
|
1272
1341
|
delete: oc.route({
|
|
1273
1342
|
method: "DELETE",
|
|
1274
1343
|
path: "/vouchers/{code}",
|
|
1275
|
-
summary: "Soft-delete voucher"
|
|
1276
|
-
|
|
1344
|
+
summary: "Soft-delete voucher",
|
|
1345
|
+
inputStructure: "detailed"
|
|
1346
|
+
}).input(z.object({ params: z.object({ code: z.string() }) })).output(z.object({ ok: z.literal(true) })),
|
|
1277
1347
|
bulk: oc.route({
|
|
1278
1348
|
method: "POST",
|
|
1279
1349
|
path: "/vouchers/bulk",
|
|
@@ -1289,8 +1359,12 @@ const vouchers = {
|
|
|
1289
1359
|
})).route({
|
|
1290
1360
|
method: "POST",
|
|
1291
1361
|
path: "/vouchers/{code}/validate",
|
|
1292
|
-
summary: "Validate a voucher against an optional order context"
|
|
1293
|
-
|
|
1362
|
+
summary: "Validate a voucher against an optional order context",
|
|
1363
|
+
inputStructure: "detailed"
|
|
1364
|
+
}).input(z.object({
|
|
1365
|
+
params: z.object({ code: z.string().min(1) }),
|
|
1366
|
+
body: validateInput.omit({ code: true }).optional()
|
|
1367
|
+
})).output(validateOutput),
|
|
1294
1368
|
qualify: oc.meta(mcpMeta({
|
|
1295
1369
|
expose: true,
|
|
1296
1370
|
riskLevel: "safe"
|
|
@@ -1306,8 +1380,12 @@ const vouchers = {
|
|
|
1306
1380
|
})).route({
|
|
1307
1381
|
method: "POST",
|
|
1308
1382
|
path: "/vouchers/{code}/redemption",
|
|
1309
|
-
summary: "Redeem a voucher"
|
|
1310
|
-
|
|
1383
|
+
summary: "Redeem a voucher",
|
|
1384
|
+
inputStructure: "detailed"
|
|
1385
|
+
}).input(z.object({
|
|
1386
|
+
params: z.object({ code: z.string().min(1) }),
|
|
1387
|
+
body: redeemInput.omit({ code: true }).optional()
|
|
1388
|
+
})).output(redeemOutput),
|
|
1311
1389
|
stackRedeem: oc.meta(mcpMeta({
|
|
1312
1390
|
expose: true,
|
|
1313
1391
|
riskLevel: "mutating",
|
|
@@ -1320,8 +1398,9 @@ const vouchers = {
|
|
|
1320
1398
|
transactions: oc.route({
|
|
1321
1399
|
method: "GET",
|
|
1322
1400
|
path: "/vouchers/{code}/transactions",
|
|
1323
|
-
summary: "Gift card balance ledger"
|
|
1324
|
-
|
|
1401
|
+
summary: "Gift card balance ledger",
|
|
1402
|
+
inputStructure: "detailed"
|
|
1403
|
+
}).input(z.object({ params: z.object({ code: z.string() }) })).output(z.object({ data: z.array(z.object({
|
|
1325
1404
|
id: z.string().uuid(),
|
|
1326
1405
|
redemptionId: z.string().uuid().nullable(),
|
|
1327
1406
|
delta: z.number().int(),
|
|
@@ -1399,8 +1478,9 @@ const webhooks$1 = {
|
|
|
1399
1478
|
get: oc.route({
|
|
1400
1479
|
method: "GET",
|
|
1401
1480
|
path: "/webhooks/{id}",
|
|
1402
|
-
summary: "Get webhook"
|
|
1403
|
-
|
|
1481
|
+
summary: "Get webhook",
|
|
1482
|
+
inputStructure: "detailed"
|
|
1483
|
+
}).input(z.object({ params: z.object({ id: z.string().uuid() }) })).output(webhookOutput),
|
|
1404
1484
|
create: oc.route({
|
|
1405
1485
|
method: "POST",
|
|
1406
1486
|
path: "/webhooks",
|
|
@@ -1409,29 +1489,33 @@ const webhooks$1 = {
|
|
|
1409
1489
|
update: oc.route({
|
|
1410
1490
|
method: "PATCH",
|
|
1411
1491
|
path: "/webhooks/{id}",
|
|
1412
|
-
summary: "Update webhook"
|
|
1492
|
+
summary: "Update webhook",
|
|
1493
|
+
inputStructure: "detailed"
|
|
1413
1494
|
}).input(z.object({
|
|
1414
|
-
id: z.string().uuid(),
|
|
1415
|
-
patch: webhookUpdateInput
|
|
1495
|
+
params: z.object({ id: z.string().uuid() }),
|
|
1496
|
+
body: z.object({ patch: webhookUpdateInput })
|
|
1416
1497
|
})).output(webhookOutput),
|
|
1417
1498
|
delete: oc.route({
|
|
1418
1499
|
method: "DELETE",
|
|
1419
1500
|
path: "/webhooks/{id}",
|
|
1420
|
-
summary: "Soft-delete webhook"
|
|
1421
|
-
|
|
1501
|
+
summary: "Soft-delete webhook",
|
|
1502
|
+
inputStructure: "detailed"
|
|
1503
|
+
}).input(z.object({ params: z.object({ id: z.string().uuid() }) })).output(z.object({ ok: z.literal(true) })),
|
|
1422
1504
|
deliveries: oc.route({
|
|
1423
1505
|
method: "GET",
|
|
1424
1506
|
path: "/webhooks/{id}/deliveries",
|
|
1425
|
-
summary: "Recent deliveries for a webhook"
|
|
1507
|
+
summary: "Recent deliveries for a webhook",
|
|
1508
|
+
inputStructure: "detailed"
|
|
1426
1509
|
}).input(z.object({
|
|
1427
|
-
id: z.string().uuid(),
|
|
1428
|
-
limit: z.number().int().min(1).max(100).default(50)
|
|
1510
|
+
params: z.object({ id: z.string().uuid() }),
|
|
1511
|
+
query: z.object({ limit: z.number().int().min(1).max(100).default(50) })
|
|
1429
1512
|
})).output(z.object({ data: z.array(webhookDeliveryOutput) })),
|
|
1430
1513
|
replay: oc.route({
|
|
1431
1514
|
method: "POST",
|
|
1432
1515
|
path: "/webhooks/deliveries/{id}/replay",
|
|
1433
|
-
summary: "Re-enqueue a delivery (succeeded or otherwise)"
|
|
1434
|
-
|
|
1516
|
+
summary: "Re-enqueue a delivery (succeeded or otherwise)",
|
|
1517
|
+
inputStructure: "detailed"
|
|
1518
|
+
}).input(z.object({ params: z.object({ id: z.string().uuid() }) })).output(z.object({ ok: z.literal(true) }))
|
|
1435
1519
|
};
|
|
1436
1520
|
const events = {
|
|
1437
1521
|
list: oc.route({
|
|
@@ -1442,8 +1526,9 @@ const events = {
|
|
|
1442
1526
|
get: oc.route({
|
|
1443
1527
|
method: "GET",
|
|
1444
1528
|
path: "/events/{id}",
|
|
1445
|
-
summary: "Get event"
|
|
1446
|
-
|
|
1529
|
+
summary: "Get event",
|
|
1530
|
+
inputStructure: "detailed"
|
|
1531
|
+
}).input(z.object({ params: z.object({ id: z.string().uuid() }) })).output(eventOutput)
|
|
1447
1532
|
};
|
|
1448
1533
|
//#endregion
|
|
1449
1534
|
//#region ../contract/src/routes/insights.ts
|
|
@@ -1522,26 +1607,30 @@ const users = {
|
|
|
1522
1607
|
resetPassword: oc.route({
|
|
1523
1608
|
method: "POST",
|
|
1524
1609
|
path: "/users/{id}/reset-password",
|
|
1525
|
-
summary: "Reset a staff user's password (admin)"
|
|
1526
|
-
|
|
1610
|
+
summary: "Reset a staff user's password (admin)",
|
|
1611
|
+
inputStructure: "detailed"
|
|
1612
|
+
}).input(z.object({ params: z.object({ id: z.string() }) })).output(userCreateOutput),
|
|
1527
1613
|
setRole: oc.route({
|
|
1528
1614
|
method: "PATCH",
|
|
1529
1615
|
path: "/users/{id}/role",
|
|
1530
|
-
summary: "Change a staff user's role (admin)"
|
|
1616
|
+
summary: "Change a staff user's role (admin)",
|
|
1617
|
+
inputStructure: "detailed"
|
|
1531
1618
|
}).input(z.object({
|
|
1532
|
-
id: z.string(),
|
|
1533
|
-
role: userRole
|
|
1619
|
+
params: z.object({ id: z.string() }),
|
|
1620
|
+
body: z.object({ role: userRole })
|
|
1534
1621
|
})).output(userOutput),
|
|
1535
1622
|
disable: oc.route({
|
|
1536
1623
|
method: "POST",
|
|
1537
1624
|
path: "/users/{id}/disable",
|
|
1538
|
-
summary: "Disable a staff user (admin)"
|
|
1539
|
-
|
|
1625
|
+
summary: "Disable a staff user (admin)",
|
|
1626
|
+
inputStructure: "detailed"
|
|
1627
|
+
}).input(z.object({ params: z.object({ id: z.string() }) })).output(userOutput),
|
|
1540
1628
|
enable: oc.route({
|
|
1541
1629
|
method: "POST",
|
|
1542
1630
|
path: "/users/{id}/enable",
|
|
1543
|
-
summary: "Re-enable a staff user (admin)"
|
|
1544
|
-
|
|
1631
|
+
summary: "Re-enable a staff user (admin)",
|
|
1632
|
+
inputStructure: "detailed"
|
|
1633
|
+
}).input(z.object({ params: z.object({ id: z.string() }) })).output(userOutput)
|
|
1545
1634
|
};
|
|
1546
1635
|
//#endregion
|
|
1547
1636
|
//#region ../contract/src/schemas/order.ts
|
|
@@ -1607,8 +1696,9 @@ const orders = {
|
|
|
1607
1696
|
get: oc.route({
|
|
1608
1697
|
method: "GET",
|
|
1609
1698
|
path: "/orders/{id}",
|
|
1610
|
-
summary: "Fetch one order"
|
|
1611
|
-
|
|
1699
|
+
summary: "Fetch one order",
|
|
1700
|
+
inputStructure: "detailed"
|
|
1701
|
+
}).input(z.object({ params: z.object({ id: z.string().uuid() }) })).output(orderOutput),
|
|
1612
1702
|
create: oc.route({
|
|
1613
1703
|
method: "POST",
|
|
1614
1704
|
path: "/orders",
|
|
@@ -1617,28 +1707,36 @@ const orders = {
|
|
|
1617
1707
|
update: oc.route({
|
|
1618
1708
|
method: "PATCH",
|
|
1619
1709
|
path: "/orders/{id}",
|
|
1620
|
-
summary: "Update an order"
|
|
1621
|
-
|
|
1710
|
+
summary: "Update an order",
|
|
1711
|
+
inputStructure: "detailed"
|
|
1712
|
+
}).input(z.object({
|
|
1713
|
+
params: z.object({ id: z.string().uuid() }),
|
|
1714
|
+
body: orderUpdateInput.omit({ id: true })
|
|
1715
|
+
})).output(orderOutput),
|
|
1622
1716
|
cancel: oc.route({
|
|
1623
1717
|
method: "POST",
|
|
1624
1718
|
path: "/orders/{id}/cancel",
|
|
1625
|
-
summary: "Cancel an order"
|
|
1626
|
-
|
|
1719
|
+
summary: "Cancel an order",
|
|
1720
|
+
inputStructure: "detailed"
|
|
1721
|
+
}).input(z.object({ params: z.object({ id: z.string().uuid() }) })).output(orderOutput),
|
|
1627
1722
|
fulfill: oc.route({
|
|
1628
1723
|
method: "POST",
|
|
1629
1724
|
path: "/orders/{id}/fulfill",
|
|
1630
|
-
summary: "Mark order fulfilled"
|
|
1631
|
-
|
|
1725
|
+
summary: "Mark order fulfilled",
|
|
1726
|
+
inputStructure: "detailed"
|
|
1727
|
+
}).input(z.object({ params: z.object({ id: z.string().uuid() }) })).output(orderOutput),
|
|
1632
1728
|
delete: oc.route({
|
|
1633
1729
|
method: "DELETE",
|
|
1634
1730
|
path: "/orders/{id}",
|
|
1635
|
-
summary: "Soft-delete an order"
|
|
1636
|
-
|
|
1731
|
+
summary: "Soft-delete an order",
|
|
1732
|
+
inputStructure: "detailed"
|
|
1733
|
+
}).input(z.object({ params: z.object({ id: z.string().uuid() }) })).output(z.object({ ok: z.literal(true) })),
|
|
1637
1734
|
redemptions: oc.route({
|
|
1638
1735
|
method: "GET",
|
|
1639
1736
|
path: "/orders/{id}/redemptions",
|
|
1640
|
-
summary: "List redemptions attached to an order"
|
|
1641
|
-
|
|
1737
|
+
summary: "List redemptions attached to an order",
|
|
1738
|
+
inputStructure: "detailed"
|
|
1739
|
+
}).input(z.object({ params: z.object({ id: z.string().uuid() }) })).output(z.object({ data: z.array(z.object({
|
|
1642
1740
|
id: z.string().uuid(),
|
|
1643
1741
|
voucherCode: z.string(),
|
|
1644
1742
|
voucherId: z.string().uuid(),
|