{
  "openapi": "3.1.0",
  "info": {
    "title": "EBM as a service \u2014 client API",
    "version": "1.8.0",
    "description": "Hosted company API: managed CIS invoicing, VSDC compatibility and receipt delivery. Read README.md and cis-api.md for onboarding and recovery. Set the base URL supplied during onboarding."
  },
  "security": [
    {
      "CompanyApiKey": []
    }
  ],
  "paths": {
    "/initializer/selectInitInfo": {
      "post": {
        "operationId": "war_initialize",
        "summary": "selectInitInfo",
        "responses": {
          "200": {
            "description": "Inspect resultCd even with HTTP 200. Null resultDt/data are valid error outcomes; issuance does not confirm upstream delivery.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VsdcInitInfoRes"
                }
              }
            }
          },
          "401": {
            "description": "Invalid credentials"
          },
          "403": {
            "description": "Company or scope not permitted"
          },
          "429": {
            "description": "Rate limit exceeded"
          },
          "400": {
            "description": "WAR-compatible framework rejection; a proxy may return text instead.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VsdcHttpError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "description": "WAR-compatible framework rejection; a proxy may return text instead.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VsdcHttpError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "405": {
            "description": "WAR-compatible framework rejection; a proxy may return text instead.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VsdcHttpError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "415": {
            "description": "WAR-compatible framework rejection; a proxy may return text instead.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VsdcHttpError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/InitInfoReq"
              }
            }
          }
        }
      }
    },
    "/code/selectCodes": {
      "post": {
        "operationId": "war_select_codes",
        "summary": "selectCodes",
        "responses": {
          "200": {
            "description": "Inspect resultCd even with HTTP 200. Null resultDt/data are valid error outcomes; issuance does not confirm upstream delivery.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VsdcCodeRes"
                }
              }
            }
          },
          "401": {
            "description": "Invalid credentials"
          },
          "403": {
            "description": "Company or scope not permitted"
          },
          "429": {
            "description": "Rate limit exceeded"
          },
          "400": {
            "description": "WAR-compatible framework rejection; a proxy may return text instead.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VsdcHttpError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "description": "WAR-compatible framework rejection; a proxy may return text instead.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VsdcHttpError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "405": {
            "description": "WAR-compatible framework rejection; a proxy may return text instead.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VsdcHttpError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "415": {
            "description": "WAR-compatible framework rejection; a proxy may return text instead.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VsdcHttpError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CodeReq"
              }
            }
          }
        }
      }
    },
    "/itemClass/selectItemsClass": {
      "post": {
        "operationId": "war_select_item_classes",
        "summary": "selectItemsClass",
        "responses": {
          "200": {
            "description": "Inspect resultCd even with HTTP 200. Null resultDt/data are valid error outcomes; issuance does not confirm upstream delivery.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VsdcItemClsRes"
                }
              }
            }
          },
          "401": {
            "description": "Invalid credentials"
          },
          "403": {
            "description": "Company or scope not permitted"
          },
          "429": {
            "description": "Rate limit exceeded"
          },
          "400": {
            "description": "WAR-compatible framework rejection; a proxy may return text instead.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VsdcHttpError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "description": "WAR-compatible framework rejection; a proxy may return text instead.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VsdcHttpError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "405": {
            "description": "WAR-compatible framework rejection; a proxy may return text instead.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VsdcHttpError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "415": {
            "description": "WAR-compatible framework rejection; a proxy may return text instead.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VsdcHttpError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ItemClsReq"
              }
            }
          }
        }
      }
    },
    "/customers/selectCustomer": {
      "post": {
        "operationId": "war_select_customer",
        "summary": "selectCustomer",
        "responses": {
          "200": {
            "description": "Inspect resultCd even with HTTP 200. Null resultDt/data are valid error outcomes; issuance does not confirm upstream delivery.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VsdcCustRes"
                }
              }
            }
          },
          "401": {
            "description": "Invalid credentials"
          },
          "403": {
            "description": "Company or scope not permitted"
          },
          "429": {
            "description": "Rate limit exceeded"
          },
          "400": {
            "description": "WAR-compatible framework rejection; a proxy may return text instead.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VsdcHttpError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "description": "WAR-compatible framework rejection; a proxy may return text instead.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VsdcHttpError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "405": {
            "description": "WAR-compatible framework rejection; a proxy may return text instead.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VsdcHttpError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "415": {
            "description": "WAR-compatible framework rejection; a proxy may return text instead.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VsdcHttpError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustReq"
              }
            }
          }
        }
      }
    },
    "/branches/selectBranches": {
      "post": {
        "operationId": "war_select_branches",
        "summary": "selectBranches",
        "responses": {
          "200": {
            "description": "Inspect resultCd even with HTTP 200. Null resultDt/data are valid error outcomes; issuance does not confirm upstream delivery.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VsdcBhfRes"
                }
              }
            }
          },
          "401": {
            "description": "Invalid credentials"
          },
          "403": {
            "description": "Company or scope not permitted"
          },
          "429": {
            "description": "Rate limit exceeded"
          },
          "400": {
            "description": "WAR-compatible framework rejection; a proxy may return text instead.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VsdcHttpError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "description": "WAR-compatible framework rejection; a proxy may return text instead.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VsdcHttpError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "405": {
            "description": "WAR-compatible framework rejection; a proxy may return text instead.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VsdcHttpError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "415": {
            "description": "WAR-compatible framework rejection; a proxy may return text instead.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VsdcHttpError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BhfReq"
              }
            }
          }
        }
      }
    },
    "/branches/saveBrancheCustomers": {
      "post": {
        "operationId": "war_save_branche_customers",
        "summary": "saveBrancheCustomers",
        "responses": {
          "200": {
            "description": "Inspect resultCd even with HTTP 200. Null resultDt/data are valid error outcomes; issuance does not confirm upstream delivery.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VsdcPassthroughEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Invalid credentials"
          },
          "403": {
            "description": "Company or scope not permitted"
          },
          "429": {
            "description": "Rate limit exceeded"
          },
          "400": {
            "description": "WAR-compatible framework rejection; a proxy may return text instead.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VsdcHttpError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "description": "WAR-compatible framework rejection; a proxy may return text instead.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VsdcHttpError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "405": {
            "description": "WAR-compatible framework rejection; a proxy may return text instead.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VsdcHttpError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "415": {
            "description": "WAR-compatible framework rejection; a proxy may return text instead.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VsdcHttpError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BhfCustSaveReq"
              }
            }
          }
        }
      }
    },
    "/branches/saveBrancheUsers": {
      "post": {
        "operationId": "war_save_branche_users",
        "summary": "saveBrancheUsers",
        "responses": {
          "200": {
            "description": "Inspect resultCd even with HTTP 200. Null resultDt/data are valid error outcomes; issuance does not confirm upstream delivery.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VsdcPassthroughEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Invalid credentials"
          },
          "403": {
            "description": "Company or scope not permitted"
          },
          "429": {
            "description": "Rate limit exceeded"
          },
          "400": {
            "description": "WAR-compatible framework rejection; a proxy may return text instead.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VsdcHttpError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "description": "WAR-compatible framework rejection; a proxy may return text instead.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VsdcHttpError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "405": {
            "description": "WAR-compatible framework rejection; a proxy may return text instead.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VsdcHttpError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "415": {
            "description": "WAR-compatible framework rejection; a proxy may return text instead.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VsdcHttpError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BhfUserSaveReq"
              }
            }
          }
        }
      }
    },
    "/branches/saveBrancheInsurances": {
      "post": {
        "operationId": "war_save_branche_insurances",
        "summary": "saveBrancheInsurances",
        "responses": {
          "200": {
            "description": "Inspect resultCd even with HTTP 200. Null resultDt/data are valid error outcomes; issuance does not confirm upstream delivery.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VsdcPassthroughEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Invalid credentials"
          },
          "403": {
            "description": "Company or scope not permitted"
          },
          "429": {
            "description": "Rate limit exceeded"
          },
          "400": {
            "description": "WAR-compatible framework rejection; a proxy may return text instead.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VsdcHttpError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "description": "WAR-compatible framework rejection; a proxy may return text instead.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VsdcHttpError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "405": {
            "description": "WAR-compatible framework rejection; a proxy may return text instead.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VsdcHttpError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "415": {
            "description": "WAR-compatible framework rejection; a proxy may return text instead.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VsdcHttpError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BhfInsuranceSaveReq"
              }
            }
          }
        }
      }
    },
    "/notices/selectNotices": {
      "post": {
        "operationId": "war_select_notices",
        "summary": "selectNotices",
        "responses": {
          "200": {
            "description": "Inspect resultCd even with HTTP 200. Null resultDt/data are valid error outcomes; issuance does not confirm upstream delivery.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VsdcNoticeRes"
                }
              }
            }
          },
          "401": {
            "description": "Invalid credentials"
          },
          "403": {
            "description": "Company or scope not permitted"
          },
          "429": {
            "description": "Rate limit exceeded"
          },
          "400": {
            "description": "WAR-compatible framework rejection; a proxy may return text instead.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VsdcHttpError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "description": "WAR-compatible framework rejection; a proxy may return text instead.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VsdcHttpError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "405": {
            "description": "WAR-compatible framework rejection; a proxy may return text instead.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VsdcHttpError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "415": {
            "description": "WAR-compatible framework rejection; a proxy may return text instead.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VsdcHttpError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NoticeReq"
              }
            }
          }
        }
      }
    },
    "/items/saveItems": {
      "post": {
        "operationId": "war_save_items",
        "summary": "saveItems",
        "responses": {
          "200": {
            "description": "Inspect resultCd even with HTTP 200. Null resultDt/data are valid error outcomes; issuance does not confirm upstream delivery.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VsdcPassthroughEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Invalid credentials"
          },
          "403": {
            "description": "Company or scope not permitted"
          },
          "429": {
            "description": "Rate limit exceeded"
          },
          "400": {
            "description": "WAR-compatible framework rejection; a proxy may return text instead.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VsdcHttpError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "description": "WAR-compatible framework rejection; a proxy may return text instead.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VsdcHttpError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "405": {
            "description": "WAR-compatible framework rejection; a proxy may return text instead.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VsdcHttpError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "415": {
            "description": "WAR-compatible framework rejection; a proxy may return text instead.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VsdcHttpError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ItemSaveReq"
              }
            }
          }
        }
      }
    },
    "/items/saveItemComposition": {
      "post": {
        "operationId": "war_save_item_composition",
        "summary": "saveItemComposition",
        "responses": {
          "200": {
            "description": "Inspect resultCd even with HTTP 200. Null resultDt/data are valid error outcomes; issuance does not confirm upstream delivery.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VsdcPassthroughEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Invalid credentials"
          },
          "403": {
            "description": "Company or scope not permitted"
          },
          "429": {
            "description": "Rate limit exceeded"
          },
          "400": {
            "description": "WAR-compatible framework rejection; a proxy may return text instead.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VsdcHttpError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "description": "WAR-compatible framework rejection; a proxy may return text instead.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VsdcHttpError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "405": {
            "description": "WAR-compatible framework rejection; a proxy may return text instead.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VsdcHttpError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "415": {
            "description": "WAR-compatible framework rejection; a proxy may return text instead.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VsdcHttpError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ItemCompositionSaveReq"
              }
            }
          }
        }
      }
    },
    "/items/selectItems": {
      "post": {
        "operationId": "war_select_items",
        "summary": "selectItems",
        "responses": {
          "200": {
            "description": "Inspect resultCd even with HTTP 200. Null resultDt/data are valid error outcomes; issuance does not confirm upstream delivery.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VsdcItemRes"
                }
              }
            }
          },
          "401": {
            "description": "Invalid credentials"
          },
          "403": {
            "description": "Company or scope not permitted"
          },
          "429": {
            "description": "Rate limit exceeded"
          },
          "400": {
            "description": "WAR-compatible framework rejection; a proxy may return text instead.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VsdcHttpError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "description": "WAR-compatible framework rejection; a proxy may return text instead.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VsdcHttpError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "405": {
            "description": "WAR-compatible framework rejection; a proxy may return text instead.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VsdcHttpError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "415": {
            "description": "WAR-compatible framework rejection; a proxy may return text instead.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VsdcHttpError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ItemReq"
              }
            }
          }
        }
      }
    },
    "/imports/selectImportItems": {
      "post": {
        "operationId": "war_select_imports",
        "summary": "selectImportItems",
        "responses": {
          "200": {
            "description": "Inspect resultCd even with HTTP 200. Null resultDt/data are valid error outcomes; issuance does not confirm upstream delivery.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VsdcImportItemRes"
                }
              }
            }
          },
          "401": {
            "description": "Invalid credentials"
          },
          "403": {
            "description": "Company or scope not permitted"
          },
          "429": {
            "description": "Rate limit exceeded"
          },
          "400": {
            "description": "WAR-compatible framework rejection; a proxy may return text instead.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VsdcHttpError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "description": "WAR-compatible framework rejection; a proxy may return text instead.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VsdcHttpError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "405": {
            "description": "WAR-compatible framework rejection; a proxy may return text instead.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VsdcHttpError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "415": {
            "description": "WAR-compatible framework rejection; a proxy may return text instead.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VsdcHttpError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ImportItemReq"
              }
            }
          }
        }
      }
    },
    "/imports/updateImportItems": {
      "post": {
        "operationId": "war_update_imports",
        "summary": "updateImportItems",
        "responses": {
          "200": {
            "description": "Inspect resultCd even with HTTP 200. Null resultDt/data are valid error outcomes; issuance does not confirm upstream delivery.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VsdcPassthroughEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Invalid credentials"
          },
          "403": {
            "description": "Company or scope not permitted"
          },
          "429": {
            "description": "Rate limit exceeded"
          },
          "400": {
            "description": "WAR-compatible framework rejection; a proxy may return text instead.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VsdcHttpError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "description": "WAR-compatible framework rejection; a proxy may return text instead.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VsdcHttpError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "405": {
            "description": "WAR-compatible framework rejection; a proxy may return text instead.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VsdcHttpError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "415": {
            "description": "WAR-compatible framework rejection; a proxy may return text instead.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VsdcHttpError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ImportItemUpdateReq"
              }
            }
          }
        }
      }
    },
    "/stock/selectStockItems": {
      "post": {
        "operationId": "war_select_stock",
        "summary": "selectStockItems",
        "responses": {
          "200": {
            "description": "Inspect resultCd even with HTTP 200. Null resultDt/data are valid error outcomes; issuance does not confirm upstream delivery.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VsdcStockMoveRes"
                }
              }
            }
          },
          "401": {
            "description": "Invalid credentials"
          },
          "403": {
            "description": "Company or scope not permitted"
          },
          "429": {
            "description": "Rate limit exceeded"
          },
          "400": {
            "description": "WAR-compatible framework rejection; a proxy may return text instead.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VsdcHttpError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "description": "WAR-compatible framework rejection; a proxy may return text instead.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VsdcHttpError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "405": {
            "description": "WAR-compatible framework rejection; a proxy may return text instead.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VsdcHttpError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "415": {
            "description": "WAR-compatible framework rejection; a proxy may return text instead.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VsdcHttpError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/StockMoveReq"
              }
            }
          }
        }
      }
    },
    "/stock/saveStockItems": {
      "post": {
        "operationId": "war_save_stock_items",
        "summary": "saveStockItems",
        "responses": {
          "200": {
            "description": "Inspect resultCd even with HTTP 200. Null resultDt/data are valid error outcomes; issuance does not confirm upstream delivery.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VsdcPassthroughEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Invalid credentials"
          },
          "403": {
            "description": "Company or scope not permitted"
          },
          "429": {
            "description": "Rate limit exceeded"
          },
          "400": {
            "description": "WAR-compatible framework rejection; a proxy may return text instead.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VsdcHttpError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "description": "WAR-compatible framework rejection; a proxy may return text instead.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VsdcHttpError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "405": {
            "description": "WAR-compatible framework rejection; a proxy may return text instead.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VsdcHttpError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "415": {
            "description": "WAR-compatible framework rejection; a proxy may return text instead.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VsdcHttpError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/StockIoSaveReq"
              }
            }
          }
        },
        "description": "External CIS stock movement. Supply sarNo, orgSarNo, regTyCd, line count and totals explicitly: the compatibility endpoint preserves the submitted values. Companies with a managed CIS profile use /api/portal/cis/stock and the receiving workflows instead."
      }
    },
    "/stockMaster/saveStockMaster": {
      "post": {
        "operationId": "war_save_stock_master",
        "summary": "saveStockMaster",
        "responses": {
          "200": {
            "description": "Inspect resultCd even with HTTP 200. Null resultDt/data are valid error outcomes; issuance does not confirm upstream delivery.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VsdcPassthroughEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Invalid credentials"
          },
          "403": {
            "description": "Company or scope not permitted"
          },
          "429": {
            "description": "Rate limit exceeded"
          },
          "400": {
            "description": "WAR-compatible framework rejection; a proxy may return text instead.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VsdcHttpError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "description": "WAR-compatible framework rejection; a proxy may return text instead.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VsdcHttpError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "405": {
            "description": "WAR-compatible framework rejection; a proxy may return text instead.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VsdcHttpError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "415": {
            "description": "WAR-compatible framework rejection; a proxy may return text instead.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VsdcHttpError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/StockMasterSaveReq"
              }
            }
          }
        }
      }
    },
    "/trnsPurchase/selectTrnsPurchaseSales": {
      "post": {
        "operationId": "war_select_purchases",
        "summary": "selectTrnsPurchaseSales",
        "responses": {
          "200": {
            "description": "Inspect resultCd even with HTTP 200. Null resultDt/data are valid error outcomes; issuance does not confirm upstream delivery.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VsdcTrnsPurchaseSalesRes"
                }
              }
            }
          },
          "401": {
            "description": "Invalid credentials"
          },
          "403": {
            "description": "Company or scope not permitted"
          },
          "429": {
            "description": "Rate limit exceeded"
          },
          "400": {
            "description": "WAR-compatible framework rejection; a proxy may return text instead.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VsdcHttpError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "description": "WAR-compatible framework rejection; a proxy may return text instead.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VsdcHttpError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "405": {
            "description": "WAR-compatible framework rejection; a proxy may return text instead.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VsdcHttpError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "415": {
            "description": "WAR-compatible framework rejection; a proxy may return text instead.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VsdcHttpError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TrnsPurchaseSalesReq"
              }
            }
          }
        }
      }
    },
    "/trnsPurchase/savePurchases": {
      "post": {
        "operationId": "war_save_purchase",
        "summary": "savePurchases",
        "responses": {
          "200": {
            "description": "Inspect resultCd even with HTTP 200. Null resultDt/data are valid error outcomes; issuance does not confirm upstream delivery.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VsdcPassthroughEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Invalid credentials"
          },
          "403": {
            "description": "Company or scope not permitted"
          },
          "429": {
            "description": "Rate limit exceeded"
          },
          "400": {
            "description": "WAR-compatible framework rejection; a proxy may return text instead.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VsdcHttpError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "description": "WAR-compatible framework rejection; a proxy may return text instead.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VsdcHttpError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "405": {
            "description": "WAR-compatible framework rejection; a proxy may return text instead.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VsdcHttpError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "415": {
            "description": "WAR-compatible framework rejection; a proxy may return text instead.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VsdcHttpError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TrnsPurchaseSaveReq"
              }
            }
          }
        }
      }
    },
    "/trnsSales/saveSales": {
      "post": {
        "operationId": "war_save_sales",
        "summary": "saveSales",
        "responses": {
          "200": {
            "description": "Inspect resultCd even with HTTP 200. Null resultDt/data are valid error outcomes; issuance does not confirm upstream delivery.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VsdcSaleResponse"
                }
              }
            }
          },
          "401": {
            "description": "Invalid credentials"
          },
          "403": {
            "description": "Company or scope not permitted"
          },
          "429": {
            "description": "Rate limit exceeded"
          },
          "409": {
            "description": "Changed input under an existing key, unbound legacy replay, managed CIS required, or remote issuance requiring reconciliation.",
            "headers": {
              "Retry-After": {
                "description": "Present for BRANCH_BUSY; delay in seconds before retrying the exact original request/key. Absence does not imply retry permission.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "400": {
            "description": "WAR-compatible framework rejection; a proxy may return text instead.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VsdcHttpError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "description": "WAR-compatible framework rejection; a proxy may return text instead.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VsdcHttpError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "405": {
            "description": "WAR-compatible framework rejection; a proxy may return text instead.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VsdcHttpError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "415": {
            "description": "WAR-compatible framework rejection; a proxy may return text instead.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VsdcHttpError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TrnsSalesSaveWrReq"
              }
            }
          }
        },
        "parameters": [
          {
            "in": "header",
            "name": "X-Idempotency-Key",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Persist with the order and reuse with identical transaction content. Changed content under a completed key returns HTTP 409. Legacy records without an original input require reconciliation."
          }
        ],
        "description": "External-CIS integration only. A company with a managed CIS profile must use /api/portal/fiscal/invoices. Preserve original input and idempotency key on retry. Successful issuance is not proof of RRA acceptance."
      }
    },
    "/reports/checkZReport": {
      "post": {
        "operationId": "war_check_zreport",
        "summary": "checkZReport",
        "responses": {
          "200": {
            "description": "Inspect resultCd even with HTTP 200. Null resultDt/data are valid error outcomes; issuance does not confirm upstream delivery.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VsdcReportZCheckRes"
                }
              }
            }
          },
          "401": {
            "description": "Invalid credentials"
          },
          "403": {
            "description": "Company or scope not permitted"
          },
          "429": {
            "description": "Rate limit exceeded"
          },
          "400": {
            "description": "WAR-compatible framework rejection; a proxy may return text instead.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VsdcHttpError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "description": "WAR-compatible framework rejection; a proxy may return text instead.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VsdcHttpError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "405": {
            "description": "WAR-compatible framework rejection; a proxy may return text instead.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VsdcHttpError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "415": {
            "description": "WAR-compatible framework rejection; a proxy may return text instead.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VsdcHttpError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReportZCheckReq"
              }
            }
          }
        }
      }
    },
    "/reports/saveZReports": {
      "post": {
        "operationId": "war_save_zreport",
        "summary": "saveZReports",
        "responses": {
          "200": {
            "description": "Inspect resultCd even with HTTP 200. Null resultDt/data are valid error outcomes; issuance does not confirm upstream delivery.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VsdcPassthroughEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Invalid credentials"
          },
          "403": {
            "description": "Company or scope not permitted"
          },
          "429": {
            "description": "Rate limit exceeded"
          },
          "400": {
            "description": "WAR-compatible framework rejection; a proxy may return text instead.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VsdcHttpError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "description": "WAR-compatible framework rejection; a proxy may return text instead.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VsdcHttpError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "405": {
            "description": "WAR-compatible framework rejection; a proxy may return text instead.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VsdcHttpError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "415": {
            "description": "WAR-compatible framework rejection; a proxy may return text instead.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VsdcHttpError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReportZSaveUpdateReq"
              }
            }
          }
        },
        "description": "Matches the supplied _9 WAR, including its date defect: 8-digit rptDe returns 910; 14-digit or absent rptDe returns 899 and does not submit a report."
      }
    },
    "/main/selectServerTime": {
      "get": {
        "operationId": "war_server_time",
        "summary": "selectServerTime",
        "responses": {
          "200": {
            "description": "Inspect resultCd even with HTTP 200. Null resultDt/data are valid error outcomes; issuance does not confirm upstream delivery.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VsdcPassthroughEnvelope"
                }
              }
            }
          },
          "401": {
            "description": "Invalid credentials"
          },
          "403": {
            "description": "Company or scope not permitted"
          },
          "429": {
            "description": "Rate limit exceeded"
          },
          "400": {
            "description": "WAR-compatible framework rejection; a proxy may return text instead.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VsdcHttpError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "description": "WAR-compatible framework rejection; a proxy may return text instead.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VsdcHttpError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "405": {
            "description": "WAR-compatible framework rejection; a proxy may return text instead.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VsdcHttpError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "415": {
            "description": "WAR-compatible framework rejection; a proxy may return text instead.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VsdcHttpError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/test/echoTest": {
      "post": {
        "operationId": "war_echo_test",
        "summary": "echoTest",
        "responses": {
          "200": {
            "description": "Inspect resultCd even with HTTP 200. Null resultDt/data are valid error outcomes; issuance does not confirm upstream delivery.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VsdcTestEchoRes"
                }
              }
            }
          },
          "401": {
            "description": "Invalid credentials"
          },
          "403": {
            "description": "Company or scope not permitted"
          },
          "429": {
            "description": "Rate limit exceeded"
          },
          "400": {
            "description": "WAR-compatible framework rejection; a proxy may return text instead.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VsdcHttpError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "description": "WAR-compatible framework rejection; a proxy may return text instead.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VsdcHttpError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "405": {
            "description": "WAR-compatible framework rejection; a proxy may return text instead.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VsdcHttpError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "415": {
            "description": "WAR-compatible framework rejection; a proxy may return text instead.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VsdcHttpError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TestEchoReq"
              }
            }
          }
        }
      }
    },
    "/api/portal/receipts": {
      "get": {
        "operationId": "listReceiptDelivery",
        "summary": "List your receipts and RRA delivery status",
        "parameters": [
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 0,
              "default": 0
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Company-scoped receipt records; status ACCEPTED confirms RRA delivery.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReceiptSummaryList"
                }
              }
            }
          },
          "401": {
            "description": "Invalid or revoked credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "403": {
            "description": "Company access suspended or forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "description": "Request rejected or failed; preserve the original request identity before recovery.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "description": "Request rejected or failed; preserve the original request identity before recovery.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "409": {
            "description": "Request rejected or failed; preserve the original request identity before recovery.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Present for BRANCH_BUSY; delay in seconds before retrying the exact original request/key. Absence does not imply retry permission.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "500": {
            "description": "Request rejected or failed; preserve the original request identity before recovery.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "502": {
            "description": "Request rejected or failed; preserve the original request identity before recovery.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/api/portal/receipts/{id}": {
      "get": {
        "operationId": "getReceiptDelivery",
        "summary": "Get your receipt, signing snapshot and delivery status",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Company-scoped receipt records; status ACCEPTED confirms RRA delivery.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReceiptDetailResult"
                }
              }
            }
          },
          "401": {
            "description": "Invalid or revoked credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "403": {
            "description": "Company access suspended or forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "description": "Receipt not found in this company and environment",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "description": "Request rejected or failed; preserve the original request identity before recovery.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "409": {
            "description": "Request rejected or failed; preserve the original request identity before recovery.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Present for BRANCH_BUSY; delay in seconds before retrying the exact original request/key. Absence does not imply retry permission.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "500": {
            "description": "Request rejected or failed; preserve the original request identity before recovery.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "502": {
            "description": "Request rejected or failed; preserve the original request identity before recovery.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/api/portal/fiscal/invoices": {
      "post": {
        "operationId": "issueCisInvoice",
        "summary": "Issue through managed CIS with stock and original-receipt controls",
        "description": "Requires receipts:write and an initialized branch with a CIS profile. Prices/taxes come from registered company catalogue items. Check resultCd even on HTTP 200. Success adds cisReceiptId at the top level. Preserve the original request and key across uncertain outcomes. NR is a full original cancellation; CS/CR copy a stored normal receipt.",
        "parameters": [
          {
            "in": "header",
            "name": "X-Idempotency-Key",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 128,
              "pattern": "^[!-~]+$"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CisInvoice"
              },
              "example": {
                "branch": "00",
                "invoice_number": "42",
                "mode": "NS",
                "customer_name": "Walk-in customer",
                "customer_tin": "",
                "customer_phone": "0781234567",
                "payment_code": "01",
                "lines": [
                  {
                    "item_id": "00000000-0000-0000-0000-000000000001",
                    "quantity": 1,
                    "discount_percent": 0
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Fiscal result envelope; inspect resultCd. Successful issuance also returns cisReceiptId (UUID).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CisIssueResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid invoice or missing persistent request identifier.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "401": {
            "description": "Invalid credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "403": {
            "description": "Company, environment or operation is not permitted.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "409": {
            "description": "Conflicting replay, insufficient stock, refund already issued, busy branch or uncertain previous operation. Reconcile before replacing an invoice.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Present for BRANCH_BUSY; delay in seconds before retrying the exact original request/key. Absence does not imply retry permission.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded."
          },
          "404": {
            "description": "Request rejected or failed; preserve the original request identity before recovery.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "500": {
            "description": "Request rejected or failed; preserve the original request identity before recovery.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "502": {
            "description": "Request rejected or failed; preserve the original request identity before recovery.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/api/portal/cis/receipts/{id}/print": {
      "post": {
        "operationId": "prepareCisReceiptPrint",
        "summary": "Reserve or recover the immutable receipt print snapshot",
        "description": "Requires receipts:write. One print preparation per issued receipt; reuse the same request key to recover its snapshot. This does not confirm physical paper output. A new print requires a signed COPY workflow.",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "in": "header",
            "name": "X-Idempotency-Key",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 128,
              "pattern": "^[!-~]+$"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "data contains id, profile, request, receipt, source_receipt_number, version and print_kind.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PrintSnapshotResult"
                }
              }
            }
          },
          "400": {
            "description": "Missing request key or permission.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "401": {
            "description": "Invalid credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "403": {
            "description": "Company access denied.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "409": {
            "description": "Print already prepared with another key, or legacy snapshot needs reconciliation.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Present for BRANCH_BUSY; delay in seconds before retrying the exact original request/key. Absence does not imply retry permission.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "404": {
            "description": "Request rejected or failed; preserve the original request identity before recovery.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "500": {
            "description": "Request rejected or failed; preserve the original request identity before recovery.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "502": {
            "description": "Request rejected or failed; preserve the original request identity before recovery.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/api/portal/items": {
      "get": {
        "operationId": "listCatalogue",
        "summary": "List company catalogue",
        "description": "Company/environment-scoped catalogue ordered by item code, up to 2000 per page. Send next_after as the next after parameter until it is null. Traversal is not a snapshot across concurrent catalogue edits.",
        "responses": {
          "200": {
            "description": "Result in data envelope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CatalogueEntryList"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input or workflow precondition.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "401": {
            "description": "Invalid, expired or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "403": {
            "description": "Missing scope, company approval, production enablement or access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found in this company/environment.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "409": {
            "description": "Conflicting request or unresolved workflow state; reconcile before replacing the request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Present for BRANCH_BUSY; delay in seconds before retrying the exact original request/key. Absence does not imply retry permission.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded."
          },
          "500": {
            "description": "Request rejected or failed; preserve the original request identity before recovery.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "502": {
            "description": "Request rejected or failed; preserve the original request identity before recovery.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "after",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Exclusive item-code cursor returned in next_after; URL-encode it."
          }
        ]
      },
      "post": {
        "operationId": "saveCatalogueItem",
        "summary": "Create or update a catalogue item",
        "description": "Requires items:write. ItemSaveReq fields; tin is replaced with the authenticated company TIN. An empty itemCd generates a code. Saving clears registration; register before invoicing. Retain itemCd when updating. Returns data.id. Automatic code allocation is not idempotent: reconcile lost responses by listing before creating again. Optional catalogue preconditions protect reviewed edits. Without them, existing item codes retain their previous replacement behavior. Save returns a new version; every save clears registration.",
        "responses": {
          "200": {
            "description": "Result in data envelope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CatalogueSavedResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input or workflow precondition.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "401": {
            "description": "Invalid, expired or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "403": {
            "description": "Missing scope, company approval, production enablement or access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found in this company/environment.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "409": {
            "description": "Conflicting request or unresolved workflow state; reconcile before replacing the request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Present for BRANCH_BUSY; delay in seconds before retrying the exact original request/key. Absence does not imply retry permission.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded."
          },
          "500": {
            "description": "Request rejected or failed; preserve the original request identity before recovery.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "502": {
            "description": "Request rejected or failed; preserve the original request identity before recovery.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "412": {
            "description": "Catalogue precondition failed; no item change. Reload and review before a new save. A lost successful save response can also cause a replay with the old version to return 412.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ItemSaveReq"
              }
            }
          }
        },
        "parameters": [
          {
            "in": "header",
            "name": "If-Match",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "One quoted UUID version from the catalogue entry. Replace only that version. Requires explicit itemCd; cannot be combined with If-None-Match."
          },
          {
            "in": "header",
            "name": "If-None-Match",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "*"
              ]
            },
            "description": "Create only if the explicit itemCd does not yet exist in this company/environment."
          }
        ]
      }
    },
    "/api/portal/cis/items/register/{id}": {
      "post": {
        "operationId": "registerCatalogueItem",
        "summary": "Register catalogue item with configured VSDC",
        "description": "Requires items:write and receipts:write. Uses the saved item body and branch. Check resultCd; only successful registration marks the item ready. If the catalogue body changes while registration is in flight, HTTP 409 means the submitted version was accepted but the current version remains unregistered. Reload and review the current catalogue item before deliberately registering it.",
        "responses": {
          "200": {
            "description": "Inspect resultCd even with HTTP 200.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FiscalEnvelope"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input or workflow precondition.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "401": {
            "description": "Invalid, expired or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "403": {
            "description": "Missing scope, company approval, production enablement or access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found in this company/environment.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "409": {
            "description": "Conflicting request or unresolved workflow state; reconcile before replacing the request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Present for BRANCH_BUSY; delay in seconds before retrying the exact original request/key. Absence does not imply retry permission.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded."
          },
          "500": {
            "description": "Request rejected or failed; preserve the original request identity before recovery.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "502": {
            "description": "Request rejected or failed; preserve the original request identity before recovery.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ]
      }
    },
    "/api/portal/cis/stock": {
      "get": {
        "operationId": "listCisStock",
        "summary": "List branch inventory",
        "description": "Returns item_id, item, quantity, reserved and available; quantities are units with two decimal places.",
        "responses": {
          "200": {
            "description": "Result in data envelope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StockBalanceList"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input or workflow precondition.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "401": {
            "description": "Invalid, expired or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "403": {
            "description": "Missing scope, company approval, production enablement or access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found in this company/environment.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "409": {
            "description": "Conflicting request or unresolved workflow state; reconcile before replacing the request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Present for BRANCH_BUSY; delay in seconds before retrying the exact original request/key. Absence does not imply retry permission.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded."
          },
          "500": {
            "description": "Request rejected or failed; preserve the original request identity before recovery.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "502": {
            "description": "Request rejected or failed; preserve the original request identity before recovery.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "in": "query",
            "name": "branch",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9]{2}$"
            }
          }
        ]
      },
      "post": {
        "operationId": "adjustCisStock",
        "summary": "Record a signed stock adjustment",
        "description": "Requires stock:write and receipts:write. Positive quantity adds stock, negative removes it. Preserve the original body/key. Local movement and downstream delivery are distinct.",
        "responses": {
          "200": {
            "description": "Result in data envelope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StockOperationResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input or workflow precondition.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "401": {
            "description": "Invalid, expired or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "403": {
            "description": "Missing scope, company approval, production enablement or access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found in this company/environment.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "409": {
            "description": "Conflicting request or unresolved workflow state; reconcile before replacing the request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Present for BRANCH_BUSY; delay in seconds before retrying the exact original request/key. Absence does not imply retry permission.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded."
          },
          "500": {
            "description": "Request rejected or failed; preserve the original request identity before recovery.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "502": {
            "description": "Request rejected or failed; preserve the original request identity before recovery.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "in": "header",
            "name": "X-Idempotency-Key",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 128,
              "pattern": "^[!-~]+$"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CisStockAdjustment"
              }
            }
          }
        }
      }
    },
    "/api/portal/cis/delivery": {
      "get": {
        "operationId": "listCisStockDelivery",
        "summary": "Inspect stock delivery",
        "description": "Lists at most 500 downstream stock messages newest first. Follow next_before_id until null, preserving branch and state. State filters reflect current status, not a frozen snapshot; refresh from the first page to detect status changes. Uncertain outcomes require owner/operator reconciliation.",
        "responses": {
          "200": {
            "description": "Result in data envelope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StockDeliveryList"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input or workflow precondition.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "401": {
            "description": "Invalid, expired or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "403": {
            "description": "Missing scope, company approval, production enablement or access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found in this company/environment.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "409": {
            "description": "Conflicting request or unresolved workflow state; reconcile before replacing the request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Present for BRANCH_BUSY; delay in seconds before retrying the exact original request/key. Absence does not imply retry permission.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded."
          },
          "500": {
            "description": "Request rejected or failed; preserve the original request identity before recovery.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "502": {
            "description": "Request rejected or failed; preserve the original request identity before recovery.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "in": "query",
            "name": "branch",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9]{2}$"
            }
          },
          {
            "name": "before_id",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "format": "int64",
              "minimum": 1
            },
            "description": "Exclusive cursor from next_before_id; pass the returned string unchanged."
          },
          {
            "name": "state",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "PENDING",
                "SUBMITTING",
                "UNKNOWN",
                "FAILED",
                "SENT"
              ]
            }
          }
        ]
      }
    },
    "/api/portal/cis/references/{kind}": {
      "post": {
        "operationId": "fetchCisReferences",
        "summary": "Fetch and retain inbound/reference data",
        "description": "Requires stock:write and receipts:write. Imports/purchases populate the inbound inbox. Keep a local synchronization cursor; after a lost response, inspect the inbox before advancing. This endpoint does not promise identical-request replay.",
        "responses": {
          "200": {
            "description": "Inspect resultCd even with HTTP 200.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FiscalEnvelope"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input or workflow precondition.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "401": {
            "description": "Invalid, expired or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "403": {
            "description": "Missing scope, company approval, production enablement or access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found in this company/environment.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "409": {
            "description": "Conflicting request or unresolved workflow state; reconcile before replacing the request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Present for BRANCH_BUSY; delay in seconds before retrying the exact original request/key. Absence does not imply retry permission.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded."
          },
          "500": {
            "description": "Request rejected or failed; preserve the original request identity before recovery.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "502": {
            "description": "Request rejected or failed; preserve the original request identity before recovery.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "in": "path",
            "name": "kind",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "imports",
                "purchases",
                "customers",
                "notices"
              ]
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CisReferenceFetch"
              }
            }
          }
        }
      }
    },
    "/api/portal/cis/inbound": {
      "get": {
        "operationId": "listCisInbound",
        "summary": "List branch receiving inbox",
        "description": "Returns id, kind, body, state and resolution; map each source line to a company catalogue UUID before approval.",
        "responses": {
          "200": {
            "description": "Result in data envelope.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/InboundRecord"
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid input or workflow precondition."
          },
          "401": {
            "description": "Invalid, expired or revoked API key."
          },
          "403": {
            "description": "Missing scope, company approval, production enablement or access."
          },
          "404": {
            "description": "Resource not found in this company/environment."
          },
          "409": {
            "description": "Conflicting request or unresolved workflow state; reconcile before replacing the request.",
            "headers": {
              "Retry-After": {
                "description": "Present for BRANCH_BUSY; delay in seconds before retrying the exact original request/key. Absence does not imply retry permission.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded."
          }
        },
        "parameters": [
          {
            "in": "query",
            "name": "branch",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9]{2}$"
            }
          }
        ]
      }
    },
    "/api/portal/cis/inbound/{id}": {
      "post": {
        "operationId": "decideCisInbound",
        "summary": "Approve or reject incoming goods",
        "description": "Requires stock:write and receipts:write. For approval, items has one UUID per source line; duplicate mappings are allowed. Import approval needs per-line unit costs. Conversions must yield exact two-decimal quantities/packages. A supplier return is full-original only. For rejection use approve:false, items:[] and reason. Preserve the original decision when recovering an uncertain response.",
        "responses": {
          "200": {
            "description": "Result in data envelope.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/InboundResolution"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid input or workflow precondition."
          },
          "401": {
            "description": "Invalid, expired or revoked API key."
          },
          "403": {
            "description": "Missing scope, company approval, production enablement or access."
          },
          "404": {
            "description": "Resource not found in this company/environment."
          },
          "409": {
            "description": "Conflicting request or unresolved workflow state; reconcile before replacing the request.",
            "headers": {
              "Retry-After": {
                "description": "Present for BRANCH_BUSY; delay in seconds before retrying the exact original request/key. Absence does not imply retry permission.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded."
          }
        },
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "in": "header",
            "name": "X-Idempotency-Key",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 128,
              "pattern": "^[!-~]+$"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CisInboundDecision"
              }
            }
          }
        }
      }
    },
    "/api/portal/cis/reports": {
      "post": {
        "operationId": "generateCisReport",
        "summary": "Generate a CIS report",
        "description": "Requires receipts:write. X/Z begin after the last closed period; other reports use the supplied dates. Z refuses unresolved receipt/stock states and closes locally. This is not successful submission through the defective WAR report endpoint. Persist an X-Idempotency-Key to recover the identical snapshot after a lost response, including after Z closure. Changed input under that key returns 409. Without a key, generation has no replay guarantee.",
        "responses": {
          "200": {
            "description": "Result in data envelope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CisReportResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input or workflow precondition.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "401": {
            "description": "Invalid, expired or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "403": {
            "description": "Missing scope, company approval, production enablement or access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found in this company/environment.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "409": {
            "description": "Conflicting request or unresolved workflow state; reconcile before replacing the request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Present for BRANCH_BUSY; delay in seconds before retrying the exact original request/key. Absence does not imply retry permission.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded."
          },
          "500": {
            "description": "Request rejected or failed. Preserve the original body and request key for recovery.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CisReportQuery"
              }
            }
          }
        },
        "parameters": [
          {
            "in": "header",
            "name": "X-Idempotency-Key",
            "required": false,
            "description": "Recommended: persist before generation and reuse with identical input.",
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 128,
              "pattern": "^[!-~]+$"
            }
          }
        ]
      },
      "get": {
        "operationId": "listCisReports",
        "summary": "List saved report history",
        "description": "Up to 50 reports, newest first, scoped to the authenticated company and environment.",
        "parameters": [
          {
            "in": "query",
            "name": "branch",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9]{2}$"
            }
          },
          {
            "in": "query",
            "name": "offset",
            "schema": {
              "type": "integer",
              "minimum": 0,
              "default": 0
            }
          }
        ],
        "responses": {
          "200": {
            "description": "data array with id, branch, kind, from, to_exclusive and created_at.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CisReportHistory"
                }
              }
            }
          },
          "401": {
            "description": "Invalid credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "403": {
            "description": "Company/environment access denied.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "description": "Request rejected or failed. Preserve the original body and request key for recovery.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "description": "Request rejected or failed. Preserve the original body and request key for recovery.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "409": {
            "description": "Request rejected or failed. Preserve the original body and request key for recovery.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Present for BRANCH_BUSY; delay in seconds before retrying the exact original request/key. Absence does not imply retry permission.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "500": {
            "description": "Request rejected or failed. Preserve the original body and request key for recovery.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/api/portal/cis/cash": {
      "post": {
        "operationId": "recordCisCash",
        "summary": "Record a cash deposit or withdrawal",
        "description": "Requires receipts:write. Preserve the same key and content on retry; changed content returns a conflict. Does not initiate a bank or Mobile Money payment.",
        "responses": {
          "200": {
            "description": "Result in data envelope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CisCashResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input or workflow precondition.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "401": {
            "description": "Invalid, expired or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "403": {
            "description": "Missing scope, company approval, production enablement or access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found in this company/environment.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "409": {
            "description": "Conflicting request or unresolved workflow state; reconcile before replacing the request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Present for BRANCH_BUSY; delay in seconds before retrying the exact original request/key. Absence does not imply retry permission.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded."
          },
          "500": {
            "description": "Request rejected or failed. Preserve the original body and request key for recovery.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "in": "header",
            "name": "X-Idempotency-Key",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 128,
              "pattern": "^[!-~]+$"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CisCashEntry"
              }
            }
          }
        }
      }
    },
    "/api/portal/cis/reports/{id}": {
      "get": {
        "operationId": "getCisReport",
        "summary": "Retrieve a saved report snapshot",
        "description": "Returns the originally saved report. Later catalogue/profile changes do not recompute it.",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Original report snapshot in data.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CisReportResult"
                }
              }
            }
          },
          "401": {
            "description": "Invalid credentials.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "403": {
            "description": "Company/environment access denied.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "description": "Report not found in this company/environment.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "description": "Request rejected or failed. Preserve the original body and request key for recovery.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "409": {
            "description": "Request rejected or failed. Preserve the original body and request key for recovery.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Present for BRANCH_BUSY; delay in seconds before retrying the exact original request/key. Absence does not imply retry permission.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "500": {
            "description": "Request rejected or failed. Preserve the original body and request key for recovery.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/api/portal/usage": {
      "get": {
        "operationId": "getMonthlyReceiptUsage",
        "summary": "Read monthly recorded receipt activity",
        "parameters": [
          {
            "name": "month",
            "in": "query",
            "required": false,
            "description": "YYYY-MM; defaults to the current Kigali month.",
            "schema": {
              "type": "string",
              "pattern": "^[0-9]{4}-[0-9]{2}$"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Monthly receipt activity",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/ReceiptUsage"
                    }
                  },
                  "required": [
                    "data"
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Invalid or revoked credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "403": {
            "description": "Company access suspended or forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "400": {
            "description": "Invalid month",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              }
            }
          },
          "404": {
            "description": "Request rejected or failed; preserve the original request identity before recovery.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "409": {
            "description": "Request rejected or failed; preserve the original request identity before recovery.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Present for BRANCH_BUSY; delay in seconds before retrying the exact original request/key. Absence does not imply retry permission.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "500": {
            "description": "Request rejected or failed; preserve the original request identity before recovery.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "502": {
            "description": "Request rejected or failed; preserve the original request identity before recovery.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "description": "Company/environment-scoped receipt records by creation time in Africa/Kigali. Counts receipts rather than requests; identical replays do not add records. Delivery classifications are current at query time. Not subscription charges, quotas or an immutable billing statement."
      }
    },
    "/api/portal/items/{id}": {
      "get": {
        "operationId": "getCatalogueItem",
        "summary": "Read one catalogue item",
        "description": "Read the current body, version and registration status for a company/environment-scoped item ID. Returns 404 for absent items or IDs outside this company/environment. Use this read to review a version conflict; it does not save or register anything.",
        "responses": {
          "200": {
            "description": "Current catalogue entry in data.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CatalogueItemResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input or workflow precondition.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "401": {
            "description": "Invalid, expired or revoked API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "403": {
            "description": "Missing scope, company approval, production enablement or access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found in this company/environment.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "409": {
            "description": "Conflicting request or unresolved workflow state; reconcile before replacing the request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "headers": {
              "Retry-After": {
                "description": "Present for BRANCH_BUSY; delay in seconds before retrying the exact original request/key. Absence does not imply retry permission.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded."
          },
          "500": {
            "description": "Request rejected or failed; preserve the original request identity before recovery.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "502": {
            "description": "Request rejected or failed; preserve the original request identity before recovery.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiError"
                }
              },
              "text/plain": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        },
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ]
      }
    }
  },
  "components": {
    "securitySchemes": {
      "CompanyApiKey": {
        "type": "apiKey",
        "in": "header",
        "name": "X-API-Key"
      }
    },
    "schemas": {
      "BhfCustSaveReq": {
        "type": "object",
        "properties": {
          "adrs": {
            "type": "string",
            "minLength": 0,
            "maxLength": 200
          },
          "bhfId": {
            "type": "string",
            "pattern": "^(?:\\d{2}$)$"
          },
          "custNm": {
            "type": "string",
            "minLength": 0,
            "maxLength": 100
          },
          "custNo": {
            "type": "string",
            "minLength": 9,
            "maxLength": 9
          },
          "custTin": {
            "type": "string",
            "pattern": "^(?:^[1,9]\\d{8}$)$"
          },
          "email": {
            "type": "string",
            "minLength": 0,
            "maxLength": 100,
            "format": "email"
          },
          "faxNo": {
            "type": "string",
            "minLength": 0,
            "maxLength": 20
          },
          "modrId": {
            "type": "string",
            "minLength": 0,
            "maxLength": 20
          },
          "modrNm": {
            "type": "string",
            "minLength": 0,
            "maxLength": 60
          },
          "regrId": {
            "type": "string",
            "minLength": 0,
            "maxLength": 20
          },
          "regrNm": {
            "type": "string",
            "minLength": 0,
            "maxLength": 60
          },
          "remark": {
            "type": "string",
            "minLength": 0,
            "maxLength": 1000
          },
          "telNo": {
            "type": "string",
            "minLength": 0,
            "maxLength": 20
          },
          "tin": {
            "type": "string",
            "pattern": "^(?:^[1,9]\\d{8}$)$"
          },
          "useYn": {
            "type": "string",
            "minLength": 1,
            "maxLength": 1
          }
        },
        "required": [
          "bhfId",
          "custNm",
          "custNo",
          "custTin",
          "modrId",
          "modrNm",
          "regrId",
          "regrNm",
          "tin",
          "useYn"
        ]
      },
      "BhfInsuranceSaveReq": {
        "type": "object",
        "properties": {
          "bhfId": {
            "type": "string",
            "pattern": "^(?:\\d{2}$)$"
          },
          "isrcRt": {
            "type": "integer",
            "format": "int32",
            "minimum": 0.0,
            "maximum": 100.0
          },
          "isrccCd": {
            "type": "string",
            "minLength": 0,
            "maxLength": 10
          },
          "isrccNm": {
            "type": "string",
            "minLength": 0,
            "maxLength": 100
          },
          "modrId": {
            "type": "string",
            "minLength": 0,
            "maxLength": 20
          },
          "modrNm": {
            "type": "string",
            "minLength": 0,
            "maxLength": 60
          },
          "regrId": {
            "type": "string",
            "minLength": 0,
            "maxLength": 20
          },
          "regrNm": {
            "type": "string",
            "minLength": 0,
            "maxLength": 60
          },
          "tin": {
            "type": "string",
            "pattern": "^(?:^[1,9]\\d{8}$)$"
          },
          "useYn": {
            "type": "string",
            "minLength": 1,
            "maxLength": 1
          }
        },
        "required": [
          "bhfId",
          "isrcRt",
          "isrccCd",
          "isrccNm",
          "modrId",
          "modrNm",
          "regrId",
          "regrNm",
          "tin",
          "useYn"
        ]
      },
      "BhfReq": {
        "type": "object",
        "properties": {
          "bhfId": {
            "type": "string",
            "pattern": "^(?:\\d{2}$)$"
          },
          "lastReqDt": {
            "type": "string",
            "pattern": "^(?:^20(\\d{2})(0[1-9]|1[0-2])(0[1-9]|[12][0-9]|3[01])([01][0-9]|2[0-3])([0-5][0-9])([0-5][0-9])$)$"
          },
          "tin": {
            "type": "string",
            "pattern": "^(?:^[1,9]\\d{8}$)$"
          }
        },
        "required": [
          "bhfId",
          "lastReqDt",
          "tin"
        ]
      },
      "BhfUserSaveReq": {
        "type": "object",
        "properties": {
          "adrs": {
            "type": "string",
            "minLength": 0,
            "maxLength": 200
          },
          "authCd": {
            "type": "string",
            "minLength": 0,
            "maxLength": 100
          },
          "bhfId": {
            "type": "string",
            "pattern": "^(?:\\d{2}$)$"
          },
          "cntc": {
            "type": "string",
            "minLength": 0,
            "maxLength": 20
          },
          "modrId": {
            "type": "string",
            "minLength": 0,
            "maxLength": 20
          },
          "modrNm": {
            "type": "string",
            "minLength": 0,
            "maxLength": 60
          },
          "pwd": {
            "type": "string",
            "minLength": 0,
            "maxLength": 255
          },
          "regrId": {
            "type": "string",
            "minLength": 0,
            "maxLength": 20
          },
          "regrNm": {
            "type": "string",
            "minLength": 0,
            "maxLength": 60
          },
          "remark": {
            "type": "string",
            "minLength": 0,
            "maxLength": 2000
          },
          "tin": {
            "type": "string",
            "pattern": "^(?:^[1,9]\\d{8}$)$"
          },
          "useYn": {
            "type": "string",
            "minLength": 1,
            "maxLength": 1
          },
          "userId": {
            "type": "string",
            "minLength": 0,
            "maxLength": 20
          },
          "userNm": {
            "type": "string",
            "minLength": 0,
            "maxLength": 60
          }
        },
        "required": [
          "bhfId",
          "modrId",
          "modrNm",
          "regrId",
          "regrNm",
          "tin",
          "useYn",
          "userId",
          "userNm"
        ]
      },
      "CodeReq": {
        "type": "object",
        "properties": {
          "bhfId": {
            "type": "string",
            "pattern": "^(?:\\d{2}$)$"
          },
          "lastReqDt": {
            "type": "string",
            "pattern": "^(?:^20(\\d{2})(0[1-9]|1[0-2])(0[1-9]|[12][0-9]|3[01])([01][0-9]|2[0-3])([0-5][0-9])([0-5][0-9])$)$"
          },
          "tin": {
            "type": "string",
            "pattern": "^(?:^[1,9]\\d{8}$)$"
          }
        },
        "required": [
          "bhfId",
          "lastReqDt",
          "tin"
        ]
      },
      "CustPagedReq": {
        "type": "object",
        "properties": {
          "bhfId": {
            "type": "string"
          },
          "endPageIndex": {
            "type": "string"
          },
          "lastReqDt": {
            "type": "string"
          },
          "startPageIndex": {
            "type": "string"
          },
          "tin": {
            "type": "string"
          }
        }
      },
      "CustReq": {
        "type": "object",
        "properties": {
          "bhfId": {
            "type": "string",
            "pattern": "^(?:\\d{2}$)$"
          },
          "custmTin": {
            "type": "string",
            "pattern": "^(?:^[1,9]\\d{8}$)$"
          },
          "tin": {
            "type": "string",
            "pattern": "^(?:^[1,9]\\d{8}$)$"
          }
        },
        "required": [
          "bhfId",
          "tin"
        ]
      },
      "ImportItemReq": {
        "type": "object",
        "properties": {
          "bhfId": {
            "type": "string",
            "pattern": "^(?:\\d{2}$)$"
          },
          "lastReqDt": {
            "type": "string",
            "pattern": "^(?:^20(\\d{2})(0[1-9]|1[0-2])(0[1-9]|[12][0-9]|3[01])([01][0-9]|2[0-3])([0-5][0-9])([0-5][0-9])$)$"
          },
          "tin": {
            "type": "string",
            "pattern": "^(?:^[1,9]\\d{8}$)$"
          }
        },
        "required": [
          "bhfId",
          "lastReqDt",
          "tin"
        ]
      },
      "ImportItemRes$ImportItem": {
        "type": "object",
        "properties": {
          "agntNm": {
            "type": "string"
          },
          "dclDe": {
            "type": "string"
          },
          "dclNo": {
            "type": "string"
          },
          "exptNatCd": {
            "type": "string"
          },
          "hsCd": {
            "type": "string"
          },
          "imptItemsttsCd": {
            "type": "string"
          },
          "invcFcurAmt": {
            "type": "number"
          },
          "invcFcurCd": {
            "type": "string"
          },
          "invcFcurExcrt": {
            "type": "number"
          },
          "itemNm": {
            "type": "string"
          },
          "itemSeq": {
            "type": "string"
          },
          "netWt": {
            "type": "number"
          },
          "orgnNatCd": {
            "type": "string"
          },
          "pkg": {
            "type": "number"
          },
          "pkgUnitCd": {
            "type": "string"
          },
          "qty": {
            "type": "number"
          },
          "qtyUnitCd": {
            "type": "string"
          },
          "spplrNm": {
            "type": "string"
          },
          "taskCd": {
            "type": "string"
          },
          "totWt": {
            "type": "number"
          }
        }
      },
      "ImportItemUpdateReq": {
        "type": "object",
        "properties": {
          "bhfId": {
            "type": "string",
            "pattern": "^(?:\\d{2}$)$"
          },
          "dclDe": {
            "type": "string",
            "minLength": 0,
            "maxLength": 8
          },
          "hsCd": {
            "type": "string",
            "minLength": 0,
            "maxLength": 17
          },
          "imptItemSttsCd": {
            "type": "string",
            "minLength": 0,
            "maxLength": 5
          },
          "itemCd": {
            "type": "string",
            "minLength": 0,
            "maxLength": 20
          },
          "itemClsCd": {
            "type": "string",
            "minLength": 0,
            "maxLength": 10
          },
          "itemSeq": {
            "type": "integer",
            "format": "int32"
          },
          "modrId": {
            "type": "string",
            "minLength": 0,
            "maxLength": 20
          },
          "modrNm": {
            "type": "string",
            "minLength": 0,
            "maxLength": 60
          },
          "remark": {
            "type": "string",
            "minLength": 0,
            "maxLength": 400
          },
          "taskCd": {
            "type": "string",
            "minLength": 0,
            "maxLength": 50
          },
          "tin": {
            "type": "string",
            "pattern": "^(?:^[1,9]\\d{8}$)$"
          }
        },
        "required": [
          "bhfId",
          "dclDe",
          "hsCd",
          "imptItemSttsCd",
          "itemSeq",
          "modrId",
          "modrNm",
          "taskCd",
          "tin"
        ]
      },
      "InitInfoReq": {
        "type": "object",
        "properties": {
          "bhfId": {
            "type": "string",
            "pattern": "^(?:\\d{2}$)$"
          },
          "dvcSrlNo": {
            "type": "string",
            "minLength": 3,
            "maxLength": 100
          },
          "tin": {
            "type": "string",
            "pattern": "^(?:^[1,9]\\d{8}$)$"
          }
        },
        "required": [
          "bhfId",
          "dvcSrlNo",
          "tin"
        ]
      },
      "ItemClsReq": {
        "type": "object",
        "properties": {
          "bhfId": {
            "type": "string",
            "pattern": "^(?:\\d{2}$)$"
          },
          "lastReqDt": {
            "type": "string",
            "pattern": "^(?:^20(\\d{2})(0[1-9]|1[0-2])(0[1-9]|[12][0-9]|3[01])([01][0-9]|2[0-3])([0-5][0-9])([0-5][0-9])$)$"
          },
          "tin": {
            "type": "string",
            "pattern": "^(?:^[1,9]\\d{8}$)$"
          }
        },
        "required": [
          "bhfId",
          "lastReqDt",
          "tin"
        ]
      },
      "ItemCompositionSaveReq": {
        "type": "object",
        "properties": {
          "bhfId": {
            "type": "string",
            "pattern": "^(?:\\d{2}$)$"
          },
          "cpstItemCd": {
            "type": "string",
            "minLength": 0,
            "maxLength": 20
          },
          "cpstQty": {
            "type": "number"
          },
          "itemCd": {
            "type": "string",
            "minLength": 0,
            "maxLength": 20
          },
          "regrId": {
            "type": "string",
            "minLength": 0,
            "maxLength": 20
          },
          "regrNm": {
            "type": "string",
            "minLength": 0,
            "maxLength": 60
          },
          "tin": {
            "type": "string",
            "pattern": "^(?:^[1,9]\\d{8}$)$"
          }
        },
        "required": [
          "bhfId",
          "cpstItemCd",
          "cpstQty",
          "itemCd",
          "regrId",
          "regrNm",
          "tin"
        ]
      },
      "ItemReq": {
        "type": "object",
        "properties": {
          "bhfId": {
            "type": "string",
            "pattern": "^(?:\\d{2}$)$"
          },
          "lastReqDt": {
            "type": "string",
            "pattern": "^(?:^20(\\d{2})(0[1-9]|1[0-2])(0[1-9]|[12][0-9]|3[01])([01][0-9]|2[0-3])([0-5][0-9])([0-5][0-9])$)$"
          },
          "tin": {
            "type": "string",
            "pattern": "^(?:^[1,9]\\d{8}$)$"
          }
        },
        "required": [
          "bhfId",
          "lastReqDt",
          "tin"
        ]
      },
      "ItemRes$Item": {
        "type": "object",
        "properties": {
          "addInfo": {
            "type": "string"
          },
          "bcd": {
            "type": "string"
          },
          "btchNo": {
            "type": "string"
          },
          "dftPrc": {
            "type": "number"
          },
          "grpPrcL1": {
            "type": "number"
          },
          "grpPrcL2": {
            "type": "number"
          },
          "grpPrcL3": {
            "type": "number"
          },
          "grpPrcL4": {
            "type": "number"
          },
          "grpPrcL5": {
            "type": "number"
          },
          "isrcAplcbYn": {
            "type": "string"
          },
          "itemCd": {
            "type": "string"
          },
          "itemClsCd": {
            "type": "string"
          },
          "itemNm": {
            "type": "string"
          },
          "itemStdNm": {
            "type": "string"
          },
          "itemTyCd": {
            "type": "string"
          },
          "orgnNatCd": {
            "type": "string"
          },
          "pkgUnitCd": {
            "type": "string"
          },
          "qtyUnitCd": {
            "type": "string"
          },
          "regBhfId": {
            "type": "string"
          },
          "rraModYn": {
            "type": "string"
          },
          "sftyQty": {
            "type": "number"
          },
          "taxTyCd": {
            "type": "string"
          },
          "tin": {
            "type": "string"
          },
          "useYn": {
            "type": "string"
          }
        }
      },
      "ItemSaveReq": {
        "type": "object",
        "properties": {
          "addInfo": {
            "type": "string",
            "minLength": 0,
            "maxLength": 7
          },
          "bcd": {
            "type": "string",
            "minLength": 0,
            "maxLength": 20
          },
          "bhfId": {
            "type": "string",
            "pattern": "^(?:\\d{2}$)$"
          },
          "btchNo": {
            "type": "string",
            "minLength": 0,
            "maxLength": 10
          },
          "dftPrc": {
            "type": "number"
          },
          "grpPrcL1": {
            "type": "number"
          },
          "grpPrcL2": {
            "type": "number"
          },
          "grpPrcL3": {
            "type": "number"
          },
          "grpPrcL4": {
            "type": "number"
          },
          "grpPrcL5": {
            "type": "number"
          },
          "isrcAplcbYn": {
            "type": "string",
            "minLength": 1,
            "maxLength": 1
          },
          "itemCd": {
            "type": "string",
            "minLength": 0,
            "maxLength": 20
          },
          "itemClsCd": {
            "type": "string",
            "minLength": 0,
            "maxLength": 10
          },
          "itemNm": {
            "type": "string",
            "minLength": 0,
            "maxLength": 200
          },
          "itemStdNm": {
            "type": "string",
            "minLength": 0,
            "maxLength": 200
          },
          "itemTyCd": {
            "type": "string",
            "minLength": 0,
            "maxLength": 5
          },
          "modrId": {
            "type": "string",
            "minLength": 0,
            "maxLength": 20
          },
          "modrNm": {
            "type": "string",
            "minLength": 0,
            "maxLength": 60
          },
          "orgnNatCd": {
            "type": "string",
            "minLength": 0,
            "maxLength": 5
          },
          "pkgUnitCd": {
            "type": "string",
            "minLength": 0,
            "maxLength": 5
          },
          "qtyUnitCd": {
            "type": "string",
            "minLength": 0,
            "maxLength": 5
          },
          "regrId": {
            "type": "string",
            "minLength": 0,
            "maxLength": 20
          },
          "regrNm": {
            "type": "string",
            "minLength": 0,
            "maxLength": 60
          },
          "sftyQty": {
            "type": "number"
          },
          "taxTyCd": {
            "type": "string",
            "minLength": 0,
            "maxLength": 5
          },
          "tin": {
            "type": "string",
            "pattern": "^(?:^[1,9]\\d{8}$)$"
          },
          "useYn": {
            "type": "string",
            "minLength": 1,
            "maxLength": 1
          }
        },
        "required": [
          "bhfId",
          "dftPrc",
          "isrcAplcbYn",
          "itemCd",
          "itemClsCd",
          "itemNm",
          "itemTyCd",
          "modrId",
          "modrNm",
          "orgnNatCd",
          "pkgUnitCd",
          "qtyUnitCd",
          "regrId",
          "regrNm",
          "taxTyCd",
          "tin",
          "useYn"
        ]
      },
      "NoticeReq": {
        "type": "object",
        "properties": {
          "bhfId": {
            "type": "string",
            "pattern": "^(?:\\d{2}$)$"
          },
          "lastReqDt": {
            "type": "string",
            "pattern": "^(?:^20(\\d{2})(0[1-9]|1[0-2])(0[1-9]|[12][0-9]|3[01])([01][0-9]|2[0-3])([0-5][0-9])([0-5][0-9])$)$"
          },
          "tin": {
            "type": "string",
            "pattern": "^(?:^[1,9]\\d{8}$)$"
          }
        },
        "required": [
          "bhfId",
          "lastReqDt",
          "tin"
        ]
      },
      "ReportZCheckReq": {
        "type": "object",
        "properties": {
          "bhfId": {
            "type": "string",
            "pattern": "^(?:\\d{2}$)$"
          },
          "rptDe": {
            "type": "string",
            "pattern": "^(?:^20(\\d{2})(0[1-9]|1[0-2])(0[1-9]|[12][0-9]|3[01])([01][0-9]|2[0-3])([0-5][0-9])([0-5][0-9])$)$"
          },
          "tin": {
            "type": "string",
            "pattern": "^(?:^[1,9]\\d{8}$)$"
          }
        },
        "required": [
          "bhfId",
          "tin"
        ]
      },
      "ReportZSaveReq": {
        "type": "object",
        "properties": {
          "bhfId": {
            "type": "string"
          },
          "cpyRcptClsNo": {
            "type": "integer",
            "format": "int64"
          },
          "cpyRcptOpnNo": {
            "type": "integer",
            "format": "int64"
          },
          "cpyRcptPbctCnt": {
            "type": "integer",
            "format": "int32"
          },
          "cpyRfdAmt": {
            "type": "number"
          },
          "cpyRfdTaxAmt": {
            "type": "number"
          },
          "cpySalesAmt": {
            "type": "number"
          },
          "cpySalesTaxAmt": {
            "type": "number"
          },
          "nrmRcptClsNo": {
            "type": "integer",
            "format": "int64"
          },
          "nrmRcptOpnNo": {
            "type": "integer",
            "format": "int64"
          },
          "nrmRcptPbctCnt": {
            "type": "integer",
            "format": "int32"
          },
          "nrmRfdAmt": {
            "type": "number"
          },
          "nrmRfdTaxAmt": {
            "type": "number"
          },
          "nrmSalesAmt": {
            "type": "number"
          },
          "nrmSalesTaxAmt": {
            "type": "number"
          },
          "pfmRcptClsNo": {
            "type": "integer",
            "format": "int64"
          },
          "pfmRcptOpnNo": {
            "type": "integer",
            "format": "int64"
          },
          "pfmRcptPbctCnt": {
            "type": "integer",
            "format": "int32"
          },
          "pfmRfdAmt": {
            "type": "number"
          },
          "pfmRfdTaxAmt": {
            "type": "number"
          },
          "pfmSalesAmt": {
            "type": "number"
          },
          "pfmSalesTaxAmt": {
            "type": "number"
          },
          "rcptClsNo": {
            "type": "integer",
            "format": "int64"
          },
          "rcptOpnNo": {
            "type": "integer",
            "format": "int64"
          },
          "rcptPbctCnt": {
            "type": "integer",
            "format": "int32"
          },
          "regrId": {
            "type": "string"
          },
          "regrNm": {
            "type": "string"
          },
          "rptDe": {
            "type": "string"
          },
          "rptNo": {
            "type": "integer",
            "format": "int64"
          },
          "sdcId": {
            "type": "string"
          },
          "tin": {
            "type": "string"
          },
          "trnRcptClsNo": {
            "type": "integer",
            "format": "int64"
          },
          "trnRcptOpnNo": {
            "type": "integer",
            "format": "int64"
          },
          "trnRcptPbctCnt": {
            "type": "integer",
            "format": "int32"
          },
          "trnRfdAmt": {
            "type": "number"
          },
          "trnRfdTaxAmt": {
            "type": "number"
          },
          "trnSalesAmt": {
            "type": "number"
          },
          "trnSalesTaxAmt": {
            "type": "number"
          }
        }
      },
      "ReportZSaveUpdateReq": {
        "type": "object",
        "required": [
          "tin",
          "bhfId"
        ],
        "properties": {
          "bhfId": {
            "type": "string",
            "pattern": "^(?:\\d{2}$)$"
          },
          "rptDe": {
            "type": "string",
            "pattern": "^(?:^20(\\d{2})(0[1-9]|1[0-2])(0[1-9]|[12][0-9]|3[01])([01][0-9]|2[0-3])([0-5][0-9])([0-5][0-9])$)$"
          },
          "tin": {
            "type": "string",
            "pattern": "^(?:^[1,9]\\d{8}$)$"
          }
        }
      },
      "StockIoItemSaveReq": {
        "type": "object",
        "properties": {
          "bcd": {
            "type": "string",
            "minLength": 0,
            "maxLength": 20
          },
          "itemCd": {
            "type": "string",
            "minLength": 0,
            "maxLength": 20
          },
          "itemClsCd": {
            "type": "string",
            "minLength": 0,
            "maxLength": 10
          },
          "itemExprDt": {
            "type": "string",
            "minLength": 0,
            "maxLength": 8
          },
          "itemNm": {
            "type": "string",
            "minLength": 0,
            "maxLength": 200
          },
          "itemSeq": {
            "type": "integer",
            "format": "int32"
          },
          "pkg": {
            "type": "number"
          },
          "pkgUnitCd": {
            "type": "string",
            "minLength": 0,
            "maxLength": 5
          },
          "prc": {
            "type": "number"
          },
          "qty": {
            "type": "number"
          },
          "qtyUnitCd": {
            "type": "string",
            "minLength": 0,
            "maxLength": 5
          },
          "splyAmt": {
            "type": "number"
          },
          "taxAmt": {
            "type": "number"
          },
          "taxTyCd": {
            "type": "string",
            "minLength": 0,
            "maxLength": 5
          },
          "taxblAmt": {
            "type": "number"
          },
          "totAmt": {
            "type": "number"
          },
          "totDcAmt": {
            "type": "number"
          }
        },
        "required": [
          "itemClsCd",
          "itemNm",
          "itemSeq",
          "pkg",
          "pkgUnitCd",
          "prc",
          "qty",
          "qtyUnitCd",
          "splyAmt",
          "taxAmt",
          "taxTyCd",
          "taxblAmt",
          "totAmt",
          "totDcAmt"
        ]
      },
      "StockIoSaveReq": {
        "type": "object",
        "properties": {
          "bhfId": {
            "type": "string",
            "pattern": "^(?:\\d{2}$)$"
          },
          "custBhfId": {
            "type": "string",
            "minLength": 0,
            "maxLength": 2
          },
          "custNm": {
            "type": "string",
            "minLength": 0,
            "maxLength": 100
          },
          "custTin": {
            "type": "string",
            "minLength": 0,
            "maxLength": 9,
            "pattern": "^(?:^[1,9]\\d{8}$)$"
          },
          "itemList": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/StockIoItemSaveReq"
            }
          },
          "modrId": {
            "type": "string",
            "minLength": 0,
            "maxLength": 20
          },
          "modrNm": {
            "type": "string",
            "minLength": 0,
            "maxLength": 60
          },
          "ocrnDt": {
            "type": "string",
            "pattern": "^(?:^20\\d{2}(0[1-9]|1[0-2])(0[1-9]|[12][0-9]|3[01])$)$"
          },
          "orgSarNo": {
            "type": "integer",
            "format": "int32"
          },
          "regTyCd": {
            "type": "string",
            "minLength": 1,
            "maxLength": 5
          },
          "regrId": {
            "type": "string",
            "minLength": 0,
            "maxLength": 20
          },
          "regrNm": {
            "type": "string",
            "minLength": 0,
            "maxLength": 60
          },
          "remark": {
            "type": "string",
            "minLength": 0,
            "maxLength": 2000
          },
          "sarNo": {
            "type": "integer",
            "format": "int32"
          },
          "sarTyCd": {
            "type": "string",
            "minLength": 1,
            "maxLength": 5
          },
          "tin": {
            "type": "string",
            "pattern": "^(?:^[1,9]\\d{8}$)$"
          },
          "totAmt": {
            "type": "number"
          },
          "totItemCnt": {
            "type": "integer",
            "format": "int32",
            "minimum": 1.0
          },
          "totTaxAmt": {
            "type": "number"
          },
          "totTaxblAmt": {
            "type": "number"
          }
        },
        "required": [
          "bhfId",
          "itemList",
          "modrId",
          "modrNm",
          "ocrnDt",
          "orgSarNo",
          "regTyCd",
          "regrId",
          "regrNm",
          "sarNo",
          "sarTyCd",
          "tin",
          "totAmt",
          "totItemCnt",
          "totTaxAmt",
          "totTaxblAmt"
        ]
      },
      "StockMasterSaveReq": {
        "type": "object",
        "properties": {
          "bhfId": {
            "type": "string",
            "pattern": "^(?:\\d{2}$)$"
          },
          "itemCd": {
            "type": "string",
            "minLength": 0,
            "maxLength": 20
          },
          "modrId": {
            "type": "string",
            "minLength": 0,
            "maxLength": 20
          },
          "modrNm": {
            "type": "string",
            "minLength": 0,
            "maxLength": 60
          },
          "regrId": {
            "type": "string",
            "minLength": 0,
            "maxLength": 20
          },
          "regrNm": {
            "type": "string",
            "minLength": 0,
            "maxLength": 60
          },
          "rsdQty": {
            "type": "number"
          },
          "tin": {
            "type": "string",
            "pattern": "^(?:^[1,9]\\d{8}$)$"
          }
        },
        "required": [
          "bhfId",
          "itemCd",
          "modrId",
          "modrNm",
          "regrId",
          "regrNm",
          "rsdQty",
          "tin"
        ]
      },
      "StockMoveReq": {
        "type": "object",
        "properties": {
          "bhfId": {
            "type": "string",
            "pattern": "^(?:\\d{2}$)$"
          },
          "lastReqDt": {
            "type": "string",
            "pattern": "^(?:^20(\\d{2})(0[1-9]|1[0-2])(0[1-9]|[12][0-9]|3[01])([01][0-9]|2[0-3])([0-5][0-9])([0-5][0-9])$)$"
          },
          "tin": {
            "type": "string",
            "pattern": "^(?:^[1,9]\\d{8}$)$"
          }
        },
        "required": [
          "bhfId",
          "lastReqDt",
          "tin"
        ]
      },
      "StockMoveRes$StockMoveItem": {
        "type": "object",
        "properties": {
          "bcd": {
            "type": "string"
          },
          "itemCd": {
            "type": "string"
          },
          "itemClsCd": {
            "type": "string"
          },
          "itemExprDt": {
            "type": "string"
          },
          "itemNm": {
            "type": "string"
          },
          "itemSeq": {
            "type": "integer",
            "format": "int32"
          },
          "pkg": {
            "type": "number"
          },
          "pkgUnitCd": {
            "type": "string"
          },
          "prc": {
            "type": "number"
          },
          "qty": {
            "type": "number"
          },
          "qtyUnitCd": {
            "type": "string"
          },
          "splyAmt": {
            "type": "number"
          },
          "taxAmt": {
            "type": "number"
          },
          "taxTyCd": {
            "type": "string"
          },
          "taxblAmt": {
            "type": "number"
          },
          "totAmt": {
            "type": "number"
          },
          "totDcAmt": {
            "type": "number"
          }
        }
      },
      "SwVersionReq": {
        "type": "object",
        "properties": {
          "bhfId": {
            "type": "string"
          },
          "lastReqDt": {
            "type": "string"
          },
          "tin": {
            "type": "string"
          }
        }
      },
      "TestEchoReq": {
        "type": "object",
        "properties": {
          "bhfId": {
            "type": "string"
          },
          "testStr": {
            "type": "string"
          },
          "tin": {
            "type": "string"
          }
        }
      },
      "TrnsPurchaseSalesReq": {
        "type": "object",
        "properties": {
          "bhfId": {
            "type": "string",
            "pattern": "^(?:\\d{2}$)$"
          },
          "lastReqDt": {
            "type": "string",
            "pattern": "^(?:^20(\\d{2})(0[1-9]|1[0-2])(0[1-9]|[12][0-9]|3[01])([01][0-9]|2[0-3])([0-5][0-9])([0-5][0-9])$)$"
          },
          "tin": {
            "type": "string",
            "pattern": "^(?:^[1,9]\\d{8}$)$"
          }
        },
        "required": [
          "bhfId",
          "lastReqDt",
          "tin"
        ]
      },
      "TrnsPurchaseSalesRes$TrnsPurchaseSalesItem": {
        "type": "object",
        "properties": {
          "bcd": {
            "type": "string"
          },
          "dcAmt": {
            "type": "number"
          },
          "dcRt": {
            "type": "number"
          },
          "itemCd": {
            "type": "string"
          },
          "itemClsCd": {
            "type": "string"
          },
          "itemNm": {
            "type": "string"
          },
          "itemSeq": {
            "type": "integer",
            "format": "int32"
          },
          "pkg": {
            "type": "number"
          },
          "pkgUnitCd": {
            "type": "string"
          },
          "prc": {
            "type": "number"
          },
          "qty": {
            "type": "number"
          },
          "qtyUnitCd": {
            "type": "string"
          },
          "splyAmt": {
            "type": "number"
          },
          "taxAmt": {
            "type": "number"
          },
          "taxTyCd": {
            "type": "string"
          },
          "taxblAmt": {
            "type": "number"
          },
          "totAmt": {
            "type": "number"
          }
        }
      },
      "TrnsPurchaseSaveItem": {
        "type": "object",
        "properties": {
          "bcd": {
            "type": "string",
            "minLength": 0,
            "maxLength": 20
          },
          "dcAmt": {
            "type": "number"
          },
          "dcRt": {
            "type": "number"
          },
          "itemCd": {
            "type": "string",
            "minLength": 0,
            "maxLength": 20
          },
          "itemClsCd": {
            "type": "string",
            "minLength": 0,
            "maxLength": 10
          },
          "itemExprDt": {
            "type": "string",
            "minLength": 0,
            "maxLength": 8
          },
          "itemNm": {
            "type": "string",
            "minLength": 0,
            "maxLength": 200
          },
          "itemSeq": {
            "type": "integer",
            "format": "int32"
          },
          "pkg": {
            "type": "number"
          },
          "pkgUnitCd": {
            "type": "string",
            "minLength": 0,
            "maxLength": 5
          },
          "prc": {
            "type": "number"
          },
          "qty": {
            "type": "number"
          },
          "qtyUnitCd": {
            "type": "string",
            "minLength": 0,
            "maxLength": 5
          },
          "splyAmt": {
            "type": "number"
          },
          "spplrItemCd": {
            "type": "string",
            "minLength": 0,
            "maxLength": 20
          },
          "spplrItemClsCd": {
            "type": "string",
            "minLength": 0,
            "maxLength": 10
          },
          "spplrItemNm": {
            "type": "string",
            "minLength": 0,
            "maxLength": 200
          },
          "taxAmt": {
            "type": "number"
          },
          "taxTyCd": {
            "type": "string",
            "minLength": 0,
            "maxLength": 5
          },
          "taxblAmt": {
            "type": "number"
          },
          "totAmt": {
            "type": "number"
          }
        },
        "required": [
          "dcAmt",
          "dcRt",
          "itemClsCd",
          "itemNm",
          "itemSeq",
          "pkg",
          "pkgUnitCd",
          "prc",
          "qty",
          "qtyUnitCd",
          "splyAmt",
          "taxAmt",
          "taxTyCd",
          "taxblAmt",
          "totAmt"
        ]
      },
      "TrnsPurchaseSaveReq": {
        "type": "object",
        "properties": {
          "bhfId": {
            "type": "string",
            "pattern": "^(?:\\d{2}$)$"
          },
          "cfmDt": {
            "type": "string",
            "minLength": 0,
            "maxLength": 14
          },
          "cnclDt": {
            "type": "string",
            "minLength": 0,
            "maxLength": 14
          },
          "cnclReqDt": {
            "type": "string",
            "minLength": 0,
            "maxLength": 14
          },
          "invcNo": {
            "type": "integer",
            "format": "int64",
            "minimum": 1.0
          },
          "itemList": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TrnsPurchaseSaveItem"
            }
          },
          "modrId": {
            "type": "string",
            "minLength": 0,
            "maxLength": 20
          },
          "modrNm": {
            "type": "string",
            "minLength": 0,
            "maxLength": 60
          },
          "orgInvcNo": {
            "type": "integer",
            "format": "int64",
            "minimum": 0.0
          },
          "pchsDt": {
            "type": "string",
            "minLength": 8,
            "maxLength": 8
          },
          "pchsSttsCd": {
            "type": "string",
            "minLength": 0,
            "maxLength": 5
          },
          "pchsTyCd": {
            "type": "string",
            "minLength": 0,
            "maxLength": 5
          },
          "pmtTyCd": {
            "type": "string",
            "minLength": 0,
            "maxLength": 5
          },
          "prcOrdCd": {
            "type": "string"
          },
          "rcptTyCd": {
            "type": "string",
            "minLength": 0,
            "maxLength": 5
          },
          "regTyCd": {
            "type": "string",
            "minLength": 0,
            "maxLength": 5
          },
          "regrId": {
            "type": "string",
            "minLength": 0,
            "maxLength": 20
          },
          "regrNm": {
            "type": "string",
            "minLength": 0,
            "maxLength": 60
          },
          "remark": {
            "type": "string",
            "minLength": 0,
            "maxLength": 2000
          },
          "rfdDt": {
            "type": "string",
            "minLength": 0,
            "maxLength": 14
          },
          "spplrBhfId": {
            "type": "string",
            "minLength": 0,
            "maxLength": 2
          },
          "spplrInvcNo": {
            "type": "integer",
            "format": "int64"
          },
          "spplrNm": {
            "type": "string",
            "minLength": 0,
            "maxLength": 100
          },
          "spplrSdcId": {
            "type": "string",
            "minLength": 0,
            "maxLength": 12
          },
          "spplrTin": {
            "type": "string",
            "pattern": "^(?:^[1,9]\\d{8}$)$"
          },
          "taxAmtA": {
            "type": "number"
          },
          "taxAmtB": {
            "type": "number"
          },
          "taxAmtC": {
            "type": "number"
          },
          "taxAmtD": {
            "type": "number"
          },
          "taxRtA": {
            "type": "number"
          },
          "taxRtB": {
            "type": "number"
          },
          "taxRtC": {
            "type": "number"
          },
          "taxRtD": {
            "type": "number"
          },
          "taxblAmtA": {
            "type": "number"
          },
          "taxblAmtB": {
            "type": "number"
          },
          "taxblAmtC": {
            "type": "number"
          },
          "taxblAmtD": {
            "type": "number"
          },
          "tin": {
            "type": "string",
            "pattern": "^(?:^[1,9]\\d{8}$)$"
          },
          "totAmt": {
            "type": "number"
          },
          "totItemCnt": {
            "type": "integer",
            "format": "int32",
            "minimum": 1.0
          },
          "totTaxAmt": {
            "type": "number"
          },
          "totTaxblAmt": {
            "type": "number"
          },
          "wrhsDt": {
            "type": "string",
            "minLength": 0,
            "maxLength": 14
          }
        },
        "required": [
          "bhfId",
          "invcNo",
          "itemList",
          "modrId",
          "modrNm",
          "orgInvcNo",
          "pchsDt",
          "pchsSttsCd",
          "pchsTyCd",
          "pmtTyCd",
          "rcptTyCd",
          "regTyCd",
          "regrId",
          "regrNm",
          "taxAmtA",
          "taxAmtB",
          "taxAmtC",
          "taxAmtD",
          "taxRtA",
          "taxRtB",
          "taxRtC",
          "taxRtD",
          "taxblAmtA",
          "taxblAmtB",
          "taxblAmtC",
          "taxblAmtD",
          "tin",
          "totAmt",
          "totItemCnt",
          "totTaxAmt",
          "totTaxblAmt"
        ]
      },
      "TrnsSalesSaveWrItem": {
        "type": "object",
        "properties": {
          "bcd": {
            "type": "string",
            "minLength": 0,
            "maxLength": 20
          },
          "dcAmt": {
            "type": "number"
          },
          "dcRt": {
            "type": "number"
          },
          "isrcAmt": {
            "type": "number"
          },
          "isrcRt": {
            "type": "number",
            "minimum": 0.0,
            "maximum": 100.0
          },
          "isrccCd": {
            "type": "string",
            "minLength": 0,
            "maxLength": 10
          },
          "isrccNm": {
            "type": "string",
            "minLength": 0,
            "maxLength": 100
          },
          "itemCd": {
            "type": "string",
            "minLength": 0,
            "maxLength": 20
          },
          "itemClsCd": {
            "type": "string",
            "minLength": 0,
            "maxLength": 10
          },
          "itemNm": {
            "type": "string",
            "minLength": 0,
            "maxLength": 200
          },
          "itemSeq": {
            "type": "integer",
            "format": "int32"
          },
          "pkg": {
            "type": "number"
          },
          "pkgUnitCd": {
            "type": "string",
            "minLength": 0,
            "maxLength": 5
          },
          "prc": {
            "type": "number"
          },
          "qty": {
            "type": "number"
          },
          "qtyUnitCd": {
            "type": "string",
            "minLength": 0,
            "maxLength": 5
          },
          "splyAmt": {
            "type": "number"
          },
          "taxAmt": {
            "type": "number"
          },
          "taxTyCd": {
            "type": "string",
            "minLength": 0,
            "maxLength": 5
          },
          "taxblAmt": {
            "type": "number"
          },
          "totAmt": {
            "type": "number"
          }
        },
        "required": [
          "dcAmt",
          "dcRt",
          "itemClsCd",
          "itemNm",
          "itemSeq",
          "pkg",
          "pkgUnitCd",
          "prc",
          "qty",
          "qtyUnitCd",
          "splyAmt",
          "taxAmt",
          "taxTyCd",
          "taxblAmt",
          "totAmt"
        ]
      },
      "TrnsSalesSaveWrReSendReq": {
        "type": "object",
        "properties": {
          "bhfId": {
            "type": "string"
          },
          "invcNo": {
            "type": "integer",
            "format": "int64"
          },
          "tin": {
            "type": "string"
          }
        }
      },
      "TrnsSalesSaveWrReceipt": {
        "type": "object",
        "properties": {
          "adrs": {
            "type": "string",
            "minLength": 0,
            "maxLength": 200
          },
          "btmMsg": {
            "type": "string",
            "minLength": 0,
            "maxLength": 100
          },
          "curRcptNo": {
            "type": "integer",
            "format": "int64",
            "minimum": 1.0
          },
          "custMblNo": {
            "type": "string",
            "minLength": 0,
            "maxLength": 20
          },
          "custTin": {
            "type": "string",
            "pattern": "^(?:^[1,9]\\d{8}$)$"
          },
          "intrlData": {
            "type": "string"
          },
          "jrnl": {
            "type": "string"
          },
          "prchrAcptcYn": {
            "type": "string",
            "minLength": 1,
            "maxLength": 1
          },
          "rcptPbctDt": {
            "type": "string",
            "minLength": 0,
            "maxLength": 14
          },
          "rcptSign": {
            "type": "string"
          },
          "rptNo": {
            "type": "integer",
            "format": "int64"
          },
          "topMsg": {
            "type": "string",
            "minLength": 0,
            "maxLength": 300
          },
          "totRcptNo": {
            "type": "integer",
            "format": "int64",
            "minimum": 1.0
          },
          "trdeNm": {
            "type": "string",
            "minLength": 0,
            "maxLength": 100
          }
        },
        "required": [
          "prchrAcptcYn"
        ]
      },
      "TrnsSalesSaveWrReq": {
        "type": "object",
        "properties": {
          "bhfId": {
            "type": "string",
            "pattern": "^(?:\\d{2}$)$"
          },
          "cfmDt": {
            "type": "string",
            "minLength": 0,
            "maxLength": 14,
            "pattern": "^(?:^20\\d{2}(0[1-9]|1[0-2])(0[1-9]|[12][0-9]|3[01])([01][0-9]|2[0-3])([0-5][0-9])([0-5][0-9])$)$"
          },
          "cnclDt": {
            "type": "string",
            "minLength": 0,
            "maxLength": 14,
            "pattern": "^(?:^20\\d{2}(0[1-9]|1[0-2])(0[1-9]|[12][0-9]|3[01])([01][0-9]|2[0-3])([0-5][0-9])([0-5][0-9])$)$"
          },
          "cnclReqDt": {
            "type": "string",
            "minLength": 0,
            "maxLength": 14,
            "pattern": "^(?:^20\\d{2}(0[1-9]|1[0-2])(0[1-9]|[12][0-9]|3[01])([01][0-9]|2[0-3])([0-5][0-9])([0-5][0-9])$)$"
          },
          "custNm": {
            "type": "string",
            "minLength": 0,
            "maxLength": 100
          },
          "custTin": {
            "type": "string",
            "pattern": "^(?:^[1,9,7]\\d{8}$)$"
          },
          "invcNo": {
            "type": "integer",
            "format": "int64",
            "minimum": 0.0
          },
          "itemList": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TrnsSalesSaveWrItem"
            }
          },
          "modrId": {
            "type": "string",
            "minLength": 0,
            "maxLength": 20
          },
          "modrNm": {
            "type": "string",
            "minLength": 0,
            "maxLength": 60
          },
          "orgInvcNo": {
            "type": "integer",
            "format": "int64",
            "minimum": 0.0
          },
          "pmtTyCd": {
            "type": "string",
            "minLength": 0,
            "maxLength": 5
          },
          "prcOrdCd": {
            "type": "string",
            "minLength": 6,
            "maxLength": 6
          },
          "prchrAcptcYn": {
            "type": "string",
            "pattern": "^(?:^[YN]$)$"
          },
          "rcptTyCd": {
            "type": "string",
            "minLength": 0,
            "maxLength": 5
          },
          "receipt": {
            "$ref": "#/components/schemas/TrnsSalesSaveWrReceipt"
          },
          "regrId": {
            "type": "string",
            "minLength": 0,
            "maxLength": 20
          },
          "regrNm": {
            "type": "string",
            "minLength": 0,
            "maxLength": 60
          },
          "remark": {
            "type": "string",
            "minLength": 0,
            "maxLength": 2000
          },
          "rfdDt": {
            "type": "string",
            "minLength": 0,
            "maxLength": 14,
            "pattern": "^(?:^20\\d{2}(0[1-9]|1[0-2])(0[1-9]|[12][0-9]|3[01])([01][0-9]|2[0-3])([0-5][0-9])([0-5][0-9])$)$"
          },
          "rfdRsnCd": {
            "type": "string",
            "minLength": 0,
            "maxLength": 5
          },
          "salesDt": {
            "type": "string",
            "minLength": 8,
            "maxLength": 8,
            "pattern": "^(?:^20\\d{2}(0[1-9]|1[0-2])(0[1-9]|[12][0-9]|3[01])$)$"
          },
          "salesSttsCd": {
            "type": "string",
            "minLength": 0,
            "maxLength": 5
          },
          "salesTyCd": {
            "type": "string",
            "minLength": 0,
            "maxLength": 5
          },
          "stockRlsDt": {
            "type": "string",
            "minLength": 0,
            "maxLength": 14,
            "pattern": "^(?:^20\\d{2}(0[1-9]|1[0-2])(0[1-9]|[12][0-9]|3[01])([01][0-9]|2[0-3])([0-5][0-9])([0-5][0-9])$)$"
          },
          "taxAmtA": {
            "type": "number"
          },
          "taxAmtB": {
            "type": "number"
          },
          "taxAmtC": {
            "type": "number"
          },
          "taxAmtD": {
            "type": "number"
          },
          "taxRtA": {
            "type": "number"
          },
          "taxRtB": {
            "type": "number"
          },
          "taxRtC": {
            "type": "number"
          },
          "taxRtD": {
            "type": "number"
          },
          "taxblAmtA": {
            "type": "number"
          },
          "taxblAmtB": {
            "type": "number"
          },
          "taxblAmtC": {
            "type": "number"
          },
          "taxblAmtD": {
            "type": "number"
          },
          "tin": {
            "type": "string",
            "pattern": "^(?:^[1,9]\\d{8}$)$"
          },
          "totAmt": {
            "type": "number"
          },
          "totItemCnt": {
            "type": "integer",
            "format": "int32",
            "minimum": 1.0
          },
          "totTaxAmt": {
            "type": "number"
          },
          "totTaxblAmt": {
            "type": "number"
          }
        },
        "required": [
          "bhfId",
          "invcNo",
          "itemList",
          "modrId",
          "modrNm",
          "prchrAcptcYn",
          "rcptTyCd",
          "regrId",
          "regrNm",
          "salesDt",
          "salesSttsCd",
          "salesTyCd",
          "taxAmtA",
          "taxAmtB",
          "taxAmtC",
          "taxAmtD",
          "taxRtA",
          "taxRtB",
          "taxRtC",
          "taxRtD",
          "taxblAmtA",
          "taxblAmtB",
          "taxblAmtC",
          "taxblAmtD",
          "tin",
          "totAmt",
          "totItemCnt",
          "totTaxAmt",
          "totTaxblAmt"
        ]
      },
      "CisInvoiceLine": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "item_id",
          "quantity"
        ],
        "properties": {
          "item_id": {
            "type": "string",
            "format": "uuid",
            "description": "Company catalogue UUID, not the RRA item code."
          },
          "quantity": {
            "type": "number",
            "exclusiveMinimum": 0,
            "maximum": 1000000,
            "multipleOf": 0.01
          },
          "discount_percent": {
            "type": [
              "number",
              "null"
            ],
            "minimum": 0,
            "maximum": 100,
            "multipleOf": 0.01
          }
        }
      },
      "CisInvoice": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "branch",
          "invoice_number",
          "payment_code"
        ],
        "properties": {
          "branch": {
            "type": "string",
            "pattern": "^[0-9]{2}$"
          },
          "invoice_number": {
            "type": "string",
            "pattern": "^[0-9]+$",
            "description": "Positive signed-64-bit invoice identifier, encoded as a string."
          },
          "mode": {
            "type": "string",
            "enum": [
              "NS",
              "NR",
              "CS",
              "CR",
              "TS",
              "TR",
              "PS"
            ],
            "default": "NS"
          },
          "source_receipt": {
            "type": [
              "string",
              "null"
            ],
            "format": "uuid"
          },
          "payment_code": {
            "type": "string"
          },
          "training_enabled": {
            "type": "boolean",
            "default": false
          },
          "lines": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CisInvoiceLine"
            },
            "description": "Required for NS/TS/TR/PS. Empty for full-original NR/CS/CR.",
            "maxItems": 100
          },
          "customer_name": {
            "type": [
              "string",
              "null"
            ]
          },
          "customer_tin": {
            "type": [
              "string",
              "null"
            ]
          },
          "customer_phone": {
            "type": [
              "string",
              "null"
            ]
          },
          "purchase_code": {
            "type": [
              "string",
              "null"
            ]
          },
          "refund_reason": {
            "type": [
              "string",
              "null"
            ]
          },
          "refund_explanation": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "description": "New NS/TS/TR/PS invoices require 1\u2013100 lines, customer_name and either customer_tin or customer_phone. NR/CS/CR require source_receipt and empty lines. Refunds require reason and explanation; training requires explicit activation."
      },
      "CisStockAdjustment": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "branch": {
            "type": "string",
            "pattern": "^[0-9]{2}$"
          },
          "item_id": {
            "type": "string",
            "format": "uuid"
          },
          "quantity": {
            "type": "number",
            "multipleOf": 0.01,
            "description": "Signed nonzero change, at most 1000000 units in magnitude."
          },
          "reason": {
            "type": "string",
            "minLength": 1
          }
        },
        "required": [
          "branch",
          "item_id",
          "quantity",
          "reason"
        ]
      },
      "CisReferenceFetch": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "branch": {
            "type": "string",
            "pattern": "^[0-9]{2}$"
          },
          "since": {
            "type": "string",
            "pattern": "^[0-9]{14}$",
            "description": "yyyyMMddHHmmss; must be later than the previous successful request for this branch/kind."
          }
        },
        "required": [
          "branch",
          "since"
        ]
      },
      "CisConversion": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "quantity_numerator": {
            "type": "integer",
            "minimum": 1,
            "maximum": 1000000
          },
          "quantity_denominator": {
            "type": "integer",
            "minimum": 1,
            "maximum": 1000000
          },
          "package_numerator": {
            "type": "integer",
            "minimum": 1,
            "maximum": 1000000
          },
          "package_denominator": {
            "type": "integer",
            "minimum": 1,
            "maximum": 1000000
          },
          "reason": {
            "type": "string",
            "minLength": 1
          }
        },
        "required": [
          "quantity_numerator",
          "quantity_denominator",
          "package_numerator",
          "package_denominator",
          "reason"
        ]
      },
      "CisInboundDecision": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "branch": {
            "type": "string",
            "pattern": "^[0-9]{2}$"
          },
          "approve": {
            "type": "boolean"
          },
          "items": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "description": "Catalogue UUID per source line, in source order. Use [] when rejecting."
          },
          "invoice_number": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int64"
          },
          "purchase_code": {
            "type": [
              "string",
              "null"
            ]
          },
          "original_invoice_number": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int64",
            "description": "Original approved purchase invoice for a full supplier return."
          },
          "import_unit_costs": {
            "type": "array",
            "items": {
              "type": "number",
              "multipleOf": 0.01
            },
            "default": []
          },
          "reason": {
            "type": "string"
          },
          "conversions": {
            "type": "array",
            "items": {
              "anyOf": [
                {
                  "$ref": "#/components/schemas/CisConversion"
                },
                {
                  "type": "null"
                }
              ]
            },
            "default": []
          }
        },
        "required": [
          "branch",
          "approve",
          "items",
          "reason"
        ]
      },
      "CisReportQuery": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "branch": {
            "type": "string",
            "pattern": "^[0-9]{2}$"
          },
          "kind": {
            "type": "string",
            "enum": [
              "X",
              "Z",
              "PLU",
              "SALES",
              "STOCK",
              "PURCHASES",
              "IMPORTS",
              "ITEMS"
            ]
          },
          "from": {
            "type": "string",
            "format": "date"
          },
          "to": {
            "type": "string",
            "format": "date",
            "description": "Inclusive end, no later than today (Africa/Kigali)."
          }
        },
        "required": [
          "branch",
          "kind",
          "from",
          "to"
        ]
      },
      "CisCashEntry": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "branch": {
            "type": "string",
            "pattern": "^[0-9]{2}$"
          },
          "kind": {
            "type": "string",
            "enum": [
              "deposit",
              "withdrawal"
            ]
          },
          "amount": {
            "type": "number",
            "multipleOf": 0.01,
            "exclusiveMinimum": 0
          },
          "reason": {
            "type": "string",
            "minLength": 1
          }
        },
        "required": [
          "branch",
          "kind",
          "amount",
          "reason"
        ]
      },
      "ApiError": {
        "type": "object",
        "properties": {
          "success": {
            "const": false
          },
          "message": {
            "type": "string"
          },
          "code": {
            "type": "string",
            "description": "Optional machine-readable error code. BRANCH_BUSY identifies a lock conflict before the operation begins; retry the unchanged request/key after Retry-After. Other 409 responses are not automatically retryable."
          }
        },
        "required": [
          "success",
          "message"
        ]
      },
      "FiscalEnvelope": {
        "type": "object",
        "properties": {
          "resultCd": {
            "type": "string"
          },
          "resultMsg": {
            "type": [
              "string",
              "null"
            ]
          },
          "resultDt": {
            "type": [
              "string",
              "null"
            ]
          },
          "data": {
            "type": [
              "object",
              "null"
            ]
          }
        },
        "required": [
          "resultCd",
          "resultMsg",
          "resultDt"
        ]
      },
      "CisIssueSuccess": {
        "allOf": [
          {
            "$ref": "#/components/schemas/FiscalEnvelope"
          },
          {
            "type": "object",
            "properties": {
              "resultCd": {
                "const": "000"
              },
              "cisReceiptId": {
                "type": "string",
                "format": "uuid"
              },
              "data": {
                "$ref": "#/components/schemas/FiscalReceipt"
              }
            },
            "required": [
              "resultCd",
              "cisReceiptId",
              "data"
            ]
          }
        ],
        "description": "Issued fiscal response. data contains backend fiscal receipt fields; this does not establish upstream delivery."
      },
      "CisIssueResponse": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/CisIssueSuccess"
          },
          {
            "allOf": [
              {
                "$ref": "#/components/schemas/FiscalEnvelope"
              },
              {
                "type": "object",
                "properties": {
                  "resultCd": {
                    "type": "string",
                    "not": {
                      "const": "000"
                    }
                  }
                },
                "required": [
                  "resultCd"
                ]
              }
            ]
          }
        ]
      },
      "ReceiptSummary": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "invoice": {
            "type": "string"
          },
          "branch": {
            "type": [
              "string",
              "null"
            ]
          },
          "type": {
            "type": [
              "string",
              "null"
            ]
          },
          "created_at": {
            "type": "string"
          },
          "total": {
            "type": [
              "string",
              "null"
            ]
          },
          "status": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "invoice",
          "branch",
          "type",
          "created_at",
          "total",
          "status"
        ]
      },
      "ReceiptDetail": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "invoice": {
            "type": "string"
          },
          "branch": {
            "type": [
              "string",
              "null"
            ]
          },
          "request": {
            "type": [
              "object",
              "null"
            ]
          },
          "receipt": {
            "type": [
              "object",
              "null"
            ]
          },
          "receipt_number": {
            "type": [
              "string",
              "null"
            ]
          },
          "total_receipt_number": {
            "type": [
              "string",
              "null"
            ]
          },
          "signature": {
            "type": [
              "string",
              "null"
            ]
          },
          "internal_data": {
            "type": [
              "string",
              "null"
            ]
          },
          "published_at": {
            "type": [
              "string",
              "null"
            ]
          },
          "accepted_at": {
            "type": [
              "string",
              "null"
            ]
          },
          "status": {
            "type": "string",
            "description": "ACCEPTED confirms local-backend upstream delivery; VSDC_ISSUED confirms remote issuance only. Other values describe queue state."
          },
          "company": {
            "type": "string"
          },
          "backend": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "invoice",
          "branch",
          "request",
          "receipt",
          "receipt_number",
          "total_receipt_number",
          "signature",
          "internal_data",
          "published_at",
          "accepted_at",
          "status",
          "company",
          "backend"
        ]
      },
      "PrintSnapshot": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "request": {
            "type": "object"
          },
          "receipt": {
            "$ref": "#/components/schemas/FiscalReceipt"
          },
          "profile": {
            "type": "object"
          },
          "source_receipt_number": {
            "type": [
              "string",
              "null"
            ]
          },
          "version": {
            "type": [
              "string",
              "null"
            ]
          },
          "print_kind": {
            "const": "issued"
          }
        },
        "required": [
          "id",
          "request",
          "receipt",
          "profile",
          "source_receipt_number",
          "version",
          "print_kind"
        ]
      },
      "CatalogueEntry": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "body": {
            "type": "object"
          },
          "updated_at": {
            "type": "string"
          },
          "registered_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time",
            "description": "Time the current body was recorded as successfully registered with the configured fiscal backend. Null means registration is required; every catalogue save clears this value. Applies to body.bhfId, not all branches."
          },
          "version": {
            "type": "string",
            "format": "uuid",
            "description": "Opaque body version for conditional catalogue saves."
          }
        },
        "required": [
          "id",
          "body",
          "updated_at",
          "registered_at",
          "version"
        ]
      },
      "CatalogueSaved": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "message": {
            "type": "string"
          },
          "version": {
            "type": "string",
            "format": "uuid"
          }
        },
        "required": [
          "id",
          "message",
          "version"
        ]
      },
      "StockBalance": {
        "type": "object",
        "properties": {
          "item_id": {
            "type": "string",
            "format": "uuid"
          },
          "item": {
            "type": "object"
          },
          "quantity": {
            "type": "number"
          },
          "reserved": {
            "type": "number"
          },
          "available": {
            "type": "number"
          }
        },
        "required": [
          "item_id",
          "item",
          "quantity",
          "reserved",
          "available"
        ]
      },
      "StockOperation": {
        "type": "object",
        "properties": {
          "operation": {
            "type": "string",
            "format": "uuid"
          }
        },
        "required": [
          "operation"
        ]
      },
      "StockDelivery": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer"
          },
          "path": {
            "type": "string"
          },
          "state": {
            "type": "string"
          },
          "response": {
            "type": [
              "object",
              "null"
            ]
          },
          "created_at": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "path",
          "state",
          "response",
          "created_at"
        ]
      },
      "ReceiptSummaryList": {
        "type": "object",
        "required": [
          "data"
        ],
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReceiptSummary"
            }
          }
        }
      },
      "CatalogueEntryList": {
        "type": "object",
        "required": [
          "data",
          "next_after"
        ],
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CatalogueEntry"
            }
          },
          "next_after": {
            "type": [
              "string",
              "null"
            ]
          }
        }
      },
      "StockBalanceList": {
        "type": "object",
        "required": [
          "data"
        ],
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/StockBalance"
            }
          }
        }
      },
      "StockDeliveryList": {
        "type": "object",
        "required": [
          "data",
          "next_before_id"
        ],
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/StockDelivery"
            }
          },
          "next_before_id": {
            "type": [
              "string",
              "null"
            ],
            "pattern": "^[1-9][0-9]*$",
            "description": "Exclusive cursor for the next page, or null when exhausted."
          }
        }
      },
      "ReceiptDetailResult": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/ReceiptDetail"
          }
        },
        "required": [
          "data"
        ]
      },
      "PrintSnapshotResult": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/PrintSnapshot"
          }
        },
        "required": [
          "data"
        ]
      },
      "CatalogueSavedResult": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/CatalogueSaved"
          }
        },
        "required": [
          "data"
        ]
      },
      "StockOperationResult": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/StockOperation"
          }
        },
        "required": [
          "data"
        ]
      },
      "FiscalReceipt": {
        "type": "object",
        "required": [
          "intrlData",
          "rcptSign",
          "vsdcRcptPbctDate",
          "sdcId",
          "mrcNo",
          "rcptNo",
          "totRcptNo"
        ],
        "properties": {
          "intrlData": {
            "type": "string"
          },
          "rcptSign": {
            "type": "string"
          },
          "vsdcRcptPbctDate": {
            "type": "string"
          },
          "sdcId": {
            "type": "string"
          },
          "mrcNo": {
            "type": "string"
          },
          "rcptNo": {
            "type": "integer",
            "format": "int64"
          },
          "totRcptNo": {
            "type": "integer",
            "format": "int64"
          }
        },
        "description": "Training/proforma signatures can be empty. Counters are JSON integers: preserve 64-bit precision in your client."
      },
      "InboundResolution": {
        "type": "object",
        "required": [
          "input",
          "payload",
          "stock_lines",
          "response",
          "direction",
          "sar_type",
          "stock_reserved"
        ],
        "properties": {
          "input": {
            "type": "object"
          },
          "payload": {
            "type": "object"
          },
          "stock_lines": {
            "type": "array",
            "items": {
              "type": "object"
            }
          },
          "response": {
            "$ref": "#/components/schemas/FiscalEnvelope"
          },
          "direction": {
            "type": "integer"
          },
          "sar_type": {
            "type": "string"
          },
          "stock_reserved": {
            "type": "boolean"
          }
        },
        "description": "Inspect data.response.resultCd; HTTP 200 alone does not confirm approval. Consult inbound state and reconcile UNKNOWN before retry."
      },
      "InboundRecord": {
        "type": "object",
        "required": [
          "id",
          "kind",
          "body",
          "state",
          "resolution"
        ],
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "kind": {
            "type": "string"
          },
          "body": {
            "type": "object"
          },
          "state": {
            "type": "string"
          },
          "resolution": {
            "type": [
              "object",
              "null"
            ]
          }
        }
      },
      "CisReportTotals": {
        "type": "object",
        "properties": {
          "count": {
            "type": "integer",
            "format": "int64"
          },
          "gross": {
            "type": "integer",
            "format": "int64"
          },
          "tax": {
            "type": "integer",
            "format": "int64"
          },
          "discount": {
            "type": "integer",
            "format": "int64"
          },
          "items": {
            "type": "integer",
            "format": "int64"
          },
          "taxable": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int64"
            },
            "minItems": 4,
            "maxItems": 4
          },
          "taxes": {
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int64"
            },
            "minItems": 4,
            "maxItems": 4
          },
          "payments": {
            "type": "object",
            "additionalProperties": {
              "type": "integer",
              "format": "int64"
            }
          }
        },
        "required": [
          "count",
          "gross",
          "tax",
          "discount",
          "items",
          "taxable",
          "taxes",
          "payments"
        ],
        "description": "Amounts are integer cents. count is receipts; items is line count. Tax arrays are ordered A,B,C,D. Mode groups retain unsigned refund amounts; subtract NR from NS for net sales. Payments are keyed by payment code."
      },
      "CisReportCashBalance": {
        "type": "object",
        "properties": {
          "opening": {
            "type": "integer",
            "format": "int64"
          },
          "opening_deposit": {
            "type": "integer",
            "format": "int64"
          },
          "closing": {
            "type": "integer",
            "format": "int64"
          },
          "basis": {
            "type": "string"
          }
        },
        "required": [
          "opening",
          "opening_deposit",
          "closing",
          "basis"
        ]
      },
      "CisReportPlu": {
        "type": "object",
        "properties": {
          "item": {
            "type": "object"
          },
          "quantity_hundredths": {
            "type": "integer",
            "format": "int64"
          },
          "amount_cents": {
            "type": "integer",
            "format": "int64"
          },
          "remaining_quantity_hundredths": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int64"
          },
          "tax_rate": {
            "type": [
              "number",
              "null"
            ],
            "description": "Percentage from the immutable source receipt. Null when unavailable; absent in older saved report snapshots. Lines with different rates are separate."
          }
        },
        "required": [
          "item",
          "quantity_hundredths",
          "amount_cents",
          "remaining_quantity_hundredths"
        ]
      },
      "CisReportSnapshot": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "kind": {
            "type": "string",
            "enum": [
              "X",
              "Z",
              "PLU",
              "SALES",
              "STOCK",
              "PURCHASES",
              "IMPORTS",
              "ITEMS"
            ]
          },
          "profile": {
            "type": "object"
          },
          "tin": {
            "type": "string"
          },
          "version": {
            "type": "string"
          },
          "from": {
            "type": "string",
            "pattern": "^[0-9]{14}$",
            "description": "Kigali local timestamp YYYYMMDDhhmmss; from may be 00000000000000 for first X/Z period."
          },
          "to_exclusive": {
            "type": "string",
            "pattern": "^[0-9]{14}$",
            "description": "Kigali local timestamp YYYYMMDDhhmmss; from may be 00000000000000 for first X/Z period."
          },
          "generated_at": {
            "type": "string",
            "format": "date-time"
          },
          "catalogue": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "format": "uuid"
                },
                "item": {
                  "type": "object"
                },
                "registered_at": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "format": "date-time"
                }
              },
              "required": [
                "id",
                "item",
                "registered_at"
              ]
            }
          },
          "cash_balance_cents": {
            "$ref": "#/components/schemas/CisReportCashBalance"
          },
          "groups_cents": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/CisReportTotals"
            }
          },
          "cash": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "kind": {
                  "enum": [
                    "deposit",
                    "withdrawal"
                  ]
                },
                "amount_cents": {
                  "type": "integer",
                  "format": "int64"
                }
              },
              "required": [
                "kind",
                "amount_cents"
              ]
            }
          },
          "incomplete": {
            "type": "integer",
            "minimum": 0
          },
          "plu": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CisReportPlu"
            }
          },
          "closing_stock": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "item": {
                  "type": "object"
                },
                "quantity_hundredths": {
                  "type": "integer",
                  "format": "int64"
                }
              },
              "required": [
                "item",
                "quantity_hundredths"
              ]
            }
          },
          "receipts": {
            "type": "array",
            "items": {
              "type": "object"
            }
          },
          "inbound": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "kind": {
                  "type": "string"
                },
                "body": {
                  "type": "object"
                },
                "state": {
                  "type": "string"
                },
                "resolution": {
                  "type": [
                    "object",
                    "null"
                  ]
                }
              },
              "required": [
                "kind",
                "body",
                "state",
                "resolution"
              ]
            }
          },
          "rra_submission": {
            "type": "string"
          },
          "plu_categories": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CisReportPluCategory"
            },
            "description": "Net totals by historical item classification and quantity unit. Absent in older snapshots."
          }
        },
        "required": [
          "id",
          "kind",
          "profile",
          "tin",
          "version",
          "from",
          "to_exclusive",
          "generated_at",
          "catalogue",
          "cash_balance_cents",
          "groups_cents",
          "cash",
          "incomplete",
          "plu",
          "closing_stock",
          "receipts",
          "inbound",
          "rra_submission"
        ],
        "description": "Immutable saved local CIS report. rra_submission describes upstream status; generation does not constitute RRA submission. Catalogue is current at generation, not a historical catalogue reconstruction."
      },
      "CisReportHistoryEntry": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "branch": {
            "type": "string"
          },
          "kind": {
            "type": "string",
            "enum": [
              "X",
              "Z",
              "PLU",
              "SALES",
              "STOCK",
              "PURCHASES",
              "IMPORTS",
              "ITEMS"
            ]
          },
          "from": {
            "type": "string",
            "pattern": "^[0-9]{14}$",
            "description": "Kigali local timestamp YYYYMMDDhhmmss; from may be 00000000000000 for first X/Z period."
          },
          "to_exclusive": {
            "type": "string",
            "pattern": "^[0-9]{14}$",
            "description": "Kigali local timestamp YYYYMMDDhhmmss; from may be 00000000000000 for first X/Z period."
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "id",
          "branch",
          "kind",
          "from",
          "to_exclusive",
          "created_at"
        ]
      },
      "CisReportResult": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/components/schemas/CisReportSnapshot"
          }
        },
        "required": [
          "data"
        ]
      },
      "CisReportHistory": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CisReportHistoryEntry"
            }
          }
        },
        "required": [
          "data"
        ]
      },
      "CisCashResult": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "format": "uuid"
              }
            },
            "required": [
              "id"
            ]
          }
        },
        "required": [
          "data"
        ]
      },
      "VsdcBhfRes": {
        "type": [
          "object",
          "null"
        ],
        "properties": {
          "data": {
            "$ref": "#/components/schemas/VsdcBhfRes$CodeResData"
          },
          "resultCd": {
            "type": [
              "string",
              "null"
            ]
          },
          "resultDt": {
            "type": [
              "string",
              "null"
            ]
          },
          "resultMsg": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "description": "Fields reflected from supplied _9 WAR ebm.vsdc.execute.model.BhfRes. Unknown future fields are tolerated by this client contract.",
        "required": [
          "resultCd",
          "resultMsg",
          "resultDt"
        ]
      },
      "VsdcBhfRes$Bhf": {
        "type": [
          "object",
          "null"
        ],
        "properties": {
          "bhfId": {
            "type": [
              "string",
              "null"
            ]
          },
          "bhfNm": {
            "type": [
              "string",
              "null"
            ]
          },
          "bhfSttsCd": {
            "type": [
              "string",
              "null"
            ]
          },
          "dstrtNm": {
            "type": [
              "string",
              "null"
            ]
          },
          "hqYn": {
            "type": [
              "string",
              "null"
            ]
          },
          "locDesc": {
            "type": [
              "string",
              "null"
            ]
          },
          "mgrEmail": {
            "type": [
              "string",
              "null"
            ]
          },
          "mgrNm": {
            "type": [
              "string",
              "null"
            ]
          },
          "mgrTelNo": {
            "type": [
              "string",
              "null"
            ]
          },
          "prvncNm": {
            "type": [
              "string",
              "null"
            ]
          },
          "sctrNm": {
            "type": [
              "string",
              "null"
            ]
          },
          "tin": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "description": "Fields reflected from supplied _9 WAR ebm.vsdc.execute.model.BhfRes$Bhf. Unknown future fields are tolerated by this client contract.",
        "required": [
          "bhfId",
          "bhfNm",
          "bhfSttsCd",
          "dstrtNm",
          "hqYn",
          "locDesc",
          "mgrEmail",
          "mgrNm",
          "mgrTelNo",
          "prvncNm",
          "sctrNm",
          "tin"
        ]
      },
      "VsdcBhfRes$CodeResData": {
        "type": [
          "object",
          "null"
        ],
        "properties": {
          "bhfList": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/VsdcBhfRes$Bhf"
            }
          }
        },
        "description": "Fields reflected from supplied _9 WAR ebm.vsdc.execute.model.BhfRes$CodeResData. Unknown future fields are tolerated by this client contract.",
        "required": [
          "bhfList"
        ]
      },
      "VsdcCodeRes": {
        "type": [
          "object",
          "null"
        ],
        "properties": {
          "data": {
            "$ref": "#/components/schemas/VsdcCodeRes$CodeResData"
          },
          "resultCd": {
            "type": [
              "string",
              "null"
            ]
          },
          "resultDt": {
            "type": [
              "string",
              "null"
            ]
          },
          "resultMsg": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "description": "Fields reflected from supplied _9 WAR ebm.vsdc.execute.model.CodeRes. Unknown future fields are tolerated by this client contract.",
        "required": [
          "resultCd",
          "resultMsg",
          "resultDt"
        ]
      },
      "VsdcCodeRes$CodeClassLVO": {
        "type": [
          "object",
          "null"
        ],
        "properties": {
          "cdCls": {
            "type": [
              "string",
              "null"
            ]
          },
          "cdClsDesc": {
            "type": [
              "string",
              "null"
            ]
          },
          "cdClsNm": {
            "type": [
              "string",
              "null"
            ]
          },
          "dtlList": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/VsdcCodeRes$CodeDtlLVO"
            }
          },
          "useYn": {
            "type": [
              "string",
              "null"
            ]
          },
          "userDfnNm1": {
            "type": [
              "string",
              "null"
            ]
          },
          "userDfnNm2": {
            "type": [
              "string",
              "null"
            ]
          },
          "userDfnNm3": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "description": "Fields reflected from supplied _9 WAR ebm.vsdc.execute.model.CodeRes$CodeClassLVO. Unknown future fields are tolerated by this client contract.",
        "required": [
          "cdCls",
          "cdClsDesc",
          "cdClsNm",
          "dtlList",
          "useYn",
          "userDfnNm1",
          "userDfnNm2",
          "userDfnNm3"
        ]
      },
      "VsdcCodeRes$CodeDtlLVO": {
        "type": [
          "object",
          "null"
        ],
        "properties": {
          "cd": {
            "type": [
              "string",
              "null"
            ]
          },
          "cdDesc": {
            "type": [
              "string",
              "null"
            ]
          },
          "cdNm": {
            "type": [
              "string",
              "null"
            ]
          },
          "srtOrd": {
            "type": [
              "integer",
              "null"
            ]
          },
          "useYn": {
            "type": [
              "string",
              "null"
            ]
          },
          "userDfnCd1": {
            "type": [
              "string",
              "null"
            ]
          },
          "userDfnCd2": {
            "type": [
              "string",
              "null"
            ]
          },
          "userDfnCd3": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "description": "Fields reflected from supplied _9 WAR ebm.vsdc.execute.model.CodeRes$CodeDtlLVO. Unknown future fields are tolerated by this client contract.",
        "required": [
          "cd",
          "cdDesc",
          "cdNm",
          "srtOrd",
          "useYn",
          "userDfnCd1",
          "userDfnCd2",
          "userDfnCd3"
        ]
      },
      "VsdcCodeRes$CodeResData": {
        "type": [
          "object",
          "null"
        ],
        "properties": {
          "clsList": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/VsdcCodeRes$CodeClassLVO"
            }
          }
        },
        "description": "Fields reflected from supplied _9 WAR ebm.vsdc.execute.model.CodeRes$CodeResData. Unknown future fields are tolerated by this client contract.",
        "required": [
          "clsList"
        ]
      },
      "VsdcCustRes": {
        "type": [
          "object",
          "null"
        ],
        "properties": {
          "data": {
            "$ref": "#/components/schemas/VsdcCustRes$CustResData"
          },
          "resultCd": {
            "type": [
              "string",
              "null"
            ]
          },
          "resultDt": {
            "type": [
              "string",
              "null"
            ]
          },
          "resultMsg": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "description": "Fields reflected from supplied _9 WAR ebm.vsdc.execute.model.CustRes. Unknown future fields are tolerated by this client contract.",
        "required": [
          "resultCd",
          "resultMsg",
          "resultDt"
        ]
      },
      "VsdcCustRes$CustResData": {
        "type": [
          "object",
          "null"
        ],
        "properties": {
          "custList": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/VsdcCustRes$Customer"
            }
          }
        },
        "description": "Fields reflected from supplied _9 WAR ebm.vsdc.execute.model.CustRes$CustResData. Unknown future fields are tolerated by this client contract.",
        "required": [
          "custList"
        ]
      },
      "VsdcCustRes$Customer": {
        "type": [
          "object",
          "null"
        ],
        "properties": {
          "dstrtNm": {
            "type": [
              "string",
              "null"
            ]
          },
          "locDesc": {
            "type": [
              "string",
              "null"
            ]
          },
          "prvncNm": {
            "type": [
              "string",
              "null"
            ]
          },
          "sctrNm": {
            "type": [
              "string",
              "null"
            ]
          },
          "taxprNm": {
            "type": [
              "string",
              "null"
            ]
          },
          "taxprSttsCd": {
            "type": [
              "string",
              "null"
            ]
          },
          "tin": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "description": "Fields reflected from supplied _9 WAR ebm.vsdc.execute.model.CustRes$Customer. Unknown future fields are tolerated by this client contract.",
        "required": [
          "dstrtNm",
          "locDesc",
          "prvncNm",
          "sctrNm",
          "taxprNm",
          "taxprSttsCd",
          "tin"
        ]
      },
      "VsdcImportItemRes": {
        "type": [
          "object",
          "null"
        ],
        "properties": {
          "data": {
            "$ref": "#/components/schemas/VsdcImportItemRes$ImportItemResData"
          },
          "resultCd": {
            "type": [
              "string",
              "null"
            ]
          },
          "resultDt": {
            "type": [
              "string",
              "null"
            ]
          },
          "resultMsg": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "description": "Fields reflected from supplied _9 WAR ebm.vsdc.execute.model.ImportItemRes. Unknown future fields are tolerated by this client contract.",
        "required": [
          "resultCd",
          "resultMsg",
          "resultDt"
        ]
      },
      "VsdcImportItemRes$ImportItem": {
        "type": [
          "object",
          "null"
        ],
        "properties": {
          "agntNm": {
            "type": [
              "string",
              "null"
            ]
          },
          "dclDe": {
            "type": [
              "string",
              "null"
            ]
          },
          "dclNo": {
            "type": [
              "string",
              "null"
            ]
          },
          "exptNatCd": {
            "type": [
              "string",
              "null"
            ]
          },
          "hsCd": {
            "type": [
              "string",
              "null"
            ]
          },
          "imptItemsttsCd": {
            "type": [
              "string",
              "null"
            ]
          },
          "invcFcurAmt": {
            "type": [
              "number",
              "null"
            ],
            "description": "Decimal JSON number; preserve decimal precision when processing fiscal values."
          },
          "invcFcurCd": {
            "type": [
              "string",
              "null"
            ]
          },
          "invcFcurExcrt": {
            "type": [
              "number",
              "null"
            ],
            "description": "Decimal JSON number; preserve decimal precision when processing fiscal values."
          },
          "itemNm": {
            "type": [
              "string",
              "null"
            ]
          },
          "itemSeq": {
            "type": "integer"
          },
          "netWt": {
            "type": [
              "number",
              "null"
            ],
            "description": "Decimal JSON number; preserve decimal precision when processing fiscal values."
          },
          "orgnNatCd": {
            "type": [
              "string",
              "null"
            ]
          },
          "pkg": {
            "type": [
              "number",
              "null"
            ],
            "description": "Decimal JSON number; preserve decimal precision when processing fiscal values."
          },
          "pkgUnitCd": {
            "type": [
              "string",
              "null"
            ]
          },
          "qty": {
            "type": [
              "number",
              "null"
            ],
            "description": "Decimal JSON number; preserve decimal precision when processing fiscal values."
          },
          "qtyUnitCd": {
            "type": [
              "string",
              "null"
            ]
          },
          "spplrNm": {
            "type": [
              "string",
              "null"
            ]
          },
          "taskCd": {
            "type": [
              "string",
              "null"
            ]
          },
          "totWt": {
            "type": [
              "number",
              "null"
            ],
            "description": "Decimal JSON number; preserve decimal precision when processing fiscal values."
          }
        },
        "description": "Fields reflected from supplied _9 WAR ebm.vsdc.execute.model.ImportItemRes$ImportItem. Unknown future fields are tolerated by this client contract.",
        "required": [
          "agntNm",
          "dclDe",
          "dclNo",
          "exptNatCd",
          "hsCd",
          "imptItemsttsCd",
          "invcFcurAmt",
          "invcFcurCd",
          "invcFcurExcrt",
          "itemNm",
          "itemSeq",
          "netWt",
          "orgnNatCd",
          "pkg",
          "pkgUnitCd",
          "qty",
          "qtyUnitCd",
          "spplrNm",
          "taskCd",
          "totWt"
        ]
      },
      "VsdcImportItemRes$ImportItemResData": {
        "type": [
          "object",
          "null"
        ],
        "properties": {
          "itemList": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/VsdcImportItemRes$ImportItem"
            }
          }
        },
        "description": "Fields reflected from supplied _9 WAR ebm.vsdc.execute.model.ImportItemRes$ImportItemResData. Unknown future fields are tolerated by this client contract.",
        "required": [
          "itemList"
        ]
      },
      "VsdcInitInfoRes": {
        "type": [
          "object",
          "null"
        ],
        "properties": {
          "data": {
            "$ref": "#/components/schemas/VsdcInitInfoRes$InitInfoResData"
          },
          "resultCd": {
            "type": [
              "string",
              "null"
            ]
          },
          "resultDt": {
            "type": [
              "string",
              "null"
            ]
          },
          "resultMsg": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "description": "Fields reflected from supplied _9 WAR ebm.vsdc.execute.model.InitInfoRes. Unknown future fields are tolerated by this client contract.",
        "required": [
          "resultCd",
          "resultMsg",
          "resultDt"
        ]
      },
      "VsdcInitInfoRes$InitInfoResData": {
        "type": [
          "object",
          "null"
        ],
        "properties": {
          "info": {
            "$ref": "#/components/schemas/VsdcInitInfoRes$InitInfoVO"
          }
        },
        "description": "Fields reflected from supplied _9 WAR ebm.vsdc.execute.model.InitInfoRes$InitInfoResData. Unknown future fields are tolerated by this client contract.",
        "required": [
          "info"
        ]
      },
      "VsdcInitInfoRes$InitInfoVO": {
        "type": [
          "object",
          "null"
        ],
        "properties": {
          "bhfId": {
            "type": [
              "string",
              "null"
            ]
          },
          "bhfNm": {
            "type": [
              "string",
              "null"
            ]
          },
          "bhfOpenDt": {
            "type": [
              "string",
              "null"
            ]
          },
          "bsnsActv": {
            "type": [
              "string",
              "null"
            ]
          },
          "cmcKey": {
            "type": [
              "string",
              "null"
            ]
          },
          "dstrtNm": {
            "type": [
              "string",
              "null"
            ]
          },
          "dvcId": {
            "type": [
              "string",
              "null"
            ]
          },
          "hqYn": {
            "type": [
              "string",
              "null"
            ]
          },
          "intrlKey": {
            "type": [
              "string",
              "null"
            ]
          },
          "lastCopyInvcNo": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int64"
          },
          "lastInvcNo": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int64"
          },
          "lastPchsInvcNo": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int64"
          },
          "lastProfrmInvcNo": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int64"
          },
          "lastSaleInvcNo": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int64"
          },
          "lastSaleRcptNo": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int64"
          },
          "lastTrainInvcNo": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int64"
          },
          "locDesc": {
            "type": [
              "string",
              "null"
            ]
          },
          "mgrEmail": {
            "type": [
              "string",
              "null"
            ]
          },
          "mgrNm": {
            "type": [
              "string",
              "null"
            ]
          },
          "mgrTelNo": {
            "type": [
              "string",
              "null"
            ]
          },
          "mrcNo": {
            "type": [
              "string",
              "null"
            ]
          },
          "prvncNm": {
            "type": [
              "string",
              "null"
            ]
          },
          "sctrNm": {
            "type": [
              "string",
              "null"
            ]
          },
          "sdcId": {
            "type": [
              "string",
              "null"
            ]
          },
          "signKey": {
            "type": [
              "string",
              "null"
            ]
          },
          "taxprNm": {
            "type": [
              "string",
              "null"
            ]
          },
          "tin": {
            "type": [
              "string",
              "null"
            ]
          },
          "vatTyCd": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int64"
          }
        },
        "description": "Fields reflected from supplied _9 WAR ebm.vsdc.execute.model.InitInfoRes$InitInfoVO. Unknown future fields are tolerated by this client contract.",
        "required": [
          "bhfId",
          "bhfNm",
          "bhfOpenDt",
          "bsnsActv",
          "cmcKey",
          "dstrtNm",
          "dvcId",
          "hqYn",
          "intrlKey",
          "lastCopyInvcNo",
          "lastInvcNo",
          "lastPchsInvcNo",
          "lastProfrmInvcNo",
          "lastSaleInvcNo",
          "lastSaleRcptNo",
          "lastTrainInvcNo",
          "locDesc",
          "mgrEmail",
          "mgrNm",
          "mgrTelNo",
          "mrcNo",
          "prvncNm",
          "sctrNm",
          "sdcId",
          "signKey",
          "taxprNm",
          "tin",
          "vatTyCd"
        ]
      },
      "VsdcItemClsRes": {
        "type": [
          "object",
          "null"
        ],
        "properties": {
          "data": {
            "$ref": "#/components/schemas/VsdcItemClsRes$ItemClsResData"
          },
          "resultCd": {
            "type": [
              "string",
              "null"
            ]
          },
          "resultDt": {
            "type": [
              "string",
              "null"
            ]
          },
          "resultMsg": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "description": "Fields reflected from supplied _9 WAR ebm.vsdc.execute.model.ItemClsRes. Unknown future fields are tolerated by this client contract.",
        "required": [
          "resultCd",
          "resultMsg",
          "resultDt"
        ]
      },
      "VsdcItemClsRes$ItemClassLVO": {
        "type": [
          "object",
          "null"
        ],
        "properties": {
          "itemClsCd": {
            "type": [
              "string",
              "null"
            ]
          },
          "itemClsLvl": {
            "type": [
              "integer",
              "null"
            ]
          },
          "itemClsNm": {
            "type": [
              "string",
              "null"
            ]
          },
          "mjrTgYn": {
            "type": [
              "string",
              "null"
            ]
          },
          "taxTyCd": {
            "type": [
              "string",
              "null"
            ]
          },
          "useYn": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "description": "Fields reflected from supplied _9 WAR ebm.vsdc.execute.model.ItemClsRes$ItemClassLVO. Unknown future fields are tolerated by this client contract.",
        "required": [
          "itemClsCd",
          "itemClsLvl",
          "itemClsNm",
          "mjrTgYn",
          "taxTyCd",
          "useYn"
        ]
      },
      "VsdcItemClsRes$ItemClsResData": {
        "type": [
          "object",
          "null"
        ],
        "properties": {
          "itemClsList": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/VsdcItemClsRes$ItemClassLVO"
            }
          }
        },
        "description": "Fields reflected from supplied _9 WAR ebm.vsdc.execute.model.ItemClsRes$ItemClsResData. Unknown future fields are tolerated by this client contract.",
        "required": [
          "itemClsList"
        ]
      },
      "VsdcItemRes": {
        "type": [
          "object",
          "null"
        ],
        "properties": {
          "data": {
            "$ref": "#/components/schemas/VsdcItemRes$ItemResData"
          },
          "resultCd": {
            "type": [
              "string",
              "null"
            ]
          },
          "resultDt": {
            "type": [
              "string",
              "null"
            ]
          },
          "resultMsg": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "description": "Fields reflected from supplied _9 WAR ebm.vsdc.execute.model.ItemRes. Unknown future fields are tolerated by this client contract.",
        "required": [
          "resultCd",
          "resultMsg",
          "resultDt"
        ]
      },
      "VsdcItemRes$Item": {
        "type": [
          "object",
          "null"
        ],
        "properties": {
          "addInfo": {
            "type": [
              "string",
              "null"
            ]
          },
          "bcd": {
            "type": [
              "string",
              "null"
            ]
          },
          "btchNo": {
            "type": [
              "string",
              "null"
            ]
          },
          "dftPrc": {
            "type": [
              "number",
              "null"
            ],
            "description": "Decimal JSON number; preserve decimal precision when processing fiscal values."
          },
          "grpPrcL1": {
            "type": [
              "number",
              "null"
            ],
            "description": "Decimal JSON number; preserve decimal precision when processing fiscal values."
          },
          "grpPrcL2": {
            "type": [
              "number",
              "null"
            ],
            "description": "Decimal JSON number; preserve decimal precision when processing fiscal values."
          },
          "grpPrcL3": {
            "type": [
              "number",
              "null"
            ],
            "description": "Decimal JSON number; preserve decimal precision when processing fiscal values."
          },
          "grpPrcL4": {
            "type": [
              "number",
              "null"
            ],
            "description": "Decimal JSON number; preserve decimal precision when processing fiscal values."
          },
          "grpPrcL5": {
            "type": [
              "number",
              "null"
            ],
            "description": "Decimal JSON number; preserve decimal precision when processing fiscal values."
          },
          "isrcAplcbYn": {
            "type": [
              "string",
              "null"
            ]
          },
          "itemCd": {
            "type": [
              "string",
              "null"
            ]
          },
          "itemClsCd": {
            "type": [
              "string",
              "null"
            ]
          },
          "itemNm": {
            "type": [
              "string",
              "null"
            ]
          },
          "itemStdNm": {
            "type": [
              "string",
              "null"
            ]
          },
          "itemTyCd": {
            "type": [
              "string",
              "null"
            ]
          },
          "orgnNatCd": {
            "type": [
              "string",
              "null"
            ]
          },
          "pkgUnitCd": {
            "type": [
              "string",
              "null"
            ]
          },
          "qtyUnitCd": {
            "type": [
              "string",
              "null"
            ]
          },
          "regBhfId": {
            "type": [
              "string",
              "null"
            ]
          },
          "rraModYn": {
            "type": [
              "string",
              "null"
            ]
          },
          "sftyQty": {
            "type": [
              "number",
              "null"
            ],
            "description": "Decimal JSON number; preserve decimal precision when processing fiscal values."
          },
          "taxTyCd": {
            "type": [
              "string",
              "null"
            ]
          },
          "tin": {
            "type": [
              "string",
              "null"
            ]
          },
          "useYn": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "description": "Fields reflected from supplied _9 WAR ebm.vsdc.execute.model.ItemRes$Item. Unknown future fields are tolerated by this client contract.",
        "required": [
          "addInfo",
          "bcd",
          "btchNo",
          "dftPrc",
          "grpPrcL1",
          "grpPrcL2",
          "grpPrcL3",
          "grpPrcL4",
          "grpPrcL5",
          "isrcAplcbYn",
          "itemCd",
          "itemClsCd",
          "itemNm",
          "itemStdNm",
          "itemTyCd",
          "orgnNatCd",
          "pkgUnitCd",
          "qtyUnitCd",
          "regBhfId",
          "rraModYn",
          "sftyQty",
          "taxTyCd",
          "tin",
          "useYn"
        ]
      },
      "VsdcItemRes$ItemResData": {
        "type": [
          "object",
          "null"
        ],
        "properties": {
          "itemList": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/VsdcItemRes$Item"
            }
          }
        },
        "description": "Fields reflected from supplied _9 WAR ebm.vsdc.execute.model.ItemRes$ItemResData. Unknown future fields are tolerated by this client contract.",
        "required": [
          "itemList"
        ]
      },
      "VsdcNoticeRes": {
        "type": [
          "object",
          "null"
        ],
        "properties": {
          "data": {
            "$ref": "#/components/schemas/VsdcNoticeRes$NoticeResData"
          },
          "resultCd": {
            "type": [
              "string",
              "null"
            ]
          },
          "resultDt": {
            "type": [
              "string",
              "null"
            ]
          },
          "resultMsg": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "description": "Fields reflected from supplied _9 WAR ebm.vsdc.execute.model.NoticeRes. Unknown future fields are tolerated by this client contract.",
        "required": [
          "resultCd",
          "resultMsg",
          "resultDt"
        ]
      },
      "VsdcNoticeRes$Notice": {
        "type": [
          "object",
          "null"
        ],
        "properties": {
          "cont": {
            "type": [
              "string",
              "null"
            ]
          },
          "dtlUrl": {
            "type": [
              "string",
              "null"
            ]
          },
          "noticeNo": {
            "type": "integer"
          },
          "regDt": {
            "type": [
              "string",
              "null"
            ]
          },
          "regrNm": {
            "type": [
              "string",
              "null"
            ]
          },
          "title": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "description": "Fields reflected from supplied _9 WAR ebm.vsdc.execute.model.NoticeRes$Notice. Unknown future fields are tolerated by this client contract.",
        "required": [
          "cont",
          "dtlUrl",
          "noticeNo",
          "regDt",
          "regrNm",
          "title"
        ]
      },
      "VsdcNoticeRes$NoticeResData": {
        "type": [
          "object",
          "null"
        ],
        "properties": {
          "noticeList": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/VsdcNoticeRes$Notice"
            }
          }
        },
        "description": "Fields reflected from supplied _9 WAR ebm.vsdc.execute.model.NoticeRes$NoticeResData. Unknown future fields are tolerated by this client contract.",
        "required": [
          "noticeList"
        ]
      },
      "VsdcReportZCheckRes": {
        "type": [
          "object",
          "null"
        ],
        "properties": {
          "data": {
            "$ref": "#/components/schemas/VsdcReportZCheckRes$ReportZCheckResData"
          },
          "resultCd": {
            "type": [
              "string",
              "null"
            ]
          },
          "resultDt": {
            "type": [
              "string",
              "null"
            ]
          },
          "resultMsg": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "description": "Fields reflected from supplied _9 WAR ebm.vsdc.execute.model.ReportZCheckRes. Unknown future fields are tolerated by this client contract.",
        "required": [
          "resultCd",
          "resultMsg",
          "resultDt"
        ]
      },
      "VsdcReportZCheckRes$ReportZCheckData": {
        "type": [
          "object",
          "null"
        ],
        "properties": {
          "cpyRcptClsNo": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int64"
          },
          "cpyRcptOpnNo": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int64"
          },
          "cpyRcptPbctCnt": {
            "type": [
              "integer",
              "null"
            ]
          },
          "cpyRfdAmt": {
            "type": [
              "number",
              "null"
            ],
            "description": "Decimal JSON number; preserve decimal precision when processing fiscal values."
          },
          "cpyRfdTaxAmt": {
            "type": [
              "number",
              "null"
            ],
            "description": "Decimal JSON number; preserve decimal precision when processing fiscal values."
          },
          "cpySalesAmt": {
            "type": [
              "number",
              "null"
            ],
            "description": "Decimal JSON number; preserve decimal precision when processing fiscal values."
          },
          "cpySalesTaxAmt": {
            "type": [
              "number",
              "null"
            ],
            "description": "Decimal JSON number; preserve decimal precision when processing fiscal values."
          },
          "nrmRcptClsNo": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int64"
          },
          "nrmRcptOpnNo": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int64"
          },
          "nrmRcptPbctCnt": {
            "type": [
              "integer",
              "null"
            ]
          },
          "nrmRfdAmt": {
            "type": [
              "number",
              "null"
            ],
            "description": "Decimal JSON number; preserve decimal precision when processing fiscal values."
          },
          "nrmRfdTaxAmt": {
            "type": [
              "number",
              "null"
            ],
            "description": "Decimal JSON number; preserve decimal precision when processing fiscal values."
          },
          "nrmSalesAmt": {
            "type": [
              "number",
              "null"
            ],
            "description": "Decimal JSON number; preserve decimal precision when processing fiscal values."
          },
          "nrmSalesTaxAmt": {
            "type": [
              "number",
              "null"
            ],
            "description": "Decimal JSON number; preserve decimal precision when processing fiscal values."
          },
          "pfmRcptClsNo": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int64"
          },
          "pfmRcptOpnNo": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int64"
          },
          "pfmRcptPbctCnt": {
            "type": [
              "integer",
              "null"
            ]
          },
          "pfmRfdAmt": {
            "type": [
              "number",
              "null"
            ],
            "description": "Decimal JSON number; preserve decimal precision when processing fiscal values."
          },
          "pfmRfdTaxAmt": {
            "type": [
              "number",
              "null"
            ],
            "description": "Decimal JSON number; preserve decimal precision when processing fiscal values."
          },
          "pfmSalesAmt": {
            "type": [
              "number",
              "null"
            ],
            "description": "Decimal JSON number; preserve decimal precision when processing fiscal values."
          },
          "pfmSalesTaxAmt": {
            "type": [
              "number",
              "null"
            ],
            "description": "Decimal JSON number; preserve decimal precision when processing fiscal values."
          },
          "rcptClsNo": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int64"
          },
          "rcptOpnNo": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int64"
          },
          "rcptPbctCnt": {
            "type": [
              "integer",
              "null"
            ]
          },
          "trnRcptClsNo": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int64"
          },
          "trnRcptOpnNo": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int64"
          },
          "trnRcptPbctCnt": {
            "type": [
              "integer",
              "null"
            ]
          },
          "trnRfdAmt": {
            "type": [
              "number",
              "null"
            ],
            "description": "Decimal JSON number; preserve decimal precision when processing fiscal values."
          },
          "trnRfdTaxAmt": {
            "type": [
              "number",
              "null"
            ],
            "description": "Decimal JSON number; preserve decimal precision when processing fiscal values."
          },
          "trnSalesAmt": {
            "type": [
              "number",
              "null"
            ],
            "description": "Decimal JSON number; preserve decimal precision when processing fiscal values."
          },
          "trnSalesTaxAmt": {
            "type": [
              "number",
              "null"
            ],
            "description": "Decimal JSON number; preserve decimal precision when processing fiscal values."
          }
        },
        "description": "Fields reflected from supplied _9 WAR ebm.vsdc.execute.model.ReportZCheckRes$ReportZCheckData. Unknown future fields are tolerated by this client contract.",
        "required": [
          "cpyRcptClsNo",
          "cpyRcptOpnNo",
          "cpyRcptPbctCnt",
          "cpyRfdAmt",
          "cpyRfdTaxAmt",
          "cpySalesAmt",
          "cpySalesTaxAmt",
          "nrmRcptClsNo",
          "nrmRcptOpnNo",
          "nrmRcptPbctCnt",
          "nrmRfdAmt",
          "nrmRfdTaxAmt",
          "nrmSalesAmt",
          "nrmSalesTaxAmt",
          "pfmRcptClsNo",
          "pfmRcptOpnNo",
          "pfmRcptPbctCnt",
          "pfmRfdAmt",
          "pfmRfdTaxAmt",
          "pfmSalesAmt",
          "pfmSalesTaxAmt",
          "rcptClsNo",
          "rcptOpnNo",
          "rcptPbctCnt",
          "trnRcptClsNo",
          "trnRcptOpnNo",
          "trnRcptPbctCnt",
          "trnRfdAmt",
          "trnRfdTaxAmt",
          "trnSalesAmt",
          "trnSalesTaxAmt"
        ]
      },
      "VsdcReportZCheckRes$ReportZCheckResData": {
        "type": [
          "object",
          "null"
        ],
        "properties": {
          "checkCode": {
            "type": [
              "string",
              "null"
            ]
          },
          "rcptRpt": {
            "$ref": "#/components/schemas/VsdcReportZCheckRes$ReportZCheckData"
          },
          "zrpt": {
            "$ref": "#/components/schemas/VsdcReportZCheckRes$ReportZCheckData"
          }
        },
        "description": "Fields reflected from supplied _9 WAR ebm.vsdc.execute.model.ReportZCheckRes$ReportZCheckResData. Unknown future fields are tolerated by this client contract.",
        "required": [
          "checkCode",
          "rcptRpt",
          "zrpt"
        ]
      },
      "VsdcStockMoveRes": {
        "type": [
          "object",
          "null"
        ],
        "properties": {
          "data": {
            "$ref": "#/components/schemas/VsdcStockMoveRes$StockMoveResData"
          },
          "resultCd": {
            "type": [
              "string",
              "null"
            ]
          },
          "resultDt": {
            "type": [
              "string",
              "null"
            ]
          },
          "resultMsg": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "description": "Fields reflected from supplied _9 WAR ebm.vsdc.execute.model.StockMoveRes. Unknown future fields are tolerated by this client contract.",
        "required": [
          "resultCd",
          "resultMsg",
          "resultDt"
        ]
      },
      "VsdcStockMoveRes$StockMove": {
        "type": [
          "object",
          "null"
        ],
        "properties": {
          "custBhfId": {
            "type": [
              "string",
              "null"
            ]
          },
          "custTin": {
            "type": [
              "string",
              "null"
            ]
          },
          "itemList": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/VsdcStockMoveRes$StockMoveItem"
            }
          },
          "ocrnDt": {
            "type": [
              "string",
              "null"
            ]
          },
          "remark": {
            "type": [
              "string",
              "null"
            ]
          },
          "sarNo": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int64"
          },
          "totAmt": {
            "type": [
              "number",
              "null"
            ],
            "description": "Decimal JSON number; preserve decimal precision when processing fiscal values."
          },
          "totItemCnt": {
            "type": [
              "integer",
              "null"
            ]
          },
          "totTaxAmt": {
            "type": [
              "number",
              "null"
            ],
            "description": "Decimal JSON number; preserve decimal precision when processing fiscal values."
          },
          "totTaxblAmt": {
            "type": [
              "number",
              "null"
            ],
            "description": "Decimal JSON number; preserve decimal precision when processing fiscal values."
          }
        },
        "description": "Fields reflected from supplied _9 WAR ebm.vsdc.execute.model.StockMoveRes$StockMove. Unknown future fields are tolerated by this client contract.",
        "required": [
          "custBhfId",
          "custTin",
          "itemList",
          "ocrnDt",
          "remark",
          "sarNo",
          "totAmt",
          "totItemCnt",
          "totTaxAmt",
          "totTaxblAmt"
        ]
      },
      "VsdcStockMoveRes$StockMoveItem": {
        "type": [
          "object",
          "null"
        ],
        "properties": {
          "bcd": {
            "type": [
              "string",
              "null"
            ]
          },
          "itemCd": {
            "type": [
              "string",
              "null"
            ]
          },
          "itemClsCd": {
            "type": [
              "string",
              "null"
            ]
          },
          "itemExprDt": {
            "type": [
              "string",
              "null"
            ]
          },
          "itemNm": {
            "type": [
              "string",
              "null"
            ]
          },
          "itemSeq": {
            "type": [
              "integer",
              "null"
            ]
          },
          "pkg": {
            "type": [
              "number",
              "null"
            ],
            "description": "Decimal JSON number; preserve decimal precision when processing fiscal values."
          },
          "pkgUnitCd": {
            "type": [
              "string",
              "null"
            ]
          },
          "prc": {
            "type": [
              "number",
              "null"
            ],
            "description": "Decimal JSON number; preserve decimal precision when processing fiscal values."
          },
          "qty": {
            "type": [
              "number",
              "null"
            ],
            "description": "Decimal JSON number; preserve decimal precision when processing fiscal values."
          },
          "qtyUnitCd": {
            "type": [
              "string",
              "null"
            ]
          },
          "splyAmt": {
            "type": [
              "number",
              "null"
            ],
            "description": "Decimal JSON number; preserve decimal precision when processing fiscal values."
          },
          "taxAmt": {
            "type": [
              "number",
              "null"
            ],
            "description": "Decimal JSON number; preserve decimal precision when processing fiscal values."
          },
          "taxTyCd": {
            "type": [
              "string",
              "null"
            ]
          },
          "taxblAmt": {
            "type": [
              "number",
              "null"
            ],
            "description": "Decimal JSON number; preserve decimal precision when processing fiscal values."
          },
          "totAmt": {
            "type": [
              "number",
              "null"
            ],
            "description": "Decimal JSON number; preserve decimal precision when processing fiscal values."
          },
          "totDcAmt": {
            "type": [
              "number",
              "null"
            ],
            "description": "Decimal JSON number; preserve decimal precision when processing fiscal values."
          }
        },
        "description": "Fields reflected from supplied _9 WAR ebm.vsdc.execute.model.StockMoveRes$StockMoveItem. Unknown future fields are tolerated by this client contract.",
        "required": [
          "bcd",
          "itemCd",
          "itemClsCd",
          "itemExprDt",
          "itemNm",
          "itemSeq",
          "pkg",
          "pkgUnitCd",
          "prc",
          "qty",
          "qtyUnitCd",
          "splyAmt",
          "taxAmt",
          "taxTyCd",
          "taxblAmt",
          "totAmt",
          "totDcAmt"
        ]
      },
      "VsdcStockMoveRes$StockMoveResData": {
        "type": [
          "object",
          "null"
        ],
        "properties": {
          "stockList": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/VsdcStockMoveRes$StockMove"
            }
          }
        },
        "description": "Fields reflected from supplied _9 WAR ebm.vsdc.execute.model.StockMoveRes$StockMoveResData. Unknown future fields are tolerated by this client contract.",
        "required": [
          "stockList"
        ]
      },
      "VsdcTestEchoRes": {
        "type": [
          "object",
          "null"
        ],
        "properties": {
          "data": {
            "$ref": "#/components/schemas/VsdcTestEchoRes$TestEchoResData"
          },
          "resultCd": {
            "type": [
              "string",
              "null"
            ]
          },
          "resultDt": {
            "type": [
              "string",
              "null"
            ]
          },
          "resultMsg": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "description": "Fields reflected from supplied _9 WAR ebm.vsdc.execute.model.TestEchoRes. Unknown future fields are tolerated by this client contract.",
        "required": [
          "resultCd",
          "resultMsg",
          "resultDt"
        ]
      },
      "VsdcTestEchoRes$TestEchoResData": {
        "type": [
          "object",
          "null"
        ],
        "properties": {
          "testStr": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "description": "Fields reflected from supplied _9 WAR ebm.vsdc.execute.model.TestEchoRes$TestEchoResData. Unknown future fields are tolerated by this client contract.",
        "required": [
          "testStr"
        ]
      },
      "VsdcTrnsPurchaseSalesRes": {
        "type": [
          "object",
          "null"
        ],
        "properties": {
          "data": {
            "$ref": "#/components/schemas/VsdcTrnsPurchaseSalesRes$TrnsPurchaseSalesResData"
          },
          "resultCd": {
            "type": [
              "string",
              "null"
            ]
          },
          "resultDt": {
            "type": [
              "string",
              "null"
            ]
          },
          "resultMsg": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "description": "Fields reflected from supplied _9 WAR ebm.vsdc.execute.model.TrnsPurchaseSalesRes. Unknown future fields are tolerated by this client contract.",
        "required": [
          "resultCd",
          "resultMsg",
          "resultDt"
        ]
      },
      "VsdcTrnsPurchaseSalesRes$TrnsPurchaseSales": {
        "type": [
          "object",
          "null"
        ],
        "properties": {
          "cfmDt": {
            "type": [
              "string",
              "null"
            ]
          },
          "itemList": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/VsdcTrnsPurchaseSalesRes$TrnsPurchaseSalesItem"
            }
          },
          "pmtTyCd": {
            "type": [
              "string",
              "null"
            ]
          },
          "rcptTyCd": {
            "type": [
              "string",
              "null"
            ]
          },
          "remark": {
            "type": [
              "string",
              "null"
            ]
          },
          "salesDt": {
            "type": [
              "string",
              "null"
            ]
          },
          "spplrBhfId": {
            "type": [
              "string",
              "null"
            ]
          },
          "spplrInvcNo": {
            "type": [
              "integer",
              "null"
            ],
            "format": "int64"
          },
          "spplrNm": {
            "type": [
              "string",
              "null"
            ]
          },
          "spplrTin": {
            "type": [
              "string",
              "null"
            ]
          },
          "stockRlsDt": {
            "type": [
              "string",
              "null"
            ]
          },
          "taxAmtA": {
            "type": [
              "number",
              "null"
            ],
            "description": "Decimal JSON number; preserve decimal precision when processing fiscal values."
          },
          "taxAmtB": {
            "type": [
              "number",
              "null"
            ],
            "description": "Decimal JSON number; preserve decimal precision when processing fiscal values."
          },
          "taxAmtC": {
            "type": [
              "number",
              "null"
            ],
            "description": "Decimal JSON number; preserve decimal precision when processing fiscal values."
          },
          "taxAmtD": {
            "type": [
              "number",
              "null"
            ],
            "description": "Decimal JSON number; preserve decimal precision when processing fiscal values."
          },
          "taxRtA": {
            "type": [
              "number",
              "null"
            ],
            "description": "Decimal JSON number; preserve decimal precision when processing fiscal values."
          },
          "taxRtB": {
            "type": [
              "number",
              "null"
            ],
            "description": "Decimal JSON number; preserve decimal precision when processing fiscal values."
          },
          "taxRtC": {
            "type": [
              "number",
              "null"
            ],
            "description": "Decimal JSON number; preserve decimal precision when processing fiscal values."
          },
          "taxRtD": {
            "type": [
              "number",
              "null"
            ],
            "description": "Decimal JSON number; preserve decimal precision when processing fiscal values."
          },
          "taxblAmtA": {
            "type": [
              "number",
              "null"
            ],
            "description": "Decimal JSON number; preserve decimal precision when processing fiscal values."
          },
          "taxblAmtB": {
            "type": [
              "number",
              "null"
            ],
            "description": "Decimal JSON number; preserve decimal precision when processing fiscal values."
          },
          "taxblAmtC": {
            "type": [
              "number",
              "null"
            ],
            "description": "Decimal JSON number; preserve decimal precision when processing fiscal values."
          },
          "taxblAmtD": {
            "type": [
              "number",
              "null"
            ],
            "description": "Decimal JSON number; preserve decimal precision when processing fiscal values."
          },
          "totAmt": {
            "type": [
              "number",
              "null"
            ],
            "description": "Decimal JSON number; preserve decimal precision when processing fiscal values."
          },
          "totItemCnt": {
            "type": [
              "integer",
              "null"
            ]
          },
          "totTaxAmt": {
            "type": [
              "number",
              "null"
            ],
            "description": "Decimal JSON number; preserve decimal precision when processing fiscal values."
          },
          "totTaxblAmt": {
            "type": [
              "number",
              "null"
            ],
            "description": "Decimal JSON number; preserve decimal precision when processing fiscal values."
          }
        },
        "description": "Fields reflected from supplied _9 WAR ebm.vsdc.execute.model.TrnsPurchaseSalesRes$TrnsPurchaseSales. Unknown future fields are tolerated by this client contract.",
        "required": [
          "cfmDt",
          "itemList",
          "pmtTyCd",
          "rcptTyCd",
          "remark",
          "salesDt",
          "spplrBhfId",
          "spplrInvcNo",
          "spplrNm",
          "spplrTin",
          "stockRlsDt",
          "taxAmtA",
          "taxAmtB",
          "taxAmtC",
          "taxAmtD",
          "taxRtA",
          "taxRtB",
          "taxRtC",
          "taxRtD",
          "taxblAmtA",
          "taxblAmtB",
          "taxblAmtC",
          "taxblAmtD",
          "totAmt",
          "totItemCnt",
          "totTaxAmt",
          "totTaxblAmt"
        ]
      },
      "VsdcTrnsPurchaseSalesRes$TrnsPurchaseSalesItem": {
        "type": [
          "object",
          "null"
        ],
        "properties": {
          "bcd": {
            "type": [
              "string",
              "null"
            ]
          },
          "dcAmt": {
            "type": [
              "number",
              "null"
            ],
            "description": "Decimal JSON number; preserve decimal precision when processing fiscal values."
          },
          "dcRt": {
            "type": [
              "number",
              "null"
            ],
            "description": "Decimal JSON number; preserve decimal precision when processing fiscal values."
          },
          "itemCd": {
            "type": [
              "string",
              "null"
            ]
          },
          "itemClsCd": {
            "type": [
              "string",
              "null"
            ]
          },
          "itemNm": {
            "type": [
              "string",
              "null"
            ]
          },
          "itemSeq": {
            "type": [
              "integer",
              "null"
            ]
          },
          "pkg": {
            "type": [
              "number",
              "null"
            ],
            "description": "Decimal JSON number; preserve decimal precision when processing fiscal values."
          },
          "pkgUnitCd": {
            "type": [
              "string",
              "null"
            ]
          },
          "prc": {
            "type": [
              "number",
              "null"
            ],
            "description": "Decimal JSON number; preserve decimal precision when processing fiscal values."
          },
          "qty": {
            "type": [
              "number",
              "null"
            ],
            "description": "Decimal JSON number; preserve decimal precision when processing fiscal values."
          },
          "qtyUnitCd": {
            "type": [
              "string",
              "null"
            ]
          },
          "splyAmt": {
            "type": [
              "number",
              "null"
            ],
            "description": "Decimal JSON number; preserve decimal precision when processing fiscal values."
          },
          "taxAmt": {
            "type": [
              "number",
              "null"
            ],
            "description": "Decimal JSON number; preserve decimal precision when processing fiscal values."
          },
          "taxTyCd": {
            "type": [
              "string",
              "null"
            ]
          },
          "taxblAmt": {
            "type": [
              "number",
              "null"
            ],
            "description": "Decimal JSON number; preserve decimal precision when processing fiscal values."
          },
          "totAmt": {
            "type": [
              "number",
              "null"
            ],
            "description": "Decimal JSON number; preserve decimal precision when processing fiscal values."
          }
        },
        "description": "Fields reflected from supplied _9 WAR ebm.vsdc.execute.model.TrnsPurchaseSalesRes$TrnsPurchaseSalesItem. Unknown future fields are tolerated by this client contract.",
        "required": [
          "bcd",
          "dcAmt",
          "dcRt",
          "itemCd",
          "itemClsCd",
          "itemNm",
          "itemSeq",
          "pkg",
          "pkgUnitCd",
          "prc",
          "qty",
          "qtyUnitCd",
          "splyAmt",
          "taxAmt",
          "taxTyCd",
          "taxblAmt",
          "totAmt"
        ]
      },
      "VsdcTrnsPurchaseSalesRes$TrnsPurchaseSalesResData": {
        "type": [
          "object",
          "null"
        ],
        "properties": {
          "saleList": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/VsdcTrnsPurchaseSalesRes$TrnsPurchaseSales"
            }
          }
        },
        "description": "Fields reflected from supplied _9 WAR ebm.vsdc.execute.model.TrnsPurchaseSalesRes$TrnsPurchaseSalesResData. Unknown future fields are tolerated by this client contract.",
        "required": [
          "saleList"
        ]
      },
      "VsdcPassthroughEnvelope": {
        "type": "object",
        "properties": {
          "resultCd": {
            "type": [
              "string",
              "null"
            ]
          },
          "resultMsg": {
            "type": [
              "string",
              "null"
            ]
          },
          "resultDt": {
            "type": [
              "string",
              "null"
            ]
          },
          "data": {}
        },
        "description": "Raw upstream envelope. data is endpoint/backend dependent and can be absent. Always inspect resultCd. No typed upstream data model is enforced by this route."
      },
      "VsdcSaleResponse": {
        "type": "object",
        "properties": {
          "resultCd": {
            "type": "string"
          },
          "resultMsg": {
            "type": [
              "string",
              "null"
            ]
          },
          "resultDt": {
            "type": [
              "string",
              "null"
            ]
          },
          "data": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/FiscalReceipt"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "resultCd",
          "resultMsg",
          "resultDt"
        ]
      },
      "VsdcHttpError": {
        "type": "object",
        "required": [
          "timestamp",
          "status",
          "error",
          "path"
        ],
        "properties": {
          "timestamp": {
            "type": "string"
          },
          "status": {
            "type": "integer"
          },
          "error": {
            "type": "string"
          },
          "path": {
            "type": "string"
          }
        },
        "description": "Standalone WAR-compatible framework error. Hosted authentication/proxy errors may instead use their own envelopes or plain text."
      },
      "CisReportPluCategory": {
        "type": "object",
        "properties": {
          "item_classification": {
            "type": [
              "string",
              "null"
            ],
            "description": "Item classification from the original receipt; null when missing."
          },
          "quantity_unit": {
            "type": [
              "string",
              "null"
            ],
            "description": "Original quantity unit; different units are never combined."
          },
          "quantity_hundredths": {
            "type": "integer",
            "description": "Net normal-sale quantity minus normal refunds, scaled by 100."
          },
          "amount_cents": {
            "type": "integer",
            "description": "Net normal-sale amount minus normal refunds, scaled by 100."
          }
        },
        "required": [
          "item_classification",
          "quantity_unit",
          "quantity_hundredths",
          "amount_cents"
        ]
      },
      "ReceiptUsageCounts": {
        "type": "object",
        "properties": {
          "total": {
            "type": "integer",
            "format": "int64",
            "minimum": 0
          },
          "accepted": {
            "type": "integer",
            "format": "int64",
            "minimum": 0
          },
          "pending": {
            "type": "integer",
            "format": "int64",
            "minimum": 0
          },
          "vsdc_issued": {
            "type": "integer",
            "format": "int64",
            "minimum": 0
          }
        },
        "required": [
          "total",
          "accepted",
          "pending",
          "vsdc_issued"
        ]
      },
      "ReceiptUsageGroup": {
        "type": "object",
        "properties": {
          "total": {
            "type": "integer",
            "format": "int64",
            "minimum": 0
          },
          "accepted": {
            "type": "integer",
            "format": "int64",
            "minimum": 0
          },
          "pending": {
            "type": "integer",
            "format": "int64",
            "minimum": 0
          },
          "vsdc_issued": {
            "type": "integer",
            "format": "int64",
            "minimum": 0
          },
          "branch": {
            "type": [
              "string",
              "null"
            ]
          },
          "mode": {
            "type": "string",
            "enum": [
              "NS",
              "NR",
              "CS",
              "CR",
              "TS",
              "TR",
              "PS",
              "UNKNOWN"
            ]
          }
        },
        "required": [
          "total",
          "accepted",
          "pending",
          "vsdc_issued",
          "branch",
          "mode"
        ]
      },
      "ReceiptUsage": {
        "type": "object",
        "properties": {
          "month": {
            "type": "string",
            "pattern": "^[0-9]{4}-[0-9]{2}$"
          },
          "timezone": {
            "type": "string",
            "const": "Africa/Kigali"
          },
          "environment": {
            "type": "string",
            "enum": [
              "sandbox",
              "production"
            ]
          },
          "from": {
            "type": "string",
            "format": "date-time"
          },
          "to_exclusive": {
            "type": "string",
            "format": "date-time"
          },
          "basis": {
            "type": "string"
          },
          "totals": {
            "$ref": "#/components/schemas/ReceiptUsageCounts"
          },
          "by_branch_and_mode": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReceiptUsageGroup"
            }
          }
        },
        "required": [
          "month",
          "timezone",
          "environment",
          "from",
          "to_exclusive",
          "basis",
          "totals",
          "by_branch_and_mode"
        ]
      },
      "CatalogueItemResult": {
        "type": "object",
        "required": [
          "data"
        ],
        "properties": {
          "data": {
            "$ref": "#/components/schemas/CatalogueEntry"
          }
        }
      }
    }
  }
}
