oblien 2.2.36 → 2.2.38

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 (101) hide show
  1. package/README.md +53 -274
  2. package/dist/cdn.d.ts +105 -0
  3. package/dist/cdn.d.ts.map +1 -0
  4. package/dist/cdn.js +201 -0
  5. package/dist/cdn.js.map +1 -0
  6. package/dist/cli/commands/cdn.d.ts +3 -0
  7. package/dist/cli/commands/cdn.d.ts.map +1 -0
  8. package/dist/cli/commands/cdn.js +216 -0
  9. package/dist/cli/commands/cdn.js.map +1 -0
  10. package/dist/cli/commands/namespaces.js +19 -6
  11. package/dist/cli/commands/namespaces.js.map +1 -1
  12. package/dist/cli/commands/serve.d.ts +17 -0
  13. package/dist/cli/commands/serve.d.ts.map +1 -0
  14. package/dist/cli/commands/serve.js +113 -0
  15. package/dist/cli/commands/serve.js.map +1 -0
  16. package/dist/cli/commands/tunnel.d.ts +1 -0
  17. package/dist/cli/commands/tunnel.d.ts.map +1 -1
  18. package/dist/cli/commands/tunnel.js +100 -3
  19. package/dist/cli/commands/tunnel.js.map +1 -1
  20. package/dist/cli/index.js +14 -0
  21. package/dist/cli/index.js.map +1 -1
  22. package/dist/client.d.ts +12 -1
  23. package/dist/client.d.ts.map +1 -1
  24. package/dist/client.js +16 -1
  25. package/dist/client.js.map +1 -1
  26. package/dist/domain.d.ts +20 -1
  27. package/dist/domain.d.ts.map +1 -1
  28. package/dist/domain.js +37 -0
  29. package/dist/domain.js.map +1 -1
  30. package/dist/edge-proxy.d.ts +50 -11
  31. package/dist/edge-proxy.d.ts.map +1 -1
  32. package/dist/edge-proxy.js +55 -10
  33. package/dist/edge-proxy.js.map +1 -1
  34. package/dist/index.d.ts +8 -1
  35. package/dist/index.d.ts.map +1 -1
  36. package/dist/index.js +5 -0
  37. package/dist/index.js.map +1 -1
  38. package/dist/mcp/tools.d.ts.map +1 -1
  39. package/dist/mcp/tools.js +145 -7
  40. package/dist/mcp/tools.js.map +1 -1
  41. package/dist/namespace.d.ts +27 -5
  42. package/dist/namespace.d.ts.map +1 -1
  43. package/dist/namespace.js +30 -4
  44. package/dist/namespace.js.map +1 -1
  45. package/dist/notifications.d.ts +72 -0
  46. package/dist/notifications.d.ts.map +1 -0
  47. package/dist/notifications.js +93 -0
  48. package/dist/notifications.js.map +1 -0
  49. package/dist/runtime/proxy.d.ts +55 -0
  50. package/dist/runtime/proxy.d.ts.map +1 -0
  51. package/dist/runtime/proxy.js +79 -0
  52. package/dist/runtime/proxy.js.map +1 -0
  53. package/dist/runtime.d.ts +16 -0
  54. package/dist/runtime.d.ts.map +1 -1
  55. package/dist/runtime.js +18 -0
  56. package/dist/runtime.js.map +1 -1
  57. package/dist/server/static.d.ts +81 -0
  58. package/dist/server/static.d.ts.map +1 -0
  59. package/dist/server/static.js +465 -0
  60. package/dist/server/static.js.map +1 -0
  61. package/dist/types/cdn.d.ts +301 -0
  62. package/dist/types/cdn.d.ts.map +1 -0
  63. package/dist/types/cdn.js +10 -0
  64. package/dist/types/cdn.js.map +1 -0
  65. package/dist/types/client.d.ts +10 -0
  66. package/dist/types/client.d.ts.map +1 -1
  67. package/dist/types/edge-proxy.d.ts +50 -1
  68. package/dist/types/edge-proxy.d.ts.map +1 -1
  69. package/dist/types/index.d.ts +6 -3
  70. package/dist/types/index.d.ts.map +1 -1
  71. package/dist/types/namespace.d.ts +55 -9
  72. package/dist/types/namespace.d.ts.map +1 -1
  73. package/dist/types/notifications.d.ts +77 -0
  74. package/dist/types/notifications.d.ts.map +1 -0
  75. package/dist/types/notifications.js +3 -0
  76. package/dist/types/notifications.js.map +1 -0
  77. package/dist/types/webhooks.d.ts +52 -0
  78. package/dist/types/webhooks.d.ts.map +1 -0
  79. package/dist/types/webhooks.js +3 -0
  80. package/dist/types/webhooks.js.map +1 -0
  81. package/dist/types/workspace-resources.d.ts +48 -0
  82. package/dist/types/workspace-resources.d.ts.map +1 -1
  83. package/dist/webhooks.d.ts +53 -0
  84. package/dist/webhooks.d.ts.map +1 -0
  85. package/dist/webhooks.js +60 -0
  86. package/dist/webhooks.js.map +1 -0
  87. package/docs/analytics.md +36 -0
  88. package/docs/cdn.md +119 -0
  89. package/docs/domains.md +47 -0
  90. package/docs/edge-proxy.md +44 -0
  91. package/docs/edge-tunnel.md +42 -0
  92. package/docs/errors.md +34 -0
  93. package/docs/namespaces.md +69 -0
  94. package/docs/notifications.md +40 -0
  95. package/docs/pages.md +26 -0
  96. package/docs/runtime.md +83 -0
  97. package/docs/serve.md +84 -0
  98. package/docs/tokens.md +24 -0
  99. package/docs/webhooks.md +42 -0
  100. package/docs/workspaces.md +82 -0
  101. package/package.json +5 -2
