Repository navigation
Expand file tree
/
Copy pathspeaking-bots-openapi.json
More file actions
1 lines (1 loc) · 6.82 KB
/
Copy pathspeaking-bots-openapi.json
File metadata and controls
1 lines (1 loc) · 6.82 KB
1
{"openapi":"3.1.0","info":{"title":"Speaking Meeting Bot API","description":"API for deploying AI-powered speaking agents in video meetings. Combines MeetingBaas for meeting connectivity with Pipecat for voice AI processing.","version":"0.0.1"},"paths":{"/bots":{"post":{"tags":["bots"],"summary":"Join Meeting","description":"Create and deploy a speaking bot in a meeting.\n\nLaunches an AI-powered bot that joins a video meeting through MeetingBaas\nand processes audio using Pipecat's voice AI framework.","operationId":"join_meeting_bots_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BotRequest"}}},"required":true},"responses":{"201":{"description":"Bot successfully created and joined the meeting","content":{"application/json":{"schema":{"$ref":"#/components/schemas/JoinResponse"}}}},"400":{"description":"Bad request - Missing required fields or invalid data"},"500":{"description":"Server error - Failed to create bot through MeetingBaas API"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/bots/{bot_id}":{"delete":{"tags":["bots"],"summary":"Leave Bot","description":"Remove a bot from a meeting by its ID.\n\nThis will:\n1. Call the MeetingBaas API to make the bot leave\n2. Close WebSocket connections if they exist\n3. Terminate the associated Pipecat process","operationId":"leave_bot_bots__bot_id__delete","parameters":[{"name":"bot_id","in":"path","required":true,"schema":{"type":"string","title":"Bot Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LeaveBotRequest"}}}},"responses":{"200":{"description":"Bot successfully removed from meeting","content":{"application/json":{"schema":{"type":"object","title":"Response Leave Bot Bots Bot Id Delete"}}}},"400":{"description":"Bad request - Missing required fields or identifiers"},"404":{"description":"Bot not found - No bot with the specified ID"},"500":{"description":"Server error - Failed to remove bot from MeetingBaas API"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/personas/generate-image":{"post":{"tags":["personas"],"summary":"Generate Persona Image","description":"Generate an image for a persona using Replicate.","operationId":"generate_persona_image_personas_generate_image_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PersonaImageRequest"}}}},"responses":{"201":{"description":"Image successfully generated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PersonaImageResponse"}}}},"400":{"description":"Invalid request data"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/health":{"get":{"tags":["system"],"summary":"Health","description":"Health check endpoint","operationId":"health_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}}},"components":{"schemas":{"BotRequest":{"properties":{"meeting_url":{"type":"string","title":"Meeting Url","description":"URL of the Google Meet, Zoom or Microsoft Teams meeting to join"},"bot_name":{"type":"string","title":"Bot Name","description":"Name to display for the bot in the meeting","default":""},"personas":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Personas","description":"List of persona names to use. The first available will be selected."},"bot_image":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bot Image"},"entry_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Entry Message"},"extra":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Extra"},"enable_tools":{"type":"boolean","title":"Enable Tools","default":true},"prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prompt"}},"type":"object","required":["meeting_url"],"title":"BotRequest","description":"Request model for creating a speaking bot in a meeting.","example":{"bot_image":"https://example.com/bot-avatar.png","bot_name":"Meeting Assistant","enable_tools":true,"entry_message":"Hello! I'm here to assist with the meeting.","extra":{"company":"ACME Corp","meeting_purpose":"Weekly sync"},"meeting_url":"https://meet.google.com/abc-defg-hij","personas":["helpful_assistant","meeting_facilitator"],"prompt":"You are Meeting Assistant, a concise and professional AI bot that helps summarize key points and keep the meeting on track. Speak clearly and stay on topic."}},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"JoinResponse":{"properties":{"bot_id":{"type":"string","title":"Bot Id","description":"The MeetingBaas bot ID used for API operations with MeetingBaas"}},"type":"object","required":["bot_id"],"title":"JoinResponse","description":"Response model for a bot joining a meeting"},"LeaveBotRequest":{"properties":{"bot_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bot Id","description":"The MeetingBaas bot ID to remove from the meeting. This will also close the WebSocket connection made through Pipecat by this bot."}},"type":"object","title":"LeaveBotRequest","description":"Request model for making a bot leave a meeting"},"PersonaImageRequest":{"type":"object","required":["name","description"],"properties":{"name":{"type":"string","description":"Name of the persona to generate an image for"},"description":{"type":"string","description":"Detailed description of the persona's appearance and characteristics"},"gender":{"type":"string","description":"Gender of the persona (optional)","enum":["male","female","non-binary"]},"characteristics":{"type":"array","items":{"type":"string"},"description":"List of specific characteristics or features of the persona"}}},"PersonaImageResponse":{"type":"object","properties":{"name":{"type":"string","description":"Name of the persona"},"image_url":{"type":"string","description":"URL of the generated image"},"generated_at":{"type":"string","format":"date-time","description":"Timestamp when the image was generated"}}},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}},"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"x-meeting-baas-api-key","description":"MeetingBaas API key for authentication"}}},"security":[{"ApiKeyAuth":[]}],"servers":[{"url":"https://speaking.meetingbaas.com","description":"Production server"},{"url":"/","description":"Local development server"}]}