@payark/sdk-effect 0.1.5 → 0.1.6

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.
@@ -0,0 +1,430 @@
1
+ 'use strict';
2
+
3
+ var platform = require('@effect/platform');
4
+ var effect = require('effect');
5
+
6
+ // src/api-spec.ts
7
+ var NonEmptyString = effect.Schema.String.pipe(
8
+ effect.Schema.nonEmptyString(),
9
+ effect.Schema.brand("NonEmptyString")
10
+ );
11
+ var UrlString = effect.Schema.String.pipe(
12
+ effect.Schema.pattern(/^https?:\/\/.+/),
13
+ effect.Schema.brand("UrlString")
14
+ );
15
+ var MinorUnitsInt = effect.Schema.Number.pipe(
16
+ effect.Schema.int(),
17
+ effect.Schema.greaterThan(0),
18
+ effect.Schema.brand("MinorUnitsInt")
19
+ );
20
+
21
+ // src/schemas.ts
22
+ var Id = effect.Schema.String.pipe(effect.Schema.brand("Id"));
23
+ var ProjectId = effect.Schema.String.pipe(effect.Schema.brand("ProjectId"));
24
+ var PaymentId = effect.Schema.String.pipe(effect.Schema.brand("PaymentId"));
25
+ var CheckoutSessionId = effect.Schema.String.pipe(
26
+ effect.Schema.brand("CheckoutSessionId")
27
+ );
28
+ var SubscriptionId = effect.Schema.String.pipe(
29
+ effect.Schema.brand("SubscriptionId")
30
+ );
31
+ var CustomerId = effect.Schema.String.pipe(effect.Schema.brand("CustomerId"));
32
+ var TokenId = effect.Schema.String.pipe(effect.Schema.brand("TokenId"));
33
+ var Email = effect.Schema.String.pipe(
34
+ effect.Schema.filter((s) => s.includes("@")),
35
+ effect.Schema.brand("Email")
36
+ );
37
+ var Timestamp = effect.Schema.String.pipe(effect.Schema.brand("Timestamp"));
38
+ var Metadata = effect.Schema.Record({
39
+ key: effect.Schema.String,
40
+ value: effect.Schema.Any
41
+ });
42
+ effect.Schema.Struct({
43
+ created_at: Timestamp,
44
+ updated_at: Timestamp
45
+ });
46
+ var Provider = effect.Schema.Literal(
47
+ "esewa",
48
+ "khalti",
49
+ "connectips",
50
+ "imepay",
51
+ "fonepay",
52
+ "sandbox"
53
+ );
54
+ var PaymentStatus = effect.Schema.Literal("pending", "success", "failed");
55
+ var SubscriptionStatus = effect.Schema.Literal(
56
+ "active",
57
+ "past_due",
58
+ "canceled",
59
+ "paused"
60
+ );
61
+ var SubscriptionInterval = effect.Schema.Literal("month", "year", "week");
62
+ var Customer = effect.Schema.Struct({
63
+ id: CustomerId,
64
+ merchant_customer_id: NonEmptyString,
65
+ email: effect.Schema.NullOr(Email),
66
+ name: effect.Schema.NullOr(NonEmptyString),
67
+ phone: effect.Schema.NullOr(effect.Schema.String),
68
+ project_id: ProjectId,
69
+ metadata: effect.Schema.NullOr(Metadata),
70
+ created_at: Timestamp,
71
+ updated_at: effect.Schema.optional(Timestamp)
72
+ });
73
+ var Payment = effect.Schema.Struct({
74
+ id: PaymentId,
75
+ project_id: ProjectId,
76
+ amount: effect.Schema.Number,
77
+ currency: effect.Schema.String,
78
+ status: PaymentStatus,
79
+ provider_ref: effect.Schema.optional(effect.Schema.NullOr(effect.Schema.String)),
80
+ metadata_json: effect.Schema.optional(effect.Schema.NullOr(Metadata)),
81
+ gateway_response: effect.Schema.optional(effect.Schema.NullOr(effect.Schema.Any)),
82
+ created_at: Timestamp,
83
+ updated_at: effect.Schema.optional(Timestamp)
84
+ });
85
+ var Subscription = effect.Schema.Struct({
86
+ id: SubscriptionId,
87
+ project_id: ProjectId,
88
+ customer_id: CustomerId,
89
+ status: SubscriptionStatus,
90
+ amount: effect.Schema.Number,
91
+ currency: effect.Schema.String,
92
+ interval: SubscriptionInterval,
93
+ interval_count: effect.Schema.Number,
94
+ current_period_start: Timestamp,
95
+ current_period_end: Timestamp,
96
+ payment_link: UrlString,
97
+ auto_send_link: effect.Schema.Boolean,
98
+ metadata: effect.Schema.optional(effect.Schema.NullOr(Metadata)),
99
+ canceled_at: effect.Schema.optional(effect.Schema.NullOr(Timestamp)),
100
+ created_at: Timestamp,
101
+ updated_at: effect.Schema.optional(Timestamp)
102
+ });
103
+ var Project = effect.Schema.Struct({
104
+ id: ProjectId,
105
+ name: NonEmptyString,
106
+ api_key_secret: effect.Schema.String,
107
+ created_at: Timestamp
108
+ });
109
+ var Token = effect.Schema.Struct({
110
+ id: TokenId,
111
+ name: NonEmptyString,
112
+ scopes: effect.Schema.Array(effect.Schema.String),
113
+ last_used_at: effect.Schema.NullOr(Timestamp),
114
+ expires_at: effect.Schema.NullOr(Timestamp),
115
+ created_at: Timestamp
116
+ });
117
+ var PaginationMeta = effect.Schema.Struct({
118
+ total: effect.Schema.NullOr(effect.Schema.Number),
119
+ limit: effect.Schema.Number,
120
+ offset: effect.Schema.Number
121
+ });
122
+ var PaginatedResponse = (schema) => effect.Schema.Struct({
123
+ data: effect.Schema.Array(schema),
124
+ meta: PaginationMeta
125
+ });
126
+ var WebhookEventType = effect.Schema.Literal(
127
+ "payment.success",
128
+ "payment.failed",
129
+ "subscription.created",
130
+ "subscription.payment_succeeded",
131
+ "subscription.payment_failed",
132
+ "subscription.renewal_due",
133
+ "subscription.canceled"
134
+ );
135
+ effect.Schema.Struct({
136
+ type: WebhookEventType,
137
+ id: effect.Schema.optional(effect.Schema.String),
138
+ data: effect.Schema.Union(
139
+ Payment,
140
+ Subscription,
141
+ Customer,
142
+ effect.Schema.Struct({
143
+ id: effect.Schema.String,
144
+ amount: effect.Schema.optional(effect.Schema.Number),
145
+ currency: effect.Schema.optional(effect.Schema.String),
146
+ status: effect.Schema.String,
147
+ metadata: effect.Schema.optional(Metadata)
148
+ })
149
+ ),
150
+ is_test: effect.Schema.Boolean,
151
+ created: effect.Schema.optional(effect.Schema.Number)
152
+ });
153
+ var CreateCheckoutParams = effect.Schema.Struct({
154
+ amount: effect.Schema.optional(MinorUnitsInt),
155
+ currency: effect.Schema.optionalWith(effect.Schema.String, { default: () => "NPR" }),
156
+ provider: Provider,
157
+ returnUrl: UrlString,
158
+ cancelUrl: effect.Schema.optional(UrlString),
159
+ metadata: effect.Schema.optional(Metadata),
160
+ subscriptionId: effect.Schema.optional(SubscriptionId)
161
+ }).pipe(
162
+ effect.Schema.filter((data) => {
163
+ if (!data.subscriptionId && !data.amount) {
164
+ return "amount is required when subscriptionId is not provided";
165
+ }
166
+ return true;
167
+ })
168
+ );
169
+ var CheckoutSession = effect.Schema.Struct({
170
+ id: CheckoutSessionId,
171
+ checkout_url: UrlString,
172
+ payment_method: effect.Schema.Struct({
173
+ type: Provider,
174
+ url: effect.Schema.optional(UrlString),
175
+ method: effect.Schema.optional(effect.Schema.Literal("GET", "POST")),
176
+ fields: effect.Schema.optional(
177
+ effect.Schema.Record({ key: effect.Schema.String, value: effect.Schema.String })
178
+ )
179
+ })
180
+ });
181
+ var CreateCustomerParams = effect.Schema.Struct({
182
+ merchant_customer_id: NonEmptyString,
183
+ email: effect.Schema.optional(Email),
184
+ name: effect.Schema.optional(NonEmptyString),
185
+ phone: effect.Schema.optional(effect.Schema.String),
186
+ project_id: effect.Schema.optional(ProjectId),
187
+ metadata: effect.Schema.optional(Metadata)
188
+ });
189
+ var ListPaymentsParams = effect.Schema.Struct({
190
+ limit: effect.Schema.optional(effect.Schema.NumberFromString),
191
+ offset: effect.Schema.optional(effect.Schema.NumberFromString),
192
+ projectId: effect.Schema.optional(ProjectId)
193
+ });
194
+ var ListCustomersParams = effect.Schema.Struct({
195
+ limit: effect.Schema.optional(effect.Schema.NumberFromString),
196
+ offset: effect.Schema.optional(effect.Schema.NumberFromString),
197
+ email: effect.Schema.optional(effect.Schema.String),
198
+ merchant_customer_id: effect.Schema.optional(effect.Schema.String),
199
+ projectId: effect.Schema.optional(ProjectId)
200
+ });
201
+ var UpdateCustomerParams = effect.Schema.Struct({
202
+ email: effect.Schema.optional(Email),
203
+ name: effect.Schema.optional(NonEmptyString),
204
+ phone: effect.Schema.optional(effect.Schema.String),
205
+ metadata: effect.Schema.optional(Metadata)
206
+ });
207
+ var CreateSubscriptionParams = effect.Schema.Struct({
208
+ customer_id: CustomerId,
209
+ amount: MinorUnitsInt,
210
+ currency: effect.Schema.optionalWith(effect.Schema.String, { default: () => "NPR" }),
211
+ interval: SubscriptionInterval,
212
+ interval_count: effect.Schema.optional(effect.Schema.Number),
213
+ project_id: effect.Schema.optional(ProjectId),
214
+ auto_send_link: effect.Schema.optional(effect.Schema.Boolean),
215
+ metadata: effect.Schema.optional(Metadata)
216
+ });
217
+ var CallbackQueryParams = effect.Schema.Struct({
218
+ payment_id: effect.Schema.optional(effect.Schema.String),
219
+ data: effect.Schema.optional(effect.Schema.String),
220
+ pidx: effect.Schema.optional(effect.Schema.String)
221
+ });
222
+ var ListSubscriptionsParams = effect.Schema.Struct({
223
+ limit: effect.Schema.optional(effect.Schema.NumberFromString),
224
+ offset: effect.Schema.optional(effect.Schema.NumberFromString),
225
+ projectId: effect.Schema.optional(ProjectId),
226
+ customerId: effect.Schema.optional(CustomerId),
227
+ status: effect.Schema.optional(SubscriptionStatus)
228
+ });
229
+ var RealtimeTriggerPayload = effect.Schema.Struct({
230
+ event: effect.Schema.optional(WebhookEventType),
231
+ data: effect.Schema.optional(effect.Schema.Any)
232
+ });
233
+ effect.Schema.Struct({
234
+ apiKey: effect.Schema.String,
235
+ baseUrl: effect.Schema.optional(effect.Schema.String),
236
+ timeout: effect.Schema.optional(effect.Schema.Number),
237
+ maxRetries: effect.Schema.optional(effect.Schema.Number),
238
+ sandbox: effect.Schema.optional(effect.Schema.Boolean)
239
+ });
240
+ effect.Schema.Struct({
241
+ error: effect.Schema.String,
242
+ details: effect.Schema.optional(effect.Schema.Any)
243
+ });
244
+ var IndustrialError = class extends effect.Schema.TaggedError()(
245
+ "IndustrialError",
246
+ {
247
+ error: effect.Schema.String,
248
+ details: effect.Schema.optional(effect.Schema.Any)
249
+ }
250
+ ) {
251
+ };
252
+ var AuthenticationError = class extends effect.Schema.TaggedError()(
253
+ "AuthenticationError",
254
+ {
255
+ error: effect.Schema.String
256
+ }
257
+ ) {
258
+ };
259
+ var NotFoundError = class extends effect.Schema.TaggedError()(
260
+ "NotFoundError",
261
+ {
262
+ error: effect.Schema.String
263
+ }
264
+ ) {
265
+ };
266
+ var InternalServerError = class extends effect.Schema.TaggedError()(
267
+ "InternalServerError",
268
+ {
269
+ error: effect.Schema.String,
270
+ details: effect.Schema.optional(effect.Schema.Any)
271
+ }
272
+ ) {
273
+ };
274
+ var ConflictError = class extends effect.Schema.TaggedError()(
275
+ "ConflictError",
276
+ {
277
+ error: effect.Schema.String
278
+ }
279
+ ) {
280
+ };
281
+ var AuthContext = effect.Context.GenericTag(
282
+ "@payark/sdk-effect/AuthContext"
283
+ );
284
+ var SecurityMiddleware = class extends platform.HttpApiMiddleware.Tag()(
285
+ "SecurityMiddleware",
286
+ {
287
+ security: {
288
+ bearer: platform.HttpApiSecurity.bearer
289
+ },
290
+ provides: AuthContext,
291
+ failure: effect.Schema.Union(AuthenticationError, IndustrialError)
292
+ }
293
+ ) {
294
+ };
295
+ var CronSecurity = class extends platform.HttpApiMiddleware.Tag()(
296
+ "CronSecurity",
297
+ {
298
+ security: {
299
+ secret: platform.HttpApiSecurity.apiKey({ in: "header", key: "x-cron-secret" })
300
+ },
301
+ failure: effect.Schema.Union(AuthenticationError, IndustrialError)
302
+ }
303
+ ) {
304
+ };
305
+ var UserSecurity = class extends platform.HttpApiMiddleware.Tag()(
306
+ "UserSecurity",
307
+ {
308
+ security: {
309
+ bearer: platform.HttpApiSecurity.bearer
310
+ },
311
+ provides: AuthContext,
312
+ failure: effect.Schema.Union(AuthenticationError, IndustrialError)
313
+ }
314
+ ) {
315
+ };
316
+ var CheckoutGroup = platform.HttpApiGroup.make("checkout").add(
317
+ platform.HttpApiEndpoint.post("create", "/").addSuccess(CheckoutSession).setPayload(CreateCheckoutParams).addError(AuthenticationError, { status: 401 }).addError(InternalServerError, { status: 500 }).addError(IndustrialError, { status: 400 })
318
+ ).prefix("/v1/checkout").middleware(SecurityMiddleware);
319
+ var PaymentsGroup = platform.HttpApiGroup.make("payments").add(
320
+ platform.HttpApiEndpoint.get("list", "/").addSuccess(PaginatedResponse(Payment)).setUrlParams(ListPaymentsParams).addError(AuthenticationError, { status: 401 }).addError(InternalServerError, { status: 500 }).addError(IndustrialError, { status: 400 })
321
+ ).add(
322
+ platform.HttpApiEndpoint.get("retrieve", "/:id").addSuccess(Payment).setPath(effect.Schema.Struct({ id: Id })).addError(AuthenticationError, { status: 401 }).addError(NotFoundError, { status: 404 }).addError(InternalServerError, { status: 500 }).addError(IndustrialError, { status: 400 })
323
+ ).prefix("/v1/payments").middleware(SecurityMiddleware);
324
+ var CustomersGroup = platform.HttpApiGroup.make("customers").add(
325
+ platform.HttpApiEndpoint.post("create", "/").addSuccess(Customer, { status: 201 }).setPayload(CreateCustomerParams).addError(AuthenticationError, { status: 401 }).addError(ConflictError, { status: 409 }).addError(InternalServerError, { status: 500 }).addError(IndustrialError, { status: 400 })
326
+ ).add(
327
+ platform.HttpApiEndpoint.get("list", "/").addSuccess(PaginatedResponse(Customer)).setUrlParams(ListCustomersParams).addError(AuthenticationError, { status: 401 }).addError(InternalServerError, { status: 500 }).addError(IndustrialError, { status: 400 })
328
+ ).add(
329
+ platform.HttpApiEndpoint.get("retrieve", "/:id").addSuccess(Customer).setPath(effect.Schema.Struct({ id: Id })).addError(AuthenticationError, { status: 401 }).addError(NotFoundError, { status: 404 }).addError(InternalServerError, { status: 500 }).addError(IndustrialError, { status: 400 })
330
+ ).add(
331
+ platform.HttpApiEndpoint.patch("update", "/:id").addSuccess(Customer).setPath(effect.Schema.Struct({ id: Id })).setPayload(UpdateCustomerParams).addError(AuthenticationError, { status: 401 }).addError(NotFoundError, { status: 404 }).addError(ConflictError, { status: 409 }).addError(InternalServerError, { status: 500 }).addError(IndustrialError, { status: 400 })
332
+ ).add(
333
+ platform.HttpApiEndpoint.del("delete", "/:id").setPath(effect.Schema.Struct({ id: Id })).addError(AuthenticationError, { status: 401 }).addError(NotFoundError, { status: 404 }).addError(ConflictError, { status: 409 }).addError(InternalServerError, { status: 500 }).addError(IndustrialError, { status: 400 })
334
+ ).prefix("/v1/customers").middleware(SecurityMiddleware);
335
+ var SubscriptionsGroup = platform.HttpApiGroup.make("subscriptions").add(
336
+ platform.HttpApiEndpoint.post("create", "/").addSuccess(Subscription, { status: 201 }).setPayload(CreateSubscriptionParams).addError(AuthenticationError, { status: 401 }).addError(InternalServerError, { status: 500 }).addError(IndustrialError, { status: 400 }).middleware(SecurityMiddleware)
337
+ ).add(
338
+ platform.HttpApiEndpoint.get("retrieve", "/:id").addSuccess(Subscription).setPath(effect.Schema.Struct({ id: SubscriptionId })).addError(AuthenticationError, { status: 401 }).addError(NotFoundError, { status: 404 }).addError(InternalServerError, { status: 500 }).middleware(SecurityMiddleware)
339
+ ).add(
340
+ platform.HttpApiEndpoint.get("list", "/").addSuccess(PaginatedResponse(Subscription)).setUrlParams(ListSubscriptionsParams).addError(AuthenticationError, { status: 401 }).addError(InternalServerError, { status: 500 }).middleware(SecurityMiddleware)
341
+ ).add(
342
+ platform.HttpApiEndpoint.post("cancel", "/:id/cancel").addSuccess(Subscription).setPath(effect.Schema.Struct({ id: SubscriptionId })).addError(AuthenticationError, { status: 401 }).addError(NotFoundError, { status: 404 }).addError(InternalServerError, { status: 500 }).middleware(SecurityMiddleware)
343
+ ).add(
344
+ platform.HttpApiEndpoint.post("activate", "/:id/activate").addSuccess(
345
+ effect.Schema.Struct({
346
+ checkout_url: effect.Schema.String,
347
+ payment_id: effect.Schema.String
348
+ })
349
+ ).setPath(effect.Schema.Struct({ id: SubscriptionId })).setPayload(
350
+ effect.Schema.Struct({
351
+ provider: Provider,
352
+ returnUrl: effect.Schema.String,
353
+ cancelUrl: effect.Schema.optional(effect.Schema.String)
354
+ })
355
+ ).addError(NotFoundError, { status: 404 }).addError(InternalServerError, { status: 500 }).addError(IndustrialError, { status: 400 })
356
+ ).prefix("/v1/subscriptions");
357
+ var AutomationGroup = platform.HttpApiGroup.make("automation").add(
358
+ platform.HttpApiEndpoint.post("reminders", "/reminders").addSuccess(
359
+ effect.Schema.Struct({
360
+ message: effect.Schema.String,
361
+ count: effect.Schema.Number
362
+ })
363
+ ).addError(InternalServerError, { status: 500 })
364
+ ).add(
365
+ platform.HttpApiEndpoint.post("reaper", "/reaper").addSuccess(
366
+ effect.Schema.Struct({
367
+ message: effect.Schema.String,
368
+ count: effect.Schema.Number
369
+ })
370
+ ).addError(InternalServerError, { status: 500 })
371
+ ).prefix("/v1/automation").middleware(CronSecurity);
372
+ var TokensGroup = platform.HttpApiGroup.make("tokens").add(
373
+ platform.HttpApiEndpoint.post("create", "/").addSuccess(
374
+ effect.Schema.Struct({
375
+ ...Token.fields,
376
+ token: effect.Schema.String
377
+ })
378
+ ).setPayload(
379
+ effect.Schema.Struct({
380
+ name: effect.Schema.String,
381
+ scopes: effect.Schema.optionalWith(effect.Schema.Array(effect.Schema.String), {
382
+ default: () => []
383
+ }),
384
+ expires_in_days: effect.Schema.optional(effect.Schema.Number)
385
+ })
386
+ ).addError(AuthenticationError, { status: 401 }).addError(InternalServerError, { status: 500 })
387
+ ).add(
388
+ platform.HttpApiEndpoint.get("list", "/").addSuccess(effect.Schema.Array(Token)).addError(AuthenticationError, { status: 401 }).addError(InternalServerError, { status: 500 })
389
+ ).add(
390
+ platform.HttpApiEndpoint.del("delete", "/:id").setPath(effect.Schema.Struct({ id: TokenId })).addSuccess(effect.Schema.Null).addError(AuthenticationError, { status: 401 }).addError(NotFoundError, { status: 404 }).addError(InternalServerError, { status: 500 })
391
+ ).prefix("/v1/tokens").middleware(UserSecurity);
392
+ var ProjectsGroup = platform.HttpApiGroup.make("projects").add(
393
+ platform.HttpApiEndpoint.get("list", "/").addSuccess(effect.Schema.Array(Project)).addError(AuthenticationError, { status: 401 }).addError(InternalServerError, { status: 500 })
394
+ ).prefix("/v1/projects").middleware(SecurityMiddleware);
395
+ var CallbacksGroup = platform.HttpApiGroup.make("callbacks").add(
396
+ platform.HttpApiEndpoint.get("handle", "/:provider").addSuccess(effect.Schema.Any).setPath(effect.Schema.Struct({ provider: effect.Schema.String })).setUrlParams(CallbackQueryParams).addError(NotFoundError, { status: 404 }).addError(InternalServerError, { status: 500 }).addError(IndustrialError, { status: 400 })
397
+ ).prefix("/v1/callback");
398
+ var RealtimeGroup = platform.HttpApiGroup.make("realtime").add(
399
+ platform.HttpApiEndpoint.get("connect", "/").addSuccess(effect.Schema.Any).setUrlParams(effect.Schema.Struct({ token: effect.Schema.String })).addError(AuthenticationError, { status: 401 }).addError(InternalServerError, { status: 500 })
400
+ ).add(
401
+ platform.HttpApiEndpoint.post("trigger", "/trigger").addSuccess(
402
+ effect.Schema.Struct({
403
+ status: effect.Schema.String,
404
+ event: effect.Schema.optional(effect.Schema.String)
405
+ })
406
+ ).setPayload(RealtimeTriggerPayload).setUrlParams(effect.Schema.Struct({ token: effect.Schema.optional(effect.Schema.String) })).addError(AuthenticationError, { status: 401 }).addError(InternalServerError, { status: 500 })
407
+ ).prefix("/v1/realtime");
408
+ var PayArkApi = platform.HttpApi.make("PayArkApi").add(CheckoutGroup).add(PaymentsGroup).add(CustomersGroup).add(SubscriptionsGroup).add(AutomationGroup).add(TokensGroup).add(ProjectsGroup).add(CallbacksGroup).add(RealtimeGroup).addError(AuthenticationError, { status: 401 }).addError(NotFoundError, { status: 404 }).addError(ConflictError, { status: 409 }).addError(InternalServerError, { status: 500 }).addError(IndustrialError, { status: 400 });
409
+
410
+ exports.AuthContext = AuthContext;
411
+ exports.AuthenticationError = AuthenticationError;
412
+ exports.AutomationGroup = AutomationGroup;
413
+ exports.CallbacksGroup = CallbacksGroup;
414
+ exports.CheckoutGroup = CheckoutGroup;
415
+ exports.ConflictError = ConflictError;
416
+ exports.CronSecurity = CronSecurity;
417
+ exports.CustomersGroup = CustomersGroup;
418
+ exports.IndustrialError = IndustrialError;
419
+ exports.InternalServerError = InternalServerError;
420
+ exports.NotFoundError = NotFoundError;
421
+ exports.PayArkApi = PayArkApi;
422
+ exports.PaymentsGroup = PaymentsGroup;
423
+ exports.ProjectsGroup = ProjectsGroup;
424
+ exports.RealtimeGroup = RealtimeGroup;
425
+ exports.SecurityMiddleware = SecurityMiddleware;
426
+ exports.SubscriptionsGroup = SubscriptionsGroup;
427
+ exports.TokensGroup = TokensGroup;
428
+ exports.UserSecurity = UserSecurity;
429
+ //# sourceMappingURL=api-spec.js.map
430
+ //# sourceMappingURL=api-spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/schemas/validation.ts","../src/schemas.ts","../src/api-spec.ts"],"names":["Schema","Context","HttpApiMiddleware","HttpApiSecurity","HttpApiGroup","HttpApiEndpoint","HttpApi"],"mappings":"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","file":"api-spec.js","sourcesContent":["import { Schema } from \"effect\";\n\n/**\n * ── Refinements ──\n */\n\nexport const NonEmptyString = Schema.String.pipe(\n Schema.nonEmptyString(),\n Schema.brand(\"NonEmptyString\"),\n);\nexport type NonEmptyString = Schema.Schema.Type<typeof NonEmptyString>;\n\nexport const UrlString = Schema.String.pipe(\n Schema.pattern(/^https?:\\/\\/.+/),\n Schema.brand(\"UrlString\"),\n);\nexport type UrlString = Schema.Schema.Type<typeof UrlString>;\n\nexport const MinorUnitsInt = Schema.Number.pipe(\n Schema.int(),\n Schema.greaterThan(0),\n Schema.brand(\"MinorUnitsInt\"),\n);\nexport type MinorUnitsInt = Schema.Schema.Type<typeof MinorUnitsInt>;\n","import { Schema } from \"effect\";\nimport * as V from \"./schemas/validation\";\n\n/**\n * ── Branded Types ──\n */\nexport const Id = Schema.String.pipe(Schema.brand(\"Id\"));\nexport const ProjectId = Schema.String.pipe(Schema.brand(\"ProjectId\"));\nexport const PaymentId = Schema.String.pipe(Schema.brand(\"PaymentId\"));\nexport const CheckoutSessionId = Schema.String.pipe(\n Schema.brand(\"CheckoutSessionId\"),\n);\nexport const SubscriptionId = Schema.String.pipe(\n Schema.brand(\"SubscriptionId\"),\n);\nexport const CustomerId = Schema.String.pipe(Schema.brand(\"CustomerId\"));\nexport const TokenId = Schema.String.pipe(Schema.brand(\"TokenId\"));\n\nexport type Id = Schema.Schema.Type<typeof Id>;\nexport type ProjectId = Schema.Schema.Type<typeof ProjectId>;\nexport type PaymentId = Schema.Schema.Type<typeof PaymentId>;\nexport type CheckoutSessionId = Schema.Schema.Type<typeof CheckoutSessionId>;\nexport type SubscriptionId = Schema.Schema.Type<typeof SubscriptionId>;\nexport type CustomerId = Schema.Schema.Type<typeof CustomerId>;\nexport type TokenId = Schema.Schema.Type<typeof TokenId>;\n\n/**\n * ── Atomic Atoms ──\n */\nexport const Email = Schema.String.pipe(\n Schema.filter((s) => s.includes(\"@\")),\n Schema.brand(\"Email\"),\n);\nexport type Email = Schema.Schema.Type<typeof Email>;\n\nexport const Timestamp = Schema.String.pipe(Schema.brand(\"Timestamp\"));\nexport type Timestamp = Schema.Schema.Type<typeof Timestamp>;\n\nexport const Metadata = Schema.Record({\n key: Schema.String,\n value: Schema.Any,\n});\nexport type Metadata = Schema.Schema.Type<typeof Metadata>;\n\nexport const Timestamps = Schema.Struct({\n created_at: Timestamp,\n updated_at: Timestamp,\n});\nexport type Timestamps = Schema.Schema.Type<typeof Timestamps>;\n\n/**\n * ── Enums ──\n */\nexport const Provider = Schema.Literal(\n \"esewa\",\n \"khalti\",\n \"connectips\",\n \"imepay\",\n \"fonepay\",\n \"sandbox\",\n);\nexport type Provider = Schema.Schema.Type<typeof Provider>;\n\nexport const PaymentStatus = Schema.Literal(\"pending\", \"success\", \"failed\");\nexport type PaymentStatus = Schema.Schema.Type<typeof PaymentStatus>;\n\nexport const SubscriptionStatus = Schema.Literal(\n \"active\",\n \"past_due\",\n \"canceled\",\n \"paused\",\n);\nexport type SubscriptionStatus = Schema.Schema.Type<typeof SubscriptionStatus>;\n\nexport const SubscriptionInterval = Schema.Literal(\"month\", \"year\", \"week\");\nexport type SubscriptionInterval = Schema.Schema.Type<\n typeof SubscriptionInterval\n>;\n\n/**\n * ── Models ──\n */\n\nexport const Customer = Schema.Struct({\n id: CustomerId,\n merchant_customer_id: V.NonEmptyString,\n email: Schema.NullOr(Email),\n name: Schema.NullOr(V.NonEmptyString),\n phone: Schema.NullOr(Schema.String),\n project_id: ProjectId,\n metadata: Schema.NullOr(Metadata),\n created_at: Timestamp,\n updated_at: Schema.optional(Timestamp),\n});\nexport type Customer = Schema.Schema.Type<typeof Customer>;\n\nexport const Payment = Schema.Struct({\n id: PaymentId,\n project_id: ProjectId,\n amount: Schema.Number,\n currency: Schema.String,\n status: PaymentStatus,\n provider_ref: Schema.optional(Schema.NullOr(Schema.String)),\n metadata_json: Schema.optional(Schema.NullOr(Metadata)),\n gateway_response: Schema.optional(Schema.NullOr(Schema.Any)),\n created_at: Timestamp,\n updated_at: Schema.optional(Timestamp),\n});\nexport type Payment = Schema.Schema.Type<typeof Payment>;\n\nexport const Subscription = Schema.Struct({\n id: SubscriptionId,\n project_id: ProjectId,\n customer_id: CustomerId,\n status: SubscriptionStatus,\n amount: Schema.Number,\n currency: Schema.String,\n interval: SubscriptionInterval,\n interval_count: Schema.Number,\n current_period_start: Timestamp,\n current_period_end: Timestamp,\n payment_link: V.UrlString,\n auto_send_link: Schema.Boolean,\n metadata: Schema.optional(Schema.NullOr(Metadata)),\n canceled_at: Schema.optional(Schema.NullOr(Timestamp)),\n created_at: Timestamp,\n updated_at: Schema.optional(Timestamp),\n});\nexport type Subscription = Schema.Schema.Type<typeof Subscription>;\n\nexport const Project = Schema.Struct({\n id: ProjectId,\n name: V.NonEmptyString,\n api_key_secret: Schema.String,\n created_at: Timestamp,\n});\nexport type Project = Schema.Schema.Type<typeof Project>;\n\nexport const Token = Schema.Struct({\n id: TokenId,\n name: V.NonEmptyString,\n scopes: Schema.Array(Schema.String),\n last_used_at: Schema.NullOr(Timestamp),\n expires_at: Schema.NullOr(Timestamp),\n created_at: Timestamp,\n});\nexport type Token = Schema.Schema.Type<typeof Token>;\n\n/**\n * ── Pagination ──\n */\nexport const PaginationMeta = Schema.Struct({\n total: Schema.NullOr(Schema.Number),\n limit: Schema.Number,\n offset: Schema.Number,\n});\nexport type PaginationMeta = Schema.Schema.Type<typeof PaginationMeta>;\n\nexport const PaginatedResponse = <A, I, R>(schema: Schema.Schema<A, I, R>) =>\n Schema.Struct({\n data: Schema.Array(schema),\n meta: PaginationMeta,\n });\n\nexport interface PaginatedResponse<T> {\n readonly data: readonly T[];\n readonly meta: PaginationMeta;\n}\n\n/**\n * ── Webhooks ──\n */\nexport const WebhookEventType = Schema.Literal(\n \"payment.success\",\n \"payment.failed\",\n \"subscription.created\",\n \"subscription.payment_succeeded\",\n \"subscription.payment_failed\",\n \"subscription.renewal_due\",\n \"subscription.canceled\",\n);\nexport type WebhookEventType = Schema.Schema.Type<typeof WebhookEventType>;\n\nexport const WebhookEvent = Schema.Struct({\n type: WebhookEventType,\n id: Schema.optional(Schema.String),\n data: Schema.Union(\n Payment,\n Subscription,\n Customer,\n Schema.Struct({\n id: Schema.String,\n amount: Schema.optional(Schema.Number),\n currency: Schema.optional(Schema.String),\n status: Schema.String,\n metadata: Schema.optional(Metadata),\n }),\n ),\n is_test: Schema.Boolean,\n created: Schema.optional(Schema.Number),\n});\nexport type WebhookEvent = Schema.Schema.Type<typeof WebhookEvent>;\n\n/**\n * ── Params & Inputs ──\n */\n\nexport const CreateCheckoutParams = Schema.Struct({\n amount: Schema.optional(V.MinorUnitsInt),\n currency: Schema.optionalWith(Schema.String, { default: () => \"NPR\" }),\n provider: Provider,\n returnUrl: V.UrlString,\n cancelUrl: Schema.optional(V.UrlString),\n metadata: Schema.optional(Metadata),\n subscriptionId: Schema.optional(SubscriptionId),\n}).pipe(\n Schema.filter((data) => {\n if (!data.subscriptionId && !data.amount) {\n return \"amount is required when subscriptionId is not provided\";\n }\n return true;\n }),\n);\nexport type CreateCheckoutParams = Schema.Schema.Type<\n typeof CreateCheckoutParams\n>;\n\nexport const CheckoutSession = Schema.Struct({\n id: CheckoutSessionId,\n checkout_url: V.UrlString,\n payment_method: Schema.Struct({\n type: Provider,\n url: Schema.optional(V.UrlString),\n method: Schema.optional(Schema.Literal(\"GET\", \"POST\")),\n fields: Schema.optional(\n Schema.Record({ key: Schema.String, value: Schema.String }),\n ),\n }),\n});\nexport type CheckoutSession = Schema.Schema.Type<typeof CheckoutSession>;\n\nexport const CreateCustomerParams = Schema.Struct({\n merchant_customer_id: V.NonEmptyString,\n email: Schema.optional(Email),\n name: Schema.optional(V.NonEmptyString),\n phone: Schema.optional(Schema.String),\n project_id: Schema.optional(ProjectId),\n metadata: Schema.optional(Metadata),\n});\nexport type CreateCustomerParams = Schema.Schema.Type<\n typeof CreateCustomerParams\n>;\n\nexport const ListPaymentsParams = Schema.Struct({\n limit: Schema.optional(Schema.NumberFromString),\n offset: Schema.optional(Schema.NumberFromString),\n projectId: Schema.optional(ProjectId),\n});\nexport type ListPaymentsParams = Schema.Schema.Type<typeof ListPaymentsParams>;\n\nexport const ListCustomersParams = Schema.Struct({\n limit: Schema.optional(Schema.NumberFromString),\n offset: Schema.optional(Schema.NumberFromString),\n email: Schema.optional(Schema.String),\n merchant_customer_id: Schema.optional(Schema.String),\n projectId: Schema.optional(ProjectId),\n});\nexport type ListCustomersParams = Schema.Schema.Type<\n typeof ListCustomersParams\n>;\n\nexport const UpdateCustomerParams = Schema.Struct({\n email: Schema.optional(Email),\n name: Schema.optional(V.NonEmptyString),\n phone: Schema.optional(Schema.String),\n metadata: Schema.optional(Metadata),\n});\nexport type UpdateCustomerParams = Schema.Schema.Type<\n typeof UpdateCustomerParams\n>;\n\nexport const CreateSubscriptionParams = Schema.Struct({\n customer_id: CustomerId,\n amount: V.MinorUnitsInt,\n currency: Schema.optionalWith(Schema.String, { default: () => \"NPR\" }),\n interval: SubscriptionInterval,\n interval_count: Schema.optional(Schema.Number),\n project_id: Schema.optional(ProjectId),\n auto_send_link: Schema.optional(Schema.Boolean),\n metadata: Schema.optional(Metadata),\n});\nexport type CreateSubscriptionParams = Schema.Schema.Type<\n typeof CreateSubscriptionParams\n>;\n\nexport const CallbackQueryParams = Schema.Struct({\n payment_id: Schema.optional(Schema.String),\n data: Schema.optional(Schema.String),\n pidx: Schema.optional(Schema.String),\n});\nexport type CallbackQueryParams = Schema.Schema.Type<\n typeof CallbackQueryParams\n>;\n\nexport const ListSubscriptionsParams = Schema.Struct({\n limit: Schema.optional(Schema.NumberFromString),\n offset: Schema.optional(Schema.NumberFromString),\n projectId: Schema.optional(ProjectId),\n customerId: Schema.optional(CustomerId),\n status: Schema.optional(SubscriptionStatus),\n});\nexport type ListSubscriptionsParams = Schema.Schema.Type<\n typeof ListSubscriptionsParams\n>;\n\nexport const RealtimeTriggerPayload = Schema.Struct({\n event: Schema.optional(WebhookEventType),\n data: Schema.optional(Schema.Any),\n});\nexport type RealtimeTriggerPayload = Schema.Schema.Type<\n typeof RealtimeTriggerPayload\n>;\n\n/**\n * ── Client Config ──\n */\nexport const PayArkConfig = Schema.Struct({\n apiKey: Schema.String,\n baseUrl: Schema.optional(Schema.String),\n timeout: Schema.optional(Schema.Number),\n maxRetries: Schema.optional(Schema.Number),\n sandbox: Schema.optional(Schema.Boolean),\n});\nexport type PayArkConfig = Schema.Schema.Type<typeof PayArkConfig>;\n\n/**\n * ── Error Schemas ──\n */\nexport const PayArkErrorBody = Schema.Struct({\n error: Schema.String,\n details: Schema.optional(Schema.Any),\n});\nexport type PayArkErrorBody = Schema.Schema.Type<typeof PayArkErrorBody>;\n","import {\n HttpApi,\n HttpApiEndpoint,\n HttpApiGroup,\n HttpApiMiddleware,\n HttpApiSecurity,\n} from \"@effect/platform\";\nimport * as S from \"./schemas\";\nimport { Schema, Context } from \"effect\";\n\n/**\n * Industrial Error Schema with Status mapping.\n */\nexport class IndustrialError extends Schema.TaggedError<IndustrialError>()(\n \"IndustrialError\",\n {\n error: Schema.String,\n details: Schema.optional(Schema.Any),\n },\n) {}\n\nexport class AuthenticationError extends Schema.TaggedError<AuthenticationError>()(\n \"AuthenticationError\",\n {\n error: Schema.String,\n },\n) {}\n\nexport class NotFoundError extends Schema.TaggedError<NotFoundError>()(\n \"NotFoundError\",\n {\n error: Schema.String,\n },\n) {}\n\nexport class InternalServerError extends Schema.TaggedError<InternalServerError>()(\n \"InternalServerError\",\n {\n error: Schema.String,\n details: Schema.optional(Schema.Any),\n },\n) {}\n\nexport class ConflictError extends Schema.TaggedError<ConflictError>()(\n \"ConflictError\",\n {\n error: Schema.String,\n },\n) {}\n\n/**\n * PayArk Industrial API Specification.\n * Single source of truth for the entire platform.\n */\n\n// ── Security ─────────────────────────────────────────────────────────────\n\nexport interface AuthContext {\n readonly project?: { readonly id: string };\n readonly user?: { readonly id: string };\n}\n\nexport const AuthContext = Context.GenericTag<AuthContext>(\n \"@payark/sdk-effect/AuthContext\",\n);\n\nexport class SecurityMiddleware extends HttpApiMiddleware.Tag<SecurityMiddleware>()(\n \"SecurityMiddleware\",\n {\n security: {\n bearer: HttpApiSecurity.bearer,\n },\n provides: AuthContext,\n failure: Schema.Union(AuthenticationError, IndustrialError),\n },\n) {}\n\nexport class CronSecurity extends HttpApiMiddleware.Tag<CronSecurity>()(\n \"CronSecurity\",\n {\n security: {\n secret: HttpApiSecurity.apiKey({ in: \"header\", key: \"x-cron-secret\" }),\n },\n failure: Schema.Union(AuthenticationError, IndustrialError),\n },\n) {}\n\nexport class UserSecurity extends HttpApiMiddleware.Tag<UserSecurity>()(\n \"UserSecurity\",\n {\n security: {\n bearer: HttpApiSecurity.bearer,\n },\n provides: AuthContext,\n failure: Schema.Union(AuthenticationError, IndustrialError),\n },\n) {}\n\n// ── Checkout Group ───────────────────────────────────────────────────────\n\nexport const CheckoutGroup = HttpApiGroup.make(\"checkout\")\n .add(\n HttpApiEndpoint.post(\"create\", \"/\")\n .addSuccess(S.CheckoutSession)\n .setPayload(S.CreateCheckoutParams)\n .addError(AuthenticationError, { status: 401 })\n .addError(InternalServerError, { status: 500 })\n .addError(IndustrialError, { status: 400 }),\n )\n .prefix(\"/v1/checkout\")\n .middleware(SecurityMiddleware);\n\n// ── Payments Group ───────────────────────────────────────────────────────\n\nexport const PaymentsGroup = HttpApiGroup.make(\"payments\")\n .add(\n HttpApiEndpoint.get(\"list\", \"/\")\n .addSuccess(S.PaginatedResponse(S.Payment))\n .setUrlParams(S.ListPaymentsParams)\n .addError(AuthenticationError, { status: 401 })\n .addError(InternalServerError, { status: 500 })\n .addError(IndustrialError, { status: 400 }),\n )\n .add(\n HttpApiEndpoint.get(\"retrieve\", \"/:id\")\n .addSuccess(S.Payment)\n .setPath(Schema.Struct({ id: S.Id }))\n .addError(AuthenticationError, { status: 401 })\n .addError(NotFoundError, { status: 404 })\n .addError(InternalServerError, { status: 500 })\n .addError(IndustrialError, { status: 400 }),\n )\n .prefix(\"/v1/payments\")\n .middleware(SecurityMiddleware);\n\n// ── Customers Group ──────────────────────────────────────────────────────\n\nexport const CustomersGroup = HttpApiGroup.make(\"customers\")\n .add(\n HttpApiEndpoint.post(\"create\", \"/\")\n .addSuccess(S.Customer, { status: 201 })\n .setPayload(S.CreateCustomerParams)\n .addError(AuthenticationError, { status: 401 })\n .addError(ConflictError, { status: 409 })\n .addError(InternalServerError, { status: 500 })\n .addError(IndustrialError, { status: 400 }),\n )\n .add(\n HttpApiEndpoint.get(\"list\", \"/\")\n .addSuccess(S.PaginatedResponse(S.Customer))\n .setUrlParams(S.ListCustomersParams)\n .addError(AuthenticationError, { status: 401 })\n .addError(InternalServerError, { status: 500 })\n .addError(IndustrialError, { status: 400 }),\n )\n .add(\n HttpApiEndpoint.get(\"retrieve\", \"/:id\")\n .addSuccess(S.Customer)\n .setPath(Schema.Struct({ id: S.Id }))\n .addError(AuthenticationError, { status: 401 })\n .addError(NotFoundError, { status: 404 })\n .addError(InternalServerError, { status: 500 })\n .addError(IndustrialError, { status: 400 }),\n )\n .add(\n HttpApiEndpoint.patch(\"update\", \"/:id\")\n .addSuccess(S.Customer)\n .setPath(Schema.Struct({ id: S.Id }))\n .setPayload(S.UpdateCustomerParams)\n .addError(AuthenticationError, { status: 401 })\n .addError(NotFoundError, { status: 404 })\n .addError(ConflictError, { status: 409 })\n .addError(InternalServerError, { status: 500 })\n .addError(IndustrialError, { status: 400 }),\n )\n .add(\n HttpApiEndpoint.del(\"delete\", \"/:id\")\n .setPath(Schema.Struct({ id: S.Id }))\n .addError(AuthenticationError, { status: 401 })\n .addError(NotFoundError, { status: 404 })\n .addError(ConflictError, { status: 409 })\n .addError(InternalServerError, { status: 500 })\n .addError(IndustrialError, { status: 400 }),\n )\n .prefix(\"/v1/customers\")\n .middleware(SecurityMiddleware);\n\n// ── Subscriptions Group ──────────────────────────────────────────────────\n\nexport const SubscriptionsGroup = HttpApiGroup.make(\"subscriptions\")\n .add(\n HttpApiEndpoint.post(\"create\", \"/\")\n .addSuccess(S.Subscription, { status: 201 })\n .setPayload(S.CreateSubscriptionParams)\n .addError(AuthenticationError, { status: 401 })\n .addError(InternalServerError, { status: 500 })\n .addError(IndustrialError, { status: 400 })\n .middleware(SecurityMiddleware),\n )\n .add(\n HttpApiEndpoint.get(\"retrieve\", \"/:id\")\n .addSuccess(S.Subscription)\n .setPath(Schema.Struct({ id: S.SubscriptionId }))\n .addError(AuthenticationError, { status: 401 })\n .addError(NotFoundError, { status: 404 })\n .addError(InternalServerError, { status: 500 })\n .middleware(SecurityMiddleware),\n )\n .add(\n HttpApiEndpoint.get(\"list\", \"/\")\n .addSuccess(S.PaginatedResponse(S.Subscription))\n .setUrlParams(S.ListSubscriptionsParams)\n .addError(AuthenticationError, { status: 401 })\n .addError(InternalServerError, { status: 500 })\n .middleware(SecurityMiddleware),\n )\n .add(\n HttpApiEndpoint.post(\"cancel\", \"/:id/cancel\")\n .addSuccess(S.Subscription)\n .setPath(Schema.Struct({ id: S.SubscriptionId }))\n .addError(AuthenticationError, { status: 401 })\n .addError(NotFoundError, { status: 404 })\n .addError(InternalServerError, { status: 500 })\n .middleware(SecurityMiddleware),\n )\n .add(\n HttpApiEndpoint.post(\"activate\", \"/:id/activate\")\n .addSuccess(\n Schema.Struct({\n checkout_url: Schema.String,\n payment_id: Schema.String,\n }),\n )\n .setPath(Schema.Struct({ id: S.SubscriptionId }))\n .setPayload(\n Schema.Struct({\n provider: S.Provider,\n returnUrl: Schema.String,\n cancelUrl: Schema.optional(Schema.String),\n }),\n )\n .addError(NotFoundError, { status: 404 })\n .addError(InternalServerError, { status: 500 })\n .addError(IndustrialError, { status: 400 }),\n )\n .prefix(\"/v1/subscriptions\");\n\n// ── Automation Group ─────────────────────────────────────────────────────\n\nexport const AutomationGroup = HttpApiGroup.make(\"automation\")\n .add(\n HttpApiEndpoint.post(\"reminders\", \"/reminders\")\n .addSuccess(\n Schema.Struct({\n message: Schema.String,\n count: Schema.Number,\n }),\n )\n .addError(InternalServerError, { status: 500 }),\n )\n .add(\n HttpApiEndpoint.post(\"reaper\", \"/reaper\")\n .addSuccess(\n Schema.Struct({\n message: Schema.String,\n count: Schema.Number,\n }),\n )\n .addError(InternalServerError, { status: 500 }),\n )\n .prefix(\"/v1/automation\")\n .middleware(CronSecurity);\n\n// ── Tokens Group ─────────────────────────────────────────────────────────\n\nexport const TokensGroup = HttpApiGroup.make(\"tokens\")\n .add(\n HttpApiEndpoint.post(\"create\", \"/\")\n .addSuccess(\n Schema.Struct({\n ...S.Token.fields,\n token: Schema.String,\n }),\n )\n .setPayload(\n Schema.Struct({\n name: Schema.String,\n scopes: Schema.optionalWith(Schema.Array(Schema.String), {\n default: () => [],\n }),\n expires_in_days: Schema.optional(Schema.Number),\n }),\n )\n .addError(AuthenticationError, { status: 401 })\n .addError(InternalServerError, { status: 500 }),\n )\n .add(\n HttpApiEndpoint.get(\"list\", \"/\")\n .addSuccess(Schema.Array(S.Token))\n .addError(AuthenticationError, { status: 401 })\n .addError(InternalServerError, { status: 500 }),\n )\n .add(\n HttpApiEndpoint.del(\"delete\", \"/:id\")\n .setPath(Schema.Struct({ id: S.TokenId }))\n .addSuccess(Schema.Null)\n .addError(AuthenticationError, { status: 401 })\n .addError(NotFoundError, { status: 404 })\n .addError(InternalServerError, { status: 500 }),\n )\n .prefix(\"/v1/tokens\")\n .middleware(UserSecurity);\n\n// ── Projects Group ────────────────────────────────────────────────────────\n\nexport const ProjectsGroup = HttpApiGroup.make(\"projects\")\n .add(\n HttpApiEndpoint.get(\"list\", \"/\")\n .addSuccess(Schema.Array(S.Project))\n .addError(AuthenticationError, { status: 401 })\n .addError(InternalServerError, { status: 500 }),\n )\n .prefix(\"/v1/projects\")\n .middleware(SecurityMiddleware);\n\n// ── Callbacks Group ──────────────────────────────────────────────────────\n\nexport const CallbacksGroup = HttpApiGroup.make(\"callbacks\")\n .add(\n HttpApiEndpoint.get(\"handle\", \"/:provider\")\n .addSuccess(Schema.Any)\n .setPath(Schema.Struct({ provider: Schema.String }))\n .setUrlParams(S.CallbackQueryParams)\n .addError(NotFoundError, { status: 404 })\n .addError(InternalServerError, { status: 500 })\n .addError(IndustrialError, { status: 400 }),\n )\n .prefix(\"/v1/callback\");\n\n// ── Realtime Group ───────────────────────────────────────────────────────\n\nexport const RealtimeGroup = HttpApiGroup.make(\"realtime\")\n .add(\n HttpApiEndpoint.get(\"connect\", \"/\")\n .addSuccess(Schema.Any)\n .setUrlParams(Schema.Struct({ token: Schema.String }))\n .addError(AuthenticationError, { status: 401 })\n .addError(InternalServerError, { status: 500 }),\n )\n .add(\n HttpApiEndpoint.post(\"trigger\", \"/trigger\")\n .addSuccess(\n Schema.Struct({\n status: Schema.String,\n event: Schema.optional(Schema.String),\n }),\n )\n .setPayload(S.RealtimeTriggerPayload)\n .setUrlParams(Schema.Struct({ token: Schema.optional(Schema.String) }))\n .addError(AuthenticationError, { status: 401 })\n .addError(InternalServerError, { status: 500 }),\n )\n .prefix(\"/v1/realtime\");\n\n// ── Unified API ──────────────────────────────────────────────────────────\n\nexport const PayArkApi = HttpApi.make(\"PayArkApi\")\n .add(CheckoutGroup)\n .add(PaymentsGroup)\n .add(CustomersGroup)\n .add(SubscriptionsGroup)\n .add(AutomationGroup)\n .add(TokensGroup)\n .add(ProjectsGroup)\n .add(CallbacksGroup)\n .add(RealtimeGroup)\n .addError(AuthenticationError, { status: 401 })\n .addError(NotFoundError, { status: 404 })\n .addError(ConflictError, { status: 409 })\n .addError(InternalServerError, { status: 500 })\n .addError(IndustrialError, { status: 400 });\n"]}