@@ -0,0 +1,77 @@
1
+ export type PushPlatform = 'ios' | 'android' | 'web';
2
+ export type PushDeviceStatus = 'active' | 'revoked';
3
+ export type PushTokenStatus = 'active' | 'revoked';
4
+ /** A registered mobile device (the real FCM token is never returned). */
5
+ export interface PushDevice {
6
+ id: number;
7
+ /** Stable, app-provided device identifier (the push token rotates under it). */
8
+ device_id: string;
9
+ platform: PushPlatform;
10
+ device_info?: Record<string, unknown> | null;
11
+ status: PushDeviceStatus;
12
+ last_seen_at?: string | null;
13
+ created_at?: string;
14
+ /** Present when FCM couldn't fully validate the token (transient/unconfigured). */
15
+ token_validation?: string;
16
+ }
17
+ export interface RegisterDeviceParams {
18
+ /** Stable, app-provided device identifier (survives FCM token refresh). */
19
+ device_id: string;
20
+ /**
21
+ * The device's real FCM/APNs registration token. Verified with FCM before
22
+ * it is stored — a token FCM rejects is refused with `invalid_device_token`.
23
+ */
24
+ fcm_token: string;
25
+ platform?: PushPlatform;
26
+ /** Arbitrary device metadata (model, os_version, app_version, name…). */
27
+ device_info?: Record<string, unknown>;
28
+ }
29
+ export interface PushDeviceListResponse {
30
+ success: boolean;
31
+ devices: PushDevice[];
32
+ }
33
+ /** An Oblien-controlled virtual send token, scoped to a workspace. */
34
+ export interface WorkspacePushToken {
35
+ id: number;
36
+ workspace_id: string;
37
+ name?: string | null;
38
+ metadata?: Record<string, unknown> | null;
39
+ /** Non-secret display handle, e.g. `onp_ab12cd34`. */
40
+ token_prefix: string;
41
+ status: PushTokenStatus;
42
+ last_used_at?: string | null;
43
+ created_at?: string;
44
+ revoked_at?: string | null;
45
+ }
46
+ /** Returned by `createToken` — includes the plaintext token ONCE. */
47
+ export interface CreatedWorkspacePushToken extends WorkspacePushToken {
48
+ /** Plaintext send token. Returned only at creation — store it now. */
49
+ token: string;
50
+ }
51
+ export interface CreatePushTokenParams {
52
+ /** Workspace this token sends for (per-workspace relation). */
53
+ workspace_id: string;
54
+ name?: string;
55
+ /** Arbitrary metadata — e.g. `{ channel }` or `{ device_id }` to pin delivery. */
56
+ metadata?: Record<string, unknown>;
57
+ }
58
+ export interface PushTokenListResponse {
59
+ success: boolean;
60
+ tokens: WorkspacePushToken[];
61
+ }
62
+ export interface SendNotificationParams {
63
+ title?: string;
64
+ body?: string;
65
+ data?: Record<string, unknown>;
66
+ }
67
+ export interface SendNotificationResponse {
68
+ success: boolean;
69
+ delivered: number;
70
+ failed: number;
71
+ devices: number;
72
+ /** Present when FCM is not configured server-side. */
73
+ skipped?: boolean;
74
+ reason?: string;
75
+ detail?: string;
76
+ }
77
+ //# sourceMappingURL=notifications.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notifications.d.ts","sourceRoot":"","sources":["../../src/types/notifications.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,SAAS,GAAG,KAAK,CAAC;AACrD,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,SAAS,CAAC;AACpD,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEnD,yEAAyE;AACzE,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,gFAAgF;IAChF,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,YAAY,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC7C,MAAM,EAAE,gBAAgB,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mFAAmF;IACnF,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,oBAAoB;IACnC,2EAA2E;IAC3E,SAAS,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,yEAAyE;IACzE,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACvC;AAED,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,UAAU,EAAE,CAAC;CACvB;AAED,sEAAsE;AACtE,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC1C,sDAAsD;IACtD,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,eAAe,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED,qEAAqE;AACrE,MAAM,WAAW,yBAA0B,SAAQ,kBAAkB;IACnE,sEAAsE;IACtE,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,qBAAqB;IACpC,+DAA+D;IAC/D,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,kFAAkF;IAClF,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,kBAAkB,EAAE,CAAC;CAC9B;AAED,MAAM,WAAW,sBAAsB;IACrC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,wBAAwB;IACvC,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,sDAAsD;IACtD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB"}
@@ -0,0 +1,3 @@
1
+ // ── Mobile push notifications ─────────────────────────────────────────
2
+ export {};
3
+ //# sourceMappingURL=notifications.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notifications.js","sourceRoot":"","sources":["../../src/types/notifications.ts"],"names":[],"mappings":"AAAA,yEAAyE"}
@@ -0,0 +1,52 @@
1
+ /** Event types a webhook can subscribe to. */
2
+ export type WebhookEvent = 'vm.stopped' | 'vm.archived' | 'workload.started' | 'workload.exited' | 'workload.failed' | 'workload.stopped' | 'workload.restart_loop' | 'credits.low' | 'credits.depleted' | 'credits.usage' | 'namespace.quota.threshold';
3
+ export interface Webhook {
4
+ id: number;
5
+ url: string;
6
+ events: WebhookEvent[];
7
+ active: boolean;
8
+ description?: string | null;
9
+ /** Namespace this webhook is bound to (null = account-wide / all namespaces). */
10
+ namespace?: string | null;
11
+ /** Masked in list responses (shown as a placeholder if set). */
12
+ secret?: string | null;
13
+ last_triggered_at?: string | null;
14
+ last_status_code?: number | null;
15
+ created_at?: string;
16
+ }
17
+ export interface WebhookCreateParams {
18
+ /** HTTPS endpoint to POST events to. */
19
+ url: string;
20
+ events: WebhookEvent[];
21
+ /** HMAC-SHA256 signing secret (sent in X-Webhook-Signature). */
22
+ secret?: string;
23
+ description?: string;
24
+ /**
25
+ * Bind the webhook to a single namespace — only events attributable to that
26
+ * namespace are delivered (e.g. its credits.usage / namespace.quota.threshold
27
+ * / vm + workload events). Omit for account-wide (all namespaces).
28
+ */
29
+ namespace?: string;
30
+ }
31
+ export interface WebhookUpdateParams {
32
+ url?: string;
33
+ events?: WebhookEvent[];
34
+ secret?: string | null;
35
+ description?: string | null;
36
+ /** Set to a namespace to scope, or null to make it account-wide. */
37
+ namespace?: string | null;
38
+ active?: boolean;
39
+ }
40
+ export interface WebhookListParams {
41
+ /** Filter to a namespace (namespace-scoped keys are auto-pinned to theirs). */
42
+ namespace?: string;
43
+ }
44
+ export interface WebhookListResponse {
45
+ success: boolean;
46
+ webhooks: Webhook[];
47
+ }
48
+ export interface WebhookEventsResponse {
49
+ success: boolean;
50
+ events: WebhookEvent[];
51
+ }
52
+ //# sourceMappingURL=webhooks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webhooks.d.ts","sourceRoot":"","sources":["../../src/types/webhooks.ts"],"names":[],"mappings":"AAEA,8CAA8C;AAC9C,MAAM,MAAM,YAAY,GACpB,YAAY,GACZ,aAAa,GACb,kBAAkB,GAClB,iBAAiB,GACjB,iBAAiB,GACjB,kBAAkB,GAClB,uBAAuB,GACvB,aAAa,GACb,kBAAkB,GAClB,eAAe,GACf,2BAA2B,CAAC;AAEhC,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,YAAY,EAAE,CAAC;IACvB,MAAM,EAAE,OAAO,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,iFAAiF;IACjF,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,gEAAgE;IAChE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,mBAAmB;IAClC,wCAAwC;IACxC,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,YAAY,EAAE,CAAC;IACvB,gEAAgE;IAChE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,mBAAmB;IAClC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,YAAY,EAAE,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,oEAAoE;IACpE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,iBAAiB;IAChC,+EAA+E;IAC/E,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,OAAO,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,YAAY,EAAE,CAAC;CACxB"}
@@ -0,0 +1,3 @@
1
+ // ── Webhooks ──────────────────────────────────────────────────────────
2
+ export {};
3
+ //# sourceMappingURL=webhooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webhooks.js","sourceRoot":"","sources":["../../src/types/webhooks.ts"],"names":[],"mappings":"AAAA,yEAAyE"}
@@ -320,6 +320,54 @@ export interface VerifyDomainResponse {
320
320
  };
