From 45f8c7f5c48f9e8025f4466b0e75603dbe58d39b Mon Sep 17 00:00:00 2001
From: Aman Ganapathy <84686202+nams1570@users.noreply.github.com>
Date: Wed, 3 Jun 2026 19:37:06 -0700
Subject: [PATCH] [Fix] [Docs]: Exclude Unavailable Routes from API Reference
(#1550)
### Summary of Changes
Some routes were made visible that aren't actually accessible.
We fix that
---
## Summary by cubic
Hide internal `/internal/*` routes from the generated API reference so
docs only show endpoints that are actually accessible. Aligns the docs
with the requirement to hide internal API routes.
- **Bug Fixes**
- Added an explicit filter in `parseOpenAPI` to exclude `/internal`
paths for all audiences.
- Regenerated `docs-mintlify/openapi/{admin,client,server}.json` to
remove internal endpoints.
- No runtime/API changes; docs only.
Written for commit c7b356a9b1c313dedffbfb6228ba0ef3575ee7ae.
Summary will update on new commits.
## Summary by CodeRabbit
* **New Features**
* Added OAuth authentication endpoints for provider authorization and
token exchange.
* Expanded OAuth provider management with updated schema and additional
configuration options.
* **Bug Fixes**
* Internal endpoints no longer appear in public API documentation.
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: aman
---
apps/backend/src/lib/openapi.tsx | 9 +
docs-mintlify/openapi/admin.json | 1688 ---------------------
docs-mintlify/openapi/client.json | 2272 -----------------------------
docs-mintlify/openapi/server.json | 1636 ---------------------
4 files changed, 9 insertions(+), 5596 deletions(-)
diff --git a/apps/backend/src/lib/openapi.tsx b/apps/backend/src/lib/openapi.tsx
index 204cfaeae..a5da85da4 100644
--- a/apps/backend/src/lib/openapi.tsx
+++ b/apps/backend/src/lib/openapi.tsx
@@ -8,6 +8,10 @@ import { typedEntries, typedFromEntries } from '@hexclave/shared/dist/utils/obje
import { deindent, stringCompare } from '@hexclave/shared/dist/utils/strings';
import * as yup from 'yup';
+function isInternalApiPath(path: string) {
+ return path === '/internal' || path.startsWith('/internal/');
+}
+
export function parseOpenAPI(options: {
endpoints: Map>,
audience: 'client' | 'server' | 'admin',
@@ -25,6 +29,11 @@ export function parseOpenAPI(options: {
}],
paths: Object.fromEntries(
[...options.endpoints]
+ // `/internal/*` routes are scoped to the internal Hexclave project (project.id === "internal")
+ // and are not part of the public API. Many of them use a permissive auth.type (e.g. adaptSchema),
+ // so the per-audience heuristic below does not exclude them; filter them out explicitly here so
+ // they never leak into the public API reference, regardless of their individual route metadata.
+ .filter(([path]) => !isInternalApiPath(path))
.map(([path, handlersByMethod]) => (
[path, Object.fromEntries(
[...handlersByMethod]
diff --git a/docs-mintlify/openapi/admin.json b/docs-mintlify/openapi/admin.json
index 9ad4f3003..9151534bd 100644
--- a/docs-mintlify/openapi/admin.json
+++ b/docs-mintlify/openapi/admin.json
@@ -189,58 +189,6 @@
}
}
},
- "/internal/ai-chat/{threadId}": {
- "patch": {
- "summary": "Save a chat message",
- "description": "Save a chat message",
- "parameters": [
- {
- "name": "threadId",
- "in": "path",
- "schema": {
- "type": "string"
- },
- "required": true
- }
- ],
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "message": {
- "type": "object"
- }
- },
- "required": [
- "message"
- ],
- "example": {}
- }
- }
- }
- },
- "tags": [
- "AI Chat"
- ],
- "x-full-url": "https://api.hexclave.com/api/v1/internal/ai-chat/{threadId}",
- "responses": {
- "200": {
- "description": "Successful response",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {}
- }
- }
- }
- }
- }
- }
- },
"/auth/anonymous/sign-up": {
"post": {
"summary": "Sign up anonymously",
@@ -3055,315 +3003,6 @@
}
}
},
- "/internal/feature-requests": {
- "get": {
- "summary": "Get feature requests",
- "description": "Fetch all feature requests with upvote status for the current user",
- "parameters": [],
- "tags": [
- "Internal"
- ],
- "x-full-url": "https://api.hexclave.com/api/v1/internal/feature-requests",
- "responses": {
- "200": {
- "description": "Successful response",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "posts": {
- "type": "array",
- "items": {
- "type": "object",
- "properties": {
- "id": {
- "type": "string"
- },
- "title": {
- "type": "string"
- },
- "content": {
- "type": "string"
- },
- "upvotes": {
- "type": "number"
- },
- "date": {
- "type": "string"
- },
- "postStatus": {
- "type": "object",
- "properties": {
- "name": {
- "type": "string"
- },
- "color": {
- "type": "string"
- }
- },
- "required": [
- "name",
- "color"
- ]
- },
- "userHasUpvoted": {
- "type": "boolean"
- }
- },
- "required": [
- "id",
- "title",
- "upvotes",
- "date",
- "userHasUpvoted"
- ]
- }
- }
- },
- "required": [
- "posts"
- ]
- }
- }
- }
- }
- }
- },
- "post": {
- "summary": "Create feature request",
- "description": "Create a new feature request",
- "parameters": [],
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "title": {
- "type": "string"
- },
- "content": {
- "type": "string"
- },
- "category": {
- "type": "string"
- },
- "tags": {
- "type": "array",
- "items": {
- "type": "string"
- }
- },
- "commentsAllowed": {
- "type": "boolean"
- },
- "customInputValues": {
- "type": "object",
- "properties": {},
- "required": []
- }
- },
- "required": [
- "title"
- ],
- "example": {}
- }
- }
- }
- },
- "tags": [
- "Internal"
- ],
- "x-full-url": "https://api.hexclave.com/api/v1/internal/feature-requests",
- "responses": {
- "200": {
- "description": "Successful response",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "success": {
- "type": "boolean"
- },
- "id": {
- "type": "string"
- }
- },
- "required": [
- "success"
- ]
- }
- }
- }
- }
- }
- }
- },
- "/internal/feature-requests/{featureRequestId}/upvote": {
- "post": {
- "summary": "Toggle upvote on feature request",
- "description": "Toggle upvote on a feature request for the current user",
- "parameters": [
- {
- "name": "featureRequestId",
- "in": "path",
- "schema": {
- "type": "string"
- },
- "required": true
- }
- ],
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {},
- "example": {}
- }
- }
- }
- },
- "tags": [
- "Internal"
- ],
- "x-full-url": "https://api.hexclave.com/api/v1/internal/feature-requests/{featureRequestId}/upvote",
- "responses": {
- "200": {
- "description": "Successful response",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "success": {
- "type": "boolean"
- },
- "upvoted": {
- "type": "boolean"
- }
- },
- "required": [
- "success"
- ]
- }
- }
- }
- }
- }
- }
- },
- "/internal/feedback": {
- "post": {
- "summary": "Submit support feedback",
- "description": "Send a support feedback message to the internal Hexclave inbox. Auth is optional — works from both the dashboard (authenticated) and the dev tool (unauthenticated).",
- "parameters": [],
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "name": {
- "type": "string"
- },
- "email": {
- "type": "string"
- },
- "message": {
- "type": "string"
- },
- "feedback_type": {
- "type": "string",
- "enum": [
- "feedback",
- "bug"
- ]
- }
- },
- "required": [
- "email",
- "message"
- ],
- "example": {}
- }
- }
- }
- },
- "tags": [
- "Internal"
- ],
- "x-full-url": "https://api.hexclave.com/api/v1/internal/feedback",
- "responses": {
- "200": {
- "description": "Successful response",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "success": {
- "type": "boolean"
- }
- },
- "required": [
- "success"
- ]
- }
- }
- }
- }
- }
- }
- },
- "/internal/preview/create-project": {
- "post": {
- "summary": "Create a preview project",
- "description": "Creates a new project pre-filled with dummy data for the preview environment. Only available when NEXT_PUBLIC_STACK_IS_PREVIEW=true.",
- "parameters": [],
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {},
- "example": {}
- }
- }
- }
- },
- "tags": [
- "Internal"
- ],
- "x-full-url": "https://api.hexclave.com/api/v1/internal/preview/create-project",
- "responses": {
- "200": {
- "description": "Successful response",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "project_id": {
- "type": "string"
- }
- },
- "required": [
- "project_id"
- ]
- }
- }
- }
- }
- }
- }
- },
"/auth/oauth/authorize/{provider_id}": {
"get": {
"summary": "OAuth authorize endpoint",
@@ -4291,1333 +3930,6 @@
}
}
},
- "/internal/ai-conversations": {
- "get": {
- "summary": "List AI conversations",
- "description": "List AI conversations for the current user filtered by project",
- "parameters": [
- {
- "name": "projectId",
- "in": "query",
- "schema": {
- "type": "string"
- },
- "required": true
- }
- ],
- "tags": [
- "Others"
- ],
- "x-full-url": "https://api.hexclave.com/api/v1/internal/ai-conversations",
- "responses": {
- "200": {
- "description": "Successful response",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "conversations": {
- "type": "array",
- "items": {
- "type": "object",
- "properties": {
- "id": {
- "type": "string"
- },
- "title": {
- "type": "string"
- },
- "projectId": {
- "type": "string"
- },
- "updatedAt": {
- "type": "string"
- }
- },
- "required": [
- "id",
- "title",
- "projectId",
- "updatedAt"
- ]
- }
- }
- },
- "required": [
- "conversations"
- ]
- }
- }
- }
- }
- }
- },
- "post": {
- "summary": "Create AI conversation",
- "description": "Create a new AI conversation with optional initial messages",
- "parameters": [],
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "title": {
- "type": "string"
- },
- "projectId": {
- "type": "string"
- },
- "messages": {
- "type": "array",
- "items": {
- "type": "object",
- "properties": {
- "role": {
- "type": "string",
- "enum": [
- "user",
- "assistant"
- ]
- },
- "content": {
- "type": "object"
- }
- },
- "required": [
- "role",
- "content"
- ]
- }
- }
- },
- "required": [
- "title",
- "projectId",
- "messages"
- ],
- "example": {}
- }
- }
- }
- },
- "tags": [
- "Others"
- ],
- "x-full-url": "https://api.hexclave.com/api/v1/internal/ai-conversations",
- "responses": {
- "200": {
- "description": "Successful response",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "id": {
- "type": "string"
- },
- "title": {
- "type": "string"
- }
- },
- "required": [
- "id",
- "title"
- ]
- }
- }
- }
- }
- }
- }
- },
- "/internal/ai-conversations/{conversationId}": {
- "get": {
- "summary": "Get AI conversation",
- "description": "Fetch a single AI conversation with all its messages",
- "parameters": [
- {
- "name": "conversationId",
- "in": "path",
- "schema": {
- "type": "string"
- },
- "required": true
- }
- ],
- "tags": [
- "Others"
- ],
- "x-full-url": "https://api.hexclave.com/api/v1/internal/ai-conversations/{conversationId}",
- "responses": {
- "200": {
- "description": "Successful response",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "id": {
- "type": "string"
- },
- "title": {
- "type": "string"
- },
- "projectId": {
- "type": "string"
- },
- "messages": {
- "type": "array",
- "items": {
- "type": "object",
- "properties": {
- "id": {
- "type": "string"
- },
- "role": {
- "type": "string"
- },
- "content": {
- "type": "object"
- }
- },
- "required": [
- "id",
- "role",
- "content"
- ]
- }
- }
- },
- "required": [
- "id",
- "title",
- "projectId",
- "messages"
- ]
- }
- }
- }
- }
- }
- },
- "delete": {
- "summary": "Delete AI conversation",
- "description": "Delete an AI conversation and all its messages",
- "parameters": [
- {
- "name": "conversationId",
- "in": "path",
- "schema": {
- "type": "string"
- },
- "required": true
- }
- ],
- "tags": [
- "Others"
- ],
- "x-full-url": "https://api.hexclave.com/api/v1/internal/ai-conversations/{conversationId}",
- "responses": {
- "200": {
- "description": "Successful response",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {}
- }
- }
- }
- }
- }
- },
- "patch": {
- "summary": "Update AI conversation",
- "description": "Update the title of an AI conversation",
- "parameters": [
- {
- "name": "conversationId",
- "in": "path",
- "schema": {
- "type": "string"
- },
- "required": true
- }
- ],
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "title": {
- "type": "string"
- }
- },
- "required": [
- "title"
- ],
- "example": {}
- }
- }
- }
- },
- "tags": [
- "Others"
- ],
- "x-full-url": "https://api.hexclave.com/api/v1/internal/ai-conversations/{conversationId}",
- "responses": {
- "200": {
- "description": "Successful response",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {}
- }
- }
- }
- }
- }
- }
- },
- "/internal/ai-conversations/{conversationId}/messages": {
- "put": {
- "summary": "Replace conversation messages",
- "description": "Replace all messages in a conversation",
- "parameters": [
- {
- "name": "conversationId",
- "in": "path",
- "schema": {
- "type": "string"
- },
- "required": true
- }
- ],
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "messages": {
- "type": "array",
- "items": {
- "type": "object",
- "properties": {
- "role": {
- "type": "string",
- "enum": [
- "user",
- "assistant"
- ]
- },
- "content": {
- "type": "object"
- }
- },
- "required": [
- "role",
- "content"
- ]
- }
- }
- },
- "required": [
- "messages"
- ],
- "example": {}
- }
- }
- }
- },
- "tags": [
- "Others"
- ],
- "x-full-url": "https://api.hexclave.com/api/v1/internal/ai-conversations/{conversationId}/messages",
- "responses": {
- "200": {
- "description": "Successful response",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {}
- }
- }
- }
- }
- }
- }
- },
- "/internal/conversations": {
- "get": {
- "summary": "List conversations",
- "description": "List conversations for a managed project",
- "parameters": [
- {
- "name": "projectId",
- "in": "query",
- "schema": {
- "type": "string",
- "example": "e0b52f4d-dece-408c-af49-d23061bb0f8d",
- "description": "The unique identifier of the project"
- },
- "description": "The unique identifier of the project",
- "required": true
- },
- {
- "name": "query",
- "in": "query",
- "schema": {
- "type": "string"
- },
- "required": false
- },
- {
- "name": "status",
- "in": "query",
- "schema": {
- "type": "string",
- "enum": [
- "open",
- "pending",
- "closed"
- ]
- },
- "required": false
- },
- {
- "name": "userId",
- "in": "query",
- "schema": {
- "type": "string",
- "example": "3241a285-8329-4d69-8f3d-316e08cf140c",
- "description": "The unique identifier of the user"
- },
- "description": "The unique identifier of the user",
- "required": false
- },
- {
- "name": "limit",
- "in": "query",
- "schema": {
- "type": "string"
- },
- "required": false
- },
- {
- "name": "offset",
- "in": "query",
- "schema": {
- "type": "string"
- },
- "required": false
- }
- ],
- "tags": [
- "Others"
- ],
- "x-full-url": "https://api.hexclave.com/api/v1/internal/conversations",
- "responses": {
- "200": {
- "description": "Successful response",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "conversations": {
- "type": "array",
- "items": {
- "type": "object",
- "properties": {
- "conversationId": {
- "type": "string"
- },
- "userId": {
- "type": "string"
- },
- "teamId": {
- "type": "string"
- },
- "userDisplayName": {
- "type": "string"
- },
- "userPrimaryEmail": {
- "type": "string"
- },
- "userProfileImageUrl": {
- "type": "string"
- },
- "subject": {
- "type": "string"
- },
- "status": {
- "type": "string",
- "enum": [
- "open",
- "pending",
- "closed"
- ]
- },
- "priority": {
- "type": "string",
- "enum": [
- "low",
- "normal",
- "high",
- "urgent"
- ]
- },
- "source": {
- "type": "string",
- "enum": [
- "manual",
- "chat",
- "email",
- "api"
- ]
- },
- "lastMessageType": {
- "type": "string",
- "enum": [
- "message",
- "internal-note",
- "status-change"
- ]
- },
- "preview": {
- "type": "string"
- },
- "lastActivityAt": {
- "type": "string"
- },
- "metadata": {
- "type": "object",
- "properties": {
- "assignedToUserId": {
- "type": "string"
- },
- "assignedToDisplayName": {
- "type": "string"
- },
- "tags": {
- "type": "array",
- "items": {
- "type": "string"
- }
- },
- "firstResponseDueAt": {
- "type": "string"
- },
- "firstResponseAt": {
- "type": "string"
- },
- "nextResponseDueAt": {
- "type": "string"
- },
- "lastCustomerReplyAt": {
- "type": "string"
- },
- "lastAgentReplyAt": {
- "type": "string"
- }
- },
- "required": [
- "tags"
- ]
- },
- "createdAt": {
- "type": "string"
- },
- "updatedAt": {
- "type": "string"
- },
- "lastMessageAt": {
- "type": "string"
- },
- "lastInboundAt": {
- "type": "string"
- },
- "lastOutboundAt": {
- "type": "string"
- },
- "closedAt": {
- "type": "string"
- },
- "recordMetadata": {
- "type": "object"
- }
- },
- "required": [
- "conversationId",
- "subject",
- "status",
- "priority",
- "source",
- "lastMessageType",
- "lastActivityAt",
- "metadata"
- ]
- }
- },
- "hasMore": {
- "type": "boolean"
- }
- },
- "required": [
- "conversations",
- "hasMore"
- ]
- }
- }
- }
- }
- }
- },
- "post": {
- "summary": "Create conversation",
- "description": "Create a managed project conversation for a user",
- "parameters": [],
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "projectId": {
- "type": "string",
- "example": "e0b52f4d-dece-408c-af49-d23061bb0f8d",
- "description": "The unique identifier of the project"
- },
- "userId": {
- "type": "string",
- "example": "3241a285-8329-4d69-8f3d-316e08cf140c",
- "description": "The unique identifier of the user"
- },
- "subject": {
- "type": "string"
- },
- "initialMessage": {
- "type": "string"
- },
- "priority": {
- "type": "string",
- "enum": [
- "low",
- "normal",
- "high",
- "urgent"
- ]
- },
- "source": {
- "type": "string",
- "enum": [
- "manual",
- "chat",
- "email",
- "api"
- ]
- }
- },
- "required": [
- "projectId",
- "userId",
- "subject",
- "initialMessage",
- "priority"
- ],
- "example": {
- "projectId": "e0b52f4d-dece-408c-af49-d23061bb0f8d",
- "userId": "3241a285-8329-4d69-8f3d-316e08cf140c"
- }
- }
- }
- }
- },
- "tags": [
- "Others"
- ],
- "x-full-url": "https://api.hexclave.com/api/v1/internal/conversations",
- "responses": {
- "200": {
- "description": "Successful response",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "conversationId": {
- "type": "string"
- }
- },
- "required": [
- "conversationId"
- ]
- }
- }
- }
- }
- }
- }
- },
- "/internal/conversations/{conversationId}": {
- "get": {
- "summary": "Get conversation detail",
- "description": "Get conversation detail for a managed project",
- "parameters": [
- {
- "name": "projectId",
- "in": "query",
- "schema": {
- "type": "string",
- "example": "e0b52f4d-dece-408c-af49-d23061bb0f8d",
- "description": "The unique identifier of the project"
- },
- "description": "The unique identifier of the project",
- "required": true
- },
- {
- "name": "conversationId",
- "in": "path",
- "schema": {
- "type": "string"
- },
- "required": true
- }
- ],
- "tags": [
- "Others"
- ],
- "x-full-url": "https://api.hexclave.com/api/v1/internal/conversations/{conversationId}",
- "responses": {
- "200": {
- "description": "Successful response",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "conversation": {
- "type": "object",
- "properties": {
- "conversationId": {
- "type": "string"
- },
- "userId": {
- "type": "string"
- },
- "teamId": {
- "type": "string"
- },
- "userDisplayName": {
- "type": "string"
- },
- "userPrimaryEmail": {
- "type": "string"
- },
- "userProfileImageUrl": {
- "type": "string"
- },
- "subject": {
- "type": "string"
- },
- "status": {
- "type": "string",
- "enum": [
- "open",
- "pending",
- "closed"
- ]
- },
- "priority": {
- "type": "string",
- "enum": [
- "low",
- "normal",
- "high",
- "urgent"
- ]
- },
- "source": {
- "type": "string",
- "enum": [
- "manual",
- "chat",
- "email",
- "api"
- ]
- },
- "lastMessageType": {
- "type": "string",
- "enum": [
- "message",
- "internal-note",
- "status-change"
- ]
- },
- "preview": {
- "type": "string"
- },
- "lastActivityAt": {
- "type": "string"
- },
- "metadata": {
- "type": "object",
- "properties": {
- "assignedToUserId": {
- "type": "string"
- },
- "assignedToDisplayName": {
- "type": "string"
- },
- "tags": {
- "type": "array",
- "items": {
- "type": "string"
- }
- },
- "firstResponseDueAt": {
- "type": "string"
- },
- "firstResponseAt": {
- "type": "string"
- },
- "nextResponseDueAt": {
- "type": "string"
- },
- "lastCustomerReplyAt": {
- "type": "string"
- },
- "lastAgentReplyAt": {
- "type": "string"
- }
- },
- "required": [
- "tags"
- ]
- },
- "createdAt": {
- "type": "string"
- },
- "updatedAt": {
- "type": "string"
- },
- "lastMessageAt": {
- "type": "string"
- },
- "lastInboundAt": {
- "type": "string"
- },
- "lastOutboundAt": {
- "type": "string"
- },
- "closedAt": {
- "type": "string"
- },
- "recordMetadata": {
- "type": "object"
- }
- },
- "required": [
- "conversationId",
- "subject",
- "status",
- "priority",
- "source",
- "lastMessageType",
- "lastActivityAt",
- "metadata"
- ]
- },
- "messages": {
- "type": "array",
- "items": {
- "type": "object",
- "properties": {
- "id": {
- "type": "string"
- },
- "conversationId": {
- "type": "string"
- },
- "userId": {
- "type": "string"
- },
- "teamId": {
- "type": "string"
- },
- "subject": {
- "type": "string"
- },
- "status": {
- "type": "string",
- "enum": [
- "open",
- "pending",
- "closed"
- ]
- },
- "priority": {
- "type": "string",
- "enum": [
- "low",
- "normal",
- "high",
- "urgent"
- ]
- },
- "source": {
- "type": "string",
- "enum": [
- "manual",
- "chat",
- "email",
- "api"
- ]
- },
- "messageType": {
- "type": "string",
- "enum": [
- "message",
- "internal-note",
- "status-change"
- ]
- },
- "body": {
- "type": "string"
- },
- "attachments": {
- "type": "array",
- "items": {
- "type": "object"
- }
- },
- "metadata": {
- "type": "object"
- },
- "createdAt": {
- "type": "string"
- },
- "sender": {
- "type": "object",
- "properties": {
- "type": {
- "type": "string",
- "enum": [
- "user",
- "agent",
- "system"
- ]
- },
- "id": {
- "type": "string"
- },
- "displayName": {
- "type": "string"
- },
- "primaryEmail": {
- "type": "string"
- }
- },
- "required": [
- "type"
- ]
- }
- },
- "required": [
- "id",
- "conversationId",
- "subject",
- "status",
- "priority",
- "source",
- "messageType",
- "attachments",
- "createdAt",
- "sender"
- ]
- }
- },
- "entryPoints": {
- "type": "array",
- "items": {
- "type": "object",
- "properties": {
- "id": {
- "type": "string"
- },
- "channelType": {
- "type": "string"
- },
- "adapterKey": {
- "type": "string"
- },
- "externalChannelId": {
- "type": "string"
- },
- "isEntryPoint": {
- "type": "boolean"
- },
- "metadata": {
- "type": "object"
- },
- "createdAt": {
- "type": "string"
- },
- "updatedAt": {
- "type": "string"
- }
- },
- "required": [
- "id",
- "channelType",
- "adapterKey",
- "isEntryPoint",
- "createdAt",
- "updatedAt"
- ]
- }
- }
- },
- "required": [
- "conversation",
- "messages",
- "entryPoints"
- ]
- }
- }
- }
- }
- }
- },
- "patch": {
- "summary": "Update conversation",
- "description": "Append a message or update conversation attributes on a managed project conversation",
- "parameters": [
- {
- "name": "conversationId",
- "in": "path",
- "schema": {
- "type": "string"
- },
- "required": true
- }
- ],
- "tags": [
- "Others"
- ],
- "x-full-url": "https://api.hexclave.com/api/v1/internal/conversations/{conversationId}",
- "responses": {
- "200": {
- "description": "Successful response",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "conversation": {
- "type": "object",
- "properties": {
- "conversationId": {
- "type": "string"
- },
- "userId": {
- "type": "string"
- },
- "teamId": {
- "type": "string"
- },
- "userDisplayName": {
- "type": "string"
- },
- "userPrimaryEmail": {
- "type": "string"
- },
- "userProfileImageUrl": {
- "type": "string"
- },
- "subject": {
- "type": "string"
- },
- "status": {
- "type": "string",
- "enum": [
- "open",
- "pending",
- "closed"
- ]
- },
- "priority": {
- "type": "string",
- "enum": [
- "low",
- "normal",
- "high",
- "urgent"
- ]
- },
- "source": {
- "type": "string",
- "enum": [
- "manual",
- "chat",
- "email",
- "api"
- ]
- },
- "lastMessageType": {
- "type": "string",
- "enum": [
- "message",
- "internal-note",
- "status-change"
- ]
- },
- "preview": {
- "type": "string"
- },
- "lastActivityAt": {
- "type": "string"
- },
- "metadata": {
- "type": "object",
- "properties": {
- "assignedToUserId": {
- "type": "string"
- },
- "assignedToDisplayName": {
- "type": "string"
- },
- "tags": {
- "type": "array",
- "items": {
- "type": "string"
- }
- },
- "firstResponseDueAt": {
- "type": "string"
- },
- "firstResponseAt": {
- "type": "string"
- },
- "nextResponseDueAt": {
- "type": "string"
- },
- "lastCustomerReplyAt": {
- "type": "string"
- },
- "lastAgentReplyAt": {
- "type": "string"
- }
- },
- "required": [
- "tags"
- ]
- },
- "createdAt": {
- "type": "string"
- },
- "updatedAt": {
- "type": "string"
- },
- "lastMessageAt": {
- "type": "string"
- },
- "lastInboundAt": {
- "type": "string"
- },
- "lastOutboundAt": {
- "type": "string"
- },
- "closedAt": {
- "type": "string"
- },
- "recordMetadata": {
- "type": "object"
- }
- },
- "required": [
- "conversationId",
- "subject",
- "status",
- "priority",
- "source",
- "lastMessageType",
- "lastActivityAt",
- "metadata"
- ]
- },
- "messages": {
- "type": "array",
- "items": {
- "type": "object",
- "properties": {
- "id": {
- "type": "string"
- },
- "conversationId": {
- "type": "string"
- },
- "userId": {
- "type": "string"
- },
- "teamId": {
- "type": "string"
- },
- "subject": {
- "type": "string"
- },
- "status": {
- "type": "string",
- "enum": [
- "open",
- "pending",
- "closed"
- ]
- },
- "priority": {
- "type": "string",
- "enum": [
- "low",
- "normal",
- "high",
- "urgent"
- ]
- },
- "source": {
- "type": "string",
- "enum": [
- "manual",
- "chat",
- "email",
- "api"
- ]
- },
- "messageType": {
- "type": "string",
- "enum": [
- "message",
- "internal-note",
- "status-change"
- ]
- },
- "body": {
- "type": "string"
- },
- "attachments": {
- "type": "array",
- "items": {
- "type": "object"
- }
- },
- "metadata": {
- "type": "object"
- },
- "createdAt": {
- "type": "string"
- },
- "sender": {
- "type": "object",
- "properties": {
- "type": {
- "type": "string",
- "enum": [
- "user",
- "agent",
- "system"
- ]
- },
- "id": {
- "type": "string"
- },
- "displayName": {
- "type": "string"
- },
- "primaryEmail": {
- "type": "string"
- }
- },
- "required": [
- "type"
- ]
- }
- },
- "required": [
- "id",
- "conversationId",
- "subject",
- "status",
- "priority",
- "source",
- "messageType",
- "attachments",
- "createdAt",
- "sender"
- ]
- }
- },
- "entryPoints": {
- "type": "array",
- "items": {
- "type": "object",
- "properties": {
- "id": {
- "type": "string"
- },
- "channelType": {
- "type": "string"
- },
- "adapterKey": {
- "type": "string"
- },
- "externalChannelId": {
- "type": "string"
- },
- "isEntryPoint": {
- "type": "boolean"
- },
- "metadata": {
- "type": "object"
- },
- "createdAt": {
- "type": "string"
- },
- "updatedAt": {
- "type": "string"
- }
- },
- "required": [
- "id",
- "channelType",
- "adapterKey",
- "isEntryPoint",
- "createdAt",
- "updatedAt"
- ]
- }
- }
- },
- "required": [
- "conversation",
- "messages",
- "entryPoints"
- ]
- }
- }
- }
- }
- }
- }
- },
"/auth/mfa/sign-in": {
"post": {
"summary": "MFA sign in",
diff --git a/docs-mintlify/openapi/client.json b/docs-mintlify/openapi/client.json
index a690ff7d6..280ec9e28 100644
--- a/docs-mintlify/openapi/client.json
+++ b/docs-mintlify/openapi/client.json
@@ -2058,642 +2058,6 @@
}
}
},
- "/internal/dogfood/support/conversations": {
- "get": {
- "summary": "List conversations for the current user",
- "description": "List conversations visible to the currently authenticated user",
- "parameters": [
- {
- "name": "query",
- "in": "query",
- "schema": {
- "type": "string"
- },
- "required": false
- },
- {
- "name": "limit",
- "in": "query",
- "schema": {
- "type": "string"
- },
- "required": false
- },
- {
- "name": "offset",
- "in": "query",
- "schema": {
- "type": "string"
- },
- "required": false
- }
- ],
- "tags": [
- "Conversations"
- ],
- "x-full-url": "https://api.hexclave.com/api/v1/internal/dogfood/support/conversations",
- "responses": {
- "200": {
- "description": "Successful response",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "conversations": {
- "type": "array",
- "items": {
- "type": "object",
- "properties": {
- "conversation_id": {
- "type": "string"
- },
- "user_id": {
- "type": "string"
- },
- "team_id": {
- "type": "string"
- },
- "user_display_name": {
- "type": "string"
- },
- "user_primary_email": {
- "type": "string"
- },
- "user_profile_image_url": {
- "type": "string"
- },
- "subject": {
- "type": "string"
- },
- "status": {
- "type": "string"
- },
- "priority": {
- "type": "string"
- },
- "source": {
- "type": "string"
- },
- "last_message_type": {
- "type": "string"
- },
- "preview": {
- "type": "string"
- },
- "last_activity_at": {
- "type": "string"
- },
- "metadata": {
- "type": "object",
- "properties": {
- "assigned_to_user_id": {
- "type": "string"
- },
- "assigned_to_display_name": {
- "type": "string"
- },
- "tags": {
- "type": "array",
- "items": {
- "type": "string"
- }
- },
- "first_response_due_at": {
- "type": "string"
- },
- "first_response_at": {
- "type": "string"
- },
- "next_response_due_at": {
- "type": "string"
- },
- "last_customer_reply_at": {
- "type": "string"
- },
- "last_agent_reply_at": {
- "type": "string"
- }
- },
- "required": [
- "tags"
- ]
- }
- },
- "required": [
- "conversation_id",
- "subject",
- "status",
- "priority",
- "source",
- "last_message_type",
- "last_activity_at",
- "metadata"
- ]
- }
- },
- "has_more": {
- "type": "boolean"
- }
- },
- "required": [
- "conversations",
- "has_more"
- ]
- }
- }
- }
- }
- }
- },
- "post": {
- "summary": "Create a conversation",
- "description": "Create a new conversation as the current user",
- "parameters": [],
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "subject": {
- "type": "string"
- },
- "message": {
- "type": "string"
- }
- },
- "required": [
- "subject",
- "message"
- ],
- "example": {}
- }
- }
- }
- },
- "tags": [
- "Conversations"
- ],
- "x-full-url": "https://api.hexclave.com/api/v1/internal/dogfood/support/conversations",
- "responses": {
- "200": {
- "description": "Successful response",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "conversation_id": {
- "type": "string"
- }
- },
- "required": [
- "conversation_id"
- ]
- }
- }
- }
- }
- }
- }
- },
- "/internal/dogfood/support/conversations/{conversationId}": {
- "get": {
- "summary": "Get a conversation for the current user",
- "description": "Get conversation detail visible to the currently authenticated user",
- "parameters": [
- {
- "name": "conversationId",
- "in": "path",
- "schema": {
- "type": "string"
- },
- "required": true
- }
- ],
- "tags": [
- "Conversations"
- ],
- "x-full-url": "https://api.hexclave.com/api/v1/internal/dogfood/support/conversations/{conversationId}",
- "responses": {
- "200": {
- "description": "Successful response",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "conversation": {
- "type": "object",
- "properties": {
- "conversation_id": {
- "type": "string"
- },
- "user_id": {
- "type": "string"
- },
- "team_id": {
- "type": "string"
- },
- "user_display_name": {
- "type": "string"
- },
- "user_primary_email": {
- "type": "string"
- },
- "user_profile_image_url": {
- "type": "string"
- },
- "subject": {
- "type": "string"
- },
- "status": {
- "type": "string"
- },
- "priority": {
- "type": "string"
- },
- "source": {
- "type": "string"
- },
- "last_message_type": {
- "type": "string"
- },
- "preview": {
- "type": "string"
- },
- "last_activity_at": {
- "type": "string"
- },
- "metadata": {
- "type": "object",
- "properties": {
- "assigned_to_user_id": {
- "type": "string"
- },
- "assigned_to_display_name": {
- "type": "string"
- },
- "tags": {
- "type": "array",
- "items": {
- "type": "string"
- }
- },
- "first_response_due_at": {
- "type": "string"
- },
- "first_response_at": {
- "type": "string"
- },
- "next_response_due_at": {
- "type": "string"
- },
- "last_customer_reply_at": {
- "type": "string"
- },
- "last_agent_reply_at": {
- "type": "string"
- }
- },
- "required": [
- "tags"
- ]
- }
- },
- "required": [
- "conversation_id",
- "subject",
- "status",
- "priority",
- "source",
- "last_message_type",
- "last_activity_at",
- "metadata"
- ]
- },
- "messages": {
- "type": "array",
- "items": {
- "type": "object",
- "properties": {
- "id": {
- "type": "string"
- },
- "conversation_id": {
- "type": "string"
- },
- "user_id": {
- "type": "string"
- },
- "team_id": {
- "type": "string"
- },
- "subject": {
- "type": "string"
- },
- "status": {
- "type": "string"
- },
- "priority": {
- "type": "string"
- },
- "source": {
- "type": "string"
- },
- "message_type": {
- "type": "string"
- },
- "body": {
- "type": "string"
- },
- "attachments": {
- "type": "array",
- "items": {
- "type": "object"
- }
- },
- "metadata": {
- "type": "object"
- },
- "created_at": {
- "type": "string"
- },
- "sender": {
- "type": "object",
- "properties": {
- "type": {
- "type": "string"
- },
- "id": {
- "type": "string"
- },
- "display_name": {
- "type": "string"
- },
- "primary_email": {
- "type": "string"
- }
- },
- "required": [
- "type"
- ]
- }
- },
- "required": [
- "id",
- "conversation_id",
- "subject",
- "status",
- "priority",
- "source",
- "message_type",
- "attachments",
- "created_at",
- "sender"
- ]
- }
- }
- },
- "required": [
- "conversation",
- "messages"
- ]
- }
- }
- }
- }
- }
- },
- "patch": {
- "summary": "Reply to a conversation",
- "description": "Append a user message to an existing conversation",
- "parameters": [
- {
- "name": "conversationId",
- "in": "path",
- "schema": {
- "type": "string"
- },
- "required": true
- }
- ],
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "message": {
- "type": "string"
- }
- },
- "required": [
- "message"
- ],
- "example": {}
- }
- }
- }
- },
- "tags": [
- "Conversations"
- ],
- "x-full-url": "https://api.hexclave.com/api/v1/internal/dogfood/support/conversations/{conversationId}",
- "responses": {
- "200": {
- "description": "Successful response",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "conversation": {
- "type": "object",
- "properties": {
- "conversation_id": {
- "type": "string"
- },
- "user_id": {
- "type": "string"
- },
- "team_id": {
- "type": "string"
- },
- "user_display_name": {
- "type": "string"
- },
- "user_primary_email": {
- "type": "string"
- },
- "user_profile_image_url": {
- "type": "string"
- },
- "subject": {
- "type": "string"
- },
- "status": {
- "type": "string"
- },
- "priority": {
- "type": "string"
- },
- "source": {
- "type": "string"
- },
- "last_message_type": {
- "type": "string"
- },
- "preview": {
- "type": "string"
- },
- "last_activity_at": {
- "type": "string"
- },
- "metadata": {
- "type": "object",
- "properties": {
- "assigned_to_user_id": {
- "type": "string"
- },
- "assigned_to_display_name": {
- "type": "string"
- },
- "tags": {
- "type": "array",
- "items": {
- "type": "string"
- }
- },
- "first_response_due_at": {
- "type": "string"
- },
- "first_response_at": {
- "type": "string"
- },
- "next_response_due_at": {
- "type": "string"
- },
- "last_customer_reply_at": {
- "type": "string"
- },
- "last_agent_reply_at": {
- "type": "string"
- }
- },
- "required": [
- "tags"
- ]
- }
- },
- "required": [
- "conversation_id",
- "subject",
- "status",
- "priority",
- "source",
- "last_message_type",
- "last_activity_at",
- "metadata"
- ]
- },
- "messages": {
- "type": "array",
- "items": {
- "type": "object",
- "properties": {
- "id": {
- "type": "string"
- },
- "conversation_id": {
- "type": "string"
- },
- "user_id": {
- "type": "string"
- },
- "team_id": {
- "type": "string"
- },
- "subject": {
- "type": "string"
- },
- "status": {
- "type": "string"
- },
- "priority": {
- "type": "string"
- },
- "source": {
- "type": "string"
- },
- "message_type": {
- "type": "string"
- },
- "body": {
- "type": "string"
- },
- "attachments": {
- "type": "array",
- "items": {
- "type": "object"
- }
- },
- "metadata": {
- "type": "object"
- },
- "created_at": {
- "type": "string"
- },
- "sender": {
- "type": "object",
- "properties": {
- "type": {
- "type": "string"
- },
- "id": {
- "type": "string"
- },
- "display_name": {
- "type": "string"
- },
- "primary_email": {
- "type": "string"
- }
- },
- "required": [
- "type"
- ]
- }
- },
- "required": [
- "id",
- "conversation_id",
- "subject",
- "status",
- "priority",
- "source",
- "message_type",
- "attachments",
- "created_at",
- "sender"
- ]
- }
- }
- },
- "required": [
- "conversation",
- "messages"
- ]
- }
- }
- }
- }
- }
- }
- },
"/emails/notification-preference/{user_id}": {
"get": {
"summary": "List notification preferences",
@@ -2853,315 +2217,6 @@
}
}
},
- "/internal/feature-requests": {
- "get": {
- "summary": "Get feature requests",
- "description": "Fetch all feature requests with upvote status for the current user",
- "parameters": [],
- "tags": [
- "Internal"
- ],
- "x-full-url": "https://api.hexclave.com/api/v1/internal/feature-requests",
- "responses": {
- "200": {
- "description": "Successful response",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "posts": {
- "type": "array",
- "items": {
- "type": "object",
- "properties": {
- "id": {
- "type": "string"
- },
- "title": {
- "type": "string"
- },
- "content": {
- "type": "string"
- },
- "upvotes": {
- "type": "number"
- },
- "date": {
- "type": "string"
- },
- "postStatus": {
- "type": "object",
- "properties": {
- "name": {
- "type": "string"
- },
- "color": {
- "type": "string"
- }
- },
- "required": [
- "name",
- "color"
- ]
- },
- "userHasUpvoted": {
- "type": "boolean"
- }
- },
- "required": [
- "id",
- "title",
- "upvotes",
- "date",
- "userHasUpvoted"
- ]
- }
- }
- },
- "required": [
- "posts"
- ]
- }
- }
- }
- }
- }
- },
- "post": {
- "summary": "Create feature request",
- "description": "Create a new feature request",
- "parameters": [],
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "title": {
- "type": "string"
- },
- "content": {
- "type": "string"
- },
- "category": {
- "type": "string"
- },
- "tags": {
- "type": "array",
- "items": {
- "type": "string"
- }
- },
- "commentsAllowed": {
- "type": "boolean"
- },
- "customInputValues": {
- "type": "object",
- "properties": {},
- "required": []
- }
- },
- "required": [
- "title"
- ],
- "example": {}
- }
- }
- }
- },
- "tags": [
- "Internal"
- ],
- "x-full-url": "https://api.hexclave.com/api/v1/internal/feature-requests",
- "responses": {
- "200": {
- "description": "Successful response",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "success": {
- "type": "boolean"
- },
- "id": {
- "type": "string"
- }
- },
- "required": [
- "success"
- ]
- }
- }
- }
- }
- }
- }
- },
- "/internal/feature-requests/{featureRequestId}/upvote": {
- "post": {
- "summary": "Toggle upvote on feature request",
- "description": "Toggle upvote on a feature request for the current user",
- "parameters": [
- {
- "name": "featureRequestId",
- "in": "path",
- "schema": {
- "type": "string"
- },
- "required": true
- }
- ],
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {},
- "example": {}
- }
- }
- }
- },
- "tags": [
- "Internal"
- ],
- "x-full-url": "https://api.hexclave.com/api/v1/internal/feature-requests/{featureRequestId}/upvote",
- "responses": {
- "200": {
- "description": "Successful response",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "success": {
- "type": "boolean"
- },
- "upvoted": {
- "type": "boolean"
- }
- },
- "required": [
- "success"
- ]
- }
- }
- }
- }
- }
- }
- },
- "/internal/feedback": {
- "post": {
- "summary": "Submit support feedback",
- "description": "Send a support feedback message to the internal Hexclave inbox. Auth is optional — works from both the dashboard (authenticated) and the dev tool (unauthenticated).",
- "parameters": [],
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "name": {
- "type": "string"
- },
- "email": {
- "type": "string"
- },
- "message": {
- "type": "string"
- },
- "feedback_type": {
- "type": "string",
- "enum": [
- "feedback",
- "bug"
- ]
- }
- },
- "required": [
- "email",
- "message"
- ],
- "example": {}
- }
- }
- }
- },
- "tags": [
- "Internal"
- ],
- "x-full-url": "https://api.hexclave.com/api/v1/internal/feedback",
- "responses": {
- "200": {
- "description": "Successful response",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "success": {
- "type": "boolean"
- }
- },
- "required": [
- "success"
- ]
- }
- }
- }
- }
- }
- }
- },
- "/internal/preview/create-project": {
- "post": {
- "summary": "Create a preview project",
- "description": "Creates a new project pre-filled with dummy data for the preview environment. Only available when NEXT_PUBLIC_STACK_IS_PREVIEW=true.",
- "parameters": [],
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {},
- "example": {}
- }
- }
- }
- },
- "tags": [
- "Internal"
- ],
- "x-full-url": "https://api.hexclave.com/api/v1/internal/preview/create-project",
- "responses": {
- "200": {
- "description": "Successful response",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "project_id": {
- "type": "string"
- }
- },
- "required": [
- "project_id"
- ]
- }
- }
- }
- }
- }
- }
- },
"/auth/oauth/authorize/{provider_id}": {
"get": {
"summary": "OAuth authorize endpoint",
@@ -3919,1333 +2974,6 @@
}
}
},
- "/internal/ai-conversations": {
- "get": {
- "summary": "List AI conversations",
- "description": "List AI conversations for the current user filtered by project",
- "parameters": [
- {
- "name": "projectId",
- "in": "query",
- "schema": {
- "type": "string"
- },
- "required": true
- }
- ],
- "tags": [
- "Others"
- ],
- "x-full-url": "https://api.hexclave.com/api/v1/internal/ai-conversations",
- "responses": {
- "200": {
- "description": "Successful response",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "conversations": {
- "type": "array",
- "items": {
- "type": "object",
- "properties": {
- "id": {
- "type": "string"
- },
- "title": {
- "type": "string"
- },
- "projectId": {
- "type": "string"
- },
- "updatedAt": {
- "type": "string"
- }
- },
- "required": [
- "id",
- "title",
- "projectId",
- "updatedAt"
- ]
- }
- }
- },
- "required": [
- "conversations"
- ]
- }
- }
- }
- }
- }
- },
- "post": {
- "summary": "Create AI conversation",
- "description": "Create a new AI conversation with optional initial messages",
- "parameters": [],
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "title": {
- "type": "string"
- },
- "projectId": {
- "type": "string"
- },
- "messages": {
- "type": "array",
- "items": {
- "type": "object",
- "properties": {
- "role": {
- "type": "string",
- "enum": [
- "user",
- "assistant"
- ]
- },
- "content": {
- "type": "object"
- }
- },
- "required": [
- "role",
- "content"
- ]
- }
- }
- },
- "required": [
- "title",
- "projectId",
- "messages"
- ],
- "example": {}
- }
- }
- }
- },
- "tags": [
- "Others"
- ],
- "x-full-url": "https://api.hexclave.com/api/v1/internal/ai-conversations",
- "responses": {
- "200": {
- "description": "Successful response",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "id": {
- "type": "string"
- },
- "title": {
- "type": "string"
- }
- },
- "required": [
- "id",
- "title"
- ]
- }
- }
- }
- }
- }
- }
- },
- "/internal/ai-conversations/{conversationId}": {
- "get": {
- "summary": "Get AI conversation",
- "description": "Fetch a single AI conversation with all its messages",
- "parameters": [
- {
- "name": "conversationId",
- "in": "path",
- "schema": {
- "type": "string"
- },
- "required": true
- }
- ],
- "tags": [
- "Others"
- ],
- "x-full-url": "https://api.hexclave.com/api/v1/internal/ai-conversations/{conversationId}",
- "responses": {
- "200": {
- "description": "Successful response",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "id": {
- "type": "string"
- },
- "title": {
- "type": "string"
- },
- "projectId": {
- "type": "string"
- },
- "messages": {
- "type": "array",
- "items": {
- "type": "object",
- "properties": {
- "id": {
- "type": "string"
- },
- "role": {
- "type": "string"
- },
- "content": {
- "type": "object"
- }
- },
- "required": [
- "id",
- "role",
- "content"
- ]
- }
- }
- },
- "required": [
- "id",
- "title",
- "projectId",
- "messages"
- ]
- }
- }
- }
- }
- }
- },
- "delete": {
- "summary": "Delete AI conversation",
- "description": "Delete an AI conversation and all its messages",
- "parameters": [
- {
- "name": "conversationId",
- "in": "path",
- "schema": {
- "type": "string"
- },
- "required": true
- }
- ],
- "tags": [
- "Others"
- ],
- "x-full-url": "https://api.hexclave.com/api/v1/internal/ai-conversations/{conversationId}",
- "responses": {
- "200": {
- "description": "Successful response",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {}
- }
- }
- }
- }
- }
- },
- "patch": {
- "summary": "Update AI conversation",
- "description": "Update the title of an AI conversation",
- "parameters": [
- {
- "name": "conversationId",
- "in": "path",
- "schema": {
- "type": "string"
- },
- "required": true
- }
- ],
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "title": {
- "type": "string"
- }
- },
- "required": [
- "title"
- ],
- "example": {}
- }
- }
- }
- },
- "tags": [
- "Others"
- ],
- "x-full-url": "https://api.hexclave.com/api/v1/internal/ai-conversations/{conversationId}",
- "responses": {
- "200": {
- "description": "Successful response",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {}
- }
- }
- }
- }
- }
- }
- },
- "/internal/ai-conversations/{conversationId}/messages": {
- "put": {
- "summary": "Replace conversation messages",
- "description": "Replace all messages in a conversation",
- "parameters": [
- {
- "name": "conversationId",
- "in": "path",
- "schema": {
- "type": "string"
- },
- "required": true
- }
- ],
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "messages": {
- "type": "array",
- "items": {
- "type": "object",
- "properties": {
- "role": {
- "type": "string",
- "enum": [
- "user",
- "assistant"
- ]
- },
- "content": {
- "type": "object"
- }
- },
- "required": [
- "role",
- "content"
- ]
- }
- }
- },
- "required": [
- "messages"
- ],
- "example": {}
- }
- }
- }
- },
- "tags": [
- "Others"
- ],
- "x-full-url": "https://api.hexclave.com/api/v1/internal/ai-conversations/{conversationId}/messages",
- "responses": {
- "200": {
- "description": "Successful response",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {}
- }
- }
- }
- }
- }
- }
- },
- "/internal/conversations": {
- "get": {
- "summary": "List conversations",
- "description": "List conversations for a managed project",
- "parameters": [
- {
- "name": "projectId",
- "in": "query",
- "schema": {
- "type": "string",
- "example": "e0b52f4d-dece-408c-af49-d23061bb0f8d",
- "description": "The unique identifier of the project"
- },
- "description": "The unique identifier of the project",
- "required": true
- },
- {
- "name": "query",
- "in": "query",
- "schema": {
- "type": "string"
- },
- "required": false
- },
- {
- "name": "status",
- "in": "query",
- "schema": {
- "type": "string",
- "enum": [
- "open",
- "pending",
- "closed"
- ]
- },
- "required": false
- },
- {
- "name": "userId",
- "in": "query",
- "schema": {
- "type": "string",
- "example": "3241a285-8329-4d69-8f3d-316e08cf140c",
- "description": "The unique identifier of the user"
- },
- "description": "The unique identifier of the user",
- "required": false
- },
- {
- "name": "limit",
- "in": "query",
- "schema": {
- "type": "string"
- },
- "required": false
- },
- {
- "name": "offset",
- "in": "query",
- "schema": {
- "type": "string"
- },
- "required": false
- }
- ],
- "tags": [
- "Others"
- ],
- "x-full-url": "https://api.hexclave.com/api/v1/internal/conversations",
- "responses": {
- "200": {
- "description": "Successful response",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "conversations": {
- "type": "array",
- "items": {
- "type": "object",
- "properties": {
- "conversationId": {
- "type": "string"
- },
- "userId": {
- "type": "string"
- },
- "teamId": {
- "type": "string"
- },
- "userDisplayName": {
- "type": "string"
- },
- "userPrimaryEmail": {
- "type": "string"
- },
- "userProfileImageUrl": {
- "type": "string"
- },
- "subject": {
- "type": "string"
- },
- "status": {
- "type": "string",
- "enum": [
- "open",
- "pending",
- "closed"
- ]
- },
- "priority": {
- "type": "string",
- "enum": [
- "low",
- "normal",
- "high",
- "urgent"
- ]
- },
- "source": {
- "type": "string",
- "enum": [
- "manual",
- "chat",
- "email",
- "api"
- ]
- },
- "lastMessageType": {
- "type": "string",
- "enum": [
- "message",
- "internal-note",
- "status-change"
- ]
- },
- "preview": {
- "type": "string"
- },
- "lastActivityAt": {
- "type": "string"
- },
- "metadata": {
- "type": "object",
- "properties": {
- "assignedToUserId": {
- "type": "string"
- },
- "assignedToDisplayName": {
- "type": "string"
- },
- "tags": {
- "type": "array",
- "items": {
- "type": "string"
- }
- },
- "firstResponseDueAt": {
- "type": "string"
- },
- "firstResponseAt": {
- "type": "string"
- },
- "nextResponseDueAt": {
- "type": "string"
- },
- "lastCustomerReplyAt": {
- "type": "string"
- },
- "lastAgentReplyAt": {
- "type": "string"
- }
- },
- "required": [
- "tags"
- ]
- },
- "createdAt": {
- "type": "string"
- },
- "updatedAt": {
- "type": "string"
- },
- "lastMessageAt": {
- "type": "string"
- },
- "lastInboundAt": {
- "type": "string"
- },
- "lastOutboundAt": {
- "type": "string"
- },
- "closedAt": {
- "type": "string"
- },
- "recordMetadata": {
- "type": "object"
- }
- },
- "required": [
- "conversationId",
- "subject",
- "status",
- "priority",
- "source",
- "lastMessageType",
- "lastActivityAt",
- "metadata"
- ]
- }
- },
- "hasMore": {
- "type": "boolean"
- }
- },
- "required": [
- "conversations",
- "hasMore"
- ]
- }
- }
- }
- }
- }
- },
- "post": {
- "summary": "Create conversation",
- "description": "Create a managed project conversation for a user",
- "parameters": [],
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "projectId": {
- "type": "string",
- "example": "e0b52f4d-dece-408c-af49-d23061bb0f8d",
- "description": "The unique identifier of the project"
- },
- "userId": {
- "type": "string",
- "example": "3241a285-8329-4d69-8f3d-316e08cf140c",
- "description": "The unique identifier of the user"
- },
- "subject": {
- "type": "string"
- },
- "initialMessage": {
- "type": "string"
- },
- "priority": {
- "type": "string",
- "enum": [
- "low",
- "normal",
- "high",
- "urgent"
- ]
- },
- "source": {
- "type": "string",
- "enum": [
- "manual",
- "chat",
- "email",
- "api"
- ]
- }
- },
- "required": [
- "projectId",
- "userId",
- "subject",
- "initialMessage",
- "priority"
- ],
- "example": {
- "projectId": "e0b52f4d-dece-408c-af49-d23061bb0f8d",
- "userId": "3241a285-8329-4d69-8f3d-316e08cf140c"
- }
- }
- }
- }
- },
- "tags": [
- "Others"
- ],
- "x-full-url": "https://api.hexclave.com/api/v1/internal/conversations",
- "responses": {
- "200": {
- "description": "Successful response",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "conversationId": {
- "type": "string"
- }
- },
- "required": [
- "conversationId"
- ]
- }
- }
- }
- }
- }
- }
- },
- "/internal/conversations/{conversationId}": {
- "get": {
- "summary": "Get conversation detail",
- "description": "Get conversation detail for a managed project",
- "parameters": [
- {
- "name": "projectId",
- "in": "query",
- "schema": {
- "type": "string",
- "example": "e0b52f4d-dece-408c-af49-d23061bb0f8d",
- "description": "The unique identifier of the project"
- },
- "description": "The unique identifier of the project",
- "required": true
- },
- {
- "name": "conversationId",
- "in": "path",
- "schema": {
- "type": "string"
- },
- "required": true
- }
- ],
- "tags": [
- "Others"
- ],
- "x-full-url": "https://api.hexclave.com/api/v1/internal/conversations/{conversationId}",
- "responses": {
- "200": {
- "description": "Successful response",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "conversation": {
- "type": "object",
- "properties": {
- "conversationId": {
- "type": "string"
- },
- "userId": {
- "type": "string"
- },
- "teamId": {
- "type": "string"
- },
- "userDisplayName": {
- "type": "string"
- },
- "userPrimaryEmail": {
- "type": "string"
- },
- "userProfileImageUrl": {
- "type": "string"
- },
- "subject": {
- "type": "string"
- },
- "status": {
- "type": "string",
- "enum": [
- "open",
- "pending",
- "closed"
- ]
- },
- "priority": {
- "type": "string",
- "enum": [
- "low",
- "normal",
- "high",
- "urgent"
- ]
- },
- "source": {
- "type": "string",
- "enum": [
- "manual",
- "chat",
- "email",
- "api"
- ]
- },
- "lastMessageType": {
- "type": "string",
- "enum": [
- "message",
- "internal-note",
- "status-change"
- ]
- },
- "preview": {
- "type": "string"
- },
- "lastActivityAt": {
- "type": "string"
- },
- "metadata": {
- "type": "object",
- "properties": {
- "assignedToUserId": {
- "type": "string"
- },
- "assignedToDisplayName": {
- "type": "string"
- },
- "tags": {
- "type": "array",
- "items": {
- "type": "string"
- }
- },
- "firstResponseDueAt": {
- "type": "string"
- },
- "firstResponseAt": {
- "type": "string"
- },
- "nextResponseDueAt": {
- "type": "string"
- },
- "lastCustomerReplyAt": {
- "type": "string"
- },
- "lastAgentReplyAt": {
- "type": "string"
- }
- },
- "required": [
- "tags"
- ]
- },
- "createdAt": {
- "type": "string"
- },
- "updatedAt": {
- "type": "string"
- },
- "lastMessageAt": {
- "type": "string"
- },
- "lastInboundAt": {
- "type": "string"
- },
- "lastOutboundAt": {
- "type": "string"
- },
- "closedAt": {
- "type": "string"
- },
- "recordMetadata": {
- "type": "object"
- }
- },
- "required": [
- "conversationId",
- "subject",
- "status",
- "priority",
- "source",
- "lastMessageType",
- "lastActivityAt",
- "metadata"
- ]
- },
- "messages": {
- "type": "array",
- "items": {
- "type": "object",
- "properties": {
- "id": {
- "type": "string"
- },
- "conversationId": {
- "type": "string"
- },
- "userId": {
- "type": "string"
- },
- "teamId": {
- "type": "string"
- },
- "subject": {
- "type": "string"
- },
- "status": {
- "type": "string",
- "enum": [
- "open",
- "pending",
- "closed"
- ]
- },
- "priority": {
- "type": "string",
- "enum": [
- "low",
- "normal",
- "high",
- "urgent"
- ]
- },
- "source": {
- "type": "string",
- "enum": [
- "manual",
- "chat",
- "email",
- "api"
- ]
- },
- "messageType": {
- "type": "string",
- "enum": [
- "message",
- "internal-note",
- "status-change"
- ]
- },
- "body": {
- "type": "string"
- },
- "attachments": {
- "type": "array",
- "items": {
- "type": "object"
- }
- },
- "metadata": {
- "type": "object"
- },
- "createdAt": {
- "type": "string"
- },
- "sender": {
- "type": "object",
- "properties": {
- "type": {
- "type": "string",
- "enum": [
- "user",
- "agent",
- "system"
- ]
- },
- "id": {
- "type": "string"
- },
- "displayName": {
- "type": "string"
- },
- "primaryEmail": {
- "type": "string"
- }
- },
- "required": [
- "type"
- ]
- }
- },
- "required": [
- "id",
- "conversationId",
- "subject",
- "status",
- "priority",
- "source",
- "messageType",
- "attachments",
- "createdAt",
- "sender"
- ]
- }
- },
- "entryPoints": {
- "type": "array",
- "items": {
- "type": "object",
- "properties": {
- "id": {
- "type": "string"
- },
- "channelType": {
- "type": "string"
- },
- "adapterKey": {
- "type": "string"
- },
- "externalChannelId": {
- "type": "string"
- },
- "isEntryPoint": {
- "type": "boolean"
- },
- "metadata": {
- "type": "object"
- },
- "createdAt": {
- "type": "string"
- },
- "updatedAt": {
- "type": "string"
- }
- },
- "required": [
- "id",
- "channelType",
- "adapterKey",
- "isEntryPoint",
- "createdAt",
- "updatedAt"
- ]
- }
- }
- },
- "required": [
- "conversation",
- "messages",
- "entryPoints"
- ]
- }
- }
- }
- }
- }
- },
- "patch": {
- "summary": "Update conversation",
- "description": "Append a message or update conversation attributes on a managed project conversation",
- "parameters": [
- {
- "name": "conversationId",
- "in": "path",
- "schema": {
- "type": "string"
- },
- "required": true
- }
- ],
- "tags": [
- "Others"
- ],
- "x-full-url": "https://api.hexclave.com/api/v1/internal/conversations/{conversationId}",
- "responses": {
- "200": {
- "description": "Successful response",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "conversation": {
- "type": "object",
- "properties": {
- "conversationId": {
- "type": "string"
- },
- "userId": {
- "type": "string"
- },
- "teamId": {
- "type": "string"
- },
- "userDisplayName": {
- "type": "string"
- },
- "userPrimaryEmail": {
- "type": "string"
- },
- "userProfileImageUrl": {
- "type": "string"
- },
- "subject": {
- "type": "string"
- },
- "status": {
- "type": "string",
- "enum": [
- "open",
- "pending",
- "closed"
- ]
- },
- "priority": {
- "type": "string",
- "enum": [
- "low",
- "normal",
- "high",
- "urgent"
- ]
- },
- "source": {
- "type": "string",
- "enum": [
- "manual",
- "chat",
- "email",
- "api"
- ]
- },
- "lastMessageType": {
- "type": "string",
- "enum": [
- "message",
- "internal-note",
- "status-change"
- ]
- },
- "preview": {
- "type": "string"
- },
- "lastActivityAt": {
- "type": "string"
- },
- "metadata": {
- "type": "object",
- "properties": {
- "assignedToUserId": {
- "type": "string"
- },
- "assignedToDisplayName": {
- "type": "string"
- },
- "tags": {
- "type": "array",
- "items": {
- "type": "string"
- }
- },
- "firstResponseDueAt": {
- "type": "string"
- },
- "firstResponseAt": {
- "type": "string"
- },
- "nextResponseDueAt": {
- "type": "string"
- },
- "lastCustomerReplyAt": {
- "type": "string"
- },
- "lastAgentReplyAt": {
- "type": "string"
- }
- },
- "required": [
- "tags"
- ]
- },
- "createdAt": {
- "type": "string"
- },
- "updatedAt": {
- "type": "string"
- },
- "lastMessageAt": {
- "type": "string"
- },
- "lastInboundAt": {
- "type": "string"
- },
- "lastOutboundAt": {
- "type": "string"
- },
- "closedAt": {
- "type": "string"
- },
- "recordMetadata": {
- "type": "object"
- }
- },
- "required": [
- "conversationId",
- "subject",
- "status",
- "priority",
- "source",
- "lastMessageType",
- "lastActivityAt",
- "metadata"
- ]
- },
- "messages": {
- "type": "array",
- "items": {
- "type": "object",
- "properties": {
- "id": {
- "type": "string"
- },
- "conversationId": {
- "type": "string"
- },
- "userId": {
- "type": "string"
- },
- "teamId": {
- "type": "string"
- },
- "subject": {
- "type": "string"
- },
- "status": {
- "type": "string",
- "enum": [
- "open",
- "pending",
- "closed"
- ]
- },
- "priority": {
- "type": "string",
- "enum": [
- "low",
- "normal",
- "high",
- "urgent"
- ]
- },
- "source": {
- "type": "string",
- "enum": [
- "manual",
- "chat",
- "email",
- "api"
- ]
- },
- "messageType": {
- "type": "string",
- "enum": [
- "message",
- "internal-note",
- "status-change"
- ]
- },
- "body": {
- "type": "string"
- },
- "attachments": {
- "type": "array",
- "items": {
- "type": "object"
- }
- },
- "metadata": {
- "type": "object"
- },
- "createdAt": {
- "type": "string"
- },
- "sender": {
- "type": "object",
- "properties": {
- "type": {
- "type": "string",
- "enum": [
- "user",
- "agent",
- "system"
- ]
- },
- "id": {
- "type": "string"
- },
- "displayName": {
- "type": "string"
- },
- "primaryEmail": {
- "type": "string"
- }
- },
- "required": [
- "type"
- ]
- }
- },
- "required": [
- "id",
- "conversationId",
- "subject",
- "status",
- "priority",
- "source",
- "messageType",
- "attachments",
- "createdAt",
- "sender"
- ]
- }
- },
- "entryPoints": {
- "type": "array",
- "items": {
- "type": "object",
- "properties": {
- "id": {
- "type": "string"
- },
- "channelType": {
- "type": "string"
- },
- "adapterKey": {
- "type": "string"
- },
- "externalChannelId": {
- "type": "string"
- },
- "isEntryPoint": {
- "type": "boolean"
- },
- "metadata": {
- "type": "object"
- },
- "createdAt": {
- "type": "string"
- },
- "updatedAt": {
- "type": "string"
- }
- },
- "required": [
- "id",
- "channelType",
- "adapterKey",
- "isEntryPoint",
- "createdAt",
- "updatedAt"
- ]
- }
- }
- },
- "required": [
- "conversation",
- "messages",
- "entryPoints"
- ]
- }
- }
- }
- }
- }
- }
- },
"/auth/mfa/sign-in": {
"post": {
"summary": "MFA sign in",
diff --git a/docs-mintlify/openapi/server.json b/docs-mintlify/openapi/server.json
index d10c412cd..5f2c5d6a2 100644
--- a/docs-mintlify/openapi/server.json
+++ b/docs-mintlify/openapi/server.json
@@ -2963,315 +2963,6 @@
}
}
},
- "/internal/feature-requests": {
- "get": {
- "summary": "Get feature requests",
- "description": "Fetch all feature requests with upvote status for the current user",
- "parameters": [],
- "tags": [
- "Internal"
- ],
- "x-full-url": "https://api.hexclave.com/api/v1/internal/feature-requests",
- "responses": {
- "200": {
- "description": "Successful response",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "posts": {
- "type": "array",
- "items": {
- "type": "object",
- "properties": {
- "id": {
- "type": "string"
- },
- "title": {
- "type": "string"
- },
- "content": {
- "type": "string"
- },
- "upvotes": {
- "type": "number"
- },
- "date": {
- "type": "string"
- },
- "postStatus": {
- "type": "object",
- "properties": {
- "name": {
- "type": "string"
- },
- "color": {
- "type": "string"
- }
- },
- "required": [
- "name",
- "color"
- ]
- },
- "userHasUpvoted": {
- "type": "boolean"
- }
- },
- "required": [
- "id",
- "title",
- "upvotes",
- "date",
- "userHasUpvoted"
- ]
- }
- }
- },
- "required": [
- "posts"
- ]
- }
- }
- }
- }
- }
- },
- "post": {
- "summary": "Create feature request",
- "description": "Create a new feature request",
- "parameters": [],
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "title": {
- "type": "string"
- },
- "content": {
- "type": "string"
- },
- "category": {
- "type": "string"
- },
- "tags": {
- "type": "array",
- "items": {
- "type": "string"
- }
- },
- "commentsAllowed": {
- "type": "boolean"
- },
- "customInputValues": {
- "type": "object",
- "properties": {},
- "required": []
- }
- },
- "required": [
- "title"
- ],
- "example": {}
- }
- }
- }
- },
- "tags": [
- "Internal"
- ],
- "x-full-url": "https://api.hexclave.com/api/v1/internal/feature-requests",
- "responses": {
- "200": {
- "description": "Successful response",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "success": {
- "type": "boolean"
- },
- "id": {
- "type": "string"
- }
- },
- "required": [
- "success"
- ]
- }
- }
- }
- }
- }
- }
- },
- "/internal/feature-requests/{featureRequestId}/upvote": {
- "post": {
- "summary": "Toggle upvote on feature request",
- "description": "Toggle upvote on a feature request for the current user",
- "parameters": [
- {
- "name": "featureRequestId",
- "in": "path",
- "schema": {
- "type": "string"
- },
- "required": true
- }
- ],
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {},
- "example": {}
- }
- }
- }
- },
- "tags": [
- "Internal"
- ],
- "x-full-url": "https://api.hexclave.com/api/v1/internal/feature-requests/{featureRequestId}/upvote",
- "responses": {
- "200": {
- "description": "Successful response",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "success": {
- "type": "boolean"
- },
- "upvoted": {
- "type": "boolean"
- }
- },
- "required": [
- "success"
- ]
- }
- }
- }
- }
- }
- }
- },
- "/internal/feedback": {
- "post": {
- "summary": "Submit support feedback",
- "description": "Send a support feedback message to the internal Hexclave inbox. Auth is optional — works from both the dashboard (authenticated) and the dev tool (unauthenticated).",
- "parameters": [],
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "name": {
- "type": "string"
- },
- "email": {
- "type": "string"
- },
- "message": {
- "type": "string"
- },
- "feedback_type": {
- "type": "string",
- "enum": [
- "feedback",
- "bug"
- ]
- }
- },
- "required": [
- "email",
- "message"
- ],
- "example": {}
- }
- }
- }
- },
- "tags": [
- "Internal"
- ],
- "x-full-url": "https://api.hexclave.com/api/v1/internal/feedback",
- "responses": {
- "200": {
- "description": "Successful response",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "success": {
- "type": "boolean"
- }
- },
- "required": [
- "success"
- ]
- }
- }
- }
- }
- }
- }
- },
- "/internal/preview/create-project": {
- "post": {
- "summary": "Create a preview project",
- "description": "Creates a new project pre-filled with dummy data for the preview environment. Only available when NEXT_PUBLIC_STACK_IS_PREVIEW=true.",
- "parameters": [],
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {},
- "example": {}
- }
- }
- }
- },
- "tags": [
- "Internal"
- ],
- "x-full-url": "https://api.hexclave.com/api/v1/internal/preview/create-project",
- "responses": {
- "200": {
- "description": "Successful response",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "project_id": {
- "type": "string"
- }
- },
- "required": [
- "project_id"
- ]
- }
- }
- }
- }
- }
- }
- },
"/auth/oauth/authorize/{provider_id}": {
"get": {
"summary": "OAuth authorize endpoint",
@@ -4199,1333 +3890,6 @@
}
}
},
- "/internal/ai-conversations": {
- "get": {
- "summary": "List AI conversations",
- "description": "List AI conversations for the current user filtered by project",
- "parameters": [
- {
- "name": "projectId",
- "in": "query",
- "schema": {
- "type": "string"
- },
- "required": true
- }
- ],
- "tags": [
- "Others"
- ],
- "x-full-url": "https://api.hexclave.com/api/v1/internal/ai-conversations",
- "responses": {
- "200": {
- "description": "Successful response",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "conversations": {
- "type": "array",
- "items": {
- "type": "object",
- "properties": {
- "id": {
- "type": "string"
- },
- "title": {
- "type": "string"
- },
- "projectId": {
- "type": "string"
- },
- "updatedAt": {
- "type": "string"
- }
- },
- "required": [
- "id",
- "title",
- "projectId",
- "updatedAt"
- ]
- }
- }
- },
- "required": [
- "conversations"
- ]
- }
- }
- }
- }
- }
- },
- "post": {
- "summary": "Create AI conversation",
- "description": "Create a new AI conversation with optional initial messages",
- "parameters": [],
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "title": {
- "type": "string"
- },
- "projectId": {
- "type": "string"
- },
- "messages": {
- "type": "array",
- "items": {
- "type": "object",
- "properties": {
- "role": {
- "type": "string",
- "enum": [
- "user",
- "assistant"
- ]
- },
- "content": {
- "type": "object"
- }
- },
- "required": [
- "role",
- "content"
- ]
- }
- }
- },
- "required": [
- "title",
- "projectId",
- "messages"
- ],
- "example": {}
- }
- }
- }
- },
- "tags": [
- "Others"
- ],
- "x-full-url": "https://api.hexclave.com/api/v1/internal/ai-conversations",
- "responses": {
- "200": {
- "description": "Successful response",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "id": {
- "type": "string"
- },
- "title": {
- "type": "string"
- }
- },
- "required": [
- "id",
- "title"
- ]
- }
- }
- }
- }
- }
- }
- },
- "/internal/ai-conversations/{conversationId}": {
- "get": {
- "summary": "Get AI conversation",
- "description": "Fetch a single AI conversation with all its messages",
- "parameters": [
- {
- "name": "conversationId",
- "in": "path",
- "schema": {
- "type": "string"
- },
- "required": true
- }
- ],
- "tags": [
- "Others"
- ],
- "x-full-url": "https://api.hexclave.com/api/v1/internal/ai-conversations/{conversationId}",
- "responses": {
- "200": {
- "description": "Successful response",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "id": {
- "type": "string"
- },
- "title": {
- "type": "string"
- },
- "projectId": {
- "type": "string"
- },
- "messages": {
- "type": "array",
- "items": {
- "type": "object",
- "properties": {
- "id": {
- "type": "string"
- },
- "role": {
- "type": "string"
- },
- "content": {
- "type": "object"
- }
- },
- "required": [
- "id",
- "role",
- "content"
- ]
- }
- }
- },
- "required": [
- "id",
- "title",
- "projectId",
- "messages"
- ]
- }
- }
- }
- }
- }
- },
- "delete": {
- "summary": "Delete AI conversation",
- "description": "Delete an AI conversation and all its messages",
- "parameters": [
- {
- "name": "conversationId",
- "in": "path",
- "schema": {
- "type": "string"
- },
- "required": true
- }
- ],
- "tags": [
- "Others"
- ],
- "x-full-url": "https://api.hexclave.com/api/v1/internal/ai-conversations/{conversationId}",
- "responses": {
- "200": {
- "description": "Successful response",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {}
- }
- }
- }
- }
- }
- },
- "patch": {
- "summary": "Update AI conversation",
- "description": "Update the title of an AI conversation",
- "parameters": [
- {
- "name": "conversationId",
- "in": "path",
- "schema": {
- "type": "string"
- },
- "required": true
- }
- ],
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "title": {
- "type": "string"
- }
- },
- "required": [
- "title"
- ],
- "example": {}
- }
- }
- }
- },
- "tags": [
- "Others"
- ],
- "x-full-url": "https://api.hexclave.com/api/v1/internal/ai-conversations/{conversationId}",
- "responses": {
- "200": {
- "description": "Successful response",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {}
- }
- }
- }
- }
- }
- }
- },
- "/internal/ai-conversations/{conversationId}/messages": {
- "put": {
- "summary": "Replace conversation messages",
- "description": "Replace all messages in a conversation",
- "parameters": [
- {
- "name": "conversationId",
- "in": "path",
- "schema": {
- "type": "string"
- },
- "required": true
- }
- ],
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "messages": {
- "type": "array",
- "items": {
- "type": "object",
- "properties": {
- "role": {
- "type": "string",
- "enum": [
- "user",
- "assistant"
- ]
- },
- "content": {
- "type": "object"
- }
- },
- "required": [
- "role",
- "content"
- ]
- }
- }
- },
- "required": [
- "messages"
- ],
- "example": {}
- }
- }
- }
- },
- "tags": [
- "Others"
- ],
- "x-full-url": "https://api.hexclave.com/api/v1/internal/ai-conversations/{conversationId}/messages",
- "responses": {
- "200": {
- "description": "Successful response",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {}
- }
- }
- }
- }
- }
- }
- },
- "/internal/conversations": {
- "get": {
- "summary": "List conversations",
- "description": "List conversations for a managed project",
- "parameters": [
- {
- "name": "projectId",
- "in": "query",
- "schema": {
- "type": "string",
- "example": "e0b52f4d-dece-408c-af49-d23061bb0f8d",
- "description": "The unique identifier of the project"
- },
- "description": "The unique identifier of the project",
- "required": true
- },
- {
- "name": "query",
- "in": "query",
- "schema": {
- "type": "string"
- },
- "required": false
- },
- {
- "name": "status",
- "in": "query",
- "schema": {
- "type": "string",
- "enum": [
- "open",
- "pending",
- "closed"
- ]
- },
- "required": false
- },
- {
- "name": "userId",
- "in": "query",
- "schema": {
- "type": "string",
- "example": "3241a285-8329-4d69-8f3d-316e08cf140c",
- "description": "The unique identifier of the user"
- },
- "description": "The unique identifier of the user",
- "required": false
- },
- {
- "name": "limit",
- "in": "query",
- "schema": {
- "type": "string"
- },
- "required": false
- },
- {
- "name": "offset",
- "in": "query",
- "schema": {
- "type": "string"
- },
- "required": false
- }
- ],
- "tags": [
- "Others"
- ],
- "x-full-url": "https://api.hexclave.com/api/v1/internal/conversations",
- "responses": {
- "200": {
- "description": "Successful response",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "conversations": {
- "type": "array",
- "items": {
- "type": "object",
- "properties": {
- "conversationId": {
- "type": "string"
- },
- "userId": {
- "type": "string"
- },
- "teamId": {
- "type": "string"
- },
- "userDisplayName": {
- "type": "string"
- },
- "userPrimaryEmail": {
- "type": "string"
- },
- "userProfileImageUrl": {
- "type": "string"
- },
- "subject": {
- "type": "string"
- },
- "status": {
- "type": "string",
- "enum": [
- "open",
- "pending",
- "closed"
- ]
- },
- "priority": {
- "type": "string",
- "enum": [
- "low",
- "normal",
- "high",
- "urgent"
- ]
- },
- "source": {
- "type": "string",
- "enum": [
- "manual",
- "chat",
- "email",
- "api"
- ]
- },
- "lastMessageType": {
- "type": "string",
- "enum": [
- "message",
- "internal-note",
- "status-change"
- ]
- },
- "preview": {
- "type": "string"
- },
- "lastActivityAt": {
- "type": "string"
- },
- "metadata": {
- "type": "object",
- "properties": {
- "assignedToUserId": {
- "type": "string"
- },
- "assignedToDisplayName": {
- "type": "string"
- },
- "tags": {
- "type": "array",
- "items": {
- "type": "string"
- }
- },
- "firstResponseDueAt": {
- "type": "string"
- },
- "firstResponseAt": {
- "type": "string"
- },
- "nextResponseDueAt": {
- "type": "string"
- },
- "lastCustomerReplyAt": {
- "type": "string"
- },
- "lastAgentReplyAt": {
- "type": "string"
- }
- },
- "required": [
- "tags"
- ]
- },
- "createdAt": {
- "type": "string"
- },
- "updatedAt": {
- "type": "string"
- },
- "lastMessageAt": {
- "type": "string"
- },
- "lastInboundAt": {
- "type": "string"
- },
- "lastOutboundAt": {
- "type": "string"
- },
- "closedAt": {
- "type": "string"
- },
- "recordMetadata": {
- "type": "object"
- }
- },
- "required": [
- "conversationId",
- "subject",
- "status",
- "priority",
- "source",
- "lastMessageType",
- "lastActivityAt",
- "metadata"
- ]
- }
- },
- "hasMore": {
- "type": "boolean"
- }
- },
- "required": [
- "conversations",
- "hasMore"
- ]
- }
- }
- }
- }
- }
- },
- "post": {
- "summary": "Create conversation",
- "description": "Create a managed project conversation for a user",
- "parameters": [],
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "projectId": {
- "type": "string",
- "example": "e0b52f4d-dece-408c-af49-d23061bb0f8d",
- "description": "The unique identifier of the project"
- },
- "userId": {
- "type": "string",
- "example": "3241a285-8329-4d69-8f3d-316e08cf140c",
- "description": "The unique identifier of the user"
- },
- "subject": {
- "type": "string"
- },
- "initialMessage": {
- "type": "string"
- },
- "priority": {
- "type": "string",
- "enum": [
- "low",
- "normal",
- "high",
- "urgent"
- ]
- },
- "source": {
- "type": "string",
- "enum": [
- "manual",
- "chat",
- "email",
- "api"
- ]
- }
- },
- "required": [
- "projectId",
- "userId",
- "subject",
- "initialMessage",
- "priority"
- ],
- "example": {
- "projectId": "e0b52f4d-dece-408c-af49-d23061bb0f8d",
- "userId": "3241a285-8329-4d69-8f3d-316e08cf140c"
- }
- }
- }
- }
- },
- "tags": [
- "Others"
- ],
- "x-full-url": "https://api.hexclave.com/api/v1/internal/conversations",
- "responses": {
- "200": {
- "description": "Successful response",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "conversationId": {
- "type": "string"
- }
- },
- "required": [
- "conversationId"
- ]
- }
- }
- }
- }
- }
- }
- },
- "/internal/conversations/{conversationId}": {
- "get": {
- "summary": "Get conversation detail",
- "description": "Get conversation detail for a managed project",
- "parameters": [
- {
- "name": "projectId",
- "in": "query",
- "schema": {
- "type": "string",
- "example": "e0b52f4d-dece-408c-af49-d23061bb0f8d",
- "description": "The unique identifier of the project"
- },
- "description": "The unique identifier of the project",
- "required": true
- },
- {
- "name": "conversationId",
- "in": "path",
- "schema": {
- "type": "string"
- },
- "required": true
- }
- ],
- "tags": [
- "Others"
- ],
- "x-full-url": "https://api.hexclave.com/api/v1/internal/conversations/{conversationId}",
- "responses": {
- "200": {
- "description": "Successful response",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "conversation": {
- "type": "object",
- "properties": {
- "conversationId": {
- "type": "string"
- },
- "userId": {
- "type": "string"
- },
- "teamId": {
- "type": "string"
- },
- "userDisplayName": {
- "type": "string"
- },
- "userPrimaryEmail": {
- "type": "string"
- },
- "userProfileImageUrl": {
- "type": "string"
- },
- "subject": {
- "type": "string"
- },
- "status": {
- "type": "string",
- "enum": [
- "open",
- "pending",
- "closed"
- ]
- },
- "priority": {
- "type": "string",
- "enum": [
- "low",
- "normal",
- "high",
- "urgent"
- ]
- },
- "source": {
- "type": "string",
- "enum": [
- "manual",
- "chat",
- "email",
- "api"
- ]
- },
- "lastMessageType": {
- "type": "string",
- "enum": [
- "message",
- "internal-note",
- "status-change"
- ]
- },
- "preview": {
- "type": "string"
- },
- "lastActivityAt": {
- "type": "string"
- },
- "metadata": {
- "type": "object",
- "properties": {
- "assignedToUserId": {
- "type": "string"
- },
- "assignedToDisplayName": {
- "type": "string"
- },
- "tags": {
- "type": "array",
- "items": {
- "type": "string"
- }
- },
- "firstResponseDueAt": {
- "type": "string"
- },
- "firstResponseAt": {
- "type": "string"
- },
- "nextResponseDueAt": {
- "type": "string"
- },
- "lastCustomerReplyAt": {
- "type": "string"
- },
- "lastAgentReplyAt": {
- "type": "string"
- }
- },
- "required": [
- "tags"
- ]
- },
- "createdAt": {
- "type": "string"
- },
- "updatedAt": {
- "type": "string"
- },
- "lastMessageAt": {
- "type": "string"
- },
- "lastInboundAt": {
- "type": "string"
- },
- "lastOutboundAt": {
- "type": "string"
- },
- "closedAt": {
- "type": "string"
- },
- "recordMetadata": {
- "type": "object"
- }
- },
- "required": [
- "conversationId",
- "subject",
- "status",
- "priority",
- "source",
- "lastMessageType",
- "lastActivityAt",
- "metadata"
- ]
- },
- "messages": {
- "type": "array",
- "items": {
- "type": "object",
- "properties": {
- "id": {
- "type": "string"
- },
- "conversationId": {
- "type": "string"
- },
- "userId": {
- "type": "string"
- },
- "teamId": {
- "type": "string"
- },
- "subject": {
- "type": "string"
- },
- "status": {
- "type": "string",
- "enum": [
- "open",
- "pending",
- "closed"
- ]
- },
- "priority": {
- "type": "string",
- "enum": [
- "low",
- "normal",
- "high",
- "urgent"
- ]
- },
- "source": {
- "type": "string",
- "enum": [
- "manual",
- "chat",
- "email",
- "api"
- ]
- },
- "messageType": {
- "type": "string",
- "enum": [
- "message",
- "internal-note",
- "status-change"
- ]
- },
- "body": {
- "type": "string"
- },
- "attachments": {
- "type": "array",
- "items": {
- "type": "object"
- }
- },
- "metadata": {
- "type": "object"
- },
- "createdAt": {
- "type": "string"
- },
- "sender": {
- "type": "object",
- "properties": {
- "type": {
- "type": "string",
- "enum": [
- "user",
- "agent",
- "system"
- ]
- },
- "id": {
- "type": "string"
- },
- "displayName": {
- "type": "string"
- },
- "primaryEmail": {
- "type": "string"
- }
- },
- "required": [
- "type"
- ]
- }
- },
- "required": [
- "id",
- "conversationId",
- "subject",
- "status",
- "priority",
- "source",
- "messageType",
- "attachments",
- "createdAt",
- "sender"
- ]
- }
- },
- "entryPoints": {
- "type": "array",
- "items": {
- "type": "object",
- "properties": {
- "id": {
- "type": "string"
- },
- "channelType": {
- "type": "string"
- },
- "adapterKey": {
- "type": "string"
- },
- "externalChannelId": {
- "type": "string"
- },
- "isEntryPoint": {
- "type": "boolean"
- },
- "metadata": {
- "type": "object"
- },
- "createdAt": {
- "type": "string"
- },
- "updatedAt": {
- "type": "string"
- }
- },
- "required": [
- "id",
- "channelType",
- "adapterKey",
- "isEntryPoint",
- "createdAt",
- "updatedAt"
- ]
- }
- }
- },
- "required": [
- "conversation",
- "messages",
- "entryPoints"
- ]
- }
- }
- }
- }
- }
- },
- "patch": {
- "summary": "Update conversation",
- "description": "Append a message or update conversation attributes on a managed project conversation",
- "parameters": [
- {
- "name": "conversationId",
- "in": "path",
- "schema": {
- "type": "string"
- },
- "required": true
- }
- ],
- "tags": [
- "Others"
- ],
- "x-full-url": "https://api.hexclave.com/api/v1/internal/conversations/{conversationId}",
- "responses": {
- "200": {
- "description": "Successful response",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "conversation": {
- "type": "object",
- "properties": {
- "conversationId": {
- "type": "string"
- },
- "userId": {
- "type": "string"
- },
- "teamId": {
- "type": "string"
- },
- "userDisplayName": {
- "type": "string"
- },
- "userPrimaryEmail": {
- "type": "string"
- },
- "userProfileImageUrl": {
- "type": "string"
- },
- "subject": {
- "type": "string"
- },
- "status": {
- "type": "string",
- "enum": [
- "open",
- "pending",
- "closed"
- ]
- },
- "priority": {
- "type": "string",
- "enum": [
- "low",
- "normal",
- "high",
- "urgent"
- ]
- },
- "source": {
- "type": "string",
- "enum": [
- "manual",
- "chat",
- "email",
- "api"
- ]
- },
- "lastMessageType": {
- "type": "string",
- "enum": [
- "message",
- "internal-note",
- "status-change"
- ]
- },
- "preview": {
- "type": "string"
- },
- "lastActivityAt": {
- "type": "string"
- },
- "metadata": {
- "type": "object",
- "properties": {
- "assignedToUserId": {
- "type": "string"
- },
- "assignedToDisplayName": {
- "type": "string"
- },
- "tags": {
- "type": "array",
- "items": {
- "type": "string"
- }
- },
- "firstResponseDueAt": {
- "type": "string"
- },
- "firstResponseAt": {
- "type": "string"
- },
- "nextResponseDueAt": {
- "type": "string"
- },
- "lastCustomerReplyAt": {
- "type": "string"
- },
- "lastAgentReplyAt": {
- "type": "string"
- }
- },
- "required": [
- "tags"
- ]
- },
- "createdAt": {
- "type": "string"
- },
- "updatedAt": {
- "type": "string"
- },
- "lastMessageAt": {
- "type": "string"
- },
- "lastInboundAt": {
- "type": "string"
- },
- "lastOutboundAt": {
- "type": "string"
- },
- "closedAt": {
- "type": "string"
- },
- "recordMetadata": {
- "type": "object"
- }
- },
- "required": [
- "conversationId",
- "subject",
- "status",
- "priority",
- "source",
- "lastMessageType",
- "lastActivityAt",
- "metadata"
- ]
- },
- "messages": {
- "type": "array",
- "items": {
- "type": "object",
- "properties": {
- "id": {
- "type": "string"
- },
- "conversationId": {
- "type": "string"
- },
- "userId": {
- "type": "string"
- },
- "teamId": {
- "type": "string"
- },
- "subject": {
- "type": "string"
- },
- "status": {
- "type": "string",
- "enum": [
- "open",
- "pending",
- "closed"
- ]
- },
- "priority": {
- "type": "string",
- "enum": [
- "low",
- "normal",
- "high",
- "urgent"
- ]
- },
- "source": {
- "type": "string",
- "enum": [
- "manual",
- "chat",
- "email",
- "api"
- ]
- },
- "messageType": {
- "type": "string",
- "enum": [
- "message",
- "internal-note",
- "status-change"
- ]
- },
- "body": {
- "type": "string"
- },
- "attachments": {
- "type": "array",
- "items": {
- "type": "object"
- }
- },
- "metadata": {
- "type": "object"
- },
- "createdAt": {
- "type": "string"
- },
- "sender": {
- "type": "object",
- "properties": {
- "type": {
- "type": "string",
- "enum": [
- "user",
- "agent",
- "system"
- ]
- },
- "id": {
- "type": "string"
- },
- "displayName": {
- "type": "string"
- },
- "primaryEmail": {
- "type": "string"
- }
- },
- "required": [
- "type"
- ]
- }
- },
- "required": [
- "id",
- "conversationId",
- "subject",
- "status",
- "priority",
- "source",
- "messageType",
- "attachments",
- "createdAt",
- "sender"
- ]
- }
- },
- "entryPoints": {
- "type": "array",
- "items": {
- "type": "object",
- "properties": {
- "id": {
- "type": "string"
- },
- "channelType": {
- "type": "string"
- },
- "adapterKey": {
- "type": "string"
- },
- "externalChannelId": {
- "type": "string"
- },
- "isEntryPoint": {
- "type": "boolean"
- },
- "metadata": {
- "type": "object"
- },
- "createdAt": {
- "type": "string"
- },
- "updatedAt": {
- "type": "string"
- }
- },
- "required": [
- "id",
- "channelType",
- "adapterKey",
- "isEntryPoint",
- "createdAt",
- "updatedAt"
- ]
- }
- }
- },
- "required": [
- "conversation",
- "messages",
- "entryPoints"
- ]
- }
- }
- }
- }
- }
- }
- },
"/auth/mfa/sign-in": {
"post": {
"summary": "MFA sign in",