{"openapi":"3.0.0","paths":{"/api/auth/google":{"post":{"operationId":"AuthController_signInWithGoogle","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoogleAuthDto"}}}},"responses":{"201":{"description":""}},"tags":["auth"]}},"/api/auth/me":{"get":{"operationId":"AuthController_getMe","parameters":[],"responses":{"200":{"description":""}},"tags":["auth"],"security":[{"bearer":[]}]}},"/api/users/me/preferences":{"patch":{"operationId":"UsersController_updatePreferences","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateEmailSummaryDto"}}}},"responses":{"200":{"description":""}},"tags":["users"],"security":[{"bearer":[]}]}},"/api/meetings/{meetingId}/transcript/segments":{"post":{"operationId":"TranscriptsController_appendSegments","parameters":[{"name":"meetingId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpsertTranscriptDto"}}}},"responses":{"201":{"description":""}},"tags":["transcripts"],"security":[{"bearer":[]}]}},"/api/meetings/{meetingId}/transcript":{"get":{"operationId":"TranscriptsController_getSegments","parameters":[{"name":"meetingId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["transcripts"],"security":[{"bearer":[]}]}},"/api/meetings/{meetingId}/transcript/stream/start":{"post":{"operationId":"TranscriptsController_startStream","parameters":[{"name":"meetingId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":""}},"tags":["transcripts"],"security":[{"bearer":[]}]}},"/api/meetings/{meetingId}/transcript/stream/audio":{"post":{"operationId":"TranscriptsController_streamAudio","parameters":[{"name":"meetingId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":""}},"tags":["transcripts"],"security":[{"bearer":[]}]}},"/api/meetings/{meetingId}/transcript/stream/stop":{"post":{"operationId":"TranscriptsController_stopStream","parameters":[{"name":"meetingId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":""}},"tags":["transcripts"],"security":[{"bearer":[]}]}},"/api/transcripts/history":{"get":{"operationId":"TranscriptsHistoryController_getHistory","parameters":[{"name":"limit","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["transcripts"],"security":[{"bearer":[]}]}},"/api/meetings/{meetingId}/notes/generate":{"post":{"operationId":"NotesController_generateNotes","parameters":[{"name":"meetingId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateNotesDto"}}}},"responses":{"201":{"description":""}},"tags":["notes"],"security":[{"bearer":[]}]}},"/api/meetings/{meetingId}/notes":{"get":{"operationId":"NotesController_getNotes","parameters":[{"name":"meetingId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["notes"],"security":[{"bearer":[]}]}},"/api/meetings/{meetingId}/notes/chat":{"post":{"operationId":"NotesController_chatOnMeeting","parameters":[{"name":"meetingId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatMeetingDto"}}}},"responses":{"201":{"description":""}},"tags":["notes"],"security":[{"bearer":[]}]}},"/api/notes/documents":{"get":{"operationId":"NotesDocumentsController_listDocuments","parameters":[],"responses":{"200":{"description":""}},"tags":["notes"],"security":[{"bearer":[]}]}},"/api/notes/documents/{meetingId}":{"delete":{"operationId":"NotesDocumentsController_deleteDocument","parameters":[{"name":"meetingId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["notes"],"security":[{"bearer":[]}]},"patch":{"operationId":"NotesDocumentsController_updateDocument","parameters":[{"name":"meetingId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateGeneratedDocumentDto"}}}},"responses":{"200":{"description":""}},"tags":["notes"],"security":[{"bearer":[]}]}},"/api/tasks":{"get":{"operationId":"TasksController_getTasks","parameters":[],"responses":{"200":{"description":""}},"tags":["tasks"],"security":[{"bearer":[]}]},"post":{"operationId":"TasksController_createTask","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateTaskDto"}}}},"responses":{"201":{"description":""}},"tags":["tasks"],"security":[{"bearer":[]}]}},"/api/tasks/{id}":{"patch":{"operationId":"TasksController_updateTask","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateTaskDto"}}}},"responses":{"200":{"description":""}},"tags":["tasks"],"security":[{"bearer":[]}]},"delete":{"operationId":"TasksController_deleteTask","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["tasks"],"security":[{"bearer":[]}]}},"/api/tasks/{id}/approve":{"post":{"operationId":"TasksController_approveTask","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApproveTaskDto"}}}},"responses":{"201":{"description":""}},"tags":["tasks"],"security":[{"bearer":[]}]}},"/api/integrations/jira":{"get":{"operationId":"IntegrationsController_getJiraIntegration","parameters":[],"responses":{"200":{"description":""}},"tags":["integrations"],"security":[{"bearer":[]}]},"delete":{"operationId":"IntegrationsController_disconnectJira","parameters":[],"responses":{"200":{"description":""}},"tags":["integrations"],"security":[{"bearer":[]}]}},"/api/integrations/jira/projects":{"get":{"operationId":"IntegrationsController_getJiraProjects","parameters":[],"responses":{"200":{"description":""}},"tags":["integrations"],"security":[{"bearer":[]}]}},"/api/integrations/jira/sprints":{"get":{"operationId":"IntegrationsController_getJiraSprints","parameters":[{"name":"projectId","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["integrations"],"security":[{"bearer":[]}]}},"/api/integrations/jira/connect":{"post":{"operationId":"IntegrationsController_connectJira","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectJiraDto"}}}},"responses":{"201":{"description":""}},"tags":["integrations"],"security":[{"bearer":[]}]}},"/api/integrations/jira/project-key":{"patch":{"operationId":"IntegrationsController_updateJiraProjectKey","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateJiraProjectKeyDto"}}}},"responses":{"200":{"description":""}},"tags":["integrations"],"security":[{"bearer":[]}]}},"/api/integrations/jira/defaults":{"patch":{"operationId":"IntegrationsController_updateJiraDefaults","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateJiraDefaultsDto"}}}},"responses":{"200":{"description":""}},"tags":["integrations"],"security":[{"bearer":[]}]}},"/api/integrations/jira/api-token":{"patch":{"operationId":"IntegrationsController_updateJiraApiToken","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateJiraApiTokenDto"}}}},"responses":{"200":{"description":""}},"tags":["integrations"],"security":[{"bearer":[]}]}},"/api/integrations/linear":{"get":{"operationId":"IntegrationsController_getLinearIntegration","parameters":[],"responses":{"200":{"description":""}},"tags":["integrations"],"security":[{"bearer":[]}]},"delete":{"operationId":"IntegrationsController_disconnectLinear","parameters":[],"responses":{"200":{"description":""}},"tags":["integrations"],"security":[{"bearer":[]}]}},"/api/integrations/linear/teams":{"get":{"operationId":"IntegrationsController_getLinearTeams","parameters":[],"responses":{"200":{"description":""}},"tags":["integrations"],"security":[{"bearer":[]}]}},"/api/integrations/linear/connect":{"post":{"operationId":"IntegrationsController_connectLinear","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectLinearDto"}}}},"responses":{"201":{"description":""}},"tags":["integrations"],"security":[{"bearer":[]}]}},"/api/integrations/linear/connect-with-key":{"post":{"operationId":"IntegrationsController_connectLinearWithKey","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectLinearWithKeyDto"}}}},"responses":{"201":{"description":""}},"tags":["integrations"],"security":[{"bearer":[]}]}},"/api/integrations/linear/oauth/config":{"get":{"operationId":"IntegrationsController_getLinearOAuthConfig","parameters":[],"responses":{"200":{"description":""}},"tags":["integrations"],"security":[{"bearer":[]}]}},"/api/integrations/linear/oauth/exchange":{"post":{"operationId":"IntegrationsController_exchangeLinearOAuth","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExchangeLinearOAuthDto"}}}},"responses":{"201":{"description":""}},"tags":["integrations"],"security":[{"bearer":[]}]}},"/api/integrations/linear/defaults":{"patch":{"operationId":"IntegrationsController_updateLinearDefaults","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateLinearDefaultsDto"}}}},"responses":{"200":{"description":""}},"tags":["integrations"],"security":[{"bearer":[]}]}},"/api/integrations/default-target":{"patch":{"operationId":"IntegrationsController_updateDefaultPmTarget","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateDefaultPmTargetDto"}}}},"responses":{"200":{"description":""}},"tags":["integrations"],"security":[{"bearer":[]}]}},"/api/integrations/openproject":{"get":{"operationId":"IntegrationsController_getOpenProjectIntegration","parameters":[],"responses":{"200":{"description":""}},"tags":["integrations"],"security":[{"bearer":[]}]},"delete":{"operationId":"IntegrationsController_disconnectOpenProject","parameters":[],"responses":{"200":{"description":""}},"tags":["integrations"],"security":[{"bearer":[]}]}},"/api/integrations/openproject/projects":{"get":{"operationId":"IntegrationsController_getOpenProjectProjects","parameters":[],"responses":{"200":{"description":""}},"tags":["integrations"],"security":[{"bearer":[]}]}},"/api/integrations/openproject/types":{"get":{"operationId":"IntegrationsController_getOpenProjectTypes","parameters":[],"responses":{"200":{"description":""}},"tags":["integrations"],"security":[{"bearer":[]}]}},"/api/integrations/openproject/connect":{"post":{"operationId":"IntegrationsController_connectOpenProject","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectOpenProjectDto"}}}},"responses":{"201":{"description":""}},"tags":["integrations"],"security":[{"bearer":[]}]}},"/api/integrations/openproject/connect-with-token":{"post":{"operationId":"IntegrationsController_connectOpenProjectWithToken","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectOpenProjectWithTokenDto"}}}},"responses":{"201":{"description":""}},"tags":["integrations"],"security":[{"bearer":[]}]}},"/api/integrations/openproject/defaults":{"patch":{"operationId":"IntegrationsController_updateOpenProjectDefaults","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateOpenProjectDefaultsDto"}}}},"responses":{"200":{"description":""}},"tags":["integrations"],"security":[{"bearer":[]}]}},"/api/meetings/start":{"post":{"operationId":"MeetingsController_startMeeting","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StartMeetingDto"}}}},"responses":{"201":{"description":""}},"tags":["meetings"],"security":[{"bearer":[]}]}},"/api/meetings/{id}/stop":{"post":{"operationId":"MeetingsController_stopMeeting","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StopMeetingDto"}}}},"responses":{"201":{"description":""}},"tags":["meetings"],"security":[{"bearer":[]}]}},"/api/meetings":{"get":{"operationId":"MeetingsController_getMeetings","parameters":[],"responses":{"200":{"description":""}},"tags":["meetings"],"security":[{"bearer":[]}]}},"/api/meetings/{id}":{"get":{"operationId":"MeetingsController_getMeeting","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["meetings"],"security":[{"bearer":[]}]}},"/api/meetings/{id}/speaker-map":{"patch":{"operationId":"MeetingsController_updateSpeakerMap","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateSpeakerMapDto"}}}},"responses":{"200":{"description":""}},"tags":["meetings"],"security":[{"bearer":[]}]}},"/api/calendar/google/connect":{"post":{"operationId":"CalendarController_connectGoogleCalendar","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectGoogleCalendarDto"}}}},"responses":{"201":{"description":""}},"tags":["calendar"],"security":[{"bearer":[]}]}},"/api/calendar/google/status":{"get":{"operationId":"CalendarController_getGoogleCalendarStatus","parameters":[],"responses":{"200":{"description":""}},"tags":["calendar"],"security":[{"bearer":[]}]}},"/api/calendar/google/scope-denied":{"post":{"operationId":"CalendarController_markGoogleCalendarScopeDenied","parameters":[],"responses":{"201":{"description":""}},"tags":["calendar"],"security":[{"bearer":[]}]}},"/api/calendar/google":{"delete":{"operationId":"CalendarController_disconnectGoogleCalendar","parameters":[],"responses":{"200":{"description":""}},"tags":["calendar"],"security":[{"bearer":[]}]}},"/api/calendar/events/upcoming":{"get":{"operationId":"CalendarController_getUpcomingEvents","parameters":[],"responses":{"200":{"description":""}},"tags":["calendar"],"security":[{"bearer":[]}]}},"/api/search":{"get":{"operationId":"SearchController_search","parameters":[{"name":"q","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["search"],"security":[{"bearer":[]}]}},"/api/audit":{"get":{"operationId":"AuditController_getLogs","parameters":[],"responses":{"200":{"description":""}},"tags":["audit"],"security":[{"bearer":[]}]}},"/api/health":{"get":{"operationId":"HealthController_health","parameters":[],"responses":{"200":{"description":""}}}}},"info":{"title":"Brifo API","description":"Bot-free AI meeting workspace API","version":"0.1.0","contact":{}},"tags":[],"servers":[],"components":{"securitySchemes":{"bearer":{"scheme":"bearer","bearerFormat":"JWT","type":"http"}},"schemas":{"GoogleAuthDto":{"type":"object","properties":{}},"UpdateEmailSummaryDto":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether to email the user a PDF summary after meeting notes are generated."}},"required":["enabled"]},"UpsertTranscriptDto":{"type":"object","properties":{}},"GenerateNotesDto":{"type":"object","properties":{}},"ChatMeetingDto":{"type":"object","properties":{}},"UpdateGeneratedDocumentDto":{"type":"object","properties":{}},"CreateTaskDto":{"type":"object","properties":{}},"UpdateTaskDto":{"type":"object","properties":{}},"ApproveTaskDto":{"type":"object","properties":{}},"ConnectJiraDto":{"type":"object","properties":{}},"UpdateJiraProjectKeyDto":{"type":"object","properties":{}},"UpdateJiraDefaultsDto":{"type":"object","properties":{}},"UpdateJiraApiTokenDto":{"type":"object","properties":{}},"ConnectLinearDto":{"type":"object","properties":{}},"ConnectLinearWithKeyDto":{"type":"object","properties":{}},"ExchangeLinearOAuthDto":{"type":"object","properties":{}},"UpdateLinearDefaultsDto":{"type":"object","properties":{}},"UpdateDefaultPmTargetDto":{"type":"object","properties":{}},"ConnectOpenProjectDto":{"type":"object","properties":{}},"ConnectOpenProjectWithTokenDto":{"type":"object","properties":{}},"UpdateOpenProjectDefaultsDto":{"type":"object","properties":{}},"StartMeetingDto":{"type":"object","properties":{}},"StopMeetingDto":{"type":"object","properties":{}},"UpdateSpeakerMapDto":{"type":"object","properties":{}},"ConnectGoogleCalendarDto":{"type":"object","properties":{}}}}}