{"openapi":"3.1.0","jsonSchemaDialect":"https://json-schema.org/draft/2020-12/schema","info":{"title":"MerkeziHesap API","version":"1.0.0","description":"MerkeziHesap muhasebe API'si. Her iş birimi bir **operasyondur** (`journal.create`, `invoice.issue`…);\nweb arayüzü, bu API, `mh` CLI'ı, MCP sunucusu ve asistan aynı operasyonları çağırır.\n\n- **Kimlik:** `Authorization: Bearer <token>` — token şirkete bağlıdır (Entegrasyon › API Anahtarları).\n  Etkin yetki = token yetkileri ∩ kullanıcının o şirketteki izinleri.\n- **Generic uç:** `POST /operations/{ad}` her operasyonu çalıştırır; REST yolları (`GET /invoices`,\n  `POST /invoices/{id}/issue` …) aynı operasyona giden takma adlardır (izin, doğrulama, idempotency ve\n  audit birebir aynıdır). `GET` yolları yalnız okuma operasyonlarına bağlanır.\n- **Girdi:** path parametreleri + query string + JSON gövde birleşir. Tutarlar ondalık metin olarak\n  gönderilir/döner (`\"1250.00\"`). Sayfalama `?page=&per_page=` (≤ 200).\n- **Idempotency:** `x-risk: commit` operasyonlarda `Idempotency-Key` başlığı zorunludur (428);\n  tekrar gönderimde kayıtlı yanıt `Idempotent-Replayed: true` ile döner.\n- **Önizleme:** `?dry_run=1` işlemi çalıştırır ama veritabanını geri alır.\n- **Hatalar:** `{status:false, message, code, errors}`; `code` makine tarafından okunur.\n- **Hız sınırı:** token başına dakikada 120 istek.\n\n`x-permission` alanları bilgi amaçlıdır; yetki her istekte sunucuda denetlenir.","contact":{"name":"MerkeziHesap","url":"https://merkezihesap.com"}},"servers":[{"url":"https://merkezihesap.com/api/v1"}],"security":[{"bearer":[]}],"tags":[{"name":"platform","description":"Kimlik, şirket ve operasyon kataloğu"},{"name":"account","description":"`account.*` operasyonları ve REST takma adları"},{"name":"account_mapping","description":"`account_mapping.*` operasyonları ve REST takma adları"},{"name":"accountant_access","description":"`accountant_access.*` operasyonları ve REST takma adları"},{"name":"attachment","description":"`attachment.*` operasyonları ve REST takma adları"},{"name":"background_tasks","description":"`background_tasks.*` operasyonları ve REST takma adları"},{"name":"bank_account","description":"`bank_account.*` operasyonları ve REST takma adları"},{"name":"bank_application","description":"`bank_application.*` operasyonları ve REST takma adları"},{"name":"bank_document","description":"`bank_document.*` operasyonları ve REST takma adları"},{"name":"bank_integration","description":"`bank_integration.*` operasyonları ve REST takma adları"},{"name":"bank_posting","description":"`bank_posting.*` operasyonları ve REST takma adları"},{"name":"bank_reconciliation","description":"`bank_reconciliation.*` operasyonları ve REST takma adları"},{"name":"bank_report","description":"`bank_report.*` operasyonları ve REST takma adları"},{"name":"bank_transaction","description":"`bank_transaction.*` operasyonları ve REST takma adları"},{"name":"billing","description":"`billing.*` operasyonları ve REST takma adları"},{"name":"bulk_pdf","description":"`bulk_pdf.*` operasyonları ve REST takma adları"},{"name":"cash_account","description":"`cash_account.*` operasyonları ve REST takma adları"},{"name":"closing","description":"`closing.*` operasyonları ve REST takma adları"},{"name":"company","description":"`company.*` operasyonları ve REST takma adları"},{"name":"company_copy","description":"`company_copy.*` operasyonları ve REST takma adları"},{"name":"contact","description":"`contact.*` operasyonları ve REST takma adları"},{"name":"cost_center","description":"`cost_center.*` operasyonları ve REST takma adları"},{"name":"credit_card","description":"`credit_card.*` operasyonları ve REST takma adları"},{"name":"custom_report","description":"`custom_report.*` operasyonları ve REST takma adları"},{"name":"dashboard","description":"`dashboard.*` operasyonları ve REST takma adları"},{"name":"despatch","description":"`despatch.*` operasyonları ve REST takma adları"},{"name":"due_reminder","description":"`due_reminder.*` operasyonları ve REST takma adları"},{"name":"edespatch","description":"`edespatch.*` operasyonları ve REST takma adları"},{"name":"edocument","description":"`edocument.*` operasyonları ve REST takma adları"},{"name":"employee","description":"`employee.*` operasyonları ve REST takma adları"},{"name":"esmm","description":"`esmm.*` operasyonları ve REST takma adları"},{"name":"expense","description":"`expense.*` operasyonları ve REST takma adları"},{"name":"expense_category","description":"`expense_category.*` operasyonları ve REST takma adları"},{"name":"export","description":"`export.*` operasyonları ve REST takma adları"},{"name":"firm","description":"`firm.*` operasyonları ve REST takma adları"},{"name":"fixed_asset","description":"`fixed_asset.*` operasyonları ve REST takma adları"},{"name":"freelance_receipt","description":"`freelance_receipt.*` operasyonları ve REST takma adları"},{"name":"import","description":"`import.*` operasyonları ve REST takma adları"},{"name":"instrument","description":"`instrument.*` operasyonları ve REST takma adları"},{"name":"invitation","description":"`invitation.*` operasyonları ve REST takma adları"},{"name":"invoice","description":"`invoice.*` operasyonları ve REST takma adları"},{"name":"journal","description":"`journal.*` operasyonları ve REST takma adları"},{"name":"journal_template","description":"`journal_template.*` operasyonları ve REST takma adları"},{"name":"ledger","description":"`ledger.*` operasyonları ve REST takma adları"},{"name":"loan","description":"`loan.*` operasyonları ve REST takma adları"},{"name":"payment","description":"`payment.*` operasyonları ve REST takma adları"},{"name":"payroll","description":"`payroll.*` operasyonları ve REST takma adları"},{"name":"period","description":"`period.*` operasyonları ve REST takma adları"},{"name":"pos","description":"`pos.*` operasyonları ve REST takma adları"},{"name":"posting_rule","description":"`posting_rule.*` operasyonları ve REST takma adları"},{"name":"product","description":"`product.*` operasyonları ve REST takma adları"},{"name":"project","description":"`project.*` operasyonları ve REST takma adları"},{"name":"quote","description":"`quote.*` operasyonları ve REST takma adları"},{"name":"reconciliation","description":"`reconciliation.*` operasyonları ve REST takma adları"},{"name":"recurring_invoice","description":"`recurring_invoice.*` operasyonları ve REST takma adları"},{"name":"report","description":"`report.*` operasyonları ve REST takma adları"},{"name":"settings","description":"`settings.*` operasyonları ve REST takma adları"},{"name":"statement_mapping","description":"`statement_mapping.*` operasyonları ve REST takma adları"},{"name":"stock","description":"`stock.*` operasyonları ve REST takma adları"},{"name":"tax","description":"`tax.*` operasyonları ve REST takma adları"},{"name":"tax_calendar","description":"`tax_calendar.*` operasyonları ve REST takma adları"},{"name":"team","description":"`team.*` operasyonları ve REST takma adları"},{"name":"transfer","description":"`transfer.*` operasyonları ve REST takma adları"},{"name":"warehouse","description":"`warehouse.*` operasyonları ve REST takma adları"},{"name":"webhook","description":"`webhook.*` operasyonları ve REST takma adları"}],"paths":{"/me":{"get":{"operationId":"platform_me","summary":"Kullanıcı, aktif şirket, token yetkileri ve etkin izinler.","tags":["platform"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Kimlik bilgisi","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/operations":{"get":{"operationId":"platform_operations_list","summary":"Bu token'ın çağırabildiği operasyonlar (kanal + izin ∩ yetki süzgeci) ve girdi şemaları.","tags":["platform"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Operasyon listesi: `[{name, description, risk, permission, idempotency_key, input_schema}]`","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/operations/account.create":{"post":{"operationId":"account_create","summary":"Bir üst hesabın altına alt hesap açar; kod verilmezse sıradaki kod atanır.","description":"**Risk:** Taslak · **İzin:** `accounts_chart.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["account"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"account.create","x-risk":"draft","x-permission":"accounts_chart.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/account_create.input"}}}}}},"/operations/account.get":{"post":{"operationId":"account_get","summary":"Tek bir hesabı (kimlik veya kod ile) toplam ve yıl başından bugüne bakiyesiyle döner.","description":"**Risk:** Okuma · **İzin:** `ledger.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["account"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"account.get","x-risk":"read","x-permission":"ledger.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/account_get.input"}}}}}},"/operations/account.list":{"post":{"operationId":"account_list","summary":"Hesap planını listeler; kod/ad araması, kod öneki, yalnız yaprak ve aktif hesap süzgeçleri vardır.","description":"**Risk:** Okuma · **İzin:** `ledger.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["account"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"account.list","x-risk":"read","x-permission":"ledger.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/account_list.input"}}}}}},"/operations/account.update":{"post":{"operationId":"account_update","summary":"Hesabın adını, aktifliğini, cari zorunluluğunu veya (hareketi yoksa) para birimini günceller.","description":"**Risk:** Taslak · **İzin:** `accounts_chart.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["account"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"account.update","x-risk":"draft","x-permission":"accounts_chart.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/account_update.input"}}}}}},"/operations/account_mapping.list":{"post":{"operationId":"account_mapping_list","summary":"Otomatik fişlerin kullandığı anahtar → hesap eşlemelerini (varsayılan kodlarıyla) listeler.","description":"**Risk:** Okuma · **İzin:** `ledger.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["account_mapping"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"account_mapping.list","x-risk":"read","x-permission":"ledger.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/account_mapping_list.input"}}}}}},"/operations/account_mapping.update":{"post":{"operationId":"account_mapping_update","summary":"Bir eşleme anahtarının (ör. sales.goods, bank.fees) kullanacağı hesabı değiştirir.","description":"**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `accounts_chart.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["account_mapping"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"account_mapping.update","x-risk":"commit","x-permission":"accounts_chart.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/account_mapping_update.input"}}}}}},"/operations/accountant_access.approve":{"post":{"operationId":"accountant_access_approve","summary":"Bir mali müşavir bürosunun şirkete gönderdiği bağlantı davetini onaylar ve verilecek izinleri belirler (boş = varsayılan set). Onaylanınca büro ekibi şirketin muhasebesine erişir.","description":"**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `accountant_access.manage` · **Kanallar:** web, api, cli, mcp, assistant","tags":["accountant_access"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"accountant_access.approve","x-risk":"commit","x-permission":"accountant_access.manage","x-channels":["web","api","cli","mcp","assistant"],"x-idempotency":"required","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/accountant_access_approve.input"}}}}}},"/operations/accountant_access.document_request_download":{"post":{"operationId":"accountant_access_document_request_download","summary":"Mali müşavirin belge talebine yüklenmiş bir dosyayı döner (şirket tarafı): dosya adı, MIME, boyut ve base64 içerik (accountant_access.document_requests → requests[].files[].id).","description":"**Risk:** Okuma · **İzin:** `accountant_access.manage|documents.view` · **Kanallar:** web, api, cli, mcp, assistant","tags":["accountant_access"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"accountant_access.document_request_download","x-risk":"read","x-permission":"accountant_access.manage|documents.view","x-channels":["web","api","cli","mcp","assistant"],"x-idempotency":"optional","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/accountant_access_document_request_download.input"}}}}}},"/operations/accountant_access.document_request_upload":{"post":{"operationId":"accountant_access_document_request_upload","summary":"Mali müşavir bürosunun belge talebine şirket adına dosya yükler (multipart/form-data \"file\"; PDF, JPG, PNG, XLS(X), CSV, XML, ZIP, DOC(X), TXT; en çok 20 MB). Talep \"yüklendi\" durumuna geçer; tamamlanmış/iptal talebe yüklenemez.","description":"**Risk:** Taslak · **İzin:** `accountant_access.manage|documents.view` · **Kanallar:** web, api, cli","tags":["accountant_access"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"accountant_access.document_request_upload","x-risk":"draft","x-permission":"accountant_access.manage|documents.view","x-channels":["web","api","cli"],"x-idempotency":"recommended","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/accountant_access_document_request_upload.input"}},"multipart/form-data":{"schema":{"$ref":"#/components/schemas/accountant_access_document_request_upload.input"}}}}}},"/operations/accountant_access.document_requests":{"post":{"operationId":"accountant_access_document_requests","summary":"Mali müşavir bürosunun şirketten talep ettiği belgeleri listeler: başlık, açıklama, dönem, son tarih, durum (açık / yüklendi / tamamlandı), yüklenmiş dosyalar. Kullanıcı dosyayı sohbete eklerse chat_file.document_request_upload ile talebe yüklenir.","description":"**Risk:** Okuma · **İzin:** `accountant_access.manage|documents.view` · **Kanallar:** web, api, cli, mcp, assistant","tags":["accountant_access"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"accountant_access.document_requests","x-risk":"read","x-permission":"accountant_access.manage|documents.view","x-channels":["web","api","cli","mcp","assistant"],"x-idempotency":"optional","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/accountant_access_document_requests.input"}}}}}},"/operations/accountant_access.invite":{"post":{"operationId":"accountant_access_invite","summary":"Mali müşavir bürosunu VKN veya e-posta ile şirkete davet eder (yalnız doğrulanmış bürolar); büro onayladığında verilen izinlerle erişim başlar. İzin verilmezse varsayılan \"Mali müşavir\" seti. Ekip, şirket bilgileri ve müşavir yönetimi izinleri büroya verilemez.","description":"**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `accountant_access.manage` · **Kanallar:** web, api, cli, mcp, assistant","tags":["accountant_access"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"accountant_access.invite","x-risk":"commit","x-permission":"accountant_access.manage","x-channels":["web","api","cli","mcp","assistant"],"x-idempotency":"required","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/accountant_access_invite.input"}}}}}},"/operations/accountant_access.list":{"post":{"operationId":"accountant_access_list","summary":"Şirketin mali müşavir (büro) bağlantılarını listeler: büro adı, durum (aktif / davet bekliyor), verilen izinler ve büroda bu şirketi gören kişiler; ayrıca büroya verilebilecek izinler ve varsayılan set.","description":"**Risk:** Okuma · **İzin:** `accountant_access.manage` · **Kanallar:** web, api, cli, mcp, assistant","tags":["accountant_access"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"accountant_access.list","x-risk":"read","x-permission":"accountant_access.manage","x-channels":["web","api","cli","mcp","assistant"],"x-idempotency":"optional","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/accountant_access_list.input"}}}}}},"/operations/accountant_access.revoke":{"post":{"operationId":"accountant_access_revoke","summary":"Mali müşavir bürosunun şirkete erişimini anında kaldırır ya da bekleyen daveti geri çeker/reddeder; büro atamaları kapanır.","description":"**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `accountant_access.manage` · **Kanallar:** web, api, cli, mcp, assistant","tags":["accountant_access"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"accountant_access.revoke","x-risk":"commit","x-permission":"accountant_access.manage","x-channels":["web","api","cli","mcp","assistant"],"x-idempotency":"required","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/accountant_access_revoke.input"}}}}}},"/operations/accountant_access.update":{"post":{"operationId":"accountant_access_update","summary":"Mali müşavir bürosuna verilen izin setini değiştirir (en az bir izin; erişimi tamamen kapatmak için accountant_access.revoke). Sahip olmayan kullanıcı yalnız kendi sahip olduğu izinleri verebilir.","description":"**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `accountant_access.manage` · **Kanallar:** web, api, cli, mcp, assistant","tags":["accountant_access"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"accountant_access.update","x-risk":"commit","x-permission":"accountant_access.manage","x-channels":["web","api","cli","mcp","assistant"],"x-idempotency":"required","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/accountant_access_update.input"}}}}}},"/operations/attachment.delete":{"post":{"operationId":"attachment_delete","summary":"Eki siler. Yalnız taslak kayda bağlı ekler silinebilir; kesinleşmiş kaydın eki denetim izi için korunur.","description":"**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `ledger.post|invoices.manage|expenses.manage|payments.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["attachment"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"attachment.delete","x-risk":"commit","x-permission":"ledger.post|invoices.manage|expenses.manage|payments.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/attachment_delete.input"}}}}}},"/operations/attachment.download":{"post":{"operationId":"attachment_download","summary":"Bir ekin (fiş, fatura, masraf, tahsilat/ödeme, sabit kıymet eki) dosyasını döner: dosya adı, MIME, boyut ve base64 içerik. 15 MB üstü dosyalar API ile döndürülmez.","description":"**Risk:** Okuma · **İzin:** `ledger.view|invoices.view|expenses.view|payments.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["attachment"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"attachment.download","x-risk":"read","x-permission":"ledger.view|invoices.view|expenses.view|payments.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/attachment_download.input"}}}}}},"/operations/attachment.list":{"post":{"operationId":"attachment_list","summary":"Bir fişin (veya fatura, masraf, tahsilat/ödeme, sabit kıymet kaydının) eklerini listeler.","description":"**Risk:** Okuma · **İzin:** `ledger.view|invoices.view|expenses.view|payments.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["attachment"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"attachment.list","x-risk":"read","x-permission":"ledger.view|invoices.view|expenses.view|payments.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/attachment_list.input"}}}}}},"/operations/attachment.search":{"post":{"operationId":"attachment_search","summary":"Belge deposu: şirketin fiş, fatura, masraf, tahsilat/ödeme ve sabit kıymet eklerini dosya adı, tür ve tarih aralığıyla arar.","description":"**Risk:** Okuma · **İzin:** `ledger.view|invoices.view|expenses.view|payments.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["attachment"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"attachment.search","x-risk":"read","x-permission":"ledger.view|invoices.view|expenses.view|payments.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/attachment_search.input"}}}}}},"/operations/attachment.upload":{"post":{"operationId":"attachment_upload","summary":"Kayda dosya eki yükler (PDF, JPG, PNG, XML, XLSX, CSV; en çok 10 MB). API'de multipart/form-data \"file\" alanı. Kesinleşmiş fişe de ek eklenebilir.","description":"**Risk:** Taslak · **İzin:** `ledger.post|invoices.manage|expenses.manage|payments.manage` · **Kanallar:** web, api, cli","tags":["attachment"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"attachment.upload","x-risk":"draft","x-permission":"ledger.post|invoices.manage|expenses.manage|payments.manage","x-channels":["web","api","cli"],"x-idempotency":"recommended","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/attachment_upload.input"}},"multipart/form-data":{"schema":{"$ref":"#/components/schemas/attachment_upload.input"}}}}}},"/operations/background_tasks.list":{"post":{"operationId":"background_tasks_list","summary":"Arka plan işlerinin birleşik listesi (aktarım, dönem sonu, e-Belge, banka muhasebeleştirme, banka senkronu); durum: active | failed | done.","description":"**Risk:** Okuma · **İzin:** `bank_accounts.view|transactions.view|reports.view|documents.view|integrations.view|team.view|ledger.view|contacts.view|products.view|invoices.view|payments.view|expenses.view|einvoice.view|custom_reports.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["background_tasks"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"background_tasks.list","x-risk":"read","x-permission":"bank_accounts.view|transactions.view|reports.view|documents.view|integrations.view|team.view|ledger.view|contacts.view|products.view|invoices.view|payments.view|expenses.view|einvoice.view|custom_reports.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/background_tasks_list.input"}}}}}},"/operations/bank_account.balances":{"post":{"operationId":"bank_account_balances","summary":"Banka hesaplarının güncel bakiyelerini ve toplam nakdi seçilen para biriminde (TCMB kuru) döner; hesap seçilmezse bugün giren/çıkan ve entegrasyon sağlığı da gelir.","description":"**Risk:** Okuma · **İzin:** `bank_accounts.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["bank_account"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"bank_account.balances","x-risk":"read","x-permission":"bank_accounts.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/bank_account_balances.input"}}}}}},"/operations/bank_account.create":{"post":{"operationId":"bank_account_create","summary":"Şirkete elle banka hesabı tanıtır (entegrasyon kurulmadan): hesap adı, banka (provider_slug veya bank_name), IBAN ve/veya hesap no, şube, para birimi. IBAN mod-97 ile doğrulanır; aynı IBAN/hesap no ikinci kez eklenemez. Şifre/API anahtarı ALMAZ (banka bağlantısı yalnız Bankalar ekranından kurulur). Hesap banka başvuru evraklarına yazılır.","description":"**Risk:** Taslak · **İzin:** `integrations.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["bank_account"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"bank_account.create","x-risk":"draft","x-permission":"integrations.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/bank_account_create.input"}}}}}},"/operations/bank_account.delete":{"post":{"operationId":"bank_account_delete","summary":"Elle tanıtılmış bir banka hesabını kaldırır; geçmiş hareketleri korunur. Banka entegrasyonundan gelen hesap silinemez (bağlantı Bankalar ekranından kaldırılır).","description":"**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `integrations.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["bank_account"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"bank_account.delete","x-risk":"commit","x-permission":"integrations.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/bank_account_delete.input"}}}}}},"/operations/bank_account.get":{"post":{"operationId":"bank_account_get","summary":"Tek banka hesabının ayrıntısını döner: banka, ad, IBAN, hesap no, şube adı/kodu, para birimi, bakiye, aktif/manuel takip/rapor dışı bayrakları, banka formlarında kullanım, not ve kaynağı (elle tanıtıldı / senkron).","description":"**Risk:** Okuma · **İzin:** `bank_accounts.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["bank_account"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"bank_account.get","x-risk":"read","x-permission":"bank_accounts.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/bank_account_get.input"}}}}}},"/operations/bank_account.link_ledger":{"post":{"operationId":"bank_account_link_ledger","summary":"Banka hesabını muhasebe hesabına bağlar (TL 102.01.xxx, döviz 102.02.xxx). bank_account_id ya da all:true verilir; zaten bağlı hesaplar değişmez.","description":"**Risk:** Taslak · **İzin:** `accounts_chart.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["bank_account"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"bank_account.link_ledger","x-risk":"draft","x-permission":"accounts_chart.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/bank_account_link_ledger.input"}}}}}},"/operations/bank_account.list":{"post":{"operationId":"bank_account_list","summary":"Şirketin banka hesaplarını listeler: banka, hesap adı, IBAN, hesap no, para birimi, bankanın bildirdiği güncel/kullanılabilir bakiye, son bakiye zamanı, aktif/manuel takip/rapor dışı bayrakları.","description":"**Risk:** Okuma · **İzin:** `bank_accounts.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["bank_account"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"bank_account.list","x-risk":"read","x-permission":"bank_accounts.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/bank_account_list.input"}}}}}},"/operations/bank_account.update":{"post":{"operationId":"bank_account_update","summary":"Banka hesabının adını, şubesini, notunu, \"banka formlarında kullan\" ve \"raporlardan hariç tut\" tercihlerini; elle tanıtılmış hesapta ayrıca IBAN, hesap no, banka ve para birimini günceller. Yalnız verilen alanlar değişir. Entegrasyondan gelen hesabın IBAN/hesap no/para birimi değiştirilemez.","description":"**Risk:** Taslak · **İzin:** `integrations.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["bank_account"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"bank_account.update","x-risk":"draft","x-permission":"integrations.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/bank_account_update.input"}}}}}},"/operations/bank_application.advance":{"post":{"operationId":"bank_application_advance","summary":"Banka başvurusunu bir sonraki aşamaya işaretler: stage=submitted (imzalı form bankaya iletildi; önce form üretilmiş olmalı) veya stage=credentials (banka kullanıcı bilgilerini gönderdi; bilgiler asistana YAZILMAZ, Bankalar ekranından girilir — girilmişse başvuru aktif olur).","description":"**Risk:** Taslak · **İzin:** `integrations.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["bank_application"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"bank_application.advance","x-risk":"draft","x-permission":"integrations.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/bank_application_advance.input"}}}}}},"/operations/bank_application.list":{"post":{"operationId":"bank_application_list","summary":"Banka entegrasyon başvurularını listeler: banka, aşama (temsilciyle iletişim → banka yanıtı → bilgi toplama → form → bankaya iletildi → kullanıcı bilgileri → aktif), durum, bilgi toplama ilerlemesi, eksik alanlar ve sıradaki adım.","description":"**Risk:** Okuma · **İzin:** `integrations.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["bank_application"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"bank_application.list","x-risk":"read","x-permission":"integrations.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/bank_application_list.input"}}}}}},"/operations/bank_document.delete":{"post":{"operationId":"bank_document_delete","summary":"Bir banka evrakını siler (dosya kaldırılır); gerektiğinde bank_document.generate ile yeniden üretilebilir.","description":"**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `documents.generate` · **Kanallar:** web, api, cli, mcp, assistant","tags":["bank_document"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"bank_document.delete","x-risk":"commit","x-permission":"documents.generate","x-channels":["web","api","cli","mcp","assistant"],"x-idempotency":"required","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/bank_document_delete.input"}}}}}},"/operations/bank_document.download":{"post":{"operationId":"bank_document_download","summary":"Hazır (üretilmiş) bir banka evrakının dosyasını indirir; asistanda sohbete indirilebilir dosya olarak eklenir.","description":"**Risk:** Okuma · **İzin:** `documents.view` · **Kanallar:** web, api, cli, mcp, assistant","tags":["bank_document"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"bank_document.download","x-risk":"read","x-permission":"documents.view","x-channels":["web","api","cli","mcp","assistant"],"x-idempotency":"optional","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/bank_document_download.input"}}}}}},"/operations/bank_document.generate":{"post":{"operationId":"bank_document_generate","summary":"Şirket bilgilerinden banka evraklarını üretir: scope=template (tek şablon, template_id), provider (bir bankanın tüm evrakları, provider_slug), common (tüm bankalar için ortak evraklar) veya all (seçili tüm bankalar). Eksik şirket bilgisi olan evrak \"taslak\" kalır ve eksik alanlar listelenir (company.settings.update ile tamamlanıp yeniden üretilir).","description":"**Risk:** Taslak · **İzin:** `documents.generate` · **Kanallar:** web, api, cli, mcp, assistant","tags":["bank_document"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"bank_document.generate","x-risk":"draft","x-permission":"documents.generate","x-channels":["web","api","cli","mcp","assistant"],"x-idempotency":"recommended","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/bank_document_generate.input"}}}}}},"/operations/bank_document.list":{"post":{"operationId":"bank_document_list","summary":"Banka evraklarını (şirket bilgilerinden üretilen başvuru/talimat belgeleri) listeler: banka, başlık, durum (hazır / eksik bilgi nedeniyle taslak / imzalandı…), eksik alanlar, dosya adı; ayrıca henüz üretilmemiş şablonlar (pending_templates, template_id ile bank_document.generate).","description":"**Risk:** Okuma · **İzin:** `documents.view` · **Kanallar:** web, api, cli, mcp, assistant","tags":["bank_document"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"bank_document.list","x-risk":"read","x-permission":"documents.view","x-channels":["web","api","cli","mcp","assistant"],"x-idempotency":"optional","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/bank_document_list.input"}}}}}},"/operations/bank_document.regenerate":{"post":{"operationId":"bank_document_regenerate","summary":"Bir banka evrakını güncel şirket bilgileri ve şablonun en güncel sürümüyle yeniden üretir (şirket bilgisi değiştikten veya eksik alan tamamlandıktan sonra).","description":"**Risk:** Taslak · **İzin:** `documents.generate` · **Kanallar:** web, api, cli, mcp, assistant","tags":["bank_document"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"bank_document.regenerate","x-risk":"draft","x-permission":"documents.generate","x-channels":["web","api","cli","mcp","assistant"],"x-idempotency":"recommended","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/bank_document_regenerate.input"}}}}}},"/operations/bank_integration.list":{"post":{"operationId":"bank_integration_list","summary":"Şirketin banka bağlantılarını listeler: banka, durum (aktif, duraklatıldı, hata, kimlik hatası), senkron sıklığı, son senkron, son hata, ardışık hata sayısı, hesap sayısı, senkron/yeniden deneme yapılabilir mi ve son senkron denemeleri.","description":"**Risk:** Okuma · **İzin:** `integrations.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["bank_integration"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"bank_integration.list","x-risk":"read","x-permission":"integrations.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/bank_integration_list.input"}}}}}},"/operations/bank_integration.retry":{"post":{"operationId":"bank_integration_retry","summary":"Hata veya kimlik hatası durumundaki banka bağlantısının kilidini açar (hata sayacı sıfırlanır) ve senkronu yeniden kuyruğa alır. Erişim bilgilerini değiştirmez; duraklatılmış bağlantıya uygulanmaz.","description":"**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `integrations.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["bank_integration"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"bank_integration.retry","x-risk":"commit","x-permission":"integrations.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/bank_integration_retry.input"}}}}}},"/operations/bank_integration.status":{"post":{"operationId":"bank_integration_status","summary":"Bir banka bağlantısının ayrıntılı durumunu döner: durum, son hata, ardışık hata sayısı, senkron sürüyor mu, bağlı hesaplar ve son senkron denemeleri (çekilen hareket sayısı, hata mesajı).","description":"**Risk:** Okuma · **İzin:** `integrations.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["bank_integration"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"bank_integration.status","x-risk":"read","x-permission":"integrations.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/bank_integration_status.input"}}}}}},"/operations/bank_integration.sync":{"post":{"operationId":"bank_integration_sync","summary":"Banka bağlantısı için hesap hareketi senkronunu kuyruğa alır (integration_id verilmezse uygun tüm bağlantılar). Duraklatılmış, kimlik hatalı veya bilgisi girilmemiş bağlantı senkronlanmaz; zaten süren senkron tekrar başlatılmaz.","description":"**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `integrations.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["bank_integration"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"bank_integration.sync","x-risk":"commit","x-permission":"integrations.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/bank_integration_sync.input"}}}}}},"/operations/bank_posting.approve":{"post":{"operationId":"bank_posting_approve","summary":"Banka hareketinin muhasebe önerisini onaylar ve fişi kesinleştirir; karşı hesap (account_id), cari (contact_id) veya fatura tahsisleri (allocations) değiştirilebilir. allocations verirken contact_id ZORUNLU: bank_posting_list satırındaki posting.contact.id ya da contact_candidates[].id kullan (contact_list tekrarına gerek yok); açık faturalar için bank_posting_open_items.","description":"**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `ledger.post` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["bank_posting"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"bank_posting.approve","x-risk":"commit","x-permission":"ledger.post","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/bank_posting_approve.input"}}}}}},"/operations/bank_posting.approve_many":{"post":{"operationId":"bank_posting_approve_many","summary":"Seçili önerilmiş banka hareketlerini (en fazla 200) önerildiği gibi onaylayıp kesinleştirir; askı hesabı ve cari seçimi gerektiren öneriler atlanır.","description":"**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `ledger.post` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["bank_posting"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"bank_posting.approve_many","x-risk":"commit","x-permission":"ledger.post","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/bank_posting_approve_many.input"}}}}}},"/operations/bank_posting.ignore":{"post":{"operationId":"bank_posting_ignore","summary":"Banka hareketini yoksayar; muhasebe fişi üretilmez (varsa taslak silinir).","description":"**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `ledger.post` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["bank_posting"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"bank_posting.ignore","x-risk":"commit","x-permission":"ledger.post","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/bank_posting_ignore.input"}}}}}},"/operations/bank_posting.list":{"post":{"operationId":"bank_posting_list","summary":"Banka hareketlerinin muhasebe eşleştirme durumunu listeler (bekleyen, önerilen, kesinleşen, yoksayılan, hatalı); önerilen hesap, kural, güven, önerilen cari (posting.contact) ve fatura tahsisleri dahil. Cari önerisi yoksa contact_candidates (fatura/VKN/IBAN/unvan/açıklama eşleşmesi) verilir: cari için contact_list aramadan önce bunları kullan.","description":"**Risk:** Okuma · **İzin:** `ledger.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["bank_posting"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"bank_posting.list","x-risk":"read","x-permission":"ledger.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/bank_posting_list.input"}}}}}},"/operations/bank_posting.open_items":{"post":{"operationId":"bank_posting_open_items","summary":"Banka hareketiyle eşleştirilebilecek açık faturaları listeler (cari + yön).","description":"**Risk:** Okuma · **İzin:** `ledger.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["bank_posting"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"bank_posting.open_items","x-risk":"read","x-permission":"ledger.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/bank_posting_open_items.input"}}}}}},"/operations/bank_posting.process":{"post":{"operationId":"bank_posting_process","summary":"Banka hareketlerini eşleştirme kurallarından geçirerek muhasebe önerisi/fişi üretir (en fazla 200 hareket veya bekleyenlerin tümü).","description":"**Risk:** Taslak · **İzin:** `ledger.post` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["bank_posting"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"bank_posting.process","x-risk":"draft","x-permission":"ledger.post","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/bank_posting_process.input"}}}}}},"/operations/bank_posting.reprocess":{"post":{"operationId":"bank_posting_reprocess","summary":"Banka hareketinin muhasebe önerisini yeniden üretir (taslak fiş silinir, kurallar yeniden uygulanır).","description":"**Risk:** Taslak · **İzin:** `ledger.post` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["bank_posting"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"bank_posting.reprocess","x-risk":"draft","x-permission":"ledger.post","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/bank_posting_reprocess.input"}}}}}},"/operations/bank_posting.settings":{"post":{"operationId":"bank_posting_settings","summary":"Otomatik banka muhasebeleştirmesini başlangıç tarihiyle açar veya kapatır; yalnız başlangıç tarihinden sonraki hareketler işlenir.","description":"**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `accounts_chart.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["bank_posting"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"bank_posting.settings","x-risk":"commit","x-permission":"accounts_chart.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/bank_posting_settings.input"}}}}}},"/operations/bank_reconciliation.status":{"post":{"operationId":"bank_reconciliation_status","summary":"Banka hesaplarının muhasebe (102) bakiyesini bankadan gelen bakiyeyle karşılaştırır ve farkı gösterir.","description":"**Risk:** Okuma · **İzin:** `ledger.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["bank_reconciliation"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"bank_reconciliation.status","x-risk":"read","x-permission":"ledger.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/bank_reconciliation_status.input"}}}}}},"/operations/bank_report.cash":{"post":{"operationId":"bank_report_cash","summary":"Banka kasa raporu: seçilen tarih aralığında (en fazla 366 gün) her gün için açılış, giriş, çıkış ve kapanış bakiyesi; hesap ve para birimi kırılımı, hesaplar arası kendi virmanları ayrı. Tutarlar seçilen para birimine çevrilir.","description":"**Risk:** Okuma · **İzin:** `reports.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["bank_report"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"bank_report.cash","x-risk":"read","x-permission":"reports.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/bank_report_cash.input"}}}}}},"/operations/bank_report.cashflow":{"post":{"operationId":"bank_report_cashflow","summary":"Banka hesaplarının nakit akışı: seçilen aralıkta (en fazla 366 gün; varsayılan son 30 gün; days=7/30/90/365 ile Panel penceresi) gün/hafta/ay kırılımında giren, çıkan, net tutar ve hareket sayısı; hesaplar arası kendi virmanları ayrı. Tutarlar seçilen para birimine çevrilir. Rapor görme yetkisi olmayan (yalnız banka hesabı gören) kullanıcı yalnız Panel pencerelerini alır. Muhasebe fişlerinden üretilen resmi Nakit Akım Tablosu için report.cash_flow kullanın.","description":"**Risk:** Okuma · **İzin:** `reports.view|bank_accounts.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["bank_report"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"bank_report.cashflow","x-risk":"read","x-permission":"reports.view|bank_accounts.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/bank_report_cashflow.input"}}}}}},"/operations/bank_transaction.get":{"post":{"operationId":"bank_transaction_get","summary":"Tek bir banka hareketinin ayrıntısını döner: tarih/valör, yön, tutar, karşı taraf (unvan, IBAN, VKN), açıklama, referans, işlem sonrası bakiye, kur ve dekont durumu; muhasebe görme yetkisi varsa eşleştirme durumu (fiş / tahsilat bağlantısı).","description":"**Risk:** Okuma · **İzin:** `transactions.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["bank_transaction"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"bank_transaction.get","x-risk":"read","x-permission":"transactions.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/bank_transaction_get.input"}}}}}},"/operations/bank_transaction.list":{"post":{"operationId":"bank_transaction_list","summary":"Bankadan çekilen hesap hareketlerini listeler. Süzgeçler: banka, hesap, tarih aralığı, yön (giriş/çıkış), tutar aralığı, para birimi, karşı taraf (unvan/IBAN/VKN), açıklama, referans, serbest arama; sayfalı, para birimi bazında giriş/çıkış toplamlarıyla.","description":"**Risk:** Okuma · **İzin:** `transactions.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["bank_transaction"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"bank_transaction.list","x-risk":"read","x-permission":"transactions.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/bank_transaction_list.input"}}}}}},"/operations/bank_transaction.receipt":{"post":{"operationId":"bank_transaction_receipt","summary":"Bir banka hareketinin dekontunu döner: arşivde varsa dosya adı, MIME türü, boyut ve (include_content=true ise) base64 içerik; yoksa dekontun neden bulunmadığı.","description":"**Risk:** Okuma · **İzin:** `transactions.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["bank_transaction"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"bank_transaction.receipt","x-risk":"read","x-permission":"transactions.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/bank_transaction_receipt.input"}}}}}},"/operations/billing.usage":{"post":{"operationId":"billing_usage","summary":"Şirketin paketi ve yapay zekâ token kullanımı: plan, dönem başı/sonu, aylık kota, kullanılan, kalan, ek kredi, yüzde.","description":"**Risk:** Okuma · **İzin:** `bank_accounts.view|bank_accounts.manage|transactions.view|transactions.export|reports.view|documents.view|documents.generate|integrations.view|integrations.manage|team.view|team.manage|company.manage|ledger.view|ledger.post|ledger.approve|ledger.close|accounts_chart.manage|contacts.view|contacts.manage|products.view|products.manage|invoices.view|invoices.manage|payments.view|payments.manage|expenses.view|expenses.manage|einvoice.view|einvoice.send|einvoice.manage|imports.run|api_tokens.manage|assistant.use|custom_reports.view|custom_reports.manage|accountant_access.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["billing"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"billing.usage","x-risk":"read","x-permission":"bank_accounts.view|bank_accounts.manage|transactions.view|transactions.export|reports.view|documents.view|documents.generate|integrations.view|integrations.manage|team.view|team.manage|company.manage|ledger.view|ledger.post|ledger.approve|ledger.close|accounts_chart.manage|contacts.view|contacts.manage|products.view|products.manage|invoices.view|invoices.manage|payments.view|payments.manage|expenses.view|expenses.manage|einvoice.view|einvoice.send|einvoice.manage|imports.run|api_tokens.manage|assistant.use|custom_reports.view|custom_reports.manage|accountant_access.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/billing_usage.input"}}}}}},"/operations/bulk_pdf.create":{"post":{"operationId":"bulk_pdf_create","summary":"Seçili faturaları veya muhasebe fişlerini (en fazla 200) arka planda PDF'e çevirip tek ZIP hazırlar; bulk_pdf.status ile izlenir, hazır olunca 24 saat indirilebilir. Fişler için muhasebe görüntüleme izni gerekir.","description":"**Risk:** Taslak · **İzin:** `invoices.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["bulk_pdf"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"bulk_pdf.create","x-risk":"draft","x-permission":"invoices.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/bulk_pdf_create.input"}}}}}},"/operations/bulk_pdf.status":{"post":{"operationId":"bulk_pdf_status","summary":"Toplu PDF/ZIP dışa aktarımının durumu (sırada / hazırlanıyor / hazır / başarısız) ve hazırsa indirme bağlantısı.","description":"**Risk:** Okuma · **İzin:** `invoices.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["bulk_pdf"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"bulk_pdf.status","x-risk":"read","x-permission":"invoices.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/bulk_pdf_status.input"}}}}}},"/operations/cash_account.create":{"post":{"operationId":"cash_account_create","summary":"Yeni kasa açar ve 100 Kasa hesabının dövize uygun alt hesabına bağlar (TL 100.01, USD 100.02, EUR 100.03).","description":"**Risk:** Taslak · **İzin:** `payments.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["cash_account"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"cash_account.create","x-risk":"draft","x-permission":"payments.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/cash_account_create.input"}}}}}},"/operations/cash_account.list":{"post":{"operationId":"cash_account_list","summary":"Kasaları bağlı 100 muhasebe hesabı ve kesin fişlerden hesaplanan bakiyeleriyle listeler.","description":"**Risk:** Okuma · **İzin:** `payments.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["cash_account"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"cash_account.list","x-risk":"read","x-permission":"payments.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/cash_account_list.input"}}}}}},"/operations/cash_account.update":{"post":{"operationId":"cash_account_update","summary":"Kasanın adını veya aktiflik durumunu günceller (para birimi değişmez).","description":"**Risk:** Taslak · **İzin:** `payments.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["cash_account"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"cash_account.update","x-risk":"draft","x-permission":"payments.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/cash_account_update.input"}}}}}},"/operations/closing.checklist":{"post":{"operationId":"closing_checklist","summary":"Yıl sonu kapanış ön kontrollerini listeler: askı hesapları, taslak fiş, mizan dengesi, ay kilitleri, KDV mahsubu, SMM, kur değerleme, yansıtma ve gelir tablosu hesapları.","description":"**Risk:** Okuma · **İzin:** `ledger.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["closing"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"closing.checklist","x-risk":"read","x-permission":"ledger.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/closing_checklist.input"}}}}}},"/operations/closing.overview":{"post":{"operationId":"closing_overview","summary":"Seçilen yıl veya ay için dönem sonu adımlarını sırasıyla, son önizleme / kayıt durumlarıyla listeler.","description":"**Risk:** Okuma · **İzin:** `ledger.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["closing"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"closing.overview","x-risk":"read","x-permission":"ledger.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/closing_overview.input"}}}}}},"/operations/closing.post":{"post":{"operationId":"closing_post","summary":"Önizlenen dönem sonu adımının fişini kesinleştirir. Bakiyeler önizlemeden sonra değiştiyse reddedilir; aynı dönem için ikinci fiş üretilmez.","description":"**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `ledger.close` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["closing"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"closing.post","x-risk":"commit","x-permission":"ledger.close","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/closing_post.input"}}}}}},"/operations/closing.preview":{"post":{"operationId":"closing_preview","summary":"Bir dönem sonu adımını (KDV mahsubu, kur değerleme, amortisman, SMM, yansıtma, 690 devri, vergi karşılığı, net kâr, kapanış, açılış, 590→570) önizler; önerilen fiş satırlarını kaydeder ama fiş yazmaz.","description":"**Risk:** Taslak · **İzin:** `ledger.close` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["closing"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"closing.preview","x-risk":"draft","x-permission":"ledger.close","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/closing_preview.input"}}}}}},"/operations/closing.reopen_year":{"post":{"operationId":"closing_reopen_year","summary":"Kapanmış mali yılı yeniden açar: kapanış fişi ile sonraki yılın açılış ve 590→570 virman fişleri ters kaydedilir, Aralık kilidi açılır. Yalnız şirket sahibi; gerekçe zorunlu.","description":"**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `ledger.close` · **Kanallar:** web, api, cli, mcp","tags":["closing"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"closing.reopen_year","x-risk":"commit","x-permission":"ledger.close","x-channels":["web","api","cli","mcp"],"x-idempotency":"required","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/closing_reopen_year.input"}}}}}},"/operations/closing.reopen_year_preview":{"post":{"operationId":"closing_reopen_year_preview","summary":"Kapanmış mali yılı yeniden açmanın önizlemesi (salt okunur): ters kaydedilecek fişler, engeller ve kimin yapabileceği. Yeniden açma işleminin kendisi asistandan çalıştırılamaz; şirket sahibi Dönem Sonu ekranından yapar.","description":"**Risk:** Okuma · **İzin:** `ledger.close` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["closing"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"closing.reopen_year_preview","x-risk":"read","x-permission":"ledger.close","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/closing_reopen_year_preview.input"}}}}}},"/operations/company.get":{"post":{"operationId":"company_get","summary":"Aktif şirketin özetini (unvan, VKN, vergi dairesi, para birimi, üye sayısı) ve sizin bu şirketteki rolünüzü/izinlerinizi döner.","description":"**Risk:** Okuma · **İzin:** `team.view` · **Kanallar:** web, api, cli, mcp, assistant","tags":["company"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"company.get","x-risk":"read","x-permission":"team.view","x-channels":["web","api","cli","mcp","assistant"],"x-idempotency":"optional","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/company_get.input"}}}}}},"/operations/company.list":{"post":{"operationId":"company_list","summary":"Erişebildiğiniz şirketleri listeler (doğrudan üyelik ve mali müşavir bürosu üzerinden erişilen müşteri şirketler); aktif şirket işaretlidir.","description":"**Risk:** Okuma · **İzin:** `team.view` · **Kanallar:** web, api, cli, mcp, assistant","tags":["company"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"company.list","x-risk":"read","x-permission":"team.view","x-channels":["web","api","cli","mcp","assistant"],"x-idempotency":"optional","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/company_list.input"}}}}}},"/operations/company.settings.get":{"post":{"operationId":"company_settings_get","summary":"Aktif şirketin ayarlarını döner: unvan, vergi bilgileri, adres, iletişim, yetkili kişi, varsayılan para birimi, günlük/haftalık rapor alıcıları ve evrak tazeliği.","description":"**Risk:** Okuma · **İzin:** `company.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["company"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"company.settings.get","x-risk":"read","x-permission":"company.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/company_settings_get.input"}}}}}},"/operations/company.settings.update":{"post":{"operationId":"company_settings_update","summary":"Aktif şirketin bilgilerini (unvan, vergi dairesi/no, adres, iletişim, yetkili kişi, varsayılan para birimi) ve kasa raporu e-posta ayarlarını kısmi olarak günceller. Yalnız gönderilen alanlar değişir.","description":"**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `company.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["company"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"company.settings.update","x-risk":"commit","x-permission":"company.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/company_settings_update.input"}}}}}},"/operations/company_copy.run":{"post":{"operationId":"company_copy_run","summary":"Erişiminiz olan başka bir şirketten hesap planı alt hesaplarını, hızlı fiş şablonlarını, eşleştirme kurallarını, gider kategorilerini ve hesap eşlemelerini aktif şirkete kopyalar; çakışanlar atlanır.","description":"**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `accounts_chart.manage` · **Kanallar:** web, api, cli, assistant","tags":["company_copy"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"company_copy.run","x-risk":"commit","x-permission":"accounts_chart.manage","x-channels":["web","api","cli","assistant"],"x-idempotency":"required","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/company_copy_run.input"}}}}}},"/operations/contact.archive":{"post":{"operationId":"contact_archive","summary":"Cariyi arşivler: muhasebe hareketi olan cari yalnız pasifleştirilir, hareketsiz cari arşive kaldırılır.","description":"**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `contacts.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["contact"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"contact.archive","x-risk":"commit","x-permission":"contacts.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/contact_archive.input"}}}}}},"/operations/contact.balances":{"post":{"operationId":"contact_balances","summary":"Cari bakiye listesi (borç, alacak, bakiye). Alacaklı/borçlu carilere veya bakiyesi olanlara süzülebilir.","description":"**Risk:** Okuma · **İzin:** `contacts.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["contact"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"contact.balances","x-risk":"read","x-permission":"contacts.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/contact_balances.input"}}}}}},"/operations/contact.create":{"post":{"operationId":"contact_create","summary":"Yeni cari (müşteri/tedarikçi) kartı açar; türüne göre 120/320 muhasebe alt hesabını oluşturur. Mükerrer olabilecek cariler uyarı olarak döner.","description":"**Risk:** Taslak · **İzin:** `contacts.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["contact"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"contact.create","x-risk":"draft","x-permission":"contacts.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/contact_create.input"}}}}}},"/operations/contact.get":{"post":{"operationId":"contact_get","summary":"Tek bir cari kartını; banka hesapları, muhasebe alt hesapları ve güncel bakiyesiyle döndürür.","description":"**Risk:** Okuma · **İzin:** `contacts.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["contact"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"contact.get","x-risk":"read","x-permission":"contacts.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/contact_get.input"}}}}}},"/operations/contact.list":{"post":{"operationId":"contact_list","summary":"Carileri listeler; ad, kod, VKN/TCKN veya e-postaya göre arar, türe göre süzer ve isteğe bağlı bakiye verir. Tam eşleşme yoksa IBAN / unvan benzerliğiyle adayları \"similar\" alanında döner (aynı aramayı tekrarlama).","description":"**Risk:** Okuma · **İzin:** `contacts.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["contact"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"contact.list","x-risk":"read","x-permission":"contacts.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/contact_list.input"}}}}}},"/operations/contact.lookup":{"post":{"operationId":"contact_lookup","summary":"Form için cari arar (ad veya VKN/TCKN): yalnız aktif carilerin kimliği, adı, VKN/TCKN'si ve türü döner. Fatura, tahsilat/ödeme veya masraf girebilen kullanıcı içindir; ayrıntı için contact.get kullanın.","description":"**Risk:** Okuma · **İzin:** `invoices.manage|payments.manage|expenses.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["contact"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"contact.lookup","x-risk":"read","x-permission":"invoices.manage|payments.manage|expenses.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/contact_lookup.input"}}}}}},"/operations/contact.merge":{"post":{"operationId":"contact_merge","summary":"Mükerrer cariyi hedef cariye birleştirir: kesin fiş satırları değişmez, kaynağın cari bakiyesi MAHSUP fişiyle hedefe virmanlanır; açık faturalar, çek/senet, IBAN, kurallar ve taslaklar hedefe taşınır; kaynak arşivlenir.","description":"**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `contacts.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["contact"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"contact.merge","x-risk":"commit","x-permission":"contacts.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/contact_merge.input"}}}}}},"/operations/contact.merge_preview":{"post":{"operationId":"contact_merge_preview","summary":"Mükerrer cari birleştirme önizlemesi: virmanlanacak bakiyeler ve hedefe taşınacak kayıt sayıları (kayıt yapmaz).","description":"**Risk:** Okuma · **İzin:** `contacts.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["contact"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"contact.merge_preview","x-risk":"read","x-permission":"contacts.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/contact_merge_preview.input"}}}}}},"/operations/contact.statement":{"post":{"operationId":"contact_statement","summary":"Cari hesap ekstresi: dönem başı devir, kesin fiş satırları, yürüyen bakiye ve kapanış bakiyesi.","description":"**Risk:** Okuma · **İzin:** `contacts.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["contact"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"contact.statement","x-risk":"read","x-permission":"contacts.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/contact_statement.input"}}}}}},"/operations/contact.update":{"post":{"operationId":"contact_update","summary":"Cari kartını günceller (yalnız gönderilen alanlar). Ad değişirse muhasebe alt hesap adı da güncellenir.","description":"**Risk:** Taslak · **İzin:** `contacts.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["contact"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"contact.update","x-risk":"draft","x-permission":"contacts.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/contact_update.input"}}}}}},"/operations/cost_center.create":{"post":{"operationId":"cost_center_create","summary":"Yeni masraf merkezi oluşturur.","description":"**Risk:** Taslak · **İzin:** `accounts_chart.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["cost_center"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"cost_center.create","x-risk":"draft","x-permission":"accounts_chart.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/cost_center_create.input"}}}}}},"/operations/cost_center.list":{"post":{"operationId":"cost_center_list","summary":"Masraf merkezlerini listeler.","description":"**Risk:** Okuma · **İzin:** `ledger.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["cost_center"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"cost_center.list","x-risk":"read","x-permission":"ledger.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/cost_center_list.input"}}}}}},"/operations/cost_center.update":{"post":{"operationId":"cost_center_update","summary":"Masraf merkezinin kodunu, adını, üst merkezini veya aktifliğini günceller.","description":"**Risk:** Taslak · **İzin:** `accounts_chart.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["cost_center"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"cost_center.update","x-risk":"draft","x-permission":"accounts_chart.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/cost_center_update.input"}}}}}},"/operations/credit_card.archive":{"post":{"operationId":"credit_card_archive","summary":"Kredi kartını arşivler (hareketliyse pasifleştirir). Bakiyesi olan kart arşivlenemez.","description":"**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `payments.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["credit_card"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"credit_card.archive","x-risk":"commit","x-permission":"payments.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/credit_card_archive.input"}}}}}},"/operations/credit_card.cancel_payment":{"post":{"operationId":"credit_card_cancel_payment","summary":"Kart ekstre ödemesini iptal eder (fişin ters kaydı).","description":"**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `payments.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["credit_card"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"credit_card.cancel_payment","x-risk":"commit","x-permission":"payments.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/credit_card_cancel_payment.input"}}}}}},"/operations/credit_card.create":{"post":{"operationId":"credit_card_create","summary":"Şirket kredi kartı tanımlar ve 309.01 altında kart borcu hesabını açar. Tam kart numarası kabul edilmez; yalnız son 4 hane saklanır.","description":"**Risk:** Taslak · **İzin:** `payments.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["credit_card"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"credit_card.create","x-risk":"draft","x-permission":"payments.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/credit_card_create.input"}}}}}},"/operations/credit_card.get":{"post":{"operationId":"credit_card_get","summary":"Kredi kartını bakiyesi ve ekstre ödemeleriyle getirir.","description":"**Risk:** Okuma · **İzin:** `payments.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["credit_card"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"credit_card.get","x-risk":"read","x-permission":"payments.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/credit_card_get.input"}}}}}},"/operations/credit_card.list":{"post":{"operationId":"credit_card_list","summary":"Şirket kredi kartlarını güncel borç bakiyeleriyle listeler (kart numarası yalnız son 4 hane).","description":"**Risk:** Okuma · **İzin:** `payments.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["credit_card"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"credit_card.list","x-risk":"read","x-permission":"payments.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/credit_card_list.input"}}}}}},"/operations/credit_card.pay_statement":{"post":{"operationId":"credit_card_pay_statement","summary":"Kredi kartı ekstre ödemesini kaydeder: 309.01.xx B / 102 A (MAHSUP). Banka hesabı verilmezse kartın varsayılan bankası.","description":"**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `payments.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["credit_card"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"credit_card.pay_statement","x-risk":"commit","x-permission":"payments.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/credit_card_pay_statement.input"}}}}}},"/operations/credit_card.update":{"post":{"operationId":"credit_card_update","summary":"Kredi kartı bilgilerini günceller (ad, banka, son 4 hane, kesim/ödeme günü, limit, aktiflik).","description":"**Risk:** Taslak · **İzin:** `payments.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["credit_card"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"credit_card.update","x-risk":"draft","x-permission":"payments.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/credit_card_update.input"}}}}}},"/operations/custom_report.delete":{"post":{"operationId":"custom_report_delete","summary":"Kayıtlı özel raporu siler (zamanlanmış gönderimi de durur).","description":"**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `custom_reports.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["custom_report"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"custom_report.delete","x-risk":"commit","x-permission":"custom_reports.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/custom_report_delete.input"}}}}}},"/operations/custom_report.get":{"post":{"operationId":"custom_report_get","summary":"Kayıtlı bir özel raporun tanımını, grafik ayarını ve zamanlamasını getirir.","description":"**Risk:** Okuma · **İzin:** `custom_reports.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["custom_report"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"custom_report.get","x-risk":"read","x-permission":"custom_reports.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/custom_report_get.input"}}}}}},"/operations/custom_report.list":{"post":{"operationId":"custom_report_list","summary":"Kayıtlı özel raporları listeler (paylaşılanlar ve kendi raporlarınız).","description":"**Risk:** Okuma · **İzin:** `custom_reports.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["custom_report"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"custom_report.list","x-risk":"read","x-permission":"custom_reports.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/custom_report_list.input"}}}}}},"/operations/custom_report.run":{"post":{"operationId":"custom_report_run","summary":"Özel rapor DSL tanımını (kaynak, boyutlar, ölçüler, filtreler) veya kayıtlı bir raporu (id) çalıştırır; kolonlar, satırlar ve genel toplamları döner. Alan adları için önce custom_report.sources çağırın.","description":"**Risk:** Okuma · **İzin:** `custom_reports.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["custom_report"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"custom_report.run","x-risk":"read","x-permission":"custom_reports.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/custom_report_run.input"}}}}}},"/operations/custom_report.save":{"post":{"operationId":"custom_report_save","summary":"Özel rapor tanımını adıyla kaydeder; isteğe bağlı grafik ayarı, paylaşım ve zamanlanmış e-posta gönderimi (yalnız şirket üyelerine).","description":"**Risk:** Taslak · **İzin:** `custom_reports.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["custom_report"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"custom_report.save","x-risk":"draft","x-permission":"custom_reports.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/custom_report_save.input"}}}}}},"/operations/custom_report.sources":{"post":{"operationId":"custom_report_sources","summary":"Özel rapor kaynaklarını ve alan sözlüğünü (alan anahtarı, etiket, tip, kullanılabilir operatör ve toplama fonksiyonları) listeler. custom_report.run öncesi alan adlarını öğrenmek için kullanın.","description":"**Risk:** Okuma · **İzin:** `custom_reports.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["custom_report"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"custom_report.sources","x-risk":"read","x-permission":"custom_reports.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/custom_report_sources.input"}}}}}},"/operations/custom_report.update":{"post":{"operationId":"custom_report_update","summary":"Kayıtlı özel raporun adını, tanımını, grafik ayarını, paylaşımını veya zamanlamasını günceller.","description":"**Risk:** Taslak · **İzin:** `custom_reports.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["custom_report"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"custom_report.update","x-risk":"draft","x-permission":"custom_reports.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/custom_report_update.input"}}}}}},"/operations/dashboard.accounting":{"post":{"operationId":"dashboard_accounting","summary":"Muhasebe panosu: açık alacak/borç, bu ay satış ve gider, vadesi yaklaşanlar, onay kuyruğu, eşleşmemiş banka hareketi, e-Belge hataları ve vergi takvimi (her widget kendi iznine göre).","description":"**Risk:** Okuma · **İzin:** `contacts.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["dashboard"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"dashboard.accounting","x-risk":"read","x-permission":"contacts.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/dashboard_accounting.input"}}}}}},"/operations/dashboard.cards":{"post":{"operationId":"dashboard_cards","summary":"Panel istatistik kartları (web Panel ile aynı): toplam nakit, ciro, gider, kâr, açık alacak/borç, KDV, onay bekleyenler, aylık kâr/yaşlandırma/en çok satış grafikleri, banka dağılımı, e-Belge, banka sağlığı, vergi takvimi. Her kart kendi iznine göre görünür; cards ile alt küme, include_data=false ile yalnız görünür kart listesi döner.","description":"**Risk:** Okuma · **İzin:** `bank_accounts.view|payments.view|invoices.view|expenses.view|ledger.view|contacts.view|ledger.post|einvoice.view|transactions.view|integrations.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["dashboard"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"dashboard.cards","x-risk":"read","x-permission":"bank_accounts.view|payments.view|invoices.view|expenses.view|ledger.view|contacts.view|ledger.post|einvoice.view|transactions.view|integrations.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/dashboard_cards.input"}}}}}},"/operations/dashboard.portfolio":{"post":{"operationId":"dashboard_portfolio","summary":"Firmalarım panosu: erişilen her şirket için son kilitli ay, taslak/onay bekleyen fiş, eşleşmemiş banka hareketi, KDV mahsubu ve e-Defter durumu.","description":"**Risk:** Okuma · **İzin:** `bank_accounts.view|bank_accounts.manage|transactions.view|transactions.export|reports.view|documents.view|documents.generate|integrations.view|integrations.manage|team.view|team.manage|company.manage|ledger.view|ledger.post|ledger.approve|ledger.close|accounts_chart.manage|contacts.view|contacts.manage|products.view|products.manage|invoices.view|invoices.manage|payments.view|payments.manage|expenses.view|expenses.manage|einvoice.view|einvoice.send|einvoice.manage|imports.run|api_tokens.manage|assistant.use|custom_reports.view|custom_reports.manage|accountant_access.manage` · **Kanallar:** web, api, cli, mcp, assistant","tags":["dashboard"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"dashboard.portfolio","x-risk":"read","x-permission":"bank_accounts.view|bank_accounts.manage|transactions.view|transactions.export|reports.view|documents.view|documents.generate|integrations.view|integrations.manage|team.view|team.manage|company.manage|ledger.view|ledger.post|ledger.approve|ledger.close|accounts_chart.manage|contacts.view|contacts.manage|products.view|products.manage|invoices.view|invoices.manage|payments.view|payments.manage|expenses.view|expenses.manage|einvoice.view|einvoice.send|einvoice.manage|imports.run|api_tokens.manage|assistant.use|custom_reports.view|custom_reports.manage|accountant_access.manage","x-channels":["web","api","cli","mcp","assistant"],"x-idempotency":"optional","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/dashboard_portfolio.input"}}}}}},"/operations/despatch.accrual_preview":{"post":{"operationId":"despatch_accrual_preview","summary":"Seçilen ay sonu itibarıyla faturası gelmemiş alış (giriş) irsaliyelerini ve 153/329 tahakkuk tutarını önizler.","description":"**Risk:** Okuma · **İzin:** `ledger.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["despatch"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"despatch.accrual_preview","x-risk":"read","x-permission":"ledger.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/despatch_accrual_preview.input"}}}}}},"/operations/despatch.accrue_uninvoiced":{"post":{"operationId":"despatch_accrue_uninvoiced","summary":"Ay sonunda faturası gelmemiş alış irsaliyeleri için 153 B / 329 A tahakkuk fişi keser ve ertesi ayın ilk günü ters kaydını alır (03 §15.9). Aynı ay ikinci kez tahakkuk edilmez.","description":"**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `ledger.post` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["despatch"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"despatch.accrue_uninvoiced","x-risk":"commit","x-permission":"ledger.post","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/despatch_accrue_uninvoiced.input"}}}}}},"/operations/despatch.cancel":{"post":{"operationId":"despatch_cancel","summary":"İrsaliyeyi iptal eder; kesilmişse stok hareketlerine karşı hareket yazar. Faturalanmış irsaliye iptal edilemez.","description":"**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `products.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["despatch"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"despatch.cancel","x-risk":"commit","x-permission":"products.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/despatch_cancel.input"}}}}}},"/operations/despatch.create":{"post":{"operationId":"despatch_create","summary":"Taslak kağıt irsaliye oluşturur (stok hareketi kesimde yapılır).","description":"**Risk:** Taslak · **İzin:** `products.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["despatch"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"despatch.create","x-risk":"draft","x-permission":"products.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/despatch_create.input"}}}}}},"/operations/despatch.delete":{"post":{"operationId":"despatch_delete","summary":"Taslak irsaliyeyi siler (kesilmiş irsaliye silinmez, iptal edilir).","description":"**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `products.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["despatch"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"despatch.delete","x-risk":"commit","x-permission":"products.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/despatch_delete.input"}}}}}},"/operations/despatch.get":{"post":{"operationId":"despatch_get","summary":"Bir irsaliyenin başlığını, kalemlerini ve oluşturduğu stok hareketlerini döner.","description":"**Risk:** Okuma · **İzin:** `products.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["despatch"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"despatch.get","x-risk":"read","x-permission":"products.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/despatch_get.input"}}}}}},"/operations/despatch.issue":{"post":{"operationId":"despatch_issue","summary":"Taslak irsaliyeyi keser: numara verir ve stok hareketini yazar (sevkte çıkış, girişte giriş).","description":"**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `products.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["despatch"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"despatch.issue","x-risk":"commit","x-permission":"products.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/despatch_issue.input"}}}}}},"/operations/despatch.list":{"post":{"operationId":"despatch_list","summary":"Kağıt irsaliyeleri listeler (sevk/giriş, durum, cari, tarih). overdue=true: 7 günü geçmiş faturalanmamış sevk irsaliyeleri.","description":"**Risk:** Okuma · **İzin:** `products.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["despatch"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"despatch.list","x-risk":"read","x-permission":"products.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/despatch_list.input"}}}}}},"/operations/despatch.to_invoice":{"post":{"operationId":"despatch_to_invoice","summary":"Kesilmiş bir veya daha fazla irsaliyeden (aynı cari ve tür) taslak fatura oluşturur; fatura kesildiğinde irsaliyede yapılmış stok hareketi tekrarlanmaz.","description":"**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `invoices.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["despatch"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"despatch.to_invoice","x-risk":"commit","x-permission":"invoices.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/despatch_to_invoice.input"}}}}}},"/operations/despatch.update":{"post":{"operationId":"despatch_update","summary":"Taslak irsaliyeyi günceller; kalemler gönderilirse tümüyle değişir.","description":"**Risk:** Taslak · **İzin:** `products.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["despatch"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"despatch.update","x-risk":"draft","x-permission":"products.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/despatch_update.input"}}}}}},"/operations/due_reminder.settings":{"post":{"operationId":"due_reminder_settings","summary":"Vade hatırlatma ayarlarını günceller: günlük iç bildirim, müşteriye e-posta ve \"n gün kala\" penceresi (varsayılan kapalı).","description":"**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `accounts_chart.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["due_reminder"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"due_reminder.settings","x-risk":"commit","x-permission":"accounts_chart.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/due_reminder_settings.input"}}}}}},"/operations/edespatch.answer":{"post":{"operationId":"edespatch_answer","summary":"Gelen e-İrsaliyeye irsaliye yanıtı (ReceiptAdvice) verir: kalem başına kabul edilen ve reddedilen (gerekçeli) miktar; verilmeyen kalem tam kabul sayılır, eksik miktar kendiliğinden hesaplanır. Tümü kabul / tümü red / kısmi kabul. Bağlı giriş irsaliyesi taslağı kabul edilen miktarlara göre güncellenir. Yanıt bir kez verilir.","description":"**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `einvoice.send` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["edespatch"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"edespatch.answer","x-risk":"commit","x-permission":"einvoice.send","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/edespatch_answer.input"}}}}}},"/operations/edespatch.lines":{"post":{"operationId":"edespatch_lines","summary":"Gelen e-İrsaliyenin kalemleri (teslim miktarı, birim, ürün kodu), verilmiş irsaliye yanıtı ve oluşturulan giriş irsaliyesi taslağı.","description":"**Risk:** Okuma · **İzin:** `einvoice.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["edespatch"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"edespatch.lines","x-risk":"read","x-permission":"einvoice.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/edespatch_lines.input"}}}}}},"/operations/edespatch.plan":{"post":{"operationId":"edespatch_plan","summary":"Kesilmiş sevk irsaliyesinin e-İrsaliye gönderim planı: alıcının GİB e-İrsaliye mükellefiyeti, posta kutusu (PK) etiketleri ve kayıtlı taşıma bilgisi (şoför/plaka/taşıyıcı). Kayıt oluşturmaz.","description":"**Risk:** Okuma · **İzin:** `einvoice.send` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["edespatch"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"edespatch.plan","x-risk":"read","x-permission":"einvoice.send","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/edespatch_plan.input"}}}}}},"/operations/edespatch.send":{"post":{"operationId":"edespatch_send","summary":"Kesilmiş sevk irsaliyesini e-İrsaliye olarak gönderir (alıcı GİB e-İrsaliye mükellefi olmalı). Şoför (ad, soyad, TCKN) + araç plakası veya taşıyıcı firma bilgisi zorunludur ve irsaliyeye kaydedilir. ETTN gönderimden önce kaydedilir; başarısız belge aynı ETTN ile yeniden denenir.","description":"**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `einvoice.send` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["edespatch"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"edespatch.send","x-risk":"commit","x-permission":"einvoice.send","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/edespatch_send.input"}}}}}},"/operations/edocument.answer":{"post":{"operationId":"edocument_answer","summary":"Gelen TİCARİ FATURA'ya 8 gün içinde KABUL veya RED yanıtı gönderir. RED sonrası bağlı alış faturasının iptali ÖNERİLİR (otomatik yapılmaz).","description":"**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `einvoice.send` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["edocument"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"edocument.answer","x-risk":"commit","x-permission":"einvoice.send","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/edocument_answer.input"}}}}}},"/operations/edocument.cancel":{"post":{"operationId":"edocument_cancel","summary":"Giden e-Belgeyi iptal eder. e-Arşiv: sağlayıcıda iptal (7 günü geçmişse uyarı). e-Fatura: API'de iptal yoktur — sistem dışında (KEP/noter/GİB portalı) yapılan iptal gerekçesiyle işaretlenir. cancel_invoice=true (varsayılan) ise bağlı fatura da iptal edilir ve fişi ters kaydedilir.","description":"**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `einvoice.send` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["edocument"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"edocument.cancel","x-risk":"commit","x-permission":"einvoice.send","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/edocument_cancel.input"}}}}}},"/operations/edocument.credit_summary":{"post":{"operationId":"edocument_credit_summary","summary":"e-Belge kontör özeti (tanımlı, kullanılan, kalan) — müşteri API anahtarının yetkisi ölçüsünde.","description":"**Risk:** Okuma · **İzin:** `einvoice.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["edocument"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"edocument.credit_summary","x-risk":"read","x-permission":"einvoice.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/edocument_credit_summary.input"}}}}}},"/operations/edocument.download":{"post":{"operationId":"edocument_download","summary":"e-Belge dosyasını döner (xml, pdf, html önizleme ya da e-Fatura/e-İrsaliye zarfı — envelope; içerik base64). HTML, belgeye gömülü betik çalıştırılmadan sunulmalıdır.","description":"**Risk:** Okuma · **İzin:** `einvoice.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["edocument"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"edocument.download","x-risk":"read","x-permission":"einvoice.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/edocument_download.input"}}}}}},"/operations/edocument.get":{"post":{"operationId":"edocument_get","summary":"Tek e-Belgenin ayrıntısı: durum, belge yanıtı, bağlı fatura ve fiş, olay geçmişi.","description":"**Risk:** Okuma · **İzin:** `einvoice.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["edocument"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"edocument.get","x-risk":"read","x-permission":"einvoice.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/edocument_get.input"}}}}}},"/operations/edocument.ignore":{"post":{"operationId":"edocument_ignore","summary":"Muhasebeleştirilmemiş gelen e-faturayı \"yoksayıldı\" işaretler (ör. mükerrer veya şirkete ait olmayan belge). Fatura/fiş oluşturmaz.","description":"**Risk:** Taslak · **İzin:** `einvoice.send` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["edocument"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"edocument.ignore","x-risk":"draft","x-permission":"einvoice.send","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/edocument_ignore.input"}}}}}},"/operations/edocument.integration_status":{"post":{"operationId":"edocument_integration_status","summary":"e-Belge entegrasyon durumu (anahtarsız): sağlayıcı, ortam (test/canlı), durum, doğrulama ve son yoklama zamanları, etkin modüller ve serileri, son doğrulamanın yetki (scope) özeti.","description":"**Risk:** Okuma · **İzin:** `einvoice.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["edocument"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"edocument.integration_status","x-risk":"read","x-permission":"einvoice.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/edocument_integration_status.input"}}}}}},"/operations/edocument.list":{"post":{"operationId":"edocument_list","summary":"Giden veya gelen e-Belgeleri (e-Fatura, e-Arşiv, e-İrsaliye, e-SMM) listeler: modül, durum, muhasebe durumu, karşı taraf ve tarih süzgeçleriyle, sayfalı.","description":"**Risk:** Okuma · **İzin:** `einvoice.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["edocument"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"edocument.list","x-risk":"read","x-permission":"einvoice.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/edocument_list.input"}}}}}},"/operations/edocument.lookup_taxpayer":{"post":{"operationId":"edocument_lookup_taxpayer","summary":"VKN/TCKN'nin GİB e-Fatura mükellefi olup olmadığını ve posta kutusu (PK) etiketlerini sorgular (24 saat önbellek). contact_id verilirse cari kartındaki e-Fatura bilgisi güncellenir.","description":"**Risk:** Okuma · **İzin:** `einvoice.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["edocument"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"edocument.lookup_taxpayer","x-risk":"read","x-permission":"einvoice.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/edocument_lookup_taxpayer.input"}}}}}},"/operations/edocument.preview":{"post":{"operationId":"edocument_preview","summary":"Kesilmiş faturanın, sevk irsaliyesinin veya serbest meslek makbuzunun gönderilecek e-Belge görüntüsünü (sağlayıcının XSLT tasarımıyla HTML) gönderim ÖNCESİ üretir. Belge kaydı oluşturmaz, gönderim yapmaz; UBL-TR hatalarını gösterir.","description":"**Risk:** Okuma · **İzin:** `einvoice.send` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["edocument"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"edocument.preview","x-risk":"read","x-permission":"einvoice.send","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/edocument_preview.input"}}}}}},"/operations/edocument.process":{"post":{"operationId":"edocument_process","summary":"Bekleyen veya hatalı gelen e-faturayı yeniden muhasebeleştirmeyi dener (cari/hesap bilgileri düzeltildikten sonra). Aynı belge ikinci faturayı üretmez.","description":"**Risk:** Taslak · **İzin:** `einvoice.send` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["edocument"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"edocument.process","x-risk":"draft","x-permission":"einvoice.send","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/edocument_process.input"}}}}}},"/operations/edocument.pull_now":{"post":{"operationId":"edocument_pull_now","summary":"Gelen e-faturaları beklemeden şimdi çeker (arka planda): yeni belgeler alış faturası ve fişe dönüştürülür.","description":"**Risk:** Taslak · **İzin:** `einvoice.send` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["edocument"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"edocument.pull_now","x-risk":"draft","x-permission":"einvoice.send","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/edocument_pull_now.input"}}}}}},"/operations/edocument.refresh":{"post":{"operationId":"edocument_refresh","summary":"Giden e-Belgenin güncel durumunu sağlayıcıdan sorgular (İletildi, Kabul, Red, Hata…) ve faturaya yansıtır.","description":"**Risk:** Taslak · **İzin:** `einvoice.send` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["edocument"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"edocument.refresh","x-risk":"draft","x-permission":"einvoice.send","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/edocument_refresh.input"}}}}}},"/operations/edocument.send":{"post":{"operationId":"edocument_send","summary":"Kesilmiş satış faturasını (veya alış iadesini) e-Belge olarak gönderir: alıcı e-Fatura mükellefiyse e-Fatura, değilse e-Arşiv; yabancı alıcıya mal ihracatı (İSTİSNA + 301) e-Fatura İHRACAT olarak GTB'ye. Senaryo (TİCARİ/TEMEL/KAMU), e-Arşiv gönderim şekli (ELEKTRONIK/KAGIT) ve KAMU IBAN'ı seçilebilir. ETTN gönderimden önce kaydedilir; gönderim kuyrukta yapılır. Başarısız ya da numarasız kalmış belge aynı ETTN ile yeniden denenir, gönderilmiş fatura ikinci kez gönderilmez.","description":"**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `einvoice.send` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["edocument"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"edocument.send","x-risk":"commit","x-permission":"einvoice.send","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/edocument_send.input"}}}}}},"/operations/edocument.send_bulk":{"post":{"operationId":"edocument_send_bulk","summary":"Seçilen kesilmiş satış faturalarını (ve alış iadelerini) toplu olarak e-Belge gönderim kuyruğuna alır (en fazla 100). Her fatura için alıcının mükellefiyetine göre e-Fatura veya e-Arşiv seçilir; hatalı faturalar atlanır ve sonuç özetinde gerekçesiyle listelenir.","description":"**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `einvoice.send` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["edocument"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"edocument.send_bulk","x-risk":"commit","x-permission":"einvoice.send","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/edocument_send_bulk.input"}}}}}},"/operations/edocument.send_plan":{"post":{"operationId":"edocument_send_plan","summary":"Gönderim önizlemesi: fatura hangi modülle (e-Fatura / e-Arşiv) ve senaryoyla (TİCARİ, TEMEL, KAMU, İHRACAT) gönderilecek, alıcının posta kutusu etiketleri, e-Arşiv gönderim şekli (ELEKTRONIK/KAGIT), ihracatta GTB bilgisi ve gönderimden önce tamamlanması gereken eksik alanlar (GTİP, teslim şartı, IBAN…). Kayıt oluşturmaz.","description":"**Risk:** Okuma · **İzin:** `einvoice.send` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["edocument"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"edocument.send_plan","x-risk":"read","x-permission":"einvoice.send","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/edocument_send_plan.input"}}}}}},"/operations/edocument.templates":{"post":{"operationId":"edocument_templates","summary":"e-Belge modülünün (e-Fatura, e-Arşiv, e-İrsaliye, e-SMM, e-MM) sağlayıcıda tanımlı XSLT tasarımlarını listeler. Her modül kendi tasarımını kullanır; e-Fatura tasarım adı e-Arşivde geçersizdir.","description":"**Risk:** Okuma · **İzin:** `einvoice.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["edocument"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"edocument.templates","x-risk":"read","x-permission":"einvoice.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/edocument_templates.input"}}}}}},"/operations/employee.advance":{"post":{"operationId":"employee_advance","summary":"Çalışana avans öder (bankadan veya kasadan): 196.01 Personel avansları B / 102|100 A. Avans sonraki bordroda mahsup edilir.","description":"**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `payments.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["employee"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"employee.advance","x-risk":"commit","x-permission":"payments.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/employee_advance.input"}}}}}},"/operations/employee.archive":{"post":{"operationId":"employee_archive","summary":"Çalışanı arşivler: çıkış tarihi yazılır (boşsa bugün); hareketsiz cari arşive kalkar, hareketli cari pasifleşir.","description":"**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `contacts.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["employee"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"employee.archive","x-risk":"commit","x-permission":"contacts.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/employee_archive.input"}}}}}},"/operations/employee.create":{"post":{"operationId":"employee_create","summary":"Çalışan kartı açar: \"çalışan\" türünde cari + bordro bilgileri (TCKN, IBAN, departman, giriş/çıkış, net ücret, gider hesabı). contact_id verilirse mevcut çalışan carisine kart eklenir. Maaş/avans borcu 335.01 hesabında izlenir.","description":"**Risk:** Taslak · **İzin:** `contacts.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["employee"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"employee.create","x-risk":"draft","x-permission":"contacts.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/employee_create.input"}}}}}},"/operations/employee.get":{"post":{"operationId":"employee_get","summary":"Çalışan kartı. TCKN/IBAN maskelidir; reveal=true ve cari yönetim (contacts.manage) izniyle tam değer döner (asistan ve MCP kanalında asla — tam kişisel veri dil modeline gitmez). Muhasebe izniyle açık avans (196) ve personele borç (335) bakiyeleri.","description":"**Risk:** Okuma · **İzin:** `contacts.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["employee"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"employee.get","x-risk":"read","x-permission":"contacts.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/employee_get.input"}}}}}},"/operations/employee.list":{"post":{"operationId":"employee_list","summary":"Çalışanları listeler (cari türü \"çalışan\"). TCKN ve IBAN her zaman maskeli döner; net ücret yalnız muhasebe/cari yöneticisine.","description":"**Risk:** Okuma · **İzin:** `contacts.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["employee"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"employee.list","x-risk":"read","x-permission":"contacts.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/employee_list.input"}}}}}},"/operations/employee.update":{"post":{"operationId":"employee_update","summary":"Çalışan kartını günceller. Verilmeyen alan değişmez; tckn/iban için null değeri siler.","description":"**Risk:** Taslak · **İzin:** `contacts.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["employee"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"employee.update","x-risk":"draft","x-permission":"contacts.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/employee_update.input"}}}}}},"/operations/esmm.send":{"post":{"operationId":"esmm_send","summary":"Kesilmiş serbest meslek makbuzunu e-SMM olarak gönderir (NES e-Serbest Meslek Makbuzu). ETTN gönderimden önce kaydedilir; gönderim kuyrukta yapılır, başarısız belge aynı ETTN ile yeniden denenir.","description":"**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `einvoice.send` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["esmm"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"esmm.send","x-risk":"commit","x-permission":"einvoice.send","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/esmm_send.input"}}}}}},"/operations/expense.attachment":{"post":{"operationId":"expense_attachment","summary":"Masrafın kendi ekini (fiş görseli / PDF) döner: dosya adı, MIME, boyut ve base64 içerik. Kayıt ekleri için attachment.download.","description":"**Risk:** Okuma · **İzin:** `expenses.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["expense"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"expense.attachment","x-risk":"read","x-permission":"expenses.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/expense_attachment.input"}}}}}},"/operations/expense.cancel":{"post":{"operationId":"expense_cancel","summary":"Kesinleşmiş masrafı iptal eder; fişi ters kayıtla kapatılır (tarih verilmezse orijinal tarih, dönem kilitliyse ilk açık gün).","description":"**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `expenses.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["expense"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"expense.cancel","x-risk":"commit","x-permission":"expenses.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/expense_cancel.input"}}}}}},"/operations/expense.create":{"post":{"operationId":"expense_create","summary":"Taslak masraf oluşturur (satırlı). Satırda gider kategorisi seçilince hesap, KDV oranı ve indirilebilirlik kategoriden dolar. Fiş expense.post ile kesinleşir: gider B, 191 B / kasa (TEDIYE), banka, kredi kartı (309.01), çalışan veya satıcı carisi (320) A.","description":"**Risk:** Taslak · **İzin:** `expenses.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["expense"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"expense.create","x-risk":"draft","x-permission":"expenses.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/expense_create.input"}}}}}},"/operations/expense.delete":{"post":{"operationId":"expense_delete","summary":"Taslak masrafı siler. Kesinleşmiş masraf silinmez; expense.cancel ile iptal edilir.","description":"**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `expenses.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["expense"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"expense.delete","x-risk":"commit","x-permission":"expenses.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/expense_delete.input"}}}}}},"/operations/expense.draft_from_receipt":{"post":{"operationId":"expense_draft_from_receipt","summary":"Fiş/fatura görselinden (JPG, PNG, PDF) taslak masraf oluşturur: e-Arşiv karekodu (qr_payload) varsa o, yoksa yapay zekâ ile okunur. Kalem toplamı fiş toplamını ±0,05 tutmazsa taslak \"inceleme gerekli\" işaretlenir. Hiçbir zaman otomatik muhasebeleştirmez.","description":"**Risk:** Taslak · **İzin:** `expenses.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["expense"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"expense.draft_from_receipt","x-risk":"draft","x-permission":"expenses.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/expense_draft_from_receipt.input"}},"multipart/form-data":{"schema":{"$ref":"#/components/schemas/expense_draft_from_receipt.input"}}}}}},"/operations/expense.form_options":{"post":{"operationId":"expense_form_options","summary":"Masraf formunun seçeneklerini döner: gider kategorileri, banka hesapları, kasalar, şirket kredi kartları (maskeli), masraf merkezleri, projeler, ödeme kaynağı ve belge türleri, KDV oranları, dövizler, bugünün tarihi ve fiş eki sınırı.","description":"**Risk:** Okuma · **İzin:** `expenses.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["expense"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"expense.form_options","x-risk":"read","x-permission":"expenses.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/expense_form_options.input"}}}}}},"/operations/expense.get":{"post":{"operationId":"expense_get","summary":"Tek masrafı satırları ve muhasebe fişleriyle getirir; kendi fiş eki (has_own_attachment → expense.attachment) ve kayıt eki sayısı dahil.","description":"**Risk:** Okuma · **İzin:** `expenses.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["expense"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"expense.get","x-risk":"read","x-permission":"expenses.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/expense_get.input"}}}}}},"/operations/expense.list":{"post":{"operationId":"expense_list","summary":"Masrafları listeler; durum, ödeme durumu, cari, kategori, tarih aralığı ve metinle süzer. Özet olarak kesinleşmiş masrafların TL toplamını döner.","description":"**Risk:** Okuma · **İzin:** `expenses.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["expense"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"expense.list","x-risk":"read","x-permission":"expenses.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/expense_list.input"}}}}}},"/operations/expense.post":{"post":{"operationId":"expense_post","summary":"Taslak masrafı kesinleştirir: masraf numarası (MS-yıl-sıra) verir ve kesin muhasebe fişini üretir. Kesinleşen masraf yalnız iptal edilebilir.","description":"**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `expenses.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["expense"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"expense.post","x-risk":"commit","x-permission":"expenses.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/expense_post.input"}}}}}},"/operations/expense.receipt_ocr_status":{"post":{"operationId":"expense_receipt_ocr_status","summary":"Fiş görselinden taslak masraf (expense.draft_from_receipt) şu an kullanılabilir mi: açık/kapalı, kapalıysa nedeni (sunucuda yapılandırılmamış / paket token hakkı bitti), kabul edilen dosya türleri ve boyut sınırı.","description":"**Risk:** Okuma · **İzin:** `expenses.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["expense"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"expense.receipt_ocr_status","x-risk":"read","x-permission":"expenses.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/expense_receipt_ocr_status.input"}}}}}},"/operations/expense.update":{"post":{"operationId":"expense_update","summary":"Taslak masrafı günceller; lines verilirse satırların tamamı yenilenir. Kesinleşmiş masraf düzenlenemez (iptal edilir).","description":"**Risk:** Taslak · **İzin:** `expenses.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["expense"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"expense.update","x-risk":"draft","x-permission":"expenses.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/expense_update.input"}}}}}},"/operations/expense_category.archive":{"post":{"operationId":"expense_category_archive","summary":"Gider kategorisini kaldırır: masrafta kullanılmışsa pasifleştirir, kullanılmamışsa arşivler.","description":"**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `expenses.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["expense_category"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"expense_category.archive","x-risk":"commit","x-permission":"expenses.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/expense_category_archive.input"}}}}}},"/operations/expense_category.create":{"post":{"operationId":"expense_category_create","summary":"Gider kategorisi oluşturur: ad, gider hesabı (yaprak), varsayılan KDV oranı, KDV indirilebilir mi, KKEG mi.","description":"**Risk:** Taslak · **İzin:** `expenses.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["expense_category"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"expense_category.create","x-risk":"draft","x-permission":"expenses.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/expense_category_create.input"}}}}}},"/operations/expense_category.list":{"post":{"operationId":"expense_category_list","summary":"Gider kategorilerini (hesap, varsayılan KDV oranı, KDV indirilebilirliği, KKEG) listeler. İlk çağrıda hazır kategoriler bir kez açılır.","description":"**Risk:** Okuma · **İzin:** `expenses.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["expense_category"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"expense_category.list","x-risk":"read","x-permission":"expenses.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/expense_category_list.input"}}}}}},"/operations/expense_category.update":{"post":{"operationId":"expense_category_update","summary":"Gider kategorisini günceller (ad, hesap, varsayılan KDV oranı, indirilebilirlik, KKEG, aktiflik). Geçmiş masraf fişleri değişmez.","description":"**Risk:** Taslak · **İzin:** `expenses.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["expense_category"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"expense_category.update","x-risk":"draft","x-permission":"expenses.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/expense_category_update.input"}}}}}},"/operations/export.backup_list":{"post":{"operationId":"export_backup_list","summary":"Son tam yedekleri durumları ve (hazırsa) 24 saat geçerli imzalı indirme bağlantısıyla listeler.","description":"**Risk:** Okuma · **İzin:** `company.manage` · **Kanallar:** web, api","tags":["export"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"export.backup_list","x-risk":"read","x-permission":"company.manage","x-channels":["web","api"],"x-idempotency":"optional","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/export_backup_list.input"}}}}}},"/operations/export.full_backup":{"post":{"operationId":"export_full_backup","summary":"Şirketin tüm muhasebe ve banka verisinin (e-Belge dosyaları ve ekler dahil, credential hariç) ZIP yedeğini kuyrukta hazırlar.","description":"**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `company.manage` · **Kanallar:** web, api","tags":["export"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"export.full_backup","x-risk":"commit","x-permission":"company.manage","x-channels":["web","api"],"x-idempotency":"required","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/export_full_backup.input"}}}}}},"/operations/export.luca_journal":{"post":{"operationId":"export_luca_journal","summary":"Tarih aralığındaki kesinleşmiş fişleri Luca fiş aktarım şablonu (14 kolon, ; ayraçlı CSV, Windows-1254) olarak dışa aktarır.","description":"**Risk:** Okuma · **İzin:** `ledger.view` · **Kanallar:** web, api, cli, assistant","tags":["export"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"export.luca_journal","x-risk":"read","x-permission":"ledger.view","x-channels":["web","api","cli","assistant"],"x-idempotency":"optional","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/export_luca_journal.input"}}}}}},"/operations/firm.assignment.list":{"post":{"operationId":"firm_assignment_list","summary":"Büro atama matrisini döner: ekip üyeleri, aktif müşteriler ve üye×müşteri hücrelerindeki yetki seti (full, bookkeeping, readonly).","description":"**Risk:** Okuma · **İzin:** `firm.access` · **Kanallar:** web, api, cli, mcp, assistant","tags":["firm"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"firm.assignment.list","x-risk":"read","x-permission":"firm.access","x-channels":["web","api","cli","mcp","assistant"],"x-idempotency":"optional","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/firm_assignment_list.input"}}}}}},"/operations/firm.assignment.update":{"post":{"operationId":"firm_assignment_update","summary":"Bir büro üyesini bir müşteri şirkete yetki setiyle atar (full: tam müşavir, bookkeeping: ön muhasebe, readonly: salt okuma) veya preset boş gönderilerek atamayı kaldırır.","description":"**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `firm.clients.manage` · **Kanallar:** web, api, cli, mcp, assistant","tags":["firm"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"firm.assignment.update","x-risk":"commit","x-permission":"firm.clients.manage","x-channels":["web","api","cli","mcp","assistant"],"x-idempotency":"required","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/firm_assignment_update.input"}}}}}},"/operations/firm.clients.accept":{"post":{"operationId":"firm_clients_accept","summary":"Bir şirketin büronuza gönderdiği mali müşavir bağlantı davetini kabul eder; şirket müşterileriniz arasına girer. Büro doğrulanmış olmalıdır.","description":"**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `firm.clients.manage` · **Kanallar:** web, api, cli, mcp, assistant","tags":["firm"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"firm.clients.accept","x-risk":"commit","x-permission":"firm.clients.manage","x-channels":["web","api","cli","mcp","assistant"],"x-idempotency":"required","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/firm_clients_accept.input"}}}}}},"/operations/firm.clients.invite":{"post":{"operationId":"firm_clients_invite","summary":"Bir şirketi VKN'si veya şirket sahibinin e-postası ile büronuza müşteri olarak davet eder; şirket onaylayınca bağlantı aktifleşir. Büro doğrulanmış olmalıdır.","description":"**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `firm.clients.manage` · **Kanallar:** web, api, cli, mcp, assistant","tags":["firm"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"firm.clients.invite","x-risk":"commit","x-permission":"firm.clients.manage","x-channels":["web","api","cli","mcp","assistant"],"x-idempotency":"required","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/firm_clients_invite.input"}}}}}},"/operations/firm.clients.list":{"post":{"operationId":"firm_clients_list","summary":"Büronun müşteri şirketlerini listeler (davet, aktif, reddedilen, sonlandırılan); kimin onayı beklendiği ve erişiminiz olup olmadığı dahil.","description":"**Risk:** Okuma · **İzin:** `firm.access` · **Kanallar:** web, api, cli, mcp, assistant","tags":["firm"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"firm.clients.list","x-risk":"read","x-permission":"firm.access","x-channels":["web","api","cli","mcp","assistant"],"x-idempotency":"optional","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/firm_clients_list.input"}}}}}},"/operations/firm.clients.revoke":{"post":{"operationId":"firm_clients_revoke","summary":"Bir müşteri şirketle büro bağlantısını sonlandırır ya da bekleyen daveti geri çeker/reddeder; atamalar kapanır ve büro ekibinin o şirkete erişimi kesilir.","description":"**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `firm.clients.manage` · **Kanallar:** web, api, cli, mcp, assistant","tags":["firm"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"firm.clients.revoke","x-risk":"commit","x-permission":"firm.clients.manage","x-channels":["web","api","cli","mcp","assistant"],"x-idempotency":"required","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/firm_clients_revoke.input"}}}}}},"/operations/firm.document_request.create":{"post":{"operationId":"firm_document_request_create","summary":"Erişebildiğiniz bir müşteri şirketten belge talep eder (başlık, açıklama, dönem, son tarih); şirket yöneticilerine bildirim ve e-posta gider.","description":"**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `firm.work` · **Kanallar:** web, api, cli, mcp, assistant","tags":["firm"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"firm.document_request.create","x-risk":"commit","x-permission":"firm.work","x-channels":["web","api","cli","mcp","assistant"],"x-idempotency":"required","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/firm_document_request_create.input"}}}}}},"/operations/firm.document_request.list":{"post":{"operationId":"firm_document_request_list","summary":"Büronun müşterilerden istediği belge taleplerini listeler (durum, dönem, son tarih, yüklenen dosya adları); yalnız erişebildiğiniz müşteriler.","description":"**Risk:** Okuma · **İzin:** `firm.access` · **Kanallar:** web, api, cli, mcp, assistant","tags":["firm"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"firm.document_request.list","x-risk":"read","x-permission":"firm.access","x-channels":["web","api","cli","mcp","assistant"],"x-idempotency":"optional","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/firm_document_request_list.input"}}}}}},"/operations/firm.document_request.update":{"post":{"operationId":"firm_document_request_update","summary":"Bir belge talebini tamamlandı, iptal ya da yeniden açık olarak işaretler (yalnız erişebildiğiniz müşterilerin talepleri).","description":"**Risk:** Taslak · **İzin:** `firm.work` · **Kanallar:** web, api, cli, mcp, assistant","tags":["firm"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"firm.document_request.update","x-risk":"draft","x-permission":"firm.work","x-channels":["web","api","cli","mcp","assistant"],"x-idempotency":"recommended","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/firm_document_request_update.input"}}}}}},"/operations/firm.get":{"post":{"operationId":"firm_get","summary":"Aktif mali müşavirlik bürosunun profilini, doğrulama durumunu, sizin büro rolünüzü/izinlerinizi ve özet sayıları (ekip, müşteri, bekleyen davet) döner.","description":"**Risk:** Okuma · **İzin:** `firm.access` · **Kanallar:** web, api, cli, mcp, assistant","tags":["firm"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"firm.get","x-risk":"read","x-permission":"firm.access","x-channels":["web","api","cli","mcp","assistant"],"x-idempotency":"optional","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/firm_get.input"}}}}}},"/operations/firm.members.invite":{"post":{"operationId":"firm_members_invite","summary":"Büro ekibine e-posta ile üye davet eder (rol: owner, partner, accountant, staff, intern). Yalnız büro ekip yöneticisi; kendi yetkinizin üzerinde rol verilemez.","description":"**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `firm.team.manage` · **Kanallar:** web, api, cli, mcp, assistant","tags":["firm"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"firm.members.invite","x-risk":"commit","x-permission":"firm.team.manage","x-channels":["web","api","cli","mcp","assistant"],"x-idempotency":"required","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/firm_members_invite.input"}}}}}},"/operations/firm.members.list":{"post":{"operationId":"firm_members_list","summary":"Büro ekibini listeler: üyeler (rol, aktiflik, katılım tarihi) ve kabul bekleyen ekip davetleri.","description":"**Risk:** Okuma · **İzin:** `firm.access` · **Kanallar:** web, api, cli, mcp, assistant","tags":["firm"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"firm.members.list","x-risk":"read","x-permission":"firm.access","x-channels":["web","api","cli","mcp","assistant"],"x-idempotency":"optional","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/firm_members_list.input"}}}}}},"/operations/firm.members.update":{"post":{"operationId":"firm_members_update","summary":"Büro ekip üyesinin rolünü değiştirir veya üyeyi pasifleştirir/etkinleştirir. Son büro sahibi pasifleştirilemez; kendi üyeliğiniz değiştirilemez.","description":"**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `firm.team.manage` · **Kanallar:** web, api, cli, mcp, assistant","tags":["firm"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"firm.members.update","x-risk":"commit","x-permission":"firm.team.manage","x-channels":["web","api","cli","mcp","assistant"],"x-idempotency":"required","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/firm_members_update.input"}}}}}},"/operations/firm.portfolio":{"post":{"operationId":"firm_portfolio","summary":"Büro müşteri portföyü: her müşteri için son kilitli ay, taslak fiş, eşleşmemiş banka hareketi, açık belge talebi, kontrol listesi ilerlemesi ve (izin varsa) KDV mahsubu / e-Defter / vadesi geçmiş alacak durumu.","description":"**Risk:** Okuma · **İzin:** `firm.access` · **Kanallar:** web, api, cli, mcp, assistant","tags":["firm"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"firm.portfolio","x-risk":"read","x-permission":"firm.access","x-channels":["web","api","cli","mcp","assistant"],"x-idempotency":"optional","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/firm_portfolio.input"}}}}}},"/operations/firm.task.list":{"post":{"operationId":"firm_task_list","summary":"Seçilen ay için erişebildiğiniz müşterilerin kapanış kontrol listesini döner (banka mutabakatı, e-Fatura aktarımı, KDV beyannamesi, e-Defter durumları).","description":"**Risk:** Okuma · **İzin:** `firm.access` · **Kanallar:** web, api, cli, mcp, assistant","tags":["firm"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"firm.task.list","x-risk":"read","x-permission":"firm.access","x-channels":["web","api","cli","mcp","assistant"],"x-idempotency":"optional","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/firm_task_list.input"}}}}}},"/operations/firm.task.update":{"post":{"operationId":"firm_task_update","summary":"Bir müşterinin belirli ay kapanış kontrol adımının durumunu günceller (pending, in_progress, done, not_applicable) ve isteğe bağlı not ekler.","description":"**Risk:** Taslak · **İzin:** `firm.work` · **Kanallar:** web, api, cli, mcp, assistant","tags":["firm"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"firm.task.update","x-risk":"draft","x-permission":"firm.work","x-channels":["web","api","cli","mcp","assistant"],"x-idempotency":"recommended","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/firm_task_update.input"}}}}}},"/operations/fixed_asset.create":{"post":{"operationId":"fixed_asset_create","summary":"Sabit kıymet kartı açar (maliyet, hesaplar, faydalı ömür, yöntem). Fiş üretmez; amortisman dönem sonu adımıyla ayrılır.","description":"**Risk:** Taslak · **İzin:** `ledger.post` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["fixed_asset"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"fixed_asset.create","x-risk":"draft","x-permission":"ledger.post","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/fixed_asset_create.input"}}}}}},"/operations/fixed_asset.create_from_invoice":{"post":{"operationId":"fixed_asset_create_from_invoice","summary":"Kesilmiş alış faturasının 25x/26x kaleminden sabit kıymet kartı açar (maliyet = kalem net TL + indirilemeyen KDV; alış tarihi = fatura tarihi). Fiş üretmez (fatura fişi 25x'e zaten yazdı); aynı kalemden ikinci kart açılamaz.","description":"**Risk:** Taslak · **İzin:** `ledger.post` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["fixed_asset"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"fixed_asset.create_from_invoice","x-risk":"draft","x-permission":"ledger.post","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/fixed_asset_create_from_invoice.input"}}}}}},"/operations/fixed_asset.dispose":{"post":{"operationId":"fixed_asset_dispose","summary":"Sabit kıymeti satış veya hurda ile elden çıkarır: 102/120 B (bedel + KDV), 257 B / 25x A, 391 A (KDV), fark 679 (kâr) veya 689 (zarar).","description":"**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `ledger.post` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["fixed_asset"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"fixed_asset.dispose","x-risk":"commit","x-permission":"ledger.post","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/fixed_asset_dispose.input"}}}}}},"/operations/fixed_asset.get":{"post":{"operationId":"fixed_asset_get","summary":"Sabit kıymet kartını getirir.","description":"**Risk:** Okuma · **İzin:** `ledger.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["fixed_asset"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"fixed_asset.get","x-risk":"read","x-permission":"ledger.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/fixed_asset_get.input"}}}}}},"/operations/fixed_asset.invoice_candidates":{"post":{"operationId":"fixed_asset_invoice_candidates","summary":"Alış faturasının sabit kıymet kartı açılabilecek kalemleri (25x/26x hesaplı), TL maliyetleri ve açılmış kartları.","description":"**Risk:** Okuma · **İzin:** `ledger.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["fixed_asset"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"fixed_asset.invoice_candidates","x-risk":"read","x-permission":"ledger.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/fixed_asset_invoice_candidates.input"}}}}}},"/operations/fixed_asset.list":{"post":{"operationId":"fixed_asset_list","summary":"Sabit kıymet kartlarını maliyet, birikmiş amortisman ve net defter değeriyle listeler.","description":"**Risk:** Okuma · **İzin:** `ledger.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["fixed_asset"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"fixed_asset.list","x-risk":"read","x-permission":"ledger.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/fixed_asset_list.input"}}}}}},"/operations/fixed_asset.schedule":{"post":{"operationId":"fixed_asset_schedule","summary":"Sabit kıymetin yıllara göre amortisman tablosunu (yıllık tutar, birikmiş, net değer, ayrılmış tutar) verir.","description":"**Risk:** Okuma · **İzin:** `ledger.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["fixed_asset"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"fixed_asset.schedule","x-risk":"read","x-permission":"ledger.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/fixed_asset_schedule.input"}}}}}},"/operations/fixed_asset.update":{"post":{"operationId":"fixed_asset_update","summary":"Sabit kıymet kartını günceller. Amortisman ayrılmış kıymette yalnız ad, kod, not, masraf merkezi ve gider hesabı değişebilir.","description":"**Risk:** Taslak · **İzin:** `ledger.post` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["fixed_asset"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"fixed_asset.update","x-risk":"draft","x-permission":"ledger.post","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/fixed_asset_update.input"}}}}}},"/operations/freelance_receipt.calculate":{"post":{"operationId":"freelance_receipt_calculate","summary":"Serbest meslek makbuzu tutarlarını hesaplar (kayıt oluşturmaz): brüt, KDV, gelir vergisi stopajı, net ve tahsil edilecek tutar.","description":"**Risk:** Okuma · **İzin:** `invoices.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["freelance_receipt"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"freelance_receipt.calculate","x-risk":"read","x-permission":"invoices.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/freelance_receipt_calculate.input"}}}}}},"/operations/freelance_receipt.cancel":{"post":{"operationId":"freelance_receipt_cancel","summary":"Kesilmiş serbest meslek makbuzunu iptal eder: e-SMM gönderilmişse önce sağlayıcıda iptal edilir (e-Belge gönderme yetkisi gerekir), ardından fiş ters kaydedilir.","description":"**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `invoices.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["freelance_receipt"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"freelance_receipt.cancel","x-risk":"commit","x-permission":"invoices.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/freelance_receipt_cancel.input"}}}}}},"/operations/freelance_receipt.create":{"post":{"operationId":"freelance_receipt_create","summary":"Taslak serbest meslek makbuzu oluşturur (fiş üretmez). Stopaj oranı verilmezse VKN'li müşteride %20, TCKN'li kişide 0 uygulanır. client_key ile aynı istek ikinci makbuz oluşturmaz.","description":"**Risk:** Taslak · **İzin:** `invoices.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["freelance_receipt"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"freelance_receipt.create","x-risk":"draft","x-permission":"invoices.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/freelance_receipt_create.input"}}}}}},"/operations/freelance_receipt.delete":{"post":{"operationId":"freelance_receipt_delete","summary":"Taslak serbest meslek makbuzunu siler (kesilmiş makbuz silinmez, iptal edilir).","description":"**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `invoices.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["freelance_receipt"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"freelance_receipt.delete","x-risk":"commit","x-permission":"invoices.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/freelance_receipt_delete.input"}}}}}},"/operations/freelance_receipt.get":{"post":{"operationId":"freelance_receipt_get","summary":"Serbest meslek makbuzunun ayrıntısı: kalemler, brüt/KDV/stopaj/net, fiş ve e-SMM durumu.","description":"**Risk:** Okuma · **İzin:** `invoices.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["freelance_receipt"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"freelance_receipt.get","x-risk":"read","x-permission":"invoices.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/freelance_receipt_get.input"}}}}}},"/operations/freelance_receipt.issue":{"post":{"operationId":"freelance_receipt_issue","summary":"Taslak serbest meslek makbuzunu keser: numara (SM-YYYY-…) verir ve fişi yazar — 120 B tahsil edilecek, 193.03 B stopaj / 600.02 A brüt, 391 A KDV. Kesilmiş makbuz için aynı sonucu döner.","description":"**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `invoices.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["freelance_receipt"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"freelance_receipt.issue","x-risk":"commit","x-permission":"invoices.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/freelance_receipt_issue.input"}}}}}},"/operations/freelance_receipt.list":{"post":{"operationId":"freelance_receipt_list","summary":"Serbest meslek makbuzlarını (e-SMM) listeler: durum, cari, tarih aralığı ve metin süzgeçleriyle, sayfalı; brüt, KDV, stopaj ve tahsil edilecek tutarlar.","description":"**Risk:** Okuma · **İzin:** `invoices.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["freelance_receipt"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"freelance_receipt.list","x-risk":"read","x-permission":"invoices.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/freelance_receipt_list.input"}}}}}},"/operations/freelance_receipt.update":{"post":{"operationId":"freelance_receipt_update","summary":"Taslak serbest meslek makbuzunu günceller; kalemler gönderilirse tümüyle değişir.","description":"**Risk:** Taslak · **İzin:** `invoices.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["freelance_receipt"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"freelance_receipt.update","x-risk":"draft","x-permission":"invoices.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/freelance_receipt_update.input"}}}}}},"/operations/import.cancel":{"post":{"operationId":"import_cancel","summary":"Henüz aktarılmamış bir aktarım işini iptal eder (kayıt oluşturulmaz).","description":"**Risk:** Taslak · **İzin:** `imports.run` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["import"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"import.cancel","x-risk":"draft","x-permission":"imports.run","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/import_cancel.input"}}}}}},"/operations/import.commit":{"post":{"operationId":"import_commit","summary":"Doğrulanmış geçerli satırları kalıcı kayda dönüştürür (hesap, cari, ürün, fiş, fatura, banka hareketi). Doğrulanmamış iş önce doğrulanır. Tekrar çalıştırılırsa kayıt çoğalmaz.","description":"**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `imports.run` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["import"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"import.commit","x-risk":"commit","x-permission":"imports.run","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/import_commit.input"}}}}}},"/operations/import.get":{"post":{"operationId":"import_get","summary":"Aktarım işinin durumunu, satır sayılarını, ilk 200 satırı ve hatalı satırları döner (ilerleme takibi için).","description":"**Risk:** Okuma · **İzin:** `imports.run` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["import"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"import.get","x-risk":"read","x-permission":"imports.run","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/import_get.input"}}}}}},"/operations/import.list":{"post":{"operationId":"import_list","summary":"Şirketin veri aktarımı işlerini (en yeni önce) durum ve satır sayılarıyla listeler.","description":"**Risk:** Okuma · **İzin:** `imports.run` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["import"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"import.list","x-risk":"read","x-permission":"imports.run","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/import_list.input"}}}}}},"/operations/import.map":{"post":{"operationId":"import_map","summary":"Aktarımın kolon eşlemesini (hedef alan → dosyadaki kolon adı), başlık satırını, Excel sayfasını ve seçeneklerini kaydeder.","description":"**Risk:** Taslak · **İzin:** `imports.run` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["import"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"import.map","x-risk":"draft","x-permission":"imports.run","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/import_map.input"}}}}}},"/operations/import.types":{"post":{"operationId":"import_types","summary":"Veri aktarımı türlerini (hesap planı, cari, ürün, açılış, fiş, fatura, banka ekstresi), alanlarını ve Luca/Logo/Paraşüt profillerini listeler.","description":"**Risk:** Okuma · **İzin:** `imports.run` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["import"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"import.types","x-risk":"read","x-permission":"imports.run","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/import_types.input"}}}}}},"/operations/import.upload":{"post":{"operationId":"import_upload","summary":"Excel/CSV (banka ekstresinde PDF de) dosyasını yükler, başlık satırını ve kolon eşlemesini önerir, ilk satırları önizler. API'de multipart/form-data: type, profile, file (+ bank_account_id).","description":"**Risk:** Taslak · **İzin:** `imports.run` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["import"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"import.upload","x-risk":"draft","x-permission":"imports.run","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/import_upload.input"}},"multipart/form-data":{"schema":{"$ref":"#/components/schemas/import_upload.input"}}}}}},"/operations/import.validate":{"post":{"operationId":"import_validate","summary":"Aktarım satırlarını arka planda doğrular (tip dönüşümü, zorunlu alan, hesap/cari kontrolü, fiş dengesi, mükerrer). Sonuç import.get ile izlenir.","description":"**Risk:** Taslak · **İzin:** `imports.run` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["import"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"import.validate","x-risk":"draft","x-permission":"imports.run","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/import_validate.input"}}}}}},"/operations/instrument.create":{"post":{"operationId":"instrument_create","summary":"Çek/senet kaydeder. Alınan (received) çek/senet müşteriden tahsilat olarak portföye girer (101.01 / 121.01 B, 120 A); verilen (given) tedarikçiye ödemedir (320 B, 103.01 / 321.01 A). allocations ile faturalara tahsis edilebilir. Verilen çekte bank_account_id (çekin çekildiği hesap) zorunludur.","description":"**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `payments.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["instrument"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"instrument.create","x-risk":"commit","x-permission":"payments.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/instrument_create.input"}}}}}},"/operations/instrument.get":{"post":{"operationId":"instrument_get","summary":"Tek çek/senedi hareket geçmişi, yapılabilecek işlemler (allowed_actions) ve muhasebe fişleriyle getirir.","description":"**Risk:** Okuma · **İzin:** `payments.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["instrument"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"instrument.get","x-risk":"read","x-permission":"payments.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/instrument_get.input"}}}}}},"/operations/instrument.list":{"post":{"operationId":"instrument_list","summary":"Çek/senet portföyünü listeler; tür, yön (alınan/verilen), durum, cari, vade aralığı ve metinle süzer. Özet: portföydeki alınan ve ödenmemiş verilen çek/senet toplamları, vadesi geçenler ve 30 gün içinde vadesi gelenler.","description":"**Risk:** Okuma · **İzin:** `payments.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["instrument"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"instrument.list","x-risk":"read","x-permission":"payments.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/instrument_list.input"}}}}}},"/operations/instrument.move":{"post":{"operationId":"instrument_move","summary":"Çek/senet hareketi ve fişi: deposit_collection (tahsile ver, banka), deposit_guarantee (teminata ver), withdraw (portföye geri al), collect (tahsil: banka/kasa), endorse (tedarikçiye ciro = ödeme, contact_id), bounce (karşılıksız → cari 120), return (iade), pay (verilen çek/senedin ödenmesi). Yapılabilecekler instrument.get allowed_actions alanında.","description":"**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `payments.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["instrument"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"instrument.move","x-risk":"commit","x-permission":"payments.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/instrument_move.input"}}}}}},"/operations/instrument.undo":{"post":{"operationId":"instrument_undo","summary":"Çek/senedin son hareketini geri alır: fişi ters kayıtla kapatılır (alma/verme/ciro için bağlı tahsilat/ödeme iptal edilir) ve önceki durumuna döner. İlk kayıt geri alınırsa çek/senet iptal edilmiş olur.","description":"**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `payments.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["instrument"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"instrument.undo","x-risk":"commit","x-permission":"payments.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/instrument_undo.input"}}}}}},"/operations/invitation.cancel":{"post":{"operationId":"invitation_cancel","summary":"Bekleyen bir ekip davetini iptal eder; davet bağlantısı artık kullanılamaz.","description":"**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `team.manage` · **Kanallar:** web, api, cli, mcp, assistant","tags":["invitation"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"invitation.cancel","x-risk":"commit","x-permission":"team.manage","x-channels":["web","api","cli","mcp","assistant"],"x-idempotency":"required","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/invitation_cancel.input"}}}}}},"/operations/invitation.list":{"post":{"operationId":"invitation_list","summary":"Aktif şirketin kabul bekleyen ekip davetlerini listeler (e-posta, rol, izinler, davet eden, son geçerlilik, süresi doldu mu).","description":"**Risk:** Okuma · **İzin:** `team.view` · **Kanallar:** web, api, cli, mcp, assistant","tags":["invitation"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"invitation.list","x-risk":"read","x-permission":"team.view","x-channels":["web","api","cli","mcp","assistant"],"x-idempotency":"optional","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/invitation_list.input"}}}}}},"/operations/invitation.resend":{"post":{"operationId":"invitation_resend","summary":"Bekleyen bir ekip davetini yeniden gönderir: yeni bağlantı üretilir, eski bağlantı geçersizleşir ve süre 7 gün uzar.","description":"**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `team.manage` · **Kanallar:** web, api, cli, mcp, assistant","tags":["invitation"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"invitation.resend","x-risk":"commit","x-permission":"team.manage","x-channels":["web","api","cli","mcp","assistant"],"x-idempotency":"required","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/invitation_resend.input"}}}}}},"/operations/invoice.calculate":{"post":{"operationId":"invoice_calculate","summary":"Fatura kalemlerinden KDV, tevkifat, toplam ve ödenecek tutarı kaydetmeden hesaplar; kalem hesaplarını önizler.","description":"**Risk:** Okuma · **İzin:** `invoices.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["invoice"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"invoice.calculate","x-risk":"read","x-permission":"invoices.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/invoice_calculate.input"}}}}}},"/operations/invoice.cancel":{"post":{"operationId":"invoice_cancel","summary":"Kesilmiş faturayı iptal eder ve fişini ters kayıtla kapatır. Tahsis edilmiş veya e-Belgesi gönderilmiş fatura iptal edilemez.","description":"**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `invoices.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["invoice"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"invoice.cancel","x-risk":"commit","x-permission":"invoices.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/invoice_cancel.input"}}}}}},"/operations/invoice.create":{"post":{"operationId":"invoice_create","summary":"Yalnız TASLAK fatura, iade, teklif veya proforma oluşturur; tutarları hesaplar, fiş üretmez. Kullanıcı faturayı \"kes / kesinleştir / gönder\" dediyse bu adım yetmez: dönen invoice.id ile HEMEN invoice.issue çağır (onay kartı). Yalnız \"taslak/hazırla\" dendiyse taslakta bırak.","description":"**Risk:** Taslak · **İzin:** `invoices.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["invoice"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"invoice.create","x-risk":"draft","x-permission":"invoices.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/invoice_create.input"}}}}}},"/operations/invoice.create_return":{"post":{"operationId":"invoice_create_return","summary":"Kesilmiş satış veya alış faturasından taslak iade faturası oluşturur (tüm kalemler ya da seçilen kalem/miktarlar).","description":"**Risk:** Taslak · **İzin:** `invoices.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["invoice"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"invoice.create_return","x-risk":"draft","x-permission":"invoices.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/invoice_create_return.input"}}}}}},"/operations/invoice.delete":{"post":{"operationId":"invoice_delete","summary":"Taslak faturayı veya dönüştürülmemiş teklifi siler. Kesilmiş fatura silinemez (invoice.cancel).","description":"**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `invoices.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["invoice"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"invoice.delete","x-risk":"commit","x-permission":"invoices.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/invoice_delete.input"}}}}}},"/operations/invoice.form_options":{"post":{"operationId":"invoice_form_options","summary":"Fatura / iade / teklif formunun seçeneklerini döner: türler, KDV oranları, tevkifat ve istisna kodları, fatura tipleri, senaryolar, birimler, dövizler, masraf merkezi / proje / depo listeleri, İHRACAT ve e-Arşiv alanlarının kod listeleri, bugünün tarihi ve ek sınırı.","description":"**Risk:** Okuma · **İzin:** `invoices.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["invoice"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"invoice.form_options","x-risk":"read","x-permission":"invoices.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/invoice_form_options.input"}}}}}},"/operations/invoice.get":{"post":{"operationId":"invoice_get","summary":"Tek faturanın başlık, kalem, vergi özeti, bağlı fiş ve iade bilgilerini getirir.","description":"**Risk:** Okuma · **İzin:** `invoices.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["invoice"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"invoice.get","x-risk":"read","x-permission":"invoices.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/invoice_get.input"}}}}}},"/operations/invoice.issue":{"post":{"operationId":"invoice_issue","summary":"Taslak faturayı keser (\"fatura kes\" isteğinin 2. adımı, invoice.create'ten hemen sonra): numara verir, kalem hesaplarını kesinleştirir ve muhasebe fişini (120/600/391, 153-7xx/191/320…) üretir. Aynı fatura ikinci kez kesilse de ikinci fiş oluşmaz.","description":"**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `invoices.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["invoice"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"invoice.issue","x-risk":"commit","x-permission":"invoices.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/invoice_issue.input"}}}}}},"/operations/invoice.list":{"post":{"operationId":"invoice_list","summary":"Faturaları, iadeleri, teklif ve proformaları listeler; tür, durum, cari, tarih aralığı, ödeme durumu ve metinle süzer.","description":"**Risk:** Okuma · **İzin:** `invoices.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["invoice"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"invoice.list","x-risk":"read","x-permission":"invoices.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/invoice_list.input"}}}}}},"/operations/invoice.pdf":{"post":{"operationId":"invoice_pdf","summary":"Faturanın (satış, alış, iade, teklif, proforma) yazdırılabilir PDF çıktısını döner: dosya adı, MIME, boyut ve base64 içerik. Sunucuda PDF motoru yoksa aynı belge HTML olarak döner.","description":"**Risk:** Okuma · **İzin:** `invoices.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["invoice"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"invoice.pdf","x-risk":"read","x-permission":"invoices.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/invoice_pdf.input"}}}}}},"/operations/invoice.update":{"post":{"operationId":"invoice_update","summary":"Taslak faturayı (veya teklifi) günceller; kalemler gönderilirse tümüyle değiştirilir. Kesilmiş fatura düzenlenemez.","description":"**Risk:** Taslak · **İzin:** `invoices.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["invoice"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"invoice.update","x-risk":"draft","x-permission":"invoices.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/invoice_update.input"}}}}}},"/operations/journal.account_correction":{"post":{"operationId":"journal_account_correction","summary":"Seçili KESİN fişlerde from_account hesabını to_account ile düzeltir: her fişin ters kaydı alınır ve hesabı değiştirilmiş aynı satırlarla yeni fiş kesinleştirilir (onay politikası varsa onaya gider). Kaynak bağlantıları yeni fişe devredilir. Hepsi ya da hiçbiri.","description":"**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `ledger.post` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["journal"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"journal.account_correction","x-risk":"commit","x-permission":"ledger.post","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/journal_account_correction.input"}}}}}},"/operations/journal.account_correction_preview":{"post":{"operationId":"journal_account_correction_preview","summary":"Seçili KESİN fişlerde from_account → to_account düzeltmesinin önizlemesi: hangi fişler ters kaydedilip yeni fişle yeniden kesinleşecek, satır ve tutar toplamları, atlanacak fişler (gerekçeli).","description":"**Risk:** Okuma · **İzin:** `ledger.post` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["journal"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"journal.account_correction_preview","x-risk":"read","x-permission":"ledger.post","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/journal_account_correction_preview.input"}}}}}},"/operations/journal.approve":{"post":{"operationId":"journal_approve","summary":"Onay bekleyen fişi onaylar ve kesinleştirir (fişi oluşturan onaylayamaz kuralı açıksa uygulanır).","description":"**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `ledger.approve` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["journal"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"journal.approve","x-risk":"commit","x-permission":"ledger.approve","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/journal_approve.input"}}}}}},"/operations/journal.bulk_delete_drafts":{"post":{"operationId":"journal_bulk_delete_drafts","summary":"En çok 200 TASLAK fişi siler; taslak olmayanlar atlanır ve raporlanır. Silinen fişin kaynağı yeniden muhasebeleştirilebilir.","description":"**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `ledger.post` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["journal"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"journal.bulk_delete_drafts","x-risk":"commit","x-permission":"ledger.post","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/journal_bulk_delete_drafts.input"}}}}}},"/operations/journal.bulk_fix_lines":{"post":{"operationId":"journal_bulk_fix_lines","summary":"En çok 200 TASLAK fişte süzgece uyan satırların döviz cinsi/kuru (döviz tutarı = TL / kur; kur verilmezse TCMB) ve/veya miktar/birimini düzeltir. TL tutarlar ve fiş dengesi değişmez. Süzgeç: patch.account_prefix (hesap kodu ön eki), patch.only_currency.","description":"**Risk:** Taslak · **İzin:** `ledger.post` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["journal"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"journal.bulk_fix_lines","x-risk":"draft","x-permission":"ledger.post","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/journal_bulk_fix_lines.input"}}}}}},"/operations/journal.bulk_post":{"post":{"operationId":"journal_bulk_post","summary":"Seçili fişleri (en fazla 50) toplu kesinleştirir: taslaklar kesinleşir, onay bekleyenler onaylanır. Kurallara uymayan (dengesiz, eksik cari, kilitli dönem, onay yetkisi yok…) fişler atlanır; sonuç fiş bazında raporlanır. Kesin fiş yalnız ters kayıtla düzeltilir.","description":"**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `ledger.post` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["journal"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"journal.bulk_post","x-risk":"commit","x-permission":"ledger.post","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/journal_bulk_post.input"}}}}}},"/operations/journal.bulk_replace_account":{"post":{"operationId":"journal_bulk_replace_account","summary":"En çok 200 TASLAK fişte from_account hesabının satırlarını to_account hesabına alır (hesap kodu veya id). Kesin fişler atlanır; onlar için journal.account_correction (ters kayıt + yeni fiş) kullanılır.","description":"**Risk:** Taslak · **İzin:** `ledger.post` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["journal"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"journal.bulk_replace_account","x-risk":"draft","x-permission":"ledger.post","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/journal_bulk_replace_account.input"}}}}}},"/operations/journal.bulk_update_drafts":{"post":{"operationId":"journal_bulk_update_drafts","summary":"En çok 200 TASLAK fişte belge no, belge tarihi, açıklama veya fiş tarihini birlikte günceller; taslak olmayanlar atlanır ve raporlanır.","description":"**Risk:** Taslak · **İzin:** `ledger.post` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["journal"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"journal.bulk_update_drafts","x-risk":"draft","x-permission":"ledger.post","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/journal_bulk_update_drafts.input"}}}}}},"/operations/journal.close_accounts":{"post":{"operationId":"journal_close_accounts","summary":"code_from–code_to aralığındaki yaprak hesapların date itibarıyla kesin bakiyelerini target_account hesabına aktaran MAHSUP fişini oluşturur (varsayılan taslak; post=true ile kesinleştirir). Önce journal.close_accounts_preview ile kontrol edin.","description":"**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `ledger.post` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["journal"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"journal.close_accounts","x-risk":"commit","x-permission":"ledger.post","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/journal_close_accounts.input"}}}}}},"/operations/journal.close_accounts_preview":{"post":{"operationId":"journal_close_accounts_preview","summary":"code_from–code_to aralığındaki yaprak hesapların date itibarıyla kesin bakiyelerini target_account hesabına aktaracak MAHSUP fişinin önizlemesi (cari kırılımlı satırlar, toplamlar, doğrulama). Yazma yapmaz.","description":"**Risk:** Okuma · **İzin:** `ledger.post` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["journal"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"journal.close_accounts_preview","x-risk":"read","x-permission":"ledger.post","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/journal_close_accounts_preview.input"}}}}}},"/operations/journal.copy_targets":{"post":{"operationId":"journal_copy_targets","summary":"Fişin kopyalanabileceği diğer şirketler (doğrudan üyelik veya mali müşavir bürosu erişimi + hedefte fiş kaydetme yetkisi). journal.duplicate target_company_id ile kullanılır.","description":"**Risk:** Okuma · **İzin:** `ledger.post` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["journal"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"journal.copy_targets","x-risk":"read","x-permission":"ledger.post","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/journal_copy_targets.input"}}}}}},"/operations/journal.create":{"post":{"operationId":"journal_create","summary":"Taslak yevmiye fişi oluşturur (en az 2 satır; borç toplamı alacak toplamına eşit olmalı — önce journal.validate ile denetlenebilir). Hesaplar kodla (ör. \"120.01\") veya kimlikle verilir; kodu account_list ile doğrula, uydurma. Kesinleştirmek için journal.post (veya onay akışında journal.submit) çağrılır; kesinleştirme kullanıcı onayıyla yapılır.","description":"**Risk:** Taslak · **İzin:** `ledger.post` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["journal"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"journal.create","x-risk":"draft","x-permission":"ledger.post","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/journal_create.input"}}}}}},"/operations/journal.create_opening":{"post":{"operationId":"journal_create_opening","summary":"Elle açılış (ACILIS) fişi taslağı oluşturur; tarih mali yılın ilk günü (01.01) olmalıdır.","description":"**Risk:** Taslak · **İzin:** `ledger.post` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["journal"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"journal.create_opening","x-risk":"draft","x-permission":"ledger.post","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/journal_create_opening.input"}}}}}},"/operations/journal.delete":{"post":{"operationId":"journal_delete","summary":"Taslak veya onay bekleyen fişi siler; kesinleşmiş fiş silinemez (ters kayıt kullanılır).","description":"**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `ledger.post` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["journal"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"journal.delete","x-risk":"commit","x-permission":"ledger.post","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/journal_delete.input"}}}}}},"/operations/journal.duplicate":{"post":{"operationId":"journal_duplicate","summary":"Fişi (kesin, taslak veya ters kayıt) yeni bir TASLAK fiş olarak kopyalar; tarih verilmezse orijinal tarih kullanılır. target_company_id verilirse (K5, FS-13) erişilen başka şirkete hesap kodu eşlemesiyle taslak olarak kopyalar (eşlenemeyen kodlar hata listesi döner; cari/masraf merkezi/proje taşınmaz).","description":"**Risk:** Taslak · **İzin:** `ledger.post` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["journal"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"journal.duplicate","x-risk":"draft","x-permission":"ledger.post","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/journal_duplicate.input"}}}}}},"/operations/journal.get":{"post":{"operationId":"journal_get","summary":"Tek fişi satırları, kaynak bağlantıları, geçici/kesin yevmiye madde no ve işlem geçmişiyle döner; oluşturan/onaylayan kullanıcı adları, ters kayıt bağlantılarının fiş numaraları, ek sayısı ve onay politikasının bu fişe uygulanıp uygulanmadığı dahil.","description":"**Risk:** Okuma · **İzin:** `ledger.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["journal"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"journal.get","x-risk":"read","x-permission":"ledger.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/journal_get.input"}}}}}},"/operations/journal.list":{"post":{"operationId":"journal_list","summary":"Yevmiye fişlerini tarih, durum, tür, kaynak, hesap, tutar aralığı, belge no, cari, masraf merkezi ve metin süzgeçleriyle listeler.","description":"**Risk:** Okuma · **İzin:** `ledger.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["journal"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"journal.list","x-risk":"read","x-permission":"ledger.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/journal_list.input"}}}}}},"/operations/journal.merge":{"post":{"operationId":"journal_merge","summary":"Aynı tarih, fiş türü ve para birimindeki 2–50 TASLAK fişi tek taslakta birleştirir (en küçük id'li fiş kalır, diğerlerinin satırları eklenip kendileri silinir; kaynak bağlantıları ve ekler taşınır).","description":"**Risk:** Taslak · **İzin:** `ledger.post` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["journal"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"journal.merge","x-risk":"draft","x-permission":"ledger.post","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/journal_merge.input"}}}}}},"/operations/journal.post":{"post":{"operationId":"journal_post","summary":"Taslak fişi kesinleştirir (deftere işler). Kesin fiş değiştirilemez; onay politikası açıksa onay yetkisi gerekir.","description":"**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `ledger.post` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["journal"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"journal.post","x-risk":"commit","x-permission":"ledger.post","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/journal_post.input"}}}}}},"/operations/journal.reject":{"post":{"operationId":"journal_reject","summary":"Onay bekleyen fişi gerekçeyle reddeder; fiş taslağa döner.","description":"**Risk:** Taslak · **İzin:** `ledger.approve` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["journal"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"journal.reject","x-risk":"draft","x-permission":"ledger.approve","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/journal_reject.input"}}}}}},"/operations/journal.reverse":{"post":{"operationId":"journal_reverse","summary":"Kesinleşmiş fişin ters kaydını (borç-alacak yer değiştirmiş yeni kesin fiş) oluşturur.","description":"**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `ledger.post` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["journal"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"journal.reverse","x-risk":"commit","x-permission":"ledger.post","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/journal_reverse.input"}}}}}},"/operations/journal.review_queue":{"post":{"operationId":"journal_review_queue","summary":"Onay kuyruğunu listeler: \"inceleme gerekli\" taslaklar (otomatik/dış kaynaklı ya da inceleme işaretli) ve onay bekleyen fişler; sekme sayaçları, sayfalama, fiş tarihine göre eskiden yeniye. Toplu kesinleştirme: journal.bulk_post.","description":"**Risk:** Okuma · **İzin:** `ledger.post` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["journal"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"journal.review_queue","x-risk":"read","x-permission":"ledger.post","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/journal_review_queue.input"}}}}}},"/operations/journal.set_passive":{"post":{"operationId":"journal_set_passive","summary":"En çok 200 TASLAK fişi pasife alır (passive=true, iptal işareti; kesinleştirilemez) veya yeniden aktifleştirir (passive=false). Kesin fiş pasife alınamaz; iptali ters kayıttır.","description":"**Risk:** Taslak · **İzin:** `ledger.post` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["journal"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"journal.set_passive","x-risk":"draft","x-permission":"ledger.post","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/journal_set_passive.input"}}}}}},"/operations/journal.split":{"post":{"operationId":"journal_split","summary":"TASLAK fişi böler: line_nos ile seçilen satırlar yeni bir taslak fişe taşınır. Kalan ve taşınan satırların her biri kendi içinde dengeli (borç = alacak) olmalıdır; kesin fiş bölünemez.","description":"**Risk:** Taslak · **İzin:** `ledger.post` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["journal"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"journal.split","x-risk":"draft","x-permission":"ledger.post","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/journal_split.input"}}}}}},"/operations/journal.submit":{"post":{"operationId":"journal_submit","summary":"Taslak fişi gönderir: onay politikası açıksa onaya düşer, değilse kesinleşir.","description":"**Risk:** Taslak · **İzin:** `ledger.post` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["journal"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"journal.submit","x-risk":"draft","x-permission":"ledger.post","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/journal_submit.input"}}}}}},"/operations/journal.update":{"post":{"operationId":"journal_update","summary":"Taslak fişi günceller; lock_version uyuşmazsa (başkası değiştirdiyse) 409 döner.","description":"**Risk:** Taslak · **İzin:** `ledger.post` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["journal"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"journal.update","x-risk":"draft","x-permission":"ledger.post","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/journal_update.input"}}}}}},"/operations/journal.validate":{"post":{"operationId":"journal_validate","summary":"Fiş gövdesini kaydetmeden doğrular; hatalar, uyarılar ve borç/alacak toplamlarını döner.","description":"**Risk:** Okuma · **İzin:** `ledger.post` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["journal"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"journal.validate","x-risk":"read","x-permission":"ledger.post","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/journal_validate.input"}}}}}},"/operations/journal_template.apply":{"post":{"operationId":"journal_template_apply","summary":"Şablondan TASLAK yevmiye fişi oluşturur. Kesinleştirmek için journal.submit / journal.post çağrılır.","description":"**Risk:** Taslak · **İzin:** `ledger.post` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["journal_template"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"journal_template.apply","x-risk":"draft","x-permission":"ledger.post","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/journal_template_apply.input"}}}}}},"/operations/journal_template.create":{"post":{"operationId":"journal_template_create","summary":"Yeni hızlı fiş şablonu tanımlar (girdiler + satırlar; tutarlar güvenli ifade dilinde).","description":"**Risk:** Taslak · **İzin:** `accounts_chart.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["journal_template"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"journal_template.create","x-risk":"draft","x-permission":"accounts_chart.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/journal_template_create.input"}}}}}},"/operations/journal_template.delete":{"post":{"operationId":"journal_template_delete","summary":"Hızlı fiş şablonunu siler (şablondan üretilmiş fişler etkilenmez; hazır şablon yeniden açılmaz).","description":"**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `accounts_chart.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["journal_template"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"journal_template.delete","x-risk":"commit","x-permission":"accounts_chart.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/journal_template_delete.input"}}}}}},"/operations/journal_template.get":{"post":{"operationId":"journal_template_get","summary":"Tek hızlı fiş şablonunun girdilerini ve satır tanımlarını getirir.","description":"**Risk:** Okuma · **İzin:** `ledger.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["journal_template"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"journal_template.get","x-risk":"read","x-permission":"ledger.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/journal_template_get.input"}}}}}},"/operations/journal_template.list":{"post":{"operationId":"journal_template_list","summary":"Hızlı fiş şablonlarını listeler (KDV ayırma, Z raporu, tahakkuk, karşılık, kâr dağıtımı, bordro…). İlk çağrıda hazır şablonlar açılır.","description":"**Risk:** Okuma · **İzin:** `ledger.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["journal_template"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"journal_template.list","x-risk":"read","x-permission":"ledger.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/journal_template_list.input"}}}}}},"/operations/journal_template.preview":{"post":{"operationId":"journal_template_preview","summary":"Şablonu verilen girdilerle hesaplar ve üretilecek fiş satırlarını doğrulama sonucuyla döndürür (fiş yazmaz).","description":"**Risk:** Okuma · **İzin:** `ledger.post` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["journal_template"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"journal_template.preview","x-risk":"read","x-permission":"ledger.post","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/journal_template_preview.input"}}}}}},"/operations/journal_template.update":{"post":{"operationId":"journal_template_update","summary":"Hızlı fiş şablonunu günceller (ad, kategori, girdiler, satırlar, aktiflik).","description":"**Risk:** Taslak · **İzin:** `accounts_chart.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["journal_template"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"journal_template.update","x-risk":"draft","x-permission":"accounts_chart.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/journal_template_update.input"}}}}}},"/operations/ledger.verify":{"post":{"operationId":"ledger_verify","summary":"Defter tutarlılığını denetler: kesin fişlerde satır toplamı = başlık toplamı, borç = alacak, satır/başlık kesinlik uyumu, mizan dengesi ve 102 ↔ banka bakiyesi.","description":"**Risk:** Okuma · **İzin:** `ledger.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["ledger"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"ledger.verify","x-risk":"read","x-permission":"ledger.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ledger_verify.input"}}}}}},"/operations/loan.create":{"post":{"operationId":"loan_create","summary":"Banka kredisi kaydeder ve kullanım fişini keser: 102 B / 300.xx A (12 ay içinde ödenecek anapara) + 400.xx A (kalan). Taksit planı (installments) elle veya Excel’den verilebilir; anapara toplamı kredi tutarına eşit olmalı.","description":"**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `payments.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["loan"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"loan.create","x-risk":"commit","x-permission":"payments.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/loan_create.input"}}}}}},"/operations/loan.delete":{"post":{"operationId":"loan_delete","summary":"Ödenmiş taksiti olmayan krediyi siler; kullanım fişinin ters kaydı alınır.","description":"**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `payments.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["loan"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"loan.delete","x-risk":"commit","x-permission":"payments.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/loan_delete.input"}}}}}},"/operations/loan.get":{"post":{"operationId":"loan_get","summary":"Krediyi taksit planıyla getirir.","description":"**Risk:** Okuma · **İzin:** `payments.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["loan"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"loan.get","x-risk":"read","x-permission":"payments.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/loan_get.input"}}}}}},"/operations/loan.list":{"post":{"operationId":"loan_list","summary":"Banka kredilerini kalan anapara, sonraki taksit ve gecikme bilgisiyle listeler.","description":"**Risk:** Okuma · **İzin:** `payments.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["loan"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"loan.list","x-risk":"read","x-permission":"payments.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/loan_list.input"}}}}}},"/operations/loan.pay_installment":{"post":{"operationId":"loan_pay_installment","summary":"Kredi taksit ödemesini kaydeder: 300 B (anapara), 780.01 B (faiz), 780.03 B (BSMV) / 102 A. Faiz/BSMV banka dekontundan farklıysa girilebilir. Banka hareketinden gelen taksit Banka Eşleştirme ile otomatik kapanır.","description":"**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `payments.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["loan"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"loan.pay_installment","x-risk":"commit","x-permission":"payments.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/loan_pay_installment.input"}}}}}},"/operations/loan.reclass_preview":{"post":{"operationId":"loan_reclass_preview","summary":"Yıl sonu önizlemesi: uzun vadeli kredilerin (400) as_of tarihinden sonraki 12 ay içinde ödenecek anaparası (300’e aktarılacak tutar).","description":"**Risk:** Okuma · **İzin:** `payments.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["loan"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"loan.reclass_preview","x-risk":"read","x-permission":"payments.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/loan_reclass_preview.input"}}}}}},"/operations/loan.reclassify":{"post":{"operationId":"loan_reclassify","summary":"Uzun vadeli kredinin 12 ay içine giren anaparasını kısa vadeye aktarır: 400.xx B / 300.xx A (kredi başına bir fiş).","description":"**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `payments.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["loan"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"loan.reclassify","x-risk":"commit","x-permission":"payments.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/loan_reclassify.input"}}}}}},"/operations/loan.set_schedule":{"post":{"operationId":"loan_set_schedule","summary":"Kredinin taksit planını değiştirir (ödenmiş taksit yokken). Anapara toplamı kredi tutarına eşit olmalı.","description":"**Risk:** Taslak · **İzin:** `payments.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["loan"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"loan.set_schedule","x-risk":"draft","x-permission":"payments.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/loan_set_schedule.input"}}}}}},"/operations/loan.unpay_installment":{"post":{"operationId":"loan_unpay_installment","summary":"Elle kaydedilmiş taksit ödemesini geri alır (fişin ters kaydı).","description":"**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `payments.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["loan"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"loan.unpay_installment","x-risk":"commit","x-permission":"payments.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/loan_unpay_installment.input"}}}}}},"/operations/loan.update":{"post":{"operationId":"loan_update","summary":"Kredinin ad, vade, faiz oranı ve not bilgilerini günceller (tutar/hesaplar değişmez).","description":"**Risk:** Taslak · **İzin:** `payments.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["loan"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"loan.update","x-risk":"draft","x-permission":"payments.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/loan_update.input"}}}}}},"/operations/payment.cancel":{"post":{"operationId":"payment_cancel","summary":"Tahsilat/ödemeyi iptal eder: fişi ters kayıtla kapatır, fatura tahsislerini siler ve faturaların ödeme durumunu geri alır.","description":"**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `payments.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["payment"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"payment.cancel","x-risk":"commit","x-permission":"payments.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/payment_cancel.input"}}}}}},"/operations/payment.create":{"post":{"operationId":"payment_create","summary":"Tahsilat (direction=in) veya ödeme (out) kaydeder ve kesin muhasebe fişini üretir: banka 102/120, nakit TAHSIL/TEDIYE fişi, mahsup. allocations ile faturalara tahsis edilir (fatura dövizinde; açık bakiyeyi aşamaz); auto_allocate=true en eski vadeli faturalardan başlar. Dövizli faturada kur farkı: ihracatta 646/656 satırı, yurtiçinde lehe farkta taslak kur farkı faturası.","description":"**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `payments.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["payment"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"payment.create","x-risk":"commit","x-permission":"payments.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/payment_create.input"}}}}}},"/operations/payment.form_options":{"post":{"operationId":"payment_form_options","summary":"Tahsilat / ödeme formunun seçeneklerini döner: kullanılabilir ödeme yöntemleri, aktif banka hesapları, kasalar, POS terminalleri, şirket kredi kartları (maskeli), yönler, dövizler, bugünün tarihi ve ek sınırı.","description":"**Risk:** Okuma · **İzin:** `payments.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["payment"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"payment.form_options","x-risk":"read","x-permission":"payments.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/payment_form_options.input"}}}}}},"/operations/payment.get":{"post":{"operationId":"payment_get","summary":"Tek bir tahsilat/ödemeyi tahsisleri, kur farkları, kur farkı faturası ve bağlı fişleriyle getirir.","description":"**Risk:** Okuma · **İzin:** `payments.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["payment"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"payment.get","x-risk":"read","x-permission":"payments.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/payment_get.input"}}}}}},"/operations/payment.list":{"post":{"operationId":"payment_list","summary":"Tahsilat ve ödemeleri listeler; yön, yöntem, durum, cari, tarih aralığı ve metinle süzer. Özet olarak toplam TL tutarı döner.","description":"**Risk:** Okuma · **İzin:** `payments.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["payment"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"payment.list","x-risk":"read","x-permission":"payments.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/payment_list.input"}}}}}},"/operations/payment.open_items":{"post":{"operationId":"payment_open_items","summary":"Carinin tahsilat (in) veya ödeme (out) ile kapatılabilecek açık faturalarını en eski vadeden başlayarak listeler; ödemede ödenmemiş masrafları da (expenses) döner.","description":"**Risk:** Okuma · **İzin:** `payments.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["payment"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"payment.open_items","x-risk":"read","x-permission":"payments.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/payment_open_items.input"}}}}}},"/operations/payroll.cancel":{"post":{"operationId":"payroll_cancel","summary":"Tahakkuk edilmiş bordroyu iptal eder (fiş ters kaydı). Bordrodan maaş ödemesi kaydedilmişse önce ödemeler iptal edilmelidir.","description":"**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `ledger.post` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["payroll"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"payroll.cancel","x-risk":"commit","x-permission":"ledger.post","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/payroll_cancel.input"}}}}}},"/operations/payroll.create":{"post":{"operationId":"payroll_create","summary":"Taslak bordro oluşturur (hesaplama yapmaz: brüt, SGK/işsizlik işçi-işveren, GV, DV dış bordrodan girilir; net = brüt − kesintiler). payroll.post ile 03 §15.10 tahakkuk fişi kesinleşir. Aynı dönemde iptal edilmemiş tek bordro olabilir.","description":"**Risk:** Taslak · **İzin:** `ledger.post` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["payroll"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"payroll.create","x-risk":"draft","x-permission":"ledger.post","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/payroll_create.input"}}}}}},"/operations/payroll.delete":{"post":{"operationId":"payroll_delete","summary":"Taslak bordroyu siler (tahakkuk edilmiş bordro silinmez; payroll.cancel ile ters kayıt alınır).","description":"**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `ledger.post` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["payroll"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"payroll.delete","x-risk":"commit","x-permission":"ledger.post","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/payroll_delete.input"}}}}}},"/operations/payroll.get":{"post":{"operationId":"payroll_get","summary":"Bordro ayrıntısı: çalışan satırları, toplamlar, tahakkuk fişi ve \"kime ne kadar ödenecek\" listesi (net − avans; ödeme durumu, IBAN maskeli).","description":"**Risk:** Okuma · **İzin:** `ledger.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["payroll"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"payroll.get","x-risk":"read","x-permission":"ledger.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/payroll_get.input"}}}}}},"/operations/payroll.list":{"post":{"operationId":"payroll_list","summary":"Bordro dönemlerini listeler (dönem, durum, çalışan sayısı, brüt/net/işveren maliyeti toplamları).","description":"**Risk:** Okuma · **İzin:** `ledger.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["payroll"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"payroll.list","x-risk":"read","x-permission":"ledger.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/payroll_list.input"}}}}}},"/operations/payroll.pay":{"post":{"operationId":"payroll_pay","summary":"Tahakkuk edilmiş bordronun maaşlarını öder (P09 ödeme kaydı, çalışan başına 335.01 B / banka veya kasa A; tutar = net − avans). Aynı bordrodan aynı çalışana ikinci ödeme üretilmez.","description":"**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `payments.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["payroll"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"payroll.pay","x-risk":"commit","x-permission":"payments.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/payroll_pay.input"}}}}}},"/operations/payroll.post":{"post":{"operationId":"payroll_post","summary":"Bordro tahakkuk fişini kesinleştirir (03 §15.10): 770.01/760.03/740.01 brüt + 770.02 işveren payları B / 335.01 net (çalışan bazında), 196.01 avans mahsubu, 360.03 GV, 360.06 DV, 361.01-04 SGK ve işsizlik A. Idempotent.","description":"**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `ledger.post` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["payroll"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"payroll.post","x-risk":"commit","x-permission":"ledger.post","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/payroll_post.input"}}}}}},"/operations/payroll.update":{"post":{"operationId":"payroll_update","summary":"Taslak bordroyu günceller (lines verilirse tüm satırlar yenilenir). Tahakkuk edilmiş bordro değişmez; iptal edilip yeniden girilir.","description":"**Risk:** Taslak · **İzin:** `ledger.post` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["payroll"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"payroll.update","x-risk":"draft","x-permission":"ledger.post","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/payroll_update.input"}}}}}},"/operations/period.list":{"post":{"operationId":"period_list","summary":"Mali yılın 12 aylık dönemini durum, madde no aralığı ve taslak sayısıyla listeler.","description":"**Risk:** Okuma · **İzin:** `ledger.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["period"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"period.list","x-risk":"read","x-permission":"ledger.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/period_list.input"}}}}}},"/operations/period.lock":{"post":{"operationId":"period_lock","summary":"Ayı kilitler ve yevmiye madde numaralarını kronolojik, boşluksuz atar. Önceki aylar kilitli ve dönemde taslak olmamalıdır.","description":"**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `ledger.close` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["period"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"period.lock","x-risk":"commit","x-permission":"ledger.close","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/period_lock.input"}}}}}},"/operations/period.unlock":{"post":{"operationId":"period_unlock","summary":"Yılın en son kilitli ayının kilidini gerekçeyle açar; madde numaraları silinir. e-Defteri gönderilmiş dönem açılamaz.","description":"**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `ledger.close` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["period"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"period.unlock","x-risk":"commit","x-permission":"ledger.close","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/period_unlock.input"}}}}}},"/operations/platform.ping":{"post":{"operationId":"platform_ping","summary":"Bağlantıyı ve muhasebe erişim yetkisini doğrular; aktif şirketin kimliğini döner.","description":"**Risk:** Okuma · **İzin:** `ledger.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["platform"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"platform.ping","x-risk":"read","x-permission":"ledger.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/platform_ping.input"}}}}}},"/operations/pos.archive":{"post":{"operationId":"pos_archive","summary":"POS terminalini arşivler (hareketliyse pasifleştirir).","description":"**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `payments.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["pos"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"pos.archive","x-risk":"commit","x-permission":"payments.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/pos_archive.input"}}}}}},"/operations/pos.cancel_settlement":{"post":{"operationId":"pos_cancel_settlement","summary":"POS valör kaydını iptal eder (fişin ters kaydı).","description":"**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `payments.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["pos"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"pos.cancel_settlement","x-risk":"commit","x-permission":"payments.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/pos_cancel_settlement.input"}}}}}},"/operations/pos.create":{"post":{"operationId":"pos_create","summary":"POS terminali tanımlar ve 108.01 altında POS alacak hesabını açar (komisyon oranı, valör günü, bağlı TL banka hesabı).","description":"**Risk:** Taslak · **İzin:** `payments.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["pos"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"pos.create","x-risk":"draft","x-permission":"payments.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/pos_create.input"}}}}}},"/operations/pos.get":{"post":{"operationId":"pos_get","summary":"POS terminalini bakiyesi ve valör kayıtlarıyla getirir.","description":"**Risk:** Okuma · **İzin:** `payments.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["pos"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"pos.get","x-risk":"read","x-permission":"payments.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/pos_get.input"}}}}}},"/operations/pos.list":{"post":{"operationId":"pos_list","summary":"POS terminallerini valörü beklenen (108.01.xx) bakiyeleriyle listeler.","description":"**Risk:** Okuma · **İzin:** `payments.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["pos"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"pos.list","x-risk":"read","x-permission":"payments.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/pos_list.input"}}}}}},"/operations/pos.settle":{"post":{"operationId":"pos_settle","summary":"POS valörünü kaydeder: 102 B (net), 780.04 B (komisyon) / 108.01.xx A (brüt). Komisyon verilmezse terminal oranından hesaplanır. bank_transaction_id verilirse banka hareketi bu fişe bağlanır (ikinci fiş oluşmaz).","description":"**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `payments.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["pos"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"pos.settle","x-risk":"commit","x-permission":"payments.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/pos_settle.input"}}}}}},"/operations/pos.update":{"post":{"operationId":"pos_update","summary":"POS terminali bilgilerini günceller.","description":"**Risk:** Taslak · **İzin:** `payments.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["pos"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"pos.update","x-risk":"draft","x-permission":"payments.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/pos_update.input"}}}}}},"/operations/posting_rule.accept_suggestion":{"post":{"operationId":"posting_rule_accept_suggestion","summary":"Öğrenilmiş eşleştirme kuralı önerisini kabul edip etkinleştirir; sonraki banka hareketleri bu kuralla eşleşir.","description":"**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `ledger.post` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["posting_rule"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"posting_rule.accept_suggestion","x-risk":"commit","x-permission":"ledger.post","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/posting_rule_accept_suggestion.input"}}}}}},"/operations/posting_rule.create":{"post":{"operationId":"posting_rule_create","summary":"Yeni eşleştirme kuralı ekler (koşullar → hesap). Otomatik muhasebeleştirmeyi etkilediği için onay gerektirir.","description":"**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `ledger.post` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["posting_rule"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"posting_rule.create","x-risk":"commit","x-permission":"ledger.post","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/posting_rule_create.input"}}}}}},"/operations/posting_rule.delete":{"post":{"operationId":"posting_rule_delete","summary":"Eşleştirme kuralını siler.","description":"**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `ledger.post` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["posting_rule"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"posting_rule.delete","x-risk":"commit","x-permission":"ledger.post","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/posting_rule_delete.input"}}}}}},"/operations/posting_rule.list":{"post":{"operationId":"posting_rule_list","summary":"Eşleştirme kurallarını (banka hareketi, alış/satış kalemi → hesap) öncelik sırasıyla listeler.","description":"**Risk:** Okuma · **İzin:** `ledger.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["posting_rule"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"posting_rule.list","x-risk":"read","x-permission":"ledger.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/posting_rule_list.input"}}}}}},"/operations/posting_rule.update":{"post":{"operationId":"posting_rule_update","summary":"Eşleştirme kuralını günceller, etkinleştirir/devre dışı bırakır veya öğrenilmiş öneriyi onaylar/reddeder.","description":"**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `ledger.post` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["posting_rule"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"posting_rule.update","x-risk":"commit","x-permission":"ledger.post","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/posting_rule_update.input"}}}}}},"/operations/product.archive":{"post":{"operationId":"product_archive","summary":"Ürün / hizmet kartını arşive kaldırır (pasifleştirir; geçmiş belgelerde adıyla görünmeye devam eder).","description":"**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `products.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["product"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"product.archive","x-risk":"commit","x-permission":"products.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/product_archive.input"}}}}}},"/operations/product.create":{"post":{"operationId":"product_create","summary":"Yeni ürün veya hizmet kartı oluşturur (birim, KDV oranı, satış/alış fiyatı, varsayılan hesaplar).","description":"**Risk:** Taslak · **İzin:** `products.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["product"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"product.create","x-risk":"draft","x-permission":"products.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/product_create.input"}}}}}},"/operations/product.get":{"post":{"operationId":"product_get","summary":"Tek bir ürün / hizmet kartını döndürür.","description":"**Risk:** Okuma · **İzin:** `products.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["product"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"product.get","x-risk":"read","x-permission":"products.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/product_get.input"}}}}}},"/operations/product.list":{"post":{"operationId":"product_list","summary":"Ürün ve hizmetleri listeler; ad, kod veya barkoda göre arar.","description":"**Risk:** Okuma · **İzin:** `products.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["product"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"product.list","x-risk":"read","x-permission":"products.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/product_list.input"}}}}}},"/operations/product.update":{"post":{"operationId":"product_update","summary":"Ürün / hizmet kartını günceller (yalnız gönderilen alanlar).","description":"**Risk:** Taslak · **İzin:** `products.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["product"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"product.update","x-risk":"draft","x-permission":"products.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/product_update.input"}}}}}},"/operations/project.create":{"post":{"operationId":"project_create","summary":"Yeni proje oluşturur.","description":"**Risk:** Taslak · **İzin:** `accounts_chart.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["project"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"project.create","x-risk":"draft","x-permission":"accounts_chart.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/project_create.input"}}}}}},"/operations/project.list":{"post":{"operationId":"project_list","summary":"Projeleri listeler.","description":"**Risk:** Okuma · **İzin:** `ledger.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["project"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"project.list","x-risk":"read","x-permission":"ledger.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/project_list.input"}}}}}},"/operations/project.update":{"post":{"operationId":"project_update","summary":"Projenin kodunu, adını, durumunu veya tarihlerini günceller.","description":"**Risk:** Taslak · **İzin:** `accounts_chart.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["project"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"project.update","x-risk":"draft","x-permission":"accounts_chart.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/project_update.input"}}}}}},"/operations/quote.convert":{"post":{"operationId":"quote_convert","summary":"Teklif veya proformayı taslak satış faturasına dönüştürür; teklif \"faturaya dönüştü\" olarak işaretlenir.","description":"**Risk:** Taslak · **İzin:** `invoices.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["quote"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"quote.convert","x-risk":"draft","x-permission":"invoices.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/quote_convert.input"}}}}}},"/operations/reconciliation.list":{"post":{"operationId":"reconciliation_list","summary":"Gönderilen cari mutabakat mektupları: tarih, bakiye (B/A), durum (yanıt bekleniyor / mutabık / mutabık değil / süresi doldu) ve karşı taraf notu.","description":"**Risk:** Okuma · **İzin:** `contacts.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["reconciliation"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"reconciliation.list","x-risk":"read","x-permission":"contacts.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/reconciliation_list.input"}}}}}},"/operations/reconciliation.send":{"post":{"operationId":"reconciliation_send","summary":"Cari mutabakat mektubu gönderir: belirtilen tarihteki cari bakiyesi (B/A) PDF mektup ve 30 gün geçerli onay/red bağlantısıyla e-postalanır.","description":"**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `contacts.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["reconciliation"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"reconciliation.send","x-risk":"commit","x-permission":"contacts.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/reconciliation_send.input"}}}}}},"/operations/recurring_invoice.create":{"post":{"operationId":"recurring_invoice_create","summary":"Tekrarlayan fatura tanımı oluşturur (haftalık/aylık/yıllık). source_invoice_id verilirse şablon o faturadan alınır. Faturalar her dönem, tanımı oluşturan kullanıcının yetkisiyle üretilir; aynı dönem iki kez fatura üretilmez.","description":"**Risk:** Taslak · **İzin:** `invoices.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["recurring_invoice"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"recurring_invoice.create","x-risk":"draft","x-permission":"invoices.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/recurring_invoice_create.input"}}}}}},"/operations/recurring_invoice.delete":{"post":{"operationId":"recurring_invoice_delete","summary":"Tekrarlayan fatura tanımını siler; daha önce üretilmiş faturalar etkilenmez.","description":"**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `invoices.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["recurring_invoice"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"recurring_invoice.delete","x-risk":"commit","x-permission":"invoices.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/recurring_invoice_delete.input"}}}}}},"/operations/recurring_invoice.get":{"post":{"operationId":"recurring_invoice_get","summary":"Tekrarlayan fatura tanımını şablonu ve ürettiği son faturalarla getirir.","description":"**Risk:** Okuma · **İzin:** `invoices.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["recurring_invoice"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"recurring_invoice.get","x-risk":"read","x-permission":"invoices.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/recurring_invoice_get.input"}}}}}},"/operations/recurring_invoice.list":{"post":{"operationId":"recurring_invoice_list","summary":"Tekrarlayan fatura tanımlarını listeler (durum, cari, arama süzgeçli; sonraki çalışma tarihi, son hata).","description":"**Risk:** Okuma · **İzin:** `invoices.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["recurring_invoice"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"recurring_invoice.list","x-risk":"read","x-permission":"invoices.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/recurring_invoice_list.input"}}}}}},"/operations/recurring_invoice.pause":{"post":{"operationId":"recurring_invoice_pause","summary":"Tekrarlayan faturayı duraklatır (active=false) veya devam ettirir (active=true; geçmiş dönemler atlanır).","description":"**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `invoices.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["recurring_invoice"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"recurring_invoice.pause","x-risk":"commit","x-permission":"invoices.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/recurring_invoice_pause.input"}}}}}},"/operations/recurring_invoice.run_now":{"post":{"operationId":"recurring_invoice_run_now","summary":"Vadesi gelmiş dönem(ler)in faturasını hemen üretir (günlük zamanlayıcıyı beklemeden). Tanımı oluşturan kullanıcının yetkisi aranır; aynı dönem ikinci kez üretilmez.","description":"**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `invoices.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["recurring_invoice"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"recurring_invoice.run_now","x-risk":"commit","x-permission":"invoices.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/recurring_invoice_run_now.input"}}}}}},"/operations/recurring_invoice.update":{"post":{"operationId":"recurring_invoice_update","summary":"Tekrarlayan fatura tanımını günceller (şablon, takvim, otomatik kesme). Takvim değişirse geçmiş dönemler yeniden üretilmez.","description":"**Risk:** Taslak · **İzin:** `invoices.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["recurring_invoice"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"recurring_invoice.update","x-risk":"draft","x-permission":"invoices.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/recurring_invoice_update.input"}}}}}},"/operations/report.account_statement":{"post":{"operationId":"report_account_statement","summary":"Hesap veya cari ekstresi: seçilen hesabın ya da carinin tüm hareketleri, devir ve bakiye ile.","description":"**Risk:** Okuma · **İzin:** `ledger.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["report"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"report.account_statement","x-risk":"read","x-permission":"ledger.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/report_account_statement.input"}}}}}},"/operations/report.aging":{"post":{"operationId":"report_aging","summary":"Alacak (receivables) veya borç (payables) yaşlandırma raporu: açık faturalar cari bazında vadesi gelmemiş, 0–30, 31–60, 61–90 ve 90+ gün kovalarına ayrılır (TL).","description":"**Risk:** Okuma · **İzin:** `contacts.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["report"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"report.aging","x-risk":"read","x-permission":"contacts.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/report_aging.input"}}}}}},"/operations/report.balance_sheet":{"post":{"operationId":"report_balance_sheet","summary":"Bilanço (Tek Düzen): tarih itibarıyla aktif ve pasif kalemleri; ara dönemde dönem sonucu sanal hesaplanır. presentation=gross ile ters bakiyeli cari/banka alt hesapları brüt gösterilir.","description":"**Risk:** Okuma · **İzin:** `ledger.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["report"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"report.balance_sheet","x-risk":"read","x-permission":"ledger.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/report_balance_sheet.input"}}}}}},"/operations/report.cash_flow":{"post":{"operationId":"report_cash_flow","summary":"Nakit akım tablosu (doğrudan, basit): kasa/banka hareketlerinin faaliyet, yatırım ve finansman kırılımı.","description":"**Risk:** Okuma · **İzin:** `ledger.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["report"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"report.cash_flow","x-risk":"read","x-permission":"ledger.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/report_cash_flow.input"}}}}}},"/operations/report.cash_projection":{"post":{"operationId":"report_cash_projection","summary":"Nakit projeksiyonu: banka nakdi (gerçekleşen) + açık faturaların ve çek/senetlerin vadelerine göre haftalık beklenen giriş/çıkış.","description":"**Risk:** Okuma · **İzin:** `payments.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["report"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"report.cash_projection","x-risk":"read","x-permission":"payments.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/report_cash_projection.input"}}}}}},"/operations/report.cogs_statement":{"post":{"operationId":"report_cogs_statement","summary":"Satışların maliyeti tablosu (Tek Düzen): 150–153 stok hareketleri ve 620/621/622 hesaplarından SMM; formül ile defter farkı uyarısı.","description":"**Risk:** Okuma · **İzin:** `ledger.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["report"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"report.cogs_statement","x-risk":"read","x-permission":"ledger.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/report_cogs_statement.input"}}}}}},"/operations/report.collections":{"post":{"operationId":"report_collections","summary":"Tahsilat/ödeme raporu: açık alacak ve borç kalemleri (vadesi geçmiş, 7 ve 30 gün içinde) ile dönemde yapılan tahsilat ve ödemeler.","description":"**Risk:** Okuma · **İzin:** `payments.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["report"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"report.collections","x-risk":"read","x-permission":"payments.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/report_collections.input"}}}}}},"/operations/report.edefter_export":{"post":{"operationId":"report_edefter_export","summary":"Kilitli dönemin yevmiye kayıtlarını NES e-Defter CSV şablonunda (ZIP) üretir ve dönemi \"e-Defter gönderildi\" olarak işaretler; işaretli dönemin kilidi açılamaz.","description":"**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `ledger.close` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["report"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"report.edefter_export","x-risk":"commit","x-permission":"ledger.close","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/report_edefter_export.input"}}}}}},"/operations/report.edefter_precheck":{"post":{"operationId":"report_edefter_precheck","summary":"e-Defter ön kontrolü: madde no sırası, belge bilgileri, hesap kodları ve dönem kilidi kontrolleri.","description":"**Risk:** Okuma · **İzin:** `ledger.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["report"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"report.edefter_precheck","x-risk":"read","x-permission":"ledger.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/report_edefter_precheck.input"}}}}}},"/operations/report.expenses":{"post":{"operationId":"report_expenses","summary":"Giderler raporu: kesilmiş alış faturaları ve kesinleşmiş masraflar (KDV hariç, TL); kategori, tedarikçi, hesap, ay veya masraf merkezine göre.","description":"**Risk:** Okuma · **İzin:** `expenses.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["report"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"report.expenses","x-risk":"read","x-permission":"expenses.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/report_expenses.input"}}}}}},"/operations/report.general_ledger":{"post":{"operationId":"report_general_ledger","summary":"Büyük defter (defteri kebir): ana hesap bazında devir, hareketler ve yürüyen bakiye.","description":"**Risk:** Okuma · **İzin:** `ledger.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["report"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"report.general_ledger","x-risk":"read","x-permission":"ledger.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/report_general_ledger.input"}}}}}},"/operations/report.income_statement":{"post":{"operationId":"report_income_statement","summary":"Gelir tablosu (Tek Düzen): brüt satıştan dönem net kârına; 7/A yansıtılmamış giderler sanal yansıtılır. detail=true alt hesap kırılımı verir.","description":"**Risk:** Okuma · **İzin:** `ledger.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["report"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"report.income_statement","x-risk":"read","x-permission":"ledger.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/report_income_statement.input"}}}}}},"/operations/report.inventory_book":{"post":{"operationId":"report_inventory_book","summary":"Envanter defteri: tarih itibarıyla 1–5. sınıf hesap bakiyeleri, stok listesi (varsa) ve sabit kıymet listesi.","description":"**Risk:** Okuma · **İzin:** `ledger.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["report"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"report.inventory_book","x-risk":"read","x-permission":"ledger.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/report_inventory_book.input"}}}}}},"/operations/report.journal_book":{"post":{"operationId":"report_journal_book","summary":"Yevmiye defteri: kesin fişler madde no sırasıyla, sayfa toplamı ve nakli yekün ile.","description":"**Risk:** Okuma · **İzin:** `ledger.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["report"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"report.journal_book","x-risk":"read","x-permission":"ledger.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/report_journal_book.input"}}}}}},"/operations/report.party_purchase_sales":{"post":{"operationId":"report_party_purchase_sales","summary":"Ba/Bs raporu — YALNIZ Ağustos 2024 ve önceki dönemler (Form Ba/Bs 565 Sıra No'lu VUK GT ile Eylül 2024 döneminden itibaren kaldırıldı): cari bazında belge adedi ve KDV hariç tutar (defterden), eşik (5.000 TL) üstü işaretli.","description":"**Risk:** Okuma · **İzin:** `ledger.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["report"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"report.party_purchase_sales","x-risk":"read","x-permission":"ledger.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/report_party_purchase_sales.input"}}}}}},"/operations/report.profitability":{"post":{"operationId":"report_profitability","summary":"Gelir–gider–kâr raporu (defterden, 7/A sanal yansıtmalı): aylık gelir, maliyet, gider ve kâr; isteğe bağlı masraf merkezi / proje kırılımı.","description":"**Risk:** Okuma · **İzin:** `ledger.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["report"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"report.profitability","x-risk":"read","x-permission":"ledger.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/report_profitability.input"}}}}}},"/operations/report.provisional_tax":{"post":{"operationId":"report_provisional_tax","summary":"Geçici vergi hazırlığı (çeyrek 1–3, kümülatif): defter kârı + KKEG − istisna − geçmiş yıl zararı → matrah × oran − önceki dönemlerde ödenen (193.02).","description":"**Risk:** Okuma · **İzin:** `ledger.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["report"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"report.provisional_tax","x-risk":"read","x-permission":"ledger.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/report_provisional_tax.input"}}}}}},"/operations/report.sales":{"post":{"operationId":"report_sales","summary":"Satışlar raporu: kesilmiş satış faturaları ve satış iadeleri (eksi), TL ve KDV hariç; cari, ürün, ay, kategori veya projeye göre kırılım.","description":"**Risk:** Okuma · **İzin:** `invoices.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["report"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"report.sales","x-risk":"read","x-permission":"invoices.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/report_sales.input"}}}}}},"/operations/report.stopaj":{"post":{"operationId":"report_stopaj","summary":"Stopaj raporu: 360.03/04/05/08 (kesilen) ve 193.01/03 (bize kesilen) hesaplarından tür × cari × ay; muhtasar satır eşlemesiyle.","description":"**Risk:** Okuma · **İzin:** `ledger.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["report"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"report.stopaj","x-risk":"read","x-permission":"ledger.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/report_stopaj.input"}}}}}},"/operations/report.subsidiary_ledger":{"post":{"operationId":"report_subsidiary_ledger","summary":"Muavin defter: hesabın (ve alt hesaplarının) devri, hareketleri ve yürüyen bakiyesi; dövizli hesapta döviz kolonları.","description":"**Risk:** Okuma · **İzin:** `ledger.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["report"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"report.subsidiary_ledger","x-risk":"read","x-permission":"ledger.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/report_subsidiary_ledger.input"}}}}}},"/operations/report.tax_reconciliation":{"post":{"operationId":"report_tax_reconciliation","summary":"Beyanname–mizan kontrolü: KDV raporu sonuçları ↔ 191/391/190/360.01 muavin hareketleri, stopaj ↔ 360.0x; fark satırları işaretli.","description":"**Risk:** Okuma · **İzin:** `ledger.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["report"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"report.tax_reconciliation","x-risk":"read","x-permission":"ledger.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/report_tax_reconciliation.input"}}}}}},"/operations/report.trial_balance":{"post":{"operationId":"report_trial_balance","summary":"Mizan: devir, dönem, toplam borç/alacak ve bakiyeler. Geçici (kapanış hariç) veya kesin mizan; dövizli mizan için para birimi verilebilir.","description":"**Risk:** Okuma · **İzin:** `ledger.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["report"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"report.trial_balance","x-risk":"read","x-permission":"ledger.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/report_trial_balance.input"}}}}}},"/operations/report.vat":{"post":{"operationId":"report_vat","summary":"KDV hazırlık raporu: hesaplanan, indirilecek, tevkifat, istisnalar, önceki ay devreden ve ödenecek/devreden KDV (deftere dayalı).","description":"**Risk:** Okuma · **İzin:** `ledger.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["report"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"report.vat","x-risk":"read","x-permission":"ledger.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/report_vat.input"}}}}}},"/operations/settings.get":{"post":{"operationId":"settings_get","summary":"Şirketin muhasebe ayarlarını (onay politikası, maliyet yöntemi, otomatik kayıt, kuruş toleransı…) döner.","description":"**Risk:** Okuma · **İzin:** `ledger.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["settings"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"settings.get","x-risk":"read","x-permission":"ledger.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/settings_get.input"}}}}}},"/operations/settings.update":{"post":{"operationId":"settings_update","summary":"Muhasebe ayarlarını günceller (onay politikası, 7/A–7/B, otomatik kayıt eşiği, kuruş toleransı, banka ve e-Belge otomasyonu, yapay zekâ hesap önerisi, reeskont yöntemi/kapsamı).","description":"**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `accounts_chart.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["settings"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"settings.update","x-risk":"commit","x-permission":"accounts_chart.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/settings_update.input"}}}}}},"/operations/statement_mapping.list":{"post":{"operationId":"statement_mapping_list","summary":"Bilanço (balance_sheet) veya gelir tablosu (income_statement) satırlarının hesap eşlemesi: varsayılan (Tek Düzen) ve şirketin geçersiz kıldığı hesaplar, tabloda hiçbir satıra eşlenmemiş ana hesaplar.","description":"**Risk:** Okuma · **İzin:** `ledger.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["statement_mapping"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"statement_mapping.list","x-risk":"read","x-permission":"ledger.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/statement_mapping_list.input"}}}}}},"/operations/statement_mapping.reset":{"post":{"operationId":"statement_mapping_reset","summary":"Mali tablonun bir satırını (line_key) ya da line_key verilmezse tüm tabloyu varsayılan Tek Düzen eşlemesine döndürür.","description":"**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `accounts_chart.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["statement_mapping"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"statement_mapping.reset","x-risk":"commit","x-permission":"accounts_chart.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/statement_mapping_reset.input"}}}}}},"/operations/statement_mapping.update":{"post":{"operationId":"statement_mapping_update","summary":"Mali tablo satırına (line_key, ör. \"III.D\") eşlenen 3 haneli ana hesapları değiştirir (düzenleyici hesap bilançoda \"-\" önekiyle). Kod satırın sınıfında olmalı ve başka satırda bulunmamalı; varsayılana eşit liste geçersiz kılmayı kaldırır.","description":"**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `accounts_chart.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["statement_mapping"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"statement_mapping.update","x-risk":"commit","x-permission":"accounts_chart.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/statement_mapping_update.input"}}}}}},"/operations/stock.adjust":{"post":{"operationId":"stock_adjust","summary":"Sayım farkı kaydeder (sayılan miktar ile kayıtlı miktar farkı; sürekli envanterde noksan 197/153, fazla 153/397 fişi) veya hareketsiz ürün/depo için açılış stoku girer (mode=opening, birim maliyet zorunlu, fiş üretmez).","description":"**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `products.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["stock"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"stock.adjust","x-risk":"commit","x-permission":"products.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stock_adjust.input"}}}}}},"/operations/stock.cost_flow_change":{"post":{"operationId":"stock_cost_flow_change","summary":"Stok maliyet akış yöntemini değiştirir (ağırlıklı ortalama ↔ FIFO). Yıl başında ve bu yıl stok hareketi yokken doğrudan; dönem ortasında yalnız recalculate=true ile (FIFO yıl içi hareketlerden yeniden hesaplanır, stok değer farkı sürekli envanterde 153/621 fişine gider). FIFO negatif stok izniyle birlikte kullanılamaz.","description":"**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `accounts_chart.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["stock"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"stock.cost_flow_change","x-risk":"commit","x-permission":"accounts_chart.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stock_cost_flow_change.input"}}}}}},"/operations/stock.cost_flow_status":{"post":{"operationId":"stock_cost_flow_status","summary":"Stok maliyet akış yöntemini (ağırlıklı ortalama / FIFO) ve değişiklik koşullarını verir; target verilirse değişikliğin ürün × depo bazında stok değeri farkını önizler (yazmaz).","description":"**Risk:** Okuma · **İzin:** `products.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["stock"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"stock.cost_flow_status","x-risk":"read","x-permission":"products.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stock_cost_flow_status.input"}}}}}},"/operations/stock.cost_layers":{"post":{"operationId":"stock_cost_layers","summary":"FIFO maliyet katmanlarını tüketim sırasıyla listeler (giriş tarihi, kalan miktar, TL birim maliyet, belge dövizi). Yalnız FIFO yönteminde dolu.","description":"**Risk:** Okuma · **İzin:** `products.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["stock"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"stock.cost_layers","x-risk":"read","x-permission":"products.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stock_cost_layers.input"}}}}}},"/operations/stock.levels":{"post":{"operationId":"stock_levels","summary":"Ürün × depo stok seviyelerini listeler: miktar, ağırlıklı ortalama birim maliyet ve stok değeri (TL).","description":"**Risk:** Okuma · **İzin:** `products.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["stock"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"stock.levels","x-risk":"read","x-permission":"products.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stock_levels.input"}}}}}},"/operations/stock.movements":{"post":{"operationId":"stock_movements","summary":"Stok hareketlerini (giriş/çıkış, maliyet, kaynak belge) en yeniden eskiye listeler.","description":"**Risk:** Okuma · **İzin:** `products.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["stock"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"stock.movements","x-risk":"read","x-permission":"products.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stock_movements.input"}}}}}},"/operations/stock.transfer":{"post":{"operationId":"stock_transfer","summary":"Bir üründen belirli miktarı kaynak depodan hedef depoya aktarır (ortalama maliyetle; FIFO yönteminde katmanlar tarih ve maliyetiyle taşınır; muhasebe fişi üretmez).","description":"**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `products.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["stock"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"stock.transfer","x-risk":"commit","x-permission":"products.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stock_transfer.input"}}}}}},"/operations/stock.valuation":{"post":{"operationId":"stock_valuation","summary":"Stok değerini depo bazında verir (seçili maliyet yöntemiyle: ağırlıklı ortalama veya FIFO); as_of ile geçmiş bir tarihteki değer. Tüm depolarda 153 defter bakiyesiyle farkı gösterir.","description":"**Risk:** Okuma · **İzin:** `products.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["stock"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"stock.valuation","x-risk":"read","x-permission":"products.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stock_valuation.input"}}}}}},"/operations/tax.codes":{"post":{"operationId":"tax_codes","summary":"Verilen tarihte geçerli KDV oranlarını, tevkifat kodlarını (oranlarıyla) ve KDV istisna kodlarını listeler.","description":"**Risk:** Okuma · **İzin:** `invoices.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["tax"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"tax.codes","x-risk":"read","x-permission":"invoices.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/tax_codes.input"}}}}}},"/operations/tax_calendar.upcoming":{"post":{"operationId":"tax_calendar_upcoming","summary":"Vergi takvimi: önümüzdeki günlerdeki beyan ve ödeme son günleri (hafta sonu/tatile denk gelen gün ilk iş gününe kaydırılır).","description":"**Risk:** Okuma · **İzin:** `ledger.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["tax_calendar"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"tax_calendar.upcoming","x-risk":"read","x-permission":"ledger.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/tax_calendar_upcoming.input"}}}}}},"/operations/team.invite":{"post":{"operationId":"team_invite","summary":"Aktif şirkete e-posta ile ekip daveti gönderir (rol + isteğe bağlı granular izinler). Kendinizde olmayan izin verilemez; aynı adrese bekleyen davet tazelenir.","description":"**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `team.manage` · **Kanallar:** web, api, cli, mcp, assistant","tags":["team"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"team.invite","x-risk":"commit","x-permission":"team.manage","x-channels":["web","api","cli","mcp","assistant"],"x-idempotency":"required","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/team_invite.input"}}}}}},"/operations/team.list":{"post":{"operationId":"team_list","summary":"Aktif şirketin ekibini listeler: üyeler (rol, etkin izinler, son sahip mi), mali müşavir bürosu üzerinden erişen kişiler ve bekleyen davetler.","description":"**Risk:** Okuma · **İzin:** `team.view` · **Kanallar:** web, api, cli, mcp, assistant","tags":["team"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"team.list","x-risk":"read","x-permission":"team.view","x-channels":["web","api","cli","mcp","assistant"],"x-idempotency":"optional","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/team_list.input"}}}}}},"/operations/team.remove":{"post":{"operationId":"team_remove","summary":"Bir üyeyi aktif şirketin ekibinden çıkarır; üyenin bu şirkete erişimi (API anahtarları dahil) hemen kesilir. Kendinizi ve son şirket sahibini çıkaramazsınız.","description":"**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `team.manage` · **Kanallar:** web, api, cli, mcp, assistant","tags":["team"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"team.remove","x-risk":"commit","x-permission":"team.manage","x-channels":["web","api","cli","mcp","assistant"],"x-idempotency":"required","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/team_remove.input"}}}}}},"/operations/team.update":{"post":{"operationId":"team_update","summary":"Bir ekip üyesinin rolünü ve izinlerini günceller. İzin listesi boşsa rol varsayılanı uygulanır; kendi üyeliğiniz, sahip kaydı (sahip değilseniz) ve son sahip değiştirilemez.","description":"**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `team.manage` · **Kanallar:** web, api, cli, mcp, assistant","tags":["team"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"team.update","x-risk":"commit","x-permission":"team.manage","x-channels":["web","api","cli","mcp","assistant"],"x-idempotency":"required","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/team_update.input"}}}}}},"/operations/transfer.cancel":{"post":{"operationId":"transfer_cancel","summary":"Virmanı iptal eder; fişi ters kayıtla kapatılır.","description":"**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `payments.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["transfer"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"transfer.cancel","x-risk":"commit","x-permission":"payments.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/transfer_cancel.input"}}}}}},"/operations/transfer.create":{"post":{"operationId":"transfer_create","summary":"Kasa↔banka veya banka↔banka virmanı kaydeder ve kesin fişini üretir (giriş hesabı borç / çıkış hesabı alacak). Farklı dövizde to_amount zorunludur; TL karşılıkları farkı kambiyo kârı/zararına (646/656) yazılır.","description":"**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `payments.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["transfer"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"transfer.create","x-risk":"commit","x-permission":"payments.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/transfer_create.input"}}}}}},"/operations/transfer.list":{"post":{"operationId":"transfer_list","summary":"Kasa ve banka hesapları arasındaki virmanları listeler (tarih aralığı ve durumla süzülür).","description":"**Risk:** Okuma · **İzin:** `payments.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["transfer"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"transfer.list","x-risk":"read","x-permission":"payments.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/transfer_list.input"}}}}}},"/operations/warehouse.create":{"post":{"operationId":"warehouse_create","summary":"Yeni depo açar. Şirketin ilk deposu otomatik varsayılan olur.","description":"**Risk:** Taslak · **İzin:** `products.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["warehouse"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"warehouse.create","x-risk":"draft","x-permission":"products.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/warehouse_create.input"}}}}}},"/operations/warehouse.list":{"post":{"operationId":"warehouse_list","summary":"Depoları listeler (varsayılan depo işaretli).","description":"**Risk:** Okuma · **İzin:** `products.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["warehouse"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"warehouse.list","x-risk":"read","x-permission":"products.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/warehouse_list.input"}}}}}},"/operations/warehouse.update":{"post":{"operationId":"warehouse_update","summary":"Depoyu günceller; varsayılan depo seçimi ve pasifleştirme dahil.","description":"**Risk:** Taslak · **İzin:** `products.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["warehouse"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"warehouse.update","x-risk":"draft","x-permission":"products.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/warehouse_update.input"}}}}}},"/operations/webhook.create":{"post":{"operationId":"webhook_create","summary":"Yeni webhook uç noktası tanımlar (yalnız https, özel/yerel IP reddedilir). İmza anahtarı yalnız bu yanıtta döner.","description":"**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `api_tokens.manage` · **Kanallar:** web, api","tags":["webhook"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"webhook.create","x-risk":"commit","x-permission":"api_tokens.manage","x-channels":["web","api"],"x-idempotency":"required","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/webhook_create.input"}}}}}},"/operations/webhook.delete":{"post":{"operationId":"webhook_delete","summary":"Webhook uç noktasını ve gönderim geçmişini siler.","description":"**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `api_tokens.manage` · **Kanallar:** web, api","tags":["webhook"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"webhook.delete","x-risk":"commit","x-permission":"api_tokens.manage","x-channels":["web","api"],"x-idempotency":"required","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/webhook_delete.input"}}}}}},"/operations/webhook.deliveries":{"post":{"operationId":"webhook_deliveries","summary":"Son webhook gönderimlerini (durum, HTTP kodu, deneme sayısı) listeler; yanıt gövdesi saklanmaz.","description":"**Risk:** Okuma · **İzin:** `api_tokens.manage` · **Kanallar:** web, api","tags":["webhook"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"webhook.deliveries","x-risk":"read","x-permission":"api_tokens.manage","x-channels":["web","api"],"x-idempotency":"optional","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/webhook_deliveries.input"}}}}}},"/operations/webhook.list":{"post":{"operationId":"webhook_list","summary":"Şirketin webhook uç noktalarını (gizli anahtar olmadan) ve desteklenen olay listesini döner.","description":"**Risk:** Okuma · **İzin:** `api_tokens.manage` · **Kanallar:** web, api","tags":["webhook"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"webhook.list","x-risk":"read","x-permission":"api_tokens.manage","x-channels":["web","api"],"x-idempotency":"optional","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/webhook_list.input"}}}}}},"/operations/webhook.rotate_secret":{"post":{"operationId":"webhook_rotate_secret","summary":"Webhook imza anahtarını yeniler; yeni anahtar yalnız bu yanıtta döner, eskisi hemen geçersiz olur.","description":"**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `api_tokens.manage` · **Kanallar:** web, api","tags":["webhook"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"webhook.rotate_secret","x-risk":"commit","x-permission":"api_tokens.manage","x-channels":["web","api"],"x-idempotency":"required","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/webhook_rotate_secret.input"}}}}}},"/operations/webhook.test":{"post":{"operationId":"webhook_test","summary":"Uç noktaya imzalı bir deneme (ping) gönderimi kuyruğa alır.","description":"**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `api_tokens.manage` · **Kanallar:** web, api","tags":["webhook"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"webhook.test","x-risk":"commit","x-permission":"api_tokens.manage","x-channels":["web","api"],"x-idempotency":"required","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/webhook_test.input"}}}}}},"/operations/webhook.update":{"post":{"operationId":"webhook_update","summary":"Webhook adını, adresini, olaylarını veya etkinliğini günceller; devre dışı kalan uç noktayı yeniden etkinleştirir.","description":"**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `api_tokens.manage` · **Kanallar:** web, api","tags":["webhook"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"webhook.update","x-risk":"commit","x-permission":"api_tokens.manage","x-channels":["web","api"],"x-idempotency":"required","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/webhook_update.input"}}}}}},"/accounts":{"get":{"operationId":"rest_get_accounts","summary":"Hesap planını listeler; kod/ad araması, kod öneki, yalnız yaprak ve aktif hesap süzgeçleri vardır.","description":"REST takma adı → `account.list` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `ledger.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["account"],"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","description":"Kod veya ad içinde arama"},"description":"Kod veya ad içinde arama"},{"name":"code_prefix","in":"query","required":false,"schema":{"type":"string","description":"Kod öneki (ör. \"120\" → 120 ve alt hesapları)"},"description":"Kod öneki (ör. \"120\" → 120 ve alt hesapları)"},{"name":"leaf_only","in":"query","required":false,"schema":{"type":"boolean","description":"Yalnız satır yazılabilen (yaprak) hesaplar"},"description":"Yalnız satır yazılabilen (yaprak) hesaplar"},{"name":"active","in":"query","required":false,"schema":{"type":"boolean","description":"true: yalnız aktif, false: yalnız pasif"},"description":"true: yalnız aktif, false: yalnız pasif"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1}},{"name":"per_page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":1000}},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"account.list","x-risk":"read","x-permission":"ledger.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true},"post":{"operationId":"rest_post_accounts","summary":"Bir üst hesabın altına alt hesap açar; kod verilmezse sıradaki kod atanır.","description":"REST takma adı → `account.create` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Taslak · **İzin:** `accounts_chart.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["account"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"account.create","x-risk":"draft","x-permission":"accounts_chart.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/account_create.input"}}}}}},"/accounts/{id}":{"get":{"operationId":"rest_get_accounts_by_id","summary":"Tek bir hesabı (kimlik veya kod ile) toplam ve yıl başından bugüne bakiyesiyle döner.","description":"REST takma adı → `account.get` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `ledger.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["account"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"code","in":"query","required":false,"schema":{"type":"string","description":"Hesap kodu (ör. \"120.01\")"},"description":"Hesap kodu (ör. \"120.01\")"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"account.get","x-risk":"read","x-permission":"ledger.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true},"patch":{"operationId":"rest_patch_accounts_by_id","summary":"Hesabın adını, aktifliğini, cari zorunluluğunu veya (hareketi yoksa) para birimini günceller.","description":"REST takma adı → `account.update` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Taslak · **İzin:** `accounts_chart.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["account"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"account.update","x-risk":"draft","x-permission":"accounts_chart.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/account_update.input"}}}}}},"/account-mappings":{"get":{"operationId":"rest_get_account_mappings","summary":"Otomatik fişlerin kullandığı anahtar → hesap eşlemelerini (varsayılan kodlarıyla) listeler.","description":"REST takma adı → `account_mapping.list` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `ledger.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["account_mapping"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"account_mapping.list","x-risk":"read","x-permission":"ledger.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true},"put":{"operationId":"rest_put_account_mappings","summary":"Bir eşleme anahtarının (ör. sales.goods, bank.fees) kullanacağı hesabı değiştirir.","description":"REST takma adı → `account_mapping.update` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `accounts_chart.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["account_mapping"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"account_mapping.update","x-risk":"commit","x-permission":"accounts_chart.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/account_mapping_update.input"}}}}}},"/cost-centers":{"get":{"operationId":"rest_get_cost_centers","summary":"Masraf merkezlerini listeler.","description":"REST takma adı → `cost_center.list` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `ledger.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["cost_center"],"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string"}},{"name":"active","in":"query","required":false,"schema":{"type":"boolean"}},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"cost_center.list","x-risk":"read","x-permission":"ledger.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true},"post":{"operationId":"rest_post_cost_centers","summary":"Yeni masraf merkezi oluşturur.","description":"REST takma adı → `cost_center.create` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Taslak · **İzin:** `accounts_chart.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["cost_center"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"cost_center.create","x-risk":"draft","x-permission":"accounts_chart.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/cost_center_create.input"}}}}}},"/cost-centers/{id}":{"patch":{"operationId":"rest_patch_cost_centers_by_id","summary":"Masraf merkezinin kodunu, adını, üst merkezini veya aktifliğini günceller.","description":"REST takma adı → `cost_center.update` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Taslak · **İzin:** `accounts_chart.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["cost_center"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"cost_center.update","x-risk":"draft","x-permission":"accounts_chart.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/cost_center_update.input"}}}}}},"/projects":{"get":{"operationId":"rest_get_projects","summary":"Projeleri listeler.","description":"REST takma adı → `project.list` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `ledger.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["project"],"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string"}},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["active","completed","cancelled"]}},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"project.list","x-risk":"read","x-permission":"ledger.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true},"post":{"operationId":"rest_post_projects","summary":"Yeni proje oluşturur.","description":"REST takma adı → `project.create` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Taslak · **İzin:** `accounts_chart.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["project"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"project.create","x-risk":"draft","x-permission":"accounts_chart.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/project_create.input"}}}}}},"/projects/{id}":{"patch":{"operationId":"rest_patch_projects_by_id","summary":"Projenin kodunu, adını, durumunu veya tarihlerini günceller.","description":"REST takma adı → `project.update` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Taslak · **İzin:** `accounts_chart.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["project"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"project.update","x-risk":"draft","x-permission":"accounts_chart.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/project_update.input"}}}}}},"/tax-codes":{"get":{"operationId":"rest_get_tax_codes","summary":"Verilen tarihte geçerli KDV oranlarını, tevkifat kodlarını (oranlarıyla) ve KDV istisna kodlarını listeler.","description":"REST takma adı → `tax.codes` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `invoices.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["tax"],"parameters":[{"name":"date","in":"query","required":false,"schema":{"type":"string","format":"date","description":"Boşsa bugün"},"description":"Boşsa bugün"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"tax.codes","x-risk":"read","x-permission":"invoices.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true}},"/tax-calendar":{"get":{"operationId":"rest_get_tax_calendar","summary":"Vergi takvimi: önümüzdeki günlerdeki beyan ve ödeme son günleri (hafta sonu/tatile denk gelen gün ilk iş gününe kaydırılır).","description":"REST takma adı → `tax_calendar.upcoming` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `ledger.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["tax_calendar"],"parameters":[{"name":"from","in":"query","required":false,"schema":{"type":"string","format":"date","description":"Başlangıç (vars. bugün)"},"description":"Başlangıç (vars. bugün)"},{"name":"days","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":400,"description":"Gün sayısı (vars. 60)"},"description":"Gün sayısı (vars. 60)"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"tax_calendar.upcoming","x-risk":"read","x-permission":"ledger.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true}},"/journal-entries":{"get":{"operationId":"rest_get_journal_entries","summary":"Yevmiye fişlerini tarih, durum, tür, kaynak, hesap, tutar aralığı, belge no, cari, masraf merkezi ve metin süzgeçleriyle listeler.","description":"REST takma adı → `journal.list` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `ledger.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["journal"],"parameters":[{"name":"from","in":"query","required":false,"schema":{"type":"string","format":"date"}},{"name":"to","in":"query","required":false,"schema":{"type":"string","format":"date"}},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["draft","pending_approval","posted"]}},{"name":"entry_type[]","in":"query","required":false,"schema":{"type":"array","items":{"type":"string","enum":["ACILIS","MAHSUP","TAHSIL","TEDIYE","KAPANIS"]},"description":"Fiş türleri (ör. [\"TAHSIL\",\"TEDIYE\"]); tek metin değer de kabul edilir"},"description":"Fiş türleri (ör. [\"TAHSIL\",\"TEDIYE\"]); tek metin değer de kabul edilir"},{"name":"origin","in":"query","required":false,"schema":{"type":"string","enum":["manual","auto","import","api","assistant","system"],"description":"Fişi üreten kanal (elle, otomatik, API, asistan…)"},"description":"Fişi üreten kanal (elle, otomatik, API, asistan…)"},{"name":"source","in":"query","required":false,"schema":{"type":"string","enum":["invoice","bank","payment","manual","import","system"],"description":"Kaynak grubu: invoice (fatura), bank (banka), payment (tahsilat/ödeme/masraf), manual (elle), import, system (dönem sonu/stok)"},"description":"Kaynak grubu: invoice (fatura), bank (banka), payment (tahsilat/ödeme/masraf), manual (elle), import, system (dönem sonu/stok)"},{"name":"review_required","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"q","in":"query","required":false,"schema":{"type":"string","description":"Fiş no veya açıklamada arama"},"description":"Fiş no veya açıklamada arama"},{"name":"account_code","in":"query","required":false,"schema":{"type":"string","description":"Bu hesaba (ve alt hesaplarına) satırı olan fişler"},"description":"Bu hesaba (ve alt hesaplarına) satırı olan fişler"},{"name":"amount_min","in":"query","required":false,"schema":{"type":"number","minimum":0,"description":"Fiş toplamı (borç) en az"},"description":"Fiş toplamı (borç) en az"},{"name":"amount_max","in":"query","required":false,"schema":{"type":"number","minimum":0,"description":"Fiş toplamı (borç) en çok"},"description":"Fiş toplamı (borç) en çok"},{"name":"document_number","in":"query","required":false,"schema":{"type":"string","description":"Satır belge numarası (içerir)"},"description":"Satır belge numarası (içerir)"},{"name":"contact_id","in":"query","required":false,"schema":{"type":"integer","description":"Bu cariye satırı olan fişler"},"description":"Bu cariye satırı olan fişler"},{"name":"cost_center_id","in":"query","required":false,"schema":{"type":"integer","description":"Bu masraf merkezine satırı olan fişler"},"description":"Bu masraf merkezine satırı olan fişler"},{"name":"project_id","in":"query","required":false,"schema":{"type":"integer","description":"Bu projeye satırı olan fişler"},"description":"Bu projeye satırı olan fişler"},{"name":"passive","in":"query","required":false,"schema":{"type":"string","enum":["only","hide"],"description":"Pasif (iptal işaretli) taslaklar: only = yalnız pasifler, hide = pasifleri gizle"},"description":"Pasif (iptal işaretli) taslaklar: only = yalnız pasifler, hide = pasifleri gizle"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1}},{"name":"per_page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":200}},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"journal.list","x-risk":"read","x-permission":"ledger.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true},"post":{"operationId":"rest_post_journal_entries","summary":"Taslak yevmiye fişi oluşturur (en az 2 satır; borç toplamı alacak toplamına eşit olmalı — önce journal.validate ile denetlenebilir). Hesaplar kodla (ör. \"120.01\") veya kimlikle verilir; kodu account_list ile doğrula, uydurma. Kesinleştirmek için journal.post (veya onay akışında journal.submit) çağrılır; kesinleştirme kullanıcı onayıyla yapılır.","description":"REST takma adı → `journal.create` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Taslak · **İzin:** `ledger.post` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["journal"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"journal.create","x-risk":"draft","x-permission":"ledger.post","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/journal_create.input"}}}}}},"/ledger/verify":{"get":{"operationId":"rest_get_ledger_verify","summary":"Defter tutarlılığını denetler: kesin fişlerde satır toplamı = başlık toplamı, borç = alacak, satır/başlık kesinlik uyumu, mizan dengesi ve 102 ↔ banka bakiyesi.","description":"REST takma adı → `ledger.verify` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `ledger.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["ledger"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"ledger.verify","x-risk":"read","x-permission":"ledger.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true}},"/journal-entries/validate":{"post":{"operationId":"rest_post_journal_entries_validate","summary":"Fiş gövdesini kaydetmeden doğrular; hatalar, uyarılar ve borç/alacak toplamlarını döner.","description":"REST takma adı → `journal.validate` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `ledger.post` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["journal"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"journal.validate","x-risk":"read","x-permission":"ledger.post","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/journal_validate.input"}}}}}},"/journal-entries/opening":{"post":{"operationId":"rest_post_journal_entries_opening","summary":"Elle açılış (ACILIS) fişi taslağı oluşturur; tarih mali yılın ilk günü (01.01) olmalıdır.","description":"REST takma adı → `journal.create_opening` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Taslak · **İzin:** `ledger.post` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["journal"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"journal.create_opening","x-risk":"draft","x-permission":"ledger.post","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/journal_create_opening.input"}}}}}},"/journal-entries/bulk-update":{"post":{"operationId":"rest_post_journal_entries_bulk_update","summary":"En çok 200 TASLAK fişte belge no, belge tarihi, açıklama veya fiş tarihini birlikte günceller; taslak olmayanlar atlanır ve raporlanır.","description":"REST takma adı → `journal.bulk_update_drafts` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Taslak · **İzin:** `ledger.post` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["journal"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"journal.bulk_update_drafts","x-risk":"draft","x-permission":"ledger.post","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/journal_bulk_update_drafts.input"}}}}}},"/journal-entries/bulk-delete":{"post":{"operationId":"rest_post_journal_entries_bulk_delete","summary":"En çok 200 TASLAK fişi siler; taslak olmayanlar atlanır ve raporlanır. Silinen fişin kaynağı yeniden muhasebeleştirilebilir.","description":"REST takma adı → `journal.bulk_delete_drafts` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `ledger.post` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["journal"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"journal.bulk_delete_drafts","x-risk":"commit","x-permission":"ledger.post","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/journal_bulk_delete_drafts.input"}}}}}},"/journal-entries/review-queue":{"get":{"operationId":"rest_get_journal_entries_review_queue","summary":"Onay kuyruğunu listeler: \"inceleme gerekli\" taslaklar (otomatik/dış kaynaklı ya da inceleme işaretli) ve onay bekleyen fişler; sekme sayaçları, sayfalama, fiş tarihine göre eskiden yeniye. Toplu kesinleştirme: journal.bulk_post.","description":"REST takma adı → `journal.review_queue` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `ledger.post` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["journal"],"parameters":[{"name":"tab","in":"query","required":false,"schema":{"type":"string","enum":["review_needed","pending_approval","all","review","pending"],"description":"review_needed (varsayılan): inceleme gerekli taslaklar; pending_approval: onay bekleyen; all: ikisi birlikte. review/pending web takma adlarıdır."},"description":"review_needed (varsayılan): inceleme gerekli taslaklar; pending_approval: onay bekleyen; all: ikisi birlikte. review/pending web takma adlarıdır."},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1}},{"name":"per_page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":200,"description":"Varsayılan web sayfa boyu (50)"},"description":"Varsayılan web sayfa boyu (50)"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"journal.review_queue","x-risk":"read","x-permission":"ledger.post","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true}},"/journal-entries/bulk-post":{"post":{"operationId":"rest_post_journal_entries_bulk_post","summary":"Seçili fişleri (en fazla 50) toplu kesinleştirir: taslaklar kesinleşir, onay bekleyenler onaylanır. Kurallara uymayan (dengesiz, eksik cari, kilitli dönem, onay yetkisi yok…) fişler atlanır; sonuç fiş bazında raporlanır. Kesin fiş yalnız ters kayıtla düzeltilir.","description":"REST takma adı → `journal.bulk_post` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `ledger.post` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["journal"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"journal.bulk_post","x-risk":"commit","x-permission":"ledger.post","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/journal_bulk_post.input"}}}}}},"/journal-entries/{id}":{"get":{"operationId":"rest_get_journal_entries_by_id","summary":"Tek fişi satırları, kaynak bağlantıları, geçici/kesin yevmiye madde no ve işlem geçmişiyle döner; oluşturan/onaylayan kullanıcı adları, ters kayıt bağlantılarının fiş numaraları, ek sayısı ve onay politikasının bu fişe uygulanıp uygulanmadığı dahil.","description":"REST takma adı → `journal.get` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `ledger.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["journal"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"journal.get","x-risk":"read","x-permission":"ledger.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true},"patch":{"operationId":"rest_patch_journal_entries_by_id","summary":"Taslak fişi günceller; lock_version uyuşmazsa (başkası değiştirdiyse) 409 döner.","description":"REST takma adı → `journal.update` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Taslak · **İzin:** `ledger.post` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["journal"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"journal.update","x-risk":"draft","x-permission":"ledger.post","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/journal_update.input"}}}}},"delete":{"operationId":"rest_delete_journal_entries_by_id","summary":"Taslak veya onay bekleyen fişi siler; kesinleşmiş fiş silinemez (ters kayıt kullanılır).","description":"REST takma adı → `journal.delete` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `ledger.post` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["journal"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"journal.delete","x-risk":"commit","x-permission":"ledger.post","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/journal_delete.input"}}}}}},"/journal-entries/{id}/post":{"post":{"operationId":"rest_post_journal_entries_by_id_post","summary":"Taslak fişi kesinleştirir (deftere işler). Kesin fiş değiştirilemez; onay politikası açıksa onay yetkisi gerekir.","description":"REST takma adı → `journal.post` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `ledger.post` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["journal"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"journal.post","x-risk":"commit","x-permission":"ledger.post","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/journal_post.input"}}}}}},"/journal-entries/{id}/submit":{"post":{"operationId":"rest_post_journal_entries_by_id_submit","summary":"Taslak fişi gönderir: onay politikası açıksa onaya düşer, değilse kesinleşir.","description":"REST takma adı → `journal.submit` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Taslak · **İzin:** `ledger.post` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["journal"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"journal.submit","x-risk":"draft","x-permission":"ledger.post","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/journal_submit.input"}}}}}},"/journal-entries/{id}/approve":{"post":{"operationId":"rest_post_journal_entries_by_id_approve","summary":"Onay bekleyen fişi onaylar ve kesinleştirir (fişi oluşturan onaylayamaz kuralı açıksa uygulanır).","description":"REST takma adı → `journal.approve` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `ledger.approve` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["journal"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"journal.approve","x-risk":"commit","x-permission":"ledger.approve","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/journal_approve.input"}}}}}},"/journal-entries/{id}/reject":{"post":{"operationId":"rest_post_journal_entries_by_id_reject","summary":"Onay bekleyen fişi gerekçeyle reddeder; fiş taslağa döner.","description":"REST takma adı → `journal.reject` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Taslak · **İzin:** `ledger.approve` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["journal"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"journal.reject","x-risk":"draft","x-permission":"ledger.approve","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/journal_reject.input"}}}}}},"/journal-entries/{id}/reverse":{"post":{"operationId":"rest_post_journal_entries_by_id_reverse","summary":"Kesinleşmiş fişin ters kaydını (borç-alacak yer değiştirmiş yeni kesin fiş) oluşturur.","description":"REST takma adı → `journal.reverse` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `ledger.post` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["journal"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"journal.reverse","x-risk":"commit","x-permission":"ledger.post","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/journal_reverse.input"}}}}}},"/journal-entries/{id}/duplicate":{"post":{"operationId":"rest_post_journal_entries_by_id_duplicate","summary":"Fişi (kesin, taslak veya ters kayıt) yeni bir TASLAK fiş olarak kopyalar; tarih verilmezse orijinal tarih kullanılır. target_company_id verilirse (K5, FS-13) erişilen başka şirkete hesap kodu eşlemesiyle taslak olarak kopyalar (eşlenemeyen kodlar hata listesi döner; cari/masraf merkezi/proje taşınmaz).","description":"REST takma adı → `journal.duplicate` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Taslak · **İzin:** `ledger.post` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["journal"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","description":"Kopyalanacak fiş"}},{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"journal.duplicate","x-risk":"draft","x-permission":"ledger.post","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/journal_duplicate.input"}}}}}},"/journal-entries/{id}/split":{"post":{"operationId":"rest_post_journal_entries_by_id_split","summary":"TASLAK fişi böler: line_nos ile seçilen satırlar yeni bir taslak fişe taşınır. Kalan ve taşınan satırların her biri kendi içinde dengeli (borç = alacak) olmalıdır; kesin fiş bölünemez.","description":"REST takma adı → `journal.split` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Taslak · **İzin:** `ledger.post` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["journal"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","description":"Bölünecek taslak fiş"}},{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"journal.split","x-risk":"draft","x-permission":"ledger.post","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/journal_split.input"}}}}}},"/journal-entries/merge":{"post":{"operationId":"rest_post_journal_entries_merge","summary":"Aynı tarih, fiş türü ve para birimindeki 2–50 TASLAK fişi tek taslakta birleştirir (en küçük id'li fiş kalır, diğerlerinin satırları eklenip kendileri silinir; kaynak bağlantıları ve ekler taşınır).","description":"REST takma adı → `journal.merge` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Taslak · **İzin:** `ledger.post` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["journal"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"journal.merge","x-risk":"draft","x-permission":"ledger.post","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/journal_merge.input"}}}}}},"/journal-entries/copy-targets":{"get":{"operationId":"rest_get_journal_entries_copy_targets","summary":"Fişin kopyalanabileceği diğer şirketler (doğrudan üyelik veya mali müşavir bürosu erişimi + hedefte fiş kaydetme yetkisi). journal.duplicate target_company_id ile kullanılır.","description":"REST takma adı → `journal.copy_targets` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `ledger.post` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["journal"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"journal.copy_targets","x-risk":"read","x-permission":"ledger.post","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true}},"/journal-entries/bulk-replace-account":{"post":{"operationId":"rest_post_journal_entries_bulk_replace_account","summary":"En çok 200 TASLAK fişte from_account hesabının satırlarını to_account hesabına alır (hesap kodu veya id). Kesin fişler atlanır; onlar için journal.account_correction (ters kayıt + yeni fiş) kullanılır.","description":"REST takma adı → `journal.bulk_replace_account` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Taslak · **İzin:** `ledger.post` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["journal"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"journal.bulk_replace_account","x-risk":"draft","x-permission":"ledger.post","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/journal_bulk_replace_account.input"}}}}}},"/journal-entries/account-correction":{"get":{"operationId":"rest_get_journal_entries_account_correction","summary":"Seçili KESİN fişlerde from_account → to_account düzeltmesinin önizlemesi: hangi fişler ters kaydedilip yeni fişle yeniden kesinleşecek, satır ve tutar toplamları, atlanacak fişler (gerekçeli).","description":"REST takma adı → `journal.account_correction_preview` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `ledger.post` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["journal"],"parameters":[{"name":"ids[]","in":"query","required":true,"schema":{"type":"array","items":{"type":"integer"},"maxItems":100}},{"name":"from_account","in":"query","required":true,"schema":{"oneOf":[{"type":"integer"},{"type":"string"}]}},{"name":"to_account","in":"query","required":true,"schema":{"oneOf":[{"type":"integer"},{"type":"string"}]}},{"name":"date","in":"query","required":false,"schema":{"type":"string","format":"date","description":"Ters kayıt ve yeni fiş tarihi (varsayılan: orijinal tarih; dönemi kilitliyse ilk açık dönem)"},"description":"Ters kayıt ve yeni fiş tarihi (varsayılan: orijinal tarih; dönemi kilitliyse ilk açık dönem)"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"journal.account_correction_preview","x-risk":"read","x-permission":"ledger.post","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true},"post":{"operationId":"rest_post_journal_entries_account_correction","summary":"Seçili KESİN fişlerde from_account hesabını to_account ile düzeltir: her fişin ters kaydı alınır ve hesabı değiştirilmiş aynı satırlarla yeni fiş kesinleştirilir (onay politikası varsa onaya gider). Kaynak bağlantıları yeni fişe devredilir. Hepsi ya da hiçbiri.","description":"REST takma adı → `journal.account_correction` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `ledger.post` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["journal"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"journal.account_correction","x-risk":"commit","x-permission":"ledger.post","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/journal_account_correction.input"}}}}}},"/journal-entries/bulk-fix-lines":{"post":{"operationId":"rest_post_journal_entries_bulk_fix_lines","summary":"En çok 200 TASLAK fişte süzgece uyan satırların döviz cinsi/kuru (döviz tutarı = TL / kur; kur verilmezse TCMB) ve/veya miktar/birimini düzeltir. TL tutarlar ve fiş dengesi değişmez. Süzgeç: patch.account_prefix (hesap kodu ön eki), patch.only_currency.","description":"REST takma adı → `journal.bulk_fix_lines` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Taslak · **İzin:** `ledger.post` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["journal"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"journal.bulk_fix_lines","x-risk":"draft","x-permission":"ledger.post","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/journal_bulk_fix_lines.input"}}}}}},"/journal-entries/passive":{"post":{"operationId":"rest_post_journal_entries_passive","summary":"En çok 200 TASLAK fişi pasife alır (passive=true, iptal işareti; kesinleştirilemez) veya yeniden aktifleştirir (passive=false). Kesin fiş pasife alınamaz; iptali ters kayıttır.","description":"REST takma adı → `journal.set_passive` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Taslak · **İzin:** `ledger.post` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["journal"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"journal.set_passive","x-risk":"draft","x-permission":"ledger.post","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/journal_set_passive.input"}}}}}},"/ledger/close-accounts":{"get":{"operationId":"rest_get_ledger_close_accounts","summary":"code_from–code_to aralığındaki yaprak hesapların date itibarıyla kesin bakiyelerini target_account hesabına aktaracak MAHSUP fişinin önizlemesi (cari kırılımlı satırlar, toplamlar, doğrulama). Yazma yapmaz.","description":"REST takma adı → `journal.close_accounts_preview` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `ledger.post` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["journal"],"parameters":[{"name":"code_from","in":"query","required":true,"schema":{"type":"string","description":"Aralık başı hesap kodu (ör. \"120\")"},"description":"Aralık başı hesap kodu (ör. \"120\")"},{"name":"code_to","in":"query","required":true,"schema":{"type":"string","description":"Aralık sonu hesap kodu (alt hesapları dahil, ör. \"120\")"},"description":"Aralık sonu hesap kodu (alt hesapları dahil, ör. \"120\")"},{"name":"target_account","in":"query","required":true,"schema":{"oneOf":[{"type":"integer"},{"type":"string"}],"description":"Bakiyelerin aktarılacağı hesap (kod veya id)"},"description":"Bakiyelerin aktarılacağı hesap (kod veya id)"},{"name":"date","in":"query","required":true,"schema":{"type":"string","format":"date","description":"Bakiye ve fiş tarihi"},"description":"Bakiye ve fiş tarihi"},{"name":"description","in":"query","required":false,"schema":{"type":"string","maxLength":500}},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"journal.close_accounts_preview","x-risk":"read","x-permission":"ledger.post","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true},"post":{"operationId":"rest_post_ledger_close_accounts","summary":"code_from–code_to aralığındaki yaprak hesapların date itibarıyla kesin bakiyelerini target_account hesabına aktaran MAHSUP fişini oluşturur (varsayılan taslak; post=true ile kesinleştirir). Önce journal.close_accounts_preview ile kontrol edin.","description":"REST takma adı → `journal.close_accounts` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `ledger.post` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["journal"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"journal.close_accounts","x-risk":"commit","x-permission":"ledger.post","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/journal_close_accounts.input"}}}}}},"/statement-mappings/{statement}":{"get":{"operationId":"rest_get_statement_mappings_by_statement","summary":"Bilanço (balance_sheet) veya gelir tablosu (income_statement) satırlarının hesap eşlemesi: varsayılan (Tek Düzen) ve şirketin geçersiz kıldığı hesaplar, tabloda hiçbir satıra eşlenmemiş ana hesaplar.","description":"REST takma adı → `statement_mapping.list` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `ledger.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["statement_mapping"],"parameters":[{"name":"statement","in":"path","required":true,"schema":{"type":"string","enum":["balance_sheet","income_statement"]}},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"statement_mapping.list","x-risk":"read","x-permission":"ledger.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true},"put":{"operationId":"rest_put_statement_mappings_by_statement","summary":"Mali tablo satırına (line_key, ör. \"III.D\") eşlenen 3 haneli ana hesapları değiştirir (düzenleyici hesap bilançoda \"-\" önekiyle). Kod satırın sınıfında olmalı ve başka satırda bulunmamalı; varsayılana eşit liste geçersiz kılmayı kaldırır.","description":"REST takma adı → `statement_mapping.update` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `accounts_chart.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["statement_mapping"],"parameters":[{"name":"statement","in":"path","required":true,"schema":{"type":"string","enum":["balance_sheet","income_statement"]}},{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"statement_mapping.update","x-risk":"commit","x-permission":"accounts_chart.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/statement_mapping_update.input"}}}}},"delete":{"operationId":"rest_delete_statement_mappings_by_statement","summary":"Mali tablonun bir satırını (line_key) ya da line_key verilmezse tüm tabloyu varsayılan Tek Düzen eşlemesine döndürür.","description":"REST takma adı → `statement_mapping.reset` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `accounts_chart.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["statement_mapping"],"parameters":[{"name":"statement","in":"path","required":true,"schema":{"type":"string","enum":["balance_sheet","income_statement"]}},{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"statement_mapping.reset","x-risk":"commit","x-permission":"accounts_chart.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/statement_mapping_reset.input"}}}}}},"/periods":{"get":{"operationId":"rest_get_periods","summary":"Mali yılın 12 aylık dönemini durum, madde no aralığı ve taslak sayısıyla listeler.","description":"REST takma adı → `period.list` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `ledger.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["period"],"parameters":[{"name":"year","in":"query","required":false,"schema":{"type":"integer","description":"Boşsa içinde bulunulan yıl"},"description":"Boşsa içinde bulunulan yıl"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"period.list","x-risk":"read","x-permission":"ledger.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true}},"/periods/{id}/lock":{"post":{"operationId":"rest_post_periods_by_id_lock","summary":"Ayı kilitler ve yevmiye madde numaralarını kronolojik, boşluksuz atar. Önceki aylar kilitli ve dönemde taslak olmamalıdır.","description":"REST takma adı → `period.lock` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `ledger.close` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["period"],"parameters":[{"name":"id","in":"path","required":true,"description":"Girdi alanı: `period_id`","schema":{"type":"integer"}},{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"period.lock","x-risk":"commit","x-permission":"ledger.close","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/period_lock.input"}}}}}},"/periods/{id}/unlock":{"post":{"operationId":"rest_post_periods_by_id_unlock","summary":"Yılın en son kilitli ayının kilidini gerekçeyle açar; madde numaraları silinir. e-Defteri gönderilmiş dönem açılamaz.","description":"REST takma adı → `period.unlock` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `ledger.close` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["period"],"parameters":[{"name":"id","in":"path","required":true,"description":"Girdi alanı: `period_id`","schema":{"type":"integer"}},{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"period.unlock","x-risk":"commit","x-permission":"ledger.close","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/period_unlock.input"}}}}}},"/reports/journal-book":{"get":{"operationId":"rest_get_reports_journal_book","summary":"Yevmiye defteri: kesin fişler madde no sırasıyla, sayfa toplamı ve nakli yekün ile.","description":"REST takma adı → `report.journal_book` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `ledger.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["report"],"parameters":[{"name":"from","in":"query","required":false,"schema":{"type":"string","format":"date","description":"Başlangıç"},"description":"Başlangıç"},{"name":"to","in":"query","required":false,"schema":{"type":"string","format":"date","description":"Bitiş"},"description":"Bitiş"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1}},{"name":"per_page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":500}},{"name":"all","in":"query","required":false,"schema":{"type":"boolean","description":"Sayfalama olmadan tüm maddeler"},"description":"Sayfalama olmadan tüm maddeler"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"report.journal_book","x-risk":"read","x-permission":"ledger.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true}},"/reports/general-ledger":{"get":{"operationId":"rest_get_reports_general_ledger","summary":"Büyük defter (defteri kebir): ana hesap bazında devir, hareketler ve yürüyen bakiye.","description":"REST takma adı → `report.general_ledger` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `ledger.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["report"],"parameters":[{"name":"from","in":"query","required":false,"schema":{"type":"string","format":"date","description":"Başlangıç"},"description":"Başlangıç"},{"name":"to","in":"query","required":false,"schema":{"type":"string","format":"date","description":"Bitiş"},"description":"Bitiş"},{"name":"main_code","in":"query","required":false,"schema":{"type":"string","pattern":"^[0-9]{3}$","description":"3 haneli ana hesap kodu (boşsa tüm ana hesaplar)"},"description":"3 haneli ana hesap kodu (boşsa tüm ana hesaplar)"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"report.general_ledger","x-risk":"read","x-permission":"ledger.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true}},"/reports/subsidiary-ledger":{"get":{"operationId":"rest_get_reports_subsidiary_ledger","summary":"Muavin defter: hesabın (ve alt hesaplarının) devri, hareketleri ve yürüyen bakiyesi; dövizli hesapta döviz kolonları.","description":"REST takma adı → `report.subsidiary_ledger` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `ledger.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["report"],"parameters":[{"name":"account_code","in":"query","required":true,"schema":{"type":"string","description":"Hesap kodu veya ön eki (ör. 120.01.0003, 102)"},"description":"Hesap kodu veya ön eki (ör. 120.01.0003, 102)"},{"name":"from","in":"query","required":false,"schema":{"type":"string","format":"date","description":"Başlangıç"},"description":"Başlangıç"},{"name":"to","in":"query","required":false,"schema":{"type":"string","format":"date","description":"Bitiş"},"description":"Bitiş"},{"name":"contact_id","in":"query","required":false,"schema":{"type":"integer","description":"Cari kimliği (satırdaki cari)"},"description":"Cari kimliği (satırdaki cari)"},{"name":"currency","in":"query","required":false,"schema":{"type":"string","minLength":3,"maxLength":3}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1}},{"name":"per_page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":1000}},{"name":"all","in":"query","required":false,"schema":{"type":"boolean","description":"Sayfalama olmadan tüm satırlar"},"description":"Sayfalama olmadan tüm satırlar"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"report.subsidiary_ledger","x-risk":"read","x-permission":"ledger.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true}},"/reports/account-statement":{"get":{"operationId":"rest_get_reports_account_statement","summary":"Hesap veya cari ekstresi: seçilen hesabın ya da carinin tüm hareketleri, devir ve bakiye ile.","description":"REST takma adı → `report.account_statement` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `ledger.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["report"],"parameters":[{"name":"account_code","in":"query","required":false,"schema":{"type":"string","description":"Hesap kodu (contact_id yoksa zorunlu)"},"description":"Hesap kodu (contact_id yoksa zorunlu)"},{"name":"contact_id","in":"query","required":false,"schema":{"type":"integer","description":"Cari kimliği (account_code yoksa zorunlu)"},"description":"Cari kimliği (account_code yoksa zorunlu)"},{"name":"from","in":"query","required":false,"schema":{"type":"string","format":"date","description":"Başlangıç"},"description":"Başlangıç"},{"name":"to","in":"query","required":false,"schema":{"type":"string","format":"date","description":"Bitiş"},"description":"Bitiş"},{"name":"currency","in":"query","required":false,"schema":{"type":"string","minLength":3,"maxLength":3}},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"report.account_statement","x-risk":"read","x-permission":"ledger.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true}},"/reports/trial-balance":{"get":{"operationId":"rest_get_reports_trial_balance","summary":"Mizan: devir, dönem, toplam borç/alacak ve bakiyeler. Geçici (kapanış hariç) veya kesin mizan; dövizli mizan için para birimi verilebilir.","description":"REST takma adı → `report.trial_balance` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `ledger.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["report"],"parameters":[{"name":"from","in":"query","required":false,"schema":{"type":"string","format":"date","description":"Dönem başı (varsayılan: bitiş yılının 1 Ocak'ı)"},"description":"Dönem başı (varsayılan: bitiş yılının 1 Ocak'ı)"},{"name":"to","in":"query","required":false,"schema":{"type":"string","format":"date","description":"Dönem sonu (varsayılan: bugün)"},"description":"Dönem sonu (varsayılan: bugün)"},{"name":"level","in":"query","required":false,"schema":{"type":"string","enum":["main","all","leaf"],"description":"main: yalnız ana hesaplar, leaf: yalnız alt (yaprak) hesaplar, all: tüm seviyeler"},"description":"main: yalnız ana hesaplar, leaf: yalnız alt (yaprak) hesaplar, all: tüm seviyeler"},{"name":"mode","in":"query","required":false,"schema":{"type":"string","enum":["period","cumulative"],"description":"period: from–to dönemi; cumulative: yıl başından bitişe"},"description":"period: from–to dönemi; cumulative: yıl başından bitişe"},{"name":"code_from","in":"query","required":false,"schema":{"type":"string","description":"Hesap kodu aralığı başı (ör. 100)"},"description":"Hesap kodu aralığı başı (ör. 100)"},{"name":"code_to","in":"query","required":false,"schema":{"type":"string","description":"Hesap kodu aralığı sonu (ör. 399)"},"description":"Hesap kodu aralığı sonu (ör. 399)"},{"name":"include_opening","in":"query","required":false,"schema":{"type":"boolean","description":"Açılış fişi devir kolonunda gösterilsin (varsayılan true)"},"description":"Açılış fişi devir kolonunda gösterilsin (varsayılan true)"},{"name":"hide_zero","in":"query","required":false,"schema":{"type":"boolean","description":"Bakiyesi sıfır olan hesapları gizle"},"description":"Bakiyesi sıfır olan hesapları gizle"},{"name":"exclude_closing","in":"query","required":false,"schema":{"type":"boolean","description":"true: geçici mizan (KAPANIS fişi hariç, varsayılan), false: kesin mizan"},"description":"true: geçici mizan (KAPANIS fişi hariç, varsayılan), false: kesin mizan"},{"name":"currency","in":"query","required":false,"schema":{"type":"string","minLength":3,"maxLength":3,"description":"Dövizli mizan: yalnız bu dövizdeki satırlar + döviz kolonları"},"description":"Dövizli mizan: yalnız bu dövizdeki satırlar + döviz kolonları"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"report.trial_balance","x-risk":"read","x-permission":"ledger.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true}},"/reports/balance-sheet":{"get":{"operationId":"rest_get_reports_balance_sheet","summary":"Bilanço (Tek Düzen): tarih itibarıyla aktif ve pasif kalemleri; ara dönemde dönem sonucu sanal hesaplanır. presentation=gross ile ters bakiyeli cari/banka alt hesapları brüt gösterilir.","description":"REST takma adı → `report.balance_sheet` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `ledger.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["report"],"parameters":[{"name":"date","in":"query","required":false,"schema":{"type":"string","format":"date","description":"Bilanço tarihi (varsayılan bugün)"},"description":"Bilanço tarihi (varsayılan bugün)"},{"name":"compare_date","in":"query","required":false,"schema":{"type":"string","format":"date","description":"Karşılaştırma tarihi (isteğe bağlı)"},"description":"Karşılaştırma tarihi (isteğe bağlı)"},{"name":"presentation","in":"query","required":false,"schema":{"type":"string","enum":["net","gross"],"description":"net (varsayılan) veya gross: ters bakiyeli 120 / 320 / 102 alt hesapları 340 / 159 / 300 satırlarına taşınır"},"description":"net (varsayılan) veya gross: ters bakiyeli 120 / 320 / 102 alt hesapları 340 / 159 / 300 satırlarına taşınır"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"report.balance_sheet","x-risk":"read","x-permission":"ledger.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true}},"/reports/income-statement":{"get":{"operationId":"rest_get_reports_income_statement","summary":"Gelir tablosu (Tek Düzen): brüt satıştan dönem net kârına; 7/A yansıtılmamış giderler sanal yansıtılır. detail=true alt hesap kırılımı verir.","description":"REST takma adı → `report.income_statement` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `ledger.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["report"],"parameters":[{"name":"from","in":"query","required":false,"schema":{"type":"string","format":"date","description":"Başlangıç"},"description":"Başlangıç"},{"name":"to","in":"query","required":false,"schema":{"type":"string","format":"date","description":"Bitiş"},"description":"Bitiş"},{"name":"compare_from","in":"query","required":false,"schema":{"type":"string","format":"date","description":"Karşılaştırma dönemi başı"},"description":"Karşılaştırma dönemi başı"},{"name":"compare_to","in":"query","required":false,"schema":{"type":"string","format":"date","description":"Karşılaştırma dönemi sonu"},"description":"Karşılaştırma dönemi sonu"},{"name":"detail","in":"query","required":false,"schema":{"type":"boolean","description":"Ayrıntılı gelir tablosu (alt hesap kırılımı)"},"description":"Ayrıntılı gelir tablosu (alt hesap kırılımı)"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"report.income_statement","x-risk":"read","x-permission":"ledger.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true}},"/reports/cash-flow":{"get":{"operationId":"rest_get_reports_cash_flow","summary":"Nakit akım tablosu (doğrudan, basit): kasa/banka hareketlerinin faaliyet, yatırım ve finansman kırılımı.","description":"REST takma adı → `report.cash_flow` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `ledger.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["report"],"parameters":[{"name":"from","in":"query","required":false,"schema":{"type":"string","format":"date","description":"Başlangıç"},"description":"Başlangıç"},{"name":"to","in":"query","required":false,"schema":{"type":"string","format":"date","description":"Bitiş"},"description":"Bitiş"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"report.cash_flow","x-risk":"read","x-permission":"ledger.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true}},"/reports/cash-projection":{"get":{"operationId":"rest_get_reports_cash_projection","summary":"Nakit projeksiyonu: banka nakdi (gerçekleşen) + açık faturaların ve çek/senetlerin vadelerine göre haftalık beklenen giriş/çıkış.","description":"REST takma adı → `report.cash_projection` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `payments.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["report"],"parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","minimum":7,"maximum":365,"description":"Gün sayısı (vars. 90)"},"description":"Gün sayısı (vars. 90)"},{"name":"start","in":"query","required":false,"schema":{"type":"string","format":"date","description":"Başlangıç (vars. bugün)"},"description":"Başlangıç (vars. bugün)"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"report.cash_projection","x-risk":"read","x-permission":"payments.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true}},"/reports/vat":{"get":{"operationId":"rest_get_reports_vat","summary":"KDV hazırlık raporu: hesaplanan, indirilecek, tevkifat, istisnalar, önceki ay devreden ve ödenecek/devreden KDV (deftere dayalı).","description":"REST takma adı → `report.vat` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `ledger.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["report"],"parameters":[{"name":"year","in":"query","required":true,"schema":{"type":"integer","minimum":2000,"maximum":2100}},{"name":"month","in":"query","required":true,"schema":{"type":"integer","minimum":1,"maximum":12}},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"report.vat","x-risk":"read","x-permission":"ledger.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true}},"/reports/party-purchase-sales":{"get":{"operationId":"rest_get_reports_party_purchase_sales","summary":"Ba/Bs raporu — YALNIZ Ağustos 2024 ve önceki dönemler (Form Ba/Bs 565 Sıra No'lu VUK GT ile Eylül 2024 döneminden itibaren kaldırıldı): cari bazında belge adedi ve KDV hariç tutar (defterden), eşik (5.000 TL) üstü işaretli.","description":"REST takma adı → `report.party_purchase_sales` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `ledger.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["report"],"parameters":[{"name":"year","in":"query","required":true,"schema":{"type":"integer","minimum":2000,"maximum":2024,"description":"Yıl (en fazla 2024; 2024 için ay en fazla 8 — Ba/Bs Eylül 2024 döneminden itibaren kaldırıldı)"},"description":"Yıl (en fazla 2024; 2024 için ay en fazla 8 — Ba/Bs Eylül 2024 döneminden itibaren kaldırıldı)"},{"name":"month","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":12,"description":"Ay (boşsa tüm yıl)"},"description":"Ay (boşsa tüm yıl)"},{"name":"side","in":"query","required":false,"schema":{"type":"string","enum":["both","purchase","sales"]}},{"name":"only_above","in":"query","required":false,"schema":{"type":"boolean","description":"Yalnız eşik üstü cariler"},"description":"Yalnız eşik üstü cariler"},{"name":"threshold","in":"query","required":false,"schema":{"type":"number","description":"Eşik (boşsa yasal sınır)"},"description":"Eşik (boşsa yasal sınır)"},{"name":"contact_id","in":"query","required":false,"schema":{"type":"integer"}},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"report.party_purchase_sales","x-risk":"read","x-permission":"ledger.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true}},"/reports/aging":{"get":{"operationId":"rest_get_reports_aging","summary":"Alacak (receivables) veya borç (payables) yaşlandırma raporu: açık faturalar cari bazında vadesi gelmemiş, 0–30, 31–60, 61–90 ve 90+ gün kovalarına ayrılır (TL).","description":"REST takma adı → `report.aging` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `contacts.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["report"],"parameters":[{"name":"type","in":"query","required":true,"schema":{"type":"string","enum":["receivables","payables"],"description":"receivables: alacaklar, payables: borçlar"},"description":"receivables: alacaklar, payables: borçlar"},{"name":"as_of","in":"query","required":false,"schema":{"type":"string","format":"date","description":"Rapor tarihi (boşsa bugün)"},"description":"Rapor tarihi (boşsa bugün)"},{"name":"contact_id","in":"query","required":false,"schema":{"type":"integer"}},{"name":"with_invoices","in":"query","required":false,"schema":{"type":"boolean","description":"Cari satırlarına fatura ayrıntısı ekle"},"description":"Cari satırlarına fatura ayrıntısı ekle"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"report.aging","x-risk":"read","x-permission":"contacts.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true}},"/reports/sales":{"get":{"operationId":"rest_get_reports_sales","summary":"Satışlar raporu: kesilmiş satış faturaları ve satış iadeleri (eksi), TL ve KDV hariç; cari, ürün, ay, kategori veya projeye göre kırılım.","description":"REST takma adı → `report.sales` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `invoices.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["report"],"parameters":[{"name":"from","in":"query","required":false,"schema":{"type":"string","format":"date","description":"Başlangıç (vars. yıl başı)"},"description":"Başlangıç (vars. yıl başı)"},{"name":"to","in":"query","required":false,"schema":{"type":"string","format":"date","description":"Bitiş (vars. bugün)"},"description":"Bitiş (vars. bugün)"},{"name":"group_by","in":"query","required":false,"schema":{"type":"string","enum":["contact","product","month","category","project"],"description":"Kırılım (vars. contact)"},"description":"Kırılım (vars. contact)"},{"name":"contact_id","in":"query","required":false,"schema":{"type":"integer","description":"Yalnız bu cari"},"description":"Yalnız bu cari"},{"name":"product_id","in":"query","required":false,"schema":{"type":"integer","description":"Yalnız bu ürün"},"description":"Yalnız bu ürün"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"report.sales","x-risk":"read","x-permission":"invoices.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true}},"/reports/expenses":{"get":{"operationId":"rest_get_reports_expenses","summary":"Giderler raporu: kesilmiş alış faturaları ve kesinleşmiş masraflar (KDV hariç, TL); kategori, tedarikçi, hesap, ay veya masraf merkezine göre.","description":"REST takma adı → `report.expenses` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `expenses.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["report"],"parameters":[{"name":"from","in":"query","required":false,"schema":{"type":"string","format":"date","description":"Başlangıç (vars. yıl başı)"},"description":"Başlangıç (vars. yıl başı)"},{"name":"to","in":"query","required":false,"schema":{"type":"string","format":"date","description":"Bitiş (vars. bugün)"},"description":"Bitiş (vars. bugün)"},{"name":"group_by","in":"query","required":false,"schema":{"type":"string","enum":["category","supplier","account","month","cost_center"]}},{"name":"source","in":"query","required":false,"schema":{"type":"string","enum":["all","invoices","expenses"],"description":"all | invoices | expenses"},"description":"all | invoices | expenses"},{"name":"contact_id","in":"query","required":false,"schema":{"type":"integer","description":"Yalnız bu tedarikçi"},"description":"Yalnız bu tedarikçi"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"report.expenses","x-risk":"read","x-permission":"expenses.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true}},"/reports/collections":{"get":{"operationId":"rest_get_reports_collections","summary":"Tahsilat/ödeme raporu: açık alacak ve borç kalemleri (vadesi geçmiş, 7 ve 30 gün içinde) ile dönemde yapılan tahsilat ve ödemeler.","description":"REST takma adı → `report.collections` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `payments.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["report"],"parameters":[{"name":"from","in":"query","required":false,"schema":{"type":"string","format":"date","description":"Tahsilat dönemi başı"},"description":"Tahsilat dönemi başı"},{"name":"to","in":"query","required":false,"schema":{"type":"string","format":"date","description":"Tahsilat dönemi sonu"},"description":"Tahsilat dönemi sonu"},{"name":"as_of","in":"query","required":false,"schema":{"type":"string","format":"date","description":"Açık kalem günü (vars. bugün)"},"description":"Açık kalem günü (vars. bugün)"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"report.collections","x-risk":"read","x-permission":"payments.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true}},"/reports/profitability":{"get":{"operationId":"rest_get_reports_profitability","summary":"Gelir–gider–kâr raporu (defterden, 7/A sanal yansıtmalı): aylık gelir, maliyet, gider ve kâr; isteğe bağlı masraf merkezi / proje kırılımı.","description":"REST takma adı → `report.profitability` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `ledger.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["report"],"parameters":[{"name":"from","in":"query","required":false,"schema":{"type":"string","format":"date","description":"Başlangıç"},"description":"Başlangıç"},{"name":"to","in":"query","required":false,"schema":{"type":"string","format":"date","description":"Bitiş"},"description":"Bitiş"},{"name":"breakdown","in":"query","required":false,"schema":{"type":"string","enum":["none","cost_center","project"]}},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"report.profitability","x-risk":"read","x-permission":"ledger.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true}},"/reports/stopaj":{"get":{"operationId":"rest_get_reports_stopaj","summary":"Stopaj raporu: 360.03/04/05/08 (kesilen) ve 193.01/03 (bize kesilen) hesaplarından tür × cari × ay; muhtasar satır eşlemesiyle.","description":"REST takma adı → `report.stopaj` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `ledger.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["report"],"parameters":[{"name":"year","in":"query","required":true,"schema":{"type":"integer","minimum":2000,"maximum":2100}},{"name":"month","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":12,"description":"Ay (boşsa tüm yıl)"},"description":"Ay (boşsa tüm yıl)"},{"name":"contact_id","in":"query","required":false,"schema":{"type":"integer"}},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"report.stopaj","x-risk":"read","x-permission":"ledger.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true}},"/reports/provisional-tax":{"get":{"operationId":"rest_get_reports_provisional_tax","summary":"Geçici vergi hazırlığı (çeyrek 1–3, kümülatif): defter kârı + KKEG − istisna − geçmiş yıl zararı → matrah × oran − önceki dönemlerde ödenen (193.02).","description":"REST takma adı → `report.provisional_tax` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `ledger.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["report"],"parameters":[{"name":"year","in":"query","required":true,"schema":{"type":"integer"}},{"name":"quarter","in":"query","required":true,"schema":{"type":"integer","minimum":1,"maximum":3}},{"name":"exemptions_try","in":"query","required":false,"schema":{"type":"number","description":"İstisna ve indirimler (TL)"},"description":"İstisna ve indirimler (TL)"},{"name":"previous_losses_try","in":"query","required":false,"schema":{"type":"number","description":"Mahsup edilecek geçmiş yıl zararı (TL)"},"description":"Mahsup edilecek geçmiş yıl zararı (TL)"},{"name":"paid_previous_try","in":"query","required":false,"schema":{"type":"number","description":"Önceki dönemlerde ödenen (boşsa 193.02)"},"description":"Önceki dönemlerde ödenen (boşsa 193.02)"},{"name":"rate","in":"query","required":false,"schema":{"type":"number","description":"Vergi oranı % (boşsa kurumlar vergisi oranı)"},"description":"Vergi oranı % (boşsa kurumlar vergisi oranı)"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"report.provisional_tax","x-risk":"read","x-permission":"ledger.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true}},"/reports/cogs-statement":{"get":{"operationId":"rest_get_reports_cogs_statement","summary":"Satışların maliyeti tablosu (Tek Düzen): 150–153 stok hareketleri ve 620/621/622 hesaplarından SMM; formül ile defter farkı uyarısı.","description":"REST takma adı → `report.cogs_statement` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `ledger.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["report"],"parameters":[{"name":"from","in":"query","required":false,"schema":{"type":"string","format":"date","description":"Başlangıç"},"description":"Başlangıç"},{"name":"to","in":"query","required":false,"schema":{"type":"string","format":"date","description":"Bitiş"},"description":"Bitiş"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"report.cogs_statement","x-risk":"read","x-permission":"ledger.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true}},"/reports/inventory-book":{"get":{"operationId":"rest_get_reports_inventory_book","summary":"Envanter defteri: tarih itibarıyla 1–5. sınıf hesap bakiyeleri, stok listesi (varsa) ve sabit kıymet listesi.","description":"REST takma adı → `report.inventory_book` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `ledger.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["report"],"parameters":[{"name":"as_of","in":"query","required":false,"schema":{"type":"string","format":"date","description":"Envanter tarihi (vars. bugün)"},"description":"Envanter tarihi (vars. bugün)"},{"name":"detail","in":"query","required":false,"schema":{"type":"boolean","description":"Alt hesapları da listele"},"description":"Alt hesapları da listele"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"report.inventory_book","x-risk":"read","x-permission":"ledger.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true}},"/reports/tax-reconciliation":{"get":{"operationId":"rest_get_reports_tax_reconciliation","summary":"Beyanname–mizan kontrolü: KDV raporu sonuçları ↔ 191/391/190/360.01 muavin hareketleri, stopaj ↔ 360.0x; fark satırları işaretli.","description":"REST takma adı → `report.tax_reconciliation` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `ledger.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["report"],"parameters":[{"name":"year","in":"query","required":true,"schema":{"type":"integer","minimum":2000,"maximum":2100}},{"name":"month","in":"query","required":true,"schema":{"type":"integer","minimum":1,"maximum":12,"description":"Ay (1–12)"},"description":"Ay (1–12)"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"report.tax_reconciliation","x-risk":"read","x-permission":"ledger.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true}},"/reports/edefter-precheck":{"get":{"operationId":"rest_get_reports_edefter_precheck","summary":"e-Defter ön kontrolü: madde no sırası, belge bilgileri, hesap kodları ve dönem kilidi kontrolleri.","description":"REST takma adı → `report.edefter_precheck` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `ledger.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["report"],"parameters":[{"name":"period_id","in":"query","required":true,"schema":{"type":"integer","description":"Mali dönem (ay) kimliği"},"description":"Mali dönem (ay) kimliği"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"report.edefter_precheck","x-risk":"read","x-permission":"ledger.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true}},"/reports/edefter-export":{"post":{"operationId":"rest_post_reports_edefter_export","summary":"Kilitli dönemin yevmiye kayıtlarını NES e-Defter CSV şablonunda (ZIP) üretir ve dönemi \"e-Defter gönderildi\" olarak işaretler; işaretli dönemin kilidi açılamaz.","description":"REST takma adı → `report.edefter_export` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `ledger.close` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["report"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"report.edefter_export","x-risk":"commit","x-permission":"ledger.close","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/report_edefter_export.input"}}}}}},"/dashboard":{"get":{"operationId":"rest_get_dashboard","summary":"Muhasebe panosu: açık alacak/borç, bu ay satış ve gider, vadesi yaklaşanlar, onay kuyruğu, eşleşmemiş banka hareketi, e-Belge hataları ve vergi takvimi (her widget kendi iznine göre).","description":"REST takma adı → `dashboard.accounting` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `contacts.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["dashboard"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"dashboard.accounting","x-risk":"read","x-permission":"contacts.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true}},"/dashboard/portfolio":{"get":{"operationId":"rest_get_dashboard_portfolio","summary":"Firmalarım panosu: erişilen her şirket için son kilitli ay, taslak/onay bekleyen fiş, eşleşmemiş banka hareketi, KDV mahsubu ve e-Defter durumu.","description":"REST takma adı → `dashboard.portfolio` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `bank_accounts.view|bank_accounts.manage|transactions.view|transactions.export|reports.view|documents.view|documents.generate|integrations.view|integrations.manage|team.view|team.manage|company.manage|ledger.view|ledger.post|ledger.approve|ledger.close|accounts_chart.manage|contacts.view|contacts.manage|products.view|products.manage|invoices.view|invoices.manage|payments.view|payments.manage|expenses.view|expenses.manage|einvoice.view|einvoice.send|einvoice.manage|imports.run|api_tokens.manage|assistant.use|custom_reports.view|custom_reports.manage|accountant_access.manage` · **Kanallar:** web, api, cli, mcp, assistant","tags":["dashboard"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"dashboard.portfolio","x-risk":"read","x-permission":"bank_accounts.view|bank_accounts.manage|transactions.view|transactions.export|reports.view|documents.view|documents.generate|integrations.view|integrations.manage|team.view|team.manage|company.manage|ledger.view|ledger.post|ledger.approve|ledger.close|accounts_chart.manage|contacts.view|contacts.manage|products.view|products.manage|invoices.view|invoices.manage|payments.view|payments.manage|expenses.view|expenses.manage|einvoice.view|einvoice.send|einvoice.manage|imports.run|api_tokens.manage|assistant.use|custom_reports.view|custom_reports.manage|accountant_access.manage","x-channels":["web","api","cli","mcp","assistant"],"x-idempotency":"optional","x-rest-alias":true}},"/dashboard/cards":{"get":{"operationId":"rest_get_dashboard_cards","summary":"Panel istatistik kartları (web Panel ile aynı): toplam nakit, ciro, gider, kâr, açık alacak/borç, KDV, onay bekleyenler, aylık kâr/yaşlandırma/en çok satış grafikleri, banka dağılımı, e-Belge, banka sağlığı, vergi takvimi. Her kart kendi iznine göre görünür; cards ile alt küme, include_data=false ile yalnız görünür kart listesi döner.","description":"REST takma adı → `dashboard.cards` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `bank_accounts.view|payments.view|invoices.view|expenses.view|ledger.view|contacts.view|ledger.post|einvoice.view|transactions.view|integrations.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["dashboard"],"parameters":[{"name":"cards[]","in":"query","required":false,"schema":{"type":"array","items":{"type":"string","enum":["cash","revenue","expenses","profit","receivables","payables","vat","approvals","monthly_pl","aging","top_customers","top_suppliers","bank_distribution","edocuments","bank_monthly","bank_health","tax_calendar","instruments","activity"]},"maxItems":19,"description":"İstenen kartlar (boş = görünür kartların tümü). REST GET: ?cards[]=cash&cards[]=revenue"},"description":"İstenen kartlar (boş = görünür kartların tümü). REST GET: ?cards[]=cash&cards[]=revenue"},{"name":"period","in":"query","required":false,"schema":{"type":"string","enum":["month","quarter","year","custom"],"description":"Dönem: month (bu ay, varsayılan) | quarter | year | custom (from + to)"},"description":"Dönem: month (bu ay, varsayılan) | quarter | year | custom (from + to)"},{"name":"from","in":"query","required":false,"schema":{"type":"string","format":"date","description":"period=custom başlangıcı YYYY-MM-DD"},"description":"period=custom başlangıcı YYYY-MM-DD"},{"name":"to","in":"query","required":false,"schema":{"type":"string","format":"date","description":"period=custom bitişi YYYY-MM-DD (en fazla 3 yıl)"},"description":"period=custom bitişi YYYY-MM-DD (en fazla 3 yıl)"},{"name":"include_data","in":"query","required":false,"schema":{"type":"boolean","description":"false: kart verisi hesaplanmaz, yalnız görünür kart listesi (varsayılan true)"},"description":"false: kart verisi hesaplanmaz, yalnız görünür kart listesi (varsayılan true)"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"dashboard.cards","x-risk":"read","x-permission":"bank_accounts.view|payments.view|invoices.view|expenses.view|ledger.view|contacts.view|ledger.post|einvoice.view|transactions.view|integrations.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true}},"/contacts":{"get":{"operationId":"rest_get_contacts","summary":"Carileri listeler; ad, kod, VKN/TCKN veya e-postaya göre arar, türe göre süzer ve isteğe bağlı bakiye verir. Tam eşleşme yoksa IBAN / unvan benzerliğiyle adayları \"similar\" alanında döner (aynı aramayı tekrarlama).","description":"REST takma adı → `contact.list` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `contacts.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["contact"],"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","description":"Ad, kod, VKN/TCKN veya e-posta araması"},"description":"Ad, kod, VKN/TCKN veya e-posta araması"},{"name":"type","in":"query","required":false,"schema":{"type":"string","enum":["customer","supplier","both","employee","other"]}},{"name":"side","in":"query","required":false,"schema":{"type":"string","enum":["customer","supplier"],"description":"customer: müşteri+both, supplier: tedarikçi+both"},"description":"customer: müşteri+both, supplier: tedarikçi+both"},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["active","inactive","archived","all"],"description":"Varsayılan active"},"description":"Varsayılan active"},{"name":"needs_review","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"with_balance","in":"query","required":false,"schema":{"type":"boolean","description":"Kesin fişlerden cari bakiyesi (borç − alacak)"},"description":"Kesin fişlerden cari bakiyesi (borç − alacak)"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1}},{"name":"per_page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":200}},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"contact.list","x-risk":"read","x-permission":"contacts.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true},"post":{"operationId":"rest_post_contacts","summary":"Yeni cari (müşteri/tedarikçi) kartı açar; türüne göre 120/320 muhasebe alt hesabını oluşturur. Mükerrer olabilecek cariler uyarı olarak döner.","description":"REST takma adı → `contact.create` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Taslak · **İzin:** `contacts.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["contact"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"contact.create","x-risk":"draft","x-permission":"contacts.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/contact_create.input"}}}}}},"/contacts/balances":{"get":{"operationId":"rest_get_contacts_balances","summary":"Cari bakiye listesi (borç, alacak, bakiye). Alacaklı/borçlu carilere veya bakiyesi olanlara süzülebilir.","description":"REST takma adı → `contact.balances` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `contacts.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["contact"],"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string"}},{"name":"type","in":"query","required":false,"schema":{"type":"string","enum":["customer","supplier","both","employee","other"]}},{"name":"side","in":"query","required":false,"schema":{"type":"string","enum":["receivable","payable","nonzero"],"description":"receivable: bize borçlu (B), payable: bizim borçlu olduğumuz (A), nonzero: bakiyesi olan"},"description":"receivable: bize borçlu (B), payable: bizim borçlu olduğumuz (A), nonzero: bakiyesi olan"},{"name":"to","in":"query","required":false,"schema":{"type":"string","format":"date","description":"Bu tarihe kadarki bakiye"},"description":"Bu tarihe kadarki bakiye"},{"name":"include_inactive","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1}},{"name":"per_page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":200}},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"contact.balances","x-risk":"read","x-permission":"contacts.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true}},"/contacts/merge-preview":{"get":{"operationId":"rest_get_contacts_merge_preview","summary":"Mükerrer cari birleştirme önizlemesi: virmanlanacak bakiyeler ve hedefe taşınacak kayıt sayıları (kayıt yapmaz).","description":"REST takma adı → `contact.merge_preview` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `contacts.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["contact"],"parameters":[{"name":"source_id","in":"query","required":true,"schema":{"type":"integer","description":"Kaldırılacak (mükerrer) cari"},"description":"Kaldırılacak (mükerrer) cari"},{"name":"target_id","in":"query","required":true,"schema":{"type":"integer","description":"Kalacak cari"},"description":"Kalacak cari"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"contact.merge_preview","x-risk":"read","x-permission":"contacts.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true}},"/contacts/lookup":{"get":{"operationId":"rest_get_contacts_lookup","summary":"Form için cari arar (ad veya VKN/TCKN): yalnız aktif carilerin kimliği, adı, VKN/TCKN'si ve türü döner. Fatura, tahsilat/ödeme veya masraf girebilen kullanıcı içindir; ayrıntı için contact.get kullanın.","description":"REST takma adı → `contact.lookup` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `invoices.manage|payments.manage|expenses.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["contact"],"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":100,"description":"Ad veya VKN/TCKN araması (kod ve e-postada aranmaz)"},"description":"Ad veya VKN/TCKN araması (kod ve e-postada aranmaz)"},{"name":"type","in":"query","required":false,"schema":{"type":"string","enum":["customer","supplier","both","employee","other"],"description":"Tür süzgeci (ör. employee: çalışan ödedi masrafı)"},"description":"Tür süzgeci (ör. employee: çalışan ödedi masrafı)"},{"name":"side","in":"query","required":false,"schema":{"type":"string","enum":["customer","supplier"],"description":"customer: müşteri + her ikisi, supplier: tedarikçi + her ikisi"},"description":"customer: müşteri + her ikisi, supplier: tedarikçi + her ikisi"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":50,"description":"En çok sonuç (varsayılan 20, web seçicisi gibi)"},"description":"En çok sonuç (varsayılan 20, web seçicisi gibi)"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"contact.lookup","x-risk":"read","x-permission":"invoices.manage|payments.manage|expenses.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true}},"/contacts/merge":{"post":{"operationId":"rest_post_contacts_merge","summary":"Mükerrer cariyi hedef cariye birleştirir: kesin fiş satırları değişmez, kaynağın cari bakiyesi MAHSUP fişiyle hedefe virmanlanır; açık faturalar, çek/senet, IBAN, kurallar ve taslaklar hedefe taşınır; kaynak arşivlenir.","description":"REST takma adı → `contact.merge` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `contacts.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["contact"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"contact.merge","x-risk":"commit","x-permission":"contacts.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/contact_merge.input"}}}}}},"/contacts/{id}":{"get":{"operationId":"rest_get_contacts_by_id","summary":"Tek bir cari kartını; banka hesapları, muhasebe alt hesapları ve güncel bakiyesiyle döndürür.","description":"REST takma adı → `contact.get` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `contacts.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["contact"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"contact.get","x-risk":"read","x-permission":"contacts.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true},"patch":{"operationId":"rest_patch_contacts_by_id","summary":"Cari kartını günceller (yalnız gönderilen alanlar). Ad değişirse muhasebe alt hesap adı da güncellenir.","description":"REST takma adı → `contact.update` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Taslak · **İzin:** `contacts.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["contact"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"contact.update","x-risk":"draft","x-permission":"contacts.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/contact_update.input"}}}}}},"/contacts/{id}/archive":{"post":{"operationId":"rest_post_contacts_by_id_archive","summary":"Cariyi arşivler: muhasebe hareketi olan cari yalnız pasifleştirilir, hareketsiz cari arşive kaldırılır.","description":"REST takma adı → `contact.archive` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `contacts.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["contact"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"contact.archive","x-risk":"commit","x-permission":"contacts.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/contact_archive.input"}}}}}},"/contacts/{id}/statement":{"get":{"operationId":"rest_get_contacts_by_id_statement","summary":"Cari hesap ekstresi: dönem başı devir, kesin fiş satırları, yürüyen bakiye ve kapanış bakiyesi.","description":"REST takma adı → `contact.statement` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `contacts.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["contact"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"from","in":"query","required":false,"schema":{"type":"string","format":"date"}},{"name":"to","in":"query","required":false,"schema":{"type":"string","format":"date"}},{"name":"currency","in":"query","required":false,"schema":{"type":"string","minLength":3,"maxLength":3,"description":"Yalnız bu dövizdeki satırlar"},"description":"Yalnız bu dövizdeki satırlar"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1}},{"name":"per_page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":500}},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"contact.statement","x-risk":"read","x-permission":"contacts.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true}},"/contacts/{id}/open-items":{"get":{"operationId":"rest_get_contacts_by_id_open_items","summary":"Carinin tahsilat (in) veya ödeme (out) ile kapatılabilecek açık faturalarını en eski vadeden başlayarak listeler; ödemede ödenmemiş masrafları da (expenses) döner.","description":"REST takma adı → `payment.open_items` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `payments.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["payment"],"parameters":[{"name":"id","in":"path","required":true,"description":"Girdi alanı: `contact_id`","schema":{"type":"integer"}},{"name":"direction","in":"query","required":true,"schema":{"type":"string","enum":["in","out"]}},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"payment.open_items","x-risk":"read","x-permission":"payments.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true}},"/reconciliations":{"get":{"operationId":"rest_get_reconciliations","summary":"Gönderilen cari mutabakat mektupları: tarih, bakiye (B/A), durum (yanıt bekleniyor / mutabık / mutabık değil / süresi doldu) ve karşı taraf notu.","description":"REST takma adı → `reconciliation.list` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `contacts.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["reconciliation"],"parameters":[{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["sent","accepted","rejected","expired"]}},{"name":"contact_id","in":"query","required":false,"schema":{"type":"integer"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1}},{"name":"per_page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100}},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"reconciliation.list","x-risk":"read","x-permission":"contacts.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true}},"/contacts/{id}/reconciliations":{"post":{"operationId":"rest_post_contacts_by_id_reconciliations","summary":"Cari mutabakat mektubu gönderir: belirtilen tarihteki cari bakiyesi (B/A) PDF mektup ve 30 gün geçerli onay/red bağlantısıyla e-postalanır.","description":"REST takma adı → `reconciliation.send` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `contacts.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["reconciliation"],"parameters":[{"name":"id","in":"path","required":true,"description":"Girdi alanı: `contact_id`","schema":{"type":"integer"}},{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"reconciliation.send","x-risk":"commit","x-permission":"contacts.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/reconciliation_send.input"}}}}}},"/products":{"get":{"operationId":"rest_get_products","summary":"Ürün ve hizmetleri listeler; ad, kod veya barkoda göre arar.","description":"REST takma adı → `product.list` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `products.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["product"],"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string"}},{"name":"type","in":"query","required":false,"schema":{"type":"string","enum":["goods","service"]}},{"name":"category","in":"query","required":false,"schema":{"type":"string"}},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["active","inactive","archived","all"]}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1}},{"name":"per_page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":200}},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"product.list","x-risk":"read","x-permission":"products.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true},"post":{"operationId":"rest_post_products","summary":"Yeni ürün veya hizmet kartı oluşturur (birim, KDV oranı, satış/alış fiyatı, varsayılan hesaplar).","description":"REST takma adı → `product.create` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Taslak · **İzin:** `products.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["product"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"product.create","x-risk":"draft","x-permission":"products.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/product_create.input"}}}}}},"/products/{id}":{"get":{"operationId":"rest_get_products_by_id","summary":"Tek bir ürün / hizmet kartını döndürür.","description":"REST takma adı → `product.get` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `products.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["product"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"product.get","x-risk":"read","x-permission":"products.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true},"patch":{"operationId":"rest_patch_products_by_id","summary":"Ürün / hizmet kartını günceller (yalnız gönderilen alanlar).","description":"REST takma adı → `product.update` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Taslak · **İzin:** `products.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["product"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"product.update","x-risk":"draft","x-permission":"products.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/product_update.input"}}}}}},"/products/{id}/archive":{"post":{"operationId":"rest_post_products_by_id_archive","summary":"Ürün / hizmet kartını arşive kaldırır (pasifleştirir; geçmiş belgelerde adıyla görünmeye devam eder).","description":"REST takma adı → `product.archive` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `products.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["product"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"product.archive","x-risk":"commit","x-permission":"products.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/product_archive.input"}}}}}},"/warehouses":{"get":{"operationId":"rest_get_warehouses","summary":"Depoları listeler (varsayılan depo işaretli).","description":"REST takma adı → `warehouse.list` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `products.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["warehouse"],"parameters":[{"name":"include_inactive","in":"query","required":false,"schema":{"type":"boolean"}},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"warehouse.list","x-risk":"read","x-permission":"products.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true},"post":{"operationId":"rest_post_warehouses","summary":"Yeni depo açar. Şirketin ilk deposu otomatik varsayılan olur.","description":"REST takma adı → `warehouse.create` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Taslak · **İzin:** `products.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["warehouse"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"warehouse.create","x-risk":"draft","x-permission":"products.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/warehouse_create.input"}}}}}},"/warehouses/{id}":{"patch":{"operationId":"rest_patch_warehouses_by_id","summary":"Depoyu günceller; varsayılan depo seçimi ve pasifleştirme dahil.","description":"REST takma adı → `warehouse.update` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Taslak · **İzin:** `products.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["warehouse"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"warehouse.update","x-risk":"draft","x-permission":"products.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/warehouse_update.input"}}}}}},"/stock/levels":{"get":{"operationId":"rest_get_stock_levels","summary":"Ürün × depo stok seviyelerini listeler: miktar, ağırlıklı ortalama birim maliyet ve stok değeri (TL).","description":"REST takma adı → `stock.levels` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `products.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["stock"],"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","description":"Ürün adı, kodu veya barkodu"},"description":"Ürün adı, kodu veya barkodu"},{"name":"warehouse_id","in":"query","required":false,"schema":{"type":"integer"}},{"name":"product_id","in":"query","required":false,"schema":{"type":"integer"}},{"name":"nonzero","in":"query","required":false,"schema":{"type":"boolean","description":"Yalnız miktarı veya değeri sıfır olmayanlar"},"description":"Yalnız miktarı veya değeri sıfır olmayanlar"},{"name":"below_critical","in":"query","required":false,"schema":{"type":"boolean","description":"Kritik stok seviyesinin altındakiler"},"description":"Kritik stok seviyesinin altındakiler"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1}},{"name":"per_page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":200}},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"stock.levels","x-risk":"read","x-permission":"products.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true}},"/stock/movements":{"get":{"operationId":"rest_get_stock_movements","summary":"Stok hareketlerini (giriş/çıkış, maliyet, kaynak belge) en yeniden eskiye listeler.","description":"REST takma adı → `stock.movements` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `products.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["stock"],"parameters":[{"name":"product_id","in":"query","required":false,"schema":{"type":"integer"}},{"name":"warehouse_id","in":"query","required":false,"schema":{"type":"integer"}},{"name":"type","in":"query","required":false,"schema":{"type":"string","enum":["purchase","sale","sales_return","purchase_return","transfer","adjustment","opening","revaluation"]}},{"name":"direction","in":"query","required":false,"schema":{"type":"string","enum":["in","out"]}},{"name":"source_type","in":"query","required":false,"schema":{"type":"string","description":"invoice, despatch, stock_count, transfer, opening, invoice_revaluation"},"description":"invoice, despatch, stock_count, transfer, opening, invoice_revaluation"},{"name":"source_id","in":"query","required":false,"schema":{"type":"integer"}},{"name":"from","in":"query","required":false,"schema":{"type":"string","format":"date"}},{"name":"to","in":"query","required":false,"schema":{"type":"string","format":"date"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1}},{"name":"per_page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":200}},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"stock.movements","x-risk":"read","x-permission":"products.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true}},"/stock/valuation":{"get":{"operationId":"rest_get_stock_valuation","summary":"Stok değerini depo bazında verir (seçili maliyet yöntemiyle: ağırlıklı ortalama veya FIFO); as_of ile geçmiş bir tarihteki değer. Tüm depolarda 153 defter bakiyesiyle farkı gösterir.","description":"REST takma adı → `stock.valuation` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `products.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["stock"],"parameters":[{"name":"as_of","in":"query","required":false,"schema":{"type":"string","format":"date","description":"Bu tarih itibarıyla (boşsa anlık)"},"description":"Bu tarih itibarıyla (boşsa anlık)"},{"name":"warehouse_id","in":"query","required":false,"schema":{"type":"integer"}},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"stock.valuation","x-risk":"read","x-permission":"products.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true}},"/stock/adjustments":{"post":{"operationId":"rest_post_stock_adjustments","summary":"Sayım farkı kaydeder (sayılan miktar ile kayıtlı miktar farkı; sürekli envanterde noksan 197/153, fazla 153/397 fişi) veya hareketsiz ürün/depo için açılış stoku girer (mode=opening, birim maliyet zorunlu, fiş üretmez).","description":"REST takma adı → `stock.adjust` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `products.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["stock"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"stock.adjust","x-risk":"commit","x-permission":"products.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stock_adjust.input"}}}}}},"/stock/transfers":{"post":{"operationId":"rest_post_stock_transfers","summary":"Bir üründen belirli miktarı kaynak depodan hedef depoya aktarır (ortalama maliyetle; FIFO yönteminde katmanlar tarih ve maliyetiyle taşınır; muhasebe fişi üretmez).","description":"REST takma adı → `stock.transfer` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `products.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["stock"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"stock.transfer","x-risk":"commit","x-permission":"products.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stock_transfer.input"}}}}}},"/stock/cost-flow":{"get":{"operationId":"rest_get_stock_cost_flow","summary":"Stok maliyet akış yöntemini (ağırlıklı ortalama / FIFO) ve değişiklik koşullarını verir; target verilirse değişikliğin ürün × depo bazında stok değeri farkını önizler (yazmaz).","description":"REST takma adı → `stock.cost_flow_status` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `products.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["stock"],"parameters":[{"name":"target","in":"query","required":false,"schema":{"type":"string","enum":["weighted_average","fifo"],"description":"Önizlenecek hedef yöntem"},"description":"Önizlenecek hedef yöntem"},{"name":"date","in":"query","required":false,"schema":{"type":"string","format":"date","description":"Geçerlilik tarihi (boşsa bugün)"},"description":"Geçerlilik tarihi (boşsa bugün)"},{"name":"recalculate","in":"query","required":false,"schema":{"type":"boolean","description":"Dönem ortasında yeniden hesaplama sihirbazı"},"description":"Dönem ortasında yeniden hesaplama sihirbazı"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"stock.cost_flow_status","x-risk":"read","x-permission":"products.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true},"post":{"operationId":"rest_post_stock_cost_flow","summary":"Stok maliyet akış yöntemini değiştirir (ağırlıklı ortalama ↔ FIFO). Yıl başında ve bu yıl stok hareketi yokken doğrudan; dönem ortasında yalnız recalculate=true ile (FIFO yıl içi hareketlerden yeniden hesaplanır, stok değer farkı sürekli envanterde 153/621 fişine gider). FIFO negatif stok izniyle birlikte kullanılamaz.","description":"REST takma adı → `stock.cost_flow_change` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `accounts_chart.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["stock"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"stock.cost_flow_change","x-risk":"commit","x-permission":"accounts_chart.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/stock_cost_flow_change.input"}}}}}},"/stock/cost-layers":{"get":{"operationId":"rest_get_stock_cost_layers","summary":"FIFO maliyet katmanlarını tüketim sırasıyla listeler (giriş tarihi, kalan miktar, TL birim maliyet, belge dövizi). Yalnız FIFO yönteminde dolu.","description":"REST takma adı → `stock.cost_layers` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `products.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["stock"],"parameters":[{"name":"product_id","in":"query","required":false,"schema":{"type":"integer"}},{"name":"warehouse_id","in":"query","required":false,"schema":{"type":"integer"}},{"name":"include_closed","in":"query","required":false,"schema":{"type":"boolean","description":"Tükenmiş katmanları da getir"},"description":"Tükenmiş katmanları da getir"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1}},{"name":"per_page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":200}},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"stock.cost_layers","x-risk":"read","x-permission":"products.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true}},"/invoices":{"get":{"operationId":"rest_get_invoices","summary":"Faturaları, iadeleri, teklif ve proformaları listeler; tür, durum, cari, tarih aralığı, ödeme durumu ve metinle süzer.","description":"REST takma adı → `invoice.list` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `invoices.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["invoice"],"parameters":[{"name":"kind","in":"query","required":false,"schema":{"type":"string","enum":["sales","purchase","sales_return","purchase_return","quote","proforma"]}},{"name":"kinds[]","in":"query","required":false,"schema":{"type":"array","items":{"type":"string","enum":["sales","purchase","sales_return","purchase_return","quote","proforma"]}}},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["draft","issued","cancelled","sent","accepted","rejected","converted","overdue"],"description":"overdue: vadesi geçmiş açık faturalar"},"description":"overdue: vadesi geçmiş açık faturalar"},{"name":"contact_id","in":"query","required":false,"schema":{"type":"integer"}},{"name":"from","in":"query","required":false,"schema":{"type":"string","format":"date"}},{"name":"to","in":"query","required":false,"schema":{"type":"string","format":"date"}},{"name":"payment_status","in":"query","required":false,"schema":{"type":"string","enum":["unpaid","partial","paid"]}},{"name":"q","in":"query","required":false,"schema":{"type":"string","description":"Fatura no, belge no, not veya cari adı"},"description":"Fatura no, belge no, not veya cari adı"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1}},{"name":"per_page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":200}},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"invoice.list","x-risk":"read","x-permission":"invoices.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true},"post":{"operationId":"rest_post_invoices","summary":"Yalnız TASLAK fatura, iade, teklif veya proforma oluşturur; tutarları hesaplar, fiş üretmez. Kullanıcı faturayı \"kes / kesinleştir / gönder\" dediyse bu adım yetmez: dönen invoice.id ile HEMEN invoice.issue çağır (onay kartı). Yalnız \"taslak/hazırla\" dendiyse taslakta bırak.","description":"REST takma adı → `invoice.create` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Taslak · **İzin:** `invoices.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["invoice"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"invoice.create","x-risk":"draft","x-permission":"invoices.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/invoice_create.input"}}}}}},"/invoices/calculate":{"post":{"operationId":"rest_post_invoices_calculate","summary":"Fatura kalemlerinden KDV, tevkifat, toplam ve ödenecek tutarı kaydetmeden hesaplar; kalem hesaplarını önizler.","description":"REST takma adı → `invoice.calculate` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `invoices.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["invoice"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"invoice.calculate","x-risk":"read","x-permission":"invoices.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/invoice_calculate.input"}}}}}},"/invoices/form-options":{"get":{"operationId":"rest_get_invoices_form_options","summary":"Fatura / iade / teklif formunun seçeneklerini döner: türler, KDV oranları, tevkifat ve istisna kodları, fatura tipleri, senaryolar, birimler, dövizler, masraf merkezi / proje / depo listeleri, İHRACAT ve e-Arşiv alanlarının kod listeleri, bugünün tarihi ve ek sınırı.","description":"REST takma adı → `invoice.form_options` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `invoices.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["invoice"],"parameters":[{"name":"group","in":"query","required":false,"schema":{"type":"string","enum":["sales","purchase","quote"],"description":"sales (satış + satış iadesi), purchase (alış + alış iadesi), quote (teklif + proforma); boşsa tüm türler"},"description":"sales (satış + satış iadesi), purchase (alış + alış iadesi), quote (teklif + proforma); boşsa tüm türler"},{"name":"date","in":"query","required":false,"schema":{"type":"string","format":"date","description":"Vergi kodlarının geçerli olacağı tarih (boşsa bugün)"},"description":"Vergi kodlarının geçerli olacağı tarih (boşsa bugün)"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"invoice.form_options","x-risk":"read","x-permission":"invoices.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true}},"/invoices/{id}":{"get":{"operationId":"rest_get_invoices_by_id","summary":"Tek faturanın başlık, kalem, vergi özeti, bağlı fiş ve iade bilgilerini getirir.","description":"REST takma adı → `invoice.get` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `invoices.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["invoice"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"invoice.get","x-risk":"read","x-permission":"invoices.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true},"patch":{"operationId":"rest_patch_invoices_by_id","summary":"Taslak faturayı (veya teklifi) günceller; kalemler gönderilirse tümüyle değiştirilir. Kesilmiş fatura düzenlenemez.","description":"REST takma adı → `invoice.update` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Taslak · **İzin:** `invoices.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["invoice"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"invoice.update","x-risk":"draft","x-permission":"invoices.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/invoice_update.input"}}}}},"delete":{"operationId":"rest_delete_invoices_by_id","summary":"Taslak faturayı veya dönüştürülmemiş teklifi siler. Kesilmiş fatura silinemez (invoice.cancel).","description":"REST takma adı → `invoice.delete` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `invoices.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["invoice"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"invoice.delete","x-risk":"commit","x-permission":"invoices.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/invoice_delete.input"}}}}}},"/invoices/{id}/issue":{"post":{"operationId":"rest_post_invoices_by_id_issue","summary":"Taslak faturayı keser (\"fatura kes\" isteğinin 2. adımı, invoice.create'ten hemen sonra): numara verir, kalem hesaplarını kesinleştirir ve muhasebe fişini (120/600/391, 153-7xx/191/320…) üretir. Aynı fatura ikinci kez kesilse de ikinci fiş oluşmaz.","description":"REST takma adı → `invoice.issue` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `invoices.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["invoice"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"invoice.issue","x-risk":"commit","x-permission":"invoices.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/invoice_issue.input"}}}}}},"/invoices/{id}/cancel":{"post":{"operationId":"rest_post_invoices_by_id_cancel","summary":"Kesilmiş faturayı iptal eder ve fişini ters kayıtla kapatır. Tahsis edilmiş veya e-Belgesi gönderilmiş fatura iptal edilemez.","description":"REST takma adı → `invoice.cancel` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `invoices.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["invoice"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"invoice.cancel","x-risk":"commit","x-permission":"invoices.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/invoice_cancel.input"}}}}}},"/invoices/{id}/returns":{"post":{"operationId":"rest_post_invoices_by_id_returns","summary":"Kesilmiş satış veya alış faturasından taslak iade faturası oluşturur (tüm kalemler ya da seçilen kalem/miktarlar).","description":"REST takma adı → `invoice.create_return` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Taslak · **İzin:** `invoices.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["invoice"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","description":"İade edilecek fatura"}},{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"invoice.create_return","x-risk":"draft","x-permission":"invoices.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/invoice_create_return.input"}}}}}},"/invoices/{id}/edocument":{"post":{"operationId":"rest_post_invoices_by_id_edocument","summary":"Kesilmiş satış faturasını (veya alış iadesini) e-Belge olarak gönderir: alıcı e-Fatura mükellefiyse e-Fatura, değilse e-Arşiv; yabancı alıcıya mal ihracatı (İSTİSNA + 301) e-Fatura İHRACAT olarak GTB'ye. Senaryo (TİCARİ/TEMEL/KAMU), e-Arşiv gönderim şekli (ELEKTRONIK/KAGIT) ve KAMU IBAN'ı seçilebilir. ETTN gönderimden önce kaydedilir; gönderim kuyrukta yapılır. Başarısız ya da numarasız kalmış belge aynı ETTN ile yeniden denenir, gönderilmiş fatura ikinci kez gönderilmez.","description":"REST takma adı → `edocument.send` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `einvoice.send` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["edocument"],"parameters":[{"name":"id","in":"path","required":true,"description":"Girdi alanı: `invoice_id`","schema":{"type":"integer","description":"Kesilmiş fatura (invoice.list)"}},{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"edocument.send","x-risk":"commit","x-permission":"einvoice.send","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/edocument_send.input"}}}}}},"/invoices/{id}/edocument-plan":{"get":{"operationId":"rest_get_invoices_by_id_edocument_plan","summary":"Gönderim önizlemesi: fatura hangi modülle (e-Fatura / e-Arşiv) ve senaryoyla (TİCARİ, TEMEL, KAMU, İHRACAT) gönderilecek, alıcının posta kutusu etiketleri, e-Arşiv gönderim şekli (ELEKTRONIK/KAGIT), ihracatta GTB bilgisi ve gönderimden önce tamamlanması gereken eksik alanlar (GTİP, teslim şartı, IBAN…). Kayıt oluşturmaz.","description":"REST takma adı → `edocument.send_plan` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `einvoice.send` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["edocument"],"parameters":[{"name":"id","in":"path","required":true,"description":"Girdi alanı: `invoice_id`","schema":{"type":"integer","description":"Kesilmiş fatura (invoice.list)"}},{"name":"module","in":"query","required":false,"schema":{"type":"string","enum":["einvoice","earchive"],"description":"Boşsa otomatik (mükellef sorgusu / mal ihracatı kuralı)"},"description":"Boşsa otomatik (mükellef sorgusu / mal ihracatı kuralı)"},{"name":"profile","in":"query","required":false,"schema":{"type":"string","enum":["TICARIFATURA","TEMELFATURA","KAMU"],"description":"e-Fatura senaryosu (İHRACAT otomatik belirlenir)"},"description":"e-Fatura senaryosu (İHRACAT otomatik belirlenir)"},{"name":"receiver_alias","in":"query","required":false,"schema":{"type":"string"}},{"name":"send_type","in":"query","required":false,"schema":{"type":"string","enum":["ELEKTRONIK","KAGIT"],"description":"e-Arşiv gönderim şekli"},"description":"e-Arşiv gönderim şekli"},{"name":"payee_iban","in":"query","required":false,"schema":{"type":"string","description":"KAMU senaryosunda ödeme IBAN'ı (boşsa ayardaki)"},"description":"KAMU senaryosunda ödeme IBAN'ı (boşsa ayardaki)"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"edocument.send_plan","x-risk":"read","x-permission":"einvoice.send","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true}},"/invoices/{id}/pdf":{"get":{"operationId":"rest_get_invoices_by_id_pdf","summary":"Faturanın (satış, alış, iade, teklif, proforma) yazdırılabilir PDF çıktısını döner: dosya adı, MIME, boyut ve base64 içerik. Sunucuda PDF motoru yoksa aynı belge HTML olarak döner.","description":"REST takma adı → `invoice.pdf` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `invoices.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["invoice"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","description":"Fatura kimliği (invoice.list)"}},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"invoice.pdf","x-risk":"read","x-permission":"invoices.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true}},"/quotes/{id}/convert":{"post":{"operationId":"rest_post_quotes_by_id_convert","summary":"Teklif veya proformayı taslak satış faturasına dönüştürür; teklif \"faturaya dönüştü\" olarak işaretlenir.","description":"REST takma adı → `quote.convert` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Taslak · **İzin:** `invoices.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["quote"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"quote.convert","x-risk":"draft","x-permission":"invoices.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/quote_convert.input"}}}}}},"/despatches":{"get":{"operationId":"rest_get_despatches","summary":"Kağıt irsaliyeleri listeler (sevk/giriş, durum, cari, tarih). overdue=true: 7 günü geçmiş faturalanmamış sevk irsaliyeleri.","description":"REST takma adı → `despatch.list` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `products.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["despatch"],"parameters":[{"name":"kind","in":"query","required":false,"schema":{"type":"string","enum":["out","in"]}},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["draft","issued","invoiced","cancelled"]}},{"name":"contact_id","in":"query","required":false,"schema":{"type":"integer"}},{"name":"from","in":"query","required":false,"schema":{"type":"string","format":"date"}},{"name":"to","in":"query","required":false,"schema":{"type":"string","format":"date"}},{"name":"q","in":"query","required":false,"schema":{"type":"string"}},{"name":"overdue","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1}},{"name":"per_page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":200}},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"despatch.list","x-risk":"read","x-permission":"products.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true},"post":{"operationId":"rest_post_despatches","summary":"Taslak kağıt irsaliye oluşturur (stok hareketi kesimde yapılır).","description":"REST takma adı → `despatch.create` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Taslak · **İzin:** `products.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["despatch"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"despatch.create","x-risk":"draft","x-permission":"products.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/despatch_create.input"}}}}}},"/despatches/accrual-preview":{"get":{"operationId":"rest_get_despatches_accrual_preview","summary":"Seçilen ay sonu itibarıyla faturası gelmemiş alış (giriş) irsaliyelerini ve 153/329 tahakkuk tutarını önizler.","description":"REST takma adı → `despatch.accrual_preview` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `ledger.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["despatch"],"parameters":[{"name":"month","in":"query","required":true,"schema":{"type":"string","pattern":"^\\d{4}-(0[1-9]|1[0-2])$","description":"YYYY-AA"},"description":"YYYY-AA"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"despatch.accrual_preview","x-risk":"read","x-permission":"ledger.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true}},"/despatches/accrue":{"post":{"operationId":"rest_post_despatches_accrue","summary":"Ay sonunda faturası gelmemiş alış irsaliyeleri için 153 B / 329 A tahakkuk fişi keser ve ertesi ayın ilk günü ters kaydını alır (03 §15.9). Aynı ay ikinci kez tahakkuk edilmez.","description":"REST takma adı → `despatch.accrue_uninvoiced` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `ledger.post` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["despatch"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"despatch.accrue_uninvoiced","x-risk":"commit","x-permission":"ledger.post","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/despatch_accrue_uninvoiced.input"}}}}}},"/despatches/to-invoice":{"post":{"operationId":"rest_post_despatches_to_invoice","summary":"Kesilmiş bir veya daha fazla irsaliyeden (aynı cari ve tür) taslak fatura oluşturur; fatura kesildiğinde irsaliyede yapılmış stok hareketi tekrarlanmaz.","description":"REST takma adı → `despatch.to_invoice` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `invoices.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["despatch"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"despatch.to_invoice","x-risk":"commit","x-permission":"invoices.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/despatch_to_invoice.input"}}}}}},"/despatches/{id}":{"get":{"operationId":"rest_get_despatches_by_id","summary":"Bir irsaliyenin başlığını, kalemlerini ve oluşturduğu stok hareketlerini döner.","description":"REST takma adı → `despatch.get` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `products.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["despatch"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"despatch.get","x-risk":"read","x-permission":"products.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true},"patch":{"operationId":"rest_patch_despatches_by_id","summary":"Taslak irsaliyeyi günceller; kalemler gönderilirse tümüyle değişir.","description":"REST takma adı → `despatch.update` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Taslak · **İzin:** `products.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["despatch"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"despatch.update","x-risk":"draft","x-permission":"products.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/despatch_update.input"}}}}},"delete":{"operationId":"rest_delete_despatches_by_id","summary":"Taslak irsaliyeyi siler (kesilmiş irsaliye silinmez, iptal edilir).","description":"REST takma adı → `despatch.delete` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `products.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["despatch"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"despatch.delete","x-risk":"commit","x-permission":"products.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/despatch_delete.input"}}}}}},"/despatches/{id}/issue":{"post":{"operationId":"rest_post_despatches_by_id_issue","summary":"Taslak irsaliyeyi keser: numara verir ve stok hareketini yazar (sevkte çıkış, girişte giriş).","description":"REST takma adı → `despatch.issue` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `products.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["despatch"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"despatch.issue","x-risk":"commit","x-permission":"products.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/despatch_issue.input"}}}}}},"/despatches/{id}/cancel":{"post":{"operationId":"rest_post_despatches_by_id_cancel","summary":"İrsaliyeyi iptal eder; kesilmişse stok hareketlerine karşı hareket yazar. Faturalanmış irsaliye iptal edilemez.","description":"REST takma adı → `despatch.cancel` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `products.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["despatch"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"despatch.cancel","x-risk":"commit","x-permission":"products.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/despatch_cancel.input"}}}}}},"/recurring-invoices":{"get":{"operationId":"rest_get_recurring_invoices","summary":"Tekrarlayan fatura tanımlarını listeler (durum, cari, arama süzgeçli; sonraki çalışma tarihi, son hata).","description":"REST takma adı → `recurring_invoice.list` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `invoices.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["recurring_invoice"],"parameters":[{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["active","paused","error"]}},{"name":"contact_id","in":"query","required":false,"schema":{"type":"integer"}},{"name":"q","in":"query","required":false,"schema":{"type":"string"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer"}},{"name":"per_page","in":"query","required":false,"schema":{"type":"integer"}},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"recurring_invoice.list","x-risk":"read","x-permission":"invoices.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true},"post":{"operationId":"rest_post_recurring_invoices","summary":"Tekrarlayan fatura tanımı oluşturur (haftalık/aylık/yıllık). source_invoice_id verilirse şablon o faturadan alınır. Faturalar her dönem, tanımı oluşturan kullanıcının yetkisiyle üretilir; aynı dönem iki kez fatura üretilmez.","description":"REST takma adı → `recurring_invoice.create` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Taslak · **İzin:** `invoices.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["recurring_invoice"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"recurring_invoice.create","x-risk":"draft","x-permission":"invoices.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/recurring_invoice_create.input"}}}}}},"/recurring-invoices/{id}":{"get":{"operationId":"rest_get_recurring_invoices_by_id","summary":"Tekrarlayan fatura tanımını şablonu ve ürettiği son faturalarla getirir.","description":"REST takma adı → `recurring_invoice.get` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `invoices.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["recurring_invoice"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"recurring_invoice.get","x-risk":"read","x-permission":"invoices.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true},"patch":{"operationId":"rest_patch_recurring_invoices_by_id","summary":"Tekrarlayan fatura tanımını günceller (şablon, takvim, otomatik kesme). Takvim değişirse geçmiş dönemler yeniden üretilmez.","description":"REST takma adı → `recurring_invoice.update` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Taslak · **İzin:** `invoices.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["recurring_invoice"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"recurring_invoice.update","x-risk":"draft","x-permission":"invoices.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/recurring_invoice_update.input"}}}}},"delete":{"operationId":"rest_delete_recurring_invoices_by_id","summary":"Tekrarlayan fatura tanımını siler; daha önce üretilmiş faturalar etkilenmez.","description":"REST takma adı → `recurring_invoice.delete` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `invoices.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["recurring_invoice"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"recurring_invoice.delete","x-risk":"commit","x-permission":"invoices.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/recurring_invoice_delete.input"}}}}}},"/recurring-invoices/{id}/pause":{"post":{"operationId":"rest_post_recurring_invoices_by_id_pause","summary":"Tekrarlayan faturayı duraklatır (active=false) veya devam ettirir (active=true; geçmiş dönemler atlanır).","description":"REST takma adı → `recurring_invoice.pause` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `invoices.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["recurring_invoice"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"recurring_invoice.pause","x-risk":"commit","x-permission":"invoices.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/recurring_invoice_pause.input"}}}}}},"/recurring-invoices/{id}/run":{"post":{"operationId":"rest_post_recurring_invoices_by_id_run","summary":"Vadesi gelmiş dönem(ler)in faturasını hemen üretir (günlük zamanlayıcıyı beklemeden). Tanımı oluşturan kullanıcının yetkisi aranır; aynı dönem ikinci kez üretilmez.","description":"REST takma adı → `recurring_invoice.run_now` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `invoices.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["recurring_invoice"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"recurring_invoice.run_now","x-risk":"commit","x-permission":"invoices.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/recurring_invoice_run_now.input"}}}}}},"/payments":{"get":{"operationId":"rest_get_payments","summary":"Tahsilat ve ödemeleri listeler; yön, yöntem, durum, cari, tarih aralığı ve metinle süzer. Özet olarak toplam TL tutarı döner.","description":"REST takma adı → `payment.list` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `payments.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["payment"],"parameters":[{"name":"direction","in":"query","required":false,"schema":{"type":"string","enum":["in","out"],"description":"in: tahsilat, out: ödeme"},"description":"in: tahsilat, out: ödeme"},{"name":"method","in":"query","required":false,"schema":{"type":"string","enum":["bank","cash","pos","credit_card","cheque","note","offset"]}},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["posted","cancelled"]}},{"name":"contact_id","in":"query","required":false,"schema":{"type":"integer"}},{"name":"from","in":"query","required":false,"schema":{"type":"string","format":"date"}},{"name":"to","in":"query","required":false,"schema":{"type":"string","format":"date"}},{"name":"q","in":"query","required":false,"schema":{"type":"string","description":"Tahsilat no, dekont no, açıklama veya cari adı"},"description":"Tahsilat no, dekont no, açıklama veya cari adı"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1}},{"name":"per_page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":200}},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"payment.list","x-risk":"read","x-permission":"payments.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true},"post":{"operationId":"rest_post_payments","summary":"Tahsilat (direction=in) veya ödeme (out) kaydeder ve kesin muhasebe fişini üretir: banka 102/120, nakit TAHSIL/TEDIYE fişi, mahsup. allocations ile faturalara tahsis edilir (fatura dövizinde; açık bakiyeyi aşamaz); auto_allocate=true en eski vadeli faturalardan başlar. Dövizli faturada kur farkı: ihracatta 646/656 satırı, yurtiçinde lehe farkta taslak kur farkı faturası.","description":"REST takma adı → `payment.create` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `payments.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["payment"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"payment.create","x-risk":"commit","x-permission":"payments.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/payment_create.input"}}}}}},"/payments/form-options":{"get":{"operationId":"rest_get_payments_form_options","summary":"Tahsilat / ödeme formunun seçeneklerini döner: kullanılabilir ödeme yöntemleri, aktif banka hesapları, kasalar, POS terminalleri, şirket kredi kartları (maskeli), yönler, dövizler, bugünün tarihi ve ek sınırı.","description":"REST takma adı → `payment.form_options` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `payments.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["payment"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"payment.form_options","x-risk":"read","x-permission":"payments.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true}},"/payments/{id}":{"get":{"operationId":"rest_get_payments_by_id","summary":"Tek bir tahsilat/ödemeyi tahsisleri, kur farkları, kur farkı faturası ve bağlı fişleriyle getirir.","description":"REST takma adı → `payment.get` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `payments.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["payment"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"payment.get","x-risk":"read","x-permission":"payments.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true}},"/payments/{id}/cancel":{"post":{"operationId":"rest_post_payments_by_id_cancel","summary":"Tahsilat/ödemeyi iptal eder: fişi ters kayıtla kapatır, fatura tahsislerini siler ve faturaların ödeme durumunu geri alır.","description":"REST takma adı → `payment.cancel` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `payments.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["payment"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"payment.cancel","x-risk":"commit","x-permission":"payments.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/payment_cancel.input"}}}}}},"/transfers":{"get":{"operationId":"rest_get_transfers","summary":"Kasa ve banka hesapları arasındaki virmanları listeler (tarih aralığı ve durumla süzülür).","description":"REST takma adı → `transfer.list` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `payments.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["transfer"],"parameters":[{"name":"from","in":"query","required":false,"schema":{"type":"string","format":"date"}},{"name":"to","in":"query","required":false,"schema":{"type":"string","format":"date"}},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["posted","cancelled"]}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1}},{"name":"per_page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":200}},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"transfer.list","x-risk":"read","x-permission":"payments.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true},"post":{"operationId":"rest_post_transfers","summary":"Kasa↔banka veya banka↔banka virmanı kaydeder ve kesin fişini üretir (giriş hesabı borç / çıkış hesabı alacak). Farklı dövizde to_amount zorunludur; TL karşılıkları farkı kambiyo kârı/zararına (646/656) yazılır.","description":"REST takma adı → `transfer.create` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `payments.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["transfer"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"transfer.create","x-risk":"commit","x-permission":"payments.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/transfer_create.input"}}}}}},"/transfers/{id}/cancel":{"post":{"operationId":"rest_post_transfers_by_id_cancel","summary":"Virmanı iptal eder; fişi ters kayıtla kapatılır.","description":"REST takma adı → `transfer.cancel` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `payments.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["transfer"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"transfer.cancel","x-risk":"commit","x-permission":"payments.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/transfer_cancel.input"}}}}}},"/cash-accounts":{"get":{"operationId":"rest_get_cash_accounts","summary":"Kasaları bağlı 100 muhasebe hesabı ve kesin fişlerden hesaplanan bakiyeleriyle listeler.","description":"REST takma adı → `cash_account.list` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `payments.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["cash_account"],"parameters":[{"name":"include_inactive","in":"query","required":false,"schema":{"type":"boolean"}},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"cash_account.list","x-risk":"read","x-permission":"payments.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true},"post":{"operationId":"rest_post_cash_accounts","summary":"Yeni kasa açar ve 100 Kasa hesabının dövize uygun alt hesabına bağlar (TL 100.01, USD 100.02, EUR 100.03).","description":"REST takma adı → `cash_account.create` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Taslak · **İzin:** `payments.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["cash_account"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"cash_account.create","x-risk":"draft","x-permission":"payments.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/cash_account_create.input"}}}}}},"/cash-accounts/{id}":{"patch":{"operationId":"rest_patch_cash_accounts_by_id","summary":"Kasanın adını veya aktiflik durumunu günceller (para birimi değişmez).","description":"REST takma adı → `cash_account.update` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Taslak · **İzin:** `payments.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["cash_account"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"cash_account.update","x-risk":"draft","x-permission":"payments.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/cash_account_update.input"}}}}}},"/expenses":{"get":{"operationId":"rest_get_expenses","summary":"Masrafları listeler; durum, ödeme durumu, cari, kategori, tarih aralığı ve metinle süzer. Özet olarak kesinleşmiş masrafların TL toplamını döner.","description":"REST takma adı → `expense.list` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `expenses.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["expense"],"parameters":[{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["draft","posted","cancelled"]}},{"name":"payment_status","in":"query","required":false,"schema":{"type":"string","enum":["unpaid","partial","paid"]}},{"name":"contact_id","in":"query","required":false,"schema":{"type":"integer"}},{"name":"category_id","in":"query","required":false,"schema":{"type":"integer","description":"Satırlarında bu gider kategorisi olan masraflar"},"description":"Satırlarında bu gider kategorisi olan masraflar"},{"name":"from","in":"query","required":false,"schema":{"type":"string","format":"date"}},{"name":"to","in":"query","required":false,"schema":{"type":"string","format":"date"}},{"name":"q","in":"query","required":false,"schema":{"type":"string","description":"Masraf no, belge no, açıklama veya cari adı"},"description":"Masraf no, belge no, açıklama veya cari adı"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1}},{"name":"per_page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":200}},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"expense.list","x-risk":"read","x-permission":"expenses.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true},"post":{"operationId":"rest_post_expenses","summary":"Taslak masraf oluşturur (satırlı). Satırda gider kategorisi seçilince hesap, KDV oranı ve indirilebilirlik kategoriden dolar. Fiş expense.post ile kesinleşir: gider B, 191 B / kasa (TEDIYE), banka, kredi kartı (309.01), çalışan veya satıcı carisi (320) A.","description":"REST takma adı → `expense.create` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Taslak · **İzin:** `expenses.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["expense"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"expense.create","x-risk":"draft","x-permission":"expenses.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/expense_create.input"}}}}}},"/expenses/form-options":{"get":{"operationId":"rest_get_expenses_form_options","summary":"Masraf formunun seçeneklerini döner: gider kategorileri, banka hesapları, kasalar, şirket kredi kartları (maskeli), masraf merkezleri, projeler, ödeme kaynağı ve belge türleri, KDV oranları, dövizler, bugünün tarihi ve fiş eki sınırı.","description":"REST takma adı → `expense.form_options` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `expenses.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["expense"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"expense.form_options","x-risk":"read","x-permission":"expenses.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true}},"/expenses/receipt-ocr-status":{"get":{"operationId":"rest_get_expenses_receipt_ocr_status","summary":"Fiş görselinden taslak masraf (expense.draft_from_receipt) şu an kullanılabilir mi: açık/kapalı, kapalıysa nedeni (sunucuda yapılandırılmamış / paket token hakkı bitti), kabul edilen dosya türleri ve boyut sınırı.","description":"REST takma adı → `expense.receipt_ocr_status` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `expenses.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["expense"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"expense.receipt_ocr_status","x-risk":"read","x-permission":"expenses.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true}},"/expenses/{id}":{"get":{"operationId":"rest_get_expenses_by_id","summary":"Tek masrafı satırları ve muhasebe fişleriyle getirir; kendi fiş eki (has_own_attachment → expense.attachment) ve kayıt eki sayısı dahil.","description":"REST takma adı → `expense.get` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `expenses.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["expense"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"expense.get","x-risk":"read","x-permission":"expenses.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true},"patch":{"operationId":"rest_patch_expenses_by_id","summary":"Taslak masrafı günceller; lines verilirse satırların tamamı yenilenir. Kesinleşmiş masraf düzenlenemez (iptal edilir).","description":"REST takma adı → `expense.update` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Taslak · **İzin:** `expenses.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["expense"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"expense.update","x-risk":"draft","x-permission":"expenses.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/expense_update.input"}}}}},"delete":{"operationId":"rest_delete_expenses_by_id","summary":"Taslak masrafı siler. Kesinleşmiş masraf silinmez; expense.cancel ile iptal edilir.","description":"REST takma adı → `expense.delete` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `expenses.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["expense"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"expense.delete","x-risk":"commit","x-permission":"expenses.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/expense_delete.input"}}}}}},"/expenses/{id}/attachment":{"get":{"operationId":"rest_get_expenses_by_id_attachment","summary":"Masrafın kendi ekini (fiş görseli / PDF) döner: dosya adı, MIME, boyut ve base64 içerik. Kayıt ekleri için attachment.download.","description":"REST takma adı → `expense.attachment` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `expenses.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["expense"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","description":"Masraf kimliği (expense.get → has_own_attachment true olmalı)"}},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"expense.attachment","x-risk":"read","x-permission":"expenses.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true}},"/expenses/from-receipt":{"post":{"operationId":"rest_post_expenses_from_receipt","summary":"Fiş/fatura görselinden (JPG, PNG, PDF) taslak masraf oluşturur: e-Arşiv karekodu (qr_payload) varsa o, yoksa yapay zekâ ile okunur. Kalem toplamı fiş toplamını ±0,05 tutmazsa taslak \"inceleme gerekli\" işaretlenir. Hiçbir zaman otomatik muhasebeleştirmez.","description":"REST takma adı → `expense.draft_from_receipt` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Taslak · **İzin:** `expenses.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["expense"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"expense.draft_from_receipt","x-risk":"draft","x-permission":"expenses.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/expense_draft_from_receipt.input"}},"multipart/form-data":{"schema":{"$ref":"#/components/schemas/expense_draft_from_receipt.input"}}}}}},"/expenses/{id}/post":{"post":{"operationId":"rest_post_expenses_by_id_post","summary":"Taslak masrafı kesinleştirir: masraf numarası (MS-yıl-sıra) verir ve kesin muhasebe fişini üretir. Kesinleşen masraf yalnız iptal edilebilir.","description":"REST takma adı → `expense.post` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `expenses.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["expense"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"expense.post","x-risk":"commit","x-permission":"expenses.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/expense_post.input"}}}}}},"/expenses/{id}/cancel":{"post":{"operationId":"rest_post_expenses_by_id_cancel","summary":"Kesinleşmiş masrafı iptal eder; fişi ters kayıtla kapatılır (tarih verilmezse orijinal tarih, dönem kilitliyse ilk açık gün).","description":"REST takma adı → `expense.cancel` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `expenses.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["expense"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"expense.cancel","x-risk":"commit","x-permission":"expenses.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/expense_cancel.input"}}}}}},"/expense-categories":{"get":{"operationId":"rest_get_expense_categories","summary":"Gider kategorilerini (hesap, varsayılan KDV oranı, KDV indirilebilirliği, KKEG) listeler. İlk çağrıda hazır kategoriler bir kez açılır.","description":"REST takma adı → `expense_category.list` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `expenses.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["expense_category"],"parameters":[{"name":"include_inactive","in":"query","required":false,"schema":{"type":"boolean","description":"Pasif kategoriler de listelensin"},"description":"Pasif kategoriler de listelensin"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"expense_category.list","x-risk":"read","x-permission":"expenses.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true},"post":{"operationId":"rest_post_expense_categories","summary":"Gider kategorisi oluşturur: ad, gider hesabı (yaprak), varsayılan KDV oranı, KDV indirilebilir mi, KKEG mi.","description":"REST takma adı → `expense_category.create` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Taslak · **İzin:** `expenses.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["expense_category"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"expense_category.create","x-risk":"draft","x-permission":"expenses.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/expense_category_create.input"}}}}}},"/expense-categories/{id}":{"patch":{"operationId":"rest_patch_expense_categories_by_id","summary":"Gider kategorisini günceller (ad, hesap, varsayılan KDV oranı, indirilebilirlik, KKEG, aktiflik). Geçmiş masraf fişleri değişmez.","description":"REST takma adı → `expense_category.update` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Taslak · **İzin:** `expenses.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["expense_category"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"expense_category.update","x-risk":"draft","x-permission":"expenses.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/expense_category_update.input"}}}}}},"/expense-categories/{id}/archive":{"post":{"operationId":"rest_post_expense_categories_by_id_archive","summary":"Gider kategorisini kaldırır: masrafta kullanılmışsa pasifleştirir, kullanılmamışsa arşivler.","description":"REST takma adı → `expense_category.archive` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `expenses.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["expense_category"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"expense_category.archive","x-risk":"commit","x-permission":"expenses.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/expense_category_archive.input"}}}}}},"/instruments":{"get":{"operationId":"rest_get_instruments","summary":"Çek/senet portföyünü listeler; tür, yön (alınan/verilen), durum, cari, vade aralığı ve metinle süzer. Özet: portföydeki alınan ve ödenmemiş verilen çek/senet toplamları, vadesi geçenler ve 30 gün içinde vadesi gelenler.","description":"REST takma adı → `instrument.list` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `payments.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["instrument"],"parameters":[{"name":"type","in":"query","required":false,"schema":{"type":"string","enum":["cheque","note"],"description":"cheque (çek) / note (senet)"},"description":"cheque (çek) / note (senet)"},{"name":"direction","in":"query","required":false,"schema":{"type":"string","enum":["received","given"],"description":"received (alınan) / given (verilen)"},"description":"received (alınan) / given (verilen)"},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["portfolio","in_collection","in_guarantee","endorsed","collected","bounced","returned","given","paid","cancelled","open"],"description":"open: portföy + tahsilde + teminatta + verilen (ödenmemiş)"},"description":"open: portföy + tahsilde + teminatta + verilen (ödenmemiş)"},{"name":"contact_id","in":"query","required":false,"schema":{"type":"integer"}},{"name":"due_from","in":"query","required":false,"schema":{"type":"string","format":"date"}},{"name":"due_to","in":"query","required":false,"schema":{"type":"string","format":"date"}},{"name":"q","in":"query","required":false,"schema":{"type":"string","description":"Seri no, keşideci, banka, açıklama veya cari adı"},"description":"Seri no, keşideci, banka, açıklama veya cari adı"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1}},{"name":"per_page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":200}},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"instrument.list","x-risk":"read","x-permission":"payments.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true},"post":{"operationId":"rest_post_instruments","summary":"Çek/senet kaydeder. Alınan (received) çek/senet müşteriden tahsilat olarak portföye girer (101.01 / 121.01 B, 120 A); verilen (given) tedarikçiye ödemedir (320 B, 103.01 / 321.01 A). allocations ile faturalara tahsis edilebilir. Verilen çekte bank_account_id (çekin çekildiği hesap) zorunludur.","description":"REST takma adı → `instrument.create` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `payments.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["instrument"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"instrument.create","x-risk":"commit","x-permission":"payments.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/instrument_create.input"}}}}}},"/instruments/{id}":{"get":{"operationId":"rest_get_instruments_by_id","summary":"Tek çek/senedi hareket geçmişi, yapılabilecek işlemler (allowed_actions) ve muhasebe fişleriyle getirir.","description":"REST takma adı → `instrument.get` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `payments.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["instrument"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"instrument.get","x-risk":"read","x-permission":"payments.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true}},"/instruments/{id}/movements":{"post":{"operationId":"rest_post_instruments_by_id_movements","summary":"Çek/senet hareketi ve fişi: deposit_collection (tahsile ver, banka), deposit_guarantee (teminata ver), withdraw (portföye geri al), collect (tahsil: banka/kasa), endorse (tedarikçiye ciro = ödeme, contact_id), bounce (karşılıksız → cari 120), return (iade), pay (verilen çek/senedin ödenmesi). Yapılabilecekler instrument.get allowed_actions alanında.","description":"REST takma adı → `instrument.move` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `payments.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["instrument"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"instrument.move","x-risk":"commit","x-permission":"payments.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/instrument_move.input"}}}}}},"/instruments/{id}/undo":{"post":{"operationId":"rest_post_instruments_by_id_undo","summary":"Çek/senedin son hareketini geri alır: fişi ters kayıtla kapatılır (alma/verme/ciro için bağlı tahsilat/ödeme iptal edilir) ve önceki durumuna döner. İlk kayıt geri alınırsa çek/senet iptal edilmiş olur.","description":"REST takma adı → `instrument.undo` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `payments.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["instrument"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"instrument.undo","x-risk":"commit","x-permission":"payments.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/instrument_undo.input"}}}}}},"/credit-cards":{"get":{"operationId":"rest_get_credit_cards","summary":"Şirket kredi kartlarını güncel borç bakiyeleriyle listeler (kart numarası yalnız son 4 hane).","description":"REST takma adı → `credit_card.list` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `payments.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["credit_card"],"parameters":[{"name":"include_inactive","in":"query","required":false,"schema":{"type":"boolean"}},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"credit_card.list","x-risk":"read","x-permission":"payments.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true},"post":{"operationId":"rest_post_credit_cards","summary":"Şirket kredi kartı tanımlar ve 309.01 altında kart borcu hesabını açar. Tam kart numarası kabul edilmez; yalnız son 4 hane saklanır.","description":"REST takma adı → `credit_card.create` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Taslak · **İzin:** `payments.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["credit_card"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"credit_card.create","x-risk":"draft","x-permission":"payments.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/credit_card_create.input"}}}}}},"/credit-cards/{id}":{"get":{"operationId":"rest_get_credit_cards_by_id","summary":"Kredi kartını bakiyesi ve ekstre ödemeleriyle getirir.","description":"REST takma adı → `credit_card.get` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `payments.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["credit_card"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"credit_card.get","x-risk":"read","x-permission":"payments.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true},"patch":{"operationId":"rest_patch_credit_cards_by_id","summary":"Kredi kartı bilgilerini günceller (ad, banka, son 4 hane, kesim/ödeme günü, limit, aktiflik).","description":"REST takma adı → `credit_card.update` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Taslak · **İzin:** `payments.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["credit_card"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"credit_card.update","x-risk":"draft","x-permission":"payments.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/credit_card_update.input"}}}}}},"/credit-cards/{id}/archive":{"post":{"operationId":"rest_post_credit_cards_by_id_archive","summary":"Kredi kartını arşivler (hareketliyse pasifleştirir). Bakiyesi olan kart arşivlenemez.","description":"REST takma adı → `credit_card.archive` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `payments.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["credit_card"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"credit_card.archive","x-risk":"commit","x-permission":"payments.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/credit_card_archive.input"}}}}}},"/credit-cards/{id}/payments":{"post":{"operationId":"rest_post_credit_cards_by_id_payments","summary":"Kredi kartı ekstre ödemesini kaydeder: 309.01.xx B / 102 A (MAHSUP). Banka hesabı verilmezse kartın varsayılan bankası.","description":"REST takma adı → `credit_card.pay_statement` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `payments.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["credit_card"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","description":"Kredi kartı"}},{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"credit_card.pay_statement","x-risk":"commit","x-permission":"payments.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/credit_card_pay_statement.input"}}}}}},"/credit-card-payments/{id}/cancel":{"post":{"operationId":"rest_post_credit_card_payments_by_id_cancel","summary":"Kart ekstre ödemesini iptal eder (fişin ters kaydı).","description":"REST takma adı → `credit_card.cancel_payment` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `payments.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["credit_card"],"parameters":[{"name":"id","in":"path","required":true,"description":"Girdi alanı: `payment_id`","schema":{"type":"integer"}},{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"credit_card.cancel_payment","x-risk":"commit","x-permission":"payments.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/credit_card_cancel_payment.input"}}}}}},"/loans":{"get":{"operationId":"rest_get_loans","summary":"Banka kredilerini kalan anapara, sonraki taksit ve gecikme bilgisiyle listeler.","description":"REST takma adı → `loan.list` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `payments.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["loan"],"parameters":[{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["active","closed"]}},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"loan.list","x-risk":"read","x-permission":"payments.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true},"post":{"operationId":"rest_post_loans","summary":"Banka kredisi kaydeder ve kullanım fişini keser: 102 B / 300.xx A (12 ay içinde ödenecek anapara) + 400.xx A (kalan). Taksit planı (installments) elle veya Excel’den verilebilir; anapara toplamı kredi tutarına eşit olmalı.","description":"REST takma adı → `loan.create` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `payments.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["loan"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"loan.create","x-risk":"commit","x-permission":"payments.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/loan_create.input"}}}}}},"/loans/reclass-preview":{"get":{"operationId":"rest_get_loans_reclass_preview","summary":"Yıl sonu önizlemesi: uzun vadeli kredilerin (400) as_of tarihinden sonraki 12 ay içinde ödenecek anaparası (300’e aktarılacak tutar).","description":"REST takma adı → `loan.reclass_preview` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `payments.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["loan"],"parameters":[{"name":"as_of","in":"query","required":true,"schema":{"type":"string","format":"date"}},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"loan.reclass_preview","x-risk":"read","x-permission":"payments.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true}},"/loans/reclassify":{"post":{"operationId":"rest_post_loans_reclassify","summary":"Uzun vadeli kredinin 12 ay içine giren anaparasını kısa vadeye aktarır: 400.xx B / 300.xx A (kredi başına bir fiş).","description":"REST takma adı → `loan.reclassify` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `payments.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["loan"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"loan.reclassify","x-risk":"commit","x-permission":"payments.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/loan_reclassify.input"}}}}}},"/loans/{id}":{"get":{"operationId":"rest_get_loans_by_id","summary":"Krediyi taksit planıyla getirir.","description":"REST takma adı → `loan.get` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `payments.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["loan"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"loan.get","x-risk":"read","x-permission":"payments.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true},"patch":{"operationId":"rest_patch_loans_by_id","summary":"Kredinin ad, vade, faiz oranı ve not bilgilerini günceller (tutar/hesaplar değişmez).","description":"REST takma adı → `loan.update` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Taslak · **İzin:** `payments.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["loan"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"loan.update","x-risk":"draft","x-permission":"payments.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/loan_update.input"}}}}},"delete":{"operationId":"rest_delete_loans_by_id","summary":"Ödenmiş taksiti olmayan krediyi siler; kullanım fişinin ters kaydı alınır.","description":"REST takma adı → `loan.delete` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `payments.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["loan"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"loan.delete","x-risk":"commit","x-permission":"payments.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/loan_delete.input"}}}}}},"/loans/{id}/schedule":{"put":{"operationId":"rest_put_loans_by_id_schedule","summary":"Kredinin taksit planını değiştirir (ödenmiş taksit yokken). Anapara toplamı kredi tutarına eşit olmalı.","description":"REST takma adı → `loan.set_schedule` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Taslak · **İzin:** `payments.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["loan"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"loan.set_schedule","x-risk":"draft","x-permission":"payments.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/loan_set_schedule.input"}}}}}},"/loan-installments/{id}/pay":{"post":{"operationId":"rest_post_loan_installments_by_id_pay","summary":"Kredi taksit ödemesini kaydeder: 300 B (anapara), 780.01 B (faiz), 780.03 B (BSMV) / 102 A. Faiz/BSMV banka dekontundan farklıysa girilebilir. Banka hareketinden gelen taksit Banka Eşleştirme ile otomatik kapanır.","description":"REST takma adı → `loan.pay_installment` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `payments.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["loan"],"parameters":[{"name":"id","in":"path","required":true,"description":"Girdi alanı: `installment_id`","schema":{"type":"integer"}},{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"loan.pay_installment","x-risk":"commit","x-permission":"payments.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/loan_pay_installment.input"}}}}}},"/loan-installments/{id}/unpay":{"post":{"operationId":"rest_post_loan_installments_by_id_unpay","summary":"Elle kaydedilmiş taksit ödemesini geri alır (fişin ters kaydı).","description":"REST takma adı → `loan.unpay_installment` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `payments.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["loan"],"parameters":[{"name":"id","in":"path","required":true,"description":"Girdi alanı: `installment_id`","schema":{"type":"integer"}},{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"loan.unpay_installment","x-risk":"commit","x-permission":"payments.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/loan_unpay_installment.input"}}}}}},"/pos-terminals":{"get":{"operationId":"rest_get_pos_terminals","summary":"POS terminallerini valörü beklenen (108.01.xx) bakiyeleriyle listeler.","description":"REST takma adı → `pos.list` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `payments.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["pos"],"parameters":[{"name":"include_inactive","in":"query","required":false,"schema":{"type":"boolean"}},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"pos.list","x-risk":"read","x-permission":"payments.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true},"post":{"operationId":"rest_post_pos_terminals","summary":"POS terminali tanımlar ve 108.01 altında POS alacak hesabını açar (komisyon oranı, valör günü, bağlı TL banka hesabı).","description":"REST takma adı → `pos.create` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Taslak · **İzin:** `payments.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["pos"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"pos.create","x-risk":"draft","x-permission":"payments.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/pos_create.input"}}}}}},"/pos-terminals/{id}":{"get":{"operationId":"rest_get_pos_terminals_by_id","summary":"POS terminalini bakiyesi ve valör kayıtlarıyla getirir.","description":"REST takma adı → `pos.get` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `payments.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["pos"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"pos.get","x-risk":"read","x-permission":"payments.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true},"patch":{"operationId":"rest_patch_pos_terminals_by_id","summary":"POS terminali bilgilerini günceller.","description":"REST takma adı → `pos.update` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Taslak · **İzin:** `payments.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["pos"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"pos.update","x-risk":"draft","x-permission":"payments.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/pos_update.input"}}}}}},"/pos-terminals/{id}/archive":{"post":{"operationId":"rest_post_pos_terminals_by_id_archive","summary":"POS terminalini arşivler (hareketliyse pasifleştirir).","description":"REST takma adı → `pos.archive` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `payments.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["pos"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"pos.archive","x-risk":"commit","x-permission":"payments.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/pos_archive.input"}}}}}},"/pos-terminals/{id}/settlements":{"post":{"operationId":"rest_post_pos_terminals_by_id_settlements","summary":"POS valörünü kaydeder: 102 B (net), 780.04 B (komisyon) / 108.01.xx A (brüt). Komisyon verilmezse terminal oranından hesaplanır. bank_transaction_id verilirse banka hareketi bu fişe bağlanır (ikinci fiş oluşmaz).","description":"REST takma adı → `pos.settle` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `payments.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["pos"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","description":"POS terminali"}},{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"pos.settle","x-risk":"commit","x-permission":"payments.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/pos_settle.input"}}}}}},"/pos-settlements/{id}/cancel":{"post":{"operationId":"rest_post_pos_settlements_by_id_cancel","summary":"POS valör kaydını iptal eder (fişin ters kaydı).","description":"REST takma adı → `pos.cancel_settlement` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `payments.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["pos"],"parameters":[{"name":"id","in":"path","required":true,"description":"Girdi alanı: `settlement_id`","schema":{"type":"integer"}},{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"pos.cancel_settlement","x-risk":"commit","x-permission":"payments.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/pos_cancel_settlement.input"}}}}}},"/employees":{"get":{"operationId":"rest_get_employees","summary":"Çalışanları listeler (cari türü \"çalışan\"). TCKN ve IBAN her zaman maskeli döner; net ücret yalnız muhasebe/cari yöneticisine.","description":"REST takma adı → `employee.list` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `contacts.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["employee"],"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","description":"Ad, cari kodu veya e-posta"},"description":"Ad, cari kodu veya e-posta"},{"name":"department","in":"query","required":false,"schema":{"type":"string"}},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["active","inactive","all"],"description":"Varsayılan active"},"description":"Varsayılan active"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1}},{"name":"per_page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":500}},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"employee.list","x-risk":"read","x-permission":"contacts.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true},"post":{"operationId":"rest_post_employees","summary":"Çalışan kartı açar: \"çalışan\" türünde cari + bordro bilgileri (TCKN, IBAN, departman, giriş/çıkış, net ücret, gider hesabı). contact_id verilirse mevcut çalışan carisine kart eklenir. Maaş/avans borcu 335.01 hesabında izlenir.","description":"REST takma adı → `employee.create` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Taslak · **İzin:** `contacts.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["employee"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"employee.create","x-risk":"draft","x-permission":"contacts.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","x-rest-alias":true,"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/employee_create.input"}}}}}},"/employees/{id}":{"get":{"operationId":"rest_get_employees_by_id","summary":"Çalışan kartı. TCKN/IBAN maskelidir; reveal=true ve cari yönetim (contacts.manage) izniyle tam değer döner (asistan ve MCP kanalında asla — tam kişisel veri dil modeline gitmez). Muhasebe izniyle açık avans (196) ve personele borç (335) bakiyeleri.","description":"REST takma adı → `employee.get` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `contacts.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["employee"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","description":"Çalışanın cari kimliği (employee.list id)"}},{"name":"reveal","in":"query","required":false,"schema":{"type":"boolean","description":"Tam TCKN/IBAN (contacts.manage gerekir)"},"description":"Tam TCKN/IBAN (contacts.manage gerekir)"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"employee.get","x-risk":"read","x-permission":"contacts.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true},"patch":{"operationId":"rest_patch_employees_by_id","summary":"Çalışan kartını günceller. Verilmeyen alan değişmez; tckn/iban için null değeri siler.","description":"REST takma adı → `employee.update` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Taslak · **İzin:** `contacts.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["employee"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"employee.update","x-risk":"draft","x-permission":"contacts.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/employee_update.input"}}}}}},"/employees/{id}/archive":{"post":{"operationId":"rest_post_employees_by_id_archive","summary":"Çalışanı arşivler: çıkış tarihi yazılır (boşsa bugün); hareketsiz cari arşive kalkar, hareketli cari pasifleşir.","description":"REST takma adı → `employee.archive` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `contacts.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["employee"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"employee.archive","x-risk":"commit","x-permission":"contacts.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/employee_archive.input"}}}}}},"/employees/{id}/advances":{"post":{"operationId":"rest_post_employees_by_id_advances","summary":"Çalışana avans öder (bankadan veya kasadan): 196.01 Personel avansları B / 102|100 A. Avans sonraki bordroda mahsup edilir.","description":"REST takma adı → `employee.advance` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `payments.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["employee"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","description":"Çalışan (cari) kimliği"}},{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"employee.advance","x-risk":"commit","x-permission":"payments.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/employee_advance.input"}}}}}},"/payrolls":{"get":{"operationId":"rest_get_payrolls","summary":"Bordro dönemlerini listeler (dönem, durum, çalışan sayısı, brüt/net/işveren maliyeti toplamları).","description":"REST takma adı → `payroll.list` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `ledger.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["payroll"],"parameters":[{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["draft","posted","cancelled"]}},{"name":"year","in":"query","required":false,"schema":{"type":"integer"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1}},{"name":"per_page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":200}},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"payroll.list","x-risk":"read","x-permission":"ledger.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true},"post":{"operationId":"rest_post_payrolls","summary":"Taslak bordro oluşturur (hesaplama yapmaz: brüt, SGK/işsizlik işçi-işveren, GV, DV dış bordrodan girilir; net = brüt − kesintiler). payroll.post ile 03 §15.10 tahakkuk fişi kesinleşir. Aynı dönemde iptal edilmemiş tek bordro olabilir.","description":"REST takma adı → `payroll.create` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Taslak · **İzin:** `ledger.post` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["payroll"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"payroll.create","x-risk":"draft","x-permission":"ledger.post","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/payroll_create.input"}}}}}},"/payrolls/{id}":{"get":{"operationId":"rest_get_payrolls_by_id","summary":"Bordro ayrıntısı: çalışan satırları, toplamlar, tahakkuk fişi ve \"kime ne kadar ödenecek\" listesi (net − avans; ödeme durumu, IBAN maskeli).","description":"REST takma adı → `payroll.get` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `ledger.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["payroll"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"payroll.get","x-risk":"read","x-permission":"ledger.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true},"patch":{"operationId":"rest_patch_payrolls_by_id","summary":"Taslak bordroyu günceller (lines verilirse tüm satırlar yenilenir). Tahakkuk edilmiş bordro değişmez; iptal edilip yeniden girilir.","description":"REST takma adı → `payroll.update` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Taslak · **İzin:** `ledger.post` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["payroll"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"payroll.update","x-risk":"draft","x-permission":"ledger.post","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/payroll_update.input"}}}}},"delete":{"operationId":"rest_delete_payrolls_by_id","summary":"Taslak bordroyu siler (tahakkuk edilmiş bordro silinmez; payroll.cancel ile ters kayıt alınır).","description":"REST takma adı → `payroll.delete` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `ledger.post` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["payroll"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"payroll.delete","x-risk":"commit","x-permission":"ledger.post","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/payroll_delete.input"}}}}}},"/payrolls/{id}/post":{"post":{"operationId":"rest_post_payrolls_by_id_post","summary":"Bordro tahakkuk fişini kesinleştirir (03 §15.10): 770.01/760.03/740.01 brüt + 770.02 işveren payları B / 335.01 net (çalışan bazında), 196.01 avans mahsubu, 360.03 GV, 360.06 DV, 361.01-04 SGK ve işsizlik A. Idempotent.","description":"REST takma adı → `payroll.post` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `ledger.post` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["payroll"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"payroll.post","x-risk":"commit","x-permission":"ledger.post","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/payroll_post.input"}}}}}},"/payrolls/{id}/pay":{"post":{"operationId":"rest_post_payrolls_by_id_pay","summary":"Tahakkuk edilmiş bordronun maaşlarını öder (P09 ödeme kaydı, çalışan başına 335.01 B / banka veya kasa A; tutar = net − avans). Aynı bordrodan aynı çalışana ikinci ödeme üretilmez.","description":"REST takma adı → `payroll.pay` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `payments.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["payroll"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","description":"Bordro kimliği"}},{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"payroll.pay","x-risk":"commit","x-permission":"payments.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/payroll_pay.input"}}}}}},"/payrolls/{id}/cancel":{"post":{"operationId":"rest_post_payrolls_by_id_cancel","summary":"Tahakkuk edilmiş bordroyu iptal eder (fiş ters kaydı). Bordrodan maaş ödemesi kaydedilmişse önce ödemeler iptal edilmelidir.","description":"REST takma adı → `payroll.cancel` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `ledger.post` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["payroll"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"payroll.cancel","x-risk":"commit","x-permission":"ledger.post","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/payroll_cancel.input"}}}}}},"/edocuments":{"get":{"operationId":"rest_get_edocuments","summary":"Giden veya gelen e-Belgeleri (e-Fatura, e-Arşiv, e-İrsaliye, e-SMM) listeler: modül, durum, muhasebe durumu, karşı taraf ve tarih süzgeçleriyle, sayfalı.","description":"REST takma adı → `edocument.list` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `einvoice.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["edocument"],"parameters":[{"name":"direction","in":"query","required":false,"schema":{"type":"string","enum":["outgoing","incoming"],"description":"outgoing (giden) | incoming (gelen)"},"description":"outgoing (giden) | incoming (gelen)"},{"name":"status","in":"query","required":false,"schema":{"type":"string","description":"queued, sending, delivered, failed, accepted, rejected, unknown, issued, cancelled, received"},"description":"queued, sending, delivered, failed, accepted, rejected, unknown, issued, cancelled, received"},{"name":"accounting_status","in":"query","required":false,"schema":{"type":"string","enum":["pending","drafted","posted","ignored","error"],"description":"Gelen belgede muhasebe durumu"},"description":"Gelen belgede muhasebe durumu"},{"name":"module","in":"query","required":false,"schema":{"type":"string","enum":["einvoice","earchive","edespatch","esmm","emm"]}},{"name":"q","in":"query","required":false,"schema":{"type":"string","description":"Belge no, ETTN, karşı taraf adı veya VKN"},"description":"Belge no, ETTN, karşı taraf adı veya VKN"},{"name":"from","in":"query","required":false,"schema":{"type":"string","format":"date"}},{"name":"to","in":"query","required":false,"schema":{"type":"string","format":"date"}},{"name":"invoice_id","in":"query","required":false,"schema":{"type":"integer"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1}},{"name":"per_page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100}},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"edocument.list","x-risk":"read","x-permission":"einvoice.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true}},"/edocuments/credits":{"get":{"operationId":"rest_get_edocuments_credits","summary":"e-Belge kontör özeti (tanımlı, kullanılan, kalan) — müşteri API anahtarının yetkisi ölçüsünde.","description":"REST takma adı → `edocument.credit_summary` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `einvoice.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["edocument"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"edocument.credit_summary","x-risk":"read","x-permission":"einvoice.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true}},"/edocuments/templates":{"get":{"operationId":"rest_get_edocuments_templates","summary":"e-Belge modülünün (e-Fatura, e-Arşiv, e-İrsaliye, e-SMM, e-MM) sağlayıcıda tanımlı XSLT tasarımlarını listeler. Her modül kendi tasarımını kullanır; e-Fatura tasarım adı e-Arşivde geçersizdir.","description":"REST takma adı → `edocument.templates` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `einvoice.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["edocument"],"parameters":[{"name":"module","in":"query","required":true,"schema":{"type":"string","enum":["einvoice","earchive","edespatch","esmm","emm"],"description":"einvoice | earchive | edespatch | esmm | emm"},"description":"einvoice | earchive | edespatch | esmm | emm"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"edocument.templates","x-risk":"read","x-permission":"einvoice.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true}},"/edocuments/integration-status":{"get":{"operationId":"rest_get_edocuments_integration_status","summary":"e-Belge entegrasyon durumu (anahtarsız): sağlayıcı, ortam (test/canlı), durum, doğrulama ve son yoklama zamanları, etkin modüller ve serileri, son doğrulamanın yetki (scope) özeti.","description":"REST takma adı → `edocument.integration_status` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `einvoice.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["edocument"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"edocument.integration_status","x-risk":"read","x-permission":"einvoice.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true}},"/edocuments/pull":{"post":{"operationId":"rest_post_edocuments_pull","summary":"Gelen e-faturaları beklemeden şimdi çeker (arka planda): yeni belgeler alış faturası ve fişe dönüştürülür.","description":"REST takma adı → `edocument.pull_now` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Taslak · **İzin:** `einvoice.send` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["edocument"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"edocument.pull_now","x-risk":"draft","x-permission":"einvoice.send","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","x-rest-alias":true,"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/edocument_pull_now.input"}}}}}},"/edocuments/{id}":{"get":{"operationId":"rest_get_edocuments_by_id","summary":"Tek e-Belgenin ayrıntısı: durum, belge yanıtı, bağlı fatura ve fiş, olay geçmişi.","description":"REST takma adı → `edocument.get` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `einvoice.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["edocument"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","description":"e-Belge kimliği (edocument.list)"}},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"edocument.get","x-risk":"read","x-permission":"einvoice.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true}},"/edocuments/{id}/answer":{"post":{"operationId":"rest_post_edocuments_by_id_answer","summary":"Gelen TİCARİ FATURA'ya 8 gün içinde KABUL veya RED yanıtı gönderir. RED sonrası bağlı alış faturasının iptali ÖNERİLİR (otomatik yapılmaz).","description":"REST takma adı → `edocument.answer` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `einvoice.send` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["edocument"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","description":"e-Belge kimliği (edocument.list)"}},{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"edocument.answer","x-risk":"commit","x-permission":"einvoice.send","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/edocument_answer.input"}}}}}},"/edocuments/{id}/cancel":{"post":{"operationId":"rest_post_edocuments_by_id_cancel","summary":"Giden e-Belgeyi iptal eder. e-Arşiv: sağlayıcıda iptal (7 günü geçmişse uyarı). e-Fatura: API'de iptal yoktur — sistem dışında (KEP/noter/GİB portalı) yapılan iptal gerekçesiyle işaretlenir. cancel_invoice=true (varsayılan) ise bağlı fatura da iptal edilir ve fişi ters kaydedilir.","description":"REST takma adı → `edocument.cancel` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `einvoice.send` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["edocument"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","description":"e-Belge kimliği (edocument.list)"}},{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"edocument.cancel","x-risk":"commit","x-permission":"einvoice.send","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/edocument_cancel.input"}}}}}},"/edocuments/{id}/ignore":{"post":{"operationId":"rest_post_edocuments_by_id_ignore","summary":"Muhasebeleştirilmemiş gelen e-faturayı \"yoksayıldı\" işaretler (ör. mükerrer veya şirkete ait olmayan belge). Fatura/fiş oluşturmaz.","description":"REST takma adı → `edocument.ignore` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Taslak · **İzin:** `einvoice.send` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["edocument"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","description":"e-Belge kimliği (edocument.list)"}},{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"edocument.ignore","x-risk":"draft","x-permission":"einvoice.send","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/edocument_ignore.input"}}}}}},"/edocuments/{id}/process":{"post":{"operationId":"rest_post_edocuments_by_id_process","summary":"Bekleyen veya hatalı gelen e-faturayı yeniden muhasebeleştirmeyi dener (cari/hesap bilgileri düzeltildikten sonra). Aynı belge ikinci faturayı üretmez.","description":"REST takma adı → `edocument.process` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Taslak · **İzin:** `einvoice.send` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["edocument"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","description":"e-Belge kimliği (edocument.list)"}},{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"edocument.process","x-risk":"draft","x-permission":"einvoice.send","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/edocument_process.input"}}}}}},"/edocuments/{id}/refresh":{"post":{"operationId":"rest_post_edocuments_by_id_refresh","summary":"Giden e-Belgenin güncel durumunu sağlayıcıdan sorgular (İletildi, Kabul, Red, Hata…) ve faturaya yansıtır.","description":"REST takma adı → `edocument.refresh` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Taslak · **İzin:** `einvoice.send` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["edocument"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","description":"e-Belge kimliği (edocument.list)"}},{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"edocument.refresh","x-risk":"draft","x-permission":"einvoice.send","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/edocument_refresh.input"}}}}}},"/edocuments/{id}/download/{format}":{"get":{"operationId":"rest_get_edocuments_by_id_download_by_format","summary":"e-Belge dosyasını döner (xml, pdf, html önizleme ya da e-Fatura/e-İrsaliye zarfı — envelope; içerik base64). HTML, belgeye gömülü betik çalıştırılmadan sunulmalıdır.","description":"REST takma adı → `edocument.download` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `einvoice.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["edocument"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","description":"e-Belge kimliği (edocument.list)"}},{"name":"format","in":"path","required":true,"schema":{"type":"string","enum":["xml","pdf","html","envelope"],"description":"envelope: GİB zarfı (yalnız e-Fatura / e-İrsaliye, sağlayıcıdan)"}},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"edocument.download","x-risk":"read","x-permission":"einvoice.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true}},"/taxpayers/{taxNumber}":{"get":{"operationId":"rest_get_taxpayers_by_taxnumber","summary":"VKN/TCKN'nin GİB e-Fatura mükellefi olup olmadığını ve posta kutusu (PK) etiketlerini sorgular (24 saat önbellek). contact_id verilirse cari kartındaki e-Fatura bilgisi güncellenir.","description":"REST takma adı → `edocument.lookup_taxpayer` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `einvoice.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["edocument"],"parameters":[{"name":"taxNumber","in":"path","required":true,"description":"Girdi alanı: `tax_number`","schema":{"type":"string","description":"VKN (10) veya TCKN (11)"}},{"name":"contact_id","in":"query","required":false,"schema":{"type":"integer","description":"Cari kimliği (VKN karttan okunur)"},"description":"Cari kimliği (VKN karttan okunur)"},{"name":"fresh","in":"query","required":false,"schema":{"type":"boolean","description":"Önbelleği atla"},"description":"Önbelleği atla"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"edocument.lookup_taxpayer","x-risk":"read","x-permission":"einvoice.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true}},"/edocuments/send-bulk":{"post":{"operationId":"rest_post_edocuments_send_bulk","summary":"Seçilen kesilmiş satış faturalarını (ve alış iadelerini) toplu olarak e-Belge gönderim kuyruğuna alır (en fazla 100). Her fatura için alıcının mükellefiyetine göre e-Fatura veya e-Arşiv seçilir; hatalı faturalar atlanır ve sonuç özetinde gerekçesiyle listelenir.","description":"REST takma adı → `edocument.send_bulk` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `einvoice.send` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["edocument"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"edocument.send_bulk","x-risk":"commit","x-permission":"einvoice.send","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/edocument_send_bulk.input"}}}}}},"/edocuments/preview":{"post":{"operationId":"rest_post_edocuments_preview","summary":"Kesilmiş faturanın, sevk irsaliyesinin veya serbest meslek makbuzunun gönderilecek e-Belge görüntüsünü (sağlayıcının XSLT tasarımıyla HTML) gönderim ÖNCESİ üretir. Belge kaydı oluşturmaz, gönderim yapmaz; UBL-TR hatalarını gösterir.","description":"REST takma adı → `edocument.preview` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `einvoice.send` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["edocument"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"edocument.preview","x-risk":"read","x-permission":"einvoice.send","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/edocument_preview.input"}}}}}},"/despatches/{id}/edespatch-plan":{"get":{"operationId":"rest_get_despatches_by_id_edespatch_plan","summary":"Kesilmiş sevk irsaliyesinin e-İrsaliye gönderim planı: alıcının GİB e-İrsaliye mükellefiyeti, posta kutusu (PK) etiketleri ve kayıtlı taşıma bilgisi (şoför/plaka/taşıyıcı). Kayıt oluşturmaz.","description":"REST takma adı → `edespatch.plan` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `einvoice.send` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["edespatch"],"parameters":[{"name":"id","in":"path","required":true,"description":"Girdi alanı: `despatch_id`","schema":{"type":"integer","description":"Sevk irsaliyesi (despatch.list)"}},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"edespatch.plan","x-risk":"read","x-permission":"einvoice.send","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true}},"/despatches/{id}/edespatch":{"post":{"operationId":"rest_post_despatches_by_id_edespatch","summary":"Kesilmiş sevk irsaliyesini e-İrsaliye olarak gönderir (alıcı GİB e-İrsaliye mükellefi olmalı). Şoför (ad, soyad, TCKN) + araç plakası veya taşıyıcı firma bilgisi zorunludur ve irsaliyeye kaydedilir. ETTN gönderimden önce kaydedilir; başarısız belge aynı ETTN ile yeniden denenir.","description":"REST takma adı → `edespatch.send` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `einvoice.send` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["edespatch"],"parameters":[{"name":"id","in":"path","required":true,"description":"Girdi alanı: `despatch_id`","schema":{"type":"integer","description":"Kesilmiş sevk irsaliyesi (despatch.list, kind=out)"}},{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"edespatch.send","x-risk":"commit","x-permission":"einvoice.send","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/edespatch_send.input"}}}}}},"/edocuments/{id}/despatch-lines":{"get":{"operationId":"rest_get_edocuments_by_id_despatch_lines","summary":"Gelen e-İrsaliyenin kalemleri (teslim miktarı, birim, ürün kodu), verilmiş irsaliye yanıtı ve oluşturulan giriş irsaliyesi taslağı.","description":"REST takma adı → `edespatch.lines` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `einvoice.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["edespatch"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","description":"e-Belge kimliği (edocument.list)"}},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"edespatch.lines","x-risk":"read","x-permission":"einvoice.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true}},"/edocuments/{id}/receipt-advice":{"post":{"operationId":"rest_post_edocuments_by_id_receipt_advice","summary":"Gelen e-İrsaliyeye irsaliye yanıtı (ReceiptAdvice) verir: kalem başına kabul edilen ve reddedilen (gerekçeli) miktar; verilmeyen kalem tam kabul sayılır, eksik miktar kendiliğinden hesaplanır. Tümü kabul / tümü red / kısmi kabul. Bağlı giriş irsaliyesi taslağı kabul edilen miktarlara göre güncellenir. Yanıt bir kez verilir.","description":"REST takma adı → `edespatch.answer` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `einvoice.send` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["edespatch"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","description":"Gelen e-İrsaliye kimliği (edocument.list module=edespatch direction=incoming)"}},{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"edespatch.answer","x-risk":"commit","x-permission":"einvoice.send","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/edespatch_answer.input"}}}}}},"/freelance-receipts":{"get":{"operationId":"rest_get_freelance_receipts","summary":"Serbest meslek makbuzlarını (e-SMM) listeler: durum, cari, tarih aralığı ve metin süzgeçleriyle, sayfalı; brüt, KDV, stopaj ve tahsil edilecek tutarlar.","description":"REST takma adı → `freelance_receipt.list` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `invoices.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["freelance_receipt"],"parameters":[{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["draft","issued","cancelled"]}},{"name":"contact_id","in":"query","required":false,"schema":{"type":"integer"}},{"name":"from","in":"query","required":false,"schema":{"type":"string","format":"date"}},{"name":"to","in":"query","required":false,"schema":{"type":"string","format":"date"}},{"name":"q","in":"query","required":false,"schema":{"type":"string","description":"Makbuz no, not veya cari adı"},"description":"Makbuz no, not veya cari adı"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1}},{"name":"per_page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100}},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"freelance_receipt.list","x-risk":"read","x-permission":"invoices.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true},"post":{"operationId":"rest_post_freelance_receipts","summary":"Taslak serbest meslek makbuzu oluşturur (fiş üretmez). Stopaj oranı verilmezse VKN'li müşteride %20, TCKN'li kişide 0 uygulanır. client_key ile aynı istek ikinci makbuz oluşturmaz.","description":"REST takma adı → `freelance_receipt.create` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Taslak · **İzin:** `invoices.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["freelance_receipt"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"freelance_receipt.create","x-risk":"draft","x-permission":"invoices.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/freelance_receipt_create.input"}}}}}},"/freelance-receipts/calculate":{"post":{"operationId":"rest_post_freelance_receipts_calculate","summary":"Serbest meslek makbuzu tutarlarını hesaplar (kayıt oluşturmaz): brüt, KDV, gelir vergisi stopajı, net ve tahsil edilecek tutar.","description":"REST takma adı → `freelance_receipt.calculate` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `invoices.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["freelance_receipt"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"freelance_receipt.calculate","x-risk":"read","x-permission":"invoices.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/freelance_receipt_calculate.input"}}}}}},"/freelance-receipts/{id}":{"get":{"operationId":"rest_get_freelance_receipts_by_id","summary":"Serbest meslek makbuzunun ayrıntısı: kalemler, brüt/KDV/stopaj/net, fiş ve e-SMM durumu.","description":"REST takma adı → `freelance_receipt.get` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `invoices.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["freelance_receipt"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"freelance_receipt.get","x-risk":"read","x-permission":"invoices.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true},"patch":{"operationId":"rest_patch_freelance_receipts_by_id","summary":"Taslak serbest meslek makbuzunu günceller; kalemler gönderilirse tümüyle değişir.","description":"REST takma adı → `freelance_receipt.update` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Taslak · **İzin:** `invoices.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["freelance_receipt"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"freelance_receipt.update","x-risk":"draft","x-permission":"invoices.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/freelance_receipt_update.input"}}}}},"delete":{"operationId":"rest_delete_freelance_receipts_by_id","summary":"Taslak serbest meslek makbuzunu siler (kesilmiş makbuz silinmez, iptal edilir).","description":"REST takma adı → `freelance_receipt.delete` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `invoices.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["freelance_receipt"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"freelance_receipt.delete","x-risk":"commit","x-permission":"invoices.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/freelance_receipt_delete.input"}}}}}},"/freelance-receipts/{id}/issue":{"post":{"operationId":"rest_post_freelance_receipts_by_id_issue","summary":"Taslak serbest meslek makbuzunu keser: numara (SM-YYYY-…) verir ve fişi yazar — 120 B tahsil edilecek, 193.03 B stopaj / 600.02 A brüt, 391 A KDV. Kesilmiş makbuz için aynı sonucu döner.","description":"REST takma adı → `freelance_receipt.issue` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `invoices.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["freelance_receipt"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"freelance_receipt.issue","x-risk":"commit","x-permission":"invoices.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/freelance_receipt_issue.input"}}}}}},"/freelance-receipts/{id}/cancel":{"post":{"operationId":"rest_post_freelance_receipts_by_id_cancel","summary":"Kesilmiş serbest meslek makbuzunu iptal eder: e-SMM gönderilmişse önce sağlayıcıda iptal edilir (e-Belge gönderme yetkisi gerekir), ardından fiş ters kaydedilir.","description":"REST takma adı → `freelance_receipt.cancel` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `invoices.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["freelance_receipt"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"freelance_receipt.cancel","x-risk":"commit","x-permission":"invoices.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/freelance_receipt_cancel.input"}}}}}},"/freelance-receipts/{id}/esmm":{"post":{"operationId":"rest_post_freelance_receipts_by_id_esmm","summary":"Kesilmiş serbest meslek makbuzunu e-SMM olarak gönderir (NES e-Serbest Meslek Makbuzu). ETTN gönderimden önce kaydedilir; gönderim kuyrukta yapılır, başarısız belge aynı ETTN ile yeniden denenir.","description":"REST takma adı → `esmm.send` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `einvoice.send` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["esmm"],"parameters":[{"name":"id","in":"path","required":true,"description":"Girdi alanı: `receipt_id`","schema":{"type":"integer","description":"Kesilmiş serbest meslek makbuzu (freelance_receipt.list)"}},{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"esmm.send","x-risk":"commit","x-permission":"einvoice.send","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/esmm_send.input"}}}}}},"/bank-postings":{"get":{"operationId":"rest_get_bank_postings","summary":"Banka hareketlerinin muhasebe eşleştirme durumunu listeler (bekleyen, önerilen, kesinleşen, yoksayılan, hatalı); önerilen hesap, kural, güven, önerilen cari (posting.contact) ve fatura tahsisleri dahil. Cari önerisi yoksa contact_candidates (fatura/VKN/IBAN/unvan/açıklama eşleşmesi) verilir: cari için contact_list aramadan önce bunları kullan.","description":"REST takma adı → `bank_posting.list` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `ledger.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["bank_posting"],"parameters":[{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["pending","proposed","posted","ignored","error"],"description":"Varsayılan proposed (onay bekleyen öneriler)"},"description":"Varsayılan proposed (onay bekleyen öneriler)"},{"name":"bank_account_id","in":"query","required":false,"schema":{"type":"integer"}},{"name":"direction","in":"query","required":false,"schema":{"type":"string","enum":["in","out"]}},{"name":"from","in":"query","required":false,"schema":{"type":"string","format":"date"}},{"name":"to","in":"query","required":false,"schema":{"type":"string","format":"date"}},{"name":"q","in":"query","required":false,"schema":{"type":"string","description":"Açıklama / karşı taraf / referans araması"},"description":"Açıklama / karşı taraf / referans araması"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1}},{"name":"per_page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":200}},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"bank_posting.list","x-risk":"read","x-permission":"ledger.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true}},"/bank-postings/open-items":{"get":{"operationId":"rest_get_bank_postings_open_items","summary":"Banka hareketiyle eşleştirilebilecek açık faturaları listeler (cari + yön).","description":"REST takma adı → `bank_posting.open_items` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `ledger.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["bank_posting"],"parameters":[{"name":"contact_id","in":"query","required":true,"schema":{"type":"integer"}},{"name":"direction","in":"query","required":true,"schema":{"type":"string","enum":["in","out"]}},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"bank_posting.open_items","x-risk":"read","x-permission":"ledger.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true}},"/bank-postings/process":{"post":{"operationId":"rest_post_bank_postings_process","summary":"Banka hareketlerini eşleştirme kurallarından geçirerek muhasebe önerisi/fişi üretir (en fazla 200 hareket veya bekleyenlerin tümü).","description":"REST takma adı → `bank_posting.process` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Taslak · **İzin:** `ledger.post` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["bank_posting"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"bank_posting.process","x-risk":"draft","x-permission":"ledger.post","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","x-rest-alias":true,"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/bank_posting_process.input"}}}}}},"/bank-postings/approve":{"post":{"operationId":"rest_post_bank_postings_approve","summary":"Seçili önerilmiş banka hareketlerini (en fazla 200) önerildiği gibi onaylayıp kesinleştirir; askı hesabı ve cari seçimi gerektiren öneriler atlanır.","description":"REST takma adı → `bank_posting.approve_many` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `ledger.post` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["bank_posting"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"bank_posting.approve_many","x-risk":"commit","x-permission":"ledger.post","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/bank_posting_approve_many.input"}}}}}},"/bank-postings/settings":{"put":{"operationId":"rest_put_bank_postings_settings","summary":"Otomatik banka muhasebeleştirmesini başlangıç tarihiyle açar veya kapatır; yalnız başlangıç tarihinden sonraki hareketler işlenir.","description":"REST takma adı → `bank_posting.settings` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `accounts_chart.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["bank_posting"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"bank_posting.settings","x-risk":"commit","x-permission":"accounts_chart.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/bank_posting_settings.input"}}}}}},"/bank-postings/{bankTransactionId}/approve":{"post":{"operationId":"rest_post_bank_postings_by_banktransactionid_approve","summary":"Banka hareketinin muhasebe önerisini onaylar ve fişi kesinleştirir; karşı hesap (account_id), cari (contact_id) veya fatura tahsisleri (allocations) değiştirilebilir. allocations verirken contact_id ZORUNLU: bank_posting_list satırındaki posting.contact.id ya da contact_candidates[].id kullan (contact_list tekrarına gerek yok); açık faturalar için bank_posting_open_items.","description":"REST takma adı → `bank_posting.approve` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `ledger.post` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["bank_posting"],"parameters":[{"name":"bankTransactionId","in":"path","required":true,"description":"Girdi alanı: `bank_transaction_id`","schema":{"type":"integer","description":"Banka hareketi kimliği (bank_transactions.id)"}},{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"bank_posting.approve","x-risk":"commit","x-permission":"ledger.post","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/bank_posting_approve.input"}}}}}},"/bank-postings/{bankTransactionId}/ignore":{"post":{"operationId":"rest_post_bank_postings_by_banktransactionid_ignore","summary":"Banka hareketini yoksayar; muhasebe fişi üretilmez (varsa taslak silinir).","description":"REST takma adı → `bank_posting.ignore` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `ledger.post` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["bank_posting"],"parameters":[{"name":"bankTransactionId","in":"path","required":true,"description":"Girdi alanı: `bank_transaction_id`","schema":{"type":"integer","description":"Banka hareketi kimliği (bank_transactions.id)"}},{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"bank_posting.ignore","x-risk":"commit","x-permission":"ledger.post","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/bank_posting_ignore.input"}}}}}},"/bank-postings/{bankTransactionId}/reprocess":{"post":{"operationId":"rest_post_bank_postings_by_banktransactionid_reprocess","summary":"Banka hareketinin muhasebe önerisini yeniden üretir (taslak fiş silinir, kurallar yeniden uygulanır).","description":"REST takma adı → `bank_posting.reprocess` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Taslak · **İzin:** `ledger.post` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["bank_posting"],"parameters":[{"name":"bankTransactionId","in":"path","required":true,"description":"Girdi alanı: `bank_transaction_id`","schema":{"type":"integer","description":"Banka hareketi kimliği (bank_transactions.id)"}},{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"bank_posting.reprocess","x-risk":"draft","x-permission":"ledger.post","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/bank_posting_reprocess.input"}}}}}},"/bank-reconciliation":{"get":{"operationId":"rest_get_bank_reconciliation","summary":"Banka hesaplarının muhasebe (102) bakiyesini bankadan gelen bakiyeyle karşılaştırır ve farkı gösterir.","description":"REST takma adı → `bank_reconciliation.status` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `ledger.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["bank_reconciliation"],"parameters":[{"name":"bank_account_id","in":"query","required":false,"schema":{"type":"integer"}},{"name":"as_of","in":"query","required":false,"schema":{"type":"string","format":"date","description":"Muhasebe bakiyesi tarihi (varsayılan bugün)"},"description":"Muhasebe bakiyesi tarihi (varsayılan bugün)"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"bank_reconciliation.status","x-risk":"read","x-permission":"ledger.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true}},"/bank-accounts/{id}/link-ledger":{"post":{"operationId":"rest_post_bank_accounts_by_id_link_ledger","summary":"Banka hesabını muhasebe hesabına bağlar (TL 102.01.xxx, döviz 102.02.xxx). bank_account_id ya da all:true verilir; zaten bağlı hesaplar değişmez.","description":"REST takma adı → `bank_account.link_ledger` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Taslak · **İzin:** `accounts_chart.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["bank_account"],"parameters":[{"name":"id","in":"path","required":true,"description":"Girdi alanı: `bank_account_id`","schema":{"type":"integer"}},{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"bank_account.link_ledger","x-risk":"draft","x-permission":"accounts_chart.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","x-rest-alias":true,"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/bank_account_link_ledger.input"}}}}}},"/posting-rules":{"get":{"operationId":"rest_get_posting_rules","summary":"Eşleştirme kurallarını (banka hareketi, alış/satış kalemi → hesap) öncelik sırasıyla listeler.","description":"REST takma adı → `posting_rule.list` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `ledger.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["posting_rule"],"parameters":[{"name":"scope","in":"query","required":false,"schema":{"type":"string","enum":["bank","purchase_line","sales_line"]}},{"name":"scopes[]","in":"query","required":false,"schema":{"type":"array","items":{"type":"string","enum":["bank","purchase_line","sales_line"]}}},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["active","suggested","rejected"]}},{"name":"origin","in":"query","required":false,"schema":{"type":"string","enum":["user","learned"]}},{"name":"q","in":"query","required":false,"schema":{"type":"string"}},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"posting_rule.list","x-risk":"read","x-permission":"ledger.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true},"post":{"operationId":"rest_post_posting_rules","summary":"Yeni eşleştirme kuralı ekler (koşullar → hesap). Otomatik muhasebeleştirmeyi etkilediği için onay gerektirir.","description":"REST takma adı → `posting_rule.create` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `ledger.post` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["posting_rule"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"posting_rule.create","x-risk":"commit","x-permission":"ledger.post","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/posting_rule_create.input"}}}}}},"/posting-rules/{id}":{"patch":{"operationId":"rest_patch_posting_rules_by_id","summary":"Eşleştirme kuralını günceller, etkinleştirir/devre dışı bırakır veya öğrenilmiş öneriyi onaylar/reddeder.","description":"REST takma adı → `posting_rule.update` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `ledger.post` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["posting_rule"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"posting_rule.update","x-risk":"commit","x-permission":"ledger.post","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/posting_rule_update.input"}}}}},"delete":{"operationId":"rest_delete_posting_rules_by_id","summary":"Eşleştirme kuralını siler.","description":"REST takma adı → `posting_rule.delete` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `ledger.post` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["posting_rule"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"posting_rule.delete","x-risk":"commit","x-permission":"ledger.post","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/posting_rule_delete.input"}}}}}},"/posting-rules/{id}/accept":{"post":{"operationId":"rest_post_posting_rules_by_id_accept","summary":"Öğrenilmiş eşleştirme kuralı önerisini kabul edip etkinleştirir; sonraki banka hareketleri bu kuralla eşleşir.","description":"REST takma adı → `posting_rule.accept_suggestion` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `ledger.post` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["posting_rule"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","description":"posting_rules.id (status=suggested)"}},{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"posting_rule.accept_suggestion","x-risk":"commit","x-permission":"ledger.post","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/posting_rule_accept_suggestion.input"}}}}}},"/imports":{"get":{"operationId":"rest_get_imports","summary":"Şirketin veri aktarımı işlerini (en yeni önce) durum ve satır sayılarıyla listeler.","description":"REST takma adı → `import.list` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `imports.run` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["import"],"parameters":[{"name":"type","in":"query","required":false,"schema":{"type":"string","description":"Aktarım türü (import.types)"},"description":"Aktarım türü (import.types)"},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["uploaded","mapped","validating","validated","committing","committed","failed","cancelled"]}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1}},{"name":"per_page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100}},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"import.list","x-risk":"read","x-permission":"imports.run","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true},"post":{"operationId":"rest_post_imports","summary":"Excel/CSV (banka ekstresinde PDF de) dosyasını yükler, başlık satırını ve kolon eşlemesini önerir, ilk satırları önizler. API'de multipart/form-data: type, profile, file (+ bank_account_id).","description":"REST takma adı → `import.upload` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Taslak · **İzin:** `imports.run` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["import"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"import.upload","x-risk":"draft","x-permission":"imports.run","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/import_upload.input"}},"multipart/form-data":{"schema":{"$ref":"#/components/schemas/import_upload.input"}}}}}},"/imports/types":{"get":{"operationId":"rest_get_imports_types","summary":"Veri aktarımı türlerini (hesap planı, cari, ürün, açılış, fiş, fatura, banka ekstresi), alanlarını ve Luca/Logo/Paraşüt profillerini listeler.","description":"REST takma adı → `import.types` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `imports.run` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["import"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"import.types","x-risk":"read","x-permission":"imports.run","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true}},"/imports/{id}":{"get":{"operationId":"rest_get_imports_by_id","summary":"Aktarım işinin durumunu, satır sayılarını, ilk 200 satırı ve hatalı satırları döner (ilerleme takibi için).","description":"REST takma adı → `import.get` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `imports.run` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["import"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","minimum":1,"description":"Aktarım işi kimliği (import.upload yanıtındaki import.id)"}},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["pending","valid","invalid","committed","skipped","duplicate"],"description":"Satır süzgeci"},"description":"Satır süzgeci"},{"name":"rows","in":"query","required":false,"schema":{"type":"boolean","description":"false → yalnız özet (polling)"},"description":"false → yalnız özet (polling)"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"import.get","x-risk":"read","x-permission":"imports.run","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true}},"/imports/{id}/mapping":{"put":{"operationId":"rest_put_imports_by_id_mapping","summary":"Aktarımın kolon eşlemesini (hedef alan → dosyadaki kolon adı), başlık satırını, Excel sayfasını ve seçeneklerini kaydeder.","description":"REST takma adı → `import.map` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Taslak · **İzin:** `imports.run` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["import"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","minimum":1,"description":"Aktarım işi kimliği (import.upload yanıtındaki import.id)"}},{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"import.map","x-risk":"draft","x-permission":"imports.run","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/import_map.input"}}}}}},"/imports/{id}/validate":{"post":{"operationId":"rest_post_imports_by_id_validate","summary":"Aktarım satırlarını arka planda doğrular (tip dönüşümü, zorunlu alan, hesap/cari kontrolü, fiş dengesi, mükerrer). Sonuç import.get ile izlenir.","description":"REST takma adı → `import.validate` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Taslak · **İzin:** `imports.run` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["import"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","minimum":1,"description":"Aktarım işi kimliği (import.upload yanıtındaki import.id)"}},{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"import.validate","x-risk":"draft","x-permission":"imports.run","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/import_validate.input"}}}}}},"/imports/{id}/commit":{"post":{"operationId":"rest_post_imports_by_id_commit","summary":"Doğrulanmış geçerli satırları kalıcı kayda dönüştürür (hesap, cari, ürün, fiş, fatura, banka hareketi). Doğrulanmamış iş önce doğrulanır. Tekrar çalıştırılırsa kayıt çoğalmaz.","description":"REST takma adı → `import.commit` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `imports.run` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["import"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","minimum":1,"description":"Aktarım işi kimliği (import.upload yanıtındaki import.id)"}},{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"import.commit","x-risk":"commit","x-permission":"imports.run","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/import_commit.input"}}}}}},"/imports/{id}/cancel":{"post":{"operationId":"rest_post_imports_by_id_cancel","summary":"Henüz aktarılmamış bir aktarım işini iptal eder (kayıt oluşturulmaz).","description":"REST takma adı → `import.cancel` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Taslak · **İzin:** `imports.run` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["import"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","minimum":1,"description":"Aktarım işi kimliği (import.upload yanıtındaki import.id)"}},{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"import.cancel","x-risk":"draft","x-permission":"imports.run","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/import_cancel.input"}}}}}},"/closing/checklist":{"get":{"operationId":"rest_get_closing_checklist","summary":"Yıl sonu kapanış ön kontrollerini listeler: askı hesapları, taslak fiş, mizan dengesi, ay kilitleri, KDV mahsubu, SMM, kur değerleme, yansıtma ve gelir tablosu hesapları.","description":"REST takma adı → `closing.checklist` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `ledger.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["closing"],"parameters":[{"name":"year","in":"query","required":true,"schema":{"type":"integer","description":"Mali yıl (ör. 2026)"},"description":"Mali yıl (ör. 2026)"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"closing.checklist","x-risk":"read","x-permission":"ledger.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true}},"/closing/overview":{"get":{"operationId":"rest_get_closing_overview","summary":"Seçilen yıl veya ay için dönem sonu adımlarını sırasıyla, son önizleme / kayıt durumlarıyla listeler.","description":"REST takma adı → `closing.overview` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `ledger.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["closing"],"parameters":[{"name":"year","in":"query","required":true,"schema":{"type":"integer"}},{"name":"period_no","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":12,"description":"Boşsa yıl sonu adımları"},"description":"Boşsa yıl sonu adımları"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"closing.overview","x-risk":"read","x-permission":"ledger.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true}},"/closing/preview":{"post":{"operationId":"rest_post_closing_preview","summary":"Bir dönem sonu adımını (KDV mahsubu, kur değerleme, amortisman, SMM, yansıtma, 690 devri, vergi karşılığı, net kâr, kapanış, açılış, 590→570) önizler; önerilen fiş satırlarını kaydeder ama fiş yazmaz.","description":"REST takma adı → `closing.preview` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Taslak · **İzin:** `ledger.close` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["closing"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"closing.preview","x-risk":"draft","x-permission":"ledger.close","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/closing_preview.input"}}}}}},"/closing/runs/{id}/post":{"post":{"operationId":"rest_post_closing_runs_by_id_post","summary":"Önizlenen dönem sonu adımının fişini kesinleştirir. Bakiyeler önizlemeden sonra değiştiyse reddedilir; aynı dönem için ikinci fiş üretilmez.","description":"REST takma adı → `closing.post` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `ledger.close` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["closing"],"parameters":[{"name":"id","in":"path","required":true,"description":"Girdi alanı: `run_id`","schema":{"type":"integer","description":"closing.preview çıktısındaki run.id"}},{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"closing.post","x-risk":"commit","x-permission":"ledger.close","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/closing_post.input"}}}}}},"/closing/reopen-year":{"post":{"operationId":"rest_post_closing_reopen_year","summary":"Kapanmış mali yılı yeniden açar: kapanış fişi ile sonraki yılın açılış ve 590→570 virman fişleri ters kaydedilir, Aralık kilidi açılır. Yalnız şirket sahibi; gerekçe zorunlu.","description":"REST takma adı → `closing.reopen_year` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `ledger.close` · **Kanallar:** web, api, cli, mcp","tags":["closing"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"closing.reopen_year","x-risk":"commit","x-permission":"ledger.close","x-channels":["web","api","cli","mcp"],"x-idempotency":"required","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/closing_reopen_year.input"}}}}}},"/closing/reopen-year/preview":{"get":{"operationId":"rest_get_closing_reopen_year_preview","summary":"Kapanmış mali yılı yeniden açmanın önizlemesi (salt okunur): ters kaydedilecek fişler, engeller ve kimin yapabileceği. Yeniden açma işleminin kendisi asistandan çalıştırılamaz; şirket sahibi Dönem Sonu ekranından yapar.","description":"REST takma adı → `closing.reopen_year_preview` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `ledger.close` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["closing"],"parameters":[{"name":"year","in":"query","required":true,"schema":{"type":"integer","description":"Yeniden açılması düşünülen kapanmış mali yıl"},"description":"Yeniden açılması düşünülen kapanmış mali yıl"},{"name":"reverse_result_steps","in":"query","required":false,"schema":{"type":"boolean","description":"true: net kâr, vergi karşılığı, 690 devri ve 7/A yansıtma fişleri de ters kaydedilecek gibi önizle"},"description":"true: net kâr, vergi karşılığı, 690 devri ve 7/A yansıtma fişleri de ters kaydedilecek gibi önizle"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"closing.reopen_year_preview","x-risk":"read","x-permission":"ledger.close","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true}},"/fixed-assets":{"get":{"operationId":"rest_get_fixed_assets","summary":"Sabit kıymet kartlarını maliyet, birikmiş amortisman ve net defter değeriyle listeler.","description":"REST takma adı → `fixed_asset.list` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `ledger.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["fixed_asset"],"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","description":"Kod veya ad araması"},"description":"Kod veya ad araması"},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["active","fully_depreciated","disposed","all"]}},{"name":"page","in":"query","required":false,"schema":{"type":"integer"}},{"name":"per_page","in":"query","required":false,"schema":{"type":"integer","maximum":200}},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"fixed_asset.list","x-risk":"read","x-permission":"ledger.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true},"post":{"operationId":"rest_post_fixed_assets","summary":"Sabit kıymet kartı açar (maliyet, hesaplar, faydalı ömür, yöntem). Fiş üretmez; amortisman dönem sonu adımıyla ayrılır.","description":"REST takma adı → `fixed_asset.create` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Taslak · **İzin:** `ledger.post` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["fixed_asset"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"fixed_asset.create","x-risk":"draft","x-permission":"ledger.post","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/fixed_asset_create.input"}}}}}},"/fixed-assets/invoice-candidates":{"get":{"operationId":"rest_get_fixed_assets_invoice_candidates","summary":"Alış faturasının sabit kıymet kartı açılabilecek kalemleri (25x/26x hesaplı), TL maliyetleri ve açılmış kartları.","description":"REST takma adı → `fixed_asset.invoice_candidates` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `ledger.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["fixed_asset"],"parameters":[{"name":"invoice_id","in":"query","required":true,"schema":{"type":"integer"}},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"fixed_asset.invoice_candidates","x-risk":"read","x-permission":"ledger.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true}},"/fixed-assets/from-invoice":{"post":{"operationId":"rest_post_fixed_assets_from_invoice","summary":"Kesilmiş alış faturasının 25x/26x kaleminden sabit kıymet kartı açar (maliyet = kalem net TL + indirilemeyen KDV; alış tarihi = fatura tarihi). Fiş üretmez (fatura fişi 25x'e zaten yazdı); aynı kalemden ikinci kart açılamaz.","description":"REST takma adı → `fixed_asset.create_from_invoice` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Taslak · **İzin:** `ledger.post` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["fixed_asset"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"fixed_asset.create_from_invoice","x-risk":"draft","x-permission":"ledger.post","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/fixed_asset_create_from_invoice.input"}}}}}},"/fixed-assets/{id}":{"get":{"operationId":"rest_get_fixed_assets_by_id","summary":"Sabit kıymet kartını getirir.","description":"REST takma adı → `fixed_asset.get` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `ledger.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["fixed_asset"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"fixed_asset.get","x-risk":"read","x-permission":"ledger.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true},"patch":{"operationId":"rest_patch_fixed_assets_by_id","summary":"Sabit kıymet kartını günceller. Amortisman ayrılmış kıymette yalnız ad, kod, not, masraf merkezi ve gider hesabı değişebilir.","description":"REST takma adı → `fixed_asset.update` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Taslak · **İzin:** `ledger.post` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["fixed_asset"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"fixed_asset.update","x-risk":"draft","x-permission":"ledger.post","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/fixed_asset_update.input"}}}}}},"/fixed-assets/{id}/schedule":{"get":{"operationId":"rest_get_fixed_assets_by_id_schedule","summary":"Sabit kıymetin yıllara göre amortisman tablosunu (yıllık tutar, birikmiş, net değer, ayrılmış tutar) verir.","description":"REST takma adı → `fixed_asset.schedule` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `ledger.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["fixed_asset"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"fixed_asset.schedule","x-risk":"read","x-permission":"ledger.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true}},"/fixed-assets/{id}/dispose":{"post":{"operationId":"rest_post_fixed_assets_by_id_dispose","summary":"Sabit kıymeti satış veya hurda ile elden çıkarır: 102/120 B (bedel + KDV), 257 B / 25x A, 391 A (KDV), fark 679 (kâr) veya 689 (zarar).","description":"REST takma adı → `fixed_asset.dispose` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `ledger.post` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["fixed_asset"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"fixed_asset.dispose","x-risk":"commit","x-permission":"ledger.post","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/fixed_asset_dispose.input"}}}}}},"/custom-reports/run":{"post":{"operationId":"rest_post_custom_reports_run","summary":"Özel rapor DSL tanımını (kaynak, boyutlar, ölçüler, filtreler) veya kayıtlı bir raporu (id) çalıştırır; kolonlar, satırlar ve genel toplamları döner. Alan adları için önce custom_report.sources çağırın.","description":"REST takma adı → `custom_report.run` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `custom_reports.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["custom_report"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"custom_report.run","x-risk":"read","x-permission":"custom_reports.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true,"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/custom_report_run.input"}}}}}},"/custom-reports/sources":{"get":{"operationId":"rest_get_custom_reports_sources","summary":"Özel rapor kaynaklarını ve alan sözlüğünü (alan anahtarı, etiket, tip, kullanılabilir operatör ve toplama fonksiyonları) listeler. custom_report.run öncesi alan adlarını öğrenmek için kullanın.","description":"REST takma adı → `custom_report.sources` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `custom_reports.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["custom_report"],"parameters":[{"name":"source","in":"query","required":false,"schema":{"type":"string","description":"Yalnız bu kaynağın alanları (boşsa tümü)"},"description":"Yalnız bu kaynağın alanları (boşsa tümü)"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"custom_report.sources","x-risk":"read","x-permission":"custom_reports.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true}},"/custom-reports":{"get":{"operationId":"rest_get_custom_reports","summary":"Kayıtlı özel raporları listeler (paylaşılanlar ve kendi raporlarınız).","description":"REST takma adı → `custom_report.list` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `custom_reports.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["custom_report"],"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","description":"Ad içinde arama"},"description":"Ad içinde arama"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"custom_report.list","x-risk":"read","x-permission":"custom_reports.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true},"post":{"operationId":"rest_post_custom_reports","summary":"Özel rapor tanımını adıyla kaydeder; isteğe bağlı grafik ayarı, paylaşım ve zamanlanmış e-posta gönderimi (yalnız şirket üyelerine).","description":"REST takma adı → `custom_report.save` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Taslak · **İzin:** `custom_reports.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["custom_report"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"custom_report.save","x-risk":"draft","x-permission":"custom_reports.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/custom_report_save.input"}}}}}},"/custom-reports/{id}":{"get":{"operationId":"rest_get_custom_reports_by_id","summary":"Kayıtlı bir özel raporun tanımını, grafik ayarını ve zamanlamasını getirir.","description":"REST takma adı → `custom_report.get` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `custom_reports.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["custom_report"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"custom_report.get","x-risk":"read","x-permission":"custom_reports.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true},"patch":{"operationId":"rest_patch_custom_reports_by_id","summary":"Kayıtlı özel raporun adını, tanımını, grafik ayarını, paylaşımını veya zamanlamasını günceller.","description":"REST takma adı → `custom_report.update` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Taslak · **İzin:** `custom_reports.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["custom_report"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"custom_report.update","x-risk":"draft","x-permission":"custom_reports.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/custom_report_update.input"}}}}},"delete":{"operationId":"rest_delete_custom_reports_by_id","summary":"Kayıtlı özel raporu siler (zamanlanmış gönderimi de durur).","description":"REST takma adı → `custom_report.delete` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `custom_reports.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["custom_report"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"custom_report.delete","x-risk":"commit","x-permission":"custom_reports.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/custom_report_delete.input"}}}}}},"/custom-reports/{id}/run":{"get":{"operationId":"rest_get_custom_reports_by_id_run","summary":"Özel rapor DSL tanımını (kaynak, boyutlar, ölçüler, filtreler) veya kayıtlı bir raporu (id) çalıştırır; kolonlar, satırlar ve genel toplamları döner. Alan adları için önce custom_report.sources çağırın.","description":"REST takma adı → `custom_report.run` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `custom_reports.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["custom_report"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","description":"Kayıtlı rapor kimliği (definition yerine)"}},{"name":"definition","in":"query","required":false,"schema":{"type":"object","description":"Rapor tanımı. Kaynak ve alan anahtarlarını custom_report.sources ile öğrenin.","required":["source"],"additionalProperties":false,"properties":{"source":{"type":"string","description":"Kaynak anahtarı (ör. ledger_lines, invoices, bank_transactions)"},"dimensions":{"type":"array","maxItems":4,"items":{"type":"object","required":["field"],"additionalProperties":false,"properties":{"field":{"type":"string"},"bucket":{"type":"string","enum":["day","week","month","quarter","year"],"description":"Yalnız tarih alanlarında: gün/hafta/ay/çeyrek/yıl"},"as":{"type":"string","pattern":"^[a-z_][a-z0-9_]{0,30}$"}}}},"measures":{"type":"array","maxItems":6,"items":{"type":"object","required":["agg"],"additionalProperties":false,"properties":{"field":{"type":"string","description":"count için boş bırakılabilir"},"agg":{"type":"string","enum":["sum","count","count_distinct","avg","min","max"]},"as":{"type":"string","pattern":"^[a-z_][a-z0-9_]{0,30}$"}}}},"filters":{"type":"array","maxItems":10,"items":{"type":"object","required":["field","op"],"additionalProperties":false,"properties":{"field":{"type":"string"},"op":{"type":"string","enum":["eq","neq","in","not_in","gt","gte","lt","lte","between","contains","starts_with","is_null","not_null"]},"value":{"description":"Tek değer; in/not_in için liste; between için [başlangıç, bitiş]. Tarihler YYYY-AA-GG, tutarlar \"1234.50\""}}}},"sort":{"type":"array","maxItems":5,"items":{"type":"object","required":["field"],"additionalProperties":false,"properties":{"field":{"type":"string","description":"Seçili bir boyut/ölçü takma adı"},"dir":{"type":"string","enum":["asc","desc"]}}}},"limit":{"type":"integer","minimum":1,"maximum":1000}}},"style":"deepObject","explode":true,"description":"Rapor tanımı. Kaynak ve alan anahtarlarını custom_report.sources ile öğrenin."},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"custom_report.run","x-risk":"read","x-permission":"custom_reports.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true}},"/journal-templates":{"get":{"operationId":"rest_get_journal_templates","summary":"Hızlı fiş şablonlarını listeler (KDV ayırma, Z raporu, tahakkuk, karşılık, kâr dağıtımı, bordro…). İlk çağrıda hazır şablonlar açılır.","description":"REST takma adı → `journal_template.list` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `ledger.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["journal_template"],"parameters":[{"name":"include_inactive","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"category","in":"query","required":false,"schema":{"type":"string","enum":["vat_split","z_report","accrual","provision","profit_distribution","payroll_simple","custom"]}},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"journal_template.list","x-risk":"read","x-permission":"ledger.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true},"post":{"operationId":"rest_post_journal_templates","summary":"Yeni hızlı fiş şablonu tanımlar (girdiler + satırlar; tutarlar güvenli ifade dilinde).","description":"REST takma adı → `journal_template.create` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Taslak · **İzin:** `accounts_chart.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["journal_template"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"journal_template.create","x-risk":"draft","x-permission":"accounts_chart.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/journal_template_create.input"}}}}}},"/journal-templates/{id}":{"get":{"operationId":"rest_get_journal_templates_by_id","summary":"Tek hızlı fiş şablonunun girdilerini ve satır tanımlarını getirir.","description":"REST takma adı → `journal_template.get` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `ledger.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["journal_template"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"journal_template.get","x-risk":"read","x-permission":"ledger.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true},"patch":{"operationId":"rest_patch_journal_templates_by_id","summary":"Hızlı fiş şablonunu günceller (ad, kategori, girdiler, satırlar, aktiflik).","description":"REST takma adı → `journal_template.update` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Taslak · **İzin:** `accounts_chart.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["journal_template"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"journal_template.update","x-risk":"draft","x-permission":"accounts_chart.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/journal_template_update.input"}}}}},"delete":{"operationId":"rest_delete_journal_templates_by_id","summary":"Hızlı fiş şablonunu siler (şablondan üretilmiş fişler etkilenmez; hazır şablon yeniden açılmaz).","description":"REST takma adı → `journal_template.delete` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `accounts_chart.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["journal_template"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"journal_template.delete","x-risk":"commit","x-permission":"accounts_chart.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/journal_template_delete.input"}}}}}},"/journal-templates/{id}/preview":{"post":{"operationId":"rest_post_journal_templates_by_id_preview","summary":"Şablonu verilen girdilerle hesaplar ve üretilecek fiş satırlarını doğrulama sonucuyla döndürür (fiş yazmaz).","description":"REST takma adı → `journal_template.preview` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `ledger.post` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["journal_template"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","description":"Şablon kimliği"}},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"journal_template.preview","x-risk":"read","x-permission":"ledger.post","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/journal_template_preview.input"}}}}}},"/journal-templates/{id}/apply":{"post":{"operationId":"rest_post_journal_templates_by_id_apply","summary":"Şablondan TASLAK yevmiye fişi oluşturur. Kesinleştirmek için journal.submit / journal.post çağrılır.","description":"REST takma adı → `journal_template.apply` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Taslak · **İzin:** `ledger.post` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["journal_template"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","description":"Şablon kimliği"}},{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"journal_template.apply","x-risk":"draft","x-permission":"ledger.post","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/journal_template_apply.input"}}}}}},"/attachments/search":{"get":{"operationId":"rest_get_attachments_search","summary":"Belge deposu: şirketin fiş, fatura, masraf, tahsilat/ödeme ve sabit kıymet eklerini dosya adı, tür ve tarih aralığıyla arar.","description":"REST takma adı → `attachment.search` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `ledger.view|invoices.view|expenses.view|payments.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["attachment"],"parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","description":"Dosya adında arama"},"description":"Dosya adında arama"},{"name":"attachable_type","in":"query","required":false,"schema":{"type":"string","enum":["journal_entry","invoice","expense","payment","fixed_asset"],"description":"Kayıt türü"},"description":"Kayıt türü"},{"name":"from","in":"query","required":false,"schema":{"type":"string","format":"date","description":"Yükleme tarihi başlangıcı (YYYY-AA-GG)"},"description":"Yükleme tarihi başlangıcı (YYYY-AA-GG)"},{"name":"to","in":"query","required":false,"schema":{"type":"string","format":"date","description":"Yükleme tarihi bitişi (YYYY-AA-GG)"},"description":"Yükleme tarihi bitişi (YYYY-AA-GG)"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1}},{"name":"per_page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100}},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"attachment.search","x-risk":"read","x-permission":"ledger.view|invoices.view|expenses.view|payments.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true}},"/attachments":{"get":{"operationId":"rest_get_attachments","summary":"Bir fişin (veya fatura, masraf, tahsilat/ödeme, sabit kıymet kaydının) eklerini listeler.","description":"REST takma adı → `attachment.list` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `ledger.view|invoices.view|expenses.view|payments.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["attachment"],"parameters":[{"name":"attachable_type","in":"query","required":true,"schema":{"type":"string","enum":["journal_entry","invoice","expense","payment","fixed_asset"],"description":"Ekin bağlanacağı kayıt türü"},"description":"Ekin bağlanacağı kayıt türü"},{"name":"attachable_id","in":"query","required":true,"schema":{"type":"integer"}},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"attachment.list","x-risk":"read","x-permission":"ledger.view|invoices.view|expenses.view|payments.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true},"post":{"operationId":"rest_post_attachments","summary":"Kayda dosya eki yükler (PDF, JPG, PNG, XML, XLSX, CSV; en çok 10 MB). API'de multipart/form-data \"file\" alanı. Kesinleşmiş fişe de ek eklenebilir.","description":"REST takma adı → `attachment.upload` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Taslak · **İzin:** `ledger.post|invoices.manage|expenses.manage|payments.manage` · **Kanallar:** web, api, cli","tags":["attachment"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"attachment.upload","x-risk":"draft","x-permission":"ledger.post|invoices.manage|expenses.manage|payments.manage","x-channels":["web","api","cli"],"x-idempotency":"recommended","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/attachment_upload.input"}},"multipart/form-data":{"schema":{"$ref":"#/components/schemas/attachment_upload.input"}}}}}},"/attachments/{id}":{"delete":{"operationId":"rest_delete_attachments_by_id","summary":"Eki siler. Yalnız taslak kayda bağlı ekler silinebilir; kesinleşmiş kaydın eki denetim izi için korunur.","description":"REST takma adı → `attachment.delete` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `ledger.post|invoices.manage|expenses.manage|payments.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["attachment"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","description":"Ek kimliği"}},{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"attachment.delete","x-risk":"commit","x-permission":"ledger.post|invoices.manage|expenses.manage|payments.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/attachment_delete.input"}}}}}},"/attachments/{id}/download":{"get":{"operationId":"rest_get_attachments_by_id_download","summary":"Bir ekin (fiş, fatura, masraf, tahsilat/ödeme, sabit kıymet eki) dosyasını döner: dosya adı, MIME, boyut ve base64 içerik. 15 MB üstü dosyalar API ile döndürülmez.","description":"REST takma adı → `attachment.download` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `ledger.view|invoices.view|expenses.view|payments.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["attachment"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","description":"Ek kimliği (attachment.list / attachment.search → attachments[].id)"}},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"attachment.download","x-risk":"read","x-permission":"ledger.view|invoices.view|expenses.view|payments.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true}},"/bulk-pdfs":{"post":{"operationId":"rest_post_bulk_pdfs","summary":"Seçili faturaları veya muhasebe fişlerini (en fazla 200) arka planda PDF'e çevirip tek ZIP hazırlar; bulk_pdf.status ile izlenir, hazır olunca 24 saat indirilebilir. Fişler için muhasebe görüntüleme izni gerekir.","description":"REST takma adı → `bulk_pdf.create` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Taslak · **İzin:** `invoices.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["bulk_pdf"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"bulk_pdf.create","x-risk":"draft","x-permission":"invoices.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/bulk_pdf_create.input"}}}}}},"/bulk-pdfs/{uuid}":{"get":{"operationId":"rest_get_bulk_pdfs_by_uuid","summary":"Toplu PDF/ZIP dışa aktarımının durumu (sırada / hazırlanıyor / hazır / başarısız) ve hazırsa indirme bağlantısı.","description":"REST takma adı → `bulk_pdf.status` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `invoices.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["bulk_pdf"],"parameters":[{"name":"uuid","in":"path","required":true,"description":"Girdi alanı: `id`","schema":{"type":"string","description":"bulk_pdf.create dönüşündeki export.id"}},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"bulk_pdf.status","x-risk":"read","x-permission":"invoices.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true}},"/exports/luca-journal":{"get":{"operationId":"rest_get_exports_luca_journal","summary":"Tarih aralığındaki kesinleşmiş fişleri Luca fiş aktarım şablonu (14 kolon, ; ayraçlı CSV, Windows-1254) olarak dışa aktarır.","description":"REST takma adı → `export.luca_journal` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `ledger.view` · **Kanallar:** web, api, cli, assistant","tags":["export"],"parameters":[{"name":"date_from","in":"query","required":true,"schema":{"type":"string","format":"date"}},{"name":"date_to","in":"query","required":true,"schema":{"type":"string","format":"date","description":"En fazla 366 günlük aralık"},"description":"En fazla 366 günlük aralık"},{"name":"decimal","in":"query","required":false,"schema":{"type":"string","enum":[",","."],"description":"Ondalık ayracı (varsayılan virgül)"},"description":"Ondalık ayracı (varsayılan virgül)"},{"name":"encoding","in":"query","required":false,"schema":{"type":"string","enum":["windows-1254","utf-8"]}},{"name":"entry_types[]","in":"query","required":false,"schema":{"type":"array","items":{"type":"string","enum":["ACILIS","MAHSUP","TAHSIL","TEDIYE","KAPANIS"]}}},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"export.luca_journal","x-risk":"read","x-permission":"ledger.view","x-channels":["web","api","cli","assistant"],"x-idempotency":"optional","x-rest-alias":true}},"/exports/backups":{"get":{"operationId":"rest_get_exports_backups","summary":"Son tam yedekleri durumları ve (hazırsa) 24 saat geçerli imzalı indirme bağlantısıyla listeler.","description":"REST takma adı → `export.backup_list` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `company.manage` · **Kanallar:** web, api","tags":["export"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"export.backup_list","x-risk":"read","x-permission":"company.manage","x-channels":["web","api"],"x-idempotency":"optional","x-rest-alias":true},"post":{"operationId":"rest_post_exports_backups","summary":"Şirketin tüm muhasebe ve banka verisinin (e-Belge dosyaları ve ekler dahil, credential hariç) ZIP yedeğini kuyrukta hazırlar.","description":"REST takma adı → `export.full_backup` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `company.manage` · **Kanallar:** web, api","tags":["export"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"export.full_backup","x-risk":"commit","x-permission":"company.manage","x-channels":["web","api"],"x-idempotency":"required","x-rest-alias":true,"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/export_full_backup.input"}}}}}},"/background-tasks":{"get":{"operationId":"rest_get_background_tasks","summary":"Arka plan işlerinin birleşik listesi (aktarım, dönem sonu, e-Belge, banka muhasebeleştirme, banka senkronu); durum: active | failed | done.","description":"REST takma adı → `background_tasks.list` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `bank_accounts.view|transactions.view|reports.view|documents.view|integrations.view|team.view|ledger.view|contacts.view|products.view|invoices.view|payments.view|expenses.view|einvoice.view|custom_reports.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["background_tasks"],"parameters":[{"name":"source","in":"query","required":false,"schema":{"type":"string","enum":["imports","closing","edocuments","bank_postings","bank_sync"]}},{"name":"state","in":"query","required":false,"schema":{"type":"string","enum":["all","active","failed","done"]}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":200}},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"background_tasks.list","x-risk":"read","x-permission":"bank_accounts.view|transactions.view|reports.view|documents.view|integrations.view|team.view|ledger.view|contacts.view|products.view|invoices.view|payments.view|expenses.view|einvoice.view|custom_reports.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true}},"/webhooks":{"get":{"operationId":"rest_get_webhooks","summary":"Şirketin webhook uç noktalarını (gizli anahtar olmadan) ve desteklenen olay listesini döner.","description":"REST takma adı → `webhook.list` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `api_tokens.manage` · **Kanallar:** web, api","tags":["webhook"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"webhook.list","x-risk":"read","x-permission":"api_tokens.manage","x-channels":["web","api"],"x-idempotency":"optional","x-rest-alias":true},"post":{"operationId":"rest_post_webhooks","summary":"Yeni webhook uç noktası tanımlar (yalnız https, özel/yerel IP reddedilir). İmza anahtarı yalnız bu yanıtta döner.","description":"REST takma adı → `webhook.create` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `api_tokens.manage` · **Kanallar:** web, api","tags":["webhook"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"webhook.create","x-risk":"commit","x-permission":"api_tokens.manage","x-channels":["web","api"],"x-idempotency":"required","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/webhook_create.input"}}}}}},"/webhooks/{id}":{"patch":{"operationId":"rest_patch_webhooks_by_id","summary":"Webhook adını, adresini, olaylarını veya etkinliğini günceller; devre dışı kalan uç noktayı yeniden etkinleştirir.","description":"REST takma adı → `webhook.update` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `api_tokens.manage` · **Kanallar:** web, api","tags":["webhook"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","minimum":1}},{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"webhook.update","x-risk":"commit","x-permission":"api_tokens.manage","x-channels":["web","api"],"x-idempotency":"required","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/webhook_update.input"}}}}},"delete":{"operationId":"rest_delete_webhooks_by_id","summary":"Webhook uç noktasını ve gönderim geçmişini siler.","description":"REST takma adı → `webhook.delete` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `api_tokens.manage` · **Kanallar:** web, api","tags":["webhook"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","minimum":1}},{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"webhook.delete","x-risk":"commit","x-permission":"api_tokens.manage","x-channels":["web","api"],"x-idempotency":"required","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/webhook_delete.input"}}}}}},"/webhooks/{id}/rotate-secret":{"post":{"operationId":"rest_post_webhooks_by_id_rotate_secret","summary":"Webhook imza anahtarını yeniler; yeni anahtar yalnız bu yanıtta döner, eskisi hemen geçersiz olur.","description":"REST takma adı → `webhook.rotate_secret` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `api_tokens.manage` · **Kanallar:** web, api","tags":["webhook"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","minimum":1}},{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"webhook.rotate_secret","x-risk":"commit","x-permission":"api_tokens.manage","x-channels":["web","api"],"x-idempotency":"required","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/webhook_rotate_secret.input"}}}}}},"/webhooks/{id}/test":{"post":{"operationId":"rest_post_webhooks_by_id_test","summary":"Uç noktaya imzalı bir deneme (ping) gönderimi kuyruğa alır.","description":"REST takma adı → `webhook.test` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `api_tokens.manage` · **Kanallar:** web, api","tags":["webhook"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","minimum":1}},{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"webhook.test","x-risk":"commit","x-permission":"api_tokens.manage","x-channels":["web","api"],"x-idempotency":"required","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/webhook_test.input"}}}}}},"/webhooks/{id}/deliveries":{"get":{"operationId":"rest_get_webhooks_by_id_deliveries","summary":"Son webhook gönderimlerini (durum, HTTP kodu, deneme sayısı) listeler; yanıt gövdesi saklanmaz.","description":"REST takma adı → `webhook.deliveries` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `api_tokens.manage` · **Kanallar:** web, api","tags":["webhook"],"parameters":[{"name":"id","in":"path","required":true,"description":"Girdi alanı: `webhook_id`","schema":{"type":"integer","minimum":1}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":200}},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"webhook.deliveries","x-risk":"read","x-permission":"api_tokens.manage","x-channels":["web","api"],"x-idempotency":"optional","x-rest-alias":true}},"/settings":{"get":{"operationId":"rest_get_settings","summary":"Şirketin muhasebe ayarlarını (onay politikası, maliyet yöntemi, otomatik kayıt, kuruş toleransı…) döner.","description":"REST takma adı → `settings.get` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `ledger.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["settings"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"settings.get","x-risk":"read","x-permission":"ledger.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true},"patch":{"operationId":"rest_patch_settings","summary":"Muhasebe ayarlarını günceller (onay politikası, 7/A–7/B, otomatik kayıt eşiği, kuruş toleransı, banka ve e-Belge otomasyonu, yapay zekâ hesap önerisi, reeskont yöntemi/kapsamı).","description":"REST takma adı → `settings.update` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `accounts_chart.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["settings"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"settings.update","x-risk":"commit","x-permission":"accounts_chart.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","x-rest-alias":true,"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/settings_update.input"}}}}}},"/settings/due-reminders":{"put":{"operationId":"rest_put_settings_due_reminders","summary":"Vade hatırlatma ayarlarını günceller: günlük iç bildirim, müşteriye e-posta ve \"n gün kala\" penceresi (varsayılan kapalı).","description":"REST takma adı → `due_reminder.settings` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `accounts_chart.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["due_reminder"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"due_reminder.settings","x-risk":"commit","x-permission":"accounts_chart.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/due_reminder_settings.input"}}}}}},"/company-copies":{"post":{"operationId":"rest_post_company_copies","summary":"Erişiminiz olan başka bir şirketten hesap planı alt hesaplarını, hızlı fiş şablonlarını, eşleştirme kurallarını, gider kategorilerini ve hesap eşlemelerini aktif şirkete kopyalar; çakışanlar atlanır.","description":"REST takma adı → `company_copy.run` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `accounts_chart.manage` · **Kanallar:** web, api, cli, assistant","tags":["company_copy"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"company_copy.run","x-risk":"commit","x-permission":"accounts_chart.manage","x-channels":["web","api","cli","assistant"],"x-idempotency":"required","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/company_copy_run.input"}}}}}},"/ping":{"get":{"operationId":"rest_get_ping","summary":"Bağlantıyı ve muhasebe erişim yetkisini doğrular; aktif şirketin kimliğini döner.","description":"REST takma adı → `platform.ping` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `ledger.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["platform"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"platform.ping","x-risk":"read","x-permission":"ledger.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true}},"/usage":{"get":{"operationId":"rest_get_usage","summary":"Şirketin paketi ve yapay zekâ token kullanımı: plan, dönem başı/sonu, aylık kota, kullanılan, kalan, ek kredi, yüzde.","description":"REST takma adı → `billing.usage` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `bank_accounts.view|bank_accounts.manage|transactions.view|transactions.export|reports.view|documents.view|documents.generate|integrations.view|integrations.manage|team.view|team.manage|company.manage|ledger.view|ledger.post|ledger.approve|ledger.close|accounts_chart.manage|contacts.view|contacts.manage|products.view|products.manage|invoices.view|invoices.manage|payments.view|payments.manage|expenses.view|expenses.manage|einvoice.view|einvoice.send|einvoice.manage|imports.run|api_tokens.manage|assistant.use|custom_reports.view|custom_reports.manage|accountant_access.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["billing"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"billing.usage","x-risk":"read","x-permission":"bank_accounts.view|bank_accounts.manage|transactions.view|transactions.export|reports.view|documents.view|documents.generate|integrations.view|integrations.manage|team.view|team.manage|company.manage|ledger.view|ledger.post|ledger.approve|ledger.close|accounts_chart.manage|contacts.view|contacts.manage|products.view|products.manage|invoices.view|invoices.manage|payments.view|payments.manage|expenses.view|expenses.manage|einvoice.view|einvoice.send|einvoice.manage|imports.run|api_tokens.manage|assistant.use|custom_reports.view|custom_reports.manage|accountant_access.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true}},"/bank-transactions":{"get":{"operationId":"rest_get_bank_transactions","summary":"Bankadan çekilen hesap hareketlerini listeler. Süzgeçler: banka, hesap, tarih aralığı, yön (giriş/çıkış), tutar aralığı, para birimi, karşı taraf (unvan/IBAN/VKN), açıklama, referans, serbest arama; sayfalı, para birimi bazında giriş/çıkış toplamlarıyla.","description":"REST takma adı → `bank_transaction.list` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `transactions.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["bank_transaction"],"parameters":[{"name":"bank_account_ids[]","in":"query","required":false,"schema":{"type":"array","items":{"type":"integer","minimum":1},"description":"Banka hesabı kimlikleri (bank_account.list); boş = tüm hesaplar"},"description":"Banka hesabı kimlikleri (bank_account.list); boş = tüm hesaplar"},{"name":"bank_account_id","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Tek hesap (bank_account_ids ile birleşir)"},"description":"Tek hesap (bank_account_ids ile birleşir)"},{"name":"bank","in":"query","required":false,"schema":{"type":"string","enum":["ziraat","isbank","garanti","vakifbank","halkbank"],"description":"Banka (sağlayıcı kodu)"},"description":"Banka (sağlayıcı kodu)"},{"name":"from","in":"query","required":false,"schema":{"type":"string","format":"date","description":"Başlangıç (dahil), YYYY-AA-GG"},"description":"Başlangıç (dahil), YYYY-AA-GG"},{"name":"to","in":"query","required":false,"schema":{"type":"string","format":"date","description":"Bitiş (dahil), YYYY-AA-GG"},"description":"Bitiş (dahil), YYYY-AA-GG"},{"name":"direction","in":"query","required":false,"schema":{"type":"string","enum":["inbound","outbound","in","out"],"description":"inbound/in = giriş, outbound/out = çıkış"},"description":"inbound/in = giriş, outbound/out = çıkış"},{"name":"amount_min","in":"query","required":false,"schema":{"type":"string","description":"En az tutar (pozitif; \"1.250,00\" veya \"1250.00\")"},"description":"En az tutar (pozitif; \"1.250,00\" veya \"1250.00\")"},{"name":"amount_max","in":"query","required":false,"schema":{"type":"string","description":"En çok tutar (pozitif)"},"description":"En çok tutar (pozitif)"},{"name":"currency","in":"query","required":false,"schema":{"type":"string","minLength":3,"maxLength":3,"description":"ISO 4217 (TRY, USD, EUR…)"},"description":"ISO 4217 (TRY, USD, EUR…)"},{"name":"counterparty","in":"query","required":false,"schema":{"type":"string","maxLength":120,"description":"Karşı taraf unvanı, IBAN'ı veya VKN/TCKN'si (içerir)"},"description":"Karşı taraf unvanı, IBAN'ı veya VKN/TCKN'si (içerir)"},{"name":"description","in":"query","required":false,"schema":{"type":"string","maxLength":120,"description":"Açıklama içerir"},"description":"Açıklama içerir"},{"name":"reference","in":"query","required":false,"schema":{"type":"string","maxLength":120,"description":"Referans / dekont no içerir"},"description":"Referans / dekont no içerir"},{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":120,"description":"Serbest arama (açıklama, karşı taraf, referans, IBAN)"},"description":"Serbest arama (açıklama, karşı taraf, referans, IBAN)"},{"name":"sort","in":"query","required":false,"schema":{"type":"string","enum":["date_desc","date_asc","amount_desc","amount_asc"],"description":"Varsayılan date_desc"},"description":"Varsayılan date_desc"},{"name":"include_summary","in":"query","required":false,"schema":{"type":"boolean","description":"Para birimi bazında toplamlar (varsayılan true)"},"description":"Para birimi bazında toplamlar (varsayılan true)"},{"name":"include_filter_options","in":"query","required":false,"schema":{"type":"boolean","description":"Süzgeç seçenekleri (hesaplar, dövizler, yönler; varsayılan true)"},"description":"Süzgeç seçenekleri (hesaplar, dövizler, yönler; varsayılan true)"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1}},{"name":"per_page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":200,"description":"Varsayılan 50"},"description":"Varsayılan 50"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"bank_transaction.list","x-risk":"read","x-permission":"transactions.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true}},"/bank-transactions/{id}":{"get":{"operationId":"rest_get_bank_transactions_by_id","summary":"Tek bir banka hareketinin ayrıntısını döner: tarih/valör, yön, tutar, karşı taraf (unvan, IBAN, VKN), açıklama, referans, işlem sonrası bakiye, kur ve dekont durumu; muhasebe görme yetkisi varsa eşleştirme durumu (fiş / tahsilat bağlantısı).","description":"REST takma adı → `bank_transaction.get` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `transactions.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["bank_transaction"],"parameters":[{"name":"id","in":"path","required":true,"description":"Girdi alanı: `transaction_id`","schema":{"type":"integer","minimum":1,"description":"Banka hareketi kimliği (bank_transaction.list → transactions[].id)"}},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"bank_transaction.get","x-risk":"read","x-permission":"transactions.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true}},"/bank-transactions/{id}/receipt":{"get":{"operationId":"rest_get_bank_transactions_by_id_receipt","summary":"Bir banka hareketinin dekontunu döner: arşivde varsa dosya adı, MIME türü, boyut ve (include_content=true ise) base64 içerik; yoksa dekontun neden bulunmadığı.","description":"REST takma adı → `bank_transaction.receipt` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `transactions.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["bank_transaction"],"parameters":[{"name":"id","in":"path","required":true,"description":"Girdi alanı: `transaction_id`","schema":{"type":"integer","minimum":1,"description":"Banka hareketi kimliği"}},{"name":"include_content","in":"query","required":false,"schema":{"type":"boolean","description":"Dosya içeriği base64 olarak dönsün (varsayılan true; asistan kanalında her zaman false)"},"description":"Dosya içeriği base64 olarak dönsün (varsayılan true; asistan kanalında her zaman false)"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"bank_transaction.receipt","x-risk":"read","x-permission":"transactions.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true}},"/bank-accounts":{"get":{"operationId":"rest_get_bank_accounts","summary":"Şirketin banka hesaplarını listeler: banka, hesap adı, IBAN, hesap no, para birimi, bankanın bildirdiği güncel/kullanılabilir bakiye, son bakiye zamanı, aktif/manuel takip/rapor dışı bayrakları.","description":"REST takma adı → `bank_account.list` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `bank_accounts.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["bank_account"],"parameters":[{"name":"integration_id","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Yalnız bu banka bağlantısının hesapları"},"description":"Yalnız bu banka bağlantısının hesapları"},{"name":"currency","in":"query","required":false,"schema":{"type":"string","minLength":3,"maxLength":3}},{"name":"include_inactive","in":"query","required":false,"schema":{"type":"boolean","description":"Pasif hesaplar da dönsün (varsayılan true)"},"description":"Pasif hesaplar da dönsün (varsayılan true)"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"bank_account.list","x-risk":"read","x-permission":"bank_accounts.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true},"post":{"operationId":"rest_post_bank_accounts","summary":"Şirkete elle banka hesabı tanıtır (entegrasyon kurulmadan): hesap adı, banka (provider_slug veya bank_name), IBAN ve/veya hesap no, şube, para birimi. IBAN mod-97 ile doğrulanır; aynı IBAN/hesap no ikinci kez eklenemez. Şifre/API anahtarı ALMAZ (banka bağlantısı yalnız Bankalar ekranından kurulur). Hesap banka başvuru evraklarına yazılır.","description":"REST takma adı → `bank_account.create` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Taslak · **İzin:** `integrations.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["bank_account"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"bank_account.create","x-risk":"draft","x-permission":"integrations.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/bank_account_create.input"}}}}}},"/bank-accounts/balances":{"get":{"operationId":"rest_get_bank_accounts_balances","summary":"Banka hesaplarının güncel bakiyelerini ve toplam nakdi seçilen para biriminde (TCMB kuru) döner; hesap seçilmezse bugün giren/çıkan ve entegrasyon sağlığı da gelir.","description":"REST takma adı → `bank_account.balances` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `bank_accounts.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["bank_account"],"parameters":[{"name":"bank_account_ids[]","in":"query","required":false,"schema":{"type":"array","items":{"type":"integer","minimum":1},"description":"Banka hesabı kimlikleri (bank_account.list); boş = tüm hesaplar"},"description":"Banka hesabı kimlikleri (bank_account.list); boş = tüm hesaplar"},{"name":"currency","in":"query","required":false,"schema":{"type":"string","enum":["TRY","USD","EUR"],"description":"Toplamın gösterileceği para birimi (varsayılan şirket para birimi)"},"description":"Toplamın gösterileceği para birimi (varsayılan şirket para birimi)"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"bank_account.balances","x-risk":"read","x-permission":"bank_accounts.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true}},"/bank-accounts/{id}":{"get":{"operationId":"rest_get_bank_accounts_by_id","summary":"Tek banka hesabının ayrıntısını döner: banka, ad, IBAN, hesap no, şube adı/kodu, para birimi, bakiye, aktif/manuel takip/rapor dışı bayrakları, banka formlarında kullanım, not ve kaynağı (elle tanıtıldı / senkron).","description":"REST takma adı → `bank_account.get` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `bank_accounts.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["bank_account"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","minimum":1,"description":"Banka hesabı kimliği (bank_account.list → accounts[].id)"}},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"bank_account.get","x-risk":"read","x-permission":"bank_accounts.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true},"patch":{"operationId":"rest_patch_bank_accounts_by_id","summary":"Banka hesabının adını, şubesini, notunu, \"banka formlarında kullan\" ve \"raporlardan hariç tut\" tercihlerini; elle tanıtılmış hesapta ayrıca IBAN, hesap no, banka ve para birimini günceller. Yalnız verilen alanlar değişir. Entegrasyondan gelen hesabın IBAN/hesap no/para birimi değiştirilemez.","description":"REST takma adı → `bank_account.update` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Taslak · **İzin:** `integrations.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["bank_account"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","minimum":1,"description":"Banka hesabı kimliği (bank_account.list → accounts[].id)"}},{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"bank_account.update","x-risk":"draft","x-permission":"integrations.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/bank_account_update.input"}}}}},"delete":{"operationId":"rest_delete_bank_accounts_by_id","summary":"Elle tanıtılmış bir banka hesabını kaldırır; geçmiş hareketleri korunur. Banka entegrasyonundan gelen hesap silinemez (bağlantı Bankalar ekranından kaldırılır).","description":"REST takma adı → `bank_account.delete` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `integrations.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["bank_account"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","minimum":1,"description":"Banka hesabı kimliği (bank_account.list → accounts[].id)"}},{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"bank_account.delete","x-risk":"commit","x-permission":"integrations.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/bank_account_delete.input"}}}}}},"/bank-integrations":{"get":{"operationId":"rest_get_bank_integrations","summary":"Şirketin banka bağlantılarını listeler: banka, durum (aktif, duraklatıldı, hata, kimlik hatası), senkron sıklığı, son senkron, son hata, ardışık hata sayısı, hesap sayısı, senkron/yeniden deneme yapılabilir mi ve son senkron denemeleri.","description":"REST takma adı → `bank_integration.list` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `integrations.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["bank_integration"],"parameters":[{"name":"runs_limit","in":"query","required":false,"schema":{"type":"integer","minimum":0,"maximum":50,"description":"Son senkron denemesi sayısı (varsayılan 10)"},"description":"Son senkron denemesi sayısı (varsayılan 10)"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"bank_integration.list","x-risk":"read","x-permission":"integrations.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true}},"/bank-integrations/{id}":{"get":{"operationId":"rest_get_bank_integrations_by_id","summary":"Bir banka bağlantısının ayrıntılı durumunu döner: durum, son hata, ardışık hata sayısı, senkron sürüyor mu, bağlı hesaplar ve son senkron denemeleri (çekilen hareket sayısı, hata mesajı).","description":"REST takma adı → `bank_integration.status` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `integrations.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["bank_integration"],"parameters":[{"name":"id","in":"path","required":true,"description":"Girdi alanı: `integration_id`","schema":{"type":"integer","minimum":1,"description":"Banka bağlantısı kimliği (bank_integration.list)"}},{"name":"runs_limit","in":"query","required":false,"schema":{"type":"integer","minimum":0,"maximum":50,"description":"Varsayılan 10"},"description":"Varsayılan 10"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"bank_integration.status","x-risk":"read","x-permission":"integrations.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true}},"/bank-integrations/sync":{"post":{"operationId":"rest_post_bank_integrations_sync","summary":"Banka bağlantısı için hesap hareketi senkronunu kuyruğa alır (integration_id verilmezse uygun tüm bağlantılar). Duraklatılmış, kimlik hatalı veya bilgisi girilmemiş bağlantı senkronlanmaz; zaten süren senkron tekrar başlatılmaz.","description":"REST takma adı → `bank_integration.sync` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `integrations.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["bank_integration"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"bank_integration.sync","x-risk":"commit","x-permission":"integrations.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","x-rest-alias":true,"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/bank_integration_sync.input"}}}}}},"/bank-integrations/{id}/sync":{"post":{"operationId":"rest_post_bank_integrations_by_id_sync","summary":"Banka bağlantısı için hesap hareketi senkronunu kuyruğa alır (integration_id verilmezse uygun tüm bağlantılar). Duraklatılmış, kimlik hatalı veya bilgisi girilmemiş bağlantı senkronlanmaz; zaten süren senkron tekrar başlatılmaz.","description":"REST takma adı → `bank_integration.sync` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `integrations.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["bank_integration"],"parameters":[{"name":"id","in":"path","required":true,"description":"Girdi alanı: `integration_id`","schema":{"type":"integer","minimum":1,"description":"Banka bağlantısı kimliği; verilmezse uygun tüm bağlantılar"}},{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"bank_integration.sync","x-risk":"commit","x-permission":"integrations.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","x-rest-alias":true,"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/bank_integration_sync.input"}}}}}},"/bank-integrations/{id}/retry":{"post":{"operationId":"rest_post_bank_integrations_by_id_retry","summary":"Hata veya kimlik hatası durumundaki banka bağlantısının kilidini açar (hata sayacı sıfırlanır) ve senkronu yeniden kuyruğa alır. Erişim bilgilerini değiştirmez; duraklatılmış bağlantıya uygulanmaz.","description":"REST takma adı → `bank_integration.retry` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `integrations.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["bank_integration"],"parameters":[{"name":"id","in":"path","required":true,"description":"Girdi alanı: `integration_id`","schema":{"type":"integer","minimum":1,"description":"Banka bağlantısı kimliği (bank_integration.list)"}},{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"bank_integration.retry","x-risk":"commit","x-permission":"integrations.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/bank_integration_retry.input"}}}}}},"/reports/bank-cash":{"get":{"operationId":"rest_get_reports_bank_cash","summary":"Banka kasa raporu: seçilen tarih aralığında (en fazla 366 gün) her gün için açılış, giriş, çıkış ve kapanış bakiyesi; hesap ve para birimi kırılımı, hesaplar arası kendi virmanları ayrı. Tutarlar seçilen para birimine çevrilir.","description":"REST takma adı → `bank_report.cash` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `reports.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["bank_report"],"parameters":[{"name":"bank_account_ids[]","in":"query","required":false,"schema":{"type":"array","items":{"type":"integer","minimum":1},"description":"Banka hesabı kimlikleri (bank_account.list); boş = tüm hesaplar"},"description":"Banka hesabı kimlikleri (bank_account.list); boş = tüm hesaplar"},{"name":"from","in":"query","required":true,"schema":{"type":"string","format":"date","description":"Başlangıç, YYYY-AA-GG"},"description":"Başlangıç, YYYY-AA-GG"},{"name":"to","in":"query","required":true,"schema":{"type":"string","format":"date","description":"Bitiş (dahil), YYYY-AA-GG"},"description":"Bitiş (dahil), YYYY-AA-GG"},{"name":"currency","in":"query","required":false,"schema":{"type":"string","enum":["TRY","USD","EUR"],"description":"Rapor para birimi (varsayılan şirket para birimi)"},"description":"Rapor para birimi (varsayılan şirket para birimi)"},{"name":"include_days","in":"query","required":false,"schema":{"type":"boolean","description":"Gün gün satırlar dönsün (varsayılan true; false → yalnız toplamlar ve hesaplar)"},"description":"Gün gün satırlar dönsün (varsayılan true; false → yalnız toplamlar ve hesaplar)"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"bank_report.cash","x-risk":"read","x-permission":"reports.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true}},"/team/members":{"get":{"operationId":"rest_get_team_members","summary":"Aktif şirketin ekibini listeler: üyeler (rol, etkin izinler, son sahip mi), mali müşavir bürosu üzerinden erişen kişiler ve bekleyen davetler.","description":"REST takma adı → `team.list` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `team.view` · **Kanallar:** web, api, cli, mcp, assistant","tags":["team"],"parameters":[{"name":"include_invitations","in":"query","required":false,"schema":{"type":"boolean","description":"Bekleyen davetler de dönsün (varsayılan true)"},"description":"Bekleyen davetler de dönsün (varsayılan true)"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"team.list","x-risk":"read","x-permission":"team.view","x-channels":["web","api","cli","mcp","assistant"],"x-idempotency":"optional","x-rest-alias":true}},"/team/invitations":{"post":{"operationId":"rest_post_team_invitations","summary":"Aktif şirkete e-posta ile ekip daveti gönderir (rol + isteğe bağlı granular izinler). Kendinizde olmayan izin verilemez; aynı adrese bekleyen davet tazelenir.","description":"REST takma adı → `team.invite` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `team.manage` · **Kanallar:** web, api, cli, mcp, assistant","tags":["team"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"team.invite","x-risk":"commit","x-permission":"team.manage","x-channels":["web","api","cli","mcp","assistant"],"x-idempotency":"required","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/team_invite.input"}}}}},"get":{"operationId":"rest_get_team_invitations","summary":"Aktif şirketin kabul bekleyen ekip davetlerini listeler (e-posta, rol, izinler, davet eden, son geçerlilik, süresi doldu mu).","description":"REST takma adı → `invitation.list` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `team.view` · **Kanallar:** web, api, cli, mcp, assistant","tags":["invitation"],"parameters":[{"name":"include_expired","in":"query","required":false,"schema":{"type":"boolean","description":"Süresi dolmuş davetler de dönsün (varsayılan true)"},"description":"Süresi dolmuş davetler de dönsün (varsayılan true)"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"invitation.list","x-risk":"read","x-permission":"team.view","x-channels":["web","api","cli","mcp","assistant"],"x-idempotency":"optional","x-rest-alias":true}},"/team/members/{id}":{"patch":{"operationId":"rest_patch_team_members_by_id","summary":"Bir ekip üyesinin rolünü ve izinlerini günceller. İzin listesi boşsa rol varsayılanı uygulanır; kendi üyeliğiniz, sahip kaydı (sahip değilseniz) ve son sahip değiştirilemez.","description":"REST takma adı → `team.update` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `team.manage` · **Kanallar:** web, api, cli, mcp, assistant","tags":["team"],"parameters":[{"name":"id","in":"path","required":true,"description":"Girdi alanı: `membership_id`","schema":{"type":"integer","minimum":1,"description":"Üyelik kimliği (team.list → members[].id)"}},{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"team.update","x-risk":"commit","x-permission":"team.manage","x-channels":["web","api","cli","mcp","assistant"],"x-idempotency":"required","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/team_update.input"}}}}},"delete":{"operationId":"rest_delete_team_members_by_id","summary":"Bir üyeyi aktif şirketin ekibinden çıkarır; üyenin bu şirkete erişimi (API anahtarları dahil) hemen kesilir. Kendinizi ve son şirket sahibini çıkaramazsınız.","description":"REST takma adı → `team.remove` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `team.manage` · **Kanallar:** web, api, cli, mcp, assistant","tags":["team"],"parameters":[{"name":"id","in":"path","required":true,"description":"Girdi alanı: `membership_id`","schema":{"type":"integer","minimum":1,"description":"Üyelik kimliği (team.list → members[].id)"}},{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"team.remove","x-risk":"commit","x-permission":"team.manage","x-channels":["web","api","cli","mcp","assistant"],"x-idempotency":"required","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/team_remove.input"}}}}}},"/team/invitations/{id}/resend":{"post":{"operationId":"rest_post_team_invitations_by_id_resend","summary":"Bekleyen bir ekip davetini yeniden gönderir: yeni bağlantı üretilir, eski bağlantı geçersizleşir ve süre 7 gün uzar.","description":"REST takma adı → `invitation.resend` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `team.manage` · **Kanallar:** web, api, cli, mcp, assistant","tags":["invitation"],"parameters":[{"name":"id","in":"path","required":true,"description":"Girdi alanı: `invitation_id`","schema":{"type":"integer","minimum":1,"description":"Davet kimliği (invitation.list → invitations[].id)"}},{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"invitation.resend","x-risk":"commit","x-permission":"team.manage","x-channels":["web","api","cli","mcp","assistant"],"x-idempotency":"required","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/invitation_resend.input"}}}}}},"/team/invitations/{id}":{"delete":{"operationId":"rest_delete_team_invitations_by_id","summary":"Bekleyen bir ekip davetini iptal eder; davet bağlantısı artık kullanılamaz.","description":"REST takma adı → `invitation.cancel` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `team.manage` · **Kanallar:** web, api, cli, mcp, assistant","tags":["invitation"],"parameters":[{"name":"id","in":"path","required":true,"description":"Girdi alanı: `invitation_id`","schema":{"type":"integer","minimum":1,"description":"Davet kimliği (invitation.list → invitations[].id)"}},{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"invitation.cancel","x-risk":"commit","x-permission":"team.manage","x-channels":["web","api","cli","mcp","assistant"],"x-idempotency":"required","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/invitation_cancel.input"}}}}}},"/company":{"get":{"operationId":"rest_get_company","summary":"Aktif şirketin özetini (unvan, VKN, vergi dairesi, para birimi, üye sayısı) ve sizin bu şirketteki rolünüzü/izinlerinizi döner.","description":"REST takma adı → `company.get` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `team.view` · **Kanallar:** web, api, cli, mcp, assistant","tags":["company"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"company.get","x-risk":"read","x-permission":"team.view","x-channels":["web","api","cli","mcp","assistant"],"x-idempotency":"optional","x-rest-alias":true}},"/companies":{"get":{"operationId":"rest_get_companies","summary":"Erişebildiğiniz şirketleri listeler (doğrudan üyelik ve mali müşavir bürosu üzerinden erişilen müşteri şirketler); aktif şirket işaretlidir.","description":"REST takma adı → `company.list` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `team.view` · **Kanallar:** web, api, cli, mcp, assistant","tags":["company"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"company.list","x-risk":"read","x-permission":"team.view","x-channels":["web","api","cli","mcp","assistant"],"x-idempotency":"optional","x-rest-alias":true}},"/company/settings":{"get":{"operationId":"rest_get_company_settings","summary":"Aktif şirketin ayarlarını döner: unvan, vergi bilgileri, adres, iletişim, yetkili kişi, varsayılan para birimi, günlük/haftalık rapor alıcıları ve evrak tazeliği.","description":"REST takma adı → `company.settings.get` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `company.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["company"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"company.settings.get","x-risk":"read","x-permission":"company.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true},"patch":{"operationId":"rest_patch_company_settings","summary":"Aktif şirketin bilgilerini (unvan, vergi dairesi/no, adres, iletişim, yetkili kişi, varsayılan para birimi) ve kasa raporu e-posta ayarlarını kısmi olarak günceller. Yalnız gönderilen alanlar değişir.","description":"REST takma adı → `company.settings.update` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `company.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["company"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"company.settings.update","x-risk":"commit","x-permission":"company.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"required","x-rest-alias":true,"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/company_settings_update.input"}}}}}},"/firm":{"get":{"operationId":"rest_get_firm","summary":"Aktif mali müşavirlik bürosunun profilini, doğrulama durumunu, sizin büro rolünüzü/izinlerinizi ve özet sayıları (ekip, müşteri, bekleyen davet) döner.","description":"REST takma adı → `firm.get` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `firm.access` · **Kanallar:** web, api, cli, mcp, assistant","tags":["firm"],"parameters":[{"name":"firm_id","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Büro kimliği (isteğe bağlı; verilmezse X-Firm-Id başlığı, sonra seçili/ilk büro)"},"description":"Büro kimliği (isteğe bağlı; verilmezse X-Firm-Id başlığı, sonra seçili/ilk büro)"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"firm.get","x-risk":"read","x-permission":"firm.access","x-channels":["web","api","cli","mcp","assistant"],"x-idempotency":"optional","x-rest-alias":true}},"/firm/members":{"get":{"operationId":"rest_get_firm_members","summary":"Büro ekibini listeler: üyeler (rol, aktiflik, katılım tarihi) ve kabul bekleyen ekip davetleri.","description":"REST takma adı → `firm.members.list` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `firm.access` · **Kanallar:** web, api, cli, mcp, assistant","tags":["firm"],"parameters":[{"name":"firm_id","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Büro kimliği (isteğe bağlı; verilmezse X-Firm-Id başlığı, sonra seçili/ilk büro)"},"description":"Büro kimliği (isteğe bağlı; verilmezse X-Firm-Id başlığı, sonra seçili/ilk büro)"},{"name":"include_inactive","in":"query","required":false,"schema":{"type":"boolean","description":"Pasif üyeler de listelensin (varsayılan true)"},"description":"Pasif üyeler de listelensin (varsayılan true)"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"firm.members.list","x-risk":"read","x-permission":"firm.access","x-channels":["web","api","cli","mcp","assistant"],"x-idempotency":"optional","x-rest-alias":true}},"/firm/members/invitations":{"post":{"operationId":"rest_post_firm_members_invitations","summary":"Büro ekibine e-posta ile üye davet eder (rol: owner, partner, accountant, staff, intern). Yalnız büro ekip yöneticisi; kendi yetkinizin üzerinde rol verilemez.","description":"REST takma adı → `firm.members.invite` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `firm.team.manage` · **Kanallar:** web, api, cli, mcp, assistant","tags":["firm"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"firm.members.invite","x-risk":"commit","x-permission":"firm.team.manage","x-channels":["web","api","cli","mcp","assistant"],"x-idempotency":"required","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/firm_members_invite.input"}}}}}},"/firm/members/{id}":{"patch":{"operationId":"rest_patch_firm_members_by_id","summary":"Büro ekip üyesinin rolünü değiştirir veya üyeyi pasifleştirir/etkinleştirir. Son büro sahibi pasifleştirilemez; kendi üyeliğiniz değiştirilemez.","description":"REST takma adı → `firm.members.update` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `firm.team.manage` · **Kanallar:** web, api, cli, mcp, assistant","tags":["firm"],"parameters":[{"name":"id","in":"path","required":true,"description":"Girdi alanı: `member_id`","schema":{"type":"integer","minimum":1,"description":"Büro üyeliği kimliği (firm.members.list → members[].id)"}},{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"firm.members.update","x-risk":"commit","x-permission":"firm.team.manage","x-channels":["web","api","cli","mcp","assistant"],"x-idempotency":"required","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/firm_members_update.input"}}}}}},"/firm/clients":{"get":{"operationId":"rest_get_firm_clients","summary":"Büronun müşteri şirketlerini listeler (davet, aktif, reddedilen, sonlandırılan); kimin onayı beklendiği ve erişiminiz olup olmadığı dahil.","description":"REST takma adı → `firm.clients.list` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `firm.access` · **Kanallar:** web, api, cli, mcp, assistant","tags":["firm"],"parameters":[{"name":"firm_id","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Büro kimliği (isteğe bağlı; verilmezse X-Firm-Id başlığı, sonra seçili/ilk büro)"},"description":"Büro kimliği (isteğe bağlı; verilmezse X-Firm-Id başlığı, sonra seçili/ilk büro)"},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["invited","active","rejected","revoked"],"description":"Durum süzgeci"},"description":"Durum süzgeci"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"firm.clients.list","x-risk":"read","x-permission":"firm.access","x-channels":["web","api","cli","mcp","assistant"],"x-idempotency":"optional","x-rest-alias":true}},"/firm/clients/invitations":{"post":{"operationId":"rest_post_firm_clients_invitations","summary":"Bir şirketi VKN'si veya şirket sahibinin e-postası ile büronuza müşteri olarak davet eder; şirket onaylayınca bağlantı aktifleşir. Büro doğrulanmış olmalıdır.","description":"REST takma adı → `firm.clients.invite` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `firm.clients.manage` · **Kanallar:** web, api, cli, mcp, assistant","tags":["firm"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"firm.clients.invite","x-risk":"commit","x-permission":"firm.clients.manage","x-channels":["web","api","cli","mcp","assistant"],"x-idempotency":"required","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/firm_clients_invite.input"}}}}}},"/firm/clients/{id}/accept":{"post":{"operationId":"rest_post_firm_clients_by_id_accept","summary":"Bir şirketin büronuza gönderdiği mali müşavir bağlantı davetini kabul eder; şirket müşterileriniz arasına girer. Büro doğrulanmış olmalıdır.","description":"REST takma adı → `firm.clients.accept` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `firm.clients.manage` · **Kanallar:** web, api, cli, mcp, assistant","tags":["firm"],"parameters":[{"name":"id","in":"path","required":true,"description":"Girdi alanı: `client_id`","schema":{"type":"integer","minimum":1,"description":"Bağlantı kimliği (firm.clients.list → clients[].id)"}},{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"firm.clients.accept","x-risk":"commit","x-permission":"firm.clients.manage","x-channels":["web","api","cli","mcp","assistant"],"x-idempotency":"required","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/firm_clients_accept.input"}}}}}},"/firm/clients/{id}":{"delete":{"operationId":"rest_delete_firm_clients_by_id","summary":"Bir müşteri şirketle büro bağlantısını sonlandırır ya da bekleyen daveti geri çeker/reddeder; atamalar kapanır ve büro ekibinin o şirkete erişimi kesilir.","description":"REST takma adı → `firm.clients.revoke` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `firm.clients.manage` · **Kanallar:** web, api, cli, mcp, assistant","tags":["firm"],"parameters":[{"name":"id","in":"path","required":true,"description":"Girdi alanı: `client_id`","schema":{"type":"integer","minimum":1,"description":"Bağlantı kimliği (firm.clients.list → clients[].id)"}},{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"firm.clients.revoke","x-risk":"commit","x-permission":"firm.clients.manage","x-channels":["web","api","cli","mcp","assistant"],"x-idempotency":"required","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/firm_clients_revoke.input"}}}}}},"/firm/assignments":{"get":{"operationId":"rest_get_firm_assignments","summary":"Büro atama matrisini döner: ekip üyeleri, aktif müşteriler ve üye×müşteri hücrelerindeki yetki seti (full, bookkeeping, readonly).","description":"REST takma adı → `firm.assignment.list` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `firm.access` · **Kanallar:** web, api, cli, mcp, assistant","tags":["firm"],"parameters":[{"name":"firm_id","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Büro kimliği (isteğe bağlı; verilmezse X-Firm-Id başlığı, sonra seçili/ilk büro)"},"description":"Büro kimliği (isteğe bağlı; verilmezse X-Firm-Id başlığı, sonra seçili/ilk büro)"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"firm.assignment.list","x-risk":"read","x-permission":"firm.access","x-channels":["web","api","cli","mcp","assistant"],"x-idempotency":"optional","x-rest-alias":true},"put":{"operationId":"rest_put_firm_assignments","summary":"Bir büro üyesini bir müşteri şirkete yetki setiyle atar (full: tam müşavir, bookkeeping: ön muhasebe, readonly: salt okuma) veya preset boş gönderilerek atamayı kaldırır.","description":"REST takma adı → `firm.assignment.update` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `firm.clients.manage` · **Kanallar:** web, api, cli, mcp, assistant","tags":["firm"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"firm.assignment.update","x-risk":"commit","x-permission":"firm.clients.manage","x-channels":["web","api","cli","mcp","assistant"],"x-idempotency":"required","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/firm_assignment_update.input"}}}}}},"/firm/tasks":{"get":{"operationId":"rest_get_firm_tasks","summary":"Seçilen ay için erişebildiğiniz müşterilerin kapanış kontrol listesini döner (banka mutabakatı, e-Fatura aktarımı, KDV beyannamesi, e-Defter durumları).","description":"REST takma adı → `firm.task.list` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `firm.access` · **Kanallar:** web, api, cli, mcp, assistant","tags":["firm"],"parameters":[{"name":"firm_id","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Büro kimliği (isteğe bağlı; verilmezse X-Firm-Id başlığı, sonra seçili/ilk büro)"},"description":"Büro kimliği (isteğe bağlı; verilmezse X-Firm-Id başlığı, sonra seçili/ilk büro)"},{"name":"period","in":"query","required":false,"schema":{"type":"string","pattern":"^\\d{4}-(0[1-9]|1[0-2])$","description":"YYYY-AA (varsayılan bu ay)"},"description":"YYYY-AA (varsayılan bu ay)"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"firm.task.list","x-risk":"read","x-permission":"firm.access","x-channels":["web","api","cli","mcp","assistant"],"x-idempotency":"optional","x-rest-alias":true},"patch":{"operationId":"rest_patch_firm_tasks","summary":"Bir müşterinin belirli ay kapanış kontrol adımının durumunu günceller (pending, in_progress, done, not_applicable) ve isteğe bağlı not ekler.","description":"REST takma adı → `firm.task.update` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Taslak · **İzin:** `firm.work` · **Kanallar:** web, api, cli, mcp, assistant","tags":["firm"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"firm.task.update","x-risk":"draft","x-permission":"firm.work","x-channels":["web","api","cli","mcp","assistant"],"x-idempotency":"recommended","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/firm_task_update.input"}}}}}},"/firm/document-requests":{"get":{"operationId":"rest_get_firm_document_requests","summary":"Büronun müşterilerden istediği belge taleplerini listeler (durum, dönem, son tarih, yüklenen dosya adları); yalnız erişebildiğiniz müşteriler.","description":"REST takma adı → `firm.document_request.list` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `firm.access` · **Kanallar:** web, api, cli, mcp, assistant","tags":["firm"],"parameters":[{"name":"firm_id","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Büro kimliği (isteğe bağlı; verilmezse X-Firm-Id başlığı, sonra seçili/ilk büro)"},"description":"Büro kimliği (isteğe bağlı; verilmezse X-Firm-Id başlığı, sonra seçili/ilk büro)"},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["open","uploaded","completed","cancelled"]}},{"name":"client_id","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Yalnız bu müşteri bağlantısı"},"description":"Yalnız bu müşteri bağlantısı"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":200,"description":"Varsayılan 100"},"description":"Varsayılan 100"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"firm.document_request.list","x-risk":"read","x-permission":"firm.access","x-channels":["web","api","cli","mcp","assistant"],"x-idempotency":"optional","x-rest-alias":true},"post":{"operationId":"rest_post_firm_document_requests","summary":"Erişebildiğiniz bir müşteri şirketten belge talep eder (başlık, açıklama, dönem, son tarih); şirket yöneticilerine bildirim ve e-posta gider.","description":"REST takma adı → `firm.document_request.create` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `firm.work` · **Kanallar:** web, api, cli, mcp, assistant","tags":["firm"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"firm.document_request.create","x-risk":"commit","x-permission":"firm.work","x-channels":["web","api","cli","mcp","assistant"],"x-idempotency":"required","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/firm_document_request_create.input"}}}}}},"/firm/document-requests/{id}":{"patch":{"operationId":"rest_patch_firm_document_requests_by_id","summary":"Bir belge talebini tamamlandı, iptal ya da yeniden açık olarak işaretler (yalnız erişebildiğiniz müşterilerin talepleri).","description":"REST takma adı → `firm.document_request.update` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Taslak · **İzin:** `firm.work` · **Kanallar:** web, api, cli, mcp, assistant","tags":["firm"],"parameters":[{"name":"id","in":"path","required":true,"description":"Girdi alanı: `request_id`","schema":{"type":"integer","minimum":1,"description":"Belge talebi kimliği (firm.document_request.list)"}},{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"firm.document_request.update","x-risk":"draft","x-permission":"firm.work","x-channels":["web","api","cli","mcp","assistant"],"x-idempotency":"recommended","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/firm_document_request_update.input"}}}}}},"/firm/portfolio":{"get":{"operationId":"rest_get_firm_portfolio","summary":"Büro müşteri portföyü: her müşteri için son kilitli ay, taslak fiş, eşleşmemiş banka hareketi, açık belge talebi, kontrol listesi ilerlemesi ve (izin varsa) KDV mahsubu / e-Defter / vadesi geçmiş alacak durumu.","description":"REST takma adı → `firm.portfolio` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `firm.access` · **Kanallar:** web, api, cli, mcp, assistant","tags":["firm"],"parameters":[{"name":"firm_id","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Büro kimliği (isteğe bağlı; verilmezse X-Firm-Id başlığı, sonra seçili/ilk büro)"},"description":"Büro kimliği (isteğe bağlı; verilmezse X-Firm-Id başlığı, sonra seçili/ilk büro)"},{"name":"period","in":"query","required":false,"schema":{"type":"string","pattern":"^\\d{4}-(0[1-9]|1[0-2])$","description":"Kontrol listesi ayı YYYY-AA (varsayılan bu ay)"},"description":"Kontrol listesi ayı YYYY-AA (varsayılan bu ay)"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"firm.portfolio","x-risk":"read","x-permission":"firm.access","x-channels":["web","api","cli","mcp","assistant"],"x-idempotency":"optional","x-rest-alias":true}},"/reports/bank-cashflow":{"get":{"operationId":"rest_get_reports_bank_cashflow","summary":"Banka hesaplarının nakit akışı: seçilen aralıkta (en fazla 366 gün; varsayılan son 30 gün; days=7/30/90/365 ile Panel penceresi) gün/hafta/ay kırılımında giren, çıkan, net tutar ve hareket sayısı; hesaplar arası kendi virmanları ayrı. Tutarlar seçilen para birimine çevrilir. Rapor görme yetkisi olmayan (yalnız banka hesabı gören) kullanıcı yalnız Panel pencerelerini alır. Muhasebe fişlerinden üretilen resmi Nakit Akım Tablosu için report.cash_flow kullanın.","description":"REST takma adı → `bank_report.cashflow` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `reports.view|bank_accounts.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["bank_report"],"parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","enum":[7,30,90,365],"description":"Panel penceresi: bugün biten son N gün (web Panel ?days=); from/to ile birlikte gönderilmez"},"description":"Panel penceresi: bugün biten son N gün (web Panel ?days=); from/to ile birlikte gönderilmez"},{"name":"from","in":"query","required":false,"schema":{"type":"string","format":"date","description":"Başlangıç YYYY-AA-GG (varsayılan: bitişten 29 gün önce)"},"description":"Başlangıç YYYY-AA-GG (varsayılan: bitişten 29 gün önce)"},{"name":"to","in":"query","required":false,"schema":{"type":"string","format":"date","description":"Bitiş YYYY-AA-GG, dahil (varsayılan: bugün)"},"description":"Bitiş YYYY-AA-GG, dahil (varsayılan: bugün)"},{"name":"granularity","in":"query","required":false,"schema":{"type":"string","enum":["day","week","month"],"description":"Kırılım (varsayılan: 90 günden uzunsa hafta, değilse gün)"},"description":"Kırılım (varsayılan: 90 günden uzunsa hafta, değilse gün)"},{"name":"currency","in":"query","required":false,"schema":{"type":"string","enum":["TRY","USD","EUR"],"description":"Rapor para birimi (varsayılan şirket para birimi)"},"description":"Rapor para birimi (varsayılan şirket para birimi)"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"bank_report.cashflow","x-risk":"read","x-permission":"reports.view|bank_accounts.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true}},"/bank-applications":{"get":{"operationId":"rest_get_bank_applications","summary":"Banka entegrasyon başvurularını listeler: banka, aşama (temsilciyle iletişim → banka yanıtı → bilgi toplama → form → bankaya iletildi → kullanıcı bilgileri → aktif), durum, bilgi toplama ilerlemesi, eksik alanlar ve sıradaki adım.","description":"REST takma adı → `bank_application.list` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `integrations.view` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["bank_application"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"bank_application.list","x-risk":"read","x-permission":"integrations.view","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"optional","x-rest-alias":true}},"/bank-applications/{id}/advance":{"post":{"operationId":"rest_post_bank_applications_by_id_advance","summary":"Banka başvurusunu bir sonraki aşamaya işaretler: stage=submitted (imzalı form bankaya iletildi; önce form üretilmiş olmalı) veya stage=credentials (banka kullanıcı bilgilerini gönderdi; bilgiler asistana YAZILMAZ, Bankalar ekranından girilir — girilmişse başvuru aktif olur).","description":"REST takma adı → `bank_application.advance` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Taslak · **İzin:** `integrations.manage` · **Kanallar:** web, api, cli, mcp, assistant, system","tags":["bank_application"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","minimum":1,"description":"Başvuru kimliği (bank_application.list → applications[].id)"}},{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"bank_application.advance","x-risk":"draft","x-permission":"integrations.manage","x-channels":["web","api","cli","mcp","assistant","system"],"x-idempotency":"recommended","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/bank_application_advance.input"}}}}}},"/bank-documents":{"get":{"operationId":"rest_get_bank_documents","summary":"Banka evraklarını (şirket bilgilerinden üretilen başvuru/talimat belgeleri) listeler: banka, başlık, durum (hazır / eksik bilgi nedeniyle taslak / imzalandı…), eksik alanlar, dosya adı; ayrıca henüz üretilmemiş şablonlar (pending_templates, template_id ile bank_document.generate).","description":"REST takma adı → `bank_document.list` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `documents.view` · **Kanallar:** web, api, cli, mcp, assistant","tags":["bank_document"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"bank_document.list","x-risk":"read","x-permission":"documents.view","x-channels":["web","api","cli","mcp","assistant"],"x-idempotency":"optional","x-rest-alias":true}},"/bank-documents/generate":{"post":{"operationId":"rest_post_bank_documents_generate","summary":"Şirket bilgilerinden banka evraklarını üretir: scope=template (tek şablon, template_id), provider (bir bankanın tüm evrakları, provider_slug), common (tüm bankalar için ortak evraklar) veya all (seçili tüm bankalar). Eksik şirket bilgisi olan evrak \"taslak\" kalır ve eksik alanlar listelenir (company.settings.update ile tamamlanıp yeniden üretilir).","description":"REST takma adı → `bank_document.generate` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Taslak · **İzin:** `documents.generate` · **Kanallar:** web, api, cli, mcp, assistant","tags":["bank_document"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"bank_document.generate","x-risk":"draft","x-permission":"documents.generate","x-channels":["web","api","cli","mcp","assistant"],"x-idempotency":"recommended","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/bank_document_generate.input"}}}}}},"/bank-documents/{id}/regenerate":{"post":{"operationId":"rest_post_bank_documents_by_id_regenerate","summary":"Bir banka evrakını güncel şirket bilgileri ve şablonun en güncel sürümüyle yeniden üretir (şirket bilgisi değiştikten veya eksik alan tamamlandıktan sonra).","description":"REST takma adı → `bank_document.regenerate` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Taslak · **İzin:** `documents.generate` · **Kanallar:** web, api, cli, mcp, assistant","tags":["bank_document"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","minimum":1,"description":"Evrak kimliği (bank_document.list → documents[].id)"}},{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"bank_document.regenerate","x-risk":"draft","x-permission":"documents.generate","x-channels":["web","api","cli","mcp","assistant"],"x-idempotency":"recommended","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/bank_document_regenerate.input"}}}}}},"/bank-documents/{id}/download":{"get":{"operationId":"rest_get_bank_documents_by_id_download","summary":"Hazır (üretilmiş) bir banka evrakının dosyasını indirir; asistanda sohbete indirilebilir dosya olarak eklenir.","description":"REST takma adı → `bank_document.download` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `documents.view` · **Kanallar:** web, api, cli, mcp, assistant","tags":["bank_document"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","minimum":1,"description":"Evrak kimliği (bank_document.list → documents[].id)"}},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"bank_document.download","x-risk":"read","x-permission":"documents.view","x-channels":["web","api","cli","mcp","assistant"],"x-idempotency":"optional","x-rest-alias":true}},"/bank-documents/{id}":{"delete":{"operationId":"rest_delete_bank_documents_by_id","summary":"Bir banka evrakını siler (dosya kaldırılır); gerektiğinde bank_document.generate ile yeniden üretilebilir.","description":"REST takma adı → `bank_document.delete` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `documents.generate` · **Kanallar:** web, api, cli, mcp, assistant","tags":["bank_document"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","minimum":1,"description":"Evrak kimliği (bank_document.list → documents[].id)"}},{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"bank_document.delete","x-risk":"commit","x-permission":"documents.generate","x-channels":["web","api","cli","mcp","assistant"],"x-idempotency":"required","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/bank_document_delete.input"}}}}}},"/accountant-access":{"get":{"operationId":"rest_get_accountant_access","summary":"Şirketin mali müşavir (büro) bağlantılarını listeler: büro adı, durum (aktif / davet bekliyor), verilen izinler ve büroda bu şirketi gören kişiler; ayrıca büroya verilebilecek izinler ve varsayılan set.","description":"REST takma adı → `accountant_access.list` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `accountant_access.manage` · **Kanallar:** web, api, cli, mcp, assistant","tags":["accountant_access"],"parameters":[{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"accountant_access.list","x-risk":"read","x-permission":"accountant_access.manage","x-channels":["web","api","cli","mcp","assistant"],"x-idempotency":"optional","x-rest-alias":true}},"/accountant-access/document-requests":{"get":{"operationId":"rest_get_accountant_access_document_requests","summary":"Mali müşavir bürosunun şirketten talep ettiği belgeleri listeler: başlık, açıklama, dönem, son tarih, durum (açık / yüklendi / tamamlandı), yüklenmiş dosyalar. Kullanıcı dosyayı sohbete eklerse chat_file.document_request_upload ile talebe yüklenir.","description":"REST takma adı → `accountant_access.document_requests` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `accountant_access.manage|documents.view` · **Kanallar:** web, api, cli, mcp, assistant","tags":["accountant_access"],"parameters":[{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["open","uploaded","completed","cancelled"],"description":"Durum süzgeci (boş = hepsi; açık olanlar önce)"},"description":"Durum süzgeci (boş = hepsi; açık olanlar önce)"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"accountant_access.document_requests","x-risk":"read","x-permission":"accountant_access.manage|documents.view","x-channels":["web","api","cli","mcp","assistant"],"x-idempotency":"optional","x-rest-alias":true}},"/accountant-access/document-requests/{id}/files":{"post":{"operationId":"rest_post_accountant_access_document_requests_by_id_files","summary":"Mali müşavir bürosunun belge talebine şirket adına dosya yükler (multipart/form-data \"file\"; PDF, JPG, PNG, XLS(X), CSV, XML, ZIP, DOC(X), TXT; en çok 20 MB). Talep \"yüklendi\" durumuna geçer; tamamlanmış/iptal talebe yüklenemez.","description":"REST takma adı → `accountant_access.document_request_upload` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Taslak · **İzin:** `accountant_access.manage|documents.view` · **Kanallar:** web, api, cli","tags":["accountant_access"],"parameters":[{"name":"id","in":"path","required":true,"description":"Girdi alanı: `request_id`","schema":{"type":"integer","minimum":1,"description":"Belge talebi kimliği (accountant_access.document_requests → requests[].id)"}},{"$ref":"#/components/parameters/IdempotencyKey"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"}},"x-operation":"accountant_access.document_request_upload","x-risk":"draft","x-permission":"accountant_access.manage|documents.view","x-channels":["web","api","cli"],"x-idempotency":"recommended","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/accountant_access_document_request_upload.input"}},"multipart/form-data":{"schema":{"$ref":"#/components/schemas/accountant_access_document_request_upload.input"}}}}}},"/accountant-access/document-requests/{id}/files/{fileId}":{"get":{"operationId":"rest_get_accountant_access_document_requests_by_id_files_by_fileid","summary":"Mali müşavirin belge talebine yüklenmiş bir dosyayı döner (şirket tarafı): dosya adı, MIME, boyut ve base64 içerik (accountant_access.document_requests → requests[].files[].id).","description":"REST takma adı → `accountant_access.document_request_download` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Okuma · **İzin:** `accountant_access.manage|documents.view` · **Kanallar:** web, api, cli, mcp, assistant","tags":["accountant_access"],"parameters":[{"name":"id","in":"path","required":true,"description":"Girdi alanı: `request_id`","schema":{"type":"integer","minimum":1,"description":"Belge talebi kimliği (accountant_access.document_requests → requests[].id)"}},{"name":"fileId","in":"path","required":true,"description":"Girdi alanı: `file_id`","schema":{"type":"integer","minimum":1,"description":"Dosya kimliği (requests[].files[].id)"}},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"}},"x-operation":"accountant_access.document_request_download","x-risk":"read","x-permission":"accountant_access.manage|documents.view","x-channels":["web","api","cli","mcp","assistant"],"x-idempotency":"optional","x-rest-alias":true}},"/accountant-access/invitations":{"post":{"operationId":"rest_post_accountant_access_invitations","summary":"Mali müşavir bürosunu VKN veya e-posta ile şirkete davet eder (yalnız doğrulanmış bürolar); büro onayladığında verilen izinlerle erişim başlar. İzin verilmezse varsayılan \"Mali müşavir\" seti. Ekip, şirket bilgileri ve müşavir yönetimi izinleri büroya verilemez.","description":"REST takma adı → `accountant_access.invite` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `accountant_access.manage` · **Kanallar:** web, api, cli, mcp, assistant","tags":["accountant_access"],"parameters":[{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"accountant_access.invite","x-risk":"commit","x-permission":"accountant_access.manage","x-channels":["web","api","cli","mcp","assistant"],"x-idempotency":"required","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/accountant_access_invite.input"}}}}}},"/accountant-access/{id}/approve":{"post":{"operationId":"rest_post_accountant_access_by_id_approve","summary":"Bir mali müşavir bürosunun şirkete gönderdiği bağlantı davetini onaylar ve verilecek izinleri belirler (boş = varsayılan set). Onaylanınca büro ekibi şirketin muhasebesine erişir.","description":"REST takma adı → `accountant_access.approve` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `accountant_access.manage` · **Kanallar:** web, api, cli, mcp, assistant","tags":["accountant_access"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","minimum":1,"description":"Bağlantı kimliği (accountant_access.list → connections[].id)"}},{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"accountant_access.approve","x-risk":"commit","x-permission":"accountant_access.manage","x-channels":["web","api","cli","mcp","assistant"],"x-idempotency":"required","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/accountant_access_approve.input"}}}}}},"/accountant-access/{id}":{"patch":{"operationId":"rest_patch_accountant_access_by_id","summary":"Mali müşavir bürosuna verilen izin setini değiştirir (en az bir izin; erişimi tamamen kapatmak için accountant_access.revoke). Sahip olmayan kullanıcı yalnız kendi sahip olduğu izinleri verebilir.","description":"REST takma adı → `accountant_access.update` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `accountant_access.manage` · **Kanallar:** web, api, cli, mcp, assistant","tags":["accountant_access"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","minimum":1,"description":"Bağlantı kimliği (accountant_access.list → connections[].id)"}},{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"accountant_access.update","x-risk":"commit","x-permission":"accountant_access.manage","x-channels":["web","api","cli","mcp","assistant"],"x-idempotency":"required","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/accountant_access_update.input"}}}}},"delete":{"operationId":"rest_delete_accountant_access_by_id","summary":"Mali müşavir bürosunun şirkete erişimini anında kaldırır ya da bekleyen daveti geri çeker/reddeder; büro atamaları kapanır.","description":"REST takma adı → `accountant_access.revoke` (aynı izin, doğrulama, idempotency ve audit).\n\n**Risk:** Kesinleştirir — Idempotency-Key zorunlu · **İzin:** `accountant_access.manage` · **Kanallar:** web, api, cli, mcp, assistant","tags":["accountant_access"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","minimum":1,"description":"Bağlantı kimliği (accountant_access.list → connections[].id)"}},{"$ref":"#/components/parameters/IdempotencyKeyRequired"},{"$ref":"#/components/parameters/DryRun"},{"$ref":"#/components/parameters/CompanyId"},{"$ref":"#/components/parameters/Client"}],"responses":{"200":{"description":"Başarılı. `data` operasyon sonucudur; dry-run'da `data.dry_run = true`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"401":{"$ref":"#/components/responses/Unauthenticated"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/ValidationFailed"},"429":{"$ref":"#/components/responses/RateLimited"},"409":{"$ref":"#/components/responses/Conflict"},"428":{"$ref":"#/components/responses/IdempotencyKeyRequired"}},"x-operation":"accountant_access.revoke","x-risk":"commit","x-permission":"accountant_access.manage","x-channels":["web","api","cli","mcp","assistant"],"x-idempotency":"required","x-rest-alias":true,"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/accountant_access_revoke.input"}}}}}}},"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Entegrasyon › API Anahtarları ekranında üretilen şirket token'ı."}},"parameters":{"IdempotencyKeyRequired":{"name":"Idempotency-Key","in":"header","schema":{"type":"string","maxLength":100,"pattern":"^[A-Za-z0-9._:\\-]+$"},"required":true,"description":"Kesinleştiren (commit) işlemlerde ZORUNLU; yoksa 428. Aynı anahtar + aynı gövde 24 saat içinde kayıtlı yanıtı döndürür (`Idempotent-Replayed: true`). Dry-run'da gerekmez."},"IdempotencyKey":{"name":"Idempotency-Key","in":"header","schema":{"type":"string","maxLength":100,"pattern":"^[A-Za-z0-9._:\\-]+$"},"required":false,"description":"Önerilir: ağ yeniden denemesinde çift kayıt oluşmasını önler."},"DryRun":{"name":"dry_run","in":"query","required":false,"schema":{"type":"integer","enum":[0,1]},"description":"1 → işlem çalıştırılır, veritabanı değişikliği geri alınır; önizleme döner (`X-Dry-Run: 1` başlığı da kabul edilir)."},"CompanyId":{"name":"X-Company-Id","in":"header","required":false,"schema":{"type":"integer"},"description":"Token şirkete bağlıdır; verilirse token'ın şirketiyle aynı olmalıdır (farklıysa 403)."},"Client":{"name":"X-Client","in":"header","required":false,"schema":{"type":"string","enum":["cli","mcp"]},"description":"İstemci kanalı (yoksa `api`). Operasyonun `x-channels` listesinde olmalıdır."}},"responses":{"Unauthenticated":{"description":"Kimlik doğrulanamadı. Olası `code` değerleri: `API_UNAUTHENTICATED`, `API_TOKEN_EXPIRED`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"Forbidden":{"description":"Yetki yok. Olası `code` değerleri: `FORBIDDEN`, `API_TOKEN_SCOPE`, `API_COMPANY_FORBIDDEN`, `API_COMPANY_MISMATCH`, `API_COMPANY_SUSPENDED`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"NotFound":{"description":"Kayıt ya da işlem bulunamadı (başka şirketin kaydı da 404 döner). Olası `code` değerleri: `API_NOT_FOUND`, `OPERATION_NOT_FOUND`, modül kodları.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"ValidationFailed":{"description":"Doğrulama hatası; `errors` alan => mesaj listesi. Olası `code` değerleri: `VALIDATION_FAILED`, `API_IDEMPOTENCY_KEY_REUSED`, `API_IDEMPOTENCY_KEY_INVALID`, modül kodları (ör. `LEDGER_UNBALANCED`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"Conflict":{"description":"Aynı Idempotency-Key ile istek hâlâ işleniyor ya da kayıt durumu çakışıyor. Olası `code` değerleri: `API_IDEMPOTENCY_IN_PROGRESS`, modül kodları.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"IdempotencyKeyRequired":{"description":"Idempotency-Key başlığı eksik. Olası `code` değerleri: `API_IDEMPOTENCY_KEY_REQUIRED`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"RateLimited":{"description":"Hız sınırı (token başına dakikada 120 istek). Olası `code` değerleri: `API_RATE_LIMITED`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"schemas":{"SuccessEnvelope":{"type":"object","required":["status","data"],"properties":{"status":{"const":true},"message":{"type":["string","null"]},"data":{"description":"Operasyon sonucu (tutarlar ondalık METİN olarak döner, ör. \"1250.00\")."},"meta":{"type":"object","properties":{"operation":{"type":"string"},"dry_run":{"type":"boolean"}}}}},"ErrorEnvelope":{"type":"object","required":["status","message","code"],"properties":{"status":{"const":false},"message":{"type":"string","description":"Türkçe, kullanıcıya gösterilebilir."},"code":{"type":"string","description":"Makine tarafından okunabilir hata kodu."},"errors":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}}}}},"account_create.input":{"type":"object","properties":{"parent_code":{"type":"string","description":"Üst hesap kodu (ör. \"102.01\")"},"name":{"type":"string","maxLength":191},"code":{"type":"string","description":"İsteğe bağlı; üst kod + \".\" ile başlamalı"},"currency":{"type":"string","description":"Dövizli hesap ise ISO kodu"},"requires_contact":{"type":"boolean"},"is_kkeg":{"type":"boolean","description":"Kanunen kabul edilmeyen gider"},"description":{"type":"string","maxLength":500}},"additionalProperties":false,"required":["parent_code","name"]},"account_get.input":{"type":"object","properties":{"id":{"type":"integer"},"code":{"type":"string","description":"Hesap kodu (ör. \"120.01\")"}},"additionalProperties":false},"account_list.input":{"type":"object","properties":{"q":{"type":"string","description":"Kod veya ad içinde arama"},"code_prefix":{"type":"string","description":"Kod öneki (ör. \"120\" → 120 ve alt hesapları)"},"leaf_only":{"type":"boolean","description":"Yalnız satır yazılabilen (yaprak) hesaplar"},"active":{"type":"boolean","description":"true: yalnız aktif, false: yalnız pasif"},"page":{"type":"integer","minimum":1},"per_page":{"type":"integer","minimum":1,"maximum":1000}},"additionalProperties":false},"account_update.input":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string","maxLength":191},"is_active":{"type":"boolean"},"currency":{"type":["string","null"]},"requires_contact":{"type":"boolean"},"is_kkeg":{"type":"boolean"},"description":{"type":["string","null"],"maxLength":500}},"additionalProperties":false,"required":["id"]},"account_mapping_list.input":{"type":"object","properties":{},"additionalProperties":false},"account_mapping_update.input":{"type":"object","properties":{"key":{"type":"string","maxLength":64},"account_id":{"type":"integer"}},"additionalProperties":false,"required":["key","account_id"]},"accountant_access_approve.input":{"type":"object","properties":{"id":{"type":"integer","minimum":1,"description":"Bağlantı kimliği (accountant_access.list → connections[].id)"},"permissions":{"type":"array","items":{"type":"string"},"description":"Verilecek izinler; boş = varsayılan set"}},"additionalProperties":false,"required":["id"]},"accountant_access_document_request_download.input":{"type":"object","properties":{"request_id":{"type":"integer","minimum":1,"description":"Belge talebi kimliği (accountant_access.document_requests → requests[].id)"},"file_id":{"type":"integer","minimum":1,"description":"Dosya kimliği (requests[].files[].id)"}},"additionalProperties":false,"required":["request_id","file_id"]},"accountant_access_document_request_upload.input":{"type":"object","properties":{"request_id":{"type":"integer","minimum":1,"description":"Belge talebi kimliği (accountant_access.document_requests → requests[].id)"},"file":{"type":"string","format":"binary","description":"multipart/form-data dosya alanı (en çok 20 MB)"}},"additionalProperties":false,"required":["request_id","file"]},"accountant_access_document_requests.input":{"type":"object","properties":{"status":{"type":"string","enum":["open","uploaded","completed","cancelled"],"description":"Durum süzgeci (boş = hepsi; açık olanlar önce)"}},"additionalProperties":false},"accountant_access_invite.input":{"type":"object","properties":{"identifier":{"type":"string","description":"Büronun VKN'si veya e-posta adresi"},"permissions":{"type":"array","items":{"type":"string"},"description":"Verilecek izinler (accountant_access.list → grantable_permissions[].value); boş = varsayılan set"}},"additionalProperties":false,"required":["identifier"]},"accountant_access_list.input":{"type":"object","properties":{},"additionalProperties":false},"accountant_access_revoke.input":{"type":"object","properties":{"id":{"type":"integer","minimum":1,"description":"Bağlantı kimliği (accountant_access.list → connections[].id)"}},"additionalProperties":false,"required":["id"]},"accountant_access_update.input":{"type":"object","properties":{"id":{"type":"integer","minimum":1,"description":"Bağlantı kimliği (accountant_access.list → connections[].id)"},"permissions":{"type":"array","items":{"type":"string"},"description":"Yeni izin seti (tam liste)"}},"additionalProperties":false,"required":["id","permissions"]},"attachment_delete.input":{"type":"object","properties":{"id":{"type":"integer","description":"Ek kimliği"}},"additionalProperties":false,"required":["id"]},"attachment_download.input":{"type":"object","properties":{"id":{"type":"integer","description":"Ek kimliği (attachment.list / attachment.search → attachments[].id)"}},"additionalProperties":false,"required":["id"]},"attachment_list.input":{"type":"object","properties":{"attachable_type":{"type":"string","enum":["journal_entry","invoice","expense","payment","fixed_asset"],"description":"Ekin bağlanacağı kayıt türü"},"attachable_id":{"type":"integer"}},"additionalProperties":false,"required":["attachable_type","attachable_id"]},"attachment_search.input":{"type":"object","properties":{"q":{"type":"string","description":"Dosya adında arama"},"attachable_type":{"type":"string","enum":["journal_entry","invoice","expense","payment","fixed_asset"],"description":"Kayıt türü"},"from":{"type":"string","format":"date","description":"Yükleme tarihi başlangıcı (YYYY-AA-GG)"},"to":{"type":"string","format":"date","description":"Yükleme tarihi bitişi (YYYY-AA-GG)"},"page":{"type":"integer","minimum":1},"per_page":{"type":"integer","minimum":1,"maximum":100}},"additionalProperties":false},"attachment_upload.input":{"type":"object","properties":{"attachable_type":{"type":"string","enum":["journal_entry","invoice","expense","payment","fixed_asset"],"description":"Ekin bağlanacağı kayıt türü"},"attachable_id":{"type":"integer"},"file":{"type":"string","format":"binary","description":"multipart/form-data dosya alanı"}},"additionalProperties":false,"required":["attachable_type","attachable_id","file"]},"background_tasks_list.input":{"type":"object","properties":{"source":{"type":"string","enum":["imports","closing","edocuments","bank_postings","bank_sync"]},"state":{"type":"string","enum":["all","active","failed","done"]},"limit":{"type":"integer","minimum":1,"maximum":200}},"additionalProperties":false},"bank_account_balances.input":{"type":"object","properties":{"bank_account_ids":{"type":"array","items":{"type":"integer","minimum":1},"description":"Banka hesabı kimlikleri (bank_account.list); boş = tüm hesaplar"},"currency":{"type":"string","enum":["TRY","USD","EUR"],"description":"Toplamın gösterileceği para birimi (varsayılan şirket para birimi)"}},"additionalProperties":false},"bank_account_create.input":{"type":"object","properties":{"name":{"type":"string","maxLength":190,"description":"Hesabın görünen adı (ör. \"Garanti TL Vadesiz\")"},"provider_slug":{"type":"string","enum":["ziraat","isbank","garanti","vakifbank","halkbank"],"description":"Desteklenen banka kodu; verilirse banka adı buradan gelir"},"bank_name":{"type":"string","description":"Banka adı (provider_slug yoksa zorunlu)"},"iban":{"type":"string","description":"TR ile başlayan IBAN (boşluklu da olabilir); IBAN veya account_number zorunlu"},"account_number":{"type":"string","description":"Hesap numarası (harf, rakam, - ve /)"},"branch_name":{"type":"string","description":"Şube adı"},"branch_code":{"type":"string","description":"Şube kodu"},"currency":{"type":"string","enum":["TRY","USD","EUR","GBP","CHF"],"description":"Hesap para birimi"},"include_in_applications":{"type":"boolean","description":"Banka başvuru formlarında listelensin (varsayılan true)"},"note":{"type":"string","description":"İç not"}},"additionalProperties":false,"required":["name","currency"]},"bank_account_delete.input":{"type":"object","properties":{"id":{"type":"integer","minimum":1,"description":"Banka hesabı kimliği (bank_account.list → accounts[].id)"}},"additionalProperties":false,"required":["id"]},"bank_account_get.input":{"type":"object","properties":{"id":{"type":"integer","minimum":1,"description":"Banka hesabı kimliği (bank_account.list → accounts[].id)"}},"additionalProperties":false,"required":["id"]},"bank_account_link_ledger.input":{"type":"object","properties":{"bank_account_id":{"type":"integer"},"all":{"type":"boolean","description":"true: tüm bağlanmamış banka hesapları"}},"additionalProperties":false},"bank_account_list.input":{"type":"object","properties":{"integration_id":{"type":"integer","minimum":1,"description":"Yalnız bu banka bağlantısının hesapları"},"currency":{"type":"string","minLength":3,"maxLength":3},"include_inactive":{"type":"boolean","description":"Pasif hesaplar da dönsün (varsayılan true)"}},"additionalProperties":false},"bank_account_update.input":{"type":"object","properties":{"id":{"type":"integer","minimum":1,"description":"Banka hesabı kimliği (bank_account.list → accounts[].id)"},"name":{"type":"string","description":"Yeni hesap adı"},"provider_slug":{"type":"string","enum":["ziraat","isbank","garanti","vakifbank","halkbank"],"description":"Banka kodu (yalnız elle tanıtılan hesap)"},"bank_name":{"type":"string","description":"Banka adı (yalnız elle tanıtılan hesap)"},"iban":{"type":"string","description":"IBAN (yalnız elle tanıtılan hesap)"},"account_number":{"type":"string","description":"Hesap numarası (yalnız elle tanıtılan hesap)"},"branch_name":{"type":"string","description":"Şube adı"},"branch_code":{"type":"string","description":"Şube kodu"},"currency":{"type":"string","enum":["TRY","USD","EUR","GBP","CHF"],"description":"Para birimi (yalnız elle tanıtılan hesap)"},"include_in_applications":{"type":"boolean","description":"Banka başvuru formlarında listelensin"},"exclude_from_reports":{"type":"boolean","description":"Hesap kasa/nakit raporlarından ve panel toplamlarından hariç tutulsun"},"note":{"type":"string","description":"İç not"}},"additionalProperties":false,"required":["id"]},"bank_application_advance.input":{"type":"object","properties":{"id":{"type":"integer","minimum":1,"description":"Başvuru kimliği (bank_application.list → applications[].id)"},"stage":{"type":"string","enum":["submitted","credentials"],"description":"submitted = form bankaya iletildi, credentials = banka kullanıcı bilgilerini gönderdi"}},"additionalProperties":false,"required":["id","stage"]},"bank_application_list.input":{"type":"object","properties":{},"additionalProperties":false},"bank_document_delete.input":{"type":"object","properties":{"id":{"type":"integer","minimum":1,"description":"Evrak kimliği (bank_document.list → documents[].id)"}},"additionalProperties":false,"required":["id"]},"bank_document_download.input":{"type":"object","properties":{"id":{"type":"integer","minimum":1,"description":"Evrak kimliği (bank_document.list → documents[].id)"}},"additionalProperties":false,"required":["id"]},"bank_document_generate.input":{"type":"object","properties":{"scope":{"type":"string","enum":["template","provider","common","all"],"description":"template = tek şablon, provider = bir banka, common = ortak evraklar, all = seçili tüm bankalar"},"template_id":{"type":"integer","minimum":1,"description":"scope=template iken şablon kimliği (bank_document.list → pending_templates[].template_id)"},"provider_slug":{"type":"string","enum":["ziraat","isbank","garanti","vakifbank","halkbank"],"description":"scope=provider iken banka kodu"}},"additionalProperties":false,"required":["scope"]},"bank_document_list.input":{"type":"object","properties":{},"additionalProperties":false},"bank_document_regenerate.input":{"type":"object","properties":{"id":{"type":"integer","minimum":1,"description":"Evrak kimliği (bank_document.list → documents[].id)"}},"additionalProperties":false,"required":["id"]},"bank_integration_list.input":{"type":"object","properties":{"runs_limit":{"type":"integer","minimum":0,"maximum":50,"description":"Son senkron denemesi sayısı (varsayılan 10)"}},"additionalProperties":false},"bank_integration_retry.input":{"type":"object","properties":{"integration_id":{"type":"integer","minimum":1,"description":"Banka bağlantısı kimliği (bank_integration.list)"}},"additionalProperties":false,"required":["integration_id"]},"bank_integration_status.input":{"type":"object","properties":{"integration_id":{"type":"integer","minimum":1,"description":"Banka bağlantısı kimliği (bank_integration.list)"},"runs_limit":{"type":"integer","minimum":0,"maximum":50,"description":"Varsayılan 10"}},"additionalProperties":false,"required":["integration_id"]},"bank_integration_sync.input":{"type":"object","properties":{"integration_id":{"type":"integer","minimum":1,"description":"Banka bağlantısı kimliği; verilmezse uygun tüm bağlantılar"}},"additionalProperties":false},"bank_posting_approve.input":{"type":"object","properties":{"bank_transaction_id":{"type":"integer","description":"Banka hareketi kimliği (bank_transactions.id)"},"account_id":{"type":"integer","description":"Karşı hesap (yaprak); verilirse öneri bu hesapla kesinleşir"},"contact_id":{"type":"integer","description":"Cari; hesapsız verilirse tahsilat/ödeme kaydı oluşur"},"allocations":{"type":"array","items":{"type":"object","required":["invoice_id","amount"],"properties":{"invoice_id":{"type":"integer"},"amount":{"type":"string","description":"Fatura dövizinde kapatılacak tutar"}},"additionalProperties":false}},"description":{"type":"string","maxLength":500}},"additionalProperties":false,"required":["bank_transaction_id"]},"bank_posting_approve_many.input":{"type":"object","properties":{"bank_transaction_ids":{"type":"array","minItems":1,"maxItems":200,"items":{"type":"integer"}}},"additionalProperties":false,"required":["bank_transaction_ids"]},"bank_posting_ignore.input":{"type":"object","properties":{"bank_transaction_id":{"type":"integer","description":"Banka hareketi kimliği (bank_transactions.id)"},"reason":{"type":"string","maxLength":500}},"additionalProperties":false,"required":["bank_transaction_id"]},"bank_posting_list.input":{"type":"object","properties":{"status":{"type":"string","enum":["pending","proposed","posted","ignored","error"],"description":"Varsayılan proposed (onay bekleyen öneriler)"},"bank_account_id":{"type":"integer"},"direction":{"type":"string","enum":["in","out"]},"from":{"type":"string","format":"date"},"to":{"type":"string","format":"date"},"q":{"type":"string","description":"Açıklama / karşı taraf / referans araması"},"page":{"type":"integer","minimum":1},"per_page":{"type":"integer","minimum":1,"maximum":200}},"additionalProperties":false},"bank_posting_open_items.input":{"type":"object","properties":{"contact_id":{"type":"integer"},"direction":{"type":"string","enum":["in","out"]}},"additionalProperties":false,"required":["contact_id","direction"]},"bank_posting_process.input":{"type":"object","properties":{"bank_transaction_ids":{"type":"array","maxItems":200,"items":{"type":"integer"}},"all_pending":{"type":"boolean","description":"Başlangıç tarihinden itibaren bekleyen hareketler (ilk 200)"}},"additionalProperties":false},"bank_posting_reprocess.input":{"type":"object","properties":{"bank_transaction_id":{"type":"integer","description":"Banka hareketi kimliği (bank_transactions.id)"}},"additionalProperties":false,"required":["bank_transaction_id"]},"bank_posting_settings.input":{"type":"object","properties":{"enabled":{"type":"boolean"},"start_date":{"type":"string","format":"date","description":"Bu tarihten (dahil) önceki hareketler otomatik muhasebeleşmez"},"link_accounts":{"type":"boolean","description":"Bağlanmamış banka hesaplarını 102 altına bağla (varsayılan true)"}},"additionalProperties":false,"required":["enabled"]},"bank_reconciliation_status.input":{"type":"object","properties":{"bank_account_id":{"type":"integer"},"as_of":{"type":"string","format":"date","description":"Muhasebe bakiyesi tarihi (varsayılan bugün)"}},"additionalProperties":false},"bank_report_cash.input":{"type":"object","properties":{"bank_account_ids":{"type":"array","items":{"type":"integer","minimum":1},"description":"Banka hesabı kimlikleri (bank_account.list); boş = tüm hesaplar"},"from":{"type":"string","format":"date","description":"Başlangıç, YYYY-AA-GG"},"to":{"type":"string","format":"date","description":"Bitiş (dahil), YYYY-AA-GG"},"currency":{"type":"string","enum":["TRY","USD","EUR"],"description":"Rapor para birimi (varsayılan şirket para birimi)"},"include_days":{"type":"boolean","description":"Gün gün satırlar dönsün (varsayılan true; false → yalnız toplamlar ve hesaplar)"}},"additionalProperties":false,"required":["from","to"]},"bank_report_cashflow.input":{"type":"object","properties":{"days":{"type":"integer","enum":[7,30,90,365],"description":"Panel penceresi: bugün biten son N gün (web Panel ?days=); from/to ile birlikte gönderilmez"},"from":{"type":"string","format":"date","description":"Başlangıç YYYY-AA-GG (varsayılan: bitişten 29 gün önce)"},"to":{"type":"string","format":"date","description":"Bitiş YYYY-AA-GG, dahil (varsayılan: bugün)"},"granularity":{"type":"string","enum":["day","week","month"],"description":"Kırılım (varsayılan: 90 günden uzunsa hafta, değilse gün)"},"currency":{"type":"string","enum":["TRY","USD","EUR"],"description":"Rapor para birimi (varsayılan şirket para birimi)"}},"additionalProperties":false},"bank_transaction_get.input":{"type":"object","properties":{"transaction_id":{"type":"integer","minimum":1,"description":"Banka hareketi kimliği (bank_transaction.list → transactions[].id)"}},"additionalProperties":false,"required":["transaction_id"]},"bank_transaction_list.input":{"type":"object","properties":{"bank_account_ids":{"type":"array","items":{"type":"integer","minimum":1},"description":"Banka hesabı kimlikleri (bank_account.list); boş = tüm hesaplar"},"bank_account_id":{"type":"integer","minimum":1,"description":"Tek hesap (bank_account_ids ile birleşir)"},"bank":{"type":"string","enum":["ziraat","isbank","garanti","vakifbank","halkbank"],"description":"Banka (sağlayıcı kodu)"},"from":{"type":"string","format":"date","description":"Başlangıç (dahil), YYYY-AA-GG"},"to":{"type":"string","format":"date","description":"Bitiş (dahil), YYYY-AA-GG"},"direction":{"type":"string","enum":["inbound","outbound","in","out"],"description":"inbound/in = giriş, outbound/out = çıkış"},"amount_min":{"type":"string","description":"En az tutar (pozitif; \"1.250,00\" veya \"1250.00\")"},"amount_max":{"type":"string","description":"En çok tutar (pozitif)"},"currency":{"type":"string","minLength":3,"maxLength":3,"description":"ISO 4217 (TRY, USD, EUR…)"},"counterparty":{"type":"string","maxLength":120,"description":"Karşı taraf unvanı, IBAN'ı veya VKN/TCKN'si (içerir)"},"description":{"type":"string","maxLength":120,"description":"Açıklama içerir"},"reference":{"type":"string","maxLength":120,"description":"Referans / dekont no içerir"},"q":{"type":"string","maxLength":120,"description":"Serbest arama (açıklama, karşı taraf, referans, IBAN)"},"sort":{"type":"string","enum":["date_desc","date_asc","amount_desc","amount_asc"],"description":"Varsayılan date_desc"},"include_summary":{"type":"boolean","description":"Para birimi bazında toplamlar (varsayılan true)"},"include_filter_options":{"type":"boolean","description":"Süzgeç seçenekleri (hesaplar, dövizler, yönler; varsayılan true)"},"page":{"type":"integer","minimum":1},"per_page":{"type":"integer","minimum":1,"maximum":200,"description":"Varsayılan 50"}},"additionalProperties":false},"bank_transaction_receipt.input":{"type":"object","properties":{"transaction_id":{"type":"integer","minimum":1,"description":"Banka hareketi kimliği"},"include_content":{"type":"boolean","description":"Dosya içeriği base64 olarak dönsün (varsayılan true; asistan kanalında her zaman false)"}},"additionalProperties":false,"required":["transaction_id"]},"billing_usage.input":{"type":"object","properties":{},"additionalProperties":false},"bulk_pdf_create.input":{"type":"object","required":["kind","ids"],"properties":{"kind":{"type":"string","enum":["invoices","journal_entries"],"description":"invoices (faturalar) veya journal_entries (fişler)"},"ids":{"type":"array","items":{"type":"integer"},"minItems":1,"maxItems":200}},"additionalProperties":false},"bulk_pdf_status.input":{"type":"object","required":["id"],"properties":{"id":{"type":"string","description":"bulk_pdf.create dönüşündeki export.id"}},"additionalProperties":false},"cash_account_create.input":{"type":"object","properties":{"name":{"type":"string","maxLength":191},"currency":{"type":"string","minLength":3,"maxLength":3,"description":"Varsayılan TRY; sonradan değiştirilemez"},"is_active":{"type":"boolean"}},"additionalProperties":false,"required":["name"]},"cash_account_list.input":{"type":"object","properties":{"include_inactive":{"type":"boolean"}},"additionalProperties":false},"cash_account_update.input":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string","maxLength":191},"is_active":{"type":"boolean"}},"additionalProperties":false,"required":["id"]},"closing_checklist.input":{"type":"object","properties":{"year":{"type":"integer","description":"Mali yıl (ör. 2026)"}},"additionalProperties":false,"required":["year"]},"closing_overview.input":{"type":"object","properties":{"year":{"type":"integer"},"period_no":{"type":"integer","minimum":1,"maximum":12,"description":"Boşsa yıl sonu adımları"}},"additionalProperties":false,"required":["year"]},"closing_post.input":{"type":"object","properties":{"run_id":{"type":"integer","description":"closing.preview çıktısındaki run.id"}},"additionalProperties":false,"required":["run_id"]},"closing_preview.input":{"type":"object","properties":{"year":{"type":"integer"},"period_no":{"type":"integer","minimum":1,"maximum":12,"description":"Aylık adımlar için ay (KDV mahsubu, aylık amortisman / kur değerleme)"},"step":{"type":"string","enum":["vat_offset","fx_revaluation","rediscount","depreciation","cogs","cost_reflection","pl_transfer","tax_provision","net_profit","closing","opening","retained_transfer"]},"params":{"type":"object","description":"Adım parametreleri: cogs → ending_inventory_try; tax_provision → corporate_tax_rate, kkeg_add, exempt_deduct, prior_losses; retained_transfer → date"}},"additionalProperties":false,"required":["year","step"]},"closing_reopen_year.input":{"type":"object","properties":{"year":{"type":"integer","description":"Yeniden açılacak kapanmış mali yıl"},"reason":{"type":"string","minLength":10,"maxLength":500,"description":"Yeniden açma gerekçesi (denetim kaydına yazılır)"},"reverse_result_steps":{"type":"boolean","description":"true: net kâr, vergi karşılığı, 690 devri ve 7/A yansıtma fişleri de ters kaydedilir (gelir tablosu düzeltmesi için)"}},"additionalProperties":false,"required":["year","reason"]},"closing_reopen_year_preview.input":{"type":"object","properties":{"year":{"type":"integer","description":"Yeniden açılması düşünülen kapanmış mali yıl"},"reverse_result_steps":{"type":"boolean","description":"true: net kâr, vergi karşılığı, 690 devri ve 7/A yansıtma fişleri de ters kaydedilecek gibi önizle"}},"additionalProperties":false,"required":["year"]},"company_get.input":{"type":"object","properties":{},"additionalProperties":false},"company_list.input":{"type":"object","properties":{},"additionalProperties":false},"company_settings_get.input":{"type":"object","properties":{},"additionalProperties":false},"company_settings_update.input":{"type":"object","properties":{"name":{"type":"string","maxLength":255,"description":"Şirket adı"},"legal_name":{"type":"string","maxLength":255,"description":"Ticaret unvanı"},"tax_office":{"type":"string","maxLength":255,"description":"Vergi dairesi"},"tax_number":{"type":"string","pattern":"^[0-9]{10,11}$","description":"VKN (10) / TCKN (11)"},"trade_registry_no":{"type":"string","maxLength":64},"mersis_no":{"type":"string","pattern":"^[0-9]{16}$"},"address":{"type":"string","maxLength":500},"city":{"type":"string","maxLength":100},"district":{"type":"string","maxLength":100},"postal_code":{"type":"string","pattern":"^[0-9]{5}$"},"phone":{"type":"string","maxLength":32},"email":{"type":"string","format":"email","maxLength":255},"website":{"type":"string","maxLength":255},"authorized_person_name":{"type":"string","maxLength":255},"authorized_person_title":{"type":"string","maxLength":255},"authorized_person_phone":{"type":"string","maxLength":32},"authorized_person_email":{"type":"string","format":"email","maxLength":255},"default_currency":{"type":"string","enum":["TRY","USD","EUR"]},"recipient_emails":{"type":"array","maxItems":10,"items":{"type":"string","format":"email"},"description":"Kasa raporu e-posta alıcıları (listenin tamamı; gönderilen liste mevcut listenin yerine geçer)"},"daily_cash_report":{"type":"boolean"},"daily_report_hour":{"type":"integer","minimum":0,"maximum":23},"weekly_summary":{"type":"boolean"}},"additionalProperties":false},"company_copy_run.input":{"type":"object","properties":{"source_company_id":{"type":"integer","description":"Kaynak şirket (üye olunan veya büro üzerinden erişilen)"},"what":{"type":"array","items":{"type":"string","enum":["accounts","journal_templates","posting_rules","expense_categories","account_mappings"]},"minItems":1}},"additionalProperties":false,"required":["source_company_id","what"]},"contact_archive.input":{"type":"object","properties":{"id":{"type":"integer"}},"additionalProperties":false,"required":["id"]},"contact_balances.input":{"type":"object","properties":{"q":{"type":"string"},"type":{"type":"string","enum":["customer","supplier","both","employee","other"]},"side":{"type":"string","enum":["receivable","payable","nonzero"],"description":"receivable: bize borçlu (B), payable: bizim borçlu olduğumuz (A), nonzero: bakiyesi olan"},"to":{"type":"string","format":"date","description":"Bu tarihe kadarki bakiye"},"include_inactive":{"type":"boolean"},"page":{"type":"integer","minimum":1},"per_page":{"type":"integer","minimum":1,"maximum":200}},"additionalProperties":false},"contact_create.input":{"type":"object","properties":{"type":{"type":"string","enum":["customer","supplier","both","employee","other"],"description":"customer (müşteri), supplier (tedarikçi), both, employee, other"},"kind":{"type":"string","enum":["company","person"],"description":"company (VKN) / person (TCKN)"},"code":{"type":"string","maxLength":32,"description":"Boşsa CR-000001 serisinden verilir"},"name":{"type":"string","maxLength":255,"description":"Unvan veya ad soyad"},"first_name":{"type":"string","maxLength":100},"last_name":{"type":"string","maxLength":100},"tax_number":{"type":"string","maxLength":20,"description":"VKN (10) / TCKN (11); yurtiçi carilerde kontrol basamağı doğrulanır"},"tax_office":{"type":"string","maxLength":100},"is_foreign":{"type":"boolean","description":"Yurtdışı cari → 120.02 / 320.02"},"email":{"type":"string","format":"email"},"phone":{"type":"string","maxLength":32},"address":{"type":"string","maxLength":500},"district":{"type":"string","maxLength":100},"city":{"type":"string","maxLength":100},"postal_code":{"type":"string","maxLength":16},"country":{"type":"string","minLength":2,"maxLength":2},"currency":{"type":"string","minLength":3,"maxLength":3},"payment_term_days":{"type":"integer","minimum":0},"default_expense_account_id":{"type":"integer"},"default_revenue_account_id":{"type":"integer"},"tags":{"type":"array","items":{"type":"string","maxLength":50}},"notes":{"type":"string"},"is_active":{"type":"boolean"},"bank_accounts":{"type":"array","description":"Verilirse carinin IBAN listesi bununla eşitlenir","items":{"type":"object","required":["iban"],"properties":{"iban":{"type":"string"},"bank_name":{"type":"string"},"currency":{"type":"string","minLength":3,"maxLength":3}},"additionalProperties":false}}},"additionalProperties":false,"required":["type","name"]},"contact_get.input":{"type":"object","properties":{"id":{"type":"integer"}},"additionalProperties":false,"required":["id"]},"contact_list.input":{"type":"object","properties":{"q":{"type":"string","description":"Ad, kod, VKN/TCKN veya e-posta araması"},"type":{"type":"string","enum":["customer","supplier","both","employee","other"]},"side":{"type":"string","enum":["customer","supplier"],"description":"customer: müşteri+both, supplier: tedarikçi+both"},"status":{"type":"string","enum":["active","inactive","archived","all"],"description":"Varsayılan active"},"needs_review":{"type":"boolean"},"with_balance":{"type":"boolean","description":"Kesin fişlerden cari bakiyesi (borç − alacak)"},"page":{"type":"integer","minimum":1},"per_page":{"type":"integer","minimum":1,"maximum":200}},"additionalProperties":false},"contact_lookup.input":{"type":"object","properties":{"q":{"type":"string","maxLength":100,"description":"Ad veya VKN/TCKN araması (kod ve e-postada aranmaz)"},"type":{"type":"string","enum":["customer","supplier","both","employee","other"],"description":"Tür süzgeci (ör. employee: çalışan ödedi masrafı)"},"side":{"type":"string","enum":["customer","supplier"],"description":"customer: müşteri + her ikisi, supplier: tedarikçi + her ikisi"},"limit":{"type":"integer","minimum":1,"maximum":50,"description":"En çok sonuç (varsayılan 20, web seçicisi gibi)"}},"additionalProperties":false},"contact_merge.input":{"type":"object","properties":{"source_id":{"type":"integer","description":"Kaldırılacak (mükerrer) cari"},"target_id":{"type":"integer","description":"Kalacak cari"},"date":{"type":"string","format":"date","description":"Virman fişi tarihi (boşsa bugün)"}},"additionalProperties":false,"required":["source_id","target_id"]},"contact_merge_preview.input":{"type":"object","properties":{"source_id":{"type":"integer","description":"Kaldırılacak (mükerrer) cari"},"target_id":{"type":"integer","description":"Kalacak cari"}},"additionalProperties":false,"required":["source_id","target_id"]},"contact_statement.input":{"type":"object","properties":{"id":{"type":"integer"},"from":{"type":"string","format":"date"},"to":{"type":"string","format":"date"},"currency":{"type":"string","minLength":3,"maxLength":3,"description":"Yalnız bu dövizdeki satırlar"},"page":{"type":"integer","minimum":1},"per_page":{"type":"integer","minimum":1,"maximum":500}},"additionalProperties":false,"required":["id"]},"contact_update.input":{"type":"object","properties":{"id":{"type":"integer"},"type":{"type":"string","enum":["customer","supplier","both","employee","other"],"description":"customer (müşteri), supplier (tedarikçi), both, employee, other"},"kind":{"type":"string","enum":["company","person"],"description":"company (VKN) / person (TCKN)"},"code":{"type":"string","maxLength":32,"description":"Boşsa CR-000001 serisinden verilir"},"name":{"type":"string","maxLength":255,"description":"Unvan veya ad soyad"},"first_name":{"type":"string","maxLength":100},"last_name":{"type":"string","maxLength":100},"tax_number":{"type":"string","maxLength":20,"description":"VKN (10) / TCKN (11); yurtiçi carilerde kontrol basamağı doğrulanır"},"tax_office":{"type":"string","maxLength":100},"is_foreign":{"type":"boolean","description":"Yurtdışı cari → 120.02 / 320.02"},"email":{"type":"string","format":"email"},"phone":{"type":"string","maxLength":32},"address":{"type":"string","maxLength":500},"district":{"type":"string","maxLength":100},"city":{"type":"string","maxLength":100},"postal_code":{"type":"string","maxLength":16},"country":{"type":"string","minLength":2,"maxLength":2},"currency":{"type":"string","minLength":3,"maxLength":3},"payment_term_days":{"type":"integer","minimum":0},"default_expense_account_id":{"type":"integer"},"default_revenue_account_id":{"type":"integer"},"tags":{"type":"array","items":{"type":"string","maxLength":50}},"notes":{"type":"string"},"is_active":{"type":"boolean"},"bank_accounts":{"type":"array","description":"Verilirse carinin IBAN listesi bununla eşitlenir","items":{"type":"object","required":["iban"],"properties":{"iban":{"type":"string"},"bank_name":{"type":"string"},"currency":{"type":"string","minLength":3,"maxLength":3}},"additionalProperties":false}}},"additionalProperties":false,"required":["id"]},"cost_center_create.input":{"type":"object","properties":{"code":{"type":"string","maxLength":32},"name":{"type":"string","maxLength":191},"parent_id":{"type":"integer"},"is_active":{"type":"boolean"}},"additionalProperties":false,"required":["code","name"]},"cost_center_list.input":{"type":"object","properties":{"q":{"type":"string"},"active":{"type":"boolean"}},"additionalProperties":false},"cost_center_update.input":{"type":"object","properties":{"id":{"type":"integer"},"code":{"type":"string","maxLength":32},"name":{"type":"string","maxLength":191},"parent_id":{"type":["integer","null"]},"is_active":{"type":"boolean"}},"additionalProperties":false,"required":["id"]},"credit_card_archive.input":{"type":"object","properties":{"id":{"type":"integer"}},"additionalProperties":false,"required":["id"]},"credit_card_cancel_payment.input":{"type":"object","properties":{"payment_id":{"type":"integer"},"date":{"type":"string","format":"date"},"reason":{"type":"string"}},"additionalProperties":false,"required":["payment_id"]},"credit_card_create.input":{"type":"object","properties":{"name":{"type":"string","maxLength":100,"description":"Kart adı (ör. \"Şirket Bonus\")"},"bank_name":{"type":"string","maxLength":100},"last4":{"type":"string","pattern":"^\\d{4}$","description":"YALNIZ son 4 hane; tam kart numarası reddedilir"},"currency":{"type":"string","description":"Varsayılan TRY"},"credit_limit":{"type":"string"},"statement_day":{"type":"integer","description":"Hesap kesim günü"},"due_day":{"type":"integer","description":"Son ödeme günü"},"bank_account_id":{"type":"integer","description":"Ekstre ödemesinin varsayılan banka hesabı"}},"additionalProperties":false,"required":["name","last4"]},"credit_card_get.input":{"type":"object","properties":{"id":{"type":"integer"}},"additionalProperties":false,"required":["id"]},"credit_card_list.input":{"type":"object","properties":{"include_inactive":{"type":"boolean"}},"additionalProperties":false},"credit_card_pay_statement.input":{"type":"object","properties":{"id":{"type":"integer","description":"Kredi kartı"},"bank_account_id":{"type":"integer"},"payment_date":{"type":"string","format":"date"},"amount":{"type":"string"},"fx_rate":{"type":"string"},"description":{"type":"string"},"client_key":{"type":"string"}},"additionalProperties":false,"required":["id","payment_date","amount"]},"credit_card_update.input":{"type":"object","properties":{"id":{"type":"integer"},"is_active":{"type":"boolean"},"name":{"type":"string","maxLength":100,"description":"Kart adı (ör. \"Şirket Bonus\")"},"bank_name":{"type":"string","maxLength":100},"last4":{"type":"string","pattern":"^\\d{4}$","description":"YALNIZ son 4 hane; tam kart numarası reddedilir"},"currency":{"type":"string","description":"Varsayılan TRY"},"credit_limit":{"type":"string"},"statement_day":{"type":"integer","description":"Hesap kesim günü"},"due_day":{"type":"integer","description":"Son ödeme günü"},"bank_account_id":{"type":"integer","description":"Ekstre ödemesinin varsayılan banka hesabı"}},"additionalProperties":false,"required":["id"]},"custom_report_delete.input":{"type":"object","properties":{"id":{"type":"integer"}},"additionalProperties":false,"required":["id"]},"custom_report_get.input":{"type":"object","properties":{"id":{"type":"integer"}},"additionalProperties":false,"required":["id"]},"custom_report_list.input":{"type":"object","properties":{"q":{"type":"string","description":"Ad içinde arama"}},"additionalProperties":false},"custom_report_run.input":{"type":"object","properties":{"id":{"type":"integer","description":"Kayıtlı rapor kimliği (definition yerine)"},"definition":{"type":"object","description":"Rapor tanımı. Kaynak ve alan anahtarlarını custom_report.sources ile öğrenin.","required":["source"],"additionalProperties":false,"properties":{"source":{"type":"string","description":"Kaynak anahtarı (ör. ledger_lines, invoices, bank_transactions)"},"dimensions":{"type":"array","maxItems":4,"items":{"type":"object","required":["field"],"additionalProperties":false,"properties":{"field":{"type":"string"},"bucket":{"type":"string","enum":["day","week","month","quarter","year"],"description":"Yalnız tarih alanlarında: gün/hafta/ay/çeyrek/yıl"},"as":{"type":"string","pattern":"^[a-z_][a-z0-9_]{0,30}$"}}}},"measures":{"type":"array","maxItems":6,"items":{"type":"object","required":["agg"],"additionalProperties":false,"properties":{"field":{"type":"string","description":"count için boş bırakılabilir"},"agg":{"type":"string","enum":["sum","count","count_distinct","avg","min","max"]},"as":{"type":"string","pattern":"^[a-z_][a-z0-9_]{0,30}$"}}}},"filters":{"type":"array","maxItems":10,"items":{"type":"object","required":["field","op"],"additionalProperties":false,"properties":{"field":{"type":"string"},"op":{"type":"string","enum":["eq","neq","in","not_in","gt","gte","lt","lte","between","contains","starts_with","is_null","not_null"]},"value":{"description":"Tek değer; in/not_in için liste; between için [başlangıç, bitiş]. Tarihler YYYY-AA-GG, tutarlar \"1234.50\""}}}},"sort":{"type":"array","maxItems":5,"items":{"type":"object","required":["field"],"additionalProperties":false,"properties":{"field":{"type":"string","description":"Seçili bir boyut/ölçü takma adı"},"dir":{"type":"string","enum":["asc","desc"]}}}},"limit":{"type":"integer","minimum":1,"maximum":1000}}}},"additionalProperties":false},"custom_report_save.input":{"type":"object","properties":{"name":{"type":"string","maxLength":191},"description":{"type":["string","null"],"maxLength":500},"definition":{"type":"object","description":"Rapor tanımı. Kaynak ve alan anahtarlarını custom_report.sources ile öğrenin.","required":["source"],"additionalProperties":false,"properties":{"source":{"type":"string","description":"Kaynak anahtarı (ör. ledger_lines, invoices, bank_transactions)"},"dimensions":{"type":"array","maxItems":4,"items":{"type":"object","required":["field"],"additionalProperties":false,"properties":{"field":{"type":"string"},"bucket":{"type":"string","enum":["day","week","month","quarter","year"],"description":"Yalnız tarih alanlarında: gün/hafta/ay/çeyrek/yıl"},"as":{"type":"string","pattern":"^[a-z_][a-z0-9_]{0,30}$"}}}},"measures":{"type":"array","maxItems":6,"items":{"type":"object","required":["agg"],"additionalProperties":false,"properties":{"field":{"type":"string","description":"count için boş bırakılabilir"},"agg":{"type":"string","enum":["sum","count","count_distinct","avg","min","max"]},"as":{"type":"string","pattern":"^[a-z_][a-z0-9_]{0,30}$"}}}},"filters":{"type":"array","maxItems":10,"items":{"type":"object","required":["field","op"],"additionalProperties":false,"properties":{"field":{"type":"string"},"op":{"type":"string","enum":["eq","neq","in","not_in","gt","gte","lt","lte","between","contains","starts_with","is_null","not_null"]},"value":{"description":"Tek değer; in/not_in için liste; between için [başlangıç, bitiş]. Tarihler YYYY-AA-GG, tutarlar \"1234.50\""}}}},"sort":{"type":"array","maxItems":5,"items":{"type":"object","required":["field"],"additionalProperties":false,"properties":{"field":{"type":"string","description":"Seçili bir boyut/ölçü takma adı"},"dir":{"type":"string","enum":["asc","desc"]}}}},"limit":{"type":"integer","minimum":1,"maximum":1000}}},"chart":{"type":["object","null"],"additionalProperties":false,"properties":{"type":{"type":"string","enum":["table","bar","line","pie"]},"x":{"type":["string","null"]},"y":{"type":"array","items":{"type":"string"}}}},"is_shared":{"type":"boolean"},"schedule":{"type":"string","enum":["none","daily","weekly","monthly"]},"recipients":{"type":"array","items":{"type":"string","format":"email"},"description":"Yalnız şirket üyelerinin e-postaları"}},"additionalProperties":false,"required":["name","definition"]},"custom_report_sources.input":{"type":"object","properties":{"source":{"type":"string","description":"Yalnız bu kaynağın alanları (boşsa tümü)"}},"additionalProperties":false},"custom_report_update.input":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string","maxLength":191},"description":{"type":["string","null"],"maxLength":500},"definition":{"type":"object","description":"Rapor tanımı. Kaynak ve alan anahtarlarını custom_report.sources ile öğrenin.","required":["source"],"additionalProperties":false,"properties":{"source":{"type":"string","description":"Kaynak anahtarı (ör. ledger_lines, invoices, bank_transactions)"},"dimensions":{"type":"array","maxItems":4,"items":{"type":"object","required":["field"],"additionalProperties":false,"properties":{"field":{"type":"string"},"bucket":{"type":"string","enum":["day","week","month","quarter","year"],"description":"Yalnız tarih alanlarında: gün/hafta/ay/çeyrek/yıl"},"as":{"type":"string","pattern":"^[a-z_][a-z0-9_]{0,30}$"}}}},"measures":{"type":"array","maxItems":6,"items":{"type":"object","required":["agg"],"additionalProperties":false,"properties":{"field":{"type":"string","description":"count için boş bırakılabilir"},"agg":{"type":"string","enum":["sum","count","count_distinct","avg","min","max"]},"as":{"type":"string","pattern":"^[a-z_][a-z0-9_]{0,30}$"}}}},"filters":{"type":"array","maxItems":10,"items":{"type":"object","required":["field","op"],"additionalProperties":false,"properties":{"field":{"type":"string"},"op":{"type":"string","enum":["eq","neq","in","not_in","gt","gte","lt","lte","between","contains","starts_with","is_null","not_null"]},"value":{"description":"Tek değer; in/not_in için liste; between için [başlangıç, bitiş]. Tarihler YYYY-AA-GG, tutarlar \"1234.50\""}}}},"sort":{"type":"array","maxItems":5,"items":{"type":"object","required":["field"],"additionalProperties":false,"properties":{"field":{"type":"string","description":"Seçili bir boyut/ölçü takma adı"},"dir":{"type":"string","enum":["asc","desc"]}}}},"limit":{"type":"integer","minimum":1,"maximum":1000}}},"chart":{"type":["object","null"],"additionalProperties":false,"properties":{"type":{"type":"string","enum":["table","bar","line","pie"]},"x":{"type":["string","null"]},"y":{"type":"array","items":{"type":"string"}}}},"is_shared":{"type":"boolean"},"schedule":{"type":"string","enum":["none","daily","weekly","monthly"]},"recipients":{"type":"array","items":{"type":"string","format":"email"},"description":"Yalnız şirket üyelerinin e-postaları"}},"additionalProperties":false,"required":["id"]},"dashboard_accounting.input":{"type":"object","properties":{},"additionalProperties":false},"dashboard_cards.input":{"type":"object","properties":{"cards":{"type":"array","items":{"type":"string","enum":["cash","revenue","expenses","profit","receivables","payables","vat","approvals","monthly_pl","aging","top_customers","top_suppliers","bank_distribution","edocuments","bank_monthly","bank_health","tax_calendar","instruments","activity"]},"maxItems":19,"description":"İstenen kartlar (boş = görünür kartların tümü). REST GET: ?cards[]=cash&cards[]=revenue"},"period":{"type":"string","enum":["month","quarter","year","custom"],"description":"Dönem: month (bu ay, varsayılan) | quarter | year | custom (from + to)"},"from":{"type":"string","format":"date","description":"period=custom başlangıcı YYYY-MM-DD"},"to":{"type":"string","format":"date","description":"period=custom bitişi YYYY-MM-DD (en fazla 3 yıl)"},"include_data":{"type":"boolean","description":"false: kart verisi hesaplanmaz, yalnız görünür kart listesi (varsayılan true)"}},"additionalProperties":false},"dashboard_portfolio.input":{"type":"object","properties":{},"additionalProperties":false},"despatch_accrual_preview.input":{"type":"object","properties":{"month":{"type":"string","pattern":"^\\d{4}-(0[1-9]|1[0-2])$","description":"YYYY-AA"}},"additionalProperties":false,"required":["month"]},"despatch_accrue_uninvoiced.input":{"type":"object","properties":{"month":{"type":"string","pattern":"^\\d{4}-(0[1-9]|1[0-2])$","description":"YYYY-AA"}},"additionalProperties":false,"required":["month"]},"despatch_cancel.input":{"type":"object","properties":{"id":{"type":"integer"},"reason":{"type":"string","maxLength":500},"date":{"type":"string","format":"date","description":"Karşı hareket tarihi (boşsa bugün)"}},"additionalProperties":false,"required":["id"]},"despatch_create.input":{"type":"object","properties":{"kind":{"type":"string","enum":["out","in"],"description":"out: sevk (satış), in: giriş (alış)"},"contact_id":{"type":"integer"},"warehouse_id":{"type":"integer","description":"Boşsa varsayılan depo"},"despatch_date":{"type":"string","format":"date"},"despatch_no":{"type":"string","maxLength":32,"description":"Boşsa kesimde IR-/GI- serisi; giriş irsaliyesinde tedarikçinin numarası"},"notes":{"type":"string"},"lines":{"type":"array","minItems":1,"items":{"type":"object","required":["product_id","quantity"],"properties":{"product_id":{"type":"integer","description":"Stok takipli ürün"},"quantity":{"type":"string"},"unit_code":{"type":"string","maxLength":8},"description":{"type":"string","maxLength":500},"unit_price":{"type":"string","description":"TL; girişte tahmini maliyet, sevkte faturaya önerilen fiyat"}},"additionalProperties":false}}},"additionalProperties":false,"required":["kind","contact_id","despatch_date","lines"]},"despatch_delete.input":{"type":"object","properties":{"id":{"type":"integer"}},"additionalProperties":false,"required":["id"]},"despatch_get.input":{"type":"object","properties":{"id":{"type":"integer"}},"additionalProperties":false,"required":["id"]},"despatch_issue.input":{"type":"object","properties":{"id":{"type":"integer"}},"additionalProperties":false,"required":["id"]},"despatch_list.input":{"type":"object","properties":{"kind":{"type":"string","enum":["out","in"]},"status":{"type":"string","enum":["draft","issued","invoiced","cancelled"]},"contact_id":{"type":"integer"},"from":{"type":"string","format":"date"},"to":{"type":"string","format":"date"},"q":{"type":"string"},"overdue":{"type":"boolean"},"page":{"type":"integer","minimum":1},"per_page":{"type":"integer","minimum":1,"maximum":200}},"additionalProperties":false},"despatch_to_invoice.input":{"type":"object","properties":{"ids":{"type":"array","items":{"type":"integer"},"minItems":1,"maxItems":50},"issue_date":{"type":"string","format":"date","description":"Fatura tarihi (boşsa bugün)"}},"additionalProperties":false,"required":["ids"]},"despatch_update.input":{"type":"object","properties":{"id":{"type":"integer"},"contact_id":{"type":"integer"},"warehouse_id":{"type":"integer","description":"Boşsa varsayılan depo"},"despatch_date":{"type":"string","format":"date"},"despatch_no":{"type":"string","maxLength":32,"description":"Boşsa kesimde IR-/GI- serisi; giriş irsaliyesinde tedarikçinin numarası"},"notes":{"type":"string"},"lines":{"type":"array","minItems":1,"items":{"type":"object","required":["product_id","quantity"],"properties":{"product_id":{"type":"integer","description":"Stok takipli ürün"},"quantity":{"type":"string"},"unit_code":{"type":"string","maxLength":8},"description":{"type":"string","maxLength":500},"unit_price":{"type":"string","description":"TL; girişte tahmini maliyet, sevkte faturaya önerilen fiyat"}},"additionalProperties":false}}},"additionalProperties":false,"required":["id"]},"due_reminder_settings.input":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Günlük vade hatırlatma (iç bildirim)"},"customer_emails":{"type":"boolean","description":"Müşteriye e-posta"},"days":{"type":"integer","minimum":1,"maximum":30,"description":"Vadeye kaç gün kala"}},"required":["enabled"],"additionalProperties":false},"edespatch_answer.input":{"type":"object","properties":{"id":{"type":"integer","description":"Gelen e-İrsaliye kimliği (edocument.list module=edespatch direction=incoming)"},"lines":{"type":"array","description":"Yalnız farklı olan kalemler; verilmeyen kalem tam kabul","items":{"type":"object","properties":{"line_id":{"type":"string","description":"İrsaliye kalem ID (edespatch.lines)"},"accepted_quantity":{"type":"number"},"rejected_quantity":{"type":"number"},"reason":{"type":"string","description":"Red gerekçesi (reddedilen miktar varsa zorunlu)"}},"required":["line_id"]}},"note":{"type":"string"}},"additionalProperties":false,"required":["id"]},"edespatch_lines.input":{"type":"object","properties":{"id":{"type":"integer","description":"e-Belge kimliği (edocument.list)"}},"additionalProperties":false,"required":["id"]},"edespatch_plan.input":{"type":"object","properties":{"despatch_id":{"type":"integer","description":"Sevk irsaliyesi (despatch.list)"}},"additionalProperties":false,"required":["despatch_id"]},"edespatch_send.input":{"type":"object","properties":{"despatch_id":{"type":"integer","description":"Kesilmiş sevk irsaliyesi (despatch.list, kind=out)"},"receiver_alias":{"type":"string","description":"Alıcı e-İrsaliye PK etiketi (edespatch.plan)"},"despatch_time":{"type":"string","description":"Fiili sevk saati SS:DD"},"shipment":{"type":"object","description":"Taşıma bilgisi: şoför (driver_first_name, driver_last_name, driver_tckn) + araç plakası (vehicle_plate) veya taşıyıcı firma (carrier_tax_number, carrier_name); isteğe bağlı trailer_plate, delivery{address, district, city}, contact_name","properties":{"driver_first_name":{"type":"string"},"driver_last_name":{"type":"string"},"driver_tckn":{"type":"string","pattern":"^\\d{11}$"},"vehicle_plate":{"type":"string"},"trailer_plate":{"type":"string"},"carrier_tax_number":{"type":"string"},"carrier_name":{"type":"string"},"carrier_city":{"type":"string"},"carrier_district":{"type":"string"},"delivery":{"type":"object"},"contact_name":{"type":"string"}}}},"additionalProperties":false,"required":["despatch_id"]},"edocument_answer.input":{"type":"object","properties":{"id":{"type":"integer","description":"e-Belge kimliği (edocument.list)"},"answer":{"type":"string","enum":["accept","reject"],"description":"accept = KABUL, reject = RED"},"note":{"type":"string","maxLength":500,"description":"Yanıt notu (RED gerekçesi)"}},"additionalProperties":false,"required":["id","answer"]},"edocument_cancel.input":{"type":"object","properties":{"id":{"type":"integer","description":"e-Belge kimliği (edocument.list)"},"reason":{"type":"string","maxLength":500,"description":"İptal gerekçesi (e-Faturada zorunlu)"},"cancel_invoice":{"type":"boolean","description":"Bağlı faturayı da iptal et (varsayılan true)"}},"additionalProperties":false,"required":["id"]},"edocument_credit_summary.input":{"type":"object","properties":{},"additionalProperties":false},"edocument_download.input":{"type":"object","properties":{"id":{"type":"integer","description":"e-Belge kimliği (edocument.list)"},"format":{"type":"string","enum":["xml","pdf","html","envelope"],"description":"envelope: GİB zarfı (yalnız e-Fatura / e-İrsaliye, sağlayıcıdan)"}},"additionalProperties":false,"required":["id","format"]},"edocument_get.input":{"type":"object","properties":{"id":{"type":"integer","description":"e-Belge kimliği (edocument.list)"}},"additionalProperties":false,"required":["id"]},"edocument_ignore.input":{"type":"object","properties":{"id":{"type":"integer","description":"e-Belge kimliği (edocument.list)"},"reason":{"type":"string","maxLength":500}},"additionalProperties":false,"required":["id"]},"edocument_integration_status.input":{"type":"object","properties":{},"additionalProperties":false},"edocument_list.input":{"type":"object","properties":{"direction":{"type":"string","enum":["outgoing","incoming"],"description":"outgoing (giden) | incoming (gelen)"},"status":{"type":"string","description":"queued, sending, delivered, failed, accepted, rejected, unknown, issued, cancelled, received"},"accounting_status":{"type":"string","enum":["pending","drafted","posted","ignored","error"],"description":"Gelen belgede muhasebe durumu"},"module":{"type":"string","enum":["einvoice","earchive","edespatch","esmm","emm"]},"q":{"type":"string","description":"Belge no, ETTN, karşı taraf adı veya VKN"},"from":{"type":"string","format":"date"},"to":{"type":"string","format":"date"},"invoice_id":{"type":"integer"},"page":{"type":"integer","minimum":1},"per_page":{"type":"integer","minimum":1,"maximum":100}},"additionalProperties":false},"edocument_lookup_taxpayer.input":{"type":"object","properties":{"tax_number":{"type":"string","description":"VKN (10) veya TCKN (11)"},"contact_id":{"type":"integer","description":"Cari kimliği (VKN karttan okunur)"},"fresh":{"type":"boolean","description":"Önbelleği atla"}},"additionalProperties":false},"edocument_preview.input":{"type":"object","properties":{"source":{"type":"string","enum":["invoice","despatch","freelance_receipt"],"description":"invoice (fatura) | despatch (sevk irsaliyesi) | freelance_receipt (serbest meslek makbuzu)"},"id":{"type":"integer","description":"Kaynak kaydın kimliği"},"module":{"type":"string","enum":["einvoice","earchive"],"description":"Yalnız fatura: boşsa otomatik"},"receiver_alias":{"type":"string"},"profile":{"type":"string","enum":["TICARIFATURA","TEMELFATURA","KAMU"],"description":"Yalnız fatura: e-Fatura senaryosu"},"send_type":{"type":"string","enum":["ELEKTRONIK","KAGIT"],"description":"Yalnız fatura: e-Arşiv gönderim şekli"},"payee_iban":{"type":"string","description":"Yalnız fatura: KAMU IBAN'ı"},"despatch_time":{"type":"string","description":"Yalnız irsaliye: SS:DD"},"shipment":{"type":"object","description":"Yalnız irsaliye: şoför/plaka/taşıyıcı (edespatch.send ile aynı)"}},"additionalProperties":false,"required":["source","id"]},"edocument_process.input":{"type":"object","properties":{"id":{"type":"integer","description":"e-Belge kimliği (edocument.list)"}},"additionalProperties":false,"required":["id"]},"edocument_pull_now.input":{"type":"object","properties":{},"additionalProperties":false},"edocument_refresh.input":{"type":"object","properties":{"id":{"type":"integer","description":"e-Belge kimliği (edocument.list)"}},"additionalProperties":false,"required":["id"]},"edocument_send.input":{"type":"object","properties":{"invoice_id":{"type":"integer","description":"Kesilmiş fatura (invoice.list)"},"module":{"type":"string","enum":["einvoice","earchive"],"description":"Boşsa mükellef sorgusuna göre otomatik"},"receiver_alias":{"type":"string","description":"e-Fatura alıcı PK etiketi (edocument.lookup_taxpayer / edocument.send_plan)"},"profile":{"type":"string","enum":["TICARIFATURA","TEMELFATURA","KAMU"],"description":"e-Fatura senaryosu; boşsa ayar (İHRACAT otomatik)"},"send_type":{"type":"string","enum":["ELEKTRONIK","KAGIT"],"description":"e-Arşiv gönderim şekli; boşsa alıcının e-postası varsa ELEKTRONIK"},"payee_iban":{"type":"string","description":"KAMU senaryosunda ödeme TR IBAN'ı (boşsa e-Belge ayarındaki)"}},"additionalProperties":false,"required":["invoice_id"]},"edocument_send_bulk.input":{"type":"object","properties":{"invoice_ids":{"type":"array","items":{"type":"integer"},"minItems":1,"maxItems":100,"description":"Kesilmiş fatura kimlikleri (invoice.list)"},"module":{"type":"string","enum":["einvoice","earchive"],"description":"Boşsa her fatura için mükellef sorgusuna göre otomatik"}},"additionalProperties":false,"required":["invoice_ids"]},"edocument_send_plan.input":{"type":"object","properties":{"invoice_id":{"type":"integer","description":"Kesilmiş fatura (invoice.list)"},"module":{"type":"string","enum":["einvoice","earchive"],"description":"Boşsa otomatik (mükellef sorgusu / mal ihracatı kuralı)"},"profile":{"type":"string","enum":["TICARIFATURA","TEMELFATURA","KAMU"],"description":"e-Fatura senaryosu (İHRACAT otomatik belirlenir)"},"receiver_alias":{"type":"string"},"send_type":{"type":"string","enum":["ELEKTRONIK","KAGIT"],"description":"e-Arşiv gönderim şekli"},"payee_iban":{"type":"string","description":"KAMU senaryosunda ödeme IBAN'ı (boşsa ayardaki)"}},"additionalProperties":false,"required":["invoice_id"]},"edocument_templates.input":{"type":"object","properties":{"module":{"type":"string","enum":["einvoice","earchive","edespatch","esmm","emm"],"description":"einvoice | earchive | edespatch | esmm | emm"}},"additionalProperties":false,"required":["module"]},"employee_advance.input":{"type":"object","properties":{"id":{"type":"integer","description":"Çalışan (cari) kimliği"},"amount":{"type":"string","description":"TL tutar"},"payment_date":{"type":"string","format":"date"},"method":{"type":"string","enum":["bank","cash"]},"bank_account_id":{"type":"integer"},"cash_account_id":{"type":"integer"},"description":{"type":"string"},"client_key":{"type":"string"}},"additionalProperties":false,"required":["id","amount","payment_date","method"]},"employee_archive.input":{"type":"object","properties":{"id":{"type":"integer"},"end_date":{"type":"string","format":"date"}},"additionalProperties":false,"required":["id"]},"employee_create.input":{"type":"object","properties":{"first_name":{"type":"string","maxLength":100},"last_name":{"type":"string","maxLength":100},"name":{"type":"string","maxLength":255,"description":"Ad soyad (first_name/last_name yerine)"},"code":{"type":"string","maxLength":32,"description":"Cari kodu; boşsa otomatik"},"email":{"type":"string","format":"email"},"phone":{"type":"string"},"tckn":{"type":"string","description":"T.C. kimlik no (11 hane, algoritma kontrollü; şifreli saklanır)"},"iban":{"type":"string","description":"Maaş IBAN (TR, mod-97; şifreli saklanır)"},"department":{"type":"string","maxLength":100},"title":{"type":"string","maxLength":100},"start_date":{"type":"string","format":"date","description":"İşe giriş"},"end_date":{"type":"string","format":"date","description":"İşten çıkış"},"net_salary":{"type":"string","description":"Bilgi amaçlı aylık net ücret (bordro hesaplamaz)"},"expense_account_id":{"type":"integer","description":"Brüt ücret gider hesabı (770.01 / 760.03 / 740.01); boşsa 770.01"},"notes":{"type":"string"},"contact_id":{"type":"integer","description":"Mevcut \"çalışan\" türündeki cari (kartı yoksa)"}},"additionalProperties":false},"employee_get.input":{"type":"object","properties":{"id":{"type":"integer","description":"Çalışanın cari kimliği (employee.list id)"},"reveal":{"type":"boolean","description":"Tam TCKN/IBAN (contacts.manage gerekir)"}},"additionalProperties":false,"required":["id"]},"employee_list.input":{"type":"object","properties":{"q":{"type":"string","description":"Ad, cari kodu veya e-posta"},"department":{"type":"string"},"status":{"type":"string","enum":["active","inactive","all"],"description":"Varsayılan active"},"page":{"type":"integer","minimum":1},"per_page":{"type":"integer","minimum":1,"maximum":500}},"additionalProperties":false},"employee_update.input":{"type":"object","properties":{"id":{"type":"integer"},"is_active":{"type":"boolean"},"first_name":{"type":"string","maxLength":100},"last_name":{"type":"string","maxLength":100},"name":{"type":"string","maxLength":255,"description":"Ad soyad (first_name/last_name yerine)"},"code":{"type":"string","maxLength":32,"description":"Cari kodu; boşsa otomatik"},"email":{"type":"string","format":"email"},"phone":{"type":"string"},"tckn":{"type":"string","description":"T.C. kimlik no (11 hane, algoritma kontrollü; şifreli saklanır)"},"iban":{"type":"string","description":"Maaş IBAN (TR, mod-97; şifreli saklanır)"},"department":{"type":"string","maxLength":100},"title":{"type":"string","maxLength":100},"start_date":{"type":"string","format":"date","description":"İşe giriş"},"end_date":{"type":"string","format":"date","description":"İşten çıkış"},"net_salary":{"type":"string","description":"Bilgi amaçlı aylık net ücret (bordro hesaplamaz)"},"expense_account_id":{"type":"integer","description":"Brüt ücret gider hesabı (770.01 / 760.03 / 740.01); boşsa 770.01"},"notes":{"type":"string"}},"additionalProperties":false,"required":["id"]},"esmm_send.input":{"type":"object","properties":{"receipt_id":{"type":"integer","description":"Kesilmiş serbest meslek makbuzu (freelance_receipt.list)"}},"additionalProperties":false,"required":["receipt_id"]},"expense_attachment.input":{"type":"object","properties":{"id":{"type":"integer","description":"Masraf kimliği (expense.get → has_own_attachment true olmalı)"}},"additionalProperties":false,"required":["id"]},"expense_cancel.input":{"type":"object","properties":{"id":{"type":"integer"},"reason":{"type":"string","maxLength":500},"date":{"type":"string","format":"date","description":"Ters kayıt tarihi"}},"additionalProperties":false,"required":["id"]},"expense_create.input":{"type":"object","properties":{"expense_date":{"type":"string","format":"date"},"description":{"type":"string","maxLength":500},"contact_id":{"type":"integer","description":"Satıcı cari (contact.list); ödenmemiş masrafta zorunlu"},"document_no":{"type":"string","maxLength":64,"description":"Fiş / makbuz / fatura no"},"document_type":{"type":"string","enum":["receipt","invoice","voucher","other"],"description":"receipt (varsayılan), invoice, voucher, other"},"paid_from_type":{"type":"string","enum":["cash","bank","credit_card","employee"],"description":"Boş: ödenmedi (cari 320); cash (kasa), bank (banka), credit_card (309.01), employee (çalışan carisi)"},"paid_from_id":{"type":"integer","description":"cash → cash_account id, bank → bank_account id, employee → contact id"},"currency":{"type":"string","minLength":3,"maxLength":3,"description":"Boşsa ödeme hesabının dövizi / TRY"},"fx_rate":{"type":"string","description":"Sayı metni (ör. \"1200.50\")"},"lines":{"type":"array","minItems":1,"maxItems":100,"items":{"type":"object","properties":{"expense_category_id":{"type":"integer","description":"expense_category.list; hesap/KDV oranı/indirilebilirlik kategoriden dolar"},"account_id":{"type":"integer","description":"Gider hesabı (kategoriyi ezer)"},"description":{"type":"string","maxLength":500},"net_amount":{"type":"string","description":"Sayı metni (ör. \"1200.50\")"},"gross_amount":{"type":"string","description":"Sayı metni (ör. \"1200.50\")"},"vat_rate":{"type":"string","description":"Sayı metni (ör. \"1200.50\")"},"vat_amount":{"type":"string","description":"Sayı metni (ör. \"1200.50\")"},"vat_deductible":{"type":"boolean","description":"false: KDV gidere eklenir"},"cost_center_id":{"type":"integer"},"project_id":{"type":"integer"}},"additionalProperties":false}},"client_key":{"type":"string","maxLength":100,"description":"İstemci idempotency anahtarı"}},"additionalProperties":false,"required":["expense_date","description","lines"]},"expense_delete.input":{"type":"object","properties":{"id":{"type":"integer"}},"additionalProperties":false,"required":["id"]},"expense_draft_from_receipt.input":{"type":"object","properties":{"file":{"type":"string","format":"binary","description":"Fiş görseli veya PDF (multipart, ≤ 10 MB)"},"qr_payload":{"type":"string","description":"e-Arşiv / e-Fatura karekodunun JSON metni (varsa öncelikli)"},"paid_from_type":{"type":"string","enum":["cash","bank","credit_card","employee"],"description":"Boş: ödenmedi"},"paid_from_id":{"type":"integer"},"expense_category_id":{"type":"integer","description":"Kalemlere uygulanacak gider kategorisi"},"description":{"type":"string","maxLength":500}},"additionalProperties":false,"required":["file"]},"expense_form_options.input":{"type":"object","properties":{},"additionalProperties":false},"expense_get.input":{"type":"object","properties":{"id":{"type":"integer"}},"additionalProperties":false,"required":["id"]},"expense_list.input":{"type":"object","properties":{"status":{"type":"string","enum":["draft","posted","cancelled"]},"payment_status":{"type":"string","enum":["unpaid","partial","paid"]},"contact_id":{"type":"integer"},"category_id":{"type":"integer","description":"Satırlarında bu gider kategorisi olan masraflar"},"from":{"type":"string","format":"date"},"to":{"type":"string","format":"date"},"q":{"type":"string","description":"Masraf no, belge no, açıklama veya cari adı"},"page":{"type":"integer","minimum":1},"per_page":{"type":"integer","minimum":1,"maximum":200}},"additionalProperties":false},"expense_post.input":{"type":"object","properties":{"id":{"type":"integer"}},"additionalProperties":false,"required":["id"]},"expense_receipt_ocr_status.input":{"type":"object","properties":{},"additionalProperties":false},"expense_update.input":{"type":"object","properties":{"id":{"type":"integer"},"expense_date":{"type":"string","format":"date"},"description":{"type":"string","maxLength":500},"contact_id":{"type":"integer","description":"Satıcı cari (contact.list); ödenmemiş masrafta zorunlu"},"document_no":{"type":"string","maxLength":64,"description":"Fiş / makbuz / fatura no"},"document_type":{"type":"string","enum":["receipt","invoice","voucher","other"],"description":"receipt (varsayılan), invoice, voucher, other"},"paid_from_type":{"type":"string","enum":["cash","bank","credit_card","employee"],"description":"Boş: ödenmedi (cari 320); cash (kasa), bank (banka), credit_card (309.01), employee (çalışan carisi)"},"paid_from_id":{"type":"integer","description":"cash → cash_account id, bank → bank_account id, employee → contact id"},"currency":{"type":"string","minLength":3,"maxLength":3,"description":"Boşsa ödeme hesabının dövizi / TRY"},"fx_rate":{"type":"string","description":"Sayı metni (ör. \"1200.50\")"},"lines":{"type":"array","minItems":1,"maxItems":100,"items":{"type":"object","properties":{"expense_category_id":{"type":"integer","description":"expense_category.list; hesap/KDV oranı/indirilebilirlik kategoriden dolar"},"account_id":{"type":"integer","description":"Gider hesabı (kategoriyi ezer)"},"description":{"type":"string","maxLength":500},"net_amount":{"type":"string","description":"Sayı metni (ör. \"1200.50\")"},"gross_amount":{"type":"string","description":"Sayı metni (ör. \"1200.50\")"},"vat_rate":{"type":"string","description":"Sayı metni (ör. \"1200.50\")"},"vat_amount":{"type":"string","description":"Sayı metni (ör. \"1200.50\")"},"vat_deductible":{"type":"boolean","description":"false: KDV gidere eklenir"},"cost_center_id":{"type":"integer"},"project_id":{"type":"integer"}},"additionalProperties":false}}},"additionalProperties":false,"required":["id"]},"expense_category_archive.input":{"type":"object","properties":{"id":{"type":"integer"}},"additionalProperties":false,"required":["id"]},"expense_category_create.input":{"type":"object","properties":{"name":{"type":"string","maxLength":100},"account_id":{"type":"integer","description":"Gider hesabı (account.list, yaprak)"},"default_vat_rate":{"type":"string","description":"KDV % (0, 1, 10, 20…)"},"vat_deductible":{"type":"boolean"},"is_kkeg":{"type":"boolean","description":"Kanunen kabul edilmeyen gider; KDV varsayılan olarak indirilmez"},"is_active":{"type":"boolean"}},"additionalProperties":false,"required":["name","account_id"]},"expense_category_list.input":{"type":"object","properties":{"include_inactive":{"type":"boolean","description":"Pasif kategoriler de listelensin"}},"additionalProperties":false},"expense_category_update.input":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string","maxLength":100},"account_id":{"type":"integer"},"default_vat_rate":{"type":"string"},"vat_deductible":{"type":"boolean"},"is_kkeg":{"type":"boolean"},"is_active":{"type":"boolean"}},"additionalProperties":false,"required":["id"]},"export_backup_list.input":{"type":"object","properties":{},"additionalProperties":false},"export_full_backup.input":{"type":"object","properties":{},"additionalProperties":false},"export_luca_journal.input":{"type":"object","properties":{"date_from":{"type":"string","format":"date"},"date_to":{"type":"string","format":"date","description":"En fazla 366 günlük aralık"},"decimal":{"type":"string","enum":[",","."],"description":"Ondalık ayracı (varsayılan virgül)"},"encoding":{"type":"string","enum":["windows-1254","utf-8"]},"entry_types":{"type":"array","items":{"type":"string","enum":["ACILIS","MAHSUP","TAHSIL","TEDIYE","KAPANIS"]}}},"additionalProperties":false,"required":["date_from","date_to"]},"firm_assignment_list.input":{"type":"object","properties":{"firm_id":{"type":"integer","minimum":1,"description":"Büro kimliği (isteğe bağlı; verilmezse X-Firm-Id başlığı, sonra seçili/ilk büro)"}},"additionalProperties":false},"firm_assignment_update.input":{"type":"object","properties":{"firm_id":{"type":"integer","minimum":1,"description":"Büro kimliği (isteğe bağlı; verilmezse X-Firm-Id başlığı, sonra seçili/ilk büro)"},"client_id":{"type":"integer","minimum":1,"description":"Bağlantı kimliği (firm.clients.list)"},"member_id":{"type":"integer","minimum":1,"description":"Büro üyeliği kimliği (firm.members.list)"},"preset":{"type":"string","enum":["full","bookkeeping","readonly"],"description":"Yetki seti; gönderilmez ya da null ise atama kaldırılır"}},"additionalProperties":false,"required":["client_id","member_id"]},"firm_clients_accept.input":{"type":"object","properties":{"firm_id":{"type":"integer","minimum":1,"description":"Büro kimliği (isteğe bağlı; verilmezse X-Firm-Id başlığı, sonra seçili/ilk büro)"},"client_id":{"type":"integer","minimum":1,"description":"Bağlantı kimliği (firm.clients.list → clients[].id)"}},"additionalProperties":false,"required":["client_id"]},"firm_clients_invite.input":{"type":"object","properties":{"firm_id":{"type":"integer","minimum":1,"description":"Büro kimliği (isteğe bağlı; verilmezse X-Firm-Id başlığı, sonra seçili/ilk büro)"},"identifier":{"type":"string","maxLength":255,"description":"Şirketin VKN/TCKN'si veya şirket sahibinin e-posta adresi"}},"additionalProperties":false,"required":["identifier"]},"firm_clients_list.input":{"type":"object","properties":{"firm_id":{"type":"integer","minimum":1,"description":"Büro kimliği (isteğe bağlı; verilmezse X-Firm-Id başlığı, sonra seçili/ilk büro)"},"status":{"type":"string","enum":["invited","active","rejected","revoked"],"description":"Durum süzgeci"}},"additionalProperties":false},"firm_clients_revoke.input":{"type":"object","properties":{"firm_id":{"type":"integer","minimum":1,"description":"Büro kimliği (isteğe bağlı; verilmezse X-Firm-Id başlığı, sonra seçili/ilk büro)"},"client_id":{"type":"integer","minimum":1,"description":"Bağlantı kimliği (firm.clients.list → clients[].id)"}},"additionalProperties":false,"required":["client_id"]},"firm_document_request_create.input":{"type":"object","properties":{"firm_id":{"type":"integer","minimum":1,"description":"Büro kimliği (isteğe bağlı; verilmezse X-Firm-Id başlığı, sonra seçili/ilk büro)"},"client_id":{"type":"integer","minimum":1,"description":"Bağlantı kimliği (firm.clients.list)"},"title":{"type":"string","maxLength":200,"description":"Talep edilen belge (ör. \"Eylül banka ekstreleri\")"},"description":{"type":"string","maxLength":2000},"period":{"type":"string","pattern":"^\\d{4}-(0[1-9]|1[0-2])$","description":"YYYY-AA"},"due_date":{"type":"string","format":"date"}},"additionalProperties":false,"required":["client_id","title"]},"firm_document_request_list.input":{"type":"object","properties":{"firm_id":{"type":"integer","minimum":1,"description":"Büro kimliği (isteğe bağlı; verilmezse X-Firm-Id başlığı, sonra seçili/ilk büro)"},"status":{"type":"string","enum":["open","uploaded","completed","cancelled"]},"client_id":{"type":"integer","minimum":1,"description":"Yalnız bu müşteri bağlantısı"},"limit":{"type":"integer","minimum":1,"maximum":200,"description":"Varsayılan 100"}},"additionalProperties":false},"firm_document_request_update.input":{"type":"object","properties":{"firm_id":{"type":"integer","minimum":1,"description":"Büro kimliği (isteğe bağlı; verilmezse X-Firm-Id başlığı, sonra seçili/ilk büro)"},"request_id":{"type":"integer","minimum":1,"description":"Belge talebi kimliği (firm.document_request.list)"},"status":{"type":"string","enum":["open","completed","cancelled"]}},"additionalProperties":false,"required":["request_id","status"]},"firm_get.input":{"type":"object","properties":{"firm_id":{"type":"integer","minimum":1,"description":"Büro kimliği (isteğe bağlı; verilmezse X-Firm-Id başlığı, sonra seçili/ilk büro)"}},"additionalProperties":false},"firm_members_invite.input":{"type":"object","properties":{"firm_id":{"type":"integer","minimum":1,"description":"Büro kimliği (isteğe bağlı; verilmezse X-Firm-Id başlığı, sonra seçili/ilk büro)"},"email":{"type":"string","format":"email","maxLength":255},"role":{"type":"string","enum":["owner","partner","accountant","staff","intern"],"description":"Büro rolü"}},"additionalProperties":false,"required":["email","role"]},"firm_members_list.input":{"type":"object","properties":{"firm_id":{"type":"integer","minimum":1,"description":"Büro kimliği (isteğe bağlı; verilmezse X-Firm-Id başlığı, sonra seçili/ilk büro)"},"include_inactive":{"type":"boolean","description":"Pasif üyeler de listelensin (varsayılan true)"}},"additionalProperties":false},"firm_members_update.input":{"type":"object","properties":{"firm_id":{"type":"integer","minimum":1,"description":"Büro kimliği (isteğe bağlı; verilmezse X-Firm-Id başlığı, sonra seçili/ilk büro)"},"member_id":{"type":"integer","minimum":1,"description":"Büro üyeliği kimliği (firm.members.list → members[].id)"},"role":{"type":"string","enum":["owner","partner","accountant","staff","intern"],"description":"Verilmezse mevcut rol korunur"},"is_active":{"type":"boolean","description":"Verilmezse mevcut durum korunur"}},"additionalProperties":false,"required":["member_id"]},"firm_portfolio.input":{"type":"object","properties":{"firm_id":{"type":"integer","minimum":1,"description":"Büro kimliği (isteğe bağlı; verilmezse X-Firm-Id başlığı, sonra seçili/ilk büro)"},"period":{"type":"string","pattern":"^\\d{4}-(0[1-9]|1[0-2])$","description":"Kontrol listesi ayı YYYY-AA (varsayılan bu ay)"}},"additionalProperties":false},"firm_task_list.input":{"type":"object","properties":{"firm_id":{"type":"integer","minimum":1,"description":"Büro kimliği (isteğe bağlı; verilmezse X-Firm-Id başlığı, sonra seçili/ilk büro)"},"period":{"type":"string","pattern":"^\\d{4}-(0[1-9]|1[0-2])$","description":"YYYY-AA (varsayılan bu ay)"}},"additionalProperties":false},"firm_task_update.input":{"type":"object","properties":{"firm_id":{"type":"integer","minimum":1,"description":"Büro kimliği (isteğe bağlı; verilmezse X-Firm-Id başlığı, sonra seçili/ilk büro)"},"client_id":{"type":"integer","minimum":1,"description":"Bağlantı kimliği (firm.clients.list / firm.task.list)"},"period":{"type":"string","pattern":"^\\d{4}-(0[1-9]|1[0-2])$","description":"YYYY-AA"},"task_type":{"type":"string","enum":["bank_reconciliation","einvoice_transfer","vat_return","edefter"]},"status":{"type":"string","enum":["pending","in_progress","done","not_applicable"]},"note":{"type":"string","maxLength":500}},"additionalProperties":false,"required":["client_id","period","task_type","status"]},"fixed_asset_create.input":{"type":"object","properties":{"code":{"type":"string","maxLength":32,"description":"Boşsa SK-000001 serisi"},"name":{"type":"string","maxLength":255},"asset_account_id":{"type":"integer","description":"25x / 26x yaprak hesap"},"accumulated_account_id":{"type":"integer","description":"257 / 268 yaprak hesap"},"expense_account_id":{"type":"integer","description":"Amortisman gider hesabı (770.08, 760, 740, 730…)"},"depreciation_class_id":{"type":"integer","description":"VUK amortisman sınıfı (faydalı ömür önerisi)"},"acquisition_date":{"type":"string","format":"date"},"in_service_date":{"type":"string","format":"date","description":"Boşsa alış tarihi"},"cost_try":{"type":"string","description":"Maliyet (TRY)"},"useful_life_years":{"type":"integer","minimum":1,"maximum":99},"method":{"type":"string","enum":["straight_line","declining"]},"partial_first_year":{"type":"boolean","description":"Kıst amortisman (binek otoda zorunlu)"},"opening_accumulated_try":{"type":"string","description":"Sisteme geçişte aktarılan birikmiş amortisman"},"cost_center_id":{"type":"integer"},"notes":{"type":"string","maxLength":5000}},"additionalProperties":false,"required":["name","asset_account_id","accumulated_account_id","expense_account_id","acquisition_date","cost_try"]},"fixed_asset_create_from_invoice.input":{"type":"object","properties":{"invoice_id":{"type":"integer"},"invoice_line_id":{"type":"integer","description":"fixed_asset.invoice_candidates satırı"},"name":{"type":"string","description":"Boşsa kalem açıklaması"},"code":{"type":"string","description":"Boşsa otomatik (SK-000001)"},"useful_life_years":{"type":"integer","description":"Boşsa amortisman sınıfından"},"depreciation_class_id":{"type":"integer"},"method":{"type":"string","enum":["straight_line","declining"]},"in_service_date":{"type":"string","format":"date"},"accumulated_account_id":{"type":"integer","description":"Boşsa 257.0x / 268.0x"},"expense_account_id":{"type":"integer","description":"Boşsa 770.08"},"cost_center_id":{"type":"integer"},"partial_first_year":{"type":"boolean"},"notes":{"type":"string"}},"additionalProperties":false,"required":["invoice_id","invoice_line_id"]},"fixed_asset_dispose.input":{"type":"object","properties":{"id":{"type":"integer"},"date":{"type":"string","format":"date"},"amount":{"type":"string","description":"Satış bedeli (KDV hariç, TRY); hurdada 0"},"contact_id":{"type":"integer","description":"Alıcı cari (120 alacak hesabı)"},"counter_account_id":{"type":"integer","description":"Cari yoksa tahsil edilen kasa / banka hesabı"},"vat_rate":{"type":"string","description":"KDV oranı (%), varsayılan 20; 0 → KDV satırı yok"},"document_number":{"type":"string","maxLength":64,"description":"Satış faturası no (varsa)"},"description":{"type":"string","maxLength":500}},"additionalProperties":false,"required":["id","date","amount"]},"fixed_asset_get.input":{"type":"object","properties":{"id":{"type":"integer"}},"additionalProperties":false,"required":["id"]},"fixed_asset_invoice_candidates.input":{"type":"object","properties":{"invoice_id":{"type":"integer"}},"additionalProperties":false,"required":["invoice_id"]},"fixed_asset_list.input":{"type":"object","properties":{"q":{"type":"string","description":"Kod veya ad araması"},"status":{"type":"string","enum":["active","fully_depreciated","disposed","all"]},"page":{"type":"integer"},"per_page":{"type":"integer","maximum":200}},"additionalProperties":false},"fixed_asset_schedule.input":{"type":"object","properties":{"id":{"type":"integer"}},"additionalProperties":false,"required":["id"]},"fixed_asset_update.input":{"type":"object","properties":{"id":{"type":"integer"},"code":{"type":"string","maxLength":32,"description":"Boşsa SK-000001 serisi"},"name":{"type":"string","maxLength":255},"asset_account_id":{"type":"integer","description":"25x / 26x yaprak hesap"},"accumulated_account_id":{"type":"integer","description":"257 / 268 yaprak hesap"},"expense_account_id":{"type":"integer","description":"Amortisman gider hesabı (770.08, 760, 740, 730…)"},"depreciation_class_id":{"type":"integer","description":"VUK amortisman sınıfı (faydalı ömür önerisi)"},"acquisition_date":{"type":"string","format":"date"},"in_service_date":{"type":"string","format":"date","description":"Boşsa alış tarihi"},"cost_try":{"type":"string","description":"Maliyet (TRY)"},"useful_life_years":{"type":"integer","minimum":1,"maximum":99},"method":{"type":"string","enum":["straight_line","declining"]},"partial_first_year":{"type":"boolean","description":"Kıst amortisman (binek otoda zorunlu)"},"opening_accumulated_try":{"type":"string","description":"Sisteme geçişte aktarılan birikmiş amortisman"},"cost_center_id":{"type":"integer"},"notes":{"type":"string","maxLength":5000}},"additionalProperties":false,"required":["id"]},"freelance_receipt_calculate.input":{"type":"object","properties":{"issue_date":{"type":"string","format":"date"},"withholding_rate":{"type":"number","description":"Gelir vergisi stopaj oranı % (GVK 94/2-b: 20; vergi kesintisi yapmayan kişiye 0). Boşsa VKN'li müşteride 20, TCKN'lide 0"},"lines":{"type":"array","items":{"type":"object","properties":{"description":{"type":"string"},"quantity":{"type":"number"},"unit_price":{"type":"number","description":"Brüt ücret (KDV ve stopaj hariç)"},"vat_rate":{"type":"number","description":"KDV %, varsayılan 20"}},"required":["description","unit_price"]}}},"additionalProperties":false,"required":["lines"]},"freelance_receipt_cancel.input":{"type":"object","properties":{"id":{"type":"integer"},"reason":{"type":"string","description":"İptal gerekçesi"},"date":{"type":"string","format":"date","description":"Ters kayıt tarihi (boşsa bugün)"}},"additionalProperties":false,"required":["id","reason"]},"freelance_receipt_create.input":{"type":"object","properties":{"contact_id":{"type":"integer","description":"Müşteri (contact.list)"},"issue_date":{"type":"string","format":"date"},"withholding_rate":{"type":"number","description":"Gelir vergisi stopaj oranı % (GVK 94/2-b: 20; vergi kesintisi yapmayan kişiye 0). Boşsa VKN'li müşteride 20, TCKN'lide 0"},"revenue_account_id":{"type":"integer","description":"Gelir hesabı; boşsa 600.02 Hizmet satışları"},"notes":{"type":"string"},"lines":{"type":"array","items":{"type":"object","properties":{"description":{"type":"string"},"quantity":{"type":"number"},"unit_price":{"type":"number","description":"Brüt ücret (KDV ve stopaj hariç)"},"vat_rate":{"type":"number","description":"KDV %, varsayılan 20"}},"required":["description","unit_price"]}},"client_key":{"type":"string","description":"İstemci idempotency anahtarı"}},"additionalProperties":false,"required":["contact_id","issue_date","lines"]},"freelance_receipt_delete.input":{"type":"object","properties":{"id":{"type":"integer"}},"additionalProperties":false,"required":["id"]},"freelance_receipt_get.input":{"type":"object","properties":{"id":{"type":"integer"}},"additionalProperties":false,"required":["id"]},"freelance_receipt_issue.input":{"type":"object","properties":{"id":{"type":"integer"}},"additionalProperties":false,"required":["id"]},"freelance_receipt_list.input":{"type":"object","properties":{"status":{"type":"string","enum":["draft","issued","cancelled"]},"contact_id":{"type":"integer"},"from":{"type":"string","format":"date"},"to":{"type":"string","format":"date"},"q":{"type":"string","description":"Makbuz no, not veya cari adı"},"page":{"type":"integer","minimum":1},"per_page":{"type":"integer","minimum":1,"maximum":100}},"additionalProperties":false},"freelance_receipt_update.input":{"type":"object","properties":{"id":{"type":"integer"},"contact_id":{"type":"integer","description":"Müşteri (contact.list)"},"issue_date":{"type":"string","format":"date"},"withholding_rate":{"type":"number","description":"Gelir vergisi stopaj oranı % (GVK 94/2-b: 20; vergi kesintisi yapmayan kişiye 0). Boşsa VKN'li müşteride 20, TCKN'lide 0"},"revenue_account_id":{"type":"integer","description":"Gelir hesabı; boşsa 600.02 Hizmet satışları"},"notes":{"type":"string"},"lines":{"type":"array","items":{"type":"object","properties":{"description":{"type":"string"},"quantity":{"type":"number"},"unit_price":{"type":"number","description":"Brüt ücret (KDV ve stopaj hariç)"},"vat_rate":{"type":"number","description":"KDV %, varsayılan 20"}},"required":["description","unit_price"]}}},"additionalProperties":false,"required":["id"]},"import_cancel.input":{"type":"object","properties":{"id":{"type":"integer","minimum":1,"description":"Aktarım işi kimliği (import.upload yanıtındaki import.id)"}},"additionalProperties":false,"required":["id"]},"import_commit.input":{"type":"object","properties":{"id":{"type":"integer","minimum":1,"description":"Aktarım işi kimliği (import.upload yanıtındaki import.id)"},"options":{"type":"object","description":"Tür seçenekleri: bank_account_id (banka ekstresi), opening_date (YYYY-01-01) ve post (açılış), entry_type ve post (fiş), kind ve issue (fatura), decimal (\",\" veya \".\"), sheet (Excel sayfası)","additionalProperties":true}},"additionalProperties":false,"required":["id"]},"import_get.input":{"type":"object","properties":{"id":{"type":"integer","minimum":1,"description":"Aktarım işi kimliği (import.upload yanıtındaki import.id)"},"status":{"type":"string","enum":["pending","valid","invalid","committed","skipped","duplicate"],"description":"Satır süzgeci"},"rows":{"type":"boolean","description":"false → yalnız özet (polling)"}},"additionalProperties":false,"required":["id"]},"import_list.input":{"type":"object","properties":{"type":{"type":"string","description":"Aktarım türü (import.types)"},"status":{"type":"string","enum":["uploaded","mapped","validating","validated","committing","committed","failed","cancelled"]},"page":{"type":"integer","minimum":1},"per_page":{"type":"integer","minimum":1,"maximum":100}},"additionalProperties":false},"import_map.input":{"type":"object","properties":{"id":{"type":"integer","minimum":1,"description":"Aktarım işi kimliği (import.upload yanıtındaki import.id)"},"mapping":{"type":"object","description":"Hedef alan anahtarı → kaynak kolon adı (import.get headers). Boş değer eşlemeyi kaldırır.","additionalProperties":true},"options":{"type":"object","description":"Tür seçenekleri: bank_account_id (banka ekstresi), opening_date (YYYY-01-01) ve post (açılış), entry_type ve post (fiş), kind ve issue (fatura), decimal (\",\" veya \".\"), sheet (Excel sayfası)","additionalProperties":true},"header_row":{"type":"integer","minimum":0,"description":"Başlık satırı (1 tabanlı; 0 = başlıksız, pozisyonel)"},"sheet":{"type":"string"}},"additionalProperties":false,"required":["id"]},"import_types.input":{"type":"object","properties":{},"additionalProperties":false},"import_upload.input":{"type":"object","properties":{"type":{"type":"string","description":"accounts, contacts, products, opening_balances, journal_entries, invoices, bank_statement (import.types)"},"profile":{"type":"string","description":"generic (varsayılan), luca_fis, luca_hesap_plani, luca_mizan, luca_cari, logo_hesap_plani, logo_cari, logo_fis, parasut_cari, parasut_urun, parasut_satis, parasut_gider"},"file":{"type":"string","format":"binary","description":"Dosya (≤ 20 MB; multipart alanı \"file\")"},"options":{"type":"object","description":"Tür seçenekleri: bank_account_id (banka ekstresi), opening_date (YYYY-01-01) ve post (açılış), entry_type ve post (fiş), kind ve issue (fatura), decimal (\",\" veya \".\"), sheet (Excel sayfası)","additionalProperties":true},"bank_account_id":{"type":"integer","description":"Banka ekstresi için hedef banka hesabı (options.bank_account_id kısayolu)"},"sheet":{"type":"string","description":"Excel sayfa adı (boşsa ilk sayfa)"}},"additionalProperties":false,"required":["type","file"]},"import_validate.input":{"type":"object","properties":{"id":{"type":"integer","minimum":1,"description":"Aktarım işi kimliği (import.upload yanıtındaki import.id)"}},"additionalProperties":false,"required":["id"]},"instrument_create.input":{"type":"object","properties":{"type":{"type":"string","enum":["cheque","note"],"description":"cheque (çek) / note (senet)"},"direction":{"type":"string","enum":["received","given"],"description":"received: müşteriden alınan, given: tedarikçiye verilen"},"contact_id":{"type":"integer","description":"Alınanda müşteri, verilende tedarikçi"},"serial_no":{"type":"string","maxLength":64},"issue_date":{"type":"string","format":"date","description":"Keşide / düzenleme tarihi"},"due_date":{"type":"string","format":"date","description":"Vade"},"date":{"type":"string","format":"date","description":"Alma/verme (kayıt) tarihi; boşsa keşide tarihi"},"amount":{"type":"string","description":"Tutar (çek/senet dövizinde)"},"currency":{"type":"string","minLength":3,"maxLength":3},"fx_rate":{"type":"string","description":"Kur; boşsa TCMB döviz alış"},"bank_account_id":{"type":"integer","description":"Verilen çekte çekin çekildiği banka hesabı"},"drawer_name":{"type":"string","description":"Keşideci"},"bank_name":{"type":"string"},"branch":{"type":"string"},"account_no":{"type":"string"},"description":{"type":"string","maxLength":500},"client_key":{"type":"string","maxLength":100},"auto_allocate":{"type":"boolean","description":"allocations boşsa en eski vadeli açık faturalara dağıt"},"allocations":{"type":"array","items":{"type":"object","required":["invoice_id","amount"],"properties":{"invoice_id":{"type":"integer","description":"payment.open_items"},"amount":{"type":"string","description":"Fatura dövizinde kapatılan tutar"},"fx_rate":{"type":"string","description":"Kapanış kuru (TL ile dövizli fatura kapatılırken)"}},"additionalProperties":false}}},"additionalProperties":false,"required":["type","direction","contact_id","serial_no","issue_date","due_date","amount"]},"instrument_get.input":{"type":"object","properties":{"id":{"type":"integer"}},"additionalProperties":false,"required":["id"]},"instrument_list.input":{"type":"object","properties":{"type":{"type":"string","enum":["cheque","note"],"description":"cheque (çek) / note (senet)"},"direction":{"type":"string","enum":["received","given"],"description":"received (alınan) / given (verilen)"},"status":{"type":"string","enum":["portfolio","in_collection","in_guarantee","endorsed","collected","bounced","returned","given","paid","cancelled","open"],"description":"open: portföy + tahsilde + teminatta + verilen (ödenmemiş)"},"contact_id":{"type":"integer"},"due_from":{"type":"string","format":"date"},"due_to":{"type":"string","format":"date"},"q":{"type":"string","description":"Seri no, keşideci, banka, açıklama veya cari adı"},"page":{"type":"integer","minimum":1},"per_page":{"type":"integer","minimum":1,"maximum":200}},"additionalProperties":false},"instrument_move.input":{"type":"object","properties":{"id":{"type":"integer"},"action":{"type":"string","enum":["deposit_collection","deposit_guarantee","withdraw","collect","endorse","bounce","return","pay"]},"date":{"type":"string","format":"date"},"contact_id":{"type":"integer","description":"endorse: ciro edilen tedarikçi"},"bank_account_id":{"type":"integer","description":"deposit_*: banka; collect/pay: tahsil/ödeme bankası"},"cash_account_id":{"type":"integer","description":"collect/pay: kasadan"},"fx_rate":{"type":"string","description":"Dövizli çek/senette tahsil/ödeme kuru; boşsa TCMB"},"note":{"type":"string","maxLength":500},"auto_allocate":{"type":"boolean","description":"allocations boşsa en eski vadeli açık faturalara dağıt"},"allocations":{"type":"array","items":{"type":"object","required":["invoice_id","amount"],"properties":{"invoice_id":{"type":"integer","description":"payment.open_items"},"amount":{"type":"string","description":"Fatura dövizinde kapatılan tutar"},"fx_rate":{"type":"string","description":"Kapanış kuru (TL ile dövizli fatura kapatılırken)"}},"additionalProperties":false}}},"additionalProperties":false,"required":["id","action","date"]},"instrument_undo.input":{"type":"object","properties":{"id":{"type":"integer"},"date":{"type":"string","format":"date","description":"Ters kayıt tarihi"},"reason":{"type":"string","maxLength":500}},"additionalProperties":false,"required":["id"]},"invitation_cancel.input":{"type":"object","properties":{"invitation_id":{"type":"integer","minimum":1,"description":"Davet kimliği (invitation.list → invitations[].id)"}},"additionalProperties":false,"required":["invitation_id"]},"invitation_list.input":{"type":"object","properties":{"include_expired":{"type":"boolean","description":"Süresi dolmuş davetler de dönsün (varsayılan true)"}},"additionalProperties":false},"invitation_resend.input":{"type":"object","properties":{"invitation_id":{"type":"integer","minimum":1,"description":"Davet kimliği (invitation.list → invitations[].id)"}},"additionalProperties":false,"required":["invitation_id"]},"invoice_calculate.input":{"type":"object","properties":{"kind":{"type":"string","enum":["sales","purchase","sales_return","purchase_return","quote","proforma"],"description":"sales (satış), purchase (alış), sales_return, purchase_return, quote (teklif), proforma"},"contact_id":{"type":"integer","description":"Cari kimliği (contact.list)"},"issue_date":{"type":"string","format":"date","description":"Fatura tarihi YYYY-MM-DD"},"issue_time":{"type":"string","description":"SS:DD[:ss]"},"due_date":{"type":"string","format":"date","description":"Vade; boşsa cari vadesinden"},"currency":{"type":"string","minLength":3,"maxLength":3,"description":"Varsayılan cari dövizi / TRY"},"fx_rate":{"type":"string","description":"Sayı metni (ör. \"1200.50\")"},"invoice_type_code":{"type":"string","enum":["SATIS","IADE","TEVKIFAT","TEVKIFATIADE","ISTISNA","IHRACKAYITLI","OZELMATRAH"],"description":"Boşsa kalemlerden türetilir (tevkifat → TEVKIFAT, istisna → ISTISNA…)"},"scenario":{"type":"string","enum":["TEMELFATURA","TICARIFATURA","EARSIVFATURA","IHRACAT","KAMU"]},"external_no":{"type":"string","maxLength":32,"description":"Tedarikçi fatura no / iade belge no"},"notes":{"type":"string"},"warehouse_id":{"type":"integer"},"cost_center_id":{"type":"integer"},"project_id":{"type":"integer"},"return_of_invoice_id":{"type":"integer","description":"İade faturasında iade edilen fatura"},"client_key":{"type":"string","maxLength":100,"description":"İstemci idempotency anahtarı"},"lines":{"type":"array","minItems":1,"maxItems":500,"items":{"type":"object","required":["quantity","unit_price"],"properties":{"product_id":{"type":"integer","description":"Ürün/hizmet (product.list); boşsa serbest kalem"},"description":{"type":"string","maxLength":500},"quantity":{"type":"string","description":"Sayı metni (ör. \"1200.50\")"},"unit_code":{"type":"string","maxLength":8,"description":"UBL birim (C62 adet…)"},"unit_price":{"type":"string","description":"Sayı metni (ör. \"1200.50\")"},"price_includes_vat":{"type":"boolean","description":"true: unit_price KDV dahildir; KDV hariç fiyat satır toplamı birebir korunarak hesaplanır"},"discount_rate":{"type":"string","description":"Sayı metni (ör. \"1200.50\")"},"discount_amount":{"type":"string","description":"Sayı metni (ör. \"1200.50\")"},"vat_rate":{"type":"string","description":"Sayı metni (ör. \"1200.50\")"},"vat_exemption_code":{"type":"string","description":"KDV %0 ise istisna kodu (tax.codes)"},"vat_exemption_reason":{"type":"string"},"withholding_code":{"type":"string","description":"Tevkifat kodu (601–627, 801–825)"},"other_taxes":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string"},"name":{"type":"string"},"rate":{"type":"string","description":"Sayı metni (ör. \"1200.50\")"},"amount":{"type":"string","description":"Sayı metni (ör. \"1200.50\")"},"in_vat_base":{"type":"boolean"}},"required":["code"]}},"account_id":{"type":"integer","description":"Elle hesap (boşsa hesap çözücü)"},"vat_deductible":{"type":"boolean","description":"Alışta indirilemeyen KDV için false"},"cost_center_id":{"type":"integer"},"project_id":{"type":"integer"},"return_of_line_id":{"type":"integer","description":"İade faturasında iade edilen fatura kalemi (return_of_invoice_id faturasının kalemi)"}},"additionalProperties":false}}},"additionalProperties":false,"required":["kind","lines"]},"invoice_cancel.input":{"type":"object","properties":{"id":{"type":"integer"},"reason":{"type":"string","minLength":3,"maxLength":500,"description":"İptal gerekçesi"},"date":{"type":"string","format":"date","description":"Ters kayıt tarihi (boşsa fatura tarihi; dönem kilitliyse ilk açık gün)"}},"additionalProperties":false,"required":["id","reason"]},"invoice_create.input":{"type":"object","properties":{"kind":{"type":"string","enum":["sales","purchase","sales_return","purchase_return","quote","proforma"],"description":"sales (satış), purchase (alış), sales_return, purchase_return, quote (teklif), proforma"},"contact_id":{"type":"integer","description":"Cari kimliği (contact.list)"},"issue_date":{"type":"string","format":"date","description":"Fatura tarihi YYYY-MM-DD"},"issue_time":{"type":"string","description":"SS:DD[:ss]"},"due_date":{"type":"string","format":"date","description":"Vade; boşsa cari vadesinden"},"currency":{"type":"string","minLength":3,"maxLength":3,"description":"Varsayılan cari dövizi / TRY"},"fx_rate":{"type":"string","description":"Sayı metni (ör. \"1200.50\")"},"invoice_type_code":{"type":"string","enum":["SATIS","IADE","TEVKIFAT","TEVKIFATIADE","ISTISNA","IHRACKAYITLI","OZELMATRAH"],"description":"Boşsa kalemlerden türetilir (tevkifat → TEVKIFAT, istisna → ISTISNA…)"},"scenario":{"type":"string","enum":["TEMELFATURA","TICARIFATURA","EARSIVFATURA","IHRACAT","KAMU"]},"external_no":{"type":"string","maxLength":32,"description":"Tedarikçi fatura no / iade belge no"},"notes":{"type":"string"},"warehouse_id":{"type":"integer"},"cost_center_id":{"type":"integer"},"project_id":{"type":"integer"},"return_of_invoice_id":{"type":"integer","description":"İade faturasında iade edilen fatura"},"client_key":{"type":"string","maxLength":100,"description":"İstemci idempotency anahtarı"},"lines":{"type":"array","minItems":1,"maxItems":500,"items":{"type":"object","required":["quantity","unit_price"],"properties":{"product_id":{"type":"integer","description":"Ürün/hizmet (product.list); boşsa serbest kalem"},"description":{"type":"string","maxLength":500},"quantity":{"type":"string","description":"Sayı metni (ör. \"1200.50\")"},"unit_code":{"type":"string","maxLength":8,"description":"UBL birim (C62 adet…)"},"unit_price":{"type":"string","description":"Sayı metni (ör. \"1200.50\")"},"price_includes_vat":{"type":"boolean","description":"true: unit_price KDV dahildir; KDV hariç fiyat satır toplamı birebir korunarak hesaplanır"},"discount_rate":{"type":"string","description":"Sayı metni (ör. \"1200.50\")"},"discount_amount":{"type":"string","description":"Sayı metni (ör. \"1200.50\")"},"vat_rate":{"type":"string","description":"Sayı metni (ör. \"1200.50\")"},"vat_exemption_code":{"type":"string","description":"KDV %0 ise istisna kodu (tax.codes)"},"vat_exemption_reason":{"type":"string"},"withholding_code":{"type":"string","description":"Tevkifat kodu (601–627, 801–825)"},"other_taxes":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string"},"name":{"type":"string"},"rate":{"type":"string","description":"Sayı metni (ör. \"1200.50\")"},"amount":{"type":"string","description":"Sayı metni (ör. \"1200.50\")"},"in_vat_base":{"type":"boolean"}},"required":["code"]}},"account_id":{"type":"integer","description":"Elle hesap (boşsa hesap çözücü)"},"vat_deductible":{"type":"boolean","description":"Alışta indirilemeyen KDV için false"},"cost_center_id":{"type":"integer"},"project_id":{"type":"integer"},"return_of_line_id":{"type":"integer","description":"İade faturasında iade edilen fatura kalemi (return_of_invoice_id faturasının kalemi)"},"gtip":{"type":"string","description":"İhracat: GTİP 12 hane (ör. 847130000000)"},"package_type":{"type":"string","maxLength":3,"description":"İhracat: kap cinsi (UN/ECE; BX, CT, PK…)"},"package_count":{"type":"string","description":"İhracat: kap adedi"},"package_no":{"type":"string","maxLength":40,"description":"İhracat: kap no / marka"}},"additionalProperties":false}},"delivery_terms":{"type":"string","enum":["EXW","FCA","FAS","FOB","CFR","CIF","CPT","CIP","DAP","DPU","DDP"],"description":"İhracat: teslim şartı (INCOTERMS)"},"transport_mode":{"type":"string","enum":[1,2,3,4,5,7,8],"description":"İhracat: taşıma şekli (1 deniz, 2 demiryolu, 3 karayolu, 4 hava, 5 posta, 7 sabit tesis, 8 iç su yolu)"},"delivery_address":{"type":"object","description":"İhracat: malın teslim adresi (boşsa alıcı adresi)","properties":{"street":{"type":"string"},"district":{"type":"string"},"city":{"type":"string"},"postal_zone":{"type":"string"},"country_code":{"type":"string","minLength":2,"maxLength":2,"description":"ISO 3166 (ör. DE)"}},"additionalProperties":false},"is_internet_sale":{"type":"boolean","description":"e-Arşiv: internet satışı"},"internet_sale":{"type":"object","description":"e-Arşiv internet satışı bilgileri (is_internet_sale=true ise web adresi, ödeme şekli ve ödeme tarihi zorunlu)","properties":{"website":{"type":"string"},"payment_method":{"type":"string","enum":["KREDIKARTI/BANKAKARTI","EFT/HAVALE","KAPIDAODEME","ODEMEARACISI","DIGER"]},"payment_method_name":{"type":"string","description":"ODEMEARACISI / DIGER için ad/açıklama"},"payment_date":{"type":"string","format":"date"},"transporter_name":{"type":"string"},"transporter_vkn":{"type":"string"},"transport_date":{"type":"string","format":"date","description":"Taşıyıcı girildiyse zorunlu"}},"additionalProperties":false},"is_despatch_substitute":{"type":"boolean","description":"e-Arşiv: fatura irsaliye yerine geçer (malın teslimi anında düzenlenen)"}},"additionalProperties":false,"required":["kind","contact_id","issue_date","lines"]},"invoice_create_return.input":{"type":"object","properties":{"id":{"type":"integer","description":"İade edilecek fatura"},"issue_date":{"type":"string","format":"date"},"lines":{"type":"array","items":{"type":"object","required":["line_id"],"properties":{"line_id":{"type":"integer"},"quantity":{"type":"string"}},"additionalProperties":false}}},"additionalProperties":false,"required":["id"]},"invoice_delete.input":{"type":"object","properties":{"id":{"type":"integer"}},"additionalProperties":false,"required":["id"]},"invoice_form_options.input":{"type":"object","properties":{"group":{"type":"string","enum":["sales","purchase","quote"],"description":"sales (satış + satış iadesi), purchase (alış + alış iadesi), quote (teklif + proforma); boşsa tüm türler"},"date":{"type":"string","format":"date","description":"Vergi kodlarının geçerli olacağı tarih (boşsa bugün)"}},"additionalProperties":false},"invoice_get.input":{"type":"object","properties":{"id":{"type":"integer"}},"additionalProperties":false,"required":["id"]},"invoice_issue.input":{"type":"object","properties":{"id":{"type":"integer"}},"additionalProperties":false,"required":["id"]},"invoice_list.input":{"type":"object","properties":{"kind":{"type":"string","enum":["sales","purchase","sales_return","purchase_return","quote","proforma"]},"kinds":{"type":"array","items":{"type":"string","enum":["sales","purchase","sales_return","purchase_return","quote","proforma"]}},"status":{"type":"string","enum":["draft","issued","cancelled","sent","accepted","rejected","converted","overdue"],"description":"overdue: vadesi geçmiş açık faturalar"},"contact_id":{"type":"integer"},"from":{"type":"string","format":"date"},"to":{"type":"string","format":"date"},"payment_status":{"type":"string","enum":["unpaid","partial","paid"]},"q":{"type":"string","description":"Fatura no, belge no, not veya cari adı"},"page":{"type":"integer","minimum":1},"per_page":{"type":"integer","minimum":1,"maximum":200}},"additionalProperties":false},"invoice_pdf.input":{"type":"object","properties":{"id":{"type":"integer","description":"Fatura kimliği (invoice.list)"}},"additionalProperties":false,"required":["id"]},"invoice_update.input":{"type":"object","properties":{"id":{"type":"integer"},"status":{"type":"string","enum":["draft","sent","accepted","rejected"],"description":"Yalnız teklif/proforma için"},"contact_id":{"type":"integer","description":"Cari kimliği (contact.list)"},"issue_date":{"type":"string","format":"date","description":"Fatura tarihi YYYY-MM-DD"},"issue_time":{"type":"string","description":"SS:DD[:ss]"},"due_date":{"type":"string","format":"date","description":"Vade; boşsa cari vadesinden"},"currency":{"type":"string","minLength":3,"maxLength":3,"description":"Varsayılan cari dövizi / TRY"},"fx_rate":{"type":"string","description":"Sayı metni (ör. \"1200.50\")"},"invoice_type_code":{"type":"string","enum":["SATIS","IADE","TEVKIFAT","TEVKIFATIADE","ISTISNA","IHRACKAYITLI","OZELMATRAH"],"description":"Boşsa kalemlerden türetilir (tevkifat → TEVKIFAT, istisna → ISTISNA…)"},"scenario":{"type":"string","enum":["TEMELFATURA","TICARIFATURA","EARSIVFATURA","IHRACAT","KAMU"]},"external_no":{"type":"string","maxLength":32,"description":"Tedarikçi fatura no / iade belge no"},"notes":{"type":"string"},"warehouse_id":{"type":"integer"},"cost_center_id":{"type":"integer"},"project_id":{"type":"integer"},"return_of_invoice_id":{"type":"integer","description":"İade faturasında iade edilen fatura"},"lines":{"type":"array","minItems":1,"maxItems":500,"items":{"type":"object","required":["quantity","unit_price"],"properties":{"product_id":{"type":"integer","description":"Ürün/hizmet (product.list); boşsa serbest kalem"},"description":{"type":"string","maxLength":500},"quantity":{"type":"string","description":"Sayı metni (ör. \"1200.50\")"},"unit_code":{"type":"string","maxLength":8,"description":"UBL birim (C62 adet…)"},"unit_price":{"type":"string","description":"Sayı metni (ör. \"1200.50\")"},"price_includes_vat":{"type":"boolean","description":"true: unit_price KDV dahildir; KDV hariç fiyat satır toplamı birebir korunarak hesaplanır"},"discount_rate":{"type":"string","description":"Sayı metni (ör. \"1200.50\")"},"discount_amount":{"type":"string","description":"Sayı metni (ör. \"1200.50\")"},"vat_rate":{"type":"string","description":"Sayı metni (ör. \"1200.50\")"},"vat_exemption_code":{"type":"string","description":"KDV %0 ise istisna kodu (tax.codes)"},"vat_exemption_reason":{"type":"string"},"withholding_code":{"type":"string","description":"Tevkifat kodu (601–627, 801–825)"},"other_taxes":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string"},"name":{"type":"string"},"rate":{"type":"string","description":"Sayı metni (ör. \"1200.50\")"},"amount":{"type":"string","description":"Sayı metni (ör. \"1200.50\")"},"in_vat_base":{"type":"boolean"}},"required":["code"]}},"account_id":{"type":"integer","description":"Elle hesap (boşsa hesap çözücü)"},"vat_deductible":{"type":"boolean","description":"Alışta indirilemeyen KDV için false"},"cost_center_id":{"type":"integer"},"project_id":{"type":"integer"},"return_of_line_id":{"type":"integer","description":"İade faturasında iade edilen fatura kalemi (return_of_invoice_id faturasının kalemi)"},"gtip":{"type":"string","description":"İhracat: GTİP 12 hane (ör. 847130000000)"},"package_type":{"type":"string","maxLength":3,"description":"İhracat: kap cinsi (UN/ECE; BX, CT, PK…)"},"package_count":{"type":"string","description":"İhracat: kap adedi"},"package_no":{"type":"string","maxLength":40,"description":"İhracat: kap no / marka"}},"additionalProperties":false}},"delivery_terms":{"type":"string","enum":["EXW","FCA","FAS","FOB","CFR","CIF","CPT","CIP","DAP","DPU","DDP"],"description":"İhracat: teslim şartı (INCOTERMS)"},"transport_mode":{"type":"string","enum":[1,2,3,4,5,7,8],"description":"İhracat: taşıma şekli (1 deniz, 2 demiryolu, 3 karayolu, 4 hava, 5 posta, 7 sabit tesis, 8 iç su yolu)"},"delivery_address":{"type":"object","description":"İhracat: malın teslim adresi (boşsa alıcı adresi)","properties":{"street":{"type":"string"},"district":{"type":"string"},"city":{"type":"string"},"postal_zone":{"type":"string"},"country_code":{"type":"string","minLength":2,"maxLength":2,"description":"ISO 3166 (ör. DE)"}},"additionalProperties":false},"is_internet_sale":{"type":"boolean","description":"e-Arşiv: internet satışı"},"internet_sale":{"type":"object","description":"e-Arşiv internet satışı bilgileri (is_internet_sale=true ise web adresi, ödeme şekli ve ödeme tarihi zorunlu)","properties":{"website":{"type":"string"},"payment_method":{"type":"string","enum":["KREDIKARTI/BANKAKARTI","EFT/HAVALE","KAPIDAODEME","ODEMEARACISI","DIGER"]},"payment_method_name":{"type":"string","description":"ODEMEARACISI / DIGER için ad/açıklama"},"payment_date":{"type":"string","format":"date"},"transporter_name":{"type":"string"},"transporter_vkn":{"type":"string"},"transport_date":{"type":"string","format":"date","description":"Taşıyıcı girildiyse zorunlu"}},"additionalProperties":false},"is_despatch_substitute":{"type":"boolean","description":"e-Arşiv: fatura irsaliye yerine geçer (malın teslimi anında düzenlenen)"}},"additionalProperties":false,"required":["id"]},"journal_account_correction.input":{"type":"object","properties":{"ids":{"type":"array","items":{"type":"integer"},"maxItems":100},"from_account":{"oneOf":[{"type":"integer"},{"type":"string"}]},"to_account":{"oneOf":[{"type":"integer"},{"type":"string"}]},"date":{"type":"string","format":"date"},"reason":{"type":"string","maxLength":200}},"additionalProperties":false,"required":["ids","from_account","to_account"]},"journal_account_correction_preview.input":{"type":"object","properties":{"ids":{"type":"array","items":{"type":"integer"},"maxItems":100},"from_account":{"oneOf":[{"type":"integer"},{"type":"string"}]},"to_account":{"oneOf":[{"type":"integer"},{"type":"string"}]},"date":{"type":"string","format":"date","description":"Ters kayıt ve yeni fiş tarihi (varsayılan: orijinal tarih; dönemi kilitliyse ilk açık dönem)"}},"additionalProperties":false,"required":["ids","from_account","to_account"]},"journal_approve.input":{"type":"object","properties":{"id":{"type":"integer"}},"additionalProperties":false,"required":["id"]},"journal_bulk_delete_drafts.input":{"type":"object","properties":{"ids":{"type":"array","items":{"type":"integer"},"maxItems":200}},"additionalProperties":false,"required":["ids"]},"journal_bulk_fix_lines.input":{"type":"object","properties":{"ids":{"type":"array","items":{"type":"integer"},"maxItems":200},"patch":{"type":"object","properties":{"account_prefix":{"type":"string","description":"Yalnız bu hesap ve alt hesaplarının satırları (ör. \"153\")"},"only_currency":{"type":"string","description":"Yalnız bu dövizdeki satırlar (kur düzeltme)"},"currency":{"type":"string","description":"Yeni döviz cinsi (TRY → döviz alanları temizlenir)"},"fx_rate":{"type":"string","description":"Kur; boşsa fiş tarihinin TCMB kuru"},"quantity":{"type":"string"},"unit_code":{"type":"string","maxLength":8}},"additionalProperties":false}},"additionalProperties":false,"required":["ids","patch"]},"journal_bulk_post.input":{"type":"object","properties":{"ids":{"type":"array","minItems":1,"maxItems":50,"items":{"type":"integer","minimum":1},"description":"Fiş kimlikleri (journal.review_queue → entries[].id); sonuç bu sırayla döner"}},"additionalProperties":false,"required":["ids"]},"journal_bulk_replace_account.input":{"type":"object","properties":{"ids":{"type":"array","items":{"type":"integer"},"maxItems":200},"from_account":{"oneOf":[{"type":"integer"},{"type":"string"}],"description":"Değiştirilecek hesap (kod, ör. \"770.01\", veya id)"},"to_account":{"oneOf":[{"type":"integer"},{"type":"string"}],"description":"Yeni hesap (aktif yaprak hesap)"}},"additionalProperties":false,"required":["ids","from_account","to_account"]},"journal_bulk_update_drafts.input":{"type":"object","properties":{"ids":{"type":"array","items":{"type":"integer"},"maxItems":200},"patch":{"type":"object","properties":{"document_number":{"type":"string","maxLength":64},"document_date":{"type":"string","format":"date"},"description":{"type":"string","maxLength":500},"entry_date":{"type":"string","format":"date"}},"additionalProperties":false}},"additionalProperties":false,"required":["ids","patch"]},"journal_close_accounts.input":{"type":"object","properties":{"code_from":{"type":"string","description":"Aralık başı hesap kodu (ör. \"120\")"},"code_to":{"type":"string","description":"Aralık sonu hesap kodu (alt hesapları dahil, ör. \"120\")"},"target_account":{"oneOf":[{"type":"integer"},{"type":"string"}],"description":"Bakiyelerin aktarılacağı hesap (kod veya id)"},"date":{"type":"string","format":"date","description":"Bakiye ve fiş tarihi"},"description":{"type":"string","maxLength":500},"post":{"type":"boolean","description":"true: fişi kesinleştir (onay politikası varsa onaya gönder)"},"client_key":{"type":"string","maxLength":100}},"additionalProperties":false,"required":["code_from","code_to","target_account","date"]},"journal_close_accounts_preview.input":{"type":"object","properties":{"code_from":{"type":"string","description":"Aralık başı hesap kodu (ör. \"120\")"},"code_to":{"type":"string","description":"Aralık sonu hesap kodu (alt hesapları dahil, ör. \"120\")"},"target_account":{"oneOf":[{"type":"integer"},{"type":"string"}],"description":"Bakiyelerin aktarılacağı hesap (kod veya id)"},"date":{"type":"string","format":"date","description":"Bakiye ve fiş tarihi"},"description":{"type":"string","maxLength":500}},"additionalProperties":false,"required":["code_from","code_to","target_account","date"]},"journal_copy_targets.input":{"type":"object","properties":{},"additionalProperties":false},"journal_create.input":{"type":"object","properties":{"entry_type":{"type":"string","enum":["ACILIS","MAHSUP","TAHSIL","TEDIYE","KAPANIS"],"description":"MAHSUP, TAHSIL, TEDIYE, ACILIS (yalnız 01.01); KAPANIS elle girilemez"},"entry_date":{"type":"string","format":"date"},"description":{"type":"string","maxLength":500},"client_key":{"type":"string","maxLength":100,"description":"İstemci idempotency anahtarı: aynı anahtar ikinci fiş üretmez"},"lines":{"type":"array","minItems":1,"maxItems":500,"items":{"type":"object","required":["account","side","amount"],"properties":{"account":{"oneOf":[{"type":"integer"},{"type":"string"}],"description":"Hesap kimliği veya kodu (ör. \"120.01\")"},"side":{"type":"string","enum":["debit","credit"],"description":"Borç (debit) veya alacak (credit)"},"amount":{"type":"string","description":"TL tutar, pozitif (ör. \"1200.00\")"},"description":{"type":"string","maxLength":500},"contact_id":{"type":"integer"},"cost_center_id":{"type":"integer"},"project_id":{"type":"integer"},"currency":{"type":"string","minLength":3,"maxLength":3,"description":"ISO 4217 (TRY, USD, EUR…)"},"fx_amount":{"type":"string","description":"Döviz tutarı (currency ≠ TRY ise zorunlu)"},"fx_rate":{"type":"string","description":"Kur; verilmezse TCMB döviz alış (bir önceki iş günü)"},"quantity":{"type":"string"},"unit_code":{"type":"string","maxLength":8},"document_type":{"type":"string","enum":["invoice","check","voucher","receipt","shipment","order-customer","order-vendor","other"]},"document_type_description":{"type":"string","maxLength":100},"document_number":{"type":"string","maxLength":64},"document_date":{"type":"string","format":"date"},"payment_method":{"type":"string","maxLength":32}},"additionalProperties":false}}},"additionalProperties":false,"required":["entry_type","entry_date","description","lines"]},"journal_create_opening.input":{"type":"object","properties":{"date":{"type":"string","format":"date","description":"Mali yılın ilk günü (YYYY-01-01)"},"description":{"type":"string","maxLength":500},"client_key":{"type":"string","maxLength":100},"lines":{"type":"array","minItems":1,"maxItems":500,"items":{"type":"object","required":["account","side","amount"],"properties":{"account":{"oneOf":[{"type":"integer"},{"type":"string"}],"description":"Hesap kimliği veya kodu (ör. \"120.01\")"},"side":{"type":"string","enum":["debit","credit"],"description":"Borç (debit) veya alacak (credit)"},"amount":{"type":"string","description":"TL tutar, pozitif (ör. \"1200.00\")"},"description":{"type":"string","maxLength":500},"contact_id":{"type":"integer"},"cost_center_id":{"type":"integer"},"project_id":{"type":"integer"},"currency":{"type":"string","minLength":3,"maxLength":3,"description":"ISO 4217 (TRY, USD, EUR…)"},"fx_amount":{"type":"string","description":"Döviz tutarı (currency ≠ TRY ise zorunlu)"},"fx_rate":{"type":"string","description":"Kur; verilmezse TCMB döviz alış (bir önceki iş günü)"},"quantity":{"type":"string"},"unit_code":{"type":"string","maxLength":8},"document_type":{"type":"string","enum":["invoice","check","voucher","receipt","shipment","order-customer","order-vendor","other"]},"document_type_description":{"type":"string","maxLength":100},"document_number":{"type":"string","maxLength":64},"document_date":{"type":"string","format":"date"},"payment_method":{"type":"string","maxLength":32}},"additionalProperties":false}}},"additionalProperties":false,"required":["date","lines"]},"journal_delete.input":{"type":"object","properties":{"id":{"type":"integer"}},"additionalProperties":false,"required":["id"]},"journal_duplicate.input":{"type":"object","properties":{"id":{"type":"integer","description":"Kopyalanacak fiş"},"date":{"type":"string","format":"date","description":"Yeni fişin tarihi (varsayılan: orijinal tarih)"},"client_key":{"type":"string","maxLength":100},"target_company_id":{"type":"integer","description":"Başka firmaya kopyalama: hedef şirket (journal.copy_targets). Boşsa aynı şirket."}},"additionalProperties":false,"required":["id"]},"journal_get.input":{"type":"object","properties":{"id":{"type":"integer"}},"additionalProperties":false,"required":["id"]},"journal_list.input":{"type":"object","properties":{"from":{"type":"string","format":"date"},"to":{"type":"string","format":"date"},"status":{"type":"string","enum":["draft","pending_approval","posted"]},"entry_type":{"type":"array","items":{"type":"string","enum":["ACILIS","MAHSUP","TAHSIL","TEDIYE","KAPANIS"]},"description":"Fiş türleri (ör. [\"TAHSIL\",\"TEDIYE\"]); tek metin değer de kabul edilir"},"origin":{"type":"string","enum":["manual","auto","import","api","assistant","system"],"description":"Fişi üreten kanal (elle, otomatik, API, asistan…)"},"source":{"type":"string","enum":["invoice","bank","payment","manual","import","system"],"description":"Kaynak grubu: invoice (fatura), bank (banka), payment (tahsilat/ödeme/masraf), manual (elle), import, system (dönem sonu/stok)"},"review_required":{"type":"boolean"},"q":{"type":"string","description":"Fiş no veya açıklamada arama"},"account_code":{"type":"string","description":"Bu hesaba (ve alt hesaplarına) satırı olan fişler"},"amount_min":{"type":"number","minimum":0,"description":"Fiş toplamı (borç) en az"},"amount_max":{"type":"number","minimum":0,"description":"Fiş toplamı (borç) en çok"},"document_number":{"type":"string","description":"Satır belge numarası (içerir)"},"contact_id":{"type":"integer","description":"Bu cariye satırı olan fişler"},"cost_center_id":{"type":"integer","description":"Bu masraf merkezine satırı olan fişler"},"project_id":{"type":"integer","description":"Bu projeye satırı olan fişler"},"passive":{"type":"string","enum":["only","hide"],"description":"Pasif (iptal işaretli) taslaklar: only = yalnız pasifler, hide = pasifleri gizle"},"page":{"type":"integer","minimum":1},"per_page":{"type":"integer","minimum":1,"maximum":200}},"additionalProperties":false},"journal_merge.input":{"type":"object","properties":{"ids":{"type":"array","items":{"type":"integer"},"minItems":2,"maxItems":50},"description":{"type":"string","maxLength":500,"description":"Birleşik fişin açıklaması (varsayılan: ilk fişinki)"}},"additionalProperties":false,"required":["ids"]},"journal_post.input":{"type":"object","properties":{"id":{"type":"integer"}},"additionalProperties":false,"required":["id"]},"journal_reject.input":{"type":"object","properties":{"id":{"type":"integer"},"reason":{"type":"string","maxLength":500}},"additionalProperties":false,"required":["id","reason"]},"journal_reverse.input":{"type":"object","properties":{"id":{"type":"integer"},"date":{"type":"string","format":"date","description":"Boşsa orijinal tarih; o dönem kilitliyse ilk açık dönemin ilk günü"},"reason":{"type":"string","maxLength":300}},"additionalProperties":false,"required":["id"]},"journal_review_queue.input":{"type":"object","properties":{"tab":{"type":"string","enum":["review_needed","pending_approval","all","review","pending"],"description":"review_needed (varsayılan): inceleme gerekli taslaklar; pending_approval: onay bekleyen; all: ikisi birlikte. review/pending web takma adlarıdır."},"page":{"type":"integer","minimum":1},"per_page":{"type":"integer","minimum":1,"maximum":200,"description":"Varsayılan web sayfa boyu (50)"}},"additionalProperties":false},"journal_set_passive.input":{"type":"object","properties":{"ids":{"type":"array","items":{"type":"integer"},"maxItems":200},"passive":{"type":"boolean"},"reason":{"type":"string","maxLength":255}},"additionalProperties":false,"required":["ids","passive"]},"journal_split.input":{"type":"object","properties":{"id":{"type":"integer","description":"Bölünecek taslak fiş"},"line_nos":{"type":"array","items":{"type":"integer"},"description":"Yeni fişe taşınacak satır numaraları (line_no)"},"description":{"type":"string","maxLength":500,"description":"Yeni fişin açıklaması (varsayılan: orijinal açıklama)"},"client_key":{"type":"string","maxLength":100}},"additionalProperties":false,"required":["id","line_nos"]},"journal_submit.input":{"type":"object","properties":{"id":{"type":"integer"}},"additionalProperties":false,"required":["id"]},"journal_update.input":{"type":"object","properties":{"id":{"type":"integer"},"lock_version":{"type":"integer","minimum":0},"entry_type":{"type":"string","enum":["ACILIS","MAHSUP","TAHSIL","TEDIYE","KAPANIS"]},"entry_date":{"type":"string","format":"date"},"description":{"type":"string","maxLength":500},"lines":{"type":"array","minItems":1,"maxItems":500,"items":{"type":"object","required":["account","side","amount"],"properties":{"account":{"oneOf":[{"type":"integer"},{"type":"string"}],"description":"Hesap kimliği veya kodu (ör. \"120.01\")"},"side":{"type":"string","enum":["debit","credit"],"description":"Borç (debit) veya alacak (credit)"},"amount":{"type":"string","description":"TL tutar, pozitif (ör. \"1200.00\")"},"description":{"type":"string","maxLength":500},"contact_id":{"type":"integer"},"cost_center_id":{"type":"integer"},"project_id":{"type":"integer"},"currency":{"type":"string","minLength":3,"maxLength":3,"description":"ISO 4217 (TRY, USD, EUR…)"},"fx_amount":{"type":"string","description":"Döviz tutarı (currency ≠ TRY ise zorunlu)"},"fx_rate":{"type":"string","description":"Kur; verilmezse TCMB döviz alış (bir önceki iş günü)"},"quantity":{"type":"string"},"unit_code":{"type":"string","maxLength":8},"document_type":{"type":"string","enum":["invoice","check","voucher","receipt","shipment","order-customer","order-vendor","other"]},"document_type_description":{"type":"string","maxLength":100},"document_number":{"type":"string","maxLength":64},"document_date":{"type":"string","format":"date"},"payment_method":{"type":"string","maxLength":32}},"additionalProperties":false}}},"additionalProperties":false,"required":["id","lock_version","entry_type","entry_date","description","lines"]},"journal_validate.input":{"type":"object","properties":{"entry_type":{"type":"string","enum":["ACILIS","MAHSUP","TAHSIL","TEDIYE","KAPANIS"]},"entry_date":{"type":"string","format":"date"},"description":{"type":"string","maxLength":500},"lines":{"type":"array","minItems":1,"maxItems":500,"items":{"type":"object","required":["account","side","amount"],"properties":{"account":{"oneOf":[{"type":"integer"},{"type":"string"}],"description":"Hesap kimliği veya kodu (ör. \"120.01\")"},"side":{"type":"string","enum":["debit","credit"],"description":"Borç (debit) veya alacak (credit)"},"amount":{"type":"string","description":"TL tutar, pozitif (ör. \"1200.00\")"},"description":{"type":"string","maxLength":500},"contact_id":{"type":"integer"},"cost_center_id":{"type":"integer"},"project_id":{"type":"integer"},"currency":{"type":"string","minLength":3,"maxLength":3,"description":"ISO 4217 (TRY, USD, EUR…)"},"fx_amount":{"type":"string","description":"Döviz tutarı (currency ≠ TRY ise zorunlu)"},"fx_rate":{"type":"string","description":"Kur; verilmezse TCMB döviz alış (bir önceki iş günü)"},"quantity":{"type":"string"},"unit_code":{"type":"string","maxLength":8},"document_type":{"type":"string","enum":["invoice","check","voucher","receipt","shipment","order-customer","order-vendor","other"]},"document_type_description":{"type":"string","maxLength":100},"document_number":{"type":"string","maxLength":64},"document_date":{"type":"string","format":"date"},"payment_method":{"type":"string","maxLength":32}},"additionalProperties":false}}},"additionalProperties":false,"required":["entry_type","entry_date","lines"]},"journal_template_apply.input":{"type":"object","properties":{"id":{"type":"integer","description":"Şablon kimliği"},"date":{"type":"string","format":"date","description":"Fiş tarihi"},"inputs":{"type":"object","description":"Girdi anahtarı → değer (tutarlar metin \"1200.00\"; hesap girdisi hesap id veya kodu; cari girdisi cari id)"},"entry_type":{"type":"string","enum":["MAHSUP","TAHSIL","TEDIYE"],"description":"Şablonun fiş türünü ezer"},"description":{"type":"string","maxLength":500},"document_type":{"type":"string","enum":["invoice","check","voucher","receipt","shipment","order-customer","order-vendor","other"]},"document_number":{"type":"string","maxLength":64},"document_date":{"type":"string","format":"date"},"client_key":{"type":"string","maxLength":100,"description":"İstemci idempotency anahtarı: aynı anahtar ikinci fiş üretmez"}},"additionalProperties":false,"required":["id","date"]},"journal_template_create.input":{"type":"object","properties":{"name":{"type":"string","maxLength":191},"category":{"type":"string","enum":["vat_split","z_report","accrual","provision","profit_distribution","payroll_simple","custom"]},"entry_type":{"type":"string","enum":["MAHSUP","TAHSIL","TEDIYE"]},"description_template":{"type":"string","maxLength":500,"description":"Fiş açıklaması; {girdi} yer tutucuları kullanılabilir"},"inputs":{"type":"array","maxItems":20,"items":{"type":"object","required":["key","label","type"],"properties":{"key":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,31}$"},"label":{"type":"string","maxLength":100},"type":{"type":"string","enum":["money","pct","date","account","contact","text"]},"required":{"type":"boolean"},"default":{"type":"string"},"options":{"type":"array","items":{"type":"string"}},"help":{"type":"string","maxLength":255}}}},"lines":{"type":"array","minItems":2,"maxItems":30,"items":{"type":"object","required":["account","side","amount"],"properties":{"account":{"type":"string","description":"Hesap kodu (\"770.17\"), \"mapping:<eşleme anahtarı>\" veya \"input:<hesap girdisi>\""},"side":{"type":"string","enum":["debit","credit"]},"amount":{"type":"string","description":"Tutar ifadesi: sayılar, girdi adları, + - * /, parantez, round2(), min(), max()"},"contact":{"type":"string","description":"\"input:<cari girdisi>\""},"description":{"type":"string","maxLength":500},"tax":{"type":"object","description":"{kind: vat_output|vat_input|vat_withholding|stopaj|base, rate?, base?, deductible?}"}}}},"document":{"type":"object","description":"{type, description?, number?, date?} — {girdi} yer tutucuları"},"is_active":{"type":"boolean"},"sort_order":{"type":"integer"}},"additionalProperties":false,"required":["name","lines"]},"journal_template_delete.input":{"type":"object","properties":{"id":{"type":"integer"}},"additionalProperties":false,"required":["id"]},"journal_template_get.input":{"type":"object","properties":{"id":{"type":"integer"}},"additionalProperties":false,"required":["id"]},"journal_template_list.input":{"type":"object","properties":{"include_inactive":{"type":"boolean"},"category":{"type":"string","enum":["vat_split","z_report","accrual","provision","profit_distribution","payroll_simple","custom"]}},"additionalProperties":false},"journal_template_preview.input":{"type":"object","properties":{"id":{"type":"integer","description":"Şablon kimliği"},"date":{"type":"string","format":"date","description":"Fiş tarihi"},"inputs":{"type":"object","description":"Girdi anahtarı → değer (tutarlar metin \"1200.00\"; hesap girdisi hesap id veya kodu; cari girdisi cari id)"},"entry_type":{"type":"string","enum":["MAHSUP","TAHSIL","TEDIYE"],"description":"Şablonun fiş türünü ezer"},"description":{"type":"string","maxLength":500},"document_type":{"type":"string","enum":["invoice","check","voucher","receipt","shipment","order-customer","order-vendor","other"]},"document_number":{"type":"string","maxLength":64},"document_date":{"type":"string","format":"date"}},"additionalProperties":false,"required":["id","date"]},"journal_template_update.input":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string","maxLength":191},"category":{"type":"string","enum":["vat_split","z_report","accrual","provision","profit_distribution","payroll_simple","custom"]},"entry_type":{"type":"string","enum":["MAHSUP","TAHSIL","TEDIYE"]},"description_template":{"type":"string","maxLength":500,"description":"Fiş açıklaması; {girdi} yer tutucuları kullanılabilir"},"inputs":{"type":"array","maxItems":20,"items":{"type":"object","required":["key","label","type"],"properties":{"key":{"type":"string","pattern":"^[a-z][a-z0-9_]{0,31}$"},"label":{"type":"string","maxLength":100},"type":{"type":"string","enum":["money","pct","date","account","contact","text"]},"required":{"type":"boolean"},"default":{"type":"string"},"options":{"type":"array","items":{"type":"string"}},"help":{"type":"string","maxLength":255}}}},"lines":{"type":"array","minItems":2,"maxItems":30,"items":{"type":"object","required":["account","side","amount"],"properties":{"account":{"type":"string","description":"Hesap kodu (\"770.17\"), \"mapping:<eşleme anahtarı>\" veya \"input:<hesap girdisi>\""},"side":{"type":"string","enum":["debit","credit"]},"amount":{"type":"string","description":"Tutar ifadesi: sayılar, girdi adları, + - * /, parantez, round2(), min(), max()"},"contact":{"type":"string","description":"\"input:<cari girdisi>\""},"description":{"type":"string","maxLength":500},"tax":{"type":"object","description":"{kind: vat_output|vat_input|vat_withholding|stopaj|base, rate?, base?, deductible?}"}}}},"document":{"type":"object","description":"{type, description?, number?, date?} — {girdi} yer tutucuları"},"is_active":{"type":"boolean"},"sort_order":{"type":"integer"}},"additionalProperties":false,"required":["id"]},"ledger_verify.input":{"type":"object","properties":{},"additionalProperties":false},"loan_create.input":{"type":"object","properties":{"bank_account_id":{"type":"integer"},"name":{"type":"string"},"principal":{"type":"string"},"currency":{"type":"string","description":"Boşsa banka hesabının dövizi"},"fx_rate":{"type":"string"},"start_date":{"type":"string","format":"date"},"maturity_date":{"type":"string","format":"date"},"interest_rate":{"type":"string","description":"Yıllık faiz % (bilgi)"},"notes":{"type":"string"},"record_disbursement":{"type":"boolean","description":"false: kullanım fişi kesilmez (kredi bakiyesi başka yoldan girildiyse)"},"installments":{"type":"array","maxItems":600,"description":"Ödeme planı; anapara toplamı kredi tutarına eşit olmalı","items":{"type":"object","required":["due_date","principal"],"properties":{"due_date":{"type":"string","format":"date"},"principal":{"type":"string"},"interest":{"type":"string"},"bsmv":{"type":"string"},"kkdf":{"type":"string"}}}}},"additionalProperties":false,"required":["bank_account_id","name","principal","start_date"]},"loan_delete.input":{"type":"object","properties":{"id":{"type":"integer"}},"additionalProperties":false,"required":["id"]},"loan_get.input":{"type":"object","properties":{"id":{"type":"integer"}},"additionalProperties":false,"required":["id"]},"loan_list.input":{"type":"object","properties":{"status":{"type":"string","enum":["active","closed"]}},"additionalProperties":false},"loan_pay_installment.input":{"type":"object","properties":{"installment_id":{"type":"integer"},"payment_date":{"type":"string","format":"date","description":"Boşsa vade tarihi"},"bank_account_id":{"type":"integer"},"interest":{"type":"string"},"bsmv":{"type":"string"},"kkdf":{"type":"string"},"fx_rate":{"type":"string"}},"additionalProperties":false,"required":["installment_id"]},"loan_reclass_preview.input":{"type":"object","properties":{"as_of":{"type":"string","format":"date"}},"additionalProperties":false,"required":["as_of"]},"loan_reclassify.input":{"type":"object","properties":{"as_of":{"type":"string","format":"date"},"loan_id":{"type":"integer"}},"additionalProperties":false,"required":["as_of"]},"loan_set_schedule.input":{"type":"object","properties":{"id":{"type":"integer"},"installments":{"type":"array","maxItems":600,"description":"Ödeme planı; anapara toplamı kredi tutarına eşit olmalı","items":{"type":"object","required":["due_date","principal"],"properties":{"due_date":{"type":"string","format":"date"},"principal":{"type":"string"},"interest":{"type":"string"},"bsmv":{"type":"string"},"kkdf":{"type":"string"}}}}},"additionalProperties":false,"required":["id","installments"]},"loan_unpay_installment.input":{"type":"object","properties":{"installment_id":{"type":"integer"},"date":{"type":"string","format":"date"},"reason":{"type":"string"}},"additionalProperties":false,"required":["installment_id"]},"loan_update.input":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"maturity_date":{"type":"string","format":"date"},"interest_rate":{"type":"string"},"notes":{"type":"string"}},"additionalProperties":false,"required":["id"]},"payment_cancel.input":{"type":"object","properties":{"id":{"type":"integer"},"reason":{"type":"string","maxLength":500,"description":"İptal gerekçesi"},"date":{"type":"string","format":"date","description":"Ters kayıt tarihi (boşsa tahsilat tarihi; dönem kilitliyse ilk açık gün)"}},"additionalProperties":false,"required":["id"]},"payment_create.input":{"type":"object","properties":{"direction":{"type":"string","enum":["in","out"],"description":"in: tahsilat (müşteriden), out: ödeme (tedarikçiye)"},"method":{"type":"string","enum":["bank","cash","pos","credit_card","cheque","note","offset"],"description":"bank, cash, offset (mahsup); cheque/note/pos/credit_card ilgili modül kuruluysa"},"payment_date":{"type":"string","format":"date"},"amount":{"type":"string","description":"Sayı metni (ör. \"1200.50\")"},"currency":{"type":"string","minLength":3,"maxLength":3,"description":"Boşsa banka/kasa hesabının dövizi"},"fx_rate":{"type":"string","description":"Sayı metni (ör. \"1200.50\")"},"contact_id":{"type":"integer","description":"Cari (contact.list); carisiz kayıtta counter_account_id zorunlu"},"counter_account_id":{"type":"integer","description":"Carisiz kayıtta karşı hesap; mahsupta mahsup edilen hesap; carili banka/nakit kayıtta tahsis edilmeyen kısmın hesabı (boşsa: tahsilatta müşteri 120 / değilse 340, ödemede tedarikçi 320 / değilse 159)"},"bank_account_id":{"type":"integer","description":"method=bank"},"cash_account_id":{"type":"integer","description":"method=cash (cash_account.list)"},"bank_transaction_id":{"type":"integer","description":"Banka hareketi; aynı hareketten ikinci kayıt oluşmaz"},"credit_card_id":{"type":"integer","description":"method=credit_card: şirket kredi kartı (credit_card.list); tek kart varsa boş bırakılabilir"},"pos_terminal_id":{"type":"integer","description":"method=pos: POS terminali (pos.list); tek terminal varsa boş bırakılabilir"},"description":{"type":"string","maxLength":500},"reference_no":{"type":"string","maxLength":64,"description":"Dekont / makbuz no"},"client_key":{"type":"string","maxLength":100,"description":"İstemci idempotency anahtarı"},"auto_allocate":{"type":"boolean","description":"allocations boşsa en eski vadeli açık faturalara dağıt"},"allocations":{"type":"array","items":{"type":"object","required":["invoice_id","amount"],"properties":{"invoice_id":{"type":"integer","description":"payment.open_items"},"amount":{"type":"string","description":"Sayı metni (ör. \"1200.50\")"},"fx_rate":{"type":"string","description":"Sayı metni (ör. \"1200.50\")"}},"additionalProperties":false}},"expense_allocations":{"type":"array","description":"Yalnız TL ödemede: ödenmemiş masraflara tahsis (payment.open_items → expenses)","items":{"type":"object","required":["expense_id","amount"],"properties":{"expense_id":{"type":"integer"},"amount":{"type":"string","description":"Sayı metni (ör. \"1200.50\")"}},"additionalProperties":false}}},"additionalProperties":false,"required":["direction","method","payment_date","amount"]},"payment_form_options.input":{"type":"object","properties":{},"additionalProperties":false},"payment_get.input":{"type":"object","properties":{"id":{"type":"integer"}},"additionalProperties":false,"required":["id"]},"payment_list.input":{"type":"object","properties":{"direction":{"type":"string","enum":["in","out"],"description":"in: tahsilat, out: ödeme"},"method":{"type":"string","enum":["bank","cash","pos","credit_card","cheque","note","offset"]},"status":{"type":"string","enum":["posted","cancelled"]},"contact_id":{"type":"integer"},"from":{"type":"string","format":"date"},"to":{"type":"string","format":"date"},"q":{"type":"string","description":"Tahsilat no, dekont no, açıklama veya cari adı"},"page":{"type":"integer","minimum":1},"per_page":{"type":"integer","minimum":1,"maximum":200}},"additionalProperties":false},"payment_open_items.input":{"type":"object","properties":{"contact_id":{"type":"integer"},"direction":{"type":"string","enum":["in","out"]}},"additionalProperties":false,"required":["contact_id","direction"]},"payroll_cancel.input":{"type":"object","properties":{"id":{"type":"integer"},"reason":{"type":"string","maxLength":500},"date":{"type":"string","format":"date","description":"Ters kayıt tarihi (boşsa orijinal tarih)"}},"additionalProperties":false,"required":["id"]},"payroll_create.input":{"type":"object","properties":{"period":{"type":"string","pattern":"^\\d{4}-(0[1-9]|1[0-2])$","description":"Bordro dönemi YYYY-AA (ör. 2026-09)"},"accrual_date":{"type":"string","format":"date","description":"Tahakkuk fişi tarihi (dönem içinde; boşsa ayın son günü)"},"description":{"type":"string","maxLength":500},"fill_advances":{"type":"boolean","description":"advances_deducted verilmeyen satırlarda açık avans (196) bakiyesini net ile sınırlı mahsup et"},"lines":{"type":"array","minItems":1,"items":{"type":"object","required":["employee_id","gross"],"properties":{"employee_id":{"type":"integer","description":"Çalışan (cari) kimliği — employee.list"},"gross":{"type":"string","description":"Brüt ücret"},"sgk_worker":{"type":"string","description":"SGK işçi payı"},"unemployment_worker":{"type":"string","description":"İşsizlik sigortası işçi payı"},"sgk_employer":{"type":"string","description":"SGK işveren payı (teşvik düşülmüş)"},"unemployment_employer":{"type":"string","description":"İşsizlik sigortası işveren payı"},"income_tax":{"type":"string","description":"Gelir vergisi (istisna düşülmüş)"},"stamp_tax":{"type":"string","description":"Damga vergisi (istisna düşülmüş)"},"net":{"type":"string","description":"Net ücret (verilirse brüt − kesintilerle birebir eşleşmeli)"},"advances_deducted":{"type":"string","description":"Bordrodan mahsup edilen avans (≤ net)"}},"additionalProperties":false}},"client_key":{"type":"string","maxLength":100,"description":"İstemci idempotency anahtarı"}},"additionalProperties":false,"required":["period","lines"]},"payroll_delete.input":{"type":"object","properties":{"id":{"type":"integer"}},"additionalProperties":false,"required":["id"]},"payroll_get.input":{"type":"object","properties":{"id":{"type":"integer"}},"additionalProperties":false,"required":["id"]},"payroll_list.input":{"type":"object","properties":{"status":{"type":"string","enum":["draft","posted","cancelled"]},"year":{"type":"integer"},"page":{"type":"integer","minimum":1},"per_page":{"type":"integer","minimum":1,"maximum":200}},"additionalProperties":false},"payroll_pay.input":{"type":"object","properties":{"id":{"type":"integer","description":"Bordro kimliği"},"payment_date":{"type":"string","format":"date"},"method":{"type":"string","enum":["bank","cash"]},"bank_account_id":{"type":"integer"},"cash_account_id":{"type":"integer"},"employee_ids":{"type":"array","items":{"type":"integer"},"description":"Boşsa ödenmemiş tüm çalışanlar"}},"additionalProperties":false,"required":["id","payment_date","method"]},"payroll_post.input":{"type":"object","properties":{"id":{"type":"integer"}},"additionalProperties":false,"required":["id"]},"payroll_update.input":{"type":"object","properties":{"id":{"type":"integer"},"period":{"type":"string","pattern":"^\\d{4}-(0[1-9]|1[0-2])$","description":"Bordro dönemi YYYY-AA (ör. 2026-09)"},"accrual_date":{"type":"string","format":"date","description":"Tahakkuk fişi tarihi (dönem içinde; boşsa ayın son günü)"},"description":{"type":"string","maxLength":500},"fill_advances":{"type":"boolean","description":"advances_deducted verilmeyen satırlarda açık avans (196) bakiyesini net ile sınırlı mahsup et"},"lines":{"type":"array","minItems":1,"items":{"type":"object","required":["employee_id","gross"],"properties":{"employee_id":{"type":"integer","description":"Çalışan (cari) kimliği — employee.list"},"gross":{"type":"string","description":"Brüt ücret"},"sgk_worker":{"type":"string","description":"SGK işçi payı"},"unemployment_worker":{"type":"string","description":"İşsizlik sigortası işçi payı"},"sgk_employer":{"type":"string","description":"SGK işveren payı (teşvik düşülmüş)"},"unemployment_employer":{"type":"string","description":"İşsizlik sigortası işveren payı"},"income_tax":{"type":"string","description":"Gelir vergisi (istisna düşülmüş)"},"stamp_tax":{"type":"string","description":"Damga vergisi (istisna düşülmüş)"},"net":{"type":"string","description":"Net ücret (verilirse brüt − kesintilerle birebir eşleşmeli)"},"advances_deducted":{"type":"string","description":"Bordrodan mahsup edilen avans (≤ net)"}},"additionalProperties":false}}},"additionalProperties":false,"required":["id"]},"period_list.input":{"type":"object","properties":{"year":{"type":"integer","description":"Boşsa içinde bulunulan yıl"}},"additionalProperties":false},"period_lock.input":{"type":"object","properties":{"period_id":{"type":"integer"}},"additionalProperties":false,"required":["period_id"]},"period_unlock.input":{"type":"object","properties":{"period_id":{"type":"integer"},"reason":{"type":"string","minLength":3,"maxLength":500}},"additionalProperties":false,"required":["period_id","reason"]},"platform_ping.input":{"type":"object","properties":{},"additionalProperties":false},"pos_archive.input":{"type":"object","properties":{"id":{"type":"integer"}},"additionalProperties":false,"required":["id"]},"pos_cancel_settlement.input":{"type":"object","properties":{"settlement_id":{"type":"integer"},"date":{"type":"string","format":"date"},"reason":{"type":"string"}},"additionalProperties":false,"required":["settlement_id"]},"pos_create.input":{"type":"object","properties":{"name":{"type":"string","maxLength":100},"terminal_no":{"type":"string","maxLength":50,"description":"Üye işyeri / terminal no (banka açıklamasında aranır)"},"bank_account_id":{"type":"integer","description":"Valörün yattığı TL banka hesabı"},"commission_rate":{"type":"string","description":"Komisyon oranı % (ör. \"1.79\")"},"settlement_days":{"type":"integer","description":"Valör günü"}},"additionalProperties":false,"required":["name","bank_account_id"]},"pos_get.input":{"type":"object","properties":{"id":{"type":"integer"}},"additionalProperties":false,"required":["id"]},"pos_list.input":{"type":"object","properties":{"include_inactive":{"type":"boolean"}},"additionalProperties":false},"pos_settle.input":{"type":"object","properties":{"id":{"type":"integer","description":"POS terminali"},"settlement_date":{"type":"string","format":"date"},"gross":{"type":"string","description":"Brüt satış tutarı (108 alacağından düşülecek)"},"commission":{"type":"string"},"bank_transaction_id":{"type":"integer"},"description":{"type":"string"},"client_key":{"type":"string"}},"additionalProperties":false,"required":["id","settlement_date","gross"]},"pos_update.input":{"type":"object","properties":{"id":{"type":"integer"},"is_active":{"type":"boolean"},"name":{"type":"string","maxLength":100},"terminal_no":{"type":"string","maxLength":50,"description":"Üye işyeri / terminal no (banka açıklamasında aranır)"},"bank_account_id":{"type":"integer","description":"Valörün yattığı TL banka hesabı"},"commission_rate":{"type":"string","description":"Komisyon oranı % (ör. \"1.79\")"},"settlement_days":{"type":"integer","description":"Valör günü"}},"additionalProperties":false,"required":["id"]},"posting_rule_accept_suggestion.input":{"type":"object","properties":{"id":{"type":"integer","description":"posting_rules.id (status=suggested)"},"auto_post":{"type":"boolean","description":"Eşleşen hareketleri onaysız kesinleştir (varsayılan false)"}},"additionalProperties":false,"required":["id"]},"posting_rule_create.input":{"type":"object","properties":{"scope":{"type":"string","enum":["bank","purchase_line","sales_line"],"description":"bank (banka hareketi), purchase_line (alış kalemi), sales_line (satış kalemi)"},"name":{"type":"string","maxLength":191},"priority":{"type":"integer","description":"Küçük önce (varsayılan 100)"},"is_active":{"type":"boolean"},"status":{"type":"string","enum":["active","suggested","rejected"],"description":"Öğrenilmiş öneriyi etkinleştirmek için active"},"conditions":{"type":"object","description":"Hepsi AND; en az biri dolu","properties":{"direction":{"type":"string","enum":["in","out"]},"bank_account_id":{"type":"integer"},"contact_id":{"type":"integer"},"counterparty_tax_number":{"type":"string"},"counterparty_iban":{"type":"string"},"description_regex":{"type":"string","maxLength":200,"description":"Düzenli ifade (büyük/küçük harf duyarsız)"},"item_name_regex":{"type":"string","maxLength":200},"amount_min":{"type":"string"},"amount_max":{"type":"string"},"currency":{"type":"string"}},"additionalProperties":false},"action":{"type":"object","required":["account_id"],"properties":{"account_id":{"type":"integer","description":"Yaprak hesap"},"contact_id":{"type":"integer"},"cost_center_id":{"type":"integer"},"project_id":{"type":"integer"},"vat_rate":{"type":"string"},"description_template":{"type":"string"},"auto_post":{"type":"boolean","description":"Banka kuralında eşleşen hareketi otomatik kesinleştir"}},"additionalProperties":false}},"additionalProperties":false,"required":["scope","name","conditions","action"]},"posting_rule_delete.input":{"type":"object","properties":{"id":{"type":"integer"}},"additionalProperties":false,"required":["id"]},"posting_rule_list.input":{"type":"object","properties":{"scope":{"type":"string","enum":["bank","purchase_line","sales_line"]},"scopes":{"type":"array","items":{"type":"string","enum":["bank","purchase_line","sales_line"]}},"status":{"type":"string","enum":["active","suggested","rejected"]},"origin":{"type":"string","enum":["user","learned"]},"q":{"type":"string"}},"additionalProperties":false},"posting_rule_update.input":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string","maxLength":191},"priority":{"type":"integer","description":"Küçük önce (varsayılan 100)"},"is_active":{"type":"boolean"},"status":{"type":"string","enum":["active","suggested","rejected"],"description":"Öğrenilmiş öneriyi etkinleştirmek için active"},"conditions":{"type":"object","description":"Hepsi AND; en az biri dolu","properties":{"direction":{"type":"string","enum":["in","out"]},"bank_account_id":{"type":"integer"},"contact_id":{"type":"integer"},"counterparty_tax_number":{"type":"string"},"counterparty_iban":{"type":"string"},"description_regex":{"type":"string","maxLength":200,"description":"Düzenli ifade (büyük/küçük harf duyarsız)"},"item_name_regex":{"type":"string","maxLength":200},"amount_min":{"type":"string"},"amount_max":{"type":"string"},"currency":{"type":"string"}},"additionalProperties":false},"action":{"type":"object","required":["account_id"],"properties":{"account_id":{"type":"integer","description":"Yaprak hesap"},"contact_id":{"type":"integer"},"cost_center_id":{"type":"integer"},"project_id":{"type":"integer"},"vat_rate":{"type":"string"},"description_template":{"type":"string"},"auto_post":{"type":"boolean","description":"Banka kuralında eşleşen hareketi otomatik kesinleştir"}},"additionalProperties":false}},"additionalProperties":false,"required":["id"]},"product_archive.input":{"type":"object","properties":{"id":{"type":"integer"}},"additionalProperties":false,"required":["id"]},"product_create.input":{"type":"object","properties":{"type":{"type":"string","enum":["goods","service"],"description":"goods (ürün) / service (hizmet)"},"code":{"type":"string","maxLength":64,"description":"Stok kodu (SKU); boşsa UR-000001 serisi"},"barcode":{"type":"string","maxLength":64},"name":{"type":"string","maxLength":255},"unit_code":{"type":"string","maxLength":8,"description":"UBL birim kodu (C62 adet, KGM kg, LTR litre, HUR saat…)"},"vat_rate":{"type":"string","description":"KDV oranı (ör. \"20\")"},"sales_price":{"type":"string"},"purchase_price":{"type":"string"},"currency":{"type":"string","minLength":3,"maxLength":3},"track_stock":{"type":"boolean"},"sales_account_id":{"type":"integer","description":"Boşsa sales.goods / sales.services eşlemesi"},"purchase_account_id":{"type":"integer","description":"Boşsa inventory.goods / expense.default eşlemesi"},"withholding_code":{"type":"string","maxLength":8,"description":"Varsayılan KDV tevkifat kodu"},"category":{"type":"string","maxLength":100},"critical_stock":{"type":"string"},"supplier_codes":{"type":"array","items":{"type":"object","required":["contact_id","code"],"properties":{"contact_id":{"type":"integer"},"code":{"type":"string"}},"additionalProperties":false}},"is_active":{"type":"boolean"}},"additionalProperties":false,"required":["type","name"]},"product_get.input":{"type":"object","properties":{"id":{"type":"integer"}},"additionalProperties":false,"required":["id"]},"product_list.input":{"type":"object","properties":{"q":{"type":"string"},"type":{"type":"string","enum":["goods","service"]},"category":{"type":"string"},"status":{"type":"string","enum":["active","inactive","archived","all"]},"page":{"type":"integer","minimum":1},"per_page":{"type":"integer","minimum":1,"maximum":200}},"additionalProperties":false},"product_update.input":{"type":"object","properties":{"id":{"type":"integer"},"type":{"type":"string","enum":["goods","service"],"description":"goods (ürün) / service (hizmet)"},"code":{"type":"string","maxLength":64,"description":"Stok kodu (SKU); boşsa UR-000001 serisi"},"barcode":{"type":"string","maxLength":64},"name":{"type":"string","maxLength":255},"unit_code":{"type":"string","maxLength":8,"description":"UBL birim kodu (C62 adet, KGM kg, LTR litre, HUR saat…)"},"vat_rate":{"type":"string","description":"KDV oranı (ör. \"20\")"},"sales_price":{"type":"string"},"purchase_price":{"type":"string"},"currency":{"type":"string","minLength":3,"maxLength":3},"track_stock":{"type":"boolean"},"sales_account_id":{"type":"integer","description":"Boşsa sales.goods / sales.services eşlemesi"},"purchase_account_id":{"type":"integer","description":"Boşsa inventory.goods / expense.default eşlemesi"},"withholding_code":{"type":"string","maxLength":8,"description":"Varsayılan KDV tevkifat kodu"},"category":{"type":"string","maxLength":100},"critical_stock":{"type":"string"},"supplier_codes":{"type":"array","items":{"type":"object","required":["contact_id","code"],"properties":{"contact_id":{"type":"integer"},"code":{"type":"string"}},"additionalProperties":false}},"is_active":{"type":"boolean"}},"additionalProperties":false,"required":["id"]},"project_create.input":{"type":"object","properties":{"code":{"type":"string","maxLength":32},"name":{"type":"string","maxLength":191},"status":{"type":"string","enum":["active","completed","cancelled"]},"starts_on":{"type":"string","format":"date"},"ends_on":{"type":"string","format":"date"}},"additionalProperties":false,"required":["code","name"]},"project_list.input":{"type":"object","properties":{"q":{"type":"string"},"status":{"type":"string","enum":["active","completed","cancelled"]}},"additionalProperties":false},"project_update.input":{"type":"object","properties":{"id":{"type":"integer"},"code":{"type":"string","maxLength":32},"name":{"type":"string","maxLength":191},"status":{"type":"string","enum":["active","completed","cancelled"]},"starts_on":{"type":["string","null"],"format":"date"},"ends_on":{"type":["string","null"],"format":"date"}},"additionalProperties":false,"required":["id"]},"quote_convert.input":{"type":"object","properties":{"id":{"type":"integer"},"kind":{"type":"string","enum":["sales"]},"issue_date":{"type":"string","format":"date"}},"additionalProperties":false,"required":["id"]},"reconciliation_list.input":{"type":"object","properties":{"status":{"type":"string","enum":["sent","accepted","rejected","expired"]},"contact_id":{"type":"integer"},"page":{"type":"integer","minimum":1},"per_page":{"type":"integer","minimum":1,"maximum":100}},"additionalProperties":false},"reconciliation_send.input":{"type":"object","properties":{"contact_id":{"type":"integer"},"as_of":{"type":"string","format":"date","description":"Mutabakat tarihi"},"email":{"type":"string","format":"email","description":"Boşsa carinin e-postası"},"message":{"type":"string","maxLength":500}},"required":["contact_id","as_of"],"additionalProperties":false},"recurring_invoice_create.input":{"type":"object","properties":{"name":{"type":"string","maxLength":150,"description":"Tanım adı (ör. \"Aylık bakım bedeli\")"},"kind":{"type":"string","enum":["sales","purchase"],"description":"Varsayılan sales"},"contact_id":{"type":"integer","description":"Cari (contact.list)"},"frequency":{"type":"string","enum":["weekly","monthly","yearly"]},"interval":{"type":"integer","minimum":1,"maximum":12,"description":"Her N haftada/ayda/yılda bir (varsayılan 1)"},"day_of_period":{"type":"integer","description":"Haftalıkta ISO gün 1–7, aylık/yıllıkta ayın günü 1–31 (ayda yoksa son gün); boşsa başlangıç tarihinden"},"month_of_year":{"type":"integer","description":"Yıllıkta ay 1–12"},"start_on":{"type":"string","format":"date"},"ends_on":{"type":"string","format":"date"},"due_days":{"type":"integer","description":"Vade: fatura tarihinden itibaren gün"},"auto_issue":{"type":"boolean","description":"true: fatura kesilir (muhasebeleşir); false: taslak kalır"},"auto_send_edocument":{"type":"boolean","description":"Kesilen satış faturası e-Belge olarak gönderilir (oluşturan kullanıcı einvoice.send sahibiyse)"},"template":{"type":"object","description":"Fatura şablonu (invoice.create alanları; tarih yok)","properties":{"currency":{"type":"string"},"notes":{"type":"string"},"lines":{"type":"array","items":{"type":"object","properties":{"product_id":{"type":"integer"},"description":{"type":"string"},"quantity":{"type":"string","description":"Sayı metni (ör. \"1200.50\")"},"unit_code":{"type":"string"},"unit_price":{"type":"string","description":"Sayı metni (ör. \"1200.50\")"},"discount_rate":{"type":"string","description":"Sayı metni (ör. \"1200.50\")"},"vat_rate":{"type":"string","description":"Sayı metni (ör. \"1200.50\")"},"withholding_code":{"type":"string"},"vat_exemption_code":{"type":"string"},"account_id":{"type":"integer"}}}}}},"source_invoice_id":{"type":"integer","description":"Şablonun alınacağı satış/alış faturası (invoice.list)"}},"additionalProperties":false,"required":["frequency"]},"recurring_invoice_delete.input":{"type":"object","properties":{"id":{"type":"integer"}},"additionalProperties":false,"required":["id"]},"recurring_invoice_get.input":{"type":"object","properties":{"id":{"type":"integer"}},"additionalProperties":false,"required":["id"]},"recurring_invoice_list.input":{"type":"object","properties":{"status":{"type":"string","enum":["active","paused","error"]},"contact_id":{"type":"integer"},"q":{"type":"string"},"page":{"type":"integer"},"per_page":{"type":"integer"}},"additionalProperties":false},"recurring_invoice_pause.input":{"type":"object","properties":{"id":{"type":"integer"},"active":{"type":"boolean"}},"additionalProperties":false,"required":["id","active"]},"recurring_invoice_run_now.input":{"type":"object","properties":{"id":{"type":"integer"}},"additionalProperties":false,"required":["id"]},"recurring_invoice_update.input":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string","maxLength":150,"description":"Tanım adı (ör. \"Aylık bakım bedeli\")"},"kind":{"type":"string","enum":["sales","purchase"],"description":"Varsayılan sales"},"contact_id":{"type":"integer","description":"Cari (contact.list)"},"frequency":{"type":"string","enum":["weekly","monthly","yearly"]},"interval":{"type":"integer","minimum":1,"maximum":12,"description":"Her N haftada/ayda/yılda bir (varsayılan 1)"},"day_of_period":{"type":"integer","description":"Haftalıkta ISO gün 1–7, aylık/yıllıkta ayın günü 1–31 (ayda yoksa son gün); boşsa başlangıç tarihinden"},"month_of_year":{"type":"integer","description":"Yıllıkta ay 1–12"},"start_on":{"type":"string","format":"date"},"ends_on":{"type":"string","format":"date"},"due_days":{"type":"integer","description":"Vade: fatura tarihinden itibaren gün"},"auto_issue":{"type":"boolean","description":"true: fatura kesilir (muhasebeleşir); false: taslak kalır"},"auto_send_edocument":{"type":"boolean","description":"Kesilen satış faturası e-Belge olarak gönderilir (oluşturan kullanıcı einvoice.send sahibiyse)"},"template":{"type":"object","description":"Fatura şablonu (invoice.create alanları; tarih yok)","properties":{"currency":{"type":"string"},"notes":{"type":"string"},"lines":{"type":"array","items":{"type":"object","properties":{"product_id":{"type":"integer"},"description":{"type":"string"},"quantity":{"type":"string","description":"Sayı metni (ör. \"1200.50\")"},"unit_code":{"type":"string"},"unit_price":{"type":"string","description":"Sayı metni (ör. \"1200.50\")"},"discount_rate":{"type":"string","description":"Sayı metni (ör. \"1200.50\")"},"vat_rate":{"type":"string","description":"Sayı metni (ör. \"1200.50\")"},"withholding_code":{"type":"string"},"vat_exemption_code":{"type":"string"},"account_id":{"type":"integer"}}}}}}},"additionalProperties":false,"required":["id"]},"report_account_statement.input":{"type":"object","properties":{"account_code":{"type":"string","description":"Hesap kodu (contact_id yoksa zorunlu)"},"contact_id":{"type":"integer","description":"Cari kimliği (account_code yoksa zorunlu)"},"from":{"type":"string","format":"date","description":"Başlangıç"},"to":{"type":"string","format":"date","description":"Bitiş"},"currency":{"type":"string","minLength":3,"maxLength":3}},"additionalProperties":false},"report_aging.input":{"type":"object","properties":{"type":{"type":"string","enum":["receivables","payables"],"description":"receivables: alacaklar, payables: borçlar"},"as_of":{"type":"string","format":"date","description":"Rapor tarihi (boşsa bugün)"},"contact_id":{"type":"integer"},"with_invoices":{"type":"boolean","description":"Cari satırlarına fatura ayrıntısı ekle"}},"additionalProperties":false,"required":["type"]},"report_balance_sheet.input":{"type":"object","properties":{"date":{"type":"string","format":"date","description":"Bilanço tarihi (varsayılan bugün)"},"compare_date":{"type":"string","format":"date","description":"Karşılaştırma tarihi (isteğe bağlı)"},"presentation":{"type":"string","enum":["net","gross"],"description":"net (varsayılan) veya gross: ters bakiyeli 120 / 320 / 102 alt hesapları 340 / 159 / 300 satırlarına taşınır"}},"additionalProperties":false},"report_cash_flow.input":{"type":"object","properties":{"from":{"type":"string","format":"date","description":"Başlangıç"},"to":{"type":"string","format":"date","description":"Bitiş"}},"additionalProperties":false},"report_cash_projection.input":{"type":"object","properties":{"days":{"type":"integer","minimum":7,"maximum":365,"description":"Gün sayısı (vars. 90)"},"start":{"type":"string","format":"date","description":"Başlangıç (vars. bugün)"}},"additionalProperties":false},"report_cogs_statement.input":{"type":"object","properties":{"from":{"type":"string","format":"date","description":"Başlangıç"},"to":{"type":"string","format":"date","description":"Bitiş"}},"additionalProperties":false},"report_collections.input":{"type":"object","properties":{"from":{"type":"string","format":"date","description":"Tahsilat dönemi başı"},"to":{"type":"string","format":"date","description":"Tahsilat dönemi sonu"},"as_of":{"type":"string","format":"date","description":"Açık kalem günü (vars. bugün)"}},"additionalProperties":false},"report_edefter_export.input":{"type":"object","properties":{"period_id":{"type":"integer","description":"Kilitli mali dönem (ay) kimliği"}},"additionalProperties":false,"required":["period_id"]},"report_edefter_precheck.input":{"type":"object","properties":{"period_id":{"type":"integer","description":"Mali dönem (ay) kimliği"}},"additionalProperties":false,"required":["period_id"]},"report_expenses.input":{"type":"object","properties":{"from":{"type":"string","format":"date","description":"Başlangıç (vars. yıl başı)"},"to":{"type":"string","format":"date","description":"Bitiş (vars. bugün)"},"group_by":{"type":"string","enum":["category","supplier","account","month","cost_center"]},"source":{"type":"string","enum":["all","invoices","expenses"],"description":"all | invoices | expenses"},"contact_id":{"type":"integer","description":"Yalnız bu tedarikçi"}},"additionalProperties":false},"report_general_ledger.input":{"type":"object","properties":{"from":{"type":"string","format":"date","description":"Başlangıç"},"to":{"type":"string","format":"date","description":"Bitiş"},"main_code":{"type":"string","pattern":"^[0-9]{3}$","description":"3 haneli ana hesap kodu (boşsa tüm ana hesaplar)"}},"additionalProperties":false},"report_income_statement.input":{"type":"object","properties":{"from":{"type":"string","format":"date","description":"Başlangıç"},"to":{"type":"string","format":"date","description":"Bitiş"},"compare_from":{"type":"string","format":"date","description":"Karşılaştırma dönemi başı"},"compare_to":{"type":"string","format":"date","description":"Karşılaştırma dönemi sonu"},"detail":{"type":"boolean","description":"Ayrıntılı gelir tablosu (alt hesap kırılımı)"}},"additionalProperties":false},"report_inventory_book.input":{"type":"object","properties":{"as_of":{"type":"string","format":"date","description":"Envanter tarihi (vars. bugün)"},"detail":{"type":"boolean","description":"Alt hesapları da listele"}},"additionalProperties":false},"report_journal_book.input":{"type":"object","properties":{"from":{"type":"string","format":"date","description":"Başlangıç"},"to":{"type":"string","format":"date","description":"Bitiş"},"page":{"type":"integer","minimum":1},"per_page":{"type":"integer","minimum":1,"maximum":500},"all":{"type":"boolean","description":"Sayfalama olmadan tüm maddeler"}},"additionalProperties":false},"report_party_purchase_sales.input":{"type":"object","properties":{"year":{"type":"integer","minimum":2000,"maximum":2024,"description":"Yıl (en fazla 2024; 2024 için ay en fazla 8 — Ba/Bs Eylül 2024 döneminden itibaren kaldırıldı)"},"month":{"type":"integer","minimum":1,"maximum":12,"description":"Ay (boşsa tüm yıl)"},"side":{"type":"string","enum":["both","purchase","sales"]},"only_above":{"type":"boolean","description":"Yalnız eşik üstü cariler"},"threshold":{"type":"number","description":"Eşik (boşsa yasal sınır)"},"contact_id":{"type":"integer"}},"additionalProperties":false,"required":["year"]},"report_profitability.input":{"type":"object","properties":{"from":{"type":"string","format":"date","description":"Başlangıç"},"to":{"type":"string","format":"date","description":"Bitiş"},"breakdown":{"type":"string","enum":["none","cost_center","project"]}},"additionalProperties":false},"report_provisional_tax.input":{"type":"object","properties":{"year":{"type":"integer"},"quarter":{"type":"integer","minimum":1,"maximum":3},"exemptions_try":{"type":"number","description":"İstisna ve indirimler (TL)"},"previous_losses_try":{"type":"number","description":"Mahsup edilecek geçmiş yıl zararı (TL)"},"paid_previous_try":{"type":"number","description":"Önceki dönemlerde ödenen (boşsa 193.02)"},"rate":{"type":"number","description":"Vergi oranı % (boşsa kurumlar vergisi oranı)"}},"additionalProperties":false,"required":["year","quarter"]},"report_sales.input":{"type":"object","properties":{"from":{"type":"string","format":"date","description":"Başlangıç (vars. yıl başı)"},"to":{"type":"string","format":"date","description":"Bitiş (vars. bugün)"},"group_by":{"type":"string","enum":["contact","product","month","category","project"],"description":"Kırılım (vars. contact)"},"contact_id":{"type":"integer","description":"Yalnız bu cari"},"product_id":{"type":"integer","description":"Yalnız bu ürün"}},"additionalProperties":false},"report_stopaj.input":{"type":"object","properties":{"year":{"type":"integer","minimum":2000,"maximum":2100},"month":{"type":"integer","minimum":1,"maximum":12,"description":"Ay (boşsa tüm yıl)"},"contact_id":{"type":"integer"}},"additionalProperties":false,"required":["year"]},"report_subsidiary_ledger.input":{"type":"object","properties":{"account_code":{"type":"string","description":"Hesap kodu veya ön eki (ör. 120.01.0003, 102)"},"from":{"type":"string","format":"date","description":"Başlangıç"},"to":{"type":"string","format":"date","description":"Bitiş"},"contact_id":{"type":"integer","description":"Cari kimliği (satırdaki cari)"},"currency":{"type":"string","minLength":3,"maxLength":3},"page":{"type":"integer","minimum":1},"per_page":{"type":"integer","minimum":1,"maximum":1000},"all":{"type":"boolean","description":"Sayfalama olmadan tüm satırlar"}},"additionalProperties":false,"required":["account_code"]},"report_tax_reconciliation.input":{"type":"object","properties":{"year":{"type":"integer","minimum":2000,"maximum":2100},"month":{"type":"integer","minimum":1,"maximum":12,"description":"Ay (1–12)"}},"additionalProperties":false,"required":["year","month"]},"report_trial_balance.input":{"type":"object","properties":{"from":{"type":"string","format":"date","description":"Dönem başı (varsayılan: bitiş yılının 1 Ocak'ı)"},"to":{"type":"string","format":"date","description":"Dönem sonu (varsayılan: bugün)"},"level":{"type":"string","enum":["main","all","leaf"],"description":"main: yalnız ana hesaplar, leaf: yalnız alt (yaprak) hesaplar, all: tüm seviyeler"},"mode":{"type":"string","enum":["period","cumulative"],"description":"period: from–to dönemi; cumulative: yıl başından bitişe"},"code_from":{"type":"string","description":"Hesap kodu aralığı başı (ör. 100)"},"code_to":{"type":"string","description":"Hesap kodu aralığı sonu (ör. 399)"},"include_opening":{"type":"boolean","description":"Açılış fişi devir kolonunda gösterilsin (varsayılan true)"},"hide_zero":{"type":"boolean","description":"Bakiyesi sıfır olan hesapları gizle"},"exclude_closing":{"type":"boolean","description":"true: geçici mizan (KAPANIS fişi hariç, varsayılan), false: kesin mizan"},"currency":{"type":"string","minLength":3,"maxLength":3,"description":"Dövizli mizan: yalnız bu dövizdeki satırlar + döviz kolonları"}},"additionalProperties":false},"report_vat.input":{"type":"object","properties":{"year":{"type":"integer","minimum":2000,"maximum":2100},"month":{"type":"integer","minimum":1,"maximum":12}},"additionalProperties":false,"required":["year","month"]},"settings_get.input":{"type":"object","properties":{},"additionalProperties":false},"settings_update.input":{"type":"object","properties":{"cost_method":{"type":"string","enum":["7A","7B"]},"approval_required":{"type":"boolean"},"maker_checker":{"type":"boolean"},"auto_post_enabled":{"type":"boolean"},"auto_post_threshold":{"type":"string","description":"0–1 arası güven eşiği (ör. \"0.90\")"},"rounding_tolerance":{"type":"string","description":"Otomatik fişte kuruş farkı toleransı (TL)"},"inventory_method":{"type":"string","enum":["periodic","perpetual"]},"cost_flow":{"type":"string","enum":["weighted_average","fifo"],"description":"Yalnız mevcut değer kabul edilir; değişiklik stock.cost_flow_change ile"},"allow_negative_stock":{"type":"boolean"},"bank_posting_start_date":{"type":["string","null"],"format":"date"},"bank_posting_enabled":{"type":"boolean"},"einvoice_auto_post":{"type":"boolean"},"assistant_draft_requires_confirmation":{"type":"boolean"},"fx_diff_invoice":{"type":"boolean"},"document_date_window_days":{"type":"integer","minimum":0},"purchase_fx_rate_source":{"type":"string","enum":["document","tcmb"]},"withholding_purchase_method":{"type":"string","enum":["full_191","split_191_40"]},"rediscount_method":{"type":"string","enum":["inner","outer"],"description":"Reeskont yöntemi: inner (iç iskonto) | outer (dış iskonto)"},"rediscount_include_cheques":{"type":"boolean","description":"Vadeli çekler de reeskonta dahil edilsin"},"rediscount_apply_to":{"type":"string","enum":["both","payable"],"description":"both: alacak ve borç senetleri, payable: yalnız borç senetleri"},"ai_account_suggestions":{"type":"boolean","description":"Kurallarla eşleşmeyen banka hareketi / fatura kalemi için yapay zekâ hesap önerisi (kapalıysa veri yapay zekâ sağlayıcısına gönderilmez)"}},"additionalProperties":false},"statement_mapping_list.input":{"type":"object","properties":{"statement":{"type":"string","enum":["balance_sheet","income_statement"]}},"required":["statement"],"additionalProperties":false},"statement_mapping_reset.input":{"type":"object","properties":{"statement":{"type":"string","enum":["balance_sheet","income_statement"]},"line_key":{"type":"string","maxLength":16}},"required":["statement"],"additionalProperties":false},"statement_mapping_update.input":{"type":"object","properties":{"statement":{"type":"string","enum":["balance_sheet","income_statement"]},"line_key":{"type":"string","maxLength":16},"accounts":{"type":"array","items":{"type":"string"},"maxItems":60,"description":"Ör. [\"100\", \"101\", \"102\", \"-103\", \"108\"]"}},"required":["statement","line_key","accounts"],"additionalProperties":false},"stock_adjust.input":{"type":"object","properties":{"product_id":{"type":"integer"},"warehouse_id":{"type":"integer"},"counted_quantity":{"type":"string","description":"Sayılan miktar (count) veya açılış miktarı (opening)"},"date":{"type":"string","format":"date","description":"Boşsa bugün"},"unit_cost":{"type":"string","description":"TL birim maliyet (opening zorunlu; count fazlasında isteğe bağlı, boşsa ortalama)"},"mode":{"type":"string","enum":["count","opening"]},"note":{"type":"string","maxLength":255}},"additionalProperties":false,"required":["product_id","warehouse_id","counted_quantity"]},"stock_cost_flow_change.input":{"type":"object","properties":{"method":{"type":"string","enum":["weighted_average","fifo"]},"date":{"type":"string","format":"date","description":"Geçerlilik tarihi (boşsa bugün)"},"recalculate":{"type":"boolean","description":"Dönem ortasında yeniden hesaplama sihirbazı onayı"}},"additionalProperties":false,"required":["method"]},"stock_cost_flow_status.input":{"type":"object","properties":{"target":{"type":"string","enum":["weighted_average","fifo"],"description":"Önizlenecek hedef yöntem"},"date":{"type":"string","format":"date","description":"Geçerlilik tarihi (boşsa bugün)"},"recalculate":{"type":"boolean","description":"Dönem ortasında yeniden hesaplama sihirbazı"}},"additionalProperties":false},"stock_cost_layers.input":{"type":"object","properties":{"product_id":{"type":"integer"},"warehouse_id":{"type":"integer"},"include_closed":{"type":"boolean","description":"Tükenmiş katmanları da getir"},"page":{"type":"integer","minimum":1},"per_page":{"type":"integer","minimum":1,"maximum":200}},"additionalProperties":false},"stock_levels.input":{"type":"object","properties":{"q":{"type":"string","description":"Ürün adı, kodu veya barkodu"},"warehouse_id":{"type":"integer"},"product_id":{"type":"integer"},"nonzero":{"type":"boolean","description":"Yalnız miktarı veya değeri sıfır olmayanlar"},"below_critical":{"type":"boolean","description":"Kritik stok seviyesinin altındakiler"},"page":{"type":"integer","minimum":1},"per_page":{"type":"integer","minimum":1,"maximum":200}},"additionalProperties":false},"stock_movements.input":{"type":"object","properties":{"product_id":{"type":"integer"},"warehouse_id":{"type":"integer"},"type":{"type":"string","enum":["purchase","sale","sales_return","purchase_return","transfer","adjustment","opening","revaluation"]},"direction":{"type":"string","enum":["in","out"]},"source_type":{"type":"string","description":"invoice, despatch, stock_count, transfer, opening, invoice_revaluation"},"source_id":{"type":"integer"},"from":{"type":"string","format":"date"},"to":{"type":"string","format":"date"},"page":{"type":"integer","minimum":1},"per_page":{"type":"integer","minimum":1,"maximum":200}},"additionalProperties":false},"stock_transfer.input":{"type":"object","properties":{"product_id":{"type":"integer"},"from_warehouse_id":{"type":"integer"},"to_warehouse_id":{"type":"integer"},"quantity":{"type":"string","description":"Pozitif miktar"},"date":{"type":"string","format":"date","description":"Boşsa bugün"},"note":{"type":"string","maxLength":255}},"additionalProperties":false,"required":["product_id","from_warehouse_id","to_warehouse_id","quantity"]},"stock_valuation.input":{"type":"object","properties":{"as_of":{"type":"string","format":"date","description":"Bu tarih itibarıyla (boşsa anlık)"},"warehouse_id":{"type":"integer"}},"additionalProperties":false},"tax_codes.input":{"type":"object","properties":{"date":{"type":"string","format":"date","description":"Boşsa bugün"}},"additionalProperties":false},"tax_calendar_upcoming.input":{"type":"object","properties":{"from":{"type":"string","format":"date","description":"Başlangıç (vars. bugün)"},"days":{"type":"integer","minimum":1,"maximum":400,"description":"Gün sayısı (vars. 60)"}},"additionalProperties":false},"team_invite.input":{"type":"object","properties":{"email":{"type":"string","format":"email","maxLength":255},"role":{"type":"string","enum":["owner","manager","employee"],"description":"owner (sahip), manager (yönetici), employee (çalışan)"},"permissions":{"type":"array","items":{"type":"string","enum":["bank_accounts.view","bank_accounts.manage","transactions.view","transactions.export","reports.view","documents.view","documents.generate","integrations.view","integrations.manage","team.view","team.manage","company.manage","ledger.view","ledger.post","ledger.approve","ledger.close","accounts_chart.manage","contacts.view","contacts.manage","products.view","products.manage","invoices.view","invoices.manage","payments.view","payments.manage","expenses.view","expenses.manage","einvoice.view","einvoice.send","einvoice.manage","imports.run","api_tokens.manage","assistant.use","custom_reports.view","custom_reports.manage","accountant_access.manage"]},"description":"Granular izinler; boş/verilmezse rolün varsayılan izinleri uygulanır. Kendinizde olmayan izin verilemez (G15)."}},"additionalProperties":false,"required":["email","role"]},"team_list.input":{"type":"object","properties":{"include_invitations":{"type":"boolean","description":"Bekleyen davetler de dönsün (varsayılan true)"}},"additionalProperties":false},"team_remove.input":{"type":"object","properties":{"membership_id":{"type":"integer","minimum":1,"description":"Üyelik kimliği (team.list → members[].id)"}},"additionalProperties":false,"required":["membership_id"]},"team_update.input":{"type":"object","properties":{"membership_id":{"type":"integer","minimum":1,"description":"Üyelik kimliği (team.list → members[].id)"},"role":{"type":"string","enum":["owner","manager","employee"],"description":"owner (sahip), manager (yönetici), employee (çalışan)"},"permissions":{"type":"array","items":{"type":"string","enum":["bank_accounts.view","bank_accounts.manage","transactions.view","transactions.export","reports.view","documents.view","documents.generate","integrations.view","integrations.manage","team.view","team.manage","company.manage","ledger.view","ledger.post","ledger.approve","ledger.close","accounts_chart.manage","contacts.view","contacts.manage","products.view","products.manage","invoices.view","invoices.manage","payments.view","payments.manage","expenses.view","expenses.manage","einvoice.view","einvoice.send","einvoice.manage","imports.run","api_tokens.manage","assistant.use","custom_reports.view","custom_reports.manage","accountant_access.manage"]},"description":"Granular izinler; boş/verilmezse rolün varsayılan izinleri uygulanır. Kendinizde olmayan izin verilemez (G15)."}},"additionalProperties":false,"required":["membership_id","role"]},"transfer_cancel.input":{"type":"object","properties":{"id":{"type":"integer"},"date":{"type":"string","format":"date","description":"Ters kayıt tarihi"}},"additionalProperties":false,"required":["id"]},"transfer_create.input":{"type":"object","properties":{"from_type":{"type":"string","enum":["bank","cash"],"description":"Çıkış: bank (banka hesabı) veya cash (kasa)"},"from_id":{"type":"integer"},"to_type":{"type":"string","enum":["bank","cash"]},"to_id":{"type":"integer"},"transfer_date":{"type":"string","format":"date"},"amount":{"type":"string","description":"Sayı metni"},"currency":{"type":"string","minLength":3,"maxLength":3},"fx_rate":{"type":"string","description":"Sayı metni"},"to_amount":{"type":"string","description":"Sayı metni"},"to_fx_rate":{"type":"string","description":"Sayı metni"},"description":{"type":"string","maxLength":500},"client_key":{"type":"string","maxLength":100}},"additionalProperties":false,"required":["from_type","from_id","to_type","to_id","transfer_date","amount"]},"transfer_list.input":{"type":"object","properties":{"from":{"type":"string","format":"date"},"to":{"type":"string","format":"date"},"status":{"type":"string","enum":["posted","cancelled"]},"page":{"type":"integer","minimum":1},"per_page":{"type":"integer","minimum":1,"maximum":200}},"additionalProperties":false},"warehouse_create.input":{"type":"object","properties":{"code":{"type":"string","maxLength":32,"description":"Boşsa DP-001 serisi"},"name":{"type":"string","maxLength":191},"address":{"type":"string","maxLength":500},"is_default":{"type":"boolean"},"is_active":{"type":"boolean"}},"additionalProperties":false,"required":["name"]},"warehouse_list.input":{"type":"object","properties":{"include_inactive":{"type":"boolean"}},"additionalProperties":false},"warehouse_update.input":{"type":"object","properties":{"id":{"type":"integer"},"code":{"type":"string","maxLength":32},"name":{"type":"string","maxLength":191},"address":{"type":"string","maxLength":500},"is_default":{"type":"boolean"},"is_active":{"type":"boolean"}},"additionalProperties":false,"required":["id"]},"webhook_create.input":{"type":"object","properties":{"name":{"type":"string","maxLength":100},"url":{"type":"string","format":"uri","maxLength":500,"description":"https:// adresi"},"events":{"type":"array","items":{"type":"string","enum":["invoice.issued","invoice.cancelled","payment.recorded","journal.posted","journal.reversed","edocument.status_changed","bank_posting.posted"]},"minItems":1,"description":"Abone olunan olaylar"},"is_active":{"type":"boolean"}},"additionalProperties":false,"required":["name","url","events"]},"webhook_delete.input":{"type":"object","properties":{"id":{"type":"integer","minimum":1}},"additionalProperties":false,"required":["id"]},"webhook_deliveries.input":{"type":"object","properties":{"webhook_id":{"type":"integer","minimum":1},"limit":{"type":"integer","minimum":1,"maximum":200}},"additionalProperties":false},"webhook_list.input":{"type":"object","properties":{},"additionalProperties":false},"webhook_rotate_secret.input":{"type":"object","properties":{"id":{"type":"integer","minimum":1}},"additionalProperties":false,"required":["id"]},"webhook_test.input":{"type":"object","properties":{"id":{"type":"integer","minimum":1}},"additionalProperties":false,"required":["id"]},"webhook_update.input":{"type":"object","properties":{"id":{"type":"integer","minimum":1},"name":{"type":"string","maxLength":100},"url":{"type":"string","format":"uri","maxLength":500},"events":{"type":"array","items":{"type":"string","enum":["invoice.issued","invoice.cancelled","payment.recorded","journal.posted","journal.reversed","edocument.status_changed","bank_posting.posted"]},"minItems":1,"description":"Abone olunan olaylar"},"is_active":{"type":"boolean"}},"additionalProperties":false,"required":["id"]}}},"x-operation-count":363,"x-rest-route-count":365,"x-fingerprint":"f1db6b550dc59574761625f4414b551e949f657503347603d8b2bc2e26590b7f"}