Skip to content

API and SDK reference

Python, Java and TypeScript expose the same canonical headless API. The table records concrete SDK methods; it does not count browser-only authentication or retained domain routes outside this contract.

This canonical contract contains 248 operations. Resource operations require the caller's current membership, permissions and resource scope. Bearer credentials also enforce their saved expiry and bounds. Authorized-application management requires a verified interactive user session; personal tokens and application credentials cannot manage authorizations. Read about authorized applications.

Download the operation manifest and complete wire schemas. The maintained generator checks source mappings and schemas without starting the backend.

Browse API areas, wire models and the SDK runtime reference for parameters, constraints and connection ownership.

TypeScript communications methods use the separately loaded createCommunicationsApi factory from @fireflyframework/koinon-sdk/communications. Pass the same KoinonTransport used to construct KoinonClient; the communications.* names below refer to the returned API. This keeps email and notification management out of applications that only use knowledge or chat. Availability observations similarly use createAvailabilityApi from @fireflyframework/koinon-sdk/availability; availability.* refers to its returned API. Platform observations use createPlatformHealthApi from @fireflyframework/koinon-sdk/platform-health; platformHealth.* refers to its returned API. Python exposes those methods on KoinonClient; Java exposes the corresponding typed API groups.

API operation Python client TypeScript client Java client Response
POST /api/v1/tenants/{tenant_id}/activity/personal personal_activity activity.personal client.activity.personal ActivitySummary
POST /api/v1/tenants/{tenant_id}/activity/administration administrative_activity activity.administrative client.activity.administrative ActivitySummary
GET /api/v1/tenants/{tenant_id}/audit audit audit.list client.audit.list Page[AuditEvent]
GET /api/v1/tenants/{tenant_id}/catalog catalog catalog.list client.catalog.list Page[CatalogEntry]
POST /api/v1/tenants/{tenant_id}/catalog create catalog.create client.catalog.create CatalogEntry
GET /api/v1/tenants/{tenant_id}/catalog/{entry_id} get catalog.get client.catalog.get CatalogEntry
PATCH /api/v1/tenants/{tenant_id}/catalog/{entry_id} update catalog.update client.catalog.update CatalogEntry
POST /api/v1/tenants/{tenant_id}/catalog/{entry_id}/archive archive catalog.archive client.catalog.archive CatalogEntry
POST /api/v1/tenants/{tenant_id}/catalog/{entry_id}/restore restore catalog.restore client.catalog.restore CatalogEntry
DELETE /api/v1/tenants/{tenant_id}/catalog/{entry_id} delete catalog.delete client.catalog.delete void
POST /api/v1/tenants/{tenant_id}/catalog/{entry_id}/move move catalog.move client.catalog.move CatalogEntry
GET /api/v1/context context context client.platform.context ContextResponse
GET /api/v1/tenants/{tenant_id}/jobs jobs jobs.list client.jobs.list Page[Job]
GET /api/v1/tenants/{tenant_id}/jobs/{job_id} job jobs.get client.jobs.get Job
POST /api/v1/tenants/{tenant_id}/jobs/{job_id}/cancel cancel_job jobs.cancel client.jobs.cancel Job
GET /api/v1/tenants/{tenant_id}/members members members.list client.members.list Page[Membership]
POST /api/v1/tenants/{tenant_id}/members add_member members.add client.members.add Membership
PATCH /api/v1/tenants/{tenant_id}/members/{member_id} update_member members.update client.members.update Membership
DELETE /api/v1/tenants/{tenant_id}/members/{member_id} remove_member members.remove client.members.remove void
GET /api/v1/tenants/{tenant_id}/invitations invitations invitations.list client.invitations.list Page[Invitation]
POST /api/v1/tenants/{tenant_id}/invitations create_invitation invitations.create client.invitations.create InvitationCreated
DELETE /api/v1/tenants/{tenant_id}/invitations/{invitation_id} revoke_invitation invitations.revoke client.invitations.revoke void
POST /api/v1/invitations/inspect inspect_invitation invitations.inspect client.invitationAccess.inspect InvitationPreview
POST /api/v1/invitations/redeem redeem_invitation invitations.redeem client.invitationAccess.redeem Membership
GET /api/v1/tenants/{tenant_id}/agents agents agents.list client.agents.list Page[AgentConfiguration]
POST /api/v1/tenants/{tenant_id}/agents create_agent agents.create client.agents.create AgentConfiguration
PATCH /api/v1/tenants/{tenant_id}/agents/{agent_id} update_agent agents.update client.agents.update AgentConfiguration
POST /api/v1/tenants/{tenant_id}/agents/{agent_id}/validate validate_agent agents.validate client.agents.validate AgentConfiguration
GET /api/v1/tenants/{tenant_id}/chat/threads threads chat.threads client.chat.threads Page[ChatThread]
POST /api/v1/tenants/{tenant_id}/chat/threads create_thread chat.create client.chat.createThread ChatThread
GET /api/v1/tenants/{tenant_id}/chat/threads/{thread_id}/messages messages chat.messages client.chat.messages Page[ChatMessage]
POST /api/v1/tenants/{tenant_id}/chat/threads/{thread_id}/runs submit_run chat.submit client.chat.submit ChatRun
POST /api/v1/tenants/{tenant_id}/chat/runs/{run_id}/cancel cancel_run chat.cancel client.chat.cancel ChatRun
POST /api/v1/tenants/{tenant_id}/chat/runs/{run_id}/retry retry_run chat.retry client.chat.retry ChatRun
GET /api/v1/tenants/{tenant_id}/chat/runs/{run_id}/events events chat.events client.chat.events StreamEvent
GET /api/v1/tenants/{tenant_id}/chat/runs/{run_id}/results/{result_id} result chat.result client.chat.result EvidenceResult
GET /api/v1/tenants/{tenant_id}/chat/runs/{run_id}/activity run_activities chat.activities client.chat.activities Page[ToolActivity]
GET /api/v1/tenants/{tenant_id}/chat/runs/{run_id}/audit run_audit chat.audit client.chat.audit AnswerAudit
GET /api/v1/tenants/{tenant_id}/chat/folders folders chat.folders.list client.chatFolders.list Page[ChatFolder]
POST /api/v1/tenants/{tenant_id}/chat/folders create_folder chat.folders.create client.chatFolders.create ChatFolder
GET /api/v1/tenants/{tenant_id}/chat/folders/{folder_id} folder chat.folders.get client.chatFolders.get ChatFolder
PATCH /api/v1/tenants/{tenant_id}/chat/folders/{folder_id} update_folder chat.folders.update client.chatFolders.update ChatFolder
DELETE /api/v1/tenants/{tenant_id}/chat/folders/{folder_id} delete_folder chat.folders.delete client.chatFolders.delete void
GET /api/v1/tenants/{tenant_id}/chat/threads/{thread_id} thread chat.get client.chat.get ChatThread
PATCH /api/v1/tenants/{tenant_id}/chat/threads/{thread_id} update_thread chat.update client.chat.update ChatThread
POST /api/v1/tenants/{tenant_id}/chat/threads/{thread_id}/title-suggestion suggest_title chat.suggestTitle client.chat.suggestTitle TitleSuggestion
DELETE /api/v1/tenants/{tenant_id}/chat/threads/{thread_id} delete_thread chat.delete client.chat.delete void
GET /api/v1/tenants/{tenant_id}/chat/runs/{run_id}/proposals/{proposal_id} proposal chat.proposals.get client.chatProposals.get CatalogProposal
POST /api/v1/tenants/{tenant_id}/chat/runs/{run_id}/proposals/{proposal_id}/confirm confirm_proposal chat.proposals.confirm client.chatProposals.confirm CatalogProposal
POST /api/v1/tenants/{tenant_id}/chat/runs/{run_id}/proposals/{proposal_id}/cancel cancel_proposal chat.proposals.cancel client.chatProposals.cancel CatalogProposal
GET /api/v1/tenants/{tenant_id}/configuration configuration configuration.get client.configuration.get Configuration
POST /api/v1/tenants/{tenant_id}/providers create_provider providers.create client.providers.create ModelProvider
PUT /api/v1/tenants/{tenant_id}/providers/{provider_id} update_provider providers.update client.providers.update ModelProvider
POST /api/v1/tenants/{tenant_id}/providers/{provider_id}/validate validate_provider providers.validate client.providers.validate ValidationResult
GET /api/v1/authorized-applications authorized_applications authorizedApplications.list client.authorizedApplications.list Page[AuthorizedApplication]
GET /api/v1/authorized-applications/{application_id} authorized_application authorizedApplications.get client.authorizedApplications.get AuthorizedApplication
DELETE /api/v1/authorized-applications/{application_id} revoke_authorized_application authorizedApplications.revoke client.authorizedApplications.revoke void
GET /api/v1/tenants/{tenant_id}/communications/recipient-providers communication_providers communications.recipients.providers client.communications.recipientProviders RecipientProviderPage
GET /api/v1/tenants/{tenant_id}/communications/recipients communication_recipients communications.recipients.list client.communications.recipients DirectoryRecipientPage
POST /api/v1/tenants/{tenant_id}/invitations/email/preview preview_email_invitation communications.emailInvitations.preview client.communications.previewInvitation EmailPreview
POST /api/v1/tenants/{tenant_id}/invitations/email create_email_invitation communications.emailInvitations.create client.communications.createInvitation EmailInvitation
GET /api/v1/tenants/{tenant_id}/invitations/email email_invitations communications.emailInvitations.list client.communications.invitations EmailInvitationPage
DELETE /api/v1/tenants/{tenant_id}/invitations/email/{invitation_id} revoke_email_invitation communications.emailInvitations.revoke client.communications.revokeInvitation void
POST /api/v1/tenants/{tenant_id}/invitations/email/{invitation_id}/resend resend_email_invitation communications.emailInvitations.resend client.communications.resendInvitation EmailInvitation
GET /api/v1/invitations/email/{invitation_id} email_invitation communications.emailInvitations.review client.emailInvitations.review InvitationReview
POST /api/v1/invitations/email/{invitation_id}/accept accept_email_invitation communications.emailInvitations.accept client.emailInvitations.accept Membership
POST /api/v1/invitations/email/{invitation_id}/decline decline_email_invitation communications.emailInvitations.decline client.emailInvitations.decline InvitationReview
GET /api/v1/tenants/{tenant_id}/communications/capabilities communications_capabilities communications.administration.capabilities client.communications.capabilities CommunicationCapabilities
GET /api/v1/tenants/{tenant_id}/communications/policy communications_policy communications.administration.policy client.communications.policy CommunicationPolicy
PATCH /api/v1/tenants/{tenant_id}/communications/policy update_communications_policy communications.administration.updatePolicy client.communications.updatePolicy CommunicationPolicy
GET /api/v1/tenants/{tenant_id}/communications/deliveries communication_deliveries communications.administration.deliveries client.communications.deliveries DeliveryPage
GET /api/v1/tenants/{tenant_id}/communications/deliveries/{delivery_id} communication_delivery communications.administration.delivery client.communications.delivery DeliveryRecord
POST /api/v1/tenants/{tenant_id}/communications/deliveries/{delivery_id}/retry retry_communication_delivery communications.administration.retry client.communications.retryDelivery DeliveryRecord
GET /api/v1/notifications notifications communications.notifications.list client.notifications.list OwnNotificationPage
GET /api/v1/notifications/unread-count notification_unread_count communications.notifications.unreadCount client.notifications.unreadCount NotificationUnreadCount
POST /api/v1/notifications/{notification_id}/read read_notification communications.notifications.markRead client.notifications.markRead OwnNotification
GET /api/v1/notifications/preferences notification_preferences communications.notifications.preferences client.notifications.preferences NotificationPreferences
PATCH /api/v1/notifications/preferences update_notification_preferences communications.notifications.updatePreferences client.notifications.updatePreferences NotificationPreferences
POST /api/v1/notifications/preferences/preview preview_notification_schedule communications.notifications.previewPreferences client.notifications.previewSchedule DigestSchedulePreview
POST /api/v1/notifications/preferences/email-preview preview_activity_email communications.notifications.previewEmail client.notifications.previewEmail EmailPreview
GET /api/v1/tenants/{tenant_id}/communications/deliveries/{delivery_id}/recovery communication_delivery_recovery communications.administration.recovery client.communications.recovery DeliveryRecoveryOptions
GET /api/v1/tenants/{tenant_id}/communications/deliveries/{delivery_id}/observations communication_delivery_observations communications.administration.observations client.communications.observations DeliveryObservationPage
POST /api/v1/tenants/{tenant_id}/communications/deliveries/{delivery_id}/observations inspect_communication_delivery communications.administration.inspectDelivery client.communications.inspectDelivery DeliveryOperationObservation
POST /api/v1/tenants/{tenant_id}/communications/deliveries/{delivery_id}/welcome-recovery recover_welcome_delivery communications.administration.recoverWelcome client.communications.recoverWelcome WelcomeRecoveryAcknowledgement
GET /api/v1/tenants/{tenant_id}/identity/providers identity_providers identity.list client.identity.list IdentityProviderPage
POST /api/v1/tenants/{tenant_id}/identity/providers create_identity_provider identity.create client.identity.create IdentityProvider
GET /api/v1/tenants/{tenant_id}/identity/providers/{provider_id} identity_provider identity.get client.identity.get IdentityProvider
PATCH /api/v1/tenants/{tenant_id}/identity/providers/{provider_id} update_identity_provider identity.update client.identity.update IdentityProvider
POST /api/v1/tenants/{tenant_id}/identity/providers/{provider_id}/test test_identity_provider identity.test client.identity.test IdentityValidation
GET /api/v1/tenants/{tenant_id}/identity/providers/{provider_id}/tests/{validation_id} identity_test_status identity.testStatus client.identity.testStatus IdentityValidation
GET /api/v1/tenants/{tenant_id}/identity/providers/{provider_id}/groups identity_groups identity.groups client.identity.groups IdentityGroupPage
GET /api/v1/tenants/{tenant_id}/identity/providers/{provider_id}/mappings identity_mappings identity.mappings client.identity.mappings IdentityMappingPage
POST /api/v1/tenants/{tenant_id}/identity/providers/{provider_id}/mappings create_identity_mapping identity.createMapping client.identity.createMapping IdentityMapping
PATCH /api/v1/tenants/{tenant_id}/identity/providers/{provider_id}/mappings/{mapping_id} update_identity_mapping identity.updateMapping client.identity.updateMapping IdentityMapping
DELETE /api/v1/tenants/{tenant_id}/identity/providers/{provider_id}/mappings/{mapping_id} remove_identity_mapping identity.removeMapping client.identity.removeMapping void
POST /api/v1/tenants/{tenant_id}/identity/providers/{provider_id}/activate activate_identity_provider identity.activate client.identity.activate IdentityProvider
POST /api/v1/tenants/{tenant_id}/identity/providers/{provider_id}/disable disable_identity_provider identity.disable client.identity.disable IdentityProvider
GET /api/v1/tenants/{tenant_id}/organization/people/me/presentation organization_presentation corporateProfiles.presentation client.corporateProfiles.presentation OrganizationPresentation
PATCH /api/v1/tenants/{tenant_id}/organization/people/me/presentation update_organization_presentation corporateProfiles.updatePresentation client.corporateProfiles.updatePresentation OrganizationPresentation
POST /api/v1/tenants/{tenant_id}/organization/people/me/profile-refresh refresh_organization_profile corporateProfiles.refreshSelf client.corporateProfiles.refreshSelf CorporateProfileRefresh
POST /api/v1/tenants/{tenant_id}/organization/people/{person_id}/profile-refresh refresh_organization_person_profile corporateProfiles.refreshPerson client.corporateProfiles.refreshPerson CorporateProfileRefresh
POST /api/v1/tenants/{tenant_id}/evidence/conversations conversation_evidence evidence.conversation client.evidence.conversation EvidenceManifest
POST /api/v1/tenants/{tenant_id}/exports/reviews review_export exports.review client.exports.review ExportReview
POST /api/v1/tenants/{tenant_id}/exports create_export exports.create client.exports.create Export
GET /api/v1/tenants/{tenant_id}/exports exports exports.list client.exports.list ExportPage
GET /api/v1/tenants/{tenant_id}/exports/{export_id} export exports.get client.exports.get Export
GET /api/v1/tenants/{tenant_id}/exports/{export_id}/download export_download exports.download client.exports.download BinaryDownload
DELETE /api/v1/tenants/{tenant_id}/exports/{export_id} cancel_export exports.cancel client.exports.cancel void
GET /api/v1/tenants/{tenant_id}/chat/threads/{thread_id}/attachments/capabilities attachment_capabilities chat.attachments.capabilities client.chatAttachments.capabilities AttachmentCapabilities
POST /api/v1/tenants/{tenant_id}/chat/threads/{thread_id}/attachments upload_attachment chat.attachments.upload client.chatAttachments.upload AttachmentView
GET /api/v1/tenants/{tenant_id}/chat/threads/{thread_id}/attachments attachments chat.attachments.list client.chatAttachments.list AttachmentPage
GET /api/v1/tenants/{tenant_id}/chat/threads/{thread_id}/attachments/{attachment_id} attachment chat.attachments.get client.chatAttachments.get AttachmentView
GET /api/v1/tenants/{tenant_id}/chat/threads/{thread_id}/attachments/{attachment_id}/original attachment_original chat.attachments.original client.chatAttachments.original BinaryDownload
GET /api/v1/tenants/{tenant_id}/chat/threads/{thread_id}/attachments/{attachment_id}/chunks attachment_chunks chat.attachments.chunks client.chatAttachments.chunks PrivateChunkPage
POST /api/v1/tenants/{tenant_id}/chat/threads/{thread_id}/attachments/{attachment_id}/cancel cancel_attachment chat.attachments.cancel client.chatAttachments.cancel AttachmentView
POST /api/v1/tenants/{tenant_id}/chat/threads/{thread_id}/attachments/{attachment_id}/retry retry_attachment chat.attachments.retry client.chatAttachments.retry AttachmentView
DELETE /api/v1/tenants/{tenant_id}/chat/threads/{thread_id}/attachments/{attachment_id} remove_attachment chat.attachments.remove client.chatAttachments.remove void
POST /api/v1/tenants/{tenant_id}/chat/threads/{thread_id}/attachments/{attachment_id}/knowledge promote_attachment chat.attachments.promote client.chatAttachments.promote AttachmentPromotionView
POST /api/v1/tenants/{tenant_id}/catalog/availability knowledge_availability availability.observe client.catalog.availability AvailabilityResponse
POST /api/v1/tenants/{tenant_id}/knowledge-processing knowledge_processing availability.processing client.catalog.processing ProcessingResponse
GET /api/v1/tenants/{tenant_id}/source-batch-capabilities file_batch_capabilities fileBatches.capabilities client.fileBatches.capabilities FileBatchCapabilities
POST /api/v1/tenants/{tenant_id}/sources/batches create_file_batch fileBatches.create client.fileBatches.create FileBatchView
GET /api/v1/tenants/{tenant_id}/sources/batches file_batches fileBatches.list client.fileBatches.list FileBatchPage
GET /api/v1/tenants/{tenant_id}/sources/batches/{batch_id} file_batch fileBatches.get client.fileBatches.get FileBatchView
GET /api/v1/tenants/{tenant_id}/sources/batches/{batch_id}/items file_batch_items fileBatches.items client.fileBatches.items FileItemPage
PUT /api/v1/tenants/{tenant_id}/sources/batches/{batch_id}/items/{item_id}/content upload_file_batch_item fileBatches.upload client.fileBatches.upload StagedFileReceipt
GET /api/v1/tenants/{tenant_id}/sources/batches/{batch_id}/items/{item_id}/receipt file_batch_item_receipt fileBatches.receipt client.fileBatches.receipt StagedFileReceipt
POST /api/v1/tenants/{tenant_id}/sources/batches/{batch_id}/submit submit_file_batch fileBatches.submit client.fileBatches.submit FileBatchView
POST /api/v1/tenants/{tenant_id}/sources/batches/{batch_id}/cancel cancel_file_batch fileBatches.cancel client.fileBatches.cancel FileBatchView
POST /api/v1/tenants/{tenant_id}/sources/batches/{batch_id}/items/{item_id}/reconcile reconcile_file_batch_item fileBatches.reconcile client.fileBatches.reconcile FileBatchView
POST /api/v1/tenants/{tenant_id}/sources/batches/{batch_id}/items/{item_id}/original/reconcile reconcile_file_batch_original fileBatches.recoverOriginal client.fileBatches.recoverOriginal FileBatchView
GET /api/v1/tenants/{tenant_id}/sources/batches/{batch_id}/items/{item_id}/recovery file_batch_processing_recovery fileBatches.processingRecovery client.fileBatches.processingRecovery FileRecoveryView
POST /api/v1/tenants/{tenant_id}/sources/batches/{batch_id}/items/{item_id}/recover recover_file_batch_processing fileBatches.recoverProcessing client.fileBatches.recoverProcessing FileBatchView
GET /api/v1/tenants/{tenant_id}/query-batch-capabilities query_batch_capabilities queryBatches.capabilities client.queryBatches.capabilities QueryBatchCapabilities
POST /api/v1/tenants/{tenant_id}/queries/batches create_query_batch queryBatches.create client.queryBatches.create QueryBatchView
GET /api/v1/tenants/{tenant_id}/queries/batches query_batches queryBatches.list client.queryBatches.list QueryBatchPage
GET /api/v1/tenants/{tenant_id}/queries/batches/{batch_id} query_batch queryBatches.get client.queryBatches.get QueryBatchView
GET /api/v1/tenants/{tenant_id}/queries/batches/{batch_id}/items query_batch_items queryBatches.items client.queryBatches.items QueryBatchItemPage
GET /api/v1/tenants/{tenant_id}/queries/batches/{batch_id}/items/{item_id}/result query_batch_result queryBatches.result client.queryBatches.result QueryBatchResult
POST /api/v1/tenants/{tenant_id}/queries/batches/{batch_id}/cancel cancel_query_batch queryBatches.cancel client.queryBatches.cancel QueryBatchCancellation
POST /api/v1/tenants/{tenant_id}/queries/batches/{batch_id}/items/{item_id}/reconcile reconcile_query_batch_item queryBatches.reconcile client.queryBatches.reconcile QueryBatchView
GET /api/v1/tenants/{tenant_id}/knowledge-roles knowledge_roles knowledgeConnections.roles client.knowledgeConnections.roles KnowledgeRoles
GET /api/v1/tenants/{tenant_id}/knowledge-connections knowledge_connections knowledgeConnections.list client.knowledgeConnections.list Page[KnowledgeConnection]
POST /api/v1/tenants/{tenant_id}/knowledge-connections create_knowledge_connection knowledgeConnections.create client.knowledgeConnections.create KnowledgeConnection
PUT /api/v1/tenants/{tenant_id}/knowledge-connections/{connection_id} update_knowledge_connection knowledgeConnections.update client.knowledgeConnections.update KnowledgeConnection
GET /api/v1/tenants/{tenant_id}/knowledge-connections/{connection_id} knowledge_connection knowledgeConnections.get client.knowledgeConnections.get KnowledgeConnection
DELETE /api/v1/tenants/{tenant_id}/knowledge-connections/{connection_id} delete_knowledge_connection knowledgeConnections.remove client.knowledgeConnections.remove Deleted
POST /api/v1/tenants/{tenant_id}/sources/upload upload sources.uploadFile client.sources.upload UploadResponse
POST /api/v1/tenants/{tenant_id}/search search search client.knowledge.search SearchResponse
POST /api/v1/tenants/{tenant_id}/query query query client.knowledge.query QueryResponse
GET /api/v1/tenants/{tenant_id}/datasets/{dataset_id}/schema schema dataset.schema client.datasets.schema DatasetSchema
GET /api/v1/tenants/{tenant_id}/lineage lineage lineage client.knowledge.lineage Lineage
GET /api/v1/tenants/{tenant_id}/documents/{document_id}/chunks document_chunks documents.chunks client.documents.chunks DocumentChunks
GET /api/v1/tenants/{tenant_id}/documents/{document_id}/original document_download documents.download client.documents.original BinaryDownload
POST /api/v1/tenants/{tenant_id}/documents/{document_id}/reingest reingest_document documents.reingest client.documents.reingest ContentUpdate
POST /api/v1/tenants/{tenant_id}/datasets/{dataset_id}/tables/{table_id}/reingest reingest_table dataset.reingestTable client.datasets.reingestTable ContentUpdate
POST /api/v1/tenants/{tenant_id}/documents/{document_id}/content replace_document documents.replace client.documents.replace ContentUpdate
POST /api/v1/tenants/{tenant_id}/datasets/{dataset_id}/tables/{table_id}/content replace_table dataset.replaceTable client.datasets.replaceTable ContentUpdate
POST /api/v1/tenants/{tenant_id}/knowledge-intents preview_knowledge knowledgeIntents.preview client.knowledgeIntents.preview KnowledgeIntent
GET /api/v1/tenants/{tenant_id}/knowledge-intents/{intent_id} knowledge_intent knowledgeIntents.get client.knowledgeIntents.get KnowledgeIntent
POST /api/v1/tenants/{tenant_id}/knowledge-intents/{intent_id}/confirm confirm_knowledge knowledgeIntents.confirm client.knowledgeIntents.confirm KnowledgeCommitOutcome
POST /api/v1/tenants/{tenant_id}/knowledge-intents/{intent_id}/cancel cancel_knowledge knowledgeIntents.cancel client.knowledgeIntents.cancel KnowledgeIntent
GET /api/v1/tenants/{tenant_id}/knowledge-items knowledge_items knowledgeItems.list client.knowledgeItems.list KnowledgeItemPage
GET /api/v1/tenants/{tenant_id}/knowledge-items/{item_id} knowledge_item knowledgeItems.get client.knowledgeItems.get KnowledgeItemView
GET /api/v1/tenants/{tenant_id}/knowledge-items/{item_id}/versions/{version} knowledge_version knowledgeItems.version client.knowledgeItems.version KnowledgeItemView
POST /api/v1/tenants/{tenant_id}/datasets/{dataset_id}/files append_dataset_file dataset.appendFile client.datasets.appendFile DatasetFileAppendResult
GET /api/v1/tenants/{tenant_id}/documents/{document_id}/versions document_versions documents.versions client.documents.versions DocumentVersionPage
GET /api/v1/tenants/{tenant_id}/documents/{document_id}/versions/{source_version_id} document_version documents.version client.documents.version DocumentVersion
GET /api/v1/tenants/{tenant_id}/documents/{document_id}/versions/{source_version_id}/extractions document_extractions documents.extractions client.documents.extractions DocumentExtractionPage
GET /api/v1/tenants/{tenant_id}/documents/{document_id}/versions/{source_version_id}/extractions/{extraction_id}/parts document_parts documents.parts client.documents.parts DocumentPartPage
GET /api/v1/tenants/{tenant_id}/documents/{document_id}/versions/{source_version_id}/extractions/{extraction_id}/parts/{source_part_id} document_part documents.part client.documents.part DocumentPartContent
GET /api/v1/tenants/{tenant_id}/documents/{document_id}/versions/{source_version_id}/original document_version_original documents.versionOriginal client.documents.versionOriginal BinaryDownload
POST /api/v1/tenants/{tenant_id}/external-knowledge-reviews stage_external_review externalReviews.stage client.externalReviews.stage ExternalReviewView
GET /api/v1/tenants/{tenant_id}/external-knowledge-reviews/{review_id} external_review externalReviews.get client.externalReviews.get ExternalReviewView
POST /api/v1/tenants/{tenant_id}/external-knowledge-reviews/{review_id}/approve approve_external_review externalReviews.approve client.externalReviews.approve KnowledgeCommitOutcome
POST /api/v1/tenants/{tenant_id}/external-knowledge-reviews/{review_id}/cancel cancel_external_review externalReviews.cancel client.externalReviews.cancel ExternalReviewView
POST /api/v1/tenants/{tenant_id}/external-file-reviews/cleanup cleanup_external_file_reviews externalFileReviews.cleanup client.externalFileReviews.cleanup ExternalFileCleanupResult
POST /api/v1/tenants/{tenant_id}/external-file-reviews stage_external_file_review externalFileReviews.stage client.externalFileReviews.stage ExternalFileReviewView
GET /api/v1/tenants/{tenant_id}/external-file-reviews/{review_id} external_file_review externalFileReviews.get client.externalFileReviews.get ExternalFileReviewView
POST /api/v1/tenants/{tenant_id}/external-file-reviews/{review_id}/chunks upload_external_file_chunk externalFileReviews.chunk client.externalFileReviews.chunk ExternalFileReviewView
POST /api/v1/tenants/{tenant_id}/external-file-reviews/{review_id}/seal seal_external_file_review externalFileReviews.seal client.externalFileReviews.seal ExternalFileReviewView
POST /api/v1/tenants/{tenant_id}/external-file-reviews/{review_id}/approve approve_external_file_review externalFileReviews.approve client.externalFileReviews.approve ExternalFileReviewView
POST /api/v1/tenants/{tenant_id}/external-file-reviews/{review_id}/cancel cancel_external_file_review externalFileReviews.cancel client.externalFileReviews.cancel ExternalFileReviewView
GET /api/v1/tenants/{tenant_id}/knowledge-indexes knowledge_indexes knowledgeIndexes.list client.knowledgeIndexes.list IndexPage
GET /api/v1/tenants/{tenant_id}/knowledge-index-choices native_index_choices knowledgeIndexes.choices client.knowledgeIndexes.choices NativeIndexPage
GET /api/v1/tenants/{tenant_id}/knowledge-index-choices/{choice_id} native_index_choice knowledgeIndexes.choice client.knowledgeIndexes.choice NativeIndexChoice
GET /api/v1/tenants/{tenant_id}/knowledge-indexes/{index_id} knowledge_index knowledgeIndexes.get client.knowledgeIndexes.get KnowledgeIndexView
POST /api/v1/tenants/{tenant_id}/knowledge-indexes/plan plan_knowledge_index knowledgeIndexes.plan client.knowledgeIndexes.plan IndexPlanView
POST /api/v1/tenants/{tenant_id}/knowledge-indexes create_knowledge_index knowledgeIndexes.create client.knowledgeIndexes.create IndexJobView
POST /api/v1/tenants/{tenant_id}/knowledge-indexes/{index_id}/activate activate_knowledge_index knowledgeIndexes.activate client.knowledgeIndexes.activate KnowledgeIndexView
POST /api/v1/tenants/{tenant_id}/knowledge-indexes/{index_id}/cancel cancel_knowledge_index knowledgeIndexes.cancel client.knowledgeIndexes.cancel KnowledgeIndexView
POST /api/v1/tenants/{tenant_id}/knowledge-indexes/{index_id}/resume resume_knowledge_index knowledgeIndexes.resume client.knowledgeIndexes.resume IndexJobView
GET /api/v1/tenants/{tenant_id}/datasets/{dataset_id}/tables/{table_id}/provenance table_provenance dataset.tableProvenance client.datasets.tableProvenance TableProvenance
GET /api/v1/tenants/{tenant_id}/datasets/{dataset_id}/tables/{table_id}/snapshots table_snapshots dataset.tableSnapshots client.datasets.tableSnapshots TableSnapshotPage
GET /api/v1/tenants/{tenant_id}/datasets/{dataset_id}/tables/{table_id}/coordinates table_coordinates dataset.tableCoordinates client.datasets.tableCoordinates TableCoordinateManifest
POST /api/v1/tenants/{tenant_id}/datasets/{dataset_id}/tables/{table_id}/coordinates/cells table_coordinate_cells dataset.tableCoordinateCells client.datasets.tableCoordinateCells TableCoordinateSelection
GET /api/v1/tenants/{tenant_id}/datasets/{dataset_id}/tables/{table_id}/coordinates/rows table_coordinate_rows dataset.tableCoordinateRows client.datasets.tableCoordinateRows TableRowRangePage
GET /api/v1/tenants/{tenant_id}/datasets/{dataset_id}/tables/{table_id}/coordinates/columns table_coordinate_columns dataset.tableCoordinateColumns client.datasets.tableCoordinateColumns TableColumnBindingPage
GET /api/v1/mcp/connection mcp_connection mcp.connection client.mcp.connection McpConnectionDescriptor
GET /api/v1/tenants/{tenant_id}/mcp/connection organization_mcp_connection mcp.organizationConnection client.mcp.organizationConnection McpConnectionDescriptor
GET /api/v1/tenants/{tenant_id}/mcp/oauth-clients/readiness mcp_oauth_clients_readiness mcpOAuthClients.readiness client.mcpOAuthClients.readiness McpOAuthClientReadiness
GET /api/v1/tenants/{tenant_id}/mcp/oauth-clients mcp_oauth_clients mcpOAuthClients.list client.mcpOAuthClients.list McpOAuthClientPage
POST /api/v1/tenants/{tenant_id}/mcp/oauth-clients create_mcp_oauth_client mcpOAuthClients.create client.mcpOAuthClients.create McpOAuthClientCredential
GET /api/v1/tenants/{tenant_id}/mcp/oauth-clients/{client_id} mcp_oauth_client mcpOAuthClients.get client.mcpOAuthClients.get McpOAuthClient
PATCH /api/v1/tenants/{tenant_id}/mcp/oauth-clients/{client_id} update_mcp_oauth_client mcpOAuthClients.update client.mcpOAuthClients.update McpOAuthClient
POST /api/v1/tenants/{tenant_id}/mcp/oauth-clients/{client_id}/rotate-secret rotate_mcp_oauth_client_secret mcpOAuthClients.rotateSecret client.mcpOAuthClients.rotateSecret McpOAuthClientCredential
GET /api/v1/branding/defaults branding_defaults branding.defaults client.brandingDefaults.defaults BrandingValues
GET /api/v1/tenants/{tenant_id}/branding organization_branding branding.get client.organizationBranding.get OrganizationBranding
PUT /api/v1/tenants/{tenant_id}/branding update_organization_branding branding.update client.organizationBranding.update OrganizationBranding
POST /api/v1/tenants/{tenant_id}/branding/reset reset_organization_branding branding.reset client.organizationBranding.reset OrganizationBranding
GET /api/v1/tenants/{tenant_id}/chat/settings organization_chat_settings organizationChat.get client.organizationChat.get OrganizationChatSettings
PUT /api/v1/tenants/{tenant_id}/chat/settings update_organization_chat_settings organizationChat.update client.organizationChat.update OrganizationChatSettings
GET /api/v1/tenants/{tenant_id}/knowledge/settings organization_knowledge_settings organizationKnowledge.get client.organizationKnowledge.get OrganizationKnowledgeSettings
PUT /api/v1/tenants/{tenant_id}/knowledge/settings update_organization_knowledge_settings organizationKnowledge.update client.organizationKnowledge.update OrganizationKnowledgeSettings
GET /api/v1/tenants/{tenant_id}/organization/people/me organization_person_self organizationPeople.me client.organizationPeople.me OrganizationPerson
GET /api/v1/tenants/{tenant_id}/organization/people organization_people organizationPeople.list client.organizationPeople.list OrganizationPersonPage
POST /api/v1/tenants/{tenant_id}/organization/people create_organization_person organizationPeople.create client.organizationPeople.create OrganizationPerson
GET /api/v1/tenants/{tenant_id}/organization/people/{person_id} organization_person organizationPeople.get client.organizationPeople.get OrganizationPerson
PATCH /api/v1/tenants/{tenant_id}/organization/people/{person_id} update_organization_person organizationPeople.update client.organizationPeople.update OrganizationPerson
GET /api/v1/tenants/{tenant_id}/organization/people/{person_id}/avatar organization_person_avatar organizationPeople.avatar client.organizationPeople.avatar BinaryDownload
GET /api/v1/tenants/{tenant_id}/organization/people/{person_id}/reports organization_person_reports organizationPeople.reports client.organizationPeople.reports OrganizationPersonPage
GET /api/v1/tenants/{tenant_id}/organization/units organization_units organizationPeople.units client.organizationPeople.units OrganizationUnitPage
POST /api/v1/tenants/{tenant_id}/organization/units create_organization_unit organizationPeople.createUnit client.organizationPeople.createUnit OrganizationUnit
PATCH /api/v1/tenants/{tenant_id}/organization/units/{unit_id} update_organization_unit organizationPeople.updateUnit client.organizationPeople.updateUnit OrganizationUnit
DELETE /api/v1/tenants/{tenant_id}/organization/units/{unit_id} delete_organization_unit organizationPeople.deleteUnit client.organizationPeople.deleteUnit void
GET /api/v1/tenants/{tenant_id}/organization/directory-settings organization_directory_settings organizationPeople.settings client.organizationPeople.settings OrganizationDirectorySettings
PATCH /api/v1/tenants/{tenant_id}/organization/directory-settings update_organization_directory_settings organizationPeople.updateSettings client.organizationPeople.updateSettings OrganizationDirectorySettings
GET /api/v1/tenants/{tenant_id}/organization/profile-mappings/{provider_id} organization_profile_mapping organizationPeople.mapping client.organizationPeople.mapping OrganizationProfileMapping
PUT /api/v1/tenants/{tenant_id}/organization/profile-mappings/{provider_id} update_organization_profile_mapping organizationPeople.updateMapping client.organizationPeople.updateMapping OrganizationProfileMapping
GET /api/v1/tenants/{tenant_id}/platform/health platform_health platformHealth.health client.platformHealth.health PlatformHealth
GET /api/v1/tenants/{tenant_id}/platform/system-information system_information platformHealth.systemInformation client.platformHealth.systemInformation SystemInformation
GET /api/v1/profile profile profile.get client.profile.get UserProfile
PATCH /api/v1/profile update_profile profile.update client.profile.update UserProfile
GET /api/v1/profile/avatar avatar_download profile.avatarDownload client.profile.avatar BinaryDownload
POST /api/v1/profile/avatar set_avatar profile.uploadAvatar client.profile.uploadAvatar UserProfile
DELETE /api/v1/profile/avatar delete_avatar profile.deleteAvatar client.profile.deleteAvatar UserProfile
GET /api/v1/tenants/{tenant_id}/people people people.list client.people.list Page[Person]
GET /api/v1/tenants/{tenant_id}/people/{profile_id}/avatar person_avatar people.avatar client.people.avatar BinaryDownload
POST /api/v1/tenants/{tenant_id}/shares/reviews review_share shares.review client.shares.review ShareReview
POST /api/v1/tenants/{tenant_id}/shares create_share shares.create client.shares.create Share
GET /api/v1/tenants/{tenant_id}/shares shares shares.list client.shares.list SharePage
GET /api/v1/tenants/{tenant_id}/shares/{share_id} share shares.get client.shares.get SharedConversation
DELETE /api/v1/tenants/{tenant_id}/shares/{share_id} revoke_share shares.revoke client.shares.revoke void
GET /api/v1/tokens tokens tokens.list client.tokens.list Page[PersonalToken]
GET /api/v1/tokens/scopes token_scopes tokens.scopes client.tokens.scopes TokenScopeOptions
POST /api/v1/tokens create_token tokens.create client.tokens.create TokenCreated
DELETE /api/v1/tokens/{token_id} revoke_token tokens.revoke client.tokens.revoke void
GET /api/v1/capabilities capabilities capabilities client.platform.capabilities Capabilities

Qualified retained glossary API

These operations use the original structured service behind resource admission. They are separate from the canonical count and require the structured module and its configured native datasource. Pass the canonical tenant and workspace. Updates and deletion require the exact returned updated_at string; preserve microseconds and the offset instead of parsing through a date formatter.

API operation Python client TypeScript client Java client
GET /api/v1/structured/glossary glossary_terms structured.glossary.list client.structuredGlossary(tenant,workspace).list
GET /api/v1/structured/glossary/{term_id} glossary_term structured.glossary.get client.structuredGlossary(tenant,workspace).get
POST /api/v1/structured/glossary create_glossary_term structured.glossary.create client.structuredGlossary(tenant,workspace).create
PUT /api/v1/structured/glossary/{term_id} update_glossary_term structured.glossary.update client.structuredGlossary(tenant,workspace).update
DELETE /api/v1/structured/glossary/{term_id} delete_glossary_term structured.glossary.remove client.structuredGlossary(tenant,workspace).remove
GET /api/v1/structured/agent/glossary glossary_terms(agent=True) structured.agentGlossary.list client.structuredAgentGlossary(tenant,workspace).list
GET /api/v1/structured/agent/glossary/{term_id} glossary_term(agent=True) structured.agentGlossary.get client.structuredAgentGlossary(tenant,workspace).get
POST /api/v1/structured/agent/glossary create_glossary_term(agent=True) structured.agentGlossary.create client.structuredAgentGlossary(tenant,workspace).create
PUT /api/v1/structured/agent/glossary/{term_id} update_glossary_term(agent=True) structured.agentGlossary.update client.structuredAgentGlossary(tenant,workspace).update
DELETE /api/v1/structured/agent/glossary/{term_id} delete_glossary_term(agent=True) structured.agentGlossary.remove client.structuredAgentGlossary(tenant,workspace).remove

Glossary list totals can be unknown. Honor returned limit, offset and has_more; do not invent a total or slice another page in the client.

Request behavior

New conversation export and share reviews save a nullable typed identity with product/assistant names, organization branding revision/origin and configuration digest. The review revision binds that identity; later organization changes do not rewrite saved reviews, exports or shared conversations. Historical null means not recorded. JSON exports retain machine roles and separate display names. See the three-language export and sharing workflows for preview, explicit confirmation, authenticated download and recipient reads.

Dataset file append requires a stable Idempotency-Key, accepts one bounded multipart file and returns its canonical file-version and new table identities. Existing snapshots are retained. Native sections commit independently; pending or failed intake blocks dataset query/schema until reconciliation. Exact key/payload replays recheck permissions and return the stored completed receipt without native work. Unknown outcomes are never retried automatically. Durable file batches provide a separate bounded asynchronous lifecycle and explicit receipt reconciliation. PostgreSQL concurrency and configured-provider acceptance remain separate qualification gates.

Use endpoint-declared filters. Totals and page metadata are present only when the server supplies them. Cursor values are opaque. Closing a stream releases the connection; cancel the durable run separately to stop processing.

Content writes require the caller's current revision. Optional avatar conditionals use If-None-Match; stream resumption uses Last-Event-ID. These are separate from the If-Match precondition on content replacement and reingestion.

Known fields have named DTOs and typed values. Opaque business JSON preserves null, booleans, numbers and exact strings recursively. A successful SDK build or contract test does not qualify a configured model provider or a production deployment.

Copyright 2026 Firefly Software Foundation SPDX-License-Identifier: Apache-2.0