{
  "resourceType": "OperationDefinition",
  "url": "https://api-erp.kamsoft.pl/ns/OperationDefinition/product-level-cost-calculation",
  "name": "product-level-cost-calculation",
  "title": "Raport kalkulacji kosztow na poziomie produktu",
  "status": "active",
  "kind": "operation",
  "date": "2026-09-18",
  "publisher": "KAMSOFT S.A.",
  "description": "POST /v1/reports z reportId = product-level-cost-calculation — zlecenie asynchronicznego raportu (kalkulacja kosztow na poziomie produktu za miesiac). Odpowiedz 202 Accepted z executionId i encryptedSessionKey; zaszyfrowany wynik trafia do magazynu wskazanego w storage.",
  "affectsState": true,
  "code": "product-level-cost-calculation",
  "system": true,
  "type": false,
  "instance": false,
  "parameter": [
    { "name": "reportId", "use": "in", "min": 1, "max": "1", "type": "string",
      "documentation": "Stale: product-level-cost-calculation (kod operacji)" },
    { "name": "format", "use": "in", "min": 1, "max": "1", "type": "code",
      "documentation": "parquet albo csv" },
    { "name": "publicKeyPem", "use": "in", "min": 1, "max": "1", "type": "string",
      "documentation": "Publiczny klucz RSA integratora (PEM) do szyfrowania wyniku" },
    { "name": "runAt", "use": "in", "min": 1, "max": "1", "type": "dateTime",
      "documentation": "Czas wykonania (ISO 8601, UTC); przeszlosc = natychmiast" },
    { "name": "storage", "use": "in", "min": 1, "max": "1",
      "documentation": "Cel dostarczenia wyniku (magazyn integratora)",
      "part": [
        { "name": "type", "use": "in", "min": 1, "max": "1", "type": "code", "documentation": "blob, http, local, smb" },
        { "name": "connectionString", "use": "in", "min": 1, "max": "1", "type": "string", "documentation": "Dane polaczenia zalezne od type" }
      ] },
    { "name": "groupId", "use": "in", "min": 0, "max": "1", "type": "string",
      "documentation": "Identyfikator grupy raportow; nie zastepuje reportId" },
    { "name": "compression", "use": "in", "min": 0, "max": "1", "type": "boolean",
      "documentation": "Kompresja przed szyfrowaniem; domyslnie false" },
    { "name": "parameters", "use": "in", "min": 1, "max": "1",
      "documentation": "Parametry raportu (slownik string -> string)",
      "part": [
        { "name": "CompanyTaxNo", "use": "in", "min": 1, "max": "1", "type": "string", "documentation": "NIP firmy" },
        { "name": "Year", "use": "in", "min": 1, "max": "1", "type": "integer", "documentation": "Rok" },
        { "name": "Month", "use": "in", "min": 1, "max": "1", "type": "integer", "documentation": "Miesiac 1-12" }
      ] },
    { "name": "executionId", "use": "out", "min": 1, "max": "1", "type": "string",
      "documentation": "Identyfikator wykonania; klucz idempotencji dostarczenia" },
    { "name": "encryptedSessionKey", "use": "out", "min": 1, "max": "1", "type": "string",
      "documentation": "Klucz sesyjny AES-256-GCM zaszyfrowany RSA-OAEP-SHA256 (base64)" }
  ]
}
