From d6bc2ff343427667b01b301c4381f1356caec15f Mon Sep 17 00:00:00 2001 From: Sahil Chatiwala <46851548+sahil485@users.noreply.github.com> Date: Wed, 24 Sep 2025 16:27:50 -0400 Subject: [PATCH 1/4] feat: update fai openapi spec --- fern/apis/fai/openapi.json | 1184 ++++++++++++++++++++++++++++++++---- 1 file changed, 1050 insertions(+), 134 deletions(-) diff --git a/fern/apis/fai/openapi.json b/fern/apis/fai/openapi.json index 0843753f1..6b9819c3f 100644 --- a/fern/apis/fai/openapi.json +++ b/fern/apis/fai/openapi.json @@ -183,6 +183,125 @@ ] } }, + "/analytics/insights/generate_all": { + "post": { + "tags": [ + "Analytics" + ], + "summary": "Generate All Insights", + "description": "Generate insights for all domains with queries in the specified period.", + "operationId": "generate_all_insights", + "parameters": [ + { + "name": "start_date", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "type": "null" + } + ], + "description": "The start date of the period to generate insights for", + "title": "Start Date" + }, + "description": "The start date of the period to generate insights for" + }, + { + "name": "end_date", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "type": "null" + } + ], + "description": "The end date of the period to generate insights for", + "title": "End Date" + }, + "description": "The end date of the period to generate insights for" + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": {} + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "x-fern-audiences": [ + "internal" + ] + } + }, + "/analytics/insights/trigger_scheduled": { + "post": { + "tags": [ + "Analytics" + ], + "summary": "Trigger Scheduled Insights Generation", + "description": "Manually trigger the scheduled weekly insights generation job.", + "operationId": "trigger_scheduled_insights_generation", + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": {} + } + } + } + }, + "x-fern-audiences": [ + "internal" + ] + } + }, + "/analytics/scheduler/status": { + "get": { + "tags": [ + "Analytics" + ], + "summary": "Get Scheduler Status", + "description": "Get the status of the scheduler and its jobs.", + "operationId": "get_scheduler_status", + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": {} + } + } + } + }, + "x-fern-audiences": [ + "internal" + ] + } + }, "/chat/{domain}": { "post": { "tags": [ @@ -323,7 +442,74 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CreateDocumentResponse" + "type": "array", + "items": { + "$ref": "#/components/schemas/CreateDocumentResponse" + }, + "title": "Response Create Document Document Domain Create Post" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "x-fern-audiences": [ + "customers" + ] + } + }, + "/document/{domain}/batch-create": { + "post": { + "tags": [ + "Document" + ], + "summary": "Batch Create Document", + "operationId": "batch_create_document", + "parameters": [ + { + "name": "domain", + "in": "path", + "required": true, + "schema": { + "type": "string", + "title": "Domain" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CreateDocumentRequest" + }, + "title": "Body" + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CreateDocumentResponse" + }, + "title": "Response Batch Create Document Document Domain Batch Create Post" } } } @@ -407,12 +593,12 @@ "customers" ] }, - "delete": { + "get": { "tags": [ "Document" ], - "summary": "Delete Document By Id", - "operationId": "delete_document_by_id", + "summary": "Get Document By Id", + "operationId": "get_document_by_id", "parameters": [ { "name": "domain", @@ -439,7 +625,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/DeleteDocumentResponse" + "$ref": "#/components/schemas/GetDocumentResponse" } } } @@ -458,13 +644,15 @@ "x-fern-audiences": [ "customers" ] - }, - "get": { + } + }, + "/document/{domain}/delete": { + "delete": { "tags": [ "Document" ], - "summary": "Get Document By Id", - "operationId": "get_document_by_id", + "summary": "Delete Document By Id", + "operationId": "delete_document_by_id", "parameters": [ { "name": "domain", @@ -474,24 +662,84 @@ "type": "string", "title": "Domain" } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeleteDocumentRequest" + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeleteDocumentResponse" + } + } + } }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "x-fern-audiences": [ + "customers" + ] + } + }, + "/document/{domain}/batch-delete": { + "delete": { + "tags": [ + "Document" + ], + "summary": "Batch Delete Document", + "operationId": "batch_delete_document", + "parameters": [ { - "name": "document_id", + "name": "domain", "in": "path", "required": true, "schema": { "type": "string", - "title": "Document Id" + "title": "Domain" } } ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/DeleteDocumentRequest" + }, + "title": "Body" + } + } + } + }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/GetDocumentResponse" + "$ref": "#/components/schemas/DeleteDocumentResponse" } } } @@ -593,13 +841,13 @@ ] } }, - "/feedback/{domain}": { - "post": { + "/document/{domain}/delete-all": { + "delete": { "tags": [ - "Feedback" + "Document" ], - "summary": "Create Feedback", - "operationId": "create_feedback", + "summary": "Delete All Documents", + "operationId": "delete_all_documents", "parameters": [ { "name": "domain", @@ -611,23 +859,68 @@ } } ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CreateFeedbackRequest" - } - } - } - }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CreateFeedbackResponse" + "$ref": "#/components/schemas/DeleteDocumentResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "x-fern-audiences": [ + "customers" + ] + } + }, + "/feedback/{domain}": { + "post": { + "tags": [ + "Feedback" + ], + "summary": "Create Feedback", + "operationId": "create_feedback", + "parameters": [ + { + "name": "domain", + "in": "path", + "required": true, + "schema": { + "type": "string", + "title": "Domain" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateFeedbackRequest" + } + } + } + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateFeedbackResponse" } } } @@ -737,11 +1030,53 @@ "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ReferenceSnippet" - }, - "title": "Response Index Reference Md Github Domain Reference Md Index Post" + "$ref": "#/components/schemas/IndexResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "x-fern-audiences": [ + "customers" + ] + } + }, + "/github/{domain}/indexed": { + "get": { + "tags": [ + "Github" + ], + "summary": "Check Code Index Status", + "description": "Check if the domain has a non-empty code index in both database and turbopuffer.", + "operationId": "check_code_index_status", + "parameters": [ + { + "name": "domain", + "in": "path", + "required": true, + "schema": { + "type": "string", + "title": "Domain" + } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CodeIndexStatusResponse" } } } @@ -1351,15 +1686,26 @@ ], "summary": "Create Query", "operationId": "create_query", + "parameters": [ + { + "name": "domain", + "in": "query", + "required": true, + "schema": { + "type": "string", + "title": "Domain" + } + } + ], "requestBody": { + "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Query" } } - }, - "required": true + } }, "responses": { "200": { @@ -1442,79 +1788,495 @@ "description": "The number of queries per page" }, { - "name": "cutoff_time", + "name": "cutoff_time", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "type": "null" + } + ], + "description": "Only return queries after this time", + "title": "Cutoff Time" + }, + "description": "Only return queries after this time" + }, + { + "name": "include_assistant", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "description": "Whether to include assistant responses in the results", + "title": "Include Assistant" + }, + "description": "Whether to include assistant responses in the results" + }, + { + "name": "start_date", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "type": "null" + } + ], + "description": "The start date of the period to retrieve analytics for", + "title": "Start Date" + }, + "description": "The start date of the period to retrieve analytics for" + }, + { + "name": "end_date", + "in": "query", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "type": "null" + } + ], + "description": "The end date of the period to retrieve analytics for", + "title": "End Date" + }, + "description": "The end date of the period to retrieve analytics for" + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GetQueriesResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "x-fern-audiences": [ + "internal" + ] + } + }, + "/settings/ask-ai": { + "get": { + "tags": [ + "Settings" + ], + "summary": "Get Settings", + "description": "Get settings for a domain and organization.", + "operationId": "get_settings", + "parameters": [ + { + "name": "domain", + "in": "query", + "required": true, + "schema": { + "type": "string", + "title": "Domain" + } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/GetSettingsResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "x-fern-audiences": [ + "internal" + ] + } + }, + "/settings/ask-ai/toggle": { + "post": { + "tags": [ + "Settings" + ], + "summary": "Toggle Ask Ai", + "description": "Toggle Ask AI setting and return job_id for tracking.", + "operationId": "toggle_ask_ai", + "parameters": [ + { + "name": "domain", + "in": "query", + "required": true, + "schema": { + "type": "string", + "title": "Domain" + } + }, + { + "name": "org_name", + "in": "query", + "required": true, + "schema": { + "type": "string", + "title": "Org Name" + } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ToggleAskAiResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "x-fern-audiences": [ + "internal" + ] + } + }, + "/settings/ask-ai/reindex": { + "post": { + "tags": [ + "Settings" + ], + "summary": "Reindex Ask Ai", + "description": "Manually trigger reindex for an already enabled Ask AI setup.", + "operationId": "reindex_ask_ai", + "parameters": [ + { + "name": "domain", + "in": "query", + "required": true, + "schema": { + "type": "string", + "title": "Domain" + } + }, + { + "name": "org_name", + "in": "query", + "required": true, + "schema": { + "type": "string", + "title": "Org Name" + } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ToggleAskAiResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "x-fern-audiences": [ + "internal" + ] + } + }, + "/settings/ask-ai/toggle/status": { + "get": { + "tags": [ + "Settings" + ], + "summary": "Get Toggle Status", + "description": "Get the status of Ask AI toggle operation.", + "operationId": "get_toggle_status", + "parameters": [ + { + "name": "domain", + "in": "query", + "required": true, + "schema": { + "type": "string", + "title": "Domain" + } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ToggleStatusResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "x-fern-audiences": [ + "internal" + ] + } + }, + "/slack/integrations": { + "post": { + "tags": [ + "Slack" + ], + "summary": "Create Slack Integration", + "operationId": "create_slack_integration", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateSlackIntegration" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SlackIntegrationResponse" + } + } + } + }, + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + } + } + }, + "x-fern-audiences": [ + "internal" + ] + } + }, + "/slack/events": { + "post": { + "tags": [ + "Slack" + ], + "summary": "Handle Slack Events", + "operationId": "handle_slack_events", + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": {} + } + } + } + }, + "x-fern-audiences": [ + "internal" + ] + } + }, + "/slack/slash-commands": { + "post": { + "tags": [ + "Slack" + ], + "summary": "Handle Slack Slash Commands", + "operationId": "handle_slack_slash_commands", + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": {} + } + } + } + }, + "x-fern-audiences": [ + "internal" + ] + } + }, + "/slack/interactions": { + "post": { + "tags": [ + "Slack" + ], + "summary": "Handle Slack Interactions", + "operationId": "handle_slack_interactions", + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": {} + } + } + } + }, + "x-fern-audiences": [ + "internal" + ] + } + }, + "/slack/oauth/callback": { + "get": { + "tags": [ + "Slack" + ], + "summary": "Handle Slack Oauth Callback", + "operationId": "handle_slack_oauth_callback", + "parameters": [ + { + "name": "code", "in": "query", - "required": false, + "required": true, "schema": { - "anyOf": [ - { - "type": "string", - "format": "date-time" - }, - { - "type": "null" - } - ], - "description": "Only return queries after this time", - "title": "Cutoff Time" - }, - "description": "Only return queries after this time" + "type": "string", + "title": "Code" + } }, { - "name": "include_assistant", + "name": "state", "in": "query", "required": false, "schema": { "anyOf": [ { - "type": "boolean" + "type": "string" }, { "type": "null" } ], - "description": "Whether to include assistant responses in the results", - "title": "Include Assistant" - }, - "description": "Whether to include assistant responses in the results" + "title": "State" + } + } + ], + "responses": { + "200": { + "description": "Successful Response", + "content": { + "application/json": { + "schema": {} + } + } }, - { - "name": "start_date", - "in": "query", - "required": false, - "schema": { - "anyOf": [ - { - "type": "string", - "format": "date-time" - }, - { - "type": "null" + "422": { + "description": "Validation Error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" } - ], - "description": "The start date of the period to retrieve analytics for", - "title": "Start Date" - }, - "description": "The start date of the period to retrieve analytics for" - }, + } + } + } + }, + "x-fern-audiences": [ + "internal" + ] + } + }, + "/slack/get-install": { + "get": { + "tags": [ + "Slack" + ], + "summary": "Get Slack Install Link", + "operationId": "get_slack_install_link", + "parameters": [ { - "name": "end_date", + "name": "domain", "in": "query", - "required": false, + "required": true, "schema": { - "anyOf": [ - { - "type": "string", - "format": "date-time" - }, - { - "type": "null" - } - ], - "description": "The end date of the period to retrieve analytics for", - "title": "End Date" - }, - "description": "The end date of the period to retrieve analytics for" + "type": "string", + "title": "Domain" + } } ], "responses": { @@ -1522,9 +2284,7 @@ "description": "Successful Response", "content": { "application/json": { - "schema": { - "$ref": "#/components/schemas/GetQueriesResponse" - } + "schema": {} } } }, @@ -1569,6 +2329,20 @@ ], "title": "ChatMessage" }, + "CodeIndexStatusResponse": { + "properties": { + "exists": { + "type": "boolean", + "title": "Exists", + "description": "Whether the domain has a non-empty code index" + } + }, + "type": "object", + "required": [ + "exists" + ], + "title": "CodeIndexStatusResponse" + }, "Conversation": { "properties": { "conversation_id": { @@ -1892,12 +2666,39 @@ ], "title": "CreateQueryResponse" }, + "CreateSlackIntegration": { + "properties": { + "domain": { + "type": "string", + "title": "Domain" + } + }, + "type": "object", + "required": [ + "domain" + ], + "title": "CreateSlackIntegration" + }, + "DeleteDocumentRequest": { + "properties": { + "document_id": { + "type": "string", + "title": "Document Id", + "description": "The unique identifier of the document to delete" + } + }, + "type": "object", + "required": [ + "document_id" + ], + "title": "DeleteDocumentRequest" + }, "DeleteDocumentResponse": { "properties": { "success": { "type": "boolean", "title": "Success", - "description": "Whether the document was successfully deleted" + "description": "Whether the documents was successfully deleted" } }, "type": "object", @@ -2202,7 +3003,7 @@ "properties": { "insights": { "items": { - "$ref": "#/components/schemas/InsightWithCount" + "$ref": "#/components/schemas/InsightWithMetadata" }, "type": "array", "title": "Insights", @@ -2299,6 +3100,32 @@ ], "title": "GetQueriesResponse" }, + "GetSettingsResponse": { + "properties": { + "ask_ai_enabled": { + "type": "boolean", + "title": "Ask Ai Enabled", + "description": "Whether Ask AI is enabled" + }, + "job_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Job Id", + "description": "Active job ID if reindexing is in progress" + } + }, + "type": "object", + "required": [ + "ask_ai_enabled" + ], + "title": "GetSettingsResponse" + }, "GitHubFileInfoRequest": { "properties": { "url": { @@ -2414,31 +3241,63 @@ ], "title": "HistogramAnalyticsBar" }, - "InsightWithCount": { + "IndexResponse": { + "properties": { + "success": { + "type": "boolean", + "title": "Success", + "description": "Whether the index operation was successful" + } + }, + "type": "object", + "required": [ + "success" + ], + "title": "IndexResponse" + }, + "InsightExample": { + "properties": { + "query": { + "type": "string", + "title": "Query" + }, + "conversationId": { + "type": "string", + "title": "Conversationid" + } + }, + "type": "object", + "required": [ + "query", + "conversationId" + ], + "title": "InsightExample" + }, + "InsightWithMetadata": { "properties": { "insightText": { "type": "string", "title": "Insighttext" }, + "numberOfQueries": { + "type": "integer", + "title": "Numberofqueries" + }, "examples": { "items": { - "type": "string" + "$ref": "#/components/schemas/InsightExample" }, "type": "array", "title": "Examples" - }, - "numberOfQueries": { - "type": "integer", - "title": "Numberofqueries" } }, "type": "object", "required": [ "insightText", - "examples", - "numberOfQueries" + "numberOfQueries", + "examples" ], - "title": "InsightWithCount" + "title": "InsightWithMetadata" }, "JobStatusResponse": { "properties": { @@ -2683,26 +3542,17 @@ ], "title": "ReconstructIndexResponse" }, - "ReferenceSnippet": { + "SlackIntegrationResponse": { "properties": { - "method_header": { + "integration_id": { "type": "string", - "title": "Method Header", - "description": "The header of the method or function, e.g., 'def foo(bar):'" + "title": "Integration Id" }, - "language": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Language", - "description": "The language of the code snippet" + "domain": { + "type": "string", + "title": "Domain" }, - "description": { + "slack_team_id": { "anyOf": [ { "type": "string" @@ -2711,10 +3561,9 @@ "type": "null" } ], - "title": "Description", - "description": "A description of what the method does" + "title": "Slack Team Id" }, - "usage": { + "slack_team_name": { "anyOf": [ { "type": "string" @@ -2723,30 +3572,33 @@ "type": "null" } ], - "title": "Usage", - "description": "A code snippet showing how to use the method" + "title": "Slack Team Name" + }, + "created_at": { + "type": "string", + "format": "date-time", + "title": "Created At" }, - "parameters": { + "installed_at": { "anyOf": [ { - "items": { - "type": "string" - }, - "type": "array" + "type": "string", + "format": "date-time" }, { "type": "null" } ], - "title": "Parameters", - "description": "A list of parameter names for the method" + "title": "Installed At" } }, "type": "object", "required": [ - "method_header" + "integration_id", + "domain", + "created_at" ], - "title": "ReferenceSnippet" + "title": "SlackIntegrationResponse" }, "SyncIndexRequest": { "properties": { @@ -2776,6 +3628,70 @@ ], "title": "SyncIndexResponse" }, + "ToggleAskAiResponse": { + "properties": { + "success": { + "type": "boolean", + "title": "Success", + "description": "Whether the toggle operation was successful" + }, + "job_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Job Id", + "description": "Job ID for tracking reindex progress (only when enabling Ask AI)" + }, + "ask_ai_enabled": { + "type": "boolean", + "title": "Ask Ai Enabled", + "description": "Current state of Ask AI (true if enabled, false if disabled)" + } + }, + "type": "object", + "required": [ + "success", + "ask_ai_enabled" + ], + "title": "ToggleAskAiResponse" + }, + "ToggleStatusResponse": { + "properties": { + "status": { + "type": "string", + "title": "Status", + "description": "Current job status (running, completed, failed, etc.)" + }, + "ask_ai_enabled": { + "type": "boolean", + "title": "Ask Ai Enabled", + "description": "Current state of Ask AI" + }, + "last_reindex_time": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Last Reindex Time", + "description": "ISO timestamp of last reindex" + } + }, + "type": "object", + "required": [ + "status", + "ask_ai_enabled" + ], + "title": "ToggleStatusResponse" + }, "UpdateDocumentRequest": { "properties": { "document": { @@ -2989,4 +3905,4 @@ "x-fern-server-name": "Local" } ] -} \ No newline at end of file +} From 55b5c8bb160a2fcf1b0e505976a48939f0e3976b Mon Sep 17 00:00:00 2001 From: Sahil Date: Wed, 24 Sep 2025 17:06:21 -0400 Subject: [PATCH 2/4] add backticks for optional nullable --- fern/products/cli-api-reference/cli-changelog/2025-09-22.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fern/products/cli-api-reference/cli-changelog/2025-09-22.mdx b/fern/products/cli-api-reference/cli-changelog/2025-09-22.mdx index 614e22d32..57a099503 100644 --- a/fern/products/cli-api-reference/cli-changelog/2025-09-22.mdx +++ b/fern/products/cli-api-reference/cli-changelog/2025-09-22.mdx @@ -7,7 +7,7 @@ ## 0.78.4 -**`(fix):`** Collapse any combination of optional and nullable to optional>. +**`(fix):`** Collapse any combination of optional and nullable to `optional>`. ## 0.78.3 **`(chore):`** Support IR v59 in the Rust SDK generator. From 6ce7f93eb2c0f20bfa7b9e8fe08c0803573f1f61 Mon Sep 17 00:00:00 2001 From: Sahil Date: Wed, 24 Sep 2025 17:24:57 -0400 Subject: [PATCH 3/4] add bearer auth --- fern/apis/fai/openapi.json | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/fern/apis/fai/openapi.json b/fern/apis/fai/openapi.json index 6b9819c3f..6ec6f2611 100644 --- a/fern/apis/fai/openapi.json +++ b/fern/apis/fai/openapi.json @@ -354,6 +354,11 @@ }, "x-fern-audiences": [ "customers" + ], + "security": [ + { + "bearerAuth": [] + } ] } }, @@ -3889,6 +3894,13 @@ ], "title": "ValidationError" } + }, + "securitySchemes": { + "bearerAuth": { + "type": "http", + "scheme": "bearer", + "bearerFormat": "JWT" + } } }, "servers": [ @@ -3905,4 +3917,4 @@ "x-fern-server-name": "Local" } ] -} +} \ No newline at end of file From c123ec552094a9e010389aed08405e7665277219 Mon Sep 17 00:00:00 2001 From: Sahil Date: Wed, 24 Sep 2025 17:50:12 -0400 Subject: [PATCH 4/4] update openapi with auth --- fern/apis/fai/openapi.json | 149 ++++++++++++++++++++++++++++++++++++- 1 file changed, 146 insertions(+), 3 deletions(-) diff --git a/fern/apis/fai/openapi.json b/fern/apis/fai/openapi.json index 6ec6f2611..eea90114c 100644 --- a/fern/apis/fai/openapi.json +++ b/fern/apis/fai/openapi.json @@ -97,6 +97,11 @@ }, "x-fern-audiences": [ "internal" + ], + "security": [ + { + "bearerAuth": [] + } ] } }, @@ -180,6 +185,11 @@ }, "x-fern-audiences": [ "internal" + ], + "security": [ + { + "bearerAuth": [] + } ] } }, @@ -410,7 +420,15 @@ } } } - } + }, + "x-fern-audiences": [ + "internal" + ], + "security": [ + { + "bearerAuth": [] + } + ] } }, "/document/{domain}/create": { @@ -469,6 +487,11 @@ }, "x-fern-audiences": [ "customers" + ], + "security": [ + { + "bearerAuth": [] + } ] } }, @@ -532,6 +555,11 @@ }, "x-fern-audiences": [ "customers" + ], + "security": [ + { + "bearerAuth": [] + } ] } }, @@ -596,6 +624,11 @@ }, "x-fern-audiences": [ "customers" + ], + "security": [ + { + "bearerAuth": [] + } ] }, "get": { @@ -648,6 +681,11 @@ }, "x-fern-audiences": [ "customers" + ], + "security": [ + { + "bearerAuth": [] + } ] } }, @@ -703,6 +741,11 @@ }, "x-fern-audiences": [ "customers" + ], + "security": [ + { + "bearerAuth": [] + } ] } }, @@ -762,6 +805,11 @@ }, "x-fern-audiences": [ "customers" + ], + "security": [ + { + "bearerAuth": [] + } ] } }, @@ -843,6 +891,11 @@ }, "x-fern-audiences": [ "customers" + ], + "security": [ + { + "bearerAuth": [] + } ] } }, @@ -888,6 +941,11 @@ }, "x-fern-audiences": [ "customers" + ], + "security": [ + { + "bearerAuth": [] + } ] } }, @@ -997,6 +1055,11 @@ }, "x-fern-audiences": [ "internal" + ], + "security": [ + { + "bearerAuth": [] + } ] } }, @@ -1052,7 +1115,12 @@ } }, "x-fern-audiences": [ - "customers" + "internal" + ], + "security": [ + { + "bearerAuth": [] + } ] } }, @@ -1098,7 +1166,12 @@ } }, "x-fern-audiences": [ - "customers" + "internal" + ], + "security": [ + { + "bearerAuth": [] + } ] } }, @@ -1154,6 +1227,11 @@ }, "x-fern-audiences": [ "customers" + ], + "security": [ + { + "bearerAuth": [] + } ] } }, @@ -1218,6 +1296,11 @@ }, "x-fern-audiences": [ "customers" + ], + "security": [ + { + "bearerAuth": [] + } ] }, "delete": { @@ -1270,6 +1353,11 @@ }, "x-fern-audiences": [ "customers" + ], + "security": [ + { + "bearerAuth": [] + } ] }, "get": { @@ -1322,6 +1410,11 @@ }, "x-fern-audiences": [ "customers" + ], + "security": [ + { + "bearerAuth": [] + } ] } }, @@ -1403,6 +1496,11 @@ }, "x-fern-audiences": [ "customers" + ], + "security": [ + { + "bearerAuth": [] + } ] } }, @@ -1471,6 +1569,11 @@ }, "x-fern-audiences": [ "internal" + ], + "security": [ + { + "bearerAuth": [] + } ] } }, @@ -1526,6 +1629,11 @@ }, "x-fern-audiences": [ "internal" + ], + "security": [ + { + "bearerAuth": [] + } ] } }, @@ -1626,6 +1734,11 @@ }, "x-fern-audiences": [ "internal" + ], + "security": [ + { + "bearerAuth": [] + } ] } }, @@ -1681,6 +1794,11 @@ }, "x-fern-audiences": [ "internal" + ], + "security": [ + { + "bearerAuth": [] + } ] } }, @@ -1736,6 +1854,11 @@ }, "x-fern-audiences": [ "internal" + ], + "security": [ + { + "bearerAuth": [] + } ] } }, @@ -1892,6 +2015,11 @@ }, "x-fern-audiences": [ "internal" + ], + "security": [ + { + "bearerAuth": [] + } ] } }, @@ -1993,6 +2121,11 @@ }, "x-fern-audiences": [ "internal" + ], + "security": [ + { + "bearerAuth": [] + } ] } }, @@ -2048,6 +2181,11 @@ }, "x-fern-audiences": [ "internal" + ], + "security": [ + { + "bearerAuth": [] + } ] } }, @@ -2094,6 +2232,11 @@ }, "x-fern-audiences": [ "internal" + ], + "security": [ + { + "bearerAuth": [] + } ] } },