{"openapi":"3.0.0","paths":{"/expense-receipts/parse":{"post":{"description":"Yüklenen fiş görselini Gemini ile analiz eder; alakasız veya fiş olmayan görselleri reddeder.","operationId":"ExpenseReceiptsController_parseExpenseReceipt","parameters":[],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"receiptFile":{"type":"string","format":"binary","description":"İşlenecek masraf fişi görseli"},"modelId":{"type":"string","description":"Kullanılacak Gemini modeli ID'si","default":"gemini-2.5-flash-lite"}},"required":["receiptFile"]}}}},"responses":{"200":{"description":"Masraf fişi başarıyla işlendi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParseExpenseReceiptResponseDto"}}}}},"summary":"Yapay zeka ile masraf fişi görselini ayıklar","tags":["expense-receipts"]}},"/invoices/parse":{"post":{"description":"Yüklenen fatura dosyasını yapay zeka modelleri ile analiz eder ve belirtilen alanları yapılandırılmış JSON formatında geri döndürür.","operationId":"InvoiceController_parseInvoice","parameters":[],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"invoiceFile":{"type":"string","format":"binary","description":"İşlenecek fatura dosyası (PDF, PNG, JPG vb.)"},"fields":{"type":"string","description":"Ayıklanması istenen alanların JSON formatındaki listesi (Opsiyonel)","example":"[{\"key\":\"toplam_tutar\",\"label\":\"Toplam Tutar\",\"type\":\"NUMBER\",\"description\":\"Faturadaki KDV dahil toplam ödenecek tutar\"}]"},"modelId":{"type":"string","description":"Kullanılacak Gemini modeli ID'si","enum":["gemini-1.5-flash","gemini-1.5-pro","gemini-2.0-flash-exp","gemini-2.5-flash-lite","gemini-2.5-flash","gemini-3-flash-preview"],"default":"gemini-2.5-flash-lite"}},"required":["invoiceFile"]}}}},"responses":{"200":{"description":"Fatura başarıyla işlendi ve veriler ayıklandı","content":{"application/json":{"schema":{"type":"object"}}}}},"summary":"Yapay zeka kullanarak fatura (PDF veya Görsel) içeriğini ayıklar","tags":["invoices"]}},"/knowledge-sources/text":{"post":{"operationId":"KnowledgeSourcesController_createTextSource","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateTextSourceDto"}}}},"responses":{"201":{"description":""}},"tags":["knowledge-sources"]}},"/knowledge-sources/url":{"post":{"operationId":"KnowledgeSourcesController_createUrlSource","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateUrlSourceDto"}}}},"responses":{"201":{"description":""}},"tags":["knowledge-sources"]}},"/knowledge-sources/file":{"post":{"operationId":"KnowledgeSourcesController_createFileSource","parameters":[],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"file":{"type":"string","format":"binary"},"name":{"type":"string"},"metadata":{"type":"string","description":"JSON string"}},"required":["file"]}}}},"responses":{"201":{"description":""}},"tags":["knowledge-sources"]}},"/knowledge-sources":{"get":{"operationId":"KnowledgeSourcesController_listSources","parameters":[],"responses":{"200":{"description":""}},"tags":["knowledge-sources"]}},"/knowledge-sources/{id}":{"get":{"operationId":"KnowledgeSourcesController_getSourceDetail","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["knowledge-sources"]},"delete":{"operationId":"KnowledgeSourcesController_deleteSource","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["knowledge-sources"]}},"/knowledge-sources/{id}/chunks":{"get":{"operationId":"KnowledgeSourcesController_getSourceChunks","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["knowledge-sources"]}},"/knowledge-sources/{id}/metadata":{"patch":{"operationId":"KnowledgeSourcesController_updateSourceMetadata","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateSourceMetadataDto"}}}},"responses":{"200":{"description":""}},"tags":["knowledge-sources"]}},"/knowledge-sources/{id}/reindex":{"post":{"operationId":"KnowledgeSourcesController_reindexSource","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":""}},"tags":["knowledge-sources"]}},"/chat/ask":{"post":{"operationId":"ChatController_ask","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AskChatDto"}}}},"responses":{"201":{"description":""}},"tags":["chat"]}},"/chat/traces":{"get":{"operationId":"ChatController_listTraces","parameters":[{"name":"page","required":false,"in":"query","schema":{"example":1,"type":"number"}},{"name":"pageSize","required":false,"in":"query","schema":{"example":20,"type":"number"}},{"name":"search","required":false,"in":"query","schema":{"type":"string"}},{"name":"sessionId","required":false,"in":"query","schema":{"type":"string"}},{"name":"userId","required":false,"in":"query","schema":{"type":"string"}},{"name":"traceStatus","required":false,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["chat"]}},"/chat/traces/{messageId}":{"get":{"operationId":"ChatController_getTraceDetail","parameters":[{"name":"messageId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["chat"]}},"/chat/sessions/{id}/messages":{"get":{"operationId":"ChatController_getSessionMessages","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["chat"]}},"/agent/ask":{"post":{"operationId":"AgentController_ask","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AskAgentDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"tags":["agent"]}},"/agent/tools":{"get":{"operationId":"AgentController_listTools","parameters":[],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["agent"]},"post":{"operationId":"AgentController_createTool","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAgentToolDto"}}}},"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"tags":["agent"]}},"/agent/tools/{id}":{"put":{"operationId":"AgentController_replaceTool","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateAgentToolDto"}}}},"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["agent"]},"patch":{"operationId":"AgentController_updateTool","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateAgentToolDto"}}}},"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["agent"]},"delete":{"operationId":"AgentController_deleteTool","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["agent"]}},"/agent/tools/sync":{"post":{"operationId":"AgentController_syncTools","parameters":[],"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"tags":["agent"]},"get":{"operationId":"AgentController_syncToolsFromBrowser","parameters":[],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["agent"]}},"/agent/tools/sync-runs":{"get":{"operationId":"AgentController_listSyncRuns","parameters":[],"responses":{"200":{"description":""}},"security":[{"bearer":[]}],"tags":["agent"]}},"/agent/proposals/{id}/execute":{"post":{"operationId":"AgentController_executeProposal","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"tags":["agent"]}},"/agent/proposals/{id}/reject":{"post":{"operationId":"AgentController_rejectProposal","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":""}},"security":[{"bearer":[]}],"tags":["agent"]}},"/health":{"get":{"operationId":"HealthController_getHealth","parameters":[],"responses":{"200":{"description":""}},"tags":["Health"]}}},"info":{"title":"CineCost AI API","description":"CineCost AI RAG service endpoints","version":"1.0.0","contact":{}},"tags":[],"servers":[],"components":{"schemas":{"ParseExpenseReceiptResponseDto":{"type":"object","properties":{"data":{"type":"object","description":"Masraf fişinden çıkarılan ortak alanlar ve satır listesi"},"error":{"type":"string","description":"İşlem sırasında hata oluşursa açıklayıcı hata mesajı"},"metrics":{"type":"object","description":"İşlem performansı metrikleri"}}},"CreateTextSourceDto":{"type":"object","properties":{"name":{"type":"string","example":"Refund Policy"},"content":{"type":"string","example":"Customers can request a refund within 14 days."},"metadata":{"type":"object","additionalProperties":true,"example":{"tags":["refund","billing"]}}},"required":["name","content"]},"CreateUrlSourceDto":{"type":"object","properties":{"name":{"type":"string","example":"Refund Policy Page"},"url":{"type":"string","example":"https://example.com/refund-policy"},"metadata":{"type":"object","additionalProperties":true,"example":{"tags":["policy"]}}},"required":["name","url"]},"UpdateSourceMetadataDto":{"type":"object","properties":{"metadata":{"type":"object","additionalProperties":true,"example":{"tenantId":"tenant_123","tags":["onboarding","policy"],"language":"tr"}},"mode":{"type":"string","enum":["merge","replace"],"default":"merge","description":"merge: existing metadata ile birleştirir, replace: metadata alanını tamamen değiştirir."}},"required":["metadata"]},"PageContextDto":{"type":"object","properties":{"path":{"type":"string","example":"/masraf-fisleri"},"titleKey":{"type":"string","example":"masraf_fisleri"},"module":{"type":"string","example":"masraf_fisleri"},"activeFilters":{"type":"object","example":{"belgeTarihiBaslangic":"2026-04-29","belgeTipi":4}},"selectedEntities":{"type":"object","example":{"selectedKasa":{"kasaId":12,"kasaAd":"Ana Kasa"}}},"timezone":{"type":"string","example":"Europe/Istanbul"},"locale":{"type":"string","example":"tr-TR"}},"required":["path"]},"UserContextDto":{"type":"object","properties":{"userId":{"type":"string","example":"42"},"userName":{"type":"string","example":"Kadir"}},"required":["userId"]},"RequestContextDto":{"type":"object","properties":{"kind":{"type":"string","enum":["user_message","error_analysis"],"example":"error_analysis"}}},"AskChatDto":{"type":"object","properties":{"sessionId":{"type":"string","example":"session_123"},"message":{"type":"string","example":"What is the refund period?"},"topK":{"type":"number","example":5,"minimum":1,"maximum":20},"minScore":{"type":"number","example":0.15,"minimum":0,"maximum":1},"pageContext":{"$ref":"#/components/schemas/PageContextDto"},"userContext":{"$ref":"#/components/schemas/UserContextDto"},"platform":{"type":"string","enum":["web","mobile"],"example":"web"},"requestContext":{"$ref":"#/components/schemas/RequestContextDto"}},"required":["message"]},"AskAgentDto":{"type":"object","properties":{"sessionId":{"type":"string","example":"session_123"},"message":{"type":"string","example":"Bu ayki en yüksek 5 masrafı listele."},"topK":{"type":"number","example":5,"minimum":1,"maximum":20},"minScore":{"type":"number","example":0.15,"minimum":0,"maximum":1},"pageContext":{"$ref":"#/components/schemas/PageContextDto"},"platform":{"type":"string","enum":["web","mobile"],"example":"web"},"userContext":{"$ref":"#/components/schemas/UserContextDto"},"requestContext":{"$ref":"#/components/schemas/RequestContextDto"}},"required":["message"]},"CreateAgentToolDto":{"type":"object","properties":{"name":{"type":"string"},"description":{"type":"string"},"method":{"type":"string"},"path":{"type":"string"},"inputSchema":{"type":"object"},"outputProjection":{"type":"object"},"riskLevel":{"type":"string","enum":["read","write","dangerous"]},"requiresConfirmation":{"type":"boolean"},"enabled":{"type":"boolean"},"status":{"type":"string","enum":["draft","published","deprecated"]}},"required":["name","description","method","path","inputSchema"]},"UpdateAgentToolDto":{"type":"object","properties":{"name":{"type":"string"},"method":{"type":"string"},"path":{"type":"string"},"description":{"type":"string"},"inputSchema":{"type":"object"},"outputProjection":{"type":"object"},"riskLevel":{"type":"string","enum":["read","write","dangerous"]},"requiresConfirmation":{"type":"boolean"},"enabled":{"type":"boolean"},"status":{"type":"string","enum":["draft","published","deprecated"]}}}}}}