@sylphx/contract 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (125) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/dist/endpoint.d.ts +13 -1
  3. package/dist/endpoint.d.ts.map +1 -1
  4. package/dist/endpoints/admin-ai-playground.d.ts +3 -3
  5. package/dist/endpoints/admin-ai-playground.js +6 -6
  6. package/dist/endpoints/admin-anomalies.d.ts +7 -7
  7. package/dist/endpoints/admin-anomalies.js +14 -14
  8. package/dist/endpoints/admin-apm.d.ts +6 -6
  9. package/dist/endpoints/admin-apm.js +12 -12
  10. package/dist/endpoints/admin-audit.d.ts +185 -52
  11. package/dist/endpoints/admin-audit.d.ts.map +1 -1
  12. package/dist/endpoints/admin-audit.js +113 -113
  13. package/dist/endpoints/admin-billing.d.ts +19 -19
  14. package/dist/endpoints/admin-billing.js +38 -38
  15. package/dist/endpoints/admin-bootstrap.d.ts +1 -1
  16. package/dist/endpoints/admin-bootstrap.js +2 -2
  17. package/dist/endpoints/admin-broadcasts.d.ts +5 -5
  18. package/dist/endpoints/admin-broadcasts.js +10 -10
  19. package/dist/endpoints/admin-builds.d.ts +1 -1
  20. package/dist/endpoints/admin-builds.js +2 -2
  21. package/dist/endpoints/admin-config.d.ts +11 -11
  22. package/dist/endpoints/admin-config.js +22 -22
  23. package/dist/endpoints/admin-consent.d.ts +38 -14
  24. package/dist/endpoints/admin-consent.d.ts.map +1 -1
  25. package/dist/endpoints/admin-consent.js +27 -27
  26. package/dist/endpoints/admin-env-services.d.ts +1 -1
  27. package/dist/endpoints/admin-env-services.js +2 -2
  28. package/dist/endpoints/admin-impersonation.d.ts +9 -9
  29. package/dist/endpoints/admin-impersonation.js +18 -18
  30. package/dist/endpoints/admin-invitations.d.ts +5 -5
  31. package/dist/endpoints/admin-invitations.js +10 -10
  32. package/dist/endpoints/admin-jwt-keys.d.ts +6 -6
  33. package/dist/endpoints/admin-jwt-keys.js +12 -12
  34. package/dist/endpoints/admin-logs.d.ts +7 -7
  35. package/dist/endpoints/admin-logs.js +14 -14
  36. package/dist/endpoints/admin-plans.d.ts +4 -4
  37. package/dist/endpoints/admin-plans.js +8 -8
  38. package/dist/endpoints/admin-project-users.d.ts +8 -8
  39. package/dist/endpoints/admin-project-users.js +16 -16
  40. package/dist/endpoints/admin-projects.d.ts +36 -7
  41. package/dist/endpoints/admin-projects.d.ts.map +1 -1
  42. package/dist/endpoints/admin-projects.js +44 -15
  43. package/dist/endpoints/admin-quotas.d.ts +6 -6
  44. package/dist/endpoints/admin-quotas.js +12 -12
  45. package/dist/endpoints/admin-rate-limits.d.ts +2 -2
  46. package/dist/endpoints/admin-rate-limits.js +4 -4
  47. package/dist/endpoints/admin-reconcile.d.ts +1 -1
  48. package/dist/endpoints/admin-reconcile.js +2 -2
  49. package/dist/endpoints/admin-resources.d.ts +2 -2
  50. package/dist/endpoints/admin-resources.js +4 -4
  51. package/dist/endpoints/admin-secrets.d.ts +2 -2
  52. package/dist/endpoints/admin-secrets.js +4 -4
  53. package/dist/endpoints/admin-services.d.ts +1 -1
  54. package/dist/endpoints/admin-services.js +2 -2
  55. package/dist/endpoints/admin-tasks.d.ts +6 -6
  56. package/dist/endpoints/admin-tasks.js +12 -12
  57. package/dist/endpoints/admin-tenants.d.ts +1 -1
  58. package/dist/endpoints/admin-tenants.js +2 -2
  59. package/dist/endpoints/admin-traces.d.ts +5 -5
  60. package/dist/endpoints/admin-traces.js +10 -10
  61. package/dist/endpoints/admin-users.d.ts +8 -8
  62. package/dist/endpoints/admin-users.js +16 -16
  63. package/dist/endpoints/admin-webhook-signature-versions.d.ts +3 -3
  64. package/dist/endpoints/admin-webhook-signature-versions.js +6 -6
  65. package/dist/endpoints/auth.d.ts +6 -0
  66. package/dist/endpoints/auth.d.ts.map +1 -1
  67. package/dist/endpoints/auth.js +12 -1
  68. package/dist/endpoints/branch-databases.d.ts +27 -28
  69. package/dist/endpoints/branch-databases.d.ts.map +1 -1
  70. package/dist/endpoints/branch-databases.js +7 -7
  71. package/dist/endpoints/databases.d.ts +253 -3
  72. package/dist/endpoints/databases.d.ts.map +1 -1
  73. package/dist/endpoints/databases.js +19 -12
  74. package/dist/endpoints/environments.d.ts +9 -0
  75. package/dist/endpoints/environments.d.ts.map +1 -1
  76. package/dist/endpoints/organizations.d.ts +11 -0
  77. package/dist/endpoints/organizations.d.ts.map +1 -1
  78. package/dist/endpoints/organizations.js +8 -1
  79. package/dist/endpoints/project-manifest.d.ts +42 -34
  80. package/dist/endpoints/project-manifest.d.ts.map +1 -1
  81. package/dist/endpoints/secrets.d.ts +6 -6
  82. package/dist/endpoints/secrets.d.ts.map +1 -1
  83. package/dist/endpoints/secrets.js +6 -5
  84. package/dist/endpoints/storage.d.ts +4 -6
  85. package/dist/endpoints/storage.d.ts.map +1 -1
  86. package/dist/endpoints/storage.js +1 -12
  87. package/dist/hono-app.d.ts +206 -0
  88. package/dist/hono-app.d.ts.map +1 -0
  89. package/dist/hono-app.js +62 -0
  90. package/dist/index.d.ts +503 -278
  91. package/dist/index.d.ts.map +1 -1
  92. package/dist/index.js +10 -4
  93. package/dist/schemas/admin-audit.d.ts +183 -0
  94. package/dist/schemas/admin-audit.d.ts.map +1 -1
  95. package/dist/schemas/admin-audit.js +144 -0
  96. package/dist/schemas/admin-consent.d.ts +32 -3
  97. package/dist/schemas/admin-consent.d.ts.map +1 -1
  98. package/dist/schemas/admin-consent.js +28 -1
  99. package/dist/schemas/admin-projects.d.ts +20 -0
  100. package/dist/schemas/admin-projects.d.ts.map +1 -1
  101. package/dist/schemas/admin-projects.js +17 -0
  102. package/dist/schemas/auth.d.ts +11 -0
  103. package/dist/schemas/auth.d.ts.map +1 -1
  104. package/dist/schemas/auth.js +10 -0
  105. package/dist/schemas/branch-database.d.ts +20 -19
  106. package/dist/schemas/branch-database.d.ts.map +1 -1
  107. package/dist/schemas/branch-database.js +9 -7
  108. package/dist/schemas/environment.d.ts +6 -0
  109. package/dist/schemas/environment.d.ts.map +1 -1
  110. package/dist/schemas/environment.js +2 -0
  111. package/dist/schemas/ids.d.ts +2 -0
  112. package/dist/schemas/ids.d.ts.map +1 -1
  113. package/dist/schemas/ids.js +1 -0
  114. package/dist/schemas/organization.d.ts +24 -2
  115. package/dist/schemas/organization.d.ts.map +1 -1
  116. package/dist/schemas/organization.js +13 -1
  117. package/dist/schemas/project-manifest.d.ts +59 -37
  118. package/dist/schemas/project-manifest.d.ts.map +1 -1
  119. package/dist/schemas/project-manifest.js +11 -3
  120. package/dist/schemas/secret.d.ts +1 -1
  121. package/dist/schemas/secret.js +2 -2
  122. package/dist/schemas/storage.d.ts +4 -5
  123. package/dist/schemas/storage.d.ts.map +1 -1
  124. package/dist/schemas/storage.js +5 -4
  125. package/package.json +16 -2
@@ -9,58 +9,58 @@ import { AdminCancelTaskResult, AdminDLQEntryParams, AdminListDLQEntriesQuery, A
9
9
  export const adminTasksEndpoints = {
10
10
  listTasks: defineEndpoint({
11
11
  method: 'GET',
12
- path: '/admin/tasks/projects/:projectId/tasks',
12
+ path: '/operator/tasks/projects/:projectId/tasks',
13
13
  params: AdminTasksProjectParams,
14
14
  query: AdminListTasksQuery,
15
15
  response: AdminListTasksResult,
16
- plane: 'admin',
16
+ plane: 'management',
17
17
  summary: 'List scheduled jobs with offset pagination',
18
18
  tags: ['admin-tasks'],
19
19
  }),
20
20
  listJobsCursor: defineEndpoint({
21
21
  method: 'GET',
22
- path: '/admin/tasks/projects/:projectId/jobs/cursor',
22
+ path: '/operator/tasks/projects/:projectId/jobs/cursor',
23
23
  params: AdminTasksProjectParams,
24
24
  query: AdminListTasksCursorQuery,
25
25
  response: AdminListTasksCursorResult,
26
- plane: 'admin',
26
+ plane: 'management',
27
27
  summary: 'List scheduled jobs with cursor pagination',
28
28
  tags: ['admin-tasks'],
29
29
  }),
30
30
  cancelJob: defineEndpoint({
31
31
  method: 'POST',
32
- path: '/admin/tasks/projects/:projectId/jobs/:jobId/cancel',
32
+ path: '/operator/tasks/projects/:projectId/jobs/:jobId/cancel',
33
33
  params: AdminTasksJobParams,
34
34
  response: AdminCancelTaskResult,
35
- plane: 'admin',
35
+ plane: 'management',
36
36
  summary: 'Cancel a pending or scheduled job',
37
37
  tags: ['admin-tasks'],
38
38
  }),
39
39
  listDLQEntries: defineEndpoint({
40
40
  method: 'GET',
41
- path: '/admin/tasks/projects/:projectId/dlq',
41
+ path: '/operator/tasks/projects/:projectId/dlq',
42
42
  params: AdminTasksProjectParams,
43
43
  query: AdminListDLQEntriesQuery,
44
44
  response: AdminListDLQEntriesResult,
45
- plane: 'admin',
45
+ plane: 'management',
46
46
  summary: 'List dead letter queue entries',
47
47
  tags: ['admin-tasks'],
48
48
  }),
49
49
  retryDLQEntry: defineEndpoint({
50
50
  method: 'POST',
51
- path: '/admin/tasks/projects/:projectId/dlq/:entryId/retry',
51
+ path: '/operator/tasks/projects/:projectId/dlq/:entryId/retry',
52
52
  params: AdminDLQEntryParams,
53
53
  response: AdminRetryDLQEntryResult,
54
- plane: 'admin',
54
+ plane: 'management',
55
55
  summary: 'Re-queue a failed job from the DLQ',
56
56
  tags: ['admin-tasks'],
57
57
  }),
58
58
  resolveDLQEntry: defineEndpoint({
59
59
  method: 'POST',
60
- path: '/admin/tasks/projects/:projectId/dlq/:entryId/resolve',
60
+ path: '/operator/tasks/projects/:projectId/dlq/:entryId/resolve',
61
61
  params: AdminDLQEntryParams,
62
62
  response: AdminResolveDLQEntryResult,
63
- plane: 'admin',
63
+ plane: 'management',
64
64
  summary: 'Discard a DLQ entry (mark resolved)',
65
65
  tags: ['admin-tasks'],
66
66
  }),
@@ -10,7 +10,7 @@
10
10
  * Production mount: `/admin/tenants/*`.
11
11
  */
12
12
  export declare const adminTenantsEndpoints: {
13
- readonly create: import("../endpoint.js").Endpoint<"POST", "/admin/tenants/", import("effect/Schema").Schema.AnyNoContext | undefined, import("effect/Schema").Schema.AnyNoContext | undefined, import("effect/Schema").Struct<{
13
+ readonly create: import("../endpoint.js").Endpoint<"POST", "/operator/tenants/", import("effect/Schema").Schema.AnyNoContext | undefined, import("effect/Schema").Schema.AnyNoContext | undefined, import("effect/Schema").Struct<{
14
14
  orgName: import("effect/Schema").filter<import("effect/Schema").filter<typeof import("effect/Schema").String>>;
15
15
  orgSlug: import("effect/Schema").filter<import("effect/Schema").filter<import("effect/Schema").filter<typeof import("effect/Schema").String>>>;
16
16
  projectName: import("effect/Schema").filter<import("effect/Schema").filter<typeof import("effect/Schema").String>>;
@@ -14,10 +14,10 @@ import { AdminCreateTenantInput, AdminCreateTenantResult } from '../schemas/admi
14
14
  export const adminTenantsEndpoints = {
15
15
  create: defineEndpoint({
16
16
  method: 'POST',
17
- path: '/admin/tenants/',
17
+ path: '/operator/tenants/',
18
18
  body: AdminCreateTenantInput,
19
19
  response: AdminCreateTenantResult,
20
- plane: 'admin',
20
+ plane: 'management',
21
21
  summary: 'Headlessly provision a new organization + initial project',
22
22
  description: 'Creates an organization, a billing account, the owner membership, ' +
23
23
  'the initial project, and dev + production environments in a single ' +
@@ -5,7 +5,7 @@
5
5
  * Production mount: `/admin/traces/*`.
6
6
  */
7
7
  export declare const adminTracesEndpoints: {
8
- readonly stats: import("../endpoint.js").Endpoint<"GET", "/admin/traces/projects/:projectId/stats", import("effect/Schema").Struct<{
8
+ readonly stats: import("../endpoint.js").Endpoint<"GET", "/operator/traces/projects/:projectId/stats", import("effect/Schema").Struct<{
9
9
  projectId: typeof import("effect/Schema").String;
10
10
  }>, import("effect/Schema").Struct<{
11
11
  startDate: import("effect/Schema").optional<typeof import("effect/Schema").String>;
@@ -28,7 +28,7 @@ export declare const adminTracesEndpoints: {
28
28
  end: typeof import("effect/Schema").String;
29
29
  }>;
30
30
  }>>;
31
- readonly list: import("../endpoint.js").Endpoint<"GET", "/admin/traces/projects/:projectId/traces", import("effect/Schema").Struct<{
31
+ readonly list: import("../endpoint.js").Endpoint<"GET", "/operator/traces/projects/:projectId/traces", import("effect/Schema").Struct<{
32
32
  projectId: typeof import("effect/Schema").String;
33
33
  }>, import("effect/Schema").Struct<{
34
34
  statusFilter: import("effect/Schema").optional<import("effect/Schema").Literal<["all", "2xx", "3xx", "4xx", "5xx", "error"]>>;
@@ -57,7 +57,7 @@ export declare const adminTracesEndpoints: {
57
57
  total: typeof import("effect/Schema").Number;
58
58
  hasMore: typeof import("effect/Schema").Boolean;
59
59
  }>>;
60
- readonly get: import("../endpoint.js").Endpoint<"GET", "/admin/traces/projects/:projectId/traces/:traceId", import("effect/Schema").Struct<{
60
+ readonly get: import("../endpoint.js").Endpoint<"GET", "/operator/traces/projects/:projectId/traces/:traceId", import("effect/Schema").Struct<{
61
61
  projectId: typeof import("effect/Schema").String;
62
62
  traceId: typeof import("effect/Schema").String;
63
63
  }>, import("effect/Schema").Schema.AnyNoContext | undefined, import("effect/Schema").Schema.AnyNoContext | undefined, import("effect/Schema").Struct<{
@@ -94,7 +94,7 @@ export declare const adminTracesEndpoints: {
94
94
  spanCount: typeof import("effect/Schema").Number;
95
95
  }>>;
96
96
  }>>;
97
- readonly slowEndpoints: import("../endpoint.js").Endpoint<"GET", "/admin/traces/projects/:projectId/slow-endpoints", import("effect/Schema").Struct<{
97
+ readonly slowEndpoints: import("../endpoint.js").Endpoint<"GET", "/operator/traces/projects/:projectId/slow-endpoints", import("effect/Schema").Struct<{
98
98
  projectId: typeof import("effect/Schema").String;
99
99
  }>, import("effect/Schema").Struct<{
100
100
  startDate: import("effect/Schema").optional<typeof import("effect/Schema").String>;
@@ -107,7 +107,7 @@ export declare const adminTracesEndpoints: {
107
107
  p95Ms: typeof import("effect/Schema").Number;
108
108
  requestCount: typeof import("effect/Schema").Number;
109
109
  }>>>;
110
- readonly errorEndpoints: import("../endpoint.js").Endpoint<"GET", "/admin/traces/projects/:projectId/error-endpoints", import("effect/Schema").Struct<{
110
+ readonly errorEndpoints: import("../endpoint.js").Endpoint<"GET", "/operator/traces/projects/:projectId/error-endpoints", import("effect/Schema").Struct<{
111
111
  projectId: typeof import("effect/Schema").String;
112
112
  }>, import("effect/Schema").Struct<{
113
113
  startDate: import("effect/Schema").optional<typeof import("effect/Schema").String>;
@@ -9,50 +9,50 @@ import { AdminErrorEndpointsResult, AdminGetEndpointsQuery, AdminGetTraceResult,
9
9
  export const adminTracesEndpoints = {
10
10
  stats: defineEndpoint({
11
11
  method: 'GET',
12
- path: '/admin/traces/projects/:projectId/stats',
12
+ path: '/operator/traces/projects/:projectId/stats',
13
13
  params: AdminTracesProjectParams,
14
14
  query: AdminGetTraceStatsQuery,
15
15
  response: AdminTraceStatsResult,
16
- plane: 'admin',
16
+ plane: 'management',
17
17
  summary: 'Trace statistics with latency percentiles + status breakdown',
18
18
  tags: ['admin-traces'],
19
19
  }),
20
20
  list: defineEndpoint({
21
21
  method: 'GET',
22
- path: '/admin/traces/projects/:projectId/traces',
22
+ path: '/operator/traces/projects/:projectId/traces',
23
23
  params: AdminTracesProjectParams,
24
24
  query: AdminListTracesQuery,
25
25
  response: AdminListTracesResult,
26
- plane: 'admin',
26
+ plane: 'management',
27
27
  summary: 'List traces with filtering and pagination',
28
28
  tags: ['admin-traces'],
29
29
  }),
30
30
  get: defineEndpoint({
31
31
  method: 'GET',
32
- path: '/admin/traces/projects/:projectId/traces/:traceId',
32
+ path: '/operator/traces/projects/:projectId/traces/:traceId',
33
33
  params: AdminTracesTraceParams,
34
34
  response: AdminGetTraceResult,
35
- plane: 'admin',
35
+ plane: 'management',
36
36
  summary: 'Get a trace with full span waterfall and service breakdown',
37
37
  tags: ['admin-traces'],
38
38
  }),
39
39
  slowEndpoints: defineEndpoint({
40
40
  method: 'GET',
41
- path: '/admin/traces/projects/:projectId/slow-endpoints',
41
+ path: '/operator/traces/projects/:projectId/slow-endpoints',
42
42
  params: AdminTracesProjectParams,
43
43
  query: AdminGetEndpointsQuery,
44
44
  response: AdminSlowEndpointsResult,
45
- plane: 'admin',
45
+ plane: 'management',
46
46
  summary: 'Ranked list of slowest endpoints',
47
47
  tags: ['admin-traces'],
48
48
  }),
49
49
  errorEndpoints: defineEndpoint({
50
50
  method: 'GET',
51
- path: '/admin/traces/projects/:projectId/error-endpoints',
51
+ path: '/operator/traces/projects/:projectId/error-endpoints',
52
52
  params: AdminTracesProjectParams,
53
53
  query: AdminGetEndpointsQuery,
54
54
  response: AdminErrorEndpointsResult,
55
- plane: 'admin',
55
+ plane: 'management',
56
56
  summary: 'Ranked list of most error-prone endpoints',
57
57
  tags: ['admin-traces'],
58
58
  }),
@@ -5,7 +5,7 @@
5
5
  * Production mount: `/admin/users/*` (see `apps/api/src/server/platform/app.ts`).
6
6
  */
7
7
  export declare const adminUsersEndpoints: {
8
- readonly search: import("../endpoint.js").Endpoint<"GET", "/admin/users/users", import("effect/Schema").Schema.AnyNoContext | undefined, import("effect/Schema").Struct<{
8
+ readonly search: import("../endpoint.js").Endpoint<"GET", "/operator/users/users", import("effect/Schema").Schema.AnyNoContext | undefined, import("effect/Schema").Struct<{
9
9
  query: import("effect/Schema").optional<typeof import("effect/Schema").String>;
10
10
  limit: import("effect/Schema").optional<typeof import("effect/Schema").String>;
11
11
  offset: import("effect/Schema").optional<typeof import("effect/Schema").String>;
@@ -29,7 +29,7 @@ export declare const adminUsersEndpoints: {
29
29
  emailVerified: typeof import("effect/Schema").Number;
30
30
  unreadAlerts: typeof import("effect/Schema").Number;
31
31
  }>]>>;
32
- readonly get: import("../endpoint.js").Endpoint<"GET", "/admin/users/users/:userId", import("effect/Schema").Struct<{
32
+ readonly get: import("../endpoint.js").Endpoint<"GET", "/operator/users/users/:userId", import("effect/Schema").Struct<{
33
33
  userId: typeof import("effect/Schema").String;
34
34
  }>, import("effect/Schema").Schema.AnyNoContext | undefined, import("effect/Schema").Schema.AnyNoContext | undefined, import("effect/Schema").Struct<{
35
35
  id: typeof import("effect/Schema").String;
@@ -52,7 +52,7 @@ export declare const adminUsersEndpoints: {
52
52
  status: typeof import("effect/Schema").String;
53
53
  }>>;
54
54
  }>>;
55
- readonly updateRole: import("../endpoint.js").Endpoint<"PATCH", "/admin/users/users/:userId/role", import("effect/Schema").Struct<{
55
+ readonly updateRole: import("../endpoint.js").Endpoint<"PATCH", "/operator/users/users/:userId/role", import("effect/Schema").Struct<{
56
56
  userId: typeof import("effect/Schema").String;
57
57
  }>, import("effect/Schema").Schema.AnyNoContext | undefined, import("effect/Schema").Struct<{
58
58
  role: import("effect/Schema").Literal<["user", "admin", "super_admin"]>;
@@ -60,13 +60,13 @@ export declare const adminUsersEndpoints: {
60
60
  id: typeof import("effect/Schema").String;
61
61
  role: import("effect/Schema").Literal<["user", "admin", "super_admin"]>;
62
62
  }>>;
63
- readonly delete: import("../endpoint.js").Endpoint<"DELETE", "/admin/users/users/:userId", import("effect/Schema").Struct<{
63
+ readonly delete: import("../endpoint.js").Endpoint<"DELETE", "/operator/users/users/:userId", import("effect/Schema").Struct<{
64
64
  userId: typeof import("effect/Schema").String;
65
65
  }>, import("effect/Schema").Schema.AnyNoContext | undefined, import("effect/Schema").Schema.AnyNoContext | undefined, import("effect/Schema").Struct<{
66
66
  id: typeof import("effect/Schema").String;
67
67
  email: typeof import("effect/Schema").String;
68
68
  }>>;
69
- readonly getSessions: import("../endpoint.js").Endpoint<"GET", "/admin/users/users/:userId/sessions", import("effect/Schema").Struct<{
69
+ readonly getSessions: import("../endpoint.js").Endpoint<"GET", "/operator/users/users/:userId/sessions", import("effect/Schema").Struct<{
70
70
  userId: typeof import("effect/Schema").String;
71
71
  }>, import("effect/Schema").Schema.AnyNoContext | undefined, import("effect/Schema").Schema.AnyNoContext | undefined, import("effect/Schema").Struct<{
72
72
  sessions: import("effect/Schema").Array$<import("effect/Schema").Struct<{
@@ -84,19 +84,19 @@ export declare const adminUsersEndpoints: {
84
84
  expiresAt: typeof import("effect/Schema").String;
85
85
  }>>;
86
86
  }>>;
87
- readonly revokeSessions: import("../endpoint.js").Endpoint<"DELETE", "/admin/users/users/:userId/sessions", import("effect/Schema").Struct<{
87
+ readonly revokeSessions: import("../endpoint.js").Endpoint<"DELETE", "/operator/users/users/:userId/sessions", import("effect/Schema").Struct<{
88
88
  userId: typeof import("effect/Schema").String;
89
89
  }>, import("effect/Schema").Schema.AnyNoContext | undefined, import("effect/Schema").Schema.AnyNoContext | undefined, import("effect/Schema").Struct<{
90
90
  userId: typeof import("effect/Schema").String;
91
91
  revokedCount: typeof import("effect/Schema").Number;
92
92
  }>>;
93
- readonly revokeSession: import("../endpoint.js").Endpoint<"DELETE", "/admin/users/users/:userId/sessions/:sessionId", import("effect/Schema").Struct<{
93
+ readonly revokeSession: import("../endpoint.js").Endpoint<"DELETE", "/operator/users/users/:userId/sessions/:sessionId", import("effect/Schema").Struct<{
94
94
  userId: typeof import("effect/Schema").String;
95
95
  sessionId: typeof import("effect/Schema").String;
96
96
  }>, import("effect/Schema").Schema.AnyNoContext | undefined, import("effect/Schema").Schema.AnyNoContext | undefined, import("effect/Schema").Struct<{
97
97
  sessionId: typeof import("effect/Schema").String;
98
98
  }>>;
99
- readonly verifyEmail: import("../endpoint.js").Endpoint<"POST", "/admin/users/users/:userId/verify-email", import("effect/Schema").Struct<{
99
+ readonly verifyEmail: import("../endpoint.js").Endpoint<"POST", "/operator/users/users/:userId/verify-email", import("effect/Schema").Struct<{
100
100
  userId: typeof import("effect/Schema").String;
101
101
  }>, import("effect/Schema").Schema.AnyNoContext | undefined, import("effect/Schema").Schema.AnyNoContext | undefined, import("effect/Schema").Struct<{
102
102
  id: typeof import("effect/Schema").String;
@@ -9,74 +9,74 @@ import { AdminDeleteUserResult, AdminGetUserResult, AdminGetUserSessionsResult,
9
9
  export const adminUsersEndpoints = {
10
10
  search: defineEndpoint({
11
11
  method: 'GET',
12
- path: '/admin/users/users',
12
+ path: '/operator/users/users',
13
13
  query: AdminSearchUsersQuery,
14
14
  response: AdminSearchUsersResult,
15
- plane: 'admin',
15
+ plane: 'management',
16
16
  summary: 'Search platform users (admin)',
17
17
  tags: ['admin-users'],
18
18
  }),
19
19
  get: defineEndpoint({
20
20
  method: 'GET',
21
- path: '/admin/users/users/:userId',
21
+ path: '/operator/users/users/:userId',
22
22
  params: AdminUserIdParams,
23
23
  response: AdminGetUserResult,
24
- plane: 'admin',
24
+ plane: 'management',
25
25
  summary: 'Get user details including projects and subscriptions',
26
26
  tags: ['admin-users'],
27
27
  }),
28
28
  updateRole: defineEndpoint({
29
29
  method: 'PATCH',
30
- path: '/admin/users/users/:userId/role',
30
+ path: '/operator/users/users/:userId/role',
31
31
  params: AdminUserIdParams,
32
32
  body: AdminUpdateUserRoleInput,
33
33
  response: AdminUpdateUserRoleResult,
34
- plane: 'admin',
34
+ plane: 'management',
35
35
  summary: 'Update platform user role (super_admin only)',
36
36
  tags: ['admin-users'],
37
37
  }),
38
38
  delete: defineEndpoint({
39
39
  method: 'DELETE',
40
- path: '/admin/users/users/:userId',
40
+ path: '/operator/users/users/:userId',
41
41
  params: AdminUserIdParams,
42
42
  response: AdminDeleteUserResult,
43
- plane: 'admin',
43
+ plane: 'management',
44
44
  summary: 'Soft delete platform user (super_admin only)',
45
45
  tags: ['admin-users'],
46
46
  }),
47
47
  getSessions: defineEndpoint({
48
48
  method: 'GET',
49
- path: '/admin/users/users/:userId/sessions',
49
+ path: '/operator/users/users/:userId/sessions',
50
50
  params: AdminUserIdParams,
51
51
  response: AdminGetUserSessionsResult,
52
- plane: 'admin',
52
+ plane: 'management',
53
53
  summary: 'List active sessions for a user',
54
54
  tags: ['admin-users'],
55
55
  }),
56
56
  revokeSessions: defineEndpoint({
57
57
  method: 'DELETE',
58
- path: '/admin/users/users/:userId/sessions',
58
+ path: '/operator/users/users/:userId/sessions',
59
59
  params: AdminUserIdParams,
60
60
  response: AdminRevokeUserSessionsResult,
61
- plane: 'admin',
61
+ plane: 'management',
62
62
  summary: 'Revoke all sessions for a user (super_admin only)',
63
63
  tags: ['admin-users'],
64
64
  }),
65
65
  revokeSession: defineEndpoint({
66
66
  method: 'DELETE',
67
- path: '/admin/users/users/:userId/sessions/:sessionId',
67
+ path: '/operator/users/users/:userId/sessions/:sessionId',
68
68
  params: AdminRevokeSessionParams,
69
69
  response: AdminRevokeSessionResult,
70
- plane: 'admin',
70
+ plane: 'management',
71
71
  summary: 'Revoke a single session for a user',
72
72
  tags: ['admin-users'],
73
73
  }),
74
74
  verifyEmail: defineEndpoint({
75
75
  method: 'POST',
76
- path: '/admin/users/users/:userId/verify-email',
76
+ path: '/operator/users/users/:userId/verify-email',
77
77
  params: AdminUserIdParams,
78
78
  response: AdminVerifyUserEmailResult,
79
- plane: 'admin',
79
+ plane: 'management',
80
80
  summary: "Manually verify a user's email (super_admin only)",
81
81
  tags: ['admin-users'],
82
82
  }),
@@ -13,7 +13,7 @@
13
13
  * Plane: `admin`.
14
14
  */
15
15
  export declare const adminWebhookSignatureVersionsEndpoints: {
16
- readonly list: import("../endpoint.js").Endpoint<"GET", "/admin/webhooks/signature-versions", import("effect/Schema").Schema.AnyNoContext | undefined, import("effect/Schema").Schema.AnyNoContext | undefined, import("effect/Schema").Schema.AnyNoContext | undefined, import("effect/Schema").Struct<{
16
+ readonly list: import("../endpoint.js").Endpoint<"GET", "/operator/webhooks/signature-versions", import("effect/Schema").Schema.AnyNoContext | undefined, import("effect/Schema").Schema.AnyNoContext | undefined, import("effect/Schema").Schema.AnyNoContext | undefined, import("effect/Schema").Struct<{
17
17
  versions: import("effect/Schema").Array$<import("effect/Schema").Struct<{
18
18
  version: typeof import("effect/Schema").Number;
19
19
  algorithm: import("effect/Schema").Literal<["HMAC-SHA256", "HMAC-SHA512"]>;
@@ -25,7 +25,7 @@ export declare const adminWebhookSignatureVersionsEndpoints: {
25
25
  updatedBy: import("effect/Schema").NullOr<typeof import("effect/Schema").String>;
26
26
  }>>;
27
27
  }>>;
28
- readonly create: import("../endpoint.js").Endpoint<"POST", "/admin/webhooks/signature-versions", import("effect/Schema").Schema.AnyNoContext | undefined, import("effect/Schema").Schema.AnyNoContext | undefined, import("effect/Schema").Struct<{
28
+ readonly create: import("../endpoint.js").Endpoint<"POST", "/operator/webhooks/signature-versions", import("effect/Schema").Schema.AnyNoContext | undefined, import("effect/Schema").Schema.AnyNoContext | undefined, import("effect/Schema").Struct<{
29
29
  version: import("effect/Schema").filter<import("effect/Schema").filter<typeof import("effect/Schema").Number>>;
30
30
  algorithm: import("effect/Schema").Literal<["HMAC-SHA256", "HMAC-SHA512"]>;
31
31
  hmacKeyKmsId: import("effect/Schema").optional<typeof import("effect/Schema").String>;
@@ -40,7 +40,7 @@ export declare const adminWebhookSignatureVersionsEndpoints: {
40
40
  updatedAt: typeof import("effect/Schema").String;
41
41
  updatedBy: import("effect/Schema").NullOr<typeof import("effect/Schema").String>;
42
42
  }>>;
43
- readonly update: import("../endpoint.js").Endpoint<"PATCH", "/admin/webhooks/signature-versions/:version", import("effect/Schema").Struct<{
43
+ readonly update: import("../endpoint.js").Endpoint<"PATCH", "/operator/webhooks/signature-versions/:version", import("effect/Schema").Struct<{
44
44
  version: import("effect/Schema").filter<import("effect/Schema").filter<typeof import("effect/Schema").NumberFromString>>;
45
45
  }>, import("effect/Schema").Schema.AnyNoContext | undefined, import("effect/Schema").Struct<{
46
46
  active: import("effect/Schema").optional<typeof import("effect/Schema").Boolean>;
@@ -17,9 +17,9 @@ import { CreateWebhookSignatureVersionInput, CreateWebhookSignatureVersionRespon
17
17
  export const adminWebhookSignatureVersionsEndpoints = {
18
18
  list: defineEndpoint({
19
19
  method: 'GET',
20
- path: '/admin/webhooks/signature-versions',
20
+ path: '/operator/webhooks/signature-versions',
21
21
  response: ListWebhookSignatureVersionsResponse,
22
- plane: 'admin',
22
+ plane: 'management',
23
23
  summary: 'List every webhook signature version (active + retired)',
24
24
  description: 'Returns every row in `webhook_signature_versions`, ordered by ' +
25
25
  'version ascending. Operators consume this to confirm the current ' +
@@ -29,10 +29,10 @@ export const adminWebhookSignatureVersionsEndpoints = {
29
29
  }),
30
30
  create: defineEndpoint({
31
31
  method: 'POST',
32
- path: '/admin/webhooks/signature-versions',
32
+ path: '/operator/webhooks/signature-versions',
33
33
  body: CreateWebhookSignatureVersionInput,
34
34
  response: CreateWebhookSignatureVersionResponse,
35
- plane: 'admin',
35
+ plane: 'management',
36
36
  summary: 'Register a new webhook signature version',
37
37
  description: 'Installs a new version row. Typically `active: false` initially; ' +
38
38
  'flip via PATCH once the rollout window opens. v1 is pinned to ' +
@@ -41,11 +41,11 @@ export const adminWebhookSignatureVersionsEndpoints = {
41
41
  }),
42
42
  update: defineEndpoint({
43
43
  method: 'PATCH',
44
- path: '/admin/webhooks/signature-versions/:version',
44
+ path: '/operator/webhooks/signature-versions/:version',
45
45
  params: WebhookSignatureVersionParams,
46
46
  body: UpdateWebhookSignatureVersionInput,
47
47
  response: UpdateWebhookSignatureVersionResponse,
48
- plane: 'admin',
48
+ plane: 'management',
49
49
  summary: 'Toggle active state or retire a webhook signature version',
50
50
  description: 'Allowed transitions: activate (`active: true`), deactivate ' +
51
51
  '(`active: false`, but never the last active row), or retire ' +
@@ -29,6 +29,12 @@ export declare const authEndpoints: {
29
29
  email: typeof Schema.String;
30
30
  emailVerified: typeof Schema.Boolean;
31
31
  }>>;
32
+ readonly resendEmailVerification: import("../endpoint.js").Endpoint<"POST", "/auth/resend-verification", Schema.Schema.AnyNoContext | undefined, Schema.Schema.AnyNoContext | undefined, Schema.Struct<{
33
+ email: Schema.filter<typeof Schema.String>;
34
+ }>, Schema.Struct<{
35
+ success: Schema.Literal<[true]>;
36
+ message: typeof Schema.String;
37
+ }>>;
32
38
  readonly signOut: import("../endpoint.js").Endpoint<"POST", "/auth/logout", Schema.Schema.AnyNoContext | undefined, Schema.Schema.AnyNoContext | undefined, Schema.Schema.AnyNoContext | undefined, Schema.Struct<{
33
39
  success: typeof Schema.Boolean;
34
40
  }>>;
@@ -1 +1 @@
1
- {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/endpoints/auth.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAoC/B,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyMhB,CAAA"}
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/endpoints/auth.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAsC/B,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoNhB,CAAA"}
@@ -9,7 +9,7 @@
9
9
  */
10
10
  import { Schema } from 'effect';
11
11
  import { defineEndpoint } from '../endpoint.js';
12
- import { AuthUserDeleteRequest, AuthUserDeleteResponse, AuthUserExportResponse, DeviceApproveRequest, DeviceApproveResponse, DeviceDenyRequest, DeviceDenyResponse, DeviceInitRequest, DeviceInitResponse, DevicePollResponse, OAuthIntrospectRequest, OAuthIntrospectResponse, OAuthRevokeRequest, OAuthRevokeResponse, PlatformPasswordChangeRequest, PlatformPasswordChangeResponse, PlatformPasswordSetRequest, PlatformPasswordSetResponse, PlatformPasswordStatusResponse, PlatformSessionRenameRequest, PlatformSessionRenameResponse, PlatformSessionRevokeAllResponse, PlatformSessionRevokeOtherResponse, PlatformSessionRevokeRequest, PlatformSessionRevokeResponse, PlatformSessionsListResponse, SessionResult, SignInInput, SignInResult, SignUpInput, SignUpResult, } from '../schemas/auth.js';
12
+ import { AuthUserDeleteRequest, AuthUserDeleteResponse, AuthUserExportResponse, DeviceApproveRequest, DeviceApproveResponse, DeviceDenyRequest, DeviceDenyResponse, DeviceInitRequest, DeviceInitResponse, DevicePollResponse, OAuthIntrospectRequest, OAuthIntrospectResponse, OAuthRevokeRequest, OAuthRevokeResponse, PlatformPasswordChangeRequest, PlatformPasswordChangeResponse, PlatformPasswordSetRequest, PlatformPasswordSetResponse, PlatformPasswordStatusResponse, PlatformSessionRenameRequest, PlatformSessionRenameResponse, PlatformSessionRevokeAllResponse, PlatformSessionRevokeOtherResponse, PlatformSessionRevokeRequest, PlatformSessionRevokeResponse, PlatformSessionsListResponse, ResendEmailVerificationRequest, ResendEmailVerificationResponse, SessionResult, SignInInput, SignInResult, SignUpInput, SignUpResult, } from '../schemas/auth.js';
13
13
  export const authEndpoints = {
14
14
  signIn: defineEndpoint({
15
15
  method: 'POST',
@@ -18,6 +18,7 @@ export const authEndpoints = {
18
18
  response: SignInResult,
19
19
  summary: 'Sign in with email + password (may return 2FA challenge)',
20
20
  tags: ['auth'],
21
+ security: [],
21
22
  }),
22
23
  signUp: defineEndpoint({
23
24
  method: 'POST',
@@ -26,6 +27,16 @@ export const authEndpoints = {
26
27
  response: SignUpResult,
27
28
  summary: 'Register a new user with email + password',
28
29
  tags: ['auth'],
30
+ security: [],
31
+ }),
32
+ resendEmailVerification: defineEndpoint({
33
+ method: 'POST',
34
+ path: '/auth/resend-verification',
35
+ body: ResendEmailVerificationRequest,
36
+ response: ResendEmailVerificationResponse,
37
+ summary: 'Resend a privacy-preserving email verification link',
38
+ tags: ['auth'],
39
+ security: [],
29
40
  }),
30
41
  signOut: defineEndpoint({
31
42
  method: 'POST',
@@ -8,68 +8,67 @@
8
8
  * environment. The `:id` params correspond to `projects.id` and
9
9
  * `project_environments.id` (the preview env's environment row).
10
10
  *
11
- * See `docs/design/branch-db-per-preview.md` for the full design — this file
12
- * is the scaffolded contract; actual CNPG provisioning lands in the
13
- * controller (ops follow-up).
11
+ * See `docs/design/branch-db-per-preview.md` for the full design. The
12
+ * controller owns CNPG provisioning and teardown.
14
13
  */
15
14
  import { Schema } from 'effect';
16
15
  export declare const branchDatabasesEndpoints: {
17
16
  readonly list: import("../endpoint.js").Endpoint<"GET", "/projects/:id/preview-envs/branch-dbs", Schema.Struct<{
18
- id: typeof Schema.String;
17
+ id: Schema.brand<Schema.filter<typeof Schema.String>, "ProjectId">;
19
18
  }>, Schema.Schema.AnyNoContext | undefined, Schema.Schema.AnyNoContext | undefined, Schema.Struct<{
20
19
  branches: Schema.Array$<Schema.Struct<{
21
- id: typeof Schema.String;
22
- projectId: typeof Schema.String;
23
- envId: typeof Schema.String;
24
- sourceDbId: typeof Schema.String;
20
+ id: Schema.brand<Schema.filter<typeof Schema.String>, "BranchDatabaseId">;
21
+ projectId: Schema.brand<Schema.filter<typeof Schema.String>, "ProjectId">;
22
+ envId: Schema.brand<Schema.filter<typeof Schema.String>, "EnvironmentId">;
23
+ sourceDbId: Schema.brand<Schema.filter<typeof Schema.String>, "ResourceId">;
25
24
  cnpgClusterName: Schema.NullOr<typeof Schema.String>;
26
25
  connectionString: Schema.NullOr<typeof Schema.String>;
27
26
  dataMode: Schema.Literal<["none", "last-1d", "last-7d", "all"]>;
28
- status: Schema.Literal<["provisioning", "ready", "destroyed", "degraded"]>;
27
+ status: Schema.Literal<["provisioning", "ready", "destroying", "destroyed", "degraded"]>;
29
28
  createdAt: typeof Schema.String;
30
29
  destroyedAt: Schema.NullOr<typeof Schema.String>;
31
30
  }>>;
32
31
  }>>;
33
32
  readonly create: import("../endpoint.js").Endpoint<"POST", "/projects/:id/preview-envs/:envId/branch-db", Schema.Struct<{
34
- id: typeof Schema.String;
35
- envId: typeof Schema.String;
33
+ id: Schema.brand<Schema.filter<typeof Schema.String>, "ProjectId">;
34
+ envId: Schema.brand<Schema.filter<typeof Schema.String>, "EnvironmentId">;
36
35
  }>, Schema.Schema.AnyNoContext | undefined, Schema.Struct<{
37
- previewEnvId: typeof Schema.String;
36
+ previewEnvId: Schema.brand<Schema.filter<typeof Schema.String>, "EnvironmentId">;
38
37
  withData: Schema.optional<Schema.Literal<["none", "last-1d", "last-7d", "all"]>>;
39
38
  }>, Schema.Struct<{
40
- id: typeof Schema.String;
41
- projectId: typeof Schema.String;
42
- envId: typeof Schema.String;
43
- sourceDbId: typeof Schema.String;
39
+ id: Schema.brand<Schema.filter<typeof Schema.String>, "BranchDatabaseId">;
40
+ projectId: Schema.brand<Schema.filter<typeof Schema.String>, "ProjectId">;
41
+ envId: Schema.brand<Schema.filter<typeof Schema.String>, "EnvironmentId">;
42
+ sourceDbId: Schema.brand<Schema.filter<typeof Schema.String>, "ResourceId">;
44
43
  cnpgClusterName: Schema.NullOr<typeof Schema.String>;
45
44
  connectionString: Schema.NullOr<typeof Schema.String>;
46
45
  dataMode: Schema.Literal<["none", "last-1d", "last-7d", "all"]>;
47
- status: Schema.Literal<["provisioning", "ready", "destroyed", "degraded"]>;
46
+ status: Schema.Literal<["provisioning", "ready", "destroying", "destroyed", "degraded"]>;
48
47
  createdAt: typeof Schema.String;
49
48
  destroyedAt: Schema.NullOr<typeof Schema.String>;
50
49
  }>>;
51
50
  readonly get: import("../endpoint.js").Endpoint<"GET", "/projects/:id/preview-envs/:envId/branch-db", Schema.Struct<{
52
- id: typeof Schema.String;
53
- envId: typeof Schema.String;
51
+ id: Schema.brand<Schema.filter<typeof Schema.String>, "ProjectId">;
52
+ envId: Schema.brand<Schema.filter<typeof Schema.String>, "EnvironmentId">;
54
53
  }>, Schema.Schema.AnyNoContext | undefined, Schema.Schema.AnyNoContext | undefined, Schema.Struct<{
55
- id: typeof Schema.String;
56
- projectId: typeof Schema.String;
57
- envId: typeof Schema.String;
58
- sourceDbId: typeof Schema.String;
54
+ id: Schema.brand<Schema.filter<typeof Schema.String>, "BranchDatabaseId">;
55
+ projectId: Schema.brand<Schema.filter<typeof Schema.String>, "ProjectId">;
56
+ envId: Schema.brand<Schema.filter<typeof Schema.String>, "EnvironmentId">;
57
+ sourceDbId: Schema.brand<Schema.filter<typeof Schema.String>, "ResourceId">;
59
58
  cnpgClusterName: Schema.NullOr<typeof Schema.String>;
60
59
  connectionString: Schema.NullOr<typeof Schema.String>;
61
60
  dataMode: Schema.Literal<["none", "last-1d", "last-7d", "all"]>;
62
- status: Schema.Literal<["provisioning", "ready", "destroyed", "degraded"]>;
61
+ status: Schema.Literal<["provisioning", "ready", "destroying", "destroyed", "degraded"]>;
63
62
  createdAt: typeof Schema.String;
64
63
  destroyedAt: Schema.NullOr<typeof Schema.String>;
65
64
  }>>;
66
65
  readonly destroy: import("../endpoint.js").Endpoint<"DELETE", "/projects/:id/preview-envs/:envId/branch-db", Schema.Struct<{
67
- id: typeof Schema.String;
68
- envId: typeof Schema.String;
66
+ id: Schema.brand<Schema.filter<typeof Schema.String>, "ProjectId">;
67
+ envId: Schema.brand<Schema.filter<typeof Schema.String>, "EnvironmentId">;
69
68
  }>, Schema.Schema.AnyNoContext | undefined, Schema.Schema.AnyNoContext | undefined, Schema.Struct<{
70
69
  success: typeof Schema.Boolean;
71
- branchId: typeof Schema.String;
72
- status: Schema.Literal<["provisioning", "ready", "destroyed", "degraded"]>;
70
+ branchId: Schema.brand<Schema.filter<typeof Schema.String>, "BranchDatabaseId">;
71
+ status: Schema.Literal<["provisioning", "ready", "destroying", "destroyed", "degraded"]>;
73
72
  }>>;
74
73
  };
75
74
  //# sourceMappingURL=branch-databases.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"branch-databases.d.ts","sourceRoot":"","sources":["../../src/endpoints/branch-databases.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAiB/B,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuC3B,CAAA"}
1
+ {"version":3,"file":"branch-databases.d.ts","sourceRoot":"","sources":["../../src/endpoints/branch-databases.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAkB/B,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuC3B,CAAA"}