321
321
  edge_ips: string[];
322
322
  }
323
+ /** Optional namespace filter. Namespace-scoped keys are always pinned to their own. */
324
+ export interface DomainListParams {
325
+ /** Filter to a namespace (admin/dashboard only; scoped keys are auto-pinned). */
326
+ namespace?: string;
327
+ }
328
+ /** A registered route (port / page / edge proxy / edge tunnel / workspace / custom domain). */
329
+ export interface DomainRoute {
330
+ id: number;
331
+ hostname: string;
332
+ slug: string;
333
+ domain: string;
334
+ route_type: string;
335
+ target: string;
336
+ owner_type: string;
337
+ owner_id: string;
338
+ namespace?: string | null;
339
+ is_custom: boolean;
340
+ status: string;
341
+ metadata?: Record<string, unknown>;
342
+ created_at?: string;
343
+ updated_at?: string;
344
+ }
345
+ export interface DomainRoutesResponse {
346
+ success: boolean;
347
+ data: DomainRoute[];
348
+ }
349
+ /** An SSL certificate with renewal status. */
350
+ export interface SslCertificate {
351
+ domain: string;
352
+ namespace?: string | null;
353
+ active: boolean;
354
+ auto_renew: boolean;
355
+ expires_at: number | string | null;
356
+ source: string;
357
+ last_attempt_at?: string | null;
358
+ /** Last renewal error, if the most recent attempt failed. */
359
+ last_error?: string | null;
360
+ renew_attempts?: number;
361
+ }
362
+ export interface SslListResponse {
363
+ success: boolean;
364
+ data: SslCertificate[];
365
+ }
366
+ export interface SslAutoRenewResponse {
367
+ success: boolean;
368
+ domain: string;
369
+ auto_renew: boolean;
370
+ }
323
371
  export interface StatsEvent {
324
372
  cpu_usage?: number;
325
373
  memory_usage?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"workspace-resources.d.ts","sourceRoot":"","sources":["../../src/types/workspace-resources.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workspace-resources.d.ts","sourceRoot":"","sources":["../../src/types/workspace-resources.ts"],"names":[],"mappings":"AAEA,qDAAqD;AACrD,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,QAAQ,CAAC;AAEhE,MAAM,WAAW,eAAe;IAC9B,IAAI,CAAC,EAAE,WAAW,GAAG,WAAW,CAAC;IACjC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC9C,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,mBAAmB;IAClC,6DAA6D;IAC7D,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACtB,uEAAuE;IACvE,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,6DAA6D;IAC7D,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,eAAe;IAC9B,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,SAAS,CAAC;CACxB;AAID,MAAM,WAAW,SAAS;IACxB,WAAW,EAAE,OAAO,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,UAAU,CAAC,EAAE;QACX,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,EAAE,MAAM,CAAC;QACnB,YAAY,EAAE,MAAM,CAAC;KACtB,GAAG,IAAI,CAAC;IACT,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAID,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;CACd;AAID,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAC;CACtC;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAID,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE,MAAM,EAAE,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,cAAc,CAAC,EAAE,OAAO,GAAG,YAAY,GAAG,QAAQ,CAAC;IACnD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC;IAC5C,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,cAAc,CAAC,EAAE,OAAO,GAAG,YAAY,GAAG,QAAQ,CAAC;IACnD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAID,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAID,MAAM,WAAW,qBAAqB;IACpC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAID,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAID,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAID;;;;;;;GAOG;AACH,MAAM,WAAW,iBAAiB;IAChC,iDAAiD;IACjD,IAAI,EAAE,MAAM,CAAC;IACb,qCAAqC;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAC5B,iDAAiD;IACjD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,mBAAmB;IAClC,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,8EAA8E;IAC9E,aAAa,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;IACrC,gDAAgD;IAChD,YAAY,CAAC,EAAE,iBAAiB,CAAC;CAClC;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;IAC3B,gFAAgF;IAChF,eAAe,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IAC1C,yDAAyD;IACzD,aAAa,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;IACrC,oDAAoD;IACpD,cAAc,CAAC,EAAE,iBAAiB,CAAC;IACnC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAID,MAAM,WAAW,UAAU;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAID,MAAM,WAAW,gBAAgB;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAID,MAAM,WAAW,UAAU;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAClE,GAAG,CAAC,EAAE;QACJ,QAAQ,EAAE,OAAO,CAAC;QAClB,KAAK,EAAE,OAAO,CAAC;QACf,SAAS,EAAE,OAAO,CAAC;QACnB,MAAM,EAAE,MAAM,EAAE,CAAC;KAClB,CAAC;IACF,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE,OAAO,CAAC;IACf,SAAS,EAAE,OAAO,GAAG,IAAI,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAClC,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,gBAAgB,CAAC,EAAE;QACjB,KAAK,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,CAAC;QACxC,GAAG,CAAC,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAC;YAAC,IAAI,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;KACtD,CAAC;IACF,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;CACnD;AAID,MAAM,WAAW,eAAe;IAC9B,oCAAoC;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,oDAAoD;IACpD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,OAAO,CAAC;CACpB;AAID,MAAM,WAAW,kBAAkB;IACjC,8CAA8C;IAC9C,MAAM,EAAE,MAAM,CAAC;IACf,oDAAoD;IACpD,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE,OAAO,CAAC;IACf,SAAS,EAAE,OAAO,GAAG,IAAI,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAClC,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,gBAAgB,EAAE;QAChB,KAAK,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,CAAC;QACxC,GAAG,CAAC,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAC;YAAC,IAAI,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;KACtD,CAAC;IACF,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAID,uFAAuF;AACvF,MAAM,WAAW,gBAAgB;IAC/B,iFAAiF;IACjF,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,+FAA+F;AAC/F,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,WAAW,EAAE,CAAC;CACrB;AAED,8CAA8C;AAC9C,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,6DAA6D;IAC7D,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,cAAc,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,OAAO,CAAC;CACrB;AAKD,MAAM,WAAW,UAAU;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;IACrC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,kBAAkB;IACjC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB"}
@@ -0,0 +1,53 @@
1
+ import type { HttpClient } from './http.js';
2
+ import type { ApiResponse } from './types/common.js';
3
+ import type { Webhook, WebhookCreateParams, WebhookUpdateParams, WebhookListParams, WebhookListResponse, WebhookEventsResponse } from './types/webhooks.js';
4
+ /**
5
+ * Webhooks — subscribe an HTTPS endpoint to platform events (vm/workload
6
+ * lifecycle, credit usage, namespace quota thresholds). Deliveries are signed
7
+ * with HMAC-SHA256 (`X-Webhook-Signature`) when a secret is set.
8
+ *
9
+ * A webhook can be **scoped to a namespace** so it only receives that
10
+ * namespace's events — e.g. all usage events for one team:
11
+ *
12
+ * ```ts
13
+ * import Oblien from 'oblien';
14
+ * const client = new Oblien({ clientId, clientSecret });
15
+ *
16
+ * await client.webhooks.create({
17
+ * url: 'https://example.com/hooks/oblien',
18
+ * events: ['credits.usage', 'namespace.quota.threshold'],
19
+ * namespace: 'team-a', // ← only team-a's events; omit for account-wide
20
+ * secret: process.env.WH_SECRET,
21
+ * });
22
+ *
23
+ * const { events } = await client.webhooks.events(); // available event types
24
+ * const { webhooks } = await client.webhooks.list({ namespace: 'team-a' });
25
+ * await client.webhooks.delete(webhooks[0].id);
26
+ * ```
27
+ */
28
+ export declare class Webhooks {
29
+ /** @internal */
30
+ readonly _http: HttpClient;
31
+ private readonly _base;
32
+ constructor(client: {
33
+ _http: HttpClient;
34
+ });
35
+ /** List webhooks. Optionally filter by namespace (scoped keys auto-pinned). */
36
+ list(params?: WebhookListParams): Promise<WebhookListResponse>;
37
+ /** The set of event types you can subscribe to. */
38
+ events(): Promise<WebhookEventsResponse>;
39
+ /**
40
+ * Create a webhook. Set `namespace` to scope it to one namespace's events,
41
+ * or omit for account-wide.
42
+ */
43
+ create(params: WebhookCreateParams): Promise<ApiResponse & {
44
+ webhook: Webhook;
45
+ }>;
46
+ /** Update a webhook (url, events, secret, description, namespace, active). */
47
+ update(id: number, params: WebhookUpdateParams): Promise<ApiResponse & {
48
+ webhook: Webhook;
49
+ }>;
50
+ /** Delete a webhook. */
51
+ delete(id: number): Promise<ApiResponse>;
52
+ }
53
+ //# sourceMappingURL=webhooks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webhooks.d.ts","sourceRoot":"","sources":["../src/webhooks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EACV,OAAO,EACP,mBAAmB,EACnB,mBAAmB,EACnB,iBAAiB,EACjB,mBAAmB,EACnB,qBAAqB,EACtB,MAAM,qBAAqB,CAAC;AAE7B;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,qBAAa,QAAQ;IACnB,gBAAgB;IAChB,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;IAE3B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAe;gBAEzB,MAAM,EAAE;QAAE,KAAK,EAAE,UAAU,CAAA;KAAE;IAIzC,+EAA+E;IACzE,IAAI,CAAC,MAAM,GAAE,iBAAsB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAQxE,mDAAmD;IAC7C,MAAM,IAAI,OAAO,CAAC,qBAAqB,CAAC;IAI9C;;;OAGG;IACG,MAAM,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,WAAW,GAAG;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;IAItF,8EAA8E;IACxE,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,WAAW,GAAG;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;IAIlG,wBAAwB;IAClB,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;CAG/C"}
@@ -0,0 +1,60 @@
1
+ /**
2
+ * Webhooks — subscribe an HTTPS endpoint to platform events (vm/workload
3
+ * lifecycle, credit usage, namespace quota thresholds). Deliveries are signed
4
+ * with HMAC-SHA256 (`X-Webhook-Signature`) when a secret is set.
5
+ *
6
+ * A webhook can be **scoped to a namespace** so it only receives that
7
+ * namespace's events — e.g. all usage events for one team:
8
+ *
9
+ * ```ts
10
+ * import Oblien from 'oblien';
11
+ * const client = new Oblien({ clientId, clientSecret });
12
+ *
13
+ * await client.webhooks.create({
14
+ * url: 'https://example.com/hooks/oblien',
15
+ * events: ['credits.usage', 'namespace.quota.threshold'],
16
+ * namespace: 'team-a', // ← only team-a's events; omit for account-wide
17
+ * secret: process.env.WH_SECRET,
18
+ * });
19
+ *
20
+ * const { events } = await client.webhooks.events(); // available event types
21
+ * const { webhooks } = await client.webhooks.list({ namespace: 'team-a' });
22
+ * await client.webhooks.delete(webhooks[0].id);
23
+ * ```
24
+ */
25
+ export class Webhooks {
26
+ /** @internal */
27
+ _http;
28
+ _base = '/webhooks';
29
+ constructor(client) {
30
+ this._http = client._http;
31
+ }
32
+ /** List webhooks. Optionally filter by namespace (scoped keys auto-pinned). */
33
+ async list(params = {}) {
34
+ return this._http.request({
35
+ method: 'GET',
36
+ path: this._base,
37
+ query: params.namespace ? { namespace: params.namespace } : undefined,
38
+ });
39
+ }
40
+ /** The set of event types you can subscribe to. */
41
+ async events() {
42
+ return this._http.request({ method: 'GET', path: `${this._base}/events` });
43
+ }
44
+ /**
45
+ * Create a webhook. Set `namespace` to scope it to one namespace's events,
46
+ * or omit for account-wide.
47
+ */
48
+ async create(params) {
49
+ return this._http.request({ method: 'POST', path: this._base, body: params });
50
+ }
51
+ /** Update a webhook (url, events, secret, description, namespace, active). */
52
+ async update(id, params) {
53
+ return this._http.request({ method: 'PUT', path: `${this._base}/${id}`, body: params });
54
+ }
55
+ /** Delete a webhook. */
56
+ async delete(id) {
57
+ return this._http.request({ method: 'DELETE', path: `${this._base}/${id}` });
58
+ }
59
+ }
60
+ //# sourceMappingURL=webhooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webhooks.js","sourceRoot":"","sources":["../src/webhooks.ts"],"names":[],"mappings":"AAWA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,OAAO,QAAQ;IACnB,gBAAgB;IACP,KAAK,CAAa;IAEV,KAAK,GAAG,WAAW,CAAC;IAErC,YAAY,MAA6B;QACvC,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;IAC5B,CAAC;IAED,+EAA+E;IAC/E,KAAK,CAAC,IAAI,CAAC,SAA4B,EAAE;QACvC,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;YACxB,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,IAAI,CAAC,KAAK;YAChB,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,SAAS;SACtE,CAAC,CAAC;IACL,CAAC;IAED,mDAAmD;IACnD,KAAK,CAAC,MAAM;QACV,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC,CAAC;IAC7E,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,MAAM,CAAC,MAA2B;QACtC,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;IAChF,CAAC;IAED,8EAA8E;IAC9E,KAAK,CAAC,MAAM,CAAC,EAAU,EAAE,MAA2B;QAClD,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;IAC1F,CAAC;IAED,wBAAwB;IACxB,KAAK,CAAC,MAAM,CAAC,EAAU;QACrB,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;IAC/E,CAAC;CACF"}
@@ -0,0 +1,36 @@
1
+ # Analytics
2
+
3
+ Edge traffic analytics — requests, bandwidth, geo, and live streaming — for your domains, aggregated across the account or per namespace.
4
+
5
+ ```typescript
6
+ const a = client.analytics;
7
+ ```
8
+
9
+ ## Account / namespace summary
10
+
11
+ ```typescript
12
+ // All your domains
13
+ const all = await a.home();
14
+
15
+ // One namespace's domains (the dashboard's per-namespace view)
16
+ const ns = await a.home({ namespace: 'production' });
17
+ // → { domains: [{ domain, requests, bandwidth_in, bandwidth_out }], totals: {...} }
18
+ ```
19
+
20
+ ## Per-domain
21
+
22
+ ```typescript
23
+ const overview = await a.get('app.example.com', { from, to }); // overview+timeseries+geo+requests
24
+ const series = await a.timeseries('app.example.com', { from, to, interval: 'hour' });
25
+ const geo = await a.geo('app.example.com');
26
+ const requests = await a.requests('app.example.com', { limit: 100 });
27
+
28
+ // Short-lived JWT for the live SSE stream (edge.oblien.com/stream)
29
+ const { token, stream_url } = await a.streamToken('app.example.com');
30
+ ```
31
+
32
+ `from`/`to` are epoch milliseconds; `interval` auto-detects (minute/hour/day) by range. Recent data comes from Redis, older from durable rollups — stitched transparently.
33
+
34
+ > For **compute** usage per namespace (vCPU-hours, GB-hours, etc.), use [`namespaces.usageUnits`](./namespaces.md) — analytics covers the **edge** plane.
35
+
36
+ **Full reference:** [Analytics API](https://oblien.com/docs/api/analytics)
package/docs/cdn.md ADDED
@@ -0,0 +1,119 @@
1
+ # CDN
2
+
3
+ Upload files to the Oblien CDN and manage what you've stored. The CDN spans two planes: the **API plane** (`api.oblien.com/cdn/*`) mints short-lived tokens and lists/manages logged files, and the **edge plane** (`cdn.oblien.com`) receives the actual uploads. `client.cdn.upload()` handles both — it mints a token and posts the file for you.
4
+
5
+ Everything is **namespace-aware**: pass `namespace` to scope a token, upload, or listing. Namespace-scoped API keys are automatically pinned to their own namespace by the server; admin keys may target any namespace or omit it (seeing all of their files).
6
+
7
+ ```typescript
8
+ import { readFileSync } from 'node:fs';
9
+
10
+ // One-shot upload (mints a namespace-bound token, then uploads to the edge)
11
+ const { url } = await client.cdn.upload(
12
+ { data: readFileSync('./logo.png'), filename: 'logo.png', contentType: 'image/png' },
13
+ { namespace: 'tenant-a' },
14
+ );
15
+
16
+ // Choose exactly which variants to generate for THIS upload (no presets).
17
+ // `variants` are API-issued into the token; `metadata` is opaque customer data.
18
+ const res = await client.cdn.upload(
19
+ { data: readFileSync('./avatar.png'), filename: 'avatar.png', contentType: 'image/png' },
20
+ {
21
+ namespace: 'tenant-a',
22
+ variants: {
23
+ variantNames: ['large', 'small'],
24
+ customVariants: {
25
+ large: { width: 400, height: 400, fit: 'cover', quality: 90, format: 'jpeg' },
26
+ small: { width: 50, height: 50, fit: 'cover' },
27
+ },
28
+ keepOriginal: false,
29
+ primary: 'large',
30
+ ttl: 3600, // auto-delete after 1h (optional)
31
+ },
32
+ metadata: { userId: 'u_123', purpose: 'avatar' }, // opaque, echoed back
33
+ },
34
+ );
35
+ // res.variants → [{ variant: 'large', url }, { variant: 'small', url }]
36
+
37
+ // Mint a token yourself (e.g. to hand to a browser uploader) — the variants are
38
+ // baked into the permit at mint time, since the edge reads them from there
39
+ const { token } = await client.cdn.token({
40
+ namespace: 'tenant-a',
41
+ variants: { variantNames: ['thumb'], customVariants: { thumb: { width: 150, height: 150 } } },
42
+ });
43
+
44
+ // List / stats, scoped to a namespace
45
+ const { data } = await client.cdn.list({ namespace: 'tenant-a', limit: 20 });
46
+ await client.cdn.stats({ namespace: 'tenant-a' });
47
+
48
+ // Manage a single file
49
+ await client.cdn.get(fileId);
50
+ await client.cdn.delete(fileId); // soft delete
51
+ await client.cdn.restore(fileId);
52
+ ```
53
+
54
+ ## Methods
55
+
56
+ | Method | Plane | Description |
57
+ | --- | --- | --- |
58
+ | `cdn.token({ namespace?, variants?, metadata? })` | API | Mint a USER-scope token (upload + process), valid 1 minute |
59
+ | `cdn.adminToken({ namespace?, variants?, metadata? })` | API | Mint an ADMIN-scope token (full edge access; admin keys only) |
60
+ | `cdn.upload(file, { namespace?, token?, variants?, metadata? })` | edge | Upload one file (auto-mints a token unless one is passed) |
61
+ | `cdn.uploadMany(files, { namespace?, token?, variants?, metadata? })` | edge | Upload several files in one request |
62
+ | `cdn.processUrls({ urls, namespace?, variants?, metadata?, … })` | edge | Ingest and process files from remote URLs |
63
+ | `cdn.getLimits()` / `cdn.getVariantOptions()` | edge | Edge upload limits / default variants + custom-variant schema |
64
+ | `cdn.list({ namespace?, … })` | API | List logged files with pagination |
65
+ | `cdn.stats({ namespace? })` | API | All-time storage statistics |
66
+ | `cdn.usage({ namespace?, period? })` | API | Month usage (ingest + active) + caps |
67
+ | `cdn.usageSeries({ namespace?, interval?, days?, months? })` | API | Windowed ingest series for charts |
68
+ | `cdn.get(fileId)` | API | Fetch a single logged file |
69
+ | `cdn.delete(fileId)` / `cdn.restore(fileId)` | API | Soft-delete / restore a file |
70
+
71
+ A `file` is `{ data, filename, contentType? }` where `data` is a `Blob`, `Buffer`, `Uint8Array`, or `ArrayBuffer`.
72
+
73
+ ## Variants (API-issued, per request)
74
+
75
+ There are **no server-side presets**. Each upload decides exactly which variants
76
+ to generate via the dedicated **`variants`** field on the token/upload call
77
+ (distinct from opaque `metadata`). Options (all optional):
78
+
79
+ | Field | Meaning |
80
+ | --- | --- |
81
+ | `variantNames: string[]` | Which variants to produce. Omit → the node's default set; `[]` → original only. |
82
+ | `customVariants: { [name]: spec }` | Per-variant `spec`: `{ width?, height?, fit?, quality?, blur?, format?, withoutEnlargement? }` (provide width and/or height). |
83
+ | `keepOriginal: boolean` | Keep the uploaded original (default `true`). |
84
+ | `primary: string` | Which produced variant is the top-level `url` (default `'full'`). |
85
+ | `optimizeOriginal: { maxBytes?, quality?, format? }` | Re-encode a large original in place. |
86
+ | `ttl: number` / `expireAt: number` | Auto-delete after N seconds / at an epoch time (the node deletes it and reports back). |
87
+ | `maxBytes: number` | Lower the per-file size cap for this upload. |
88
+
89
+ `variants` is baked into the short-lived token at mint time (the edge reads it
90
+ from the permit), so it applies whether you call `upload()` directly or mint a
91
+ token yourself and hand it to a browser. When you pass your own `token`, set the
92
+ options at the time you minted it — `upload({ token })` ignores `variants`.
93
+
94
+ `metadata` is separate: opaque customer key/values the API stores with each file
95
+ and echoes back, never interpreted for processing.
96
+
97
+ `cdn.getVariantOptions()` returns the current `defaultVariants` set and the
98
+ `customVariantSchema` (field bounds) for discovery.
99
+
100
+ ## Configuration
101
+
102
+ Uploads target `https://cdn.oblien.com/api` by default. Override it (e.g. for local development against the CDN service directly) with `cdnBaseUrl`:
103
+
104
+ ```typescript
105
+ const client = new Oblien({ clientId, clientSecret, cdnBaseUrl: 'http://localhost:3240' });
106
+ ```
107
+
108
+ ## CLI
109
+
110
+ ```bash
111
+ oblien cdn upload ./logo.png --namespace tenant-a
112
+ oblien cdn upload ./logo.png --namespace tenant-a --names thumb,medium
113
+ oblien cdn upload ./a.png --variants '{"variantNames":["sq"],"customVariants":{"sq":{"width":200,"height":200}}}'
114
+ oblien cdn upload ./tmp.png --ttl 3600 --meta '{"orderId":"abc123"}' # ttl + opaque metadata
115
+ oblien cdn list --namespace tenant-a --json
116
+ oblien cdn stats --namespace tenant-a
117
+ oblien cdn token --namespace tenant-a --names thumb
118
+ oblien cdn delete 42
119
+ ```
@@ -0,0 +1,47 @@
1
+ # Domains
2
+
3
+ Standalone domain utilities — slug availability, custom-domain DNS verification, and listing your routes + SSL certificates. (For per-workspace custom domains, see `client.workspaces.domains`; for static pages, `client.pages.connectDomain`.)
4
+
5
+ ```typescript
6
+ const dm = client.domain;
7
+ ```
8
+
9
+ ## Pre-flight checks
10
+
11
+ ```typescript
12
+ // Is a slug free on a wildcard domain?
13
+ const { available, url } = await dm.checkSlug({ slug: 'my-app' });
14
+
15
+ // Verify DNS for a custom domain (CNAME → edge + TXT ownership)
16
+ const { verified, cname, ownership, errors, required_records } = await dm.verify({
17
+ domain: 'app.example.com',
18
+ resource_id: 'ws_abc',
19
+ });
20
+ ```
21
+
22
+ Standard plans require both edge DNS and TXT ownership; enterprise custom-domain grants verify with edge DNS only.
23
+
24
+ ## Routes
25
+
26
+ Every route you own — ports, pages, edge proxies/tunnels, custom domains — each with the resource it's bound to (`owner_type`/`owner_id`):
27
+
28
+ ```typescript
29
+ const { data: routes } = await dm.routes(); // all
30
+ const { data: scoped } = await dm.routes({ namespace: 'team-a' }); // filtered
31
+ ```
32
+
33
+ Namespace-scoped keys see only their namespace; admins may filter via `namespace`.
34
+
35
+ ## SSL certificates + auto-renew
36
+
37
+ ```typescript
38
+ // Certs + renewal status (expiry, auto_renew, last_error)
39
+ const { data: ssls } = await dm.ssls({ namespace: 'team-a' });
40
+
41
+ // Opt a cert out of (or back into) automatic renewal
42
+ await dm.setSslAutoRenew('app.example.com', false);
43
+ ```
44
+
45
+ Certs auto-renew ~14 days before expiry; `last_error`/`renew_attempts` surface a failing cert before it expires.
46
+
47
+ **Full reference:** [Domains API](https://oblien.com/docs/api/domains)
@@ -0,0 +1,44 @@
1
+ # Edge Proxy
2
+
3
+ Reverse-proxy a subdomain through the Oblien edge to an external upstream. A target must be **proven** before it can be routed — `create`/`update` reject an unverified target with `403 target_unverified`.
4
+
5
+ ```typescript
6
+ const ep = client.edgeProxy;
7
+ ```
8
+
9
+ ## Verify, then create
10
+
11
+ ```typescript
12
+ const target = 'https://internal-staging.example.com:8080';
13
+
14
+ // 1. Request a challenge.
15
+ const { verification } = await ep.requestVerification(target);
16
+ console.log(verification.instructions); // serve verification.token at verification.path
17
+
18
+ // 2. Prove it — Oblien fetches the token over an SSRF-safe, IP-pinned connection.
19
+ const { verification: result } = await ep.checkVerification(verification.id);
20
+ if (result.status !== 'verified') throw new Error(result.error);
21
+
22
+ // 3. Create (domain optional — defaults to the platform domain; pinned to the verified IP).
23
+ const { proxy } = await ep.create({ name: 'staging-api', slug: 'staging-api', target });
24
+ ```
25
+
26
+ Verification lasts 90 days and auto-renews; if a target can no longer be proven its proxies are disabled.
27
+
28
+ ## Manage
29
+
30
+ ```typescript
31
+ const { proxies } = await ep.list();
32
+ await ep.update(proxy.id, { target: 'https://new-upstream.example.com' });
33
+ await ep.disable(proxy.id);
34
+ await ep.enable(proxy.id);
35
+ await ep.delete(proxy.id);
36
+
37
+ // Verifications
38
+ await ep.listVerifications();
39
+ await ep.deleteVerification(verification.id);
40
+ ```
41
+
42
+ The check endpoint is rate-limited (it makes an outbound request) and a single challenge caps failed attempts — re-request to reset.
43
+
44
+ **Full reference:** [Edge Proxy concept](https://oblien.com/docs/concepts/edge-proxy) · [API](https://oblien.com/docs/api/edge-proxy)