insforge 1.3.0 → 1.4.8

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 (269) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/auth/package.json +5 -3
  3. package/auth/src/lib/broadcastService.ts +115 -117
  4. package/auth/src/lib/insforge.ts +8 -0
  5. package/auth/src/main.tsx +2 -4
  6. package/auth/src/pages/SignInPage.tsx +60 -60
  7. package/auth/src/pages/SignUpPage.tsx +60 -60
  8. package/auth/src/pages/VerifyEmailPage.tsx +18 -0
  9. package/auth/tsconfig.json +2 -1
  10. package/backend/package.json +10 -6
  11. package/backend/src/api/middlewares/rate-limiters.ts +127 -127
  12. package/backend/src/api/routes/ai/index.routes.ts +475 -468
  13. package/backend/src/api/routes/auth/index.routes.ts +85 -32
  14. package/backend/src/api/routes/auth/oauth.routes.ts +11 -6
  15. package/backend/src/api/routes/database/index.routes.ts +2 -0
  16. package/backend/src/api/routes/database/records.routes.ts +39 -175
  17. package/backend/src/api/routes/database/rpc.routes.ts +69 -0
  18. package/backend/src/api/routes/deployments/index.routes.ts +192 -0
  19. package/backend/src/api/routes/docs/index.routes.ts +3 -2
  20. package/backend/src/api/routes/email/index.routes.ts +35 -35
  21. package/backend/src/api/routes/functions/index.routes.ts +3 -3
  22. package/backend/src/api/routes/metadata/index.routes.ts +26 -0
  23. package/backend/src/api/routes/webhooks/index.routes.ts +109 -0
  24. package/backend/src/infra/database/database.manager.ts +0 -10
  25. package/backend/src/infra/database/migrations/018_schema-rework.sql +441 -0
  26. package/backend/src/infra/database/migrations/019_create-deployments-table.sql +36 -0
  27. package/backend/src/infra/database/migrations/020_add-audio-modality.sql +11 -0
  28. package/backend/src/infra/database/migrations/bootstrap/bootstrap-migrations.js +103 -0
  29. package/backend/src/infra/security/token.manager.ts +1 -4
  30. package/backend/src/providers/ai/openrouter.provider.ts +12 -3
  31. package/backend/src/providers/database/base.provider.ts +39 -0
  32. package/backend/src/providers/database/cloud.provider.ts +159 -0
  33. package/backend/src/providers/deployments/vercel.provider.ts +516 -0
  34. package/backend/src/server.ts +19 -7
  35. package/backend/src/services/ai/ai-config.service.ts +6 -6
  36. package/backend/src/services/ai/ai-model.service.ts +60 -60
  37. package/backend/src/services/ai/ai-usage.service.ts +7 -7
  38. package/backend/src/services/ai/chat-completion.service.ts +415 -220
  39. package/backend/src/services/ai/helpers.ts +64 -64
  40. package/backend/src/services/ai/index.ts +13 -13
  41. package/backend/src/services/auth/auth-config.service.ts +4 -4
  42. package/backend/src/services/auth/auth-otp.service.ts +6 -6
  43. package/backend/src/services/auth/auth.service.ts +134 -74
  44. package/backend/src/services/auth/index.ts +4 -4
  45. package/backend/src/services/auth/oauth-config.service.ts +12 -12
  46. package/backend/src/services/database/database-advance.service.ts +19 -55
  47. package/backend/src/services/database/database-table.service.ts +38 -85
  48. package/backend/src/services/database/postgrest-proxy.service.ts +165 -0
  49. package/backend/src/services/deployments/deployment.service.ts +693 -0
  50. package/backend/src/services/functions/function.service.ts +61 -41
  51. package/backend/src/services/logs/audit.service.ts +10 -10
  52. package/backend/src/services/secrets/secret.service.ts +101 -27
  53. package/backend/src/services/storage/storage.service.ts +30 -30
  54. package/backend/src/services/usage/usage.service.ts +6 -6
  55. package/backend/src/types/ai.ts +8 -0
  56. package/backend/src/types/auth.ts +5 -1
  57. package/backend/src/types/database.ts +2 -0
  58. package/backend/src/types/deployments.ts +33 -0
  59. package/backend/src/types/storage.ts +1 -1
  60. package/backend/src/types/webhooks.ts +45 -0
  61. package/backend/src/utils/cookies.ts +34 -35
  62. package/backend/src/utils/environment.ts +0 -14
  63. package/backend/src/utils/s3-config-loader.ts +64 -64
  64. package/backend/src/utils/seed.ts +334 -301
  65. package/backend/src/utils/sql-parser.ts +126 -0
  66. package/backend/src/utils/utils.ts +114 -114
  67. package/backend/src/utils/validations.ts +10 -10
  68. package/backend/tests/local/test-rpc.sh +141 -0
  69. package/backend/tests/local/test-secrets.sh +1 -1
  70. package/backend/tests/manual/test-ai-model-plugins.sh +258 -0
  71. package/backend/tests/manual/test-rawsql-modes.sh +24 -24
  72. package/backend/tests/unit/database-advance.test.ts +326 -0
  73. package/backend/tests/unit/helpers.test.ts +2 -2
  74. package/claude-plugin/skills/insforge-schema-patterns/SKILL.md +13 -10
  75. package/docker-compose.prod.yml +1 -1
  76. package/docker-compose.yml +1 -1
  77. package/docs/agent-docs/deployment.md +79 -0
  78. package/docs/changelog.mdx +165 -72
  79. package/docs/core-concepts/ai/architecture.mdx +1 -23
  80. package/docs/core-concepts/ai/sdk.mdx +26 -1
  81. package/docs/core-concepts/authentication/architecture.mdx +6 -8
  82. package/docs/core-concepts/authentication/sdk.mdx +387 -91
  83. package/docs/core-concepts/authentication/ui-components/customization.mdx +460 -256
  84. package/docs/core-concepts/authentication/ui-components/nextjs.mdx +50 -24
  85. package/docs/core-concepts/authentication/ui-components/react-router.mdx +18 -19
  86. package/docs/core-concepts/authentication/ui-components/react.mdx +26 -19
  87. package/docs/core-concepts/database/architecture.mdx +58 -21
  88. package/docs/core-concepts/database/pgvector.mdx +138 -0
  89. package/docs/core-concepts/database/sdk.mdx +17 -17
  90. package/docs/core-concepts/deployments/architecture.mdx +152 -0
  91. package/docs/core-concepts/email/architecture.mdx +4 -2
  92. package/docs/core-concepts/functions/architecture.mdx +1 -1
  93. package/docs/core-concepts/functions/sdk.mdx +0 -1
  94. package/docs/core-concepts/realtime/architecture.mdx +1 -1
  95. package/docs/core-concepts/storage/architecture.mdx +1 -1
  96. package/docs/core-concepts/storage/sdk.mdx +25 -25
  97. package/docs/docs.json +14 -6
  98. package/docs/favicon.png +0 -0
  99. package/docs/favicon.svg +3 -18
  100. package/docs/images/changelog/dec-2025/apple-oauth.mp4 +0 -0
  101. package/docs/images/changelog/dec-2025/moreModels.png +0 -0
  102. package/docs/images/changelog/dec-2025/multi-region.webp +0 -0
  103. package/docs/images/changelog/dec-2025/postgres-connection.webp +0 -0
  104. package/docs/images/changelog/dec-2025/realtime2.png +0 -0
  105. package/docs/images/mcp-setup/CC-MCP-1.mp4 +0 -0
  106. package/docs/images/mcp-setup/CC-MCP-2.mp4 +0 -0
  107. package/docs/images/mcp-setup/Cursor-MCP-1.mp4 +0 -0
  108. package/docs/images/mcp-setup/Cursor-MCP-2.mp4 +0 -0
  109. package/docs/images/mcp-setup/Cursor-MCP-3.mp4 +0 -0
  110. package/docs/images/mcp-setup/claude-code-connect.png +0 -0
  111. package/docs/images/mcp-setup/cline-1.png +0 -0
  112. package/docs/images/mcp-setup/cline-2.png +0 -0
  113. package/docs/images/mcp-setup/cline-3.png +0 -0
  114. package/docs/images/mcp-setup/connect-project.png +0 -0
  115. package/docs/images/mcp-setup/copilot-1.png +0 -0
  116. package/docs/images/mcp-setup/copilot-2.png +0 -0
  117. package/docs/images/mcp-setup/copilot-3.png +0 -0
  118. package/docs/images/mcp-setup/mcp-json-1.png +0 -0
  119. package/docs/images/mcp-setup/mcp-json-2.png +0 -0
  120. package/docs/images/mcp-setup/qoder-1.png +0 -0
  121. package/docs/images/mcp-setup/qoder-2.png +0 -0
  122. package/docs/images/mcp-setup/roocode-1.png +0 -0
  123. package/docs/images/mcp-setup/roocode-2.png +0 -0
  124. package/docs/images/mcp-setup/trae-1.png +0 -0
  125. package/docs/images/mcp-setup/trae-2.png +0 -0
  126. package/docs/images/mcp-setup/trae-3.png +0 -0
  127. package/docs/images/mcp-setup/trae-4.png +0 -0
  128. package/docs/images/mcp-setup/trae-5.png +0 -0
  129. package/docs/images/mcp-setup/windsurf-1.png +0 -0
  130. package/docs/images/mcp-setup/windsurf-2.png +0 -0
  131. package/docs/insforge-instructions-sdk.md +7 -3
  132. package/docs/introduction.mdx +9 -8
  133. package/docs/mcp-setup.mdx +332 -0
  134. package/docs/oauth-server.mdx +563 -0
  135. package/docs/partnership.mdx +79 -10
  136. package/docs/quickstart.mdx +1 -1
  137. package/docs/vscode-extension.mdx +74 -0
  138. package/eslint.config.js +1 -0
  139. package/examples/response-examples.md +1 -1
  140. package/frontend/package.json +1 -1
  141. package/frontend/src/App.tsx +8 -3
  142. package/frontend/src/assets/logos/antigravity.svg +1 -0
  143. package/frontend/src/assets/logos/copilot.svg +10 -0
  144. package/frontend/src/assets/logos/deepseek.svg +139 -0
  145. package/frontend/src/assets/logos/kiro.svg +9 -0
  146. package/frontend/src/assets/logos/qoder.svg +4 -0
  147. package/frontend/src/assets/logos/qwen.svg +15 -0
  148. package/frontend/src/components/CodeBlock.tsx +2 -2
  149. package/frontend/src/components/ConnectCTA.tsx +3 -2
  150. package/frontend/src/components/datagrid/DataGrid.tsx +90 -62
  151. package/frontend/src/components/datagrid/datagridTypes.tsx +2 -1
  152. package/frontend/src/components/datagrid/index.ts +1 -1
  153. package/frontend/src/components/index.ts +0 -1
  154. package/frontend/src/components/layout/AppHeader.tsx +4 -27
  155. package/frontend/src/components/layout/AppSidebar.tsx +85 -100
  156. package/frontend/src/components/layout/Layout.tsx +34 -32
  157. package/frontend/src/components/layout/PrimaryMenu.tsx +12 -4
  158. package/frontend/src/components/radix/Select.tsx +151 -151
  159. package/frontend/src/features/ai/components/AIConfigCard.tsx +200 -200
  160. package/frontend/src/features/ai/components/AIEmptyState.tsx +23 -23
  161. package/frontend/src/features/ai/components/ModalityFilterSidebar.tsx +102 -101
  162. package/frontend/src/features/ai/components/ModelSelectionDialog.tsx +135 -135
  163. package/frontend/src/features/ai/components/ModelSelectionGrid.tsx +51 -51
  164. package/frontend/src/features/ai/components/SystemPromptDialog.tsx +118 -118
  165. package/frontend/src/features/ai/components/index.ts +6 -6
  166. package/frontend/src/features/ai/helpers.ts +147 -141
  167. package/frontend/src/features/ai/pages/AIPage.tsx +166 -166
  168. package/frontend/src/features/auth/components/AuthPreview.tsx +96 -96
  169. package/frontend/src/features/auth/components/UsersDataGrid.tsx +55 -31
  170. package/frontend/src/features/auth/components/index.ts +5 -5
  171. package/frontend/src/features/auth/pages/AuthMethodsPage.tsx +275 -275
  172. package/frontend/src/features/dashboard/pages/DashboardPage.tsx +1 -1
  173. package/frontend/src/features/database/components/DatabaseDataGrid.tsx +0 -2
  174. package/frontend/src/features/database/components/ForeignKeyCell.tsx +38 -11
  175. package/frontend/src/features/database/components/ForeignKeyPopover.tsx +18 -8
  176. package/frontend/src/features/database/components/LinkRecordModal.tsx +61 -13
  177. package/frontend/src/features/database/components/RecordFormField.tsx +1 -1
  178. package/frontend/src/features/database/components/TableSidebar.tsx +0 -3
  179. package/frontend/src/features/database/components/TablesEmptyState.tsx +1 -1
  180. package/frontend/src/features/database/components/TemplatePreview.tsx +1 -2
  181. package/frontend/src/features/database/constants.ts +16 -28
  182. package/frontend/src/features/database/hooks/useCSVImport.ts +3 -2
  183. package/frontend/src/features/database/hooks/useRawSQL.ts +3 -2
  184. package/frontend/src/features/database/hooks/useTables.ts +5 -7
  185. package/frontend/src/features/database/pages/FunctionsPage.tsx +0 -5
  186. package/frontend/src/features/database/pages/IndexesPage.tsx +0 -5
  187. package/frontend/src/features/database/pages/PoliciesPage.tsx +0 -5
  188. package/frontend/src/features/database/pages/SQLEditorPage.tsx +2 -2
  189. package/frontend/src/features/database/pages/TriggersPage.tsx +0 -5
  190. package/frontend/src/features/database/services/advance.service.ts +1 -15
  191. package/frontend/src/features/database/services/record.service.ts +4 -20
  192. package/frontend/src/features/database/services/table.service.ts +1 -4
  193. package/frontend/src/features/database/templates/ai-chatbot.ts +6 -6
  194. package/frontend/src/features/database/templates/ecommerce-platform.ts +2 -2
  195. package/frontend/src/features/database/templates/instagram-clone.ts +10 -10
  196. package/frontend/src/features/database/templates/notion-clone.ts +8 -8
  197. package/frontend/src/features/database/templates/reddit-clone.ts +10 -10
  198. package/frontend/src/features/deployments/components/DeploymentRow.tsx +93 -0
  199. package/frontend/src/features/deployments/components/DeploymentsEmptyState.tsx +15 -0
  200. package/frontend/src/features/deployments/hooks/useDeployments.ts +157 -0
  201. package/frontend/src/features/deployments/pages/DeploymentsPage.tsx +318 -0
  202. package/frontend/src/features/deployments/services/deployments.service.ts +63 -0
  203. package/frontend/src/features/functions/components/FunctionRow.tsx +72 -72
  204. package/frontend/src/features/functions/components/FunctionsSidebar.tsx +56 -56
  205. package/frontend/src/features/functions/components/SecretRow.tsx +3 -3
  206. package/frontend/src/features/functions/components/index.ts +5 -5
  207. package/frontend/src/features/functions/hooks/useFunctions.ts +5 -4
  208. package/frontend/src/features/functions/hooks/useSecrets.ts +6 -9
  209. package/frontend/src/features/functions/pages/SecretsPage.tsx +118 -118
  210. package/frontend/src/features/functions/services/function.service.ts +8 -25
  211. package/frontend/src/features/functions/services/secret.service.ts +23 -41
  212. package/frontend/src/features/login/pages/CloudLoginPage.tsx +125 -118
  213. package/frontend/src/features/logs/components/LogDetailPanel.tsx +41 -0
  214. package/frontend/src/features/logs/components/LogsDataGrid.tsx +32 -1
  215. package/frontend/src/features/logs/components/index.ts +1 -0
  216. package/frontend/src/features/logs/pages/LogsPage.tsx +36 -6
  217. package/frontend/src/features/onboard/components/ApiCredentialsSection.tsx +59 -0
  218. package/frontend/src/features/onboard/components/ConnectionStringSection.tsx +180 -0
  219. package/frontend/src/features/onboard/components/McpConnectionSection.tsx +159 -0
  220. package/frontend/src/features/onboard/components/OnboardingController.tsx +68 -0
  221. package/frontend/src/features/onboard/components/OnboardingModal.tsx +121 -267
  222. package/frontend/src/features/onboard/components/ShowPasswordButton.tsx +21 -0
  223. package/frontend/src/features/onboard/components/index.ts +9 -4
  224. package/frontend/src/features/onboard/components/mcp/CursorDeeplinkGenerator.tsx +1 -1
  225. package/frontend/src/features/onboard/components/mcp/QoderDeeplinkGenerator.tsx +36 -0
  226. package/frontend/src/features/onboard/components/mcp/helpers.tsx +123 -98
  227. package/frontend/src/features/onboard/components/mcp/index.ts +4 -3
  228. package/frontend/src/features/onboard/index.ts +17 -13
  229. package/frontend/src/features/settings/pages/SettingsPage.tsx +349 -0
  230. package/frontend/src/features/visualizer/components/AuthNode.tsx +4 -4
  231. package/frontend/src/features/visualizer/components/SchemaVisualizer.tsx +21 -8
  232. package/frontend/src/features/visualizer/pages/VisualizerPage.tsx +10 -1
  233. package/frontend/src/index.css +249 -249
  234. package/frontend/src/lib/contexts/ModalContext.tsx +35 -0
  235. package/frontend/src/lib/hooks/useMetadata.ts +45 -1
  236. package/frontend/src/lib/hooks/useModal.tsx +2 -0
  237. package/frontend/src/lib/routing/AppRoutes.tsx +103 -99
  238. package/frontend/src/lib/services/metadata.service.ts +20 -3
  239. package/frontend/src/lib/utils/menuItems.ts +223 -207
  240. package/frontend/src/lib/utils/utils.ts +196 -196
  241. package/functions/server.ts +315 -315
  242. package/functions/worker-template.js +1 -1
  243. package/openapi/ai.yaml +115 -5
  244. package/openapi/auth.yaml +97 -17
  245. package/openapi/logs.yaml +0 -2
  246. package/openapi/metadata.yaml +0 -2
  247. package/openapi/records.yaml +21 -21
  248. package/openapi/tables.yaml +1 -2
  249. package/package.json +1 -1
  250. package/shared-schemas/package.json +1 -1
  251. package/shared-schemas/src/ai-api.schema.ts +251 -143
  252. package/shared-schemas/src/ai.schema.ts +63 -63
  253. package/shared-schemas/src/auth-api.schema.ts +34 -6
  254. package/shared-schemas/src/auth.schema.ts +17 -10
  255. package/shared-schemas/src/cloud-events.schema.ts +26 -0
  256. package/shared-schemas/src/deployments-api.schema.ts +55 -0
  257. package/shared-schemas/src/deployments.schema.ts +30 -0
  258. package/shared-schemas/src/docs.schema.ts +8 -2
  259. package/shared-schemas/src/email-api.schema.ts +30 -30
  260. package/shared-schemas/src/functions-api.schema.ts +13 -4
  261. package/shared-schemas/src/functions.schema.ts +1 -1
  262. package/shared-schemas/src/index.ts +22 -18
  263. package/shared-schemas/src/metadata.schema.ts +30 -4
  264. package/shared-schemas/src/secrets-api.schema.ts +44 -0
  265. package/shared-schemas/src/secrets.schema.ts +15 -0
  266. package/zeabur/README.md +13 -0
  267. package/zeabur/template.yml +20 -51
  268. package/backend/src/types/profile.ts +0 -55
  269. package/frontend/src/components/ProjectInfoModal.tsx +0 -128
package/openapi/ai.yaml CHANGED
@@ -405,7 +405,7 @@ components:
405
405
  example: openai/gpt-4
406
406
  messages:
407
407
  type: array
408
- description: Array of messages for conversation
408
+ description: Array of messages for conversation (supports text, images, audio, and files/PDFs)
409
409
  items:
410
410
  $ref: '#/components/schemas/ChatMessage'
411
411
  stream:
@@ -428,15 +428,25 @@ components:
428
428
  systemPrompt:
429
429
  type: string
430
430
  description: System prompt to guide model behavior
431
+ webSearch:
432
+ $ref: '#/components/schemas/WebSearchPlugin'
433
+ fileParser:
434
+ $ref: '#/components/schemas/FileParserPlugin'
435
+ thinking:
436
+ type: boolean
437
+ description: Enable extended reasoning capabilities (appends :thinking to model ID if not already present). Not every model supports this, only works with Anthropic models with the :thinking suffix.
431
438
 
432
439
  ChatCompletionResponse:
433
440
  type: object
434
441
  properties:
435
- success:
436
- type: boolean
437
- content:
442
+ text:
438
443
  type: string
439
- description: AI model response
444
+ description: AI model response content
445
+ annotations:
446
+ type: array
447
+ description: URL citations from web search results (present when webSearch is enabled)
448
+ items:
449
+ $ref: '#/components/schemas/UrlCitationAnnotation'
440
450
  metadata:
441
451
  type: object
442
452
  properties:
@@ -455,6 +465,106 @@ components:
455
465
  totalTokens:
456
466
  type: integer
457
467
 
468
+ WebSearchPlugin:
469
+ type: object
470
+ required:
471
+ - enabled
472
+ properties:
473
+ enabled:
474
+ type: boolean
475
+ description: Enable web search integration
476
+ engine:
477
+ type: string
478
+ enum: [native, exa]
479
+ description: |
480
+ Search engine selection:
481
+ - native: Use provider's built-in web search (OpenAI, Anthropic, Perplexity, xAI)
482
+ - exa: Use Exa's search API
483
+ - undefined: Auto-select (native if available, otherwise Exa)
484
+ maxResults:
485
+ type: integer
486
+ minimum: 1
487
+ maximum: 10
488
+ default: 5
489
+ description: Maximum number of search results to include
490
+ searchPrompt:
491
+ type: string
492
+ description: Custom prompt for attaching search results to the message
493
+
494
+ FileParserPlugin:
495
+ type: object
496
+ required:
497
+ - enabled
498
+ properties:
499
+ enabled:
500
+ type: boolean
501
+ description: Enable file parsing for PDFs in messages
502
+ pdf:
503
+ type: object
504
+ properties:
505
+ engine:
506
+ type: string
507
+ enum: [pdf-text, mistral-ocr, native]
508
+ description: |
509
+ PDF processing engine:
510
+ - pdf-text: Best for well-structured PDFs with clear text content (Free)
511
+ - mistral-ocr: Best for scanned documents or PDFs with images ($2 per 1,000 pages)
512
+ - native: Only for models with native file support (charged as input tokens)
513
+ If not specified, defaults to native if available, otherwise mistral-ocr
514
+
515
+ FileContent:
516
+ type: object
517
+ description: File content for PDFs and other documents
518
+ required:
519
+ - type
520
+ - file
521
+ properties:
522
+ type:
523
+ type: string
524
+ enum: [file]
525
+ file:
526
+ type: object
527
+ required:
528
+ - filename
529
+ - file_data
530
+ properties:
531
+ filename:
532
+ type: string
533
+ description: Filename with extension (e.g., "document.pdf")
534
+ example: document.pdf
535
+ file_data:
536
+ type: string
537
+ description: |
538
+ File data can be:
539
+ - Public URL: "https://example.com/document.pdf"
540
+ - Base64 data URL: "data:application/pdf;base64,..."
541
+ example: "https://example.com/document.pdf"
542
+
543
+ UrlCitationAnnotation:
544
+ type: object
545
+ properties:
546
+ type:
547
+ type: string
548
+ enum: [url_citation]
549
+ urlCitation:
550
+ type: object
551
+ properties:
552
+ url:
553
+ type: string
554
+ description: URL of the cited source
555
+ title:
556
+ type: string
557
+ description: Title of the cited page
558
+ content:
559
+ type: string
560
+ description: Relevant content snippet from the source
561
+ startIndex:
562
+ type: integer
563
+ description: Start character index in response text where citation applies
564
+ endIndex:
565
+ type: integer
566
+ description: End character index in response text where citation applies
567
+
458
568
  ImageGenerationOptions:
459
569
  type: object
460
570
  required:
package/openapi/auth.yaml CHANGED
@@ -26,7 +26,7 @@ paths:
26
26
  properties:
27
27
  provider:
28
28
  type: string
29
- enum: [google, github, discord, linkedin, facebook, microsoft]
29
+ enum: [google, github, discord, linkedin, facebook, instagram, tiktok, apple, x, spotify, microsoft]
30
30
  useSharedKey:
31
31
  type: boolean
32
32
  requireEmailVerification:
@@ -60,6 +60,71 @@ paths:
60
60
  enum: [code, link]
61
61
  description: Method for password reset (code = 6-digit OTP + exchange flow, link = magic link)
62
62
 
63
+ /api/auth/profiles/current:
64
+ patch:
65
+ summary: Update current user's profile
66
+ description: Update the profile of the currently authenticated user
67
+ tags:
68
+ - Client
69
+ security:
70
+ - bearerAuth: []
71
+ requestBody:
72
+ required: true
73
+ content:
74
+ application/json:
75
+ schema:
76
+ type: object
77
+ required:
78
+ - profile
79
+ properties:
80
+ profile:
81
+ type: object
82
+ additionalProperties: true
83
+ description: Profile data (name, avatar_url, and any custom fields)
84
+ properties:
85
+ name:
86
+ type: string
87
+ avatar_url:
88
+ type: string
89
+ format: uri
90
+ responses:
91
+ '200':
92
+ description: Profile updated successfully
93
+ content:
94
+ application/json:
95
+ schema:
96
+ $ref: '#/components/schemas/ProfileResponse'
97
+ '400':
98
+ description: Invalid request
99
+ '401':
100
+ description: Unauthorized - authentication required
101
+
102
+ /api/auth/profiles/{userId}:
103
+ get:
104
+ summary: Get user profile by ID
105
+ description: Get public profile information for a user by their ID (public endpoint)
106
+ tags:
107
+ - Client
108
+ parameters:
109
+ - name: userId
110
+ in: path
111
+ required: true
112
+ schema:
113
+ type: string
114
+ format: uuid
115
+ description: User ID
116
+ responses:
117
+ '200':
118
+ description: User profile
119
+ content:
120
+ application/json:
121
+ schema:
122
+ $ref: '#/components/schemas/ProfileResponse'
123
+ '400':
124
+ description: Invalid user ID format
125
+ '404':
126
+ description: User not found
127
+
63
128
  /api/auth/config:
64
129
  get:
65
130
  summary: Get authentication configuration
@@ -847,7 +912,7 @@ paths:
847
912
  properties:
848
913
  provider:
849
914
  type: string
850
- enum: [google, github, discord, linkedin, facebook, microsoft]
915
+ enum: [google, github, discord, linkedin, facebook, instagram, tiktok, apple, x, spotify, microsoft]
851
916
  clientId:
852
917
  type: string
853
918
  clientSecret:
@@ -888,7 +953,7 @@ paths:
888
953
  required: true
889
954
  schema:
890
955
  type: string
891
- enum: [google, github, discord, linkedin, facebook, microsoft]
956
+ enum: [google, github, discord, linkedin, facebook, instagram, tiktok, apple, x, spotify, microsoft]
892
957
  responses:
893
958
  '200':
894
959
  description: OAuth configuration
@@ -921,7 +986,7 @@ paths:
921
986
  required: true
922
987
  schema:
923
988
  type: string
924
- enum: [google, github, discord, linkedin, facebook, microsoft]
989
+ enum: [google, github, discord, linkedin, facebook, instagram, tiktok, apple, x, spotify, microsoft]
925
990
  requestBody:
926
991
  required: true
927
992
  content:
@@ -970,7 +1035,7 @@ paths:
970
1035
  required: true
971
1036
  schema:
972
1037
  type: string
973
- enum: [google, github, discord, linkedin, facebook, microsoft]
1038
+ enum: [google, github, discord, linkedin, facebook, instagram, tiktok, apple, x, spotify, microsoft]
974
1039
  responses:
975
1040
  '200':
976
1041
  description: Configuration deleted
@@ -1002,7 +1067,7 @@ paths:
1002
1067
  required: true
1003
1068
  schema:
1004
1069
  type: string
1005
- enum: [google, github, discord, linkedin, facebook, microsoft]
1070
+ enum: [google, github, discord, linkedin, facebook, instagram, tiktok, apple, x, spotify, microsoft]
1006
1071
  - name: redirect_uri
1007
1072
  in: query
1008
1073
  required: true
@@ -1075,7 +1140,7 @@ paths:
1075
1140
  required: true
1076
1141
  schema:
1077
1142
  type: string
1078
- enum: [google, github, discord, linkedin, facebook, microsoft]
1143
+ enum: [google, github, discord, linkedin, facebook, instagram, tiktok, apple, x, spotify, microsoft]
1079
1144
  - name: code
1080
1145
  in: query
1081
1146
  schema:
@@ -1123,19 +1188,15 @@ components:
1123
1188
  email:
1124
1189
  type: string
1125
1190
  format: email
1126
- name:
1127
- type: string
1191
+ metadata:
1192
+ type: object
1193
+ additionalProperties: true
1128
1194
  emailVerified:
1129
1195
  type: boolean
1130
- identities:
1196
+ providers:
1131
1197
  type: array
1132
1198
  items:
1133
- type: object
1134
- properties:
1135
- provider:
1136
- type: string
1137
- providerType:
1138
- type: string
1199
+ type: string
1139
1200
  createdAt:
1140
1201
  type: string
1141
1202
  format: date-time
@@ -1143,6 +1204,25 @@ components:
1143
1204
  type: string
1144
1205
  format: date-time
1145
1206
 
1207
+ ProfileResponse:
1208
+ type: object
1209
+ properties:
1210
+ id:
1211
+ type: string
1212
+ format: uuid
1213
+ description: User ID
1214
+ profile:
1215
+ type: object
1216
+ nullable: true
1217
+ additionalProperties: true
1218
+ description: User profile data (can contain custom fields)
1219
+ properties:
1220
+ name:
1221
+ type: string
1222
+ avatar_url:
1223
+ type: string
1224
+ format: uri
1225
+
1146
1226
  OAuthConfig:
1147
1227
  type: object
1148
1228
  properties:
@@ -1151,7 +1231,7 @@ components:
1151
1231
  format: uuid
1152
1232
  provider:
1153
1233
  type: string
1154
- enum: [google, github, discord, linkedin, facebook, microsoft]
1234
+ enum: [google, github, discord, linkedin, facebook, instagram, tiktok, apple, x, spotify, microsoft]
1155
1235
  clientId:
1156
1236
  type: string
1157
1237
  nullable: true
package/openapi/logs.yaml CHANGED
@@ -189,8 +189,6 @@ paths:
189
189
  tableStats:
190
190
  - table_name: "posts"
191
191
  count: 156
192
- - table_name: "users"
193
- count: 89
194
192
  - table_name: "comments"
195
193
  count: 223
196
194
  recentActivity: 47
@@ -92,8 +92,6 @@ paths:
92
92
  format: date-time
93
93
  example:
94
94
  tables:
95
- - name: "users"
96
- recordCount: 1234
97
95
  - name: "posts"
98
96
  recordCount: 5678
99
97
  - name: "comments"
@@ -21,7 +21,7 @@ paths:
21
21
  schema:
22
22
  type: string
23
23
  description: Name of the table to query
24
- example: users
24
+ example: posts
25
25
  - name: limit
26
26
  in: query
27
27
  schema:
@@ -48,7 +48,7 @@ paths:
48
48
  schema:
49
49
  type: string
50
50
  description: Comma-separated list of columns to return
51
- example: id,name,email
51
+ example: id,title,content
52
52
  # PostgREST-style filters
53
53
  - name: field
54
54
  in: query
@@ -77,13 +77,13 @@ paths:
77
77
  additionalProperties: true
78
78
  example:
79
79
  - id: "248373e1-0aea-45ce-8844-5ef259203749"
80
- name: "John Doe"
81
- email: "john@example.com"
80
+ title: "Getting Started with InsForge"
81
+ content: "This is a guide to help you get started..."
82
82
  createdAt: "2025-07-18T05:37:24.338Z"
83
83
  updatedAt: "2025-07-18T05:37:24.338Z"
84
84
  - id: "348373e1-0aea-45ce-8844-5ef259203750"
85
- name: "Jane Smith"
86
- email: "jane@example.com"
85
+ title: "Advanced Database Queries"
86
+ content: "Learn how to write complex queries..."
87
87
  createdAt: "2025-07-19T08:15:10.123Z"
88
88
  updatedAt: "2025-07-19T08:15:10.123Z"
89
89
  '404':
@@ -124,7 +124,7 @@ paths:
124
124
  schema:
125
125
  type: string
126
126
  description: Name of the table
127
- example: users
127
+ example: posts
128
128
  - name: Prefer
129
129
  in: header
130
130
  schema:
@@ -142,9 +142,9 @@ paths:
142
142
  additionalProperties: true
143
143
  minItems: 1
144
144
  example:
145
- - name: "John Doe"
146
- email: "john@example.com"
147
- age: 30
145
+ - title: "My First Post"
146
+ content: "Hello world! This is my first post."
147
+ published: true
148
148
  responses:
149
149
  '201':
150
150
  description: Records created
@@ -163,9 +163,9 @@ paths:
163
163
  summary: "Response with Prefer: return=representation"
164
164
  value:
165
165
  - id: "248373e1-0aea-45ce-8844-5ef259203749"
166
- name: "John Doe"
167
- email: "john@example.com"
168
- age: 30
166
+ title: "My First Post"
167
+ content: "Hello world! This is my first post."
168
+ published: true
169
169
  createdAt: "2025-07-18T05:37:24.338Z"
170
170
  updatedAt: "2025-07-18T05:37:24.338Z"
171
171
  '400':
@@ -176,7 +176,7 @@ paths:
176
176
  $ref: '#/components/schemas/ErrorResponse'
177
177
  example:
178
178
  error: "VALIDATION_ERROR"
179
- message: "Invalid field type: expected integer for 'age'"
179
+ message: "Invalid field type: expected boolean for 'published'"
180
180
  statusCode: 400
181
181
  nextActions: "Ensure field types match the table schema"
182
182
  '404':
@@ -206,7 +206,7 @@ paths:
206
206
  schema:
207
207
  type: string
208
208
  description: Name of the table
209
- example: users
209
+ example: posts
210
210
  - name: id
211
211
  in: query
212
212
  schema:
@@ -227,8 +227,8 @@ paths:
227
227
  type: object
228
228
  additionalProperties: true
229
229
  example:
230
- name: "Jane Doe"
231
- email: "jane.doe@example.com"
230
+ title: "Updated Post Title"
231
+ content: "This content has been updated."
232
232
  responses:
233
233
  '200':
234
234
  description: Records updated
@@ -247,8 +247,8 @@ paths:
247
247
  summary: "Response with Prefer: return=representation"
248
248
  value:
249
249
  - id: "123e4567-e89b-12d3-a456-426614174000"
250
- name: "Jane Doe"
251
- email: "jane.doe@example.com"
250
+ title: "Updated Post Title"
251
+ content: "This content has been updated."
252
252
  createdAt: "2025-01-01T00:00:00Z"
253
253
  updatedAt: "2025-01-21T11:00:00Z"
254
254
  '404':
@@ -287,7 +287,7 @@ paths:
287
287
  schema:
288
288
  type: string
289
289
  description: Name of the table
290
- example: users
290
+ example: posts
291
291
  - name: id
292
292
  in: query
293
293
  schema:
@@ -317,7 +317,7 @@ paths:
317
317
  summary: Records were deleted
318
318
  value:
319
319
  - id: "123e4567-e89b-12d3-a456-426614174000"
320
- name: "Deleted User"
320
+ title: "Deleted Post"
321
321
  createdAt: "2025-01-01T00:00:00Z"
322
322
  updatedAt: "2025-01-21T11:00:00Z"
323
323
  no_records:
@@ -22,7 +22,6 @@ paths:
22
22
  items:
23
23
  type: string
24
24
  example:
25
- - "users"
26
25
  - "posts"
27
26
  - "comments"
28
27
  - "categories"
@@ -191,7 +190,7 @@ paths:
191
190
  default: null
192
191
  isPrimaryKey: false
193
192
  foreignKey:
194
- table: "users"
193
+ table: "auth.users"
195
194
  column: "id"
196
195
  on_delete: "CASCADE"
197
196
  '404':
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "insforge",
3
- "version": "1.3.0",
3
+ "version": "1.4.8",
4
4
  "description": "InsForge - Open source backend-as-a-service with PostgreSQL and MCP integration",
5
5
  "type": "module",
6
6
  "workspaces": [
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@insforge/shared-schemas",
3
- "version": "1.1.33",
3
+ "version": "1.1.40",
4
4
  "author": "Insforge",
5
5
  "description": "Shared TypeScript schemas for InsForge frontend and backend",
6
6
  "license": "Apache-2.0",