openapi: 3.0.0 info: description: The Companies API allows developers to manage marketplace companies and their user memberships. title: Companies AI Embed AI Management API license: name: Apache License, Version 2.0 url: http://www.apache.org/licenses/LICENSE-2.0 version: v296.0-SNAPSHOT servers: - url: https://marketplace.appdirect.com/api - url: https://virtserver.swaggerhub.com tags: - name: AI Management description: Create, retrieve, and manage AI assistants paths: /api/v1/api-keys: patch: tags: - AI Management summary: Update AI description: Updates fields on the specified AI. operationId: updateAI parameters: - name: aiId in: path required: true description: The identifier of the AI to update. schema: type: string requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/AIUpdateRequest' responses: '200': description: Updated AI details. content: application/json: schema: $ref: '#/components/schemas/AIDetail' '400': description: Bad request - invalid input. '403': description: Forbidden, the user is not authorized to perform this action. '404': description: AI not found with the given identifier. '500': description: Internal Server Error. security: - ApiKeyAuth: [] delete: tags: - AI Management summary: Delete AI description: Deletes the specified AI. operationId: deleteAI parameters: - name: aiId in: path required: true description: The identifier of the AI to delete. schema: type: string responses: '204': description: AI deleted successfully. '403': description: Forbidden, the user is not authorized to perform this action. '404': description: AI not found with the given identifier. '500': description: Internal Server Error. security: - ApiKeyAuth: [] /api/v1/ai: post: tags: - AI Management summary: Create New AI description: Creates a new AI specified by the given identifier. operationId: createAI requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/AICreateRequest' responses: '200': description: Details of the specified AI. content: application/json: schema: $ref: '#/components/schemas/AIDetail' '403': description: Forbidden, the user is not authorized to perform this action. '404': description: AI not found with the given identifier. '500': description: Internal Server Error. security: - ApiKeyAuth: [] /api/v1/ai/import: post: tags: - AI Management summary: Import Agent description: Creates a new agent from a portable AgentBundle. Tool secrets can be supplied via the secrets map. Skills are imported only when the caller has SKILLS WRITE permission; otherwise they are skipped with a warning. If the bundle model is unavailable, the first available model is substituted and a warning is returned. operationId: importAgent requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ImportAgentRequest' responses: '201': description: Agent successfully imported. content: application/json: schema: $ref: '#/components/schemas/ImportAgentResponse' '400': description: Invalid request body or model ID. '403': description: Forbidden, the user is not authorized to perform this action. '500': description: Internal Server Error. security: - ApiKeyAuth: [] /api/v1/ai/{aiId}: get: tags: - AI Management summary: Get AI Details description: Retrieves details of the AI specified by the given identifier. operationId: getAIDetails parameters: - name: aiId in: path required: true description: The identifier of the AI whose details are to be retrieved. schema: type: string responses: '200': description: Details of the specified AI. content: application/json: schema: $ref: '#/components/schemas/AIDetail' '403': description: Forbidden, the user is not authorized to perform this action. '404': description: AI not found with the given identifier. '500': description: Internal Server Error. security: - ApiKeyAuth: [] /api/v1/ai/{aiId}/export: get: tags: - AI Management summary: Export Agent description: Exports an agent and its configuration as a portable AgentBundle JSON document. Secrets are stripped from tool configurations and listed in requiredSecrets. Skills are included only when the caller has SKILLS READ permission. Organization-scoped callers can export agents in their org; instance-level callers can export across orgs. operationId: exportAgent parameters: - name: aiId in: path required: true description: The identifier of the agent to export. schema: type: string - name: includeDataSources in: query required: false description: Whether to include data sources in the export. Defaults to true. schema: type: string enum: - 'true' - 'false' default: 'true' - name: dataSourceIds in: query required: false description: Comma-separated list of specific data source IDs to include. When provided, only the listed data sources are exported. schema: type: string responses: '200': description: Agent bundle exported successfully. headers: Content-Disposition: description: Attachment filename derived from the agent name. schema: type: string example: attachment; filename="my-agent.json" content: application/json: schema: $ref: '#/components/schemas/AgentBundle' '400': description: AI ID is required. '403': description: Forbidden, the user is not authorized to perform this action. '404': description: Agent not found with the given identifier. '500': description: Internal Server Error. security: - ApiKeyAuth: [] /api/v1/ai/{aiId}/approve: put: tags: - AI Management summary: Approve an AI description: Marks an AI as approved by the organization. operationId: approveAI parameters: - name: aiId in: path required: true description: The identifier of the AI to be approved. schema: type: string responses: '200': description: AI successfully approved. '401': description: Missing authorization context. User must be authenticated. '403': description: Forbidden, the user is not authorized to perform this action. '404': description: AI not found with the given identifier. '500': description: Internal Server Error. security: - ApiKeyAuth: [] /api/v1/ai/{aiId}/revoke: put: tags: - AI Management summary: Revoke AI approval description: Revokes the organization approval for an AI. operationId: revokeAIApproval parameters: - name: aiId in: path required: true description: The identifier of the AI whose approval is to be revoked. schema: type: string responses: '200': description: AI approval successfully revoked. '401': description: Missing authorization context. User must be authenticated. '403': description: Forbidden, the user is not authorized to perform this action. '404': description: AI not found with the given identifier. '500': description: Internal Server Error. security: - ApiKeyAuth: [] /api/v1/ai/{aiId}/generate-profile: put: tags: - AI Management summary: Generate AI profile description: Generates an AI profile based on existing AI data. operationId: generateAIProfile parameters: - name: aiId in: path required: true description: The identifier of the AI. schema: type: string responses: '200': description: AI profile generated. content: application/json: schema: $ref: '#/components/schemas/AIProfile' security: - ApiKeyAuth: [] /api/v1/ai/{aiId}/share: put: tags: - AI Management summary: Share an AI description: Shares the AI with the provided emails. operationId: shareAI parameters: - name: aiId in: path required: true description: The identifier of the AI. schema: type: string requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ShareAIRequest' responses: '200': description: AI shared. security: - ApiKeyAuth: [] /api/v1/me/ai: get: tags: - AI Management summary: List AIs parameters: - in: query name: scope schema: $ref: '#/components/schemas/ListAIsRequestScope' description: The scope to filter results by - in: query name: groupId schema: type: string description: The id of a group to filter results by - in: query name: categoryId schema: type: string description: The id of a category to filter results by - in: query name: approvedByOrg schema: type: boolean description: Filter results by whether the AI has been approved by the organization. - in: query name: search schema: type: string description: Search term responses: '200': description: Successful operation content: application/json: schema: type: object properties: data: type: array items: $ref: '#/components/schemas/AIDetail' components: schemas: AgentBundleDataSourceConfig: type: object properties: originalId: type: string description: Original data source ID from the export environment, used for same-environment relink on import. name: type: string type: $ref: '#/components/schemas/DataSourceType' refreshPeriod: $ref: '#/components/schemas/DataSourceRefreshPeriod' data: type: object additionalProperties: true nullable: true knowledgeItems: type: array items: $ref: '#/components/schemas/AgentBundleKnowledgeItemConfig' required: - originalId - name - type - refreshPeriod - data - knowledgeItems AgentBundleToolConfig: type: object properties: name: type: string type: $ref: '#/components/schemas/ToolType' data: type: object additionalProperties: true nullable: true description: Tool configuration with secrets stripped. required: - name - type - data ImportAgentResponse: type: object properties: aiId: type: string description: Identifier of the newly created agent. warnings: type: array items: type: string description: Non-fatal issues encountered during import, such as model substitution or skipped skills. required: - aiId - warnings AgentBundleKnowledgeItemConfig: type: object properties: name: type: string type: type: string uniqueId: type: string nullable: true blobUrl: type: string nullable: true filename: type: string nullable: true mimeType: type: string nullable: true required: - name - type - uniqueId - blobUrl - filename - mimeType AgentBundleFlowConfig: type: object properties: name: type: string enabled: type: boolean versions: type: array items: $ref: '#/components/schemas/AgentBundleFlowVersionConfig' required: - name - enabled - versions PublicCategoryType: type: string enum: - ACCOUNTING_FINANCE - AI_MODELS - ENGINEERING - HUMAN_RESOURCES - INFORMATION_TECHNOLOGY - LEARNING_DEVELOPMENT - MARKETING - PRODUCTIVITY - SALES - ADVISOR - FEATURED ListAIsRequestScope: type: string enum: - PRIVATE - OWNED - GROUP - SHARED - ORGANIZATION - PUBLIC - ALL AIUserInputType: type: string enum: - SHORT_TEXT - LONG_TEXT - TEXT_CHOICE - IMAGE_CHOICE - DATE - NUMBER - PHONE_NUMBER - FILE_UPLOAD - DISPLAY - ADDRESS AIProfile: type: object properties: headline: type: string description: type: string features: type: array items: $ref: '#/components/schemas/AIProfileFeature' showCharacter: type: boolean showTraining: type: boolean showPersonality: type: boolean trainingDescription: type: string conversations: type: array items: type: object socialImage: type: string idleVideo: type: string idleVideoError: type: string showSpeaker: type: boolean showVideo: type: boolean voice: type: string voiceEngine: type: string videoModel: type: string AIUpdateRequest: type: object description: Request object for updating an AI configuration. Send only the fields you want to update. properties: src: type: string name: type: string introduction: type: string nullable: true description: type: string instructions: type: string seed: type: string modelId: type: string visibility: $ref: '#/components/schemas/AIVisibility' listInOrgCatalog: type: boolean listInPublicCatalog: type: boolean listInTenantCatalog: type: boolean generateCitations: type: boolean chatLogsVisible: type: boolean intermediateStepsVisible: type: boolean options: $ref: '#/components/schemas/AIModelOptions' groups: type: array items: type: string profile: $ref: '#/components/schemas/AIProfile' editors: type: array items: $ref: '#/components/schemas/AIEditorUser' publicCategories: type: array items: $ref: '#/components/schemas/PublicCategoryType' orgCategoryIds: type: array items: type: string ToolType: type: string enum: - API_FUNCTION - SQL - PYTHON - USER_INPUT - KNOWLEDGE_RETRIEVAL - WEB_SEARCH - MCP_SERVER - IMAGE_GENERATION - USER_CONTEXT - SPREADSHEET - BROWSER - SANDBOX - OPENAI_FUNCTION AgentBundleAgentConfig: type: object description: Portable agent configuration included in an export bundle. properties: name: type: string introduction: type: string nullable: true description: type: string instructions: type: string seed: type: string description: Legacy field from older exports. Merged into instructions on import. src: type: string modelId: type: string visibility: $ref: '#/components/schemas/AIVisibility' listInOrgCatalog: type: boolean listInPublicCatalog: type: boolean listInTenantCatalog: type: boolean chatLogsVisible: type: boolean generateCitations: type: boolean intermediateStepsVisible: type: boolean options: $ref: '#/components/schemas/AIModelOptions' nullable: true profile: $ref: '#/components/schemas/AIProfile' nullable: true required: - name - introduction - description - instructions - src - modelId - visibility - listInOrgCatalog - listInPublicCatalog - listInTenantCatalog - chatLogsVisible - generateCitations - intermediateStepsVisible - options - profile ImportAgentRequest: type: object properties: bundle: $ref: '#/components/schemas/AgentBundle' name: type: string description: Optional override for the imported agent name. secrets: type: object additionalProperties: type: string description: Credential values keyed by requiredSecrets entries. required: - bundle AIProfileFeature: type: object properties: title: type: string description: type: string AgentBundleUserInputConfig: type: object properties: variableName: type: string type: $ref: '#/components/schemas/AIUserInputType' label: type: string configuration: type: object additionalProperties: true showOnChatCreate: type: boolean orderIndex: type: integer required: - variableName - type - label - configuration - showOnChatCreate - orderIndex ShareAIRequest: type: object properties: emails: type: string required: - emails AgentBundleSecretDescriptor: type: object description: Describes a secret stripped during export. Keys map to credential fields in the import request. properties: key: type: string description: Secret key in the format tool:::. description: type: string description: Human-readable label for the credential field. secretType: type: string enum: - apiKey - password - clientId - clientSecret - header - custom required: - key - description - secretType AIVisibility: type: string description: 'Visibility level controlling who can access the AI. PRIVATE: Only the owner can access. GROUP: Only specified groups can access. ORGANIZATION: Anyone in the organization can access. ANYONE_WITH_LINK: Anyone with the link can access.' enum: - PRIVATE - GROUP - ORGANIZATION - ANYONE_WITH_LINK AICreateRequest: type: object description: Request object for creating an AI configuration. properties: src: type: string name: type: string introduction: type: string nullable: true description: type: string instructions: type: string seed: type: string modelId: type: string visibility: $ref: '#/components/schemas/AIVisibility' listInOrgCatalog: type: boolean listInPublicCatalog: type: boolean listInTenantCatalog: type: boolean generateCitations: type: boolean chatLogsVisible: type: boolean intermediateStepsVisible: type: boolean options: $ref: '#/components/schemas/AIModelOptions' groups: type: array items: type: string profile: $ref: '#/components/schemas/AIProfile' editors: type: array items: $ref: '#/components/schemas/AIEditorUser' publicCategories: type: array items: $ref: '#/components/schemas/PublicCategoryType' orgCategoryIds: type: array items: type: string required: - src - name - description - instructions AIDetail: type: object properties: id: type: string createdAt: type: string format: date-time updatedAt: type: string format: date-time name: type: string introduction: type: string nullable: true description: type: string instructions: type: string seed: type: string src: type: string orgId: type: string userId: type: string profile: $ref: '#/components/schemas/AIProfile' userName: type: string orgName: type: string categoryId: type: string visibility: $ref: '#/components/schemas/AIVisibility' listInOrgCatalog: type: boolean listInPublicCatalog: type: boolean listInTenantCatalog: type: boolean chatLogsVisible: type: boolean generateCitations: type: boolean intermediateStepsVisible: type: boolean modelId: type: string options: $ref: '#/components/schemas/AIModelOptions' groups: type: array items: type: string editors: type: array items: $ref: '#/components/schemas/AIEditorUser' publicCategories: type: array items: $ref: '#/components/schemas/PublicCategoryType' orgCategoryIds: type: array items: type: string messageCount: type: integer rating: type: number ratingCount: type: integer isShared: type: boolean hasUserChats: type: boolean isApprovedByOrg: type: boolean isPremiumModel: type: boolean isDeleted: type: boolean DataSourceRefreshPeriod: type: string description: How frequently the data source should be refreshed. enum: - NEVER - DAILY - WEEKLY - MONTHLY DataSourceType: type: string description: The type of the data source. enum: - API - FILE_UPLOAD - GOOGLE_DRIVE - ONEDRIVE - WEB_URL - CONFLUENCE - JIRA - GITHUB AgentBundleFlowVersionConfig: type: object properties: version: type: integer active: type: boolean description: type: string data: type: object additionalProperties: true required: - version - active - description - data AgentBundleSkillConfig: type: object properties: name: type: string description: 'Skill slug: lowercase alphanumeric characters, hyphens, and underscores.' description: type: string content: type: string enabled: type: boolean required: - name - description - content - enabled AIModelOptions: type: object description: Configuration options for the AI model's behavior properties: temperature: type: array description: Controls randomness in the model's output minItems: 1 maxItems: 1 items: type: number topP: type: array description: Controls diversity via nucleus sampling minItems: 1 maxItems: 1 items: type: number topK: type: array description: Controls diversity by limiting to top K tokens minItems: 1 maxItems: 1 items: type: number maxTokens: type: array description: Maximum number of tokens in the model's response minItems: 1 maxItems: 1 items: type: number maxInputTokens: type: array description: Maximum number of input tokens allowed minItems: 1 maxItems: 1 items: type: number frequencyPenalty: type: array description: Penalizes frequent token usage minItems: 1 maxItems: 1 items: type: number presencePenalty: type: array description: Penalizes new token usage minItems: 1 maxItems: 1 items: type: number AIEditorUser: type: object properties: id: type: string nullable: true name: type: string email: type: string AgentBundle: type: object description: Portable agent definition for export and import. Secrets are stripped from tool data and listed in requiredSecrets. properties: version: type: string enum: - '1.0' exportedAt: type: string format: date-time source: type: object properties: apiBaseUrl: type: string orgId: type: string required: - apiBaseUrl - orgId agent: $ref: '#/components/schemas/AgentBundleAgentConfig' tools: type: array items: $ref: '#/components/schemas/AgentBundleToolConfig' userInputs: type: array items: $ref: '#/components/schemas/AgentBundleUserInputConfig' flows: type: array items: $ref: '#/components/schemas/AgentBundleFlowConfig' dataSources: type: array items: $ref: '#/components/schemas/AgentBundleDataSourceConfig' skills: type: array items: $ref: '#/components/schemas/AgentBundleSkillConfig' requiredSecrets: type: array items: $ref: '#/components/schemas/AgentBundleSecretDescriptor' required: - version - exportedAt - source - agent - tools - userInputs - flows - dataSources - skills - requiredSecrets