spine-framework 0.4.4 → 0.5.0-rc.4

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 (283) hide show
  1. package/.env.example +13 -3
  2. package/.framework/cli/commands/bootstrap.ts +392 -0
  3. package/.framework/cli/commands/dev.ts +91 -218
  4. package/.framework/cli/commands/doctor.ts +132 -26
  5. package/.framework/cli/commands/generate.ts +38 -298
  6. package/.framework/cli/commands/init.ts +20 -1
  7. package/.framework/cli/commands/migrate.ts +36 -30
  8. package/.framework/cli/commands/migrations.ts +16 -56
  9. package/.framework/cli/commands/upgrade.ts +35 -0
  10. package/.framework/cli/commands/validate-schema.ts +147 -0
  11. package/.framework/cli/context.ts +223 -110
  12. package/.framework/cli/index.ts +6 -0
  13. package/.framework/cli/lib/project-files.ts +241 -1
  14. package/.framework/functions/_shared/hash-api-key.ts +183 -79
  15. package/.framework/functions/_shared/logging.ts +562 -224
  16. package/.framework/functions/_shared/middleware.ts +47 -44
  17. package/.framework/functions/admin-data.ts +39 -28
  18. package/.framework/functions/ai-agents.ts +10 -6
  19. package/.framework/functions/api-keys.ts +301 -122
  20. package/.framework/functions/apps.ts +43 -26
  21. package/.framework/functions/cil-ingest.ts +48 -15
  22. package/.framework/functions/debug-auth.ts +14 -8
  23. package/.framework/functions/deliveries.ts +39 -12
  24. package/.framework/functions/embeddings.ts +145 -76
  25. package/.framework/functions/integration-outbound.ts +67 -27
  26. package/.framework/functions/integrations.ts +254 -127
  27. package/.framework/functions/logs.ts +273 -133
  28. package/.framework/functions/observability.ts +277 -147
  29. package/.framework/functions/pipeline-executions.ts +1 -1
  30. package/.framework/functions/pipelines.ts +14 -9
  31. package/.framework/functions/prompt-configs.ts +7 -4
  32. package/.framework/functions/roles.ts +8 -5
  33. package/.framework/functions/security.ts +30 -17
  34. package/.framework/functions/system-cron.ts +240 -127
  35. package/.framework/functions/tests.ts +7 -6
  36. package/.framework/functions/timers.ts +310 -107
  37. package/.framework/functions/triggers.ts +28 -13
  38. package/.framework/functions/types.ts +13 -10
  39. package/.framework/migrations/069_log_stats_window.sql +54 -0
  40. package/.framework/migrations/070_app_type_schema_rpcs.sql +166 -0
  41. package/.framework/migrations/071_timer_interval_keys.sql +96 -0
  42. package/.framework/migrations/072_slug_autofill.sql +77 -0
  43. package/.framework/migrations/073_seed_member_roles.sql +26 -0
  44. package/.framework/src/apps/admin/index.tsx +1141 -775
  45. package/.framework/src/components/ErrorBoundary.tsx +136 -0
  46. package/.framework/src/components/admin/AdminListPage.tsx +81 -73
  47. package/.framework/src/components/admin/AdminSidebar.tsx +88 -79
  48. package/.framework/src/components/admin/EntitySelect.tsx +181 -0
  49. package/.framework/src/components/admin/PageInstructions.tsx +86 -127
  50. package/.framework/src/components/app-shell/GenericDetailPage.tsx +37 -13
  51. package/.framework/src/components/app-shell/GenericListPage.tsx +28 -32
  52. package/.framework/src/components/layout/Sidebar.tsx +300 -177
  53. package/.framework/src/components/runtime/DataDetailPage.tsx +67 -35
  54. package/.framework/src/components/runtime/DataHeader.tsx +96 -48
  55. package/.framework/src/components/runtime/DataListPage.tsx +3 -26
  56. package/.framework/src/components/runtime/DataStats.tsx +10 -10
  57. package/.framework/src/components/runtime/DataTable.tsx +12 -10
  58. package/.framework/src/components/ui/sheet.tsx +24 -26
  59. package/.framework/src/components/ui/textarea.tsx +74 -48
  60. package/.framework/src/hooks/useEntityList.ts +12 -9
  61. package/.framework/src/hooks/useListSchema.ts +108 -58
  62. package/.framework/src/instructions/README.md +57 -0
  63. package/.framework/src/instructions/ai-agents.md +69 -0
  64. package/.framework/src/instructions/alerts.md +80 -0
  65. package/.framework/src/instructions/api-keys.md +87 -0
  66. package/.framework/src/instructions/apps.md +77 -0
  67. package/.framework/src/instructions/concepts/ai-and-prompts.md +150 -0
  68. package/.framework/src/instructions/concepts/apps-and-renderers.md +162 -0
  69. package/.framework/src/instructions/concepts/auth-and-api-keys.md +133 -0
  70. package/.framework/src/instructions/concepts/automation.md +186 -0
  71. package/.framework/src/instructions/concepts/concurrency-and-idempotency.md +125 -0
  72. package/.framework/src/instructions/concepts/core-vs-custom.md +124 -0
  73. package/.framework/src/instructions/concepts/design-schema.md +152 -0
  74. package/.framework/src/instructions/concepts/integrations-and-webhooks.md +127 -0
  75. package/.framework/src/instructions/concepts/observability.md +116 -0
  76. package/.framework/src/instructions/concepts/permissions.md +150 -0
  77. package/.framework/src/instructions/concepts/runtime-records.md +111 -0
  78. package/.framework/src/instructions/concepts/scope-and-accounts.md +112 -0
  79. package/.framework/src/instructions/concepts/spine-way.md +172 -0
  80. package/.framework/src/instructions/deliveries.md +59 -0
  81. package/.framework/src/instructions/guide/00-orientation.md +106 -0
  82. package/.framework/src/instructions/guide/01-install-and-first-run.md +253 -0
  83. package/.framework/src/instructions/guide/02-project-map.md +147 -0
  84. package/.framework/src/instructions/guide/03-domain-model.md +223 -0
  85. package/.framework/src/instructions/guide/04-first-app.md +227 -0
  86. package/.framework/src/instructions/guide/05-glossary.md +183 -0
  87. package/.framework/src/instructions/integrations.md +96 -0
  88. package/.framework/src/instructions/internal/cil-markers.md +83 -0
  89. package/.framework/src/instructions/invites.md +60 -0
  90. package/.framework/src/instructions/kb.md +80 -0
  91. package/.framework/src/instructions/logs.md +77 -0
  92. package/.framework/src/instructions/observability.md +61 -0
  93. package/.framework/src/instructions/operations/deployment.md +115 -0
  94. package/.framework/src/instructions/operations/migrations.md +125 -0
  95. package/.framework/src/instructions/operations/security-checklist.md +148 -0
  96. package/.framework/src/instructions/operations/troubleshooting.md +170 -0
  97. package/.framework/src/instructions/operations/upgrade.md +116 -0
  98. package/.framework/src/instructions/pipeline-executions.md +62 -0
  99. package/.framework/src/instructions/pipelines.md +78 -0
  100. package/.framework/src/instructions/prompts.md +95 -0
  101. package/.framework/src/instructions/reference/api/admin-data.md +162 -0
  102. package/.framework/src/instructions/reference/api/auth.md +113 -0
  103. package/.framework/src/instructions/reference/api/errors-and-envelopes.md +113 -0
  104. package/.framework/src/instructions/reference/app-manifest.md +150 -0
  105. package/.framework/src/instructions/reference/cli.md +124 -0
  106. package/.framework/src/instructions/reference/database.md +132 -0
  107. package/.framework/src/instructions/reference/design-schema.md +280 -0
  108. package/.framework/src/instructions/reference/env-vars.md +133 -0
  109. package/.framework/src/instructions/reference/functions/account-nodes.md +75 -0
  110. package/.framework/src/instructions/reference/functions/admin-data.md +195 -0
  111. package/.framework/src/instructions/reference/functions/admin-funnel.md +90 -0
  112. package/.framework/src/instructions/reference/functions/admin-install-funnel.md +107 -0
  113. package/.framework/src/instructions/reference/functions/admin-signals.md +102 -0
  114. package/.framework/src/instructions/reference/functions/ai-agents.md +148 -0
  115. package/.framework/src/instructions/reference/functions/ai-interactions.md +156 -0
  116. package/.framework/src/instructions/reference/functions/api-keys.md +130 -0
  117. package/.framework/src/instructions/reference/functions/apps.md +140 -0
  118. package/.framework/src/instructions/reference/functions/auth.md +99 -0
  119. package/.framework/src/instructions/reference/functions/debug-auth.md +91 -0
  120. package/.framework/src/instructions/reference/functions/deliveries.md +110 -0
  121. package/.framework/src/instructions/reference/functions/embeddings.md +166 -0
  122. package/.framework/src/instructions/reference/functions/eval-harness.md +149 -0
  123. package/.framework/src/instructions/reference/functions/index.md +103 -0
  124. package/.framework/src/instructions/reference/functions/integration-outbound.md +200 -0
  125. package/.framework/src/instructions/reference/functions/integration-routes.md +151 -0
  126. package/.framework/src/instructions/reference/functions/integrations.md +130 -0
  127. package/.framework/src/instructions/reference/functions/invites.md +182 -0
  128. package/.framework/src/instructions/reference/functions/item-progress.md +107 -0
  129. package/.framework/src/instructions/reference/functions/kb.md +166 -0
  130. package/.framework/src/instructions/reference/functions/logs.md +141 -0
  131. package/.framework/src/instructions/reference/functions/observability.md +105 -0
  132. package/.framework/src/instructions/reference/functions/pipeline-executions.md +132 -0
  133. package/.framework/src/instructions/reference/functions/pipeline-runner-background.md +121 -0
  134. package/.framework/src/instructions/reference/functions/pipelines.md +136 -0
  135. package/.framework/src/instructions/reference/functions/prompt-configs.md +121 -0
  136. package/.framework/src/instructions/reference/functions/roles.md +121 -0
  137. package/.framework/src/instructions/reference/functions/security.md +140 -0
  138. package/.framework/src/instructions/reference/functions/system-cron.md +136 -0
  139. package/.framework/src/instructions/reference/functions/system.md +106 -0
  140. package/.framework/src/instructions/reference/functions/tests.md +97 -0
  141. package/.framework/src/instructions/reference/functions/timers.md +117 -0
  142. package/.framework/src/instructions/reference/functions/trigger-scheduler.md +102 -0
  143. package/.framework/src/instructions/reference/functions/triggers.md +140 -0
  144. package/.framework/src/instructions/reference/functions/types.md +146 -0
  145. package/.framework/src/instructions/reference/seeds.md +126 -0
  146. package/.framework/src/instructions/reference/shared-modules.md +127 -0
  147. package/.framework/src/instructions/reference/spine-config.md +114 -0
  148. package/.framework/src/instructions/roles.md +80 -0
  149. package/.framework/src/instructions/runtime-detail.md +70 -0
  150. package/.framework/src/instructions/runtime-list.md +77 -0
  151. package/.framework/src/instructions/security.md +67 -0
  152. package/.framework/src/instructions/tasks/add-a-pipeline.md +110 -0
  153. package/.framework/src/instructions/tasks/add-a-role.md +96 -0
  154. package/.framework/src/instructions/tasks/add-a-timer.md +114 -0
  155. package/.framework/src/instructions/tasks/add-a-trigger.md +106 -0
  156. package/.framework/src/instructions/tasks/add-a-type.md +151 -0
  157. package/.framework/src/instructions/tasks/add-a-webhook.md +108 -0
  158. package/.framework/src/instructions/tasks/add-an-ai-agent.md +108 -0
  159. package/.framework/src/instructions/tasks/add-an-integration.md +124 -0
  160. package/.framework/src/instructions/tasks/build-a-custom-page.md +118 -0
  161. package/.framework/src/instructions/tasks/package-and-install-an-app.md +127 -0
  162. package/.framework/src/instructions/tasks/test-your-code.md +108 -0
  163. package/.framework/src/instructions/tasks/write-a-function.md +132 -0
  164. package/.framework/src/instructions/tasks/write-a-migration.md +110 -0
  165. package/.framework/src/instructions/testing.md +59 -0
  166. package/.framework/src/instructions/timers.md +82 -0
  167. package/.framework/src/instructions/triggers.md +69 -0
  168. package/.framework/src/instructions/types.md +93 -0
  169. package/.framework/src/pages/NotFoundPage.tsx +62 -31
  170. package/.framework/src/pages/admin/AIAgentDetailPage.tsx +117 -106
  171. package/.framework/src/pages/admin/AIAgentsPage.tsx +86 -48
  172. package/.framework/src/pages/admin/APIKeyDetailPage.tsx +153 -152
  173. package/.framework/src/pages/admin/APIKeysPage.tsx +91 -90
  174. package/.framework/src/pages/admin/AlertsConfigPage.tsx +29 -18
  175. package/.framework/src/pages/admin/AppDetailPage.tsx +6 -60
  176. package/.framework/src/pages/admin/AppsPage.tsx +104 -66
  177. package/.framework/src/pages/admin/DeliveriesPage.tsx +5 -5
  178. package/.framework/src/pages/admin/EmbeddingDetailPage.tsx +5 -23
  179. package/.framework/src/pages/admin/EmbeddingsPage.tsx +5 -26
  180. package/.framework/src/pages/admin/IntegrationDetailPage.tsx +7 -7
  181. package/.framework/src/pages/admin/IntegrationsPage.tsx +85 -43
  182. package/.framework/src/pages/admin/LogsPage.tsx +144 -76
  183. package/.framework/src/pages/admin/ObservabilityDashboard.tsx +223 -140
  184. package/.framework/src/pages/admin/PipelineDetailPage.tsx +134 -113
  185. package/.framework/src/pages/admin/PipelineExecutionsPage.tsx +108 -45
  186. package/.framework/src/pages/admin/PipelinesPage.tsx +160 -115
  187. package/.framework/src/pages/admin/PromptConfigDetailPage.tsx +96 -98
  188. package/.framework/src/pages/admin/PromptConfigsPage.tsx +101 -59
  189. package/.framework/src/pages/admin/RoleDetailPage.tsx +90 -79
  190. package/.framework/src/pages/admin/RolesPage.tsx +86 -43
  191. package/.framework/src/pages/admin/SecurityPage.tsx +1 -1
  192. package/.framework/src/pages/admin/TestingDashboard.tsx +16 -28
  193. package/.framework/src/pages/admin/TimerDetailPage.tsx +117 -100
  194. package/.framework/src/pages/admin/TimersPage.tsx +90 -62
  195. package/.framework/src/pages/admin/TriggerDetailPage.tsx +90 -83
  196. package/.framework/src/pages/admin/TriggersPage.tsx +124 -99
  197. package/.framework/src/pages/admin/TypeDetailPage.tsx +152 -138
  198. package/.framework/src/pages/admin/TypesPage.tsx +90 -48
  199. package/.framework/src/pages/admin/cil/CILAgentPage.tsx +17 -25
  200. package/.framework/src/pages/admin/cil/CILChunkDetailPage.tsx +17 -27
  201. package/.framework/src/pages/admin/cil/CILDashboardPage.tsx +72 -40
  202. package/.framework/src/pages/admin/cil/CILFileListPage.tsx +321 -129
  203. package/.framework/src/pages/admin/cil/CILFileSelectPage.tsx +18 -29
  204. package/.framework/src/pages/admin/cil/CILGraphPage.tsx +26 -38
  205. package/.framework/src/pages/admin/cil/CILIngestionPage.tsx +34 -46
  206. package/.framework/src/pages/admin/cil/CILProjectsPage.tsx +189 -103
  207. package/.framework/src/pages/admin/cil/CILSearchPage.tsx +246 -136
  208. package/.framework/src/pages/admin/cil/CILSuggestionsPage.tsx +11 -22
  209. package/.framework/src/pages/admin/cil/CILVersionsPage.tsx +9 -20
  210. package/.framework/src/pages/admin/cil/FlexiblePipelinePage.tsx +26 -38
  211. package/.framework/src/pages/admin/kb/KBAdminPage.tsx +7 -26
  212. package/.framework/templates/agent/AGENTS.md +150 -0
  213. package/.framework/templates/agent/skills/spine-add-ai-agent/SKILL.md +58 -0
  214. package/.framework/templates/agent/skills/spine-add-automation/SKILL.md +62 -0
  215. package/.framework/templates/agent/skills/spine-add-integration/SKILL.md +63 -0
  216. package/.framework/templates/agent/skills/spine-architect/SKILL.md +86 -0
  217. package/.framework/templates/agent/skills/spine-install-app/SKILL.md +72 -0
  218. package/.framework/templates/agent/skills/spine-migration/SKILL.md +75 -0
  219. package/.framework/templates/agent/skills/spine-new-app/SKILL.md +67 -0
  220. package/.framework/templates/agent/skills/spine-new-function/SKILL.md +65 -0
  221. package/.framework/templates/agent/skills/spine-new-type/SKILL.md +65 -0
  222. package/.framework/templates/agent/skills/spine-schema/SKILL.md +77 -0
  223. package/.framework/templates/agent/skills/spine-test/SKILL.md +67 -0
  224. package/.framework/templates/agent/skills/spine-troubleshoot/SKILL.md +74 -0
  225. package/.framework/templates/agent/skills/spine-upgrade/SKILL.md +69 -0
  226. package/.framework/templates/project.json +4 -1
  227. package/.framework/tests/unit/account-scoping-gates.test.ts +392 -0
  228. package/.framework/tests/unit/agent-files.test.ts +355 -0
  229. package/.framework/tests/unit/agent-runner.test.ts +479 -44
  230. package/.framework/tests/unit/api-keys-create-scope-gate.test.ts +160 -0
  231. package/.framework/tests/unit/api-keys-omit-secret-fields.test.ts +38 -0
  232. package/.framework/tests/unit/bootstrap.test.ts +242 -0
  233. package/.framework/tests/unit/cli-context-api-key.test.ts +114 -0
  234. package/.framework/tests/unit/debug-auth.test.ts +38 -0
  235. package/.framework/tests/unit/deliveries-account-scoping.test.ts +185 -0
  236. package/.framework/tests/unit/integration-outbound-credentials.test.ts +167 -0
  237. package/.framework/tests/unit/integrations-audit-redaction.test.ts +130 -0
  238. package/.framework/tests/unit/logging-app-id.test.ts +75 -0
  239. package/.framework/tests/unit/system-context-denial.test.ts +145 -0
  240. package/.framework/tests/unit/system-cron.test.ts +240 -0
  241. package/.framework/tests/unit/timers.test.ts +159 -0
  242. package/README.md +125 -166
  243. package/config/tsconfig.cli.json +2 -2
  244. package/package.json +15 -4
  245. package/templates/project/package-lock.json +2 -2
  246. package/.framework/docs/admin-routes.md +0 -76
  247. package/.framework/docs/api-docs-progress.md +0 -38
  248. package/.framework/docs/api-governance.md +0 -146
  249. package/.framework/docs/api-testing-results.md +0 -212
  250. package/.framework/docs/assembly-launch-guide.md +0 -138
  251. package/.framework/docs/audit-results.md +0 -590
  252. package/.framework/docs/db-api-inventory.md +0 -95
  253. package/.framework/docs/gap-remediation-backlog.md +0 -103
  254. package/.framework/docs/ui-adoption-verification.md +0 -111
  255. package/.framework/docs/ui-api-coverage.md +0 -84
  256. package/.framework/docs/v2-compatibility-audit.md +0 -228
  257. package/.framework/mcp/index.ts +0 -133
  258. package/.framework/mcp/load-env.ts +0 -60
  259. package/.framework/mcp/shared/app-manifest.ts +0 -275
  260. package/.framework/mcp/shared/db.ts +0 -477
  261. package/.framework/mcp/shared/kb.ts +0 -118
  262. package/.framework/mcp/tools/architect.ts +0 -431
  263. package/.framework/mcp/tools/cil/context.ts +0 -345
  264. package/.framework/mcp/tools/cil/graph.ts +0 -242
  265. package/.framework/mcp/tools/cil/ingest.ts +0 -1217
  266. package/.framework/mcp/tools/cil/pipeline-orchestrator.ts +0 -693
  267. package/.framework/mcp/tools/cil/pipeline.ts +0 -767
  268. package/.framework/mcp/tools/cil/project.ts +0 -791
  269. package/.framework/mcp/tools/cil/retrieval.ts +0 -336
  270. package/.framework/mcp/tools/cil/search-core.ts +0 -454
  271. package/.framework/mcp/tools/cil/search.ts +0 -97
  272. package/.framework/mcp/tools/cil/suggest.ts +0 -186
  273. package/.framework/mcp/tools/cil/validate.ts +0 -1369
  274. package/.framework/mcp/tools/kb/delete.ts +0 -139
  275. package/.framework/mcp/tools/kb/index.ts +0 -52
  276. package/.framework/mcp/tools/kb/ingest.ts +0 -84
  277. package/.framework/mcp/tools/kb/list-types.ts +0 -102
  278. package/.framework/mcp/tools/kb/publish.ts +0 -100
  279. package/.framework/mcp/tools/kb/reindex.ts +0 -86
  280. package/.framework/mcp/tools/kb/revoke.ts +0 -85
  281. package/.framework/mcp/tools/kb/search.ts +0 -101
  282. package/.framework/mcp/tools/kb/upsert.ts +0 -125
  283. package/.framework/mcp/tools/observability.ts +0 -510
package/README.md CHANGED
@@ -1,223 +1,182 @@
1
1
  # Spine Framework
2
2
 
3
- A complete enterprise application platform built on Supabase + Netlify + React for building scalable multi-tenant SaaS applications with an extensible app ecosystem.
3
+ Spine Framework is a multi-tenant application platform that gives you the
4
+ boring 80% of a SaaS product — auth and tenancy, RBAC, typed runtime records,
5
+ pipelines/triggers/timers, integrations, a schema-driven admin UI, and
6
+ observability — so you and your AI coding agent build only the 20% that makes
7
+ your app unique. It is designed to be developed on with agentic IDEs: `init`
8
+ writes an `AGENTS.md` rules file, a set of `.devin/skills/spine-*` procedures,
9
+ and ships a complete instruction book that your agent reads while it works.
4
10
 
5
- ---
11
+ The stack is deliberately conventional: React + Vite frontend, Netlify
12
+ Functions as the API layer, Supabase (Postgres + Auth) as the database.
6
13
 
7
- ## Quick Start
8
-
9
- ### Prerequisites
10
-
11
- - Node.js 22+
12
- - A [Supabase](https://supabase.com) project
13
- - A [Netlify](https://netlify.com) account
14
-
15
- ### Start with an app
16
-
17
- The fastest way to a running system is an app package that scaffolds the framework plus itself:
18
-
19
- ```bash
20
- npm create @spine-framework/answer-once my-app
21
- ```
22
-
23
- ### Or scaffold the framework alone
14
+ ## Quick start
24
15
 
25
16
  ```bash
26
17
  mkdir my-app && cd my-app
27
- npm install spine-framework@latest
18
+ npm install spine-framework
28
19
  npx spine-framework init
29
20
  ```
30
21
 
31
- This copies the framework files, writes `package.json` with an exact `spine-framework` pin, a verified `package-lock.json`, a neutral `spine.config.json`, `.env.example`, and a frozen `.spine-manifest.json` integrity manifest.
22
+ Installing a local tarball or pre-release? `npm i ./spine-framework-<ver>.tgz`
23
+ works too — `init` preserves the `file:` spec in `package.json` instead of
24
+ stamping a registry version.
32
25
 
33
- ### 2. Configure your environment
26
+ `init` copies the framework file set (`.framework/`, `config/`, `scripts/`,
27
+ `bin/`), writes `package.json` / `netlify.toml` / `spine.config.json` /
28
+ `.env.example`, creates an empty `custom/` workspace for your code, and
29
+ freezes a `.spine-manifest.json` integrity manifest. It does **not** run
30
+ `npm install`, write `.env`, or touch your database.
34
31
 
35
- Edit `.env` with your Supabase credentials:
32
+ ### 1. Configure `.env`
36
33
 
37
- ```env
38
- SUPABASE_URL=https://your-project.supabase.co
39
- SUPABASE_ANON_KEY=your-anon-key
40
- SUPABASE_SERVICE_ROLE_KEY=your-service-role-key
41
- SUPABASE_DB_PASSWORD=your-database-password
34
+ ```bash
35
+ cp .env.example .env
42
36
  ```
43
37
 
44
- Get these from your [Supabase dashboard](https://supabase.com/dashboard/project/_/settings/api).
45
- `SUPABASE_DB_PASSWORD` is under **Settings → Database**.
38
+ Required for a working install (full list:
39
+ [`.framework/src/instructions/reference/env-vars.md`](.framework/src/instructions/reference/env-vars.md)):
46
40
 
47
- ### 3. Apply database migrations
41
+ | Variable | Used by |
42
+ |---|---|
43
+ | `VITE_SUPABASE_URL`, `VITE_SUPABASE_ANON_KEY` | the browser app |
44
+ | `SUPABASE_URL`, `SUPABASE_ANON_KEY`, `SUPABASE_SERVICE_ROLE_KEY` | Netlify functions + CLI |
45
+ | `SUPABASE_DB_PASSWORD` | `npx spine-framework migrate` (direct Postgres) |
46
+ | `APP_BASE_URL` | invite links and auth redirects (`http://localhost:8888` in dev) |
48
47
 
49
- ```bash
50
- npx spine-framework migrate
51
- ```
48
+ The Supabase URL and both keys are under **Project Settings → API Keys**
49
+ (dashboard "Publishable key" = anon, "Secret key" = service-role);
50
+ `SUPABASE_DB_PASSWORD` is under **Project Settings → Database**.
52
51
 
53
- This creates all tables, RLS policies, functions, and seeds system data. Safe to re-run on an existing project — migrations are idempotent.
52
+ Worth setting early: `INTERNAL_INVOKE_SECRET` — required for
53
+ trigger-dispatched pipelines (`openssl rand -hex 32`).
54
54
 
55
- ### 4. Start the development server
55
+ ### 2. Install, verify, migrate
56
56
 
57
57
  ```bash
58
- npm install && npm run assemble && netlify dev
58
+ npm install
59
+ npm run verify # integrity-checks the tree against .spine-manifest.json
60
+ npx spine-framework migrate # creates tables, RLS, seeds system data (idempotent)
59
61
  ```
60
62
 
61
- Your app is now running at `http://localhost:8888`.
62
-
63
- ---
64
-
65
- ## CLI Reference
66
-
67
- All commands run via `npx spine-framework <command>`.
68
-
69
- | Command | Description |
70
- |---------|-------------|
71
- | `init` | Scaffold a new project in the current directory |
72
- | `migrate` | Apply framework SQL migrations to your Supabase project |
73
- | `migrate --dry-run` | Preview pending migrations without applying |
74
- | `migrate --db-password <pw>` | Pass DB password directly instead of reading from `.env` |
75
- | `status` | Show installed apps and framework version |
76
- | `upgrade` | Sync framework-owned files to the installed `spine-framework` version |
77
-
78
- ---
79
-
80
- ## Upgrading
81
-
82
- `.framework/`, `config/`, `scripts/` and `bin/` are a managed copy of the
83
- `spine-framework` package — don't edit them (the frozen `.spine-manifest.json`
84
- integrity check will fail). To move to a newer release:
63
+ ### 3. Run it
85
64
 
86
65
  ```bash
87
- npm install spine-framework@latest
88
- npx spine-framework upgrade --dry-run # review what would change
89
- npx spine-framework upgrade
90
- npm install
91
- npm run verify
92
- npx spine-framework migrate # apply any new migrations
66
+ npm run dev:netlify # Netlify dev server on http://localhost:8888 (functions + UI)
93
67
  ```
94
68
 
95
- Upgrade refuses to overwrite locally modified framework files (rerun with
96
- `--force` to accept the overwrite), preserves your `custom/` code and app-owned
97
- `netlify.toml` sections, and lists new migrations before you apply them.
98
- App packages upgrade themselves the same way — see the app's own docs.
69
+ `npm run dev` starts only the Vite dev server on port 3001 — fine for
70
+ frontend work, but `/api/*` calls still proxy to 8888, so functions need
71
+ `netlify dev` running.
99
72
 
100
- ---
73
+ ### 4. First login
101
74
 
102
- ## Project Structure
75
+ Browser path: open `http://localhost:8888`, go to `/register`, and create an
76
+ account — **the first registrant becomes `system_admin`** via a database
77
+ trigger, and lands on `/spine-framework/admin`, the schema-driven admin app.
78
+ Later signups get no account or role until an invite or an admin places
79
+ them. Requires **Supabase email confirmation OFF** (Auth → Providers) or a
80
+ real inbox for the confirm link.
103
81
 
104
- After `init`, your project looks like this:
105
-
106
- ```
107
- my-app/
108
- ├── .env # Your credentials (never commit this)
109
- ├── .framework/ # Framework core (do not edit)
110
- │ ├── cli/ # CLI commands
111
- │ ├── functions/ # Serverless API functions
112
- │ ├── migrations/ # SQL migrations
113
- │ ├── src/ # React frontend core
114
- │ └── scripts/ # Build scripts
115
- ├── custom/ # Your custom apps and extensions
116
- │ └── apps/ # App packages go here
117
- ├── config/ # Vite, TypeScript, Tailwind config
118
- ├── scripts/ # Project-level build scripts
119
- ├── netlify.toml # Netlify configuration
120
- └── package.json
121
- ```
82
+ Headless path (scriptable): `npx spine-framework bootstrap --email
83
+ you@example.com --password '<pick-one>'` creates the first `system_admin`,
84
+ a confirmed auth user, and a `sk_` API key — no browser or email
85
+ confirmation needed. See
86
+ [`guide/01-install-and-first-run.md`](.framework/src/instructions/guide/01-install-and-first-run.md).
122
87
 
123
- ---
88
+ ## Where's the documentation
124
89
 
125
- ## Architecture
90
+ The package ships a complete instruction book at
91
+ [`.framework/src/instructions/README.md`](.framework/src/instructions/README.md):
126
92
 
127
- - **Multi-tenant**: Account hierarchy with inherited access and RLS-enforced isolation
128
- - **Role-based access control**: Fine-grained permissions via database-enforced policies
129
- - **App ecosystem**: Install, manage, and build custom applications on the framework
130
- - **Serverless API**: Netlify Functions handle all backend logic
131
- - **Real-time**: Supabase Realtime for live updates
132
- - **AI integration**: Native support for AI agents and pipeline automation
93
+ - **`guide/`** — install, project map, domain model, build your first app.
94
+ - **`concepts/`** — tenancy, permissions, design schema, automation,
95
+ observability.
96
+ - **`tasks/`** — single-goal procedures (add a type, a pipeline, a trigger,
97
+ an AI agent; package and install an app; write a function or migration).
98
+ - **`reference/`** — env vars, CLI, API endpoints, design-schema spec.
99
+ - **`operations/`** — deployment, migrations, security checklist,
100
+ troubleshooting playbook.
101
+ - **Root entity files** — one per entity (`types`, `apps`, `roles`,
102
+ `pipelines`, `triggers`, `ai-agents`, …), all in the same 7-section format.
133
103
 
134
- ### Database Schema
104
+ The same files render inside the admin UI: every admin page has an
105
+ **Instructions** button that opens the relevant doc as a sheet.
135
106
 
136
- | Table group | Tables |
137
- |-------------|--------|
138
- | Identity | `accounts`, `people`, `roles` |
139
- | Runtime | `items`, `threads`, `messages`, `links`, `attachments`, `watchers` |
140
- | Apps | `apps`, `types`, `pipelines`, `triggers` |
141
- | AI | `ai_agents`, `embeddings`, `prompt_configs` |
142
- | System | `api_keys`, `logs`, `integrations`, `timers` |
107
+ ## For AI agents
143
108
 
144
- ---
109
+ After `init`, your repo contains everything an agent needs:
145
110
 
146
- ## Building Custom Apps
111
+ - **`AGENTS.md`** — the standing rules for working in a Spine project.
112
+ - **`.devin/skills/spine-*`** — 13 procedures (`spine-new-type`,
113
+ `spine-new-app`, `spine-add-automation`, `spine-troubleshoot`, …).
114
+ - **`.framework/src/instructions/`** — the instruction book above.
147
115
 
148
- Create your own applications and place them in `custom/apps/`:
116
+ Useful CLI for agents:
149
117
 
150
- ```tsx
151
- // custom/apps/my-app/index.tsx
152
- export default function MyApp() {
153
- return <div>Hello from My App</div>
154
- }
118
+ ```bash
119
+ npx spine-framework validate-schema <file.json> # check a design_schema file
120
+ npx spine-framework validate-app custom/apps/<slug> # check an app package
155
121
  ```
156
122
 
157
- Add custom database migrations in `custom/migrations/`:
158
-
159
- ```sql
160
- -- custom/migrations/001_my_app.sql
161
- CREATE TABLE IF NOT EXISTS my_app_records (
162
- id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
163
- account_id uuid NOT NULL REFERENCES public.accounts(id),
164
- title text NOT NULL,
165
- created_at timestamptz DEFAULT now()
166
- );
123
+ Point your agent at `guide/03-domain-model.md` and `concepts/` first — it
124
+ explains the primitives and how they compose.
167
125
 
168
- ALTER TABLE my_app_records ENABLE ROW LEVEL SECURITY;
169
- ```
126
+ ## CLI quick reference
170
127
 
171
- Custom migrations are picked up automatically by `npx spine-framework migrate`.
128
+ All commands run as `npx spine-framework <command>`. Full reference:
129
+ [`.framework/src/instructions/reference/cli.md`](.framework/src/instructions/reference/cli.md).
172
130
 
173
- ---
131
+ | Command | What it does |
132
+ |---|---|
133
+ | `init [dir]` | Scaffold a project (refuses to run over an existing `.framework/`) |
134
+ | `migrate` | Apply pending SQL migrations; `--dry-run`, `--framework-only` |
135
+ | `status` | Show installed apps and framework version |
136
+ | `install-app <pkg>` | Install an app package into `custom/apps/` + register/seed it |
137
+ | `validate-schema <file>` | Validate a `design_schema` JSON file |
138
+ | `validate-app [path]` | Validate an app package's structure and manifest |
139
+ | `doctor` | Check installation health (env, files, DB reachability) |
140
+ | `bootstrap` | Create the first `system_admin` + confirmed auth user + `sk_` key, no browser |
141
+ | `upgrade` | Sync framework files to the installed package version; `--dry-run`, `--force` |
174
142
 
175
- ## Environment Variables
143
+ ## Requirements
176
144
 
177
- | Variable | Required | Description |
178
- |----------|----------|-------------|
179
- | `SUPABASE_URL` | Yes | Your Supabase project URL |
180
- | `SUPABASE_ANON_KEY` | Yes | Supabase anon/public key |
181
- | `SUPABASE_SERVICE_ROLE_KEY` | Yes | Supabase service role key (server-side only) |
182
- | `SUPABASE_DB_PASSWORD` | Yes (migrate) | Postgres database password |
145
+ - Node.js ≥ 22.13, npm ≥ 10
146
+ - A [Supabase](https://supabase.com) project (URL + anon/service keys + DB password)
147
+ - Netlify CLI for local dev — pinned as a devDependency, so `npm install`
148
+ provides it. A Netlify account/site is only needed to deploy to production.
183
149
 
184
- ---
150
+ ## Upgrading
185
151
 
186
- ## Deployment
152
+ `.framework/`, `config/`, `scripts/`, and `bin/` are a managed copy — do not
153
+ edit them (`.spine-manifest.json` will flag it). To move to a newer release:
187
154
 
188
155
  ```bash
189
- # Build and deploy to Netlify
190
- npm run assemble
191
- netlify deploy --prod
156
+ npm install spine-framework@latest
157
+ npx spine-framework upgrade --dry-run # review what would change
158
+ npx spine-framework upgrade
159
+ npx spine-framework migrate # apply any new migrations
192
160
  ```
193
161
 
194
- ---
195
-
196
- ## Contributing
197
-
198
- ```bash
199
- git clone https://github.com/spine-framework/spine-framework.git
200
- cd spine-framework
201
- npm install
202
- npm run dev
203
- ```
162
+ Your code in `custom/` is never touched.
204
163
 
205
- See [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md) for internals and [docs/APPS.md](docs/APPS.md) for the app development guide.
164
+ ## Known issues
206
165
 
207
- ---
166
+ - **`npx spine-framework generate` was removed** — it wrote stubs to a dead
167
+ `v2-custom/` tree and emitted a legacy `design_schema` shape. It now prints
168
+ migration guidance and exits 1: use `npx spine-framework create-app` for
169
+ apps, and author types in the admin UI or via `POST /api/types` (check the
170
+ schema with `npx spine-framework validate-schema`). See "Removed commands"
171
+ in [`reference/cli.md`](.framework/src/instructions/reference/cli.md).
172
+ - `npx spine-framework dev` runs the real dev flow: `scripts/assemble.sh`,
173
+ integrity check, then Vite (`--netlify` for the full `netlify dev` stack on
174
+ :8888). `npm run dev` / `npm run dev:netlify` remain equivalent.
175
+ - There is no MCP server — agent integration is via `AGENTS.md`, skills, and
176
+ the instruction book.
208
177
 
209
178
  ## License
210
179
 
211
- Licensed under the [Spine Framework Internal Use License](LICENSE.md).
212
-
213
- - Free for internal business use
214
- - Commercial redistribution requires a separate license
215
- - Contact [spine-framework.com](https://spine-framework.com) for commercial licensing
216
-
217
- ---
218
-
219
- ## Support
220
-
221
- - Documentation: [docs.spine-framework.com](https://docs.spine-framework.com)
222
- - Issues: [GitHub Issues](https://github.com/spine-framework/spine-framework/issues)
223
- - Commercial: [spine-framework.com](https://spine-framework.com)
180
+ Licensed under the [Spine Framework Internal Use License](LICENSE.md) — free
181
+ for internal business use; commercial redistribution requires a separate
182
+ license.
@@ -8,8 +8,8 @@
8
8
  "noEmit": true
9
9
  },
10
10
  "include": [
11
- "cli/**/*",
12
- "functions/_shared/**/*"
11
+ "../.framework/cli/**/*",
12
+ "../.framework/functions/_shared/**/*"
13
13
  ],
14
14
  "exclude": [
15
15
  "node_modules",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "spine-framework",
3
- "version": "0.4.4",
3
+ "version": "0.5.0-rc.4",
4
4
  "description": "Multi-tenant, modular application platform for modern SaaS systems",
5
5
  "type": "module",
6
6
  "bin": {
@@ -20,19 +20,31 @@
20
20
  "scripts/verify-manifest.mts",
21
21
  "scripts/boundary-check.sh",
22
22
  "scripts/verify-install.ts",
23
+ "templates/project/",
23
24
  "config/",
24
25
  "!config/*.tsbuildinfo",
25
26
  "!config/deno.lock",
26
27
  "!config/package-lock.json",
27
- "templates/project/",
28
28
  "vitest.config.ts",
29
29
  "netlify.toml",
30
30
  ".env.example",
31
31
  ".framework/",
32
+ "!.framework/mcp/",
32
33
  "!.framework/migrations/archive/",
33
34
  "!.framework/functions/_quarantine/",
34
35
  "!.framework/tests/integration/",
35
36
  "!.framework/public/spine.config.json",
37
+ "!.framework/docs/admin-routes.md",
38
+ "!.framework/docs/api-docs-progress.md",
39
+ "!.framework/docs/api-governance.md",
40
+ "!.framework/docs/api-testing-results.md",
41
+ "!.framework/docs/assembly-launch-guide.md",
42
+ "!.framework/docs/audit-results.md",
43
+ "!.framework/docs/db-api-inventory.md",
44
+ "!.framework/docs/gap-remediation-backlog.md",
45
+ "!.framework/docs/ui-adoption-verification.md",
46
+ "!.framework/docs/ui-api-coverage.md",
47
+ "!.framework/docs/v2-compatibility-audit.md",
36
48
  "!**/*.tsbuildinfo",
37
49
  "!**/.DS_Store",
38
50
  "!**/.env",
@@ -85,8 +97,7 @@
85
97
  "test:integration": "vitest run .framework/tests/integration",
86
98
  "test:boundary": "bash scripts/boundary-check.sh",
87
99
  "docs": "typedoc --entryPoints .framework/functions/_shared/index.ts --out docs/generated",
88
- "mcp": "tsx --env-file=.env .framework/mcp/index.ts",
89
- "mcp:spine-framework": "tsx --env-file=.env .framework/mcp/index.ts",
100
+ "docs:lint": "tsx scripts/docs-lint.mts",
90
101
  "prepack": "node custom/npm/scripts/prepack-framework.mjs stage",
91
102
  "postpack": "node custom/npm/scripts/prepack-framework.mjs clean",
92
103
  "cil:migrate-markers": "tsx .framework/scripts/cil-migrate-markers.ts",
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "spine-framework",
3
- "version": "0.4.4",
3
+ "version": "0.5.0-rc.4",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "spine-framework",
9
- "version": "0.4.4",
9
+ "version": "0.5.0-rc.4",
10
10
  "license": "SEE LICENSE IN LICENSE.md",
11
11
  "dependencies": {
12
12
  "@base-ui/react": "^1.4.1",
@@ -1,76 +0,0 @@
1
- # Admin Route Inventory (v2-core)
2
-
3
- ## Data Management Routes (admin/data/*)
4
-
5
- | Route | Purpose | Page Component | Entity | Notes |
6
- |-------|---------|----------------|--------|-------|
7
- | `/admin/data/accounts` | List accounts | AccountsPage | Account records | Runtime account management |
8
- | `/admin/data/accounts/new` | Create account | AccountCreatePage | Account records | |
9
- | `/admin/data/accounts/:id` | Account detail/edit | AccountDetailPage | Account records | |
10
- | `/admin/data/people` | List people | PeoplePage | Person records | |
11
- | `/admin/data/people/new` | Create person | PersonCreatePage | Person records | |
12
- | `/admin/data/people/:id` | Person detail/edit | PersonDetailPage | Person records | |
13
- | `/admin/data/items` | List items | ItemsPage | Item records | |
14
- | `/admin/data/items/new` | Create item | ItemCreatePage | Item records | |
15
- | `/admin/data/items/:id` | Item detail/edit | ItemDetailPage | Item records | |
16
-
17
- ## Configuration Management Routes (admin/configs/*)
18
-
19
- | Route | Purpose | Page Component | Entity | Notes |
20
- |-------|---------|----------------|--------|-------|
21
- | `/admin/configs/types` | List item types | TypesPage | Type definitions | kind='item' |
22
- | `/admin/configs/types/new` | Create item type | TypeDetailPage | Type definitions | |
23
- | `/admin/configs/types/:id` | Item type detail/edit | TypeDetailPage | Type definitions | |
24
- | `/admin/configs/accounts` | List account types | AccountTypesPage | Type definitions | kind='account' |
25
- | `/admin/configs/accounts/new` | Create account type | AccountTypeDetailPage | Type definitions | |
26
- | `/admin/configs/accounts/:id` | Account type detail/edit | AccountTypeDetailPage | Type definitions | |
27
- | `/admin/configs/people` | List person types | PersonTypesPage | Type definitions | kind='person' |
28
- | `/admin/configs/people/new` | Create person type | PersonTypeDetailPage | Type definitions | |
29
- | `/admin/configs/people/:id` | Person type detail/edit | PersonTypeDetailPage | Type definitions | |
30
- | `/admin/configs/apps` | List apps | AppsPage | App definitions | |
31
- | `/admin/configs/apps/new` | Create app | AppDetailPage | App definitions | |
32
- | `/admin/configs/apps/:id` | App detail/edit | AppDetailPage | App definitions | |
33
- | `/admin/configs/pipelines` | List pipelines | PipelinesPage | Pipeline definitions | |
34
- | `/admin/configs/pipelines/new` | Create pipeline | PipelineDetailPage | Pipeline definitions | |
35
- | `/admin/configs/pipelines/:id` | Pipeline detail/edit | PipelineDetailPage | Pipeline definitions | |
36
- | `/admin/configs/triggers` | List triggers | TriggersPage | Trigger definitions | |
37
- | `/admin/configs/triggers/new` | Create trigger | TriggerDetailPage | Trigger definitions | |
38
- | `/admin/configs/triggers/:id` | Trigger detail/edit | TriggerDetailPage | Trigger definitions | |
39
- | `/admin/configs/ai-agents` | List AI agents | AIAgentsPage | AI agent definitions | |
40
- | `/admin/configs/ai-agents/new` | Create AI agent | AIAgentDetailPage | AI agent definitions | |
41
- | `/admin/configs/ai-agents/:id` | AI agent detail/edit | AIAgentDetailPage | AI agent definitions | |
42
- | `/admin/configs/embeddings` | List embeddings | EmbeddingsPage | Embedding definitions | |
43
- | `/admin/configs/embeddings/new` | Create embedding | EmbeddingDetailPage | Embedding definitions | |
44
- | `/admin/configs/embeddings/:id` | Embedding detail/edit | EmbeddingDetailPage | Embedding definitions | |
45
- | `/admin/configs/timers` | List timers | TimersPage | Timer definitions | |
46
- | `/admin/configs/timers/new` | Create timer | TimerDetailPage | Timer definitions | |
47
- | `/admin/configs/timers/:id` | Timer detail/edit | TimerDetailPage | Timer definitions | |
48
- | `/admin/configs/integrations` | List integrations | IntegrationsPage | Integration definitions | |
49
- | `/admin/configs/integrations/new` | Create integration | IntegrationDetailPage | Integration definitions | |
50
- | `/admin/configs/integrations/:id` | Integration detail/edit | IntegrationDetailPage | Integration definitions | |
51
-
52
- ## Legacy Routes (Deprecated)
53
-
54
- | Route | Purpose | Page Component | Entity | Notes |
55
- |-------|---------|----------------|--------|-------|
56
- | `/admin/accounts` | Accounts (legacy) | AccountsPage | Account records | Use /admin/data/accounts |
57
- | `/admin/accounts/:id` | Account detail (legacy) | AccountDetailPage | Account records | Use /admin/data/accounts/:id |
58
- | `/admin/people` | People (legacy) | PeoplePage | Person records | Use /admin/data/people |
59
- | `/admin/people/:id` | Person detail (legacy) | PersonDetailPage | Person records | Use /admin/data/people/:id |
60
- | `/admin/types` | Types (legacy) | TypesPage | Type definitions | Use /admin/configs/types |
61
- | `/admin/types/:id` | Type detail (legacy) | TypeDetailPage | Type definitions | Use /admin/configs/types/:id |
62
- | `/admin/apps` | Apps (legacy) | AppsPage | App definitions | Use /admin/configs/apps |
63
- | `/admin/pipelines` | Pipelines (legacy) | PipelinesPage | Pipeline definitions | Use /admin/configs/pipelines |
64
- | `/admin/triggers` | Triggers (legacy) | TriggersPage | Trigger definitions | Use /admin/configs/triggers |
65
- | `/admin/ai-agents` | AI agents (legacy) | AIAgentsPage | AI agent definitions | Use /admin/configs/ai-agents |
66
- | `/admin/embeddings` | Embeddings (legacy) | EmbeddingsPage | Embedding definitions | Use /admin/configs/embeddings |
67
- | `/admin/timers` | Timers (legacy) | TimersPage | Timer definitions | Use /admin/configs/timers |
68
-
69
- ## Summary
70
-
71
- - **Total routes**: 43 active routes (25 data/config + 10 legacy)
72
- - **Data routes**: 9 (accounts, people, items)
73
- - **Config routes**: 34 (types, apps, pipelines, triggers, ai-agents, embeddings, timers, integrations)
74
- - **Legacy routes**: 10 (deprecated but still active)
75
-
76
- All routes are defined in `v2-core/src/App.tsx` and use lazy-loaded components from `v2-core/src/pages/`.
@@ -1,38 +0,0 @@
1
- # API Documentation Progress
2
-
3
- ## Completed Inline Documentation
4
-
5
- ### accounts.ts
6
- - Added comprehensive header documentation
7
- - Documented all CRUD operations
8
- - Fixed lint warnings (unused imports/parameters)
9
- - Status: COMPLETE
10
-
11
- ### Next Files to Document
12
- 1. people.ts
13
- 2. items.ts
14
- 3. types.ts
15
- 4. apps.ts
16
- 5. pipelines.ts
17
- 6. triggers.ts
18
- 7. ai-agents.ts
19
- 8. embeddings.ts
20
- 9. timers.ts
21
- 10. integrations.ts
22
- 11. All remaining runtime endpoints
23
-
24
- ## Documentation Template Applied
25
-
26
- Each endpoint file now includes:
27
- - Domain classification (admin-data/admin-configs/runtime/internal)
28
- - Auth requirements
29
- - Account scoping rules
30
- - v2 schema dependencies
31
- - Soft delete behavior
32
- - Audit logging requirements
33
- - Request/response contracts
34
- - Error handling
35
-
36
- ## Progress: 1/18 endpoints documented
37
-
38
- Continuing with remaining endpoints...