oblien 2.2.36 → 2.2.37

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 (63) hide show
  1. package/README.md +51 -274
  2. package/dist/cli/commands/namespaces.js +19 -6
  3. package/dist/cli/commands/namespaces.js.map +1 -1
  4. package/dist/client.d.ts +7 -1
  5. package/dist/client.d.ts.map +1 -1
  6. package/dist/client.js +9 -1
  7. package/dist/client.js.map +1 -1
  8. package/dist/domain.d.ts +20 -1
  9. package/dist/domain.d.ts.map +1 -1
  10. package/dist/domain.js +37 -0
  11. package/dist/domain.js.map +1 -1
  12. package/dist/edge-proxy.d.ts +50 -11
  13. package/dist/edge-proxy.d.ts.map +1 -1
  14. package/dist/edge-proxy.js +55 -10
  15. package/dist/edge-proxy.js.map +1 -1
  16. package/dist/index.d.ts +3 -1
  17. package/dist/index.d.ts.map +1 -1
  18. package/dist/index.js +2 -0
  19. package/dist/index.js.map +1 -1
  20. package/dist/mcp/tools.d.ts.map +1 -1
  21. package/dist/mcp/tools.js +97 -7
  22. package/dist/mcp/tools.js.map +1 -1
  23. package/dist/namespace.d.ts +27 -5
  24. package/dist/namespace.d.ts.map +1 -1
  25. package/dist/namespace.js +30 -4
  26. package/dist/namespace.js.map +1 -1
  27. package/dist/notifications.d.ts +72 -0
  28. package/dist/notifications.d.ts.map +1 -0
  29. package/dist/notifications.js +93 -0
  30. package/dist/notifications.js.map +1 -0
  31. package/dist/types/edge-proxy.d.ts +50 -1
  32. package/dist/types/edge-proxy.d.ts.map +1 -1
  33. package/dist/types/index.d.ts +5 -3
  34. package/dist/types/index.d.ts.map +1 -1
  35. package/dist/types/namespace.d.ts +55 -9
  36. package/dist/types/namespace.d.ts.map +1 -1
  37. package/dist/types/notifications.d.ts +77 -0
  38. package/dist/types/notifications.d.ts.map +1 -0
  39. package/dist/types/notifications.js +3 -0
  40. package/dist/types/notifications.js.map +1 -0
  41. package/dist/types/webhooks.d.ts +52 -0
  42. package/dist/types/webhooks.d.ts.map +1 -0
  43. package/dist/types/webhooks.js +3 -0
  44. package/dist/types/webhooks.js.map +1 -0
  45. package/dist/types/workspace-resources.d.ts +48 -0
  46. package/dist/types/workspace-resources.d.ts.map +1 -1
  47. package/dist/webhooks.d.ts +53 -0
  48. package/dist/webhooks.d.ts.map +1 -0
  49. package/dist/webhooks.js +60 -0
  50. package/dist/webhooks.js.map +1 -0
  51. package/docs/analytics.md +36 -0
  52. package/docs/domains.md +47 -0
  53. package/docs/edge-proxy.md +44 -0
  54. package/docs/edge-tunnel.md +42 -0
  55. package/docs/errors.md +34 -0
  56. package/docs/namespaces.md +69 -0
  57. package/docs/notifications.md +40 -0
  58. package/docs/pages.md +26 -0
  59. package/docs/runtime.md +53 -0
  60. package/docs/tokens.md +24 -0
  61. package/docs/webhooks.md +42 -0
  62. package/docs/workspaces.md +82 -0
  63. 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":"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;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"}
1
+ {"version":3,"file":"workspace-resources.d.ts","sourceRoot":"","sources":["../../src/types/workspace-resources.ts"],"names":[],"mappings":"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"}
@@ -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)
@@ -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)
@@ -0,0 +1,42 @@
1
+ # Edge Tunnel
2
+
3
+ Expose a **local** port to the internet through the Oblien edge — like a built-in ngrok. The tunnel client forwards incoming edge traffic to `localhost:<port>`.
4
+
5
+ ```typescript
6
+ const et = client.edgeTunnel;
7
+ ```
8
+
9
+ ## One-liner: create + connect
10
+
11
+ ```typescript
12
+ const tunnel = await et.connect({ name: 'dev-server', port: 3000 });
13
+ console.log(tunnel.url); // https://dev-xyz.preview.oblien.com
14
+
15
+ tunnel.on('request', (id, port) => console.log(`→ localhost:${port}`));
16
+ tunnel.on('close', () => console.log('disconnected'));
17
+
18
+ // Later…
19
+ tunnel.close();
20
+ ```
21
+
22
+ ## Low-level
23
+
24
+ ```typescript
25
+ const { tunnel } = await et.create({ name: 'api', port: 8080 });
26
+ const { token, connect_url } = await et.issueToken(tunnel.id);
27
+ // → drive a TunnelClient yourself with { connectUrl: connect_url, token }
28
+ ```
29
+
30
+ ## Manage
31
+
32
+ ```typescript
33
+ const { tunnels } = await et.list();
34
+ await et.checkDomain({ host: 'tunnel.example.com' }); // pre-flight custom domain (TXT/CNAME)
35
+ await et.update(tunnel.id, { name: 'api-v2' });
36
+ await et.enable(tunnel.id);
37
+ await et.disable(tunnel.id);
38
+ await et.renewSSL(tunnel.id);
39
+ await et.delete(tunnel.id);
40
+ ```
41
+
42
+ **Full reference:** [Edge Tunnel API](https://oblien.com/docs/api/edge-tunnel)
package/docs/errors.md ADDED
@@ -0,0 +1,34 @@
1
+ # Error handling
2
+
3
+ Every API error is an instance of `OblienError` with typed subclasses. The SDK preserves the machine-readable `code`, human-readable `message`, optional `details`, and optional `requestId` from the API response.
4
+
5
+ ```typescript
6
+ import {
7
+ OblienError,
8
+ NotFoundError,
9
+ RateLimitError,
10
+ PaymentRequiredError,
11
+ } from 'oblien';
12
+
13
+ try {
14
+ await client.workspaces.get('ws_nonexistent');
15
+ } catch (err) {
16
+ if (err instanceof NotFoundError) { /* 404 */ }
17
+ if (err instanceof RateLimitError) { /* 429 — back off */ }
18
+ if (err instanceof PaymentRequiredError) { /* 402 — quota exceeded */ }
19
+ if (err instanceof OblienError) {
20
+ console.error(err.code, err.message, err.details, err.requestId);
21
+ }
22
+ }
23
+ ```
24
+
25
+ | Error class | HTTP | When |
26
+ |---|---|---|
27
+ | `AuthenticationError` | 401 | Invalid or missing credentials |
28
+ | `PaymentRequiredError` | 402 | Credit quota exceeded |
29
+ | `NotFoundError` | 404 | Resource does not exist |
30
+ | `ConflictError` | 409 | Resource in wrong state |
31
+ | `ValidationError` | 422 | Invalid parameters |
32
+ | `RateLimitError` | 429 | Too many requests |
33
+
34
+ All subclasses extend `OblienError`, so a single `instanceof OblienError` catch handles everything while still exposing `.code`/`.message`/`.details`/`.requestId`.
@@ -0,0 +1,69 @@
1
+ # Namespaces
2
+
3
+ Group workspaces into isolated namespaces with **resource limits**, **spending quotas**, lifecycle controls, and **per-namespace usage** — the building block for multi-tenant setups (one namespace per customer/team).
4
+
5
+ ```typescript
6
+ const ns = client.namespaces;
7
+ ```
8
+
9
+ ## Create + resource limits
10
+
11
+ ```typescript
12
+ const { data } = await ns.create({
13
+ name: 'production',
14
+ resource_limits: {
15
+ max_workspaces: 50,
16
+ max_vcpus: 16, // per-workspace cap
17
+ max_ram_mb: 32768,
18
+ max_disk_gb: 100,
19
+ },
20
+ });
21
+ ```
22
+
23
+ Resource limits are enforced **atomically at workspace create and resource upgrade** — over-limit returns `409 NAMESPACE_LIMIT_REACHED`. `max_workspaces` is race-proof (the namespace row is locked + the count re-checked inside the insert transaction). Update them with `ns.update(id, { resource_limits })`.
24
+
25
+ ## Lifecycle
26
+
27
+ ```typescript
28
+ await ns.suspend(id); // freeze — blocks new creates/starts in the namespace
29
+ await ns.activate(id);
30
+ await ns.stopWorkspaces(id);
31
+ const { namespaces } = await ns.list();
32
+ ```
33
+
34
+ ## Quotas (optional)
35
+
36
+ Spending limits per service, with overdraft + threshold webhooks. Skip these if you bill externally (use **usage units** below instead).
37
+
38
+ ```typescript
39
+ await ns.setQuota({
40
+ namespace: 'production', service: 'sandbox',
41
+ quotaLimit: 500, overdraft: 50,
42
+ onOverdraftAction: 'stop_workspaces',
43
+ notificationThresholds: [80, 95], // fires namespace.quota.threshold webhooks
44
+ });
45
+ await ns.resetQuota({ namespace: 'production', service: 'sandbox' });
46
+ await ns.listWithQuotas();
47
+ ```
48
+
49
+ ## Usage
50
+
51
+ ```typescript
52
+ // Credits view (Oblien's converted units, grouped by service)
53
+ const usage = await ns.usage(id, { days: 30 });
54
+ const details = await ns.getDetails('production'); // quota + usage + transactions
55
+
56
+ // RAW metered units — for external billing with your own rates
57
+ const { data } = await ns.usageUnits('production', {
58
+ from: '2026-06-01T00:00:00Z', to: '2026-06-21T00:00:00Z', groupBy: 'day',
59
+ });
60
+ data.totals.vcpu_hours; // cpu_time_minutes/60, gb_hours, network_gb, disk_io_gb …
61
+ ```
62
+
63
+ `usageUnits` is deterministic for a range — poll it and idempotency-key on `(namespace, bucket.timestamp)`. The same raw units are also pushed per cycle on the `credits.usage` [webhook](./webhooks.md). Edge metrics (requests/bandwidth) per namespace come from [Analytics](./analytics.md) `home({ namespace })`.
64
+
65
+ ## Namespace-scoped API keys
66
+
67
+ A namespace-scoped key is pinned to its namespace: list/get/usage/webhooks all auto-filter to it, and it can't widen scope. `user_id` is always the tenant gate.
68
+
69
+ **Full reference:** [Namespaces API](https://oblien.com/docs/api/namespaces)