{
  "openapi": "3.0.1",
  "info": {
    "title": "Management API v2 (Current)",
    "description": "✅ CURRENT VERSION - This is the improved and redesigned API version with enhanced features, better performance, and comprehensive validation. This is the recommended version for all new integrations and provides the best developer experience with detailed error handling and validation.",
    "version": "2.0"
  },
  "servers": [
    {
      "url": "https://api.portal.efsta.eu",
      "description": "Production"
    }
  ],
  "paths": {
    "/api/v2/Public/Organization": {
      "post": {
        "tags": [
          "1.Organization"
        ],
        "summary": "Creates a new organization object in the Organization tree under the given ownerOrganization.",
        "description": "Creates a new organization entry in the system hierarchy. The organization will be placed under the specified owner Organization and can contain other organizational units and companies.\r\n\r\n🔒 **Permissions:** ManageCompany permission on the Organization identified via ownerOrganizationId in the request body.\r\n\r\n🔴 **Required Fields:**\r\n- `parentEntityId`: ID of the parent Organization (minimum value: 2)\r\n\r\n- `name`: Organization name (2-1000 characters)\r\n\r\n🔵 **Optional Fields:**\r\n- `address`: Street address (max 1000 characters)\r\n\r\n- `city`: City name (max 1000 characters)\r\n\r\n- `zip`: Postal code (max 50 characters)\r\n\r\n- `countryCode`: ISO-2 country code (exactly 2 characters, e.g., \"DE\", \"AT\", \"FR\")\r\n\r\n- `invoiceEmailAddress`: Email for invoice notifications (valid email format, max 100 characters)\r\n\r\n- `userComment`: Custom description (max 2000 characters)\r\n\r\n- `state`: Organization state - \"Productive\" (default) or \"Test\"\r\n\r\n📝 **Important Notes:**\r\n- Valid states: \"Productive\", \"Test\" \r\n- Organization will be created with \"Productive\" state by default\r\n- If created under a Test organization, it will automatically be set to \"Test\" state\r\n- State changes from \"Productive\" to \"Test\" are irreversible\r\n- Address fields are primarily used for billing and invoicing purposes\r\n- The organization will be assigned a unique ID and creation timestamp",
        "requestBody": {
          "description": "The request body containing all properties required for organization creation. Must include ownerOrganizationId, name, and optional address information.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreatePublicOrganizationRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CreatePublicOrganizationRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CreatePublicOrganizationRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Organization created successfully. Returns the complete organization data including assigned ID and timestamps.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicOrganizationResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input data, validation failed, or required fields are missing. Check the validation errors in the response."
          },
          "403": {
            "description": "Insufficient permissions to create organization under the specified OwnerOrganization."
          },
          "404": {
            "description": "OwnerOrganization not found or not accessible with current permissions."
          }
        }
      }
    },
    "/api/v2/Public/Organization/{organizationId}": {
      "put": {
        "tags": [
          "1.Organization"
        ],
        "summary": "Updates an existing organization with the provided data.",
        "description": "Updates the existing organization properties. Properties that are omitted (null) in the request remain unchanged; the required fields must always be provided.\r\n\r\n🔒 **Permissions:** ManageCompany on the organization to update.\r\n\r\n🔴 **Required Fields:**\r\n\r\n- `name`: Organization name (2-1000 characters)\r\n\r\n🔵 **Optional Fields:**\r\n- `address`: Street address (max 1000 characters)\r\n\r\n- `city`: City name (max 1000 characters)\r\n\r\n- `zip`: Postal code (max 50 characters)\r\n\r\n- `countryCode`: ISO-2 country code (exactly 2 characters, e.g., \"DE\", \"AT\", \"FR\")\r\n\r\n- `invoiceEmailAddress`: Email for invoice notifications (valid email format, max 100 characters)\r\n\r\n- `userComment`: Custom description (max 2000 characters)\r\n\r\n- `state`: Organization state - \"Productive\", \"Test\", or \"Deactivated\" \r\n\r\n📝 **Important Notes:**\r\n- All properties should be included in the request as missing properties may cause validation errors\r\n- Address fields are primarily used for billing and invoicing purposes\r\n- Some properties may be restricted based on the organization's current state\r\n- State changes from \"Productive\" to \"Test\" are irreversible and cannot be undone\r\n- State changes from \"Test\" to \"Productive\" are not allowed\r\n- The organization's change timestamp will be updated automatically",
        "parameters": [
          {
            "name": "organizationId",
            "in": "path",
            "description": "The unique identifier of the organization to update (minimum value: 2).",
            "required": true,
            "style": "simple",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "The request body containing the properties to update. Properties that are omitted (null) remain unchanged.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdatePublicOrganizationRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdatePublicOrganizationRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/UpdatePublicOrganizationRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Organization updated successfully. Returns the complete updated organization data.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicOrganizationResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input data, validation failed, or organization ID is invalid."
          },
          "403": {
            "description": "Insufficient permissions to update the specified organization."
          },
          "404": {
            "description": "Organization not found or not accessible with current permissions."
          }
        }
      },
      "get": {
        "tags": [
          "1.Organization"
        ],
        "summary": "Gets the organization by the specified ID.",
        "description": "Retrieves a single organization by its unique identifier. \r\n🔒 **Permissions:** ReadCompany permission on the organization identified via the given ID.\r\n\r\n📝 **Important Notes:**\r\n- If the organization is not found, a 404 error will be returned\r\n- The response includes the organization's current state and all associated metadata",
        "parameters": [
          {
            "name": "organizationId",
            "in": "path",
            "description": "The unique identifier of the organization to retrieve (minimum value: 2).",
            "required": true,
            "style": "simple",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Organization retrieved successfully. Returns complete organization data",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicOrganizationResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid organization ID format or request is malformed."
          },
          "403": {
            "description": "Insufficient permissions to access the specified organization."
          },
          "404": {
            "description": "Organization not found or not accessible with current permissions."
          }
        }
      }
    },
    "/api/v2/Public/Organization/Search": {
      "put": {
        "tags": [
          "1.Organization"
        ],
        "summary": "Searches for organizations based on given parameters in the request body.",
        "description": "Performs a filtered search across organizations based on the provided search criteria. Multiple search parameters can be combined to narrow down results. Supports pagination, sorting, and various filtering options.\r\n            \r\n🔒 **Permissions:** ReadCompany permission is required for each organization to appear in the search results.\r\n\r\n📝 **Search Parameters:**\r\n\r\n- `parentEntityId`: Filter by parent Organization (optional, minimum value: 2)\r\n\r\n- `createdAfter`: Filter by creation date (optional, ISO-8601 format)\r\n            \r\n- `hasUserComment`: Filter by presence of user comments (optional, boolean)\r\n            \r\n- `hasDeactivateAfterTimestamp`: Filter by deactivation date presence (optional, boolean)\r\n            \r\n- `searchText`: Text search across name, comment, and other fields (optional, max 1000 characters)\r\n            \r\n- `state`: Filter by organization state - \"Productive\", \"Test\", or \"Deactivated\" (optional)\r\n            \r\n- `orderByField`: Sort field name (optional, default: \"name\")\r\n            \r\n- `orderDescending`: Sort direction (optional, default: false for ascending)\r\n            \r\n- `offset`: Number of items to skip for pagination (optional, minimum: 0)\r\n            \r\n- `limit`: Number of items to return (optional, range: 0-250, default: 100)\r\n\r\n📝 **Important Notes:**\r\n- Maximum 250 results per request, default limit is 100 if not specified\r\n- If parentEntityId is provided, only direct children of that Organization are returned\r\n- State filtering supports: \"Productive\", \"Test\", \"Deactivated\"\r\n- Search is case-insensitive for text fields\r\n- Results include pagination metadata (total count, offset, limit)\r\n- Empty search criteria will return all accessible organizations (up to limit)",
        "requestBody": {
          "description": "The search request object containing filter criteria, pagination settings, and sorting options for querying organizations.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SearchPublicOrganizationsRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/SearchPublicOrganizationsRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/SearchPublicOrganizationsRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Search completed successfully. Returns matching organizations with pagination information.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicOrganizationSearchPublicCompanyObjectsResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid search parameters, request format, or validation failed."
          },
          "403": {
            "description": "Invalid access grant or insufficient permissions to search organizations."
          }
        }
      }
    },
    "/api/v2/Public/Feature/Assignments/Company/{companyId}/Add": {
      "put": {
        "tags": [
          "10.Feature"
        ],
        "summary": "Adds a Feature to a company or register.",
        "description": "Adds the selected feature to the company starting immediately. \r\n\r\n🔒 **Permissions:** **ManageCompany** permission on the company identified via companyId in the URL.\r\n\r\n📝 **Important Notes:**\r\n- Available FeatureCodes: MELDESERVICE, DATEV_MEINFISKAL\r\n- The feature MELDESERVICE and DATEV_MEINFISKAL require the user to accept the features specific terms and conditions!\r\n- Clearing Units need to be correct for the given feature\r\n    - MELDESERVICE needs clearing unit \"3\" - meaning the billing will be on location basis\r\n    - DATEV_MEINFISKAL needs clearing unit \"2\" - meaning the billing will be on register basis",
        "parameters": [
          {
            "name": "companyId",
            "in": "path",
            "description": "The ID of the company to check",
            "required": true,
            "style": "simple",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "The request object containing the feature to add and the countryCode to select the country the feature has to be added",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AddPublicFeatureRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/AddPublicFeatureRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/AddPublicFeatureRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The Feature Activation was successful.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AddPublicFeatureResult"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "The user is not authenticated to use this function or to get the feature."
          },
          "400": {
            "description": "Data is missing or inconsistent data was provided."
          }
        }
      }
    },
    "/api/v2/Public/Feature/Assignments/Company/{companyId}/Remove": {
      "put": {
        "tags": [
          "10.Feature"
        ],
        "summary": "Removes a Feature from a company or register.",
        "description": "Removes the selected feature to the company starting immediately. \r\n\r\n🔒 **Permissions:** **ManageCompany** permission on the company identified via companyId in the URL.\r\n\r\n📝 **Important Notes:**\r\n- Available FeatureCodes: MELDESERVICE, DATEV_MEINFISKAL",
        "parameters": [
          {
            "name": "companyId",
            "in": "path",
            "description": "The ID of the company to check",
            "required": true,
            "style": "simple",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "The request object containing the feature to remove and the countryCode to select the country the feature has to be removed",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RemovePublicFeatureRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/RemovePublicFeatureRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/RemovePublicFeatureRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The Feature removal was successful.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RemovePublicFeatureResult"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "The user is not authenticated to use this function or to remove the feature."
          },
          "400": {
            "description": "Data is missing or inconsistent data was provided."
          }
        }
      }
    },
    "/api/v2/Public/Company": {
      "post": {
        "tags": [
          "2.Company"
        ],
        "summary": "Creates a new company within the organizational hierarchy.",
        "description": "Creates a new company entry in the system hierarchy. The company will be placed under the specified organization and can contain locations, registers, and other business entities.\r\n\r\n🔒 **Permissions:** ManageCompany permission on the organization identified via parentEntityId in the request body.\r\n\r\n🔴 **Required Fields:**\r\n- `parentEntityId`: ID of the parent organization (minimum value: 2)\r\n\r\n- `name`: Company name (2-1000 characters)\r\n\r\n- `taxId`: EU tax ID/ECI (4-40 characters, e.g., \"DE999999999\")\r\n\r\n- `address`: Street address (max 1000 characters) \r\n\r\n- `city`: City name (max 1000 characters)\r\n\r\n- `zip`: Postal code (max 50 characters) \r\n\r\n- `countryCode`: ISO-2 country code (exactly 2 characters, e.g., \"DE\", \"AT\", \"FR\") \r\n\r\n🔵 **Optional Fields:**\r\n- `invoiceEmailAddress`: Email for invoice notifications (valid email format, max 100 characters)\r\n\r\n- `userComment`: Custom description (max 2000 characters)\r\n\r\n- `state`: Company state - \"Productive\" (default) or \"Test\"\r\n\r\n- `ignoreTaxId`: If set to true, the validation of the TaxId will be skipped. The TaxId will still be saved.\r\n            \r\n- `countryProperties`: Additional country-specific company data (e.g. `DE_WIdNr` for the German Wirtschafts-Identifikationsnummer). See \"PublicCompanyCountryProperties\" for available fields.\r\n            \r\n📝 **Important Notes:**\r\n- Valid states: \"Productive\", \"Test\"\r\n- Company will be created with \"Productive\" state by default\r\n- If created under a Test organization, it will automatically be set to \"Test\" state\r\n- State changes from \"Productive\" to \"Test\" are irreversible\r\n- Address fields are primarily used for billing and invoicing purposes\r\n- The company will be assigned a unique ID and creation timestamp\r\n- the field DE_WIdNr in the countryProperties is mandatory for DE companies as of 01.01.2027 until then it is optional",
        "requestBody": {
          "description": "The request body containing all properties required for company creation. Must include parentEntityId, name, taxId, and optional address information.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreatePublicCompanyRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CreatePublicCompanyRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CreatePublicCompanyRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Company created successfully. Returns the complete company data including assigned ID and timestamps.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicCompanyResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input data, validation failed, or required fields are missing. Check the validation errors in the response."
          },
          "403": {
            "description": "Insufficient permissions to create company under the specified owner organization."
          },
          "404": {
            "description": "Owner organization not found or not accessible with current permissions."
          }
        }
      }
    },
    "/api/v2/Public/Company/{companyId}": {
      "put": {
        "tags": [
          "2.Company"
        ],
        "summary": "Updates existing company information and settings.",
        "description": " Updates the existing company properties. Properties that are omitted (null) in the request remain unchanged; the required fields must always be provided.\r\n\r\n 🔒 **Permissions:** ManageCompany permission on the company to update.\r\n\r\n 🔴 **Required Fields:**\r\n\r\n-  `name`: Company name (2-1000 characters)\r\n\r\n - `address`: Street address (max 1000 characters)\r\n\r\n - `city`: City name (max 1000 characters)\r\n\r\n - `zip`: Postal code (max 50 characters)\r\n\r\n - `countryCode`: ISO-2 country code (exactly 2 characters)\r\n\r\n 🔵 **Optional Fields:**\r\n\r\n - `invoiceEmailAddress`: Email for invoice notifications (valid email format, max 100 characters)\r\n\r\n - `userComment`: Custom description (max 2000 characters)\r\n\r\n - `state`: Company state - \"Productive\", \"Test\", or \"Deactivated\"\r\n\r\n - `taxId`: EU tax ID/ECI (4-40 characters, e.g., \"DE999999999\") - Can only be changed if the company's IgnoreEci flag is set to true in the database\r\n\r\n - `countryProperties`: Additional country-specific company data (e.g. `DE_WIdNr` for the German Wirtschafts-Identifikationsnummer). See \"PublicCompanyCountryProperties\" for available fields.\r\n\r\n 📝 **Important Notes:**\r\n - Properties that are omitted (null) in the request remain unchanged\r\n - Changes are automatically synchronized to all locations and registers\r\n - State changes from \"Productive\" to \"Test\" are irreversible and cannot be undone\r\n - State changes from \"Test\" to \"Productive\" are not allowed\r\n - The company's change timestamp will be updated automatically\r\n - the field DE_WIdNr in the countryProperties is mandatory for DE companies as of 01.01.2027 until then it is optional \r\n - The Tax ID can only be changed if the company's IgnoreEci flag is set to true. In normal cases of company renaming (rebranding), a new company must be created. See FAQs.",
        "parameters": [
          {
            "name": "companyId",
            "in": "path",
            "description": "The unique identifier of the company to update (minimum value: 2).",
            "required": true,
            "style": "simple",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "The request body containing the properties to update. Properties that are omitted (null) remain unchanged.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdatePublicCompanyRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdatePublicCompanyRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/UpdatePublicCompanyRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Company updated successfully. Returns the complete updated company data.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicCompanyResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input data, validation failed, or company ID is invalid."
          },
          "403": {
            "description": "Insufficient permissions to update the specified company."
          },
          "404": {
            "description": "Company not found or not accessible with current permissions."
          }
        }
      },
      "get": {
        "tags": [
          "2.Company"
        ],
        "summary": "Gets the company by the specified ID.",
        "description": "Retrieves a single company by its unique identifier. Returns complete company information\r\n\r\n🔒 **Permissions:** ReadCompany permission on the company identified via the given ID.\r\n\r\n📝 **Important Notes:**\r\n- If the company is not found, a 404 error will be returned\r\n- The response includes the company's current state and all associated metadata",
        "parameters": [
          {
            "name": "companyId",
            "in": "path",
            "description": "The unique identifier of the company to retrieve (minimum value: 2).",
            "required": true,
            "style": "simple",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Company retrieved successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicCompanyResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid company ID format or request is malformed."
          },
          "403": {
            "description": "Insufficient permissions to access the specified company."
          },
          "404": {
            "description": "Company not found or not accessible with current permissions."
          }
        }
      }
    },
    "/api/v2/Public/Company/{companyId}/Deactivate": {
      "put": {
        "tags": [
          "2.Company"
        ],
        "summary": "Deactivates a company and all its subordinate entities.",
        "description": "Deactivates a company and all its subordinate entities including registers, locations, and fiscal units. \r\nThe process executes in a specific order to ensure proper shutdown of all connected systems.\r\n\r\n🔒 **Permissions:** ManageCompany permission required for the specified company.\r\n\r\n📝 **Deactivation Process:**\r\n- Immediate deactivation: If no year specified, company is deactivated immediately\r\n\r\n- Scheduled deactivation: If year specified, deactivation occurs on December 31st at 23:59:59\r\n\r\n- Subordinate entities: All locations, registers, and fiscal units are deactivated\r\n\r\n- Fiscal units: Terminated after notice period (unless forceSubDeactivation is true)\r\n\r\n📝 **Important Notes:**\r\n- Process is irreversible once completed\r\n- All subordinate entities will be deactivated\r\n- Scheduled deactivation year must be current year or later\r\n- Fiscal Units will be terminated after notice period (unless forced)\r\n- Force sub-deactivation bypasses normal notice periods",
        "parameters": [
          {
            "name": "companyId",
            "in": "path",
            "description": "The unique identifier of the company to deactivate (minimum value: 2).",
            "required": true,
            "style": "simple",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "deactivateAfterYear",
            "in": "query",
            "description": "Optional year for scheduled deactivation (executed on December 31st at 23:59:59). Must be current year or later.",
            "style": "form",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "forceSubDeactivation",
            "in": "query",
            "description": "Optional flag to force immediate deactivation of all subordinate entities without waiting for notice periods.",
            "style": "form",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Company successfully deactivated or scheduled for deactivation. Returns operation status and details.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResultBase"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input data, validation failed, or company cannot be deactivated (e.g., invalid year)."
          },
          "403": {
            "description": "Insufficient permissions to deactivate the specified company."
          },
          "404": {
            "description": "Company not found or not accessible with current permissions."
          }
        }
      }
    },
    "/api/v2/Public/Company/Search": {
      "put": {
        "tags": [
          "2.Company"
        ],
        "summary": "Searches for companies using flexible criteria and filters.",
        "description": "Performs a filtered search across companies based on the provided search criteria. Multiple search parameters can be combined to narrow down results. Supports pagination, sorting, and various filtering options.\r\n            \r\n🔒 **Permissions:** ReadCompany permission is required for each company to appear in the search results.\r\n\r\n📝 **Search Parameters:**\r\n- `ParentEntityId`: Filter by parent organization (optional, minimum value: 2)\r\n\r\n- `createdAfter`: Filter by creation date (optional, ISO-8601 format)\r\n\r\n- `hasUserComment`: Filter by presence of user comments (optional, boolean)\r\n\r\n- `hasDeactivateAfterTimestamp`: Filter by deactivation date presence (optional, boolean)\r\n\r\n- `searchText`: Text search across name, comment, and other fields (optional, max 1000 characters)\r\n\r\n- `state`: Filter by company state - \"Productive\", \"Test\", or \"Deactivated\" (optional)\r\n\r\n- `countryCode`: Filter by ISO-2 country code (optional, exactly 2 characters, e.g., \"DE\", \"AT\", \"FR\")\r\n\r\n- `orderByField`: Sort field name (optional, default: \"name\")\r\n\r\n- `orderDescending`: Sort direction (optional, default: false for ascending)\r\n\r\n- `offset`: Number of items to skip for pagination (optional, minimum: 0)\r\n\r\n- `limit`: Number of items to return (optional, range: 0-250, default: 100)\r\n\r\n📝 **Important Notes:**\r\n- Maximum 250 results per request, default limit is 100 if not specified\r\n- If ParentEntityId is provided, only direct children of that organization are returned\r\n- State filtering supports: \"Productive\" (10), \"Test\" (9), \"Deactivated\" (8)\r\n- Search is case-insensitive for text fields\r\n- Results include pagination metadata (total count, offset, limit)\r\n- Empty search criteria will return all accessible companies (up to limit)",
        "requestBody": {
          "description": "The search request object containing filter criteria, pagination settings, and sorting options for querying companies.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SearchPublicCompaniesRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/SearchPublicCompaniesRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/SearchPublicCompaniesRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Search completed successfully. Returns matching companies with pagination information.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicCompanySearchPublicCompanyObjectsResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid search parameters, request format, or validation failed."
          },
          "403": {
            "description": "Invalid access grant or insufficient permissions to search companies."
          }
        }
      }
    },
    "/api/v2/Public/Company/{companyId}/Notifications": {
      "get": {
        "tags": [
          "2.Company"
        ],
        "summary": "Retrieves system notifications relevant to a company.",
        "description": "Loads all available notifications for registers of a company and all related locations. These notifications contain warnings from the efsta Portal escalation\r\nsystem and describe issues and potential problems with registers.\r\n\r\n🔒 **Permissions:** ReadCompany permission required for the specified company.\r\n            \r\n📝 **Returned Data:**\r\n- Register information: RegisterNumber, EventCode, DescriptionShort\r\n\r\n- Event details: DescriptionLong, CurrentLevel, InitialTimestamp\r\n\r\n- Company context: parentEntityId, CompanyName, CompanyType\r\n\r\n📝 **Important Notes:**\r\n- Language code defaults to \"en-US\" if not provided\r\n- Only Works on Productive Companies\r\n- Only active notifications are returned\r\n- Notifications are localized based on the provided language code",
        "parameters": [
          {
            "name": "companyId",
            "in": "path",
            "description": "The unique identifier of the company to retrieve notifications for (minimum value: 2).",
            "required": true,
            "style": "simple",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "languageCode",
            "in": "query",
            "description": "ISO 639-1 language code for localized notifications (e.g., \"de\", \"en\"). Defaults to \"en-US\" if not provided.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Notifications retrieved successfully. Returns all relevant notifications for the company's registers and locations.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetPublicCompanyNotificationsResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid company ID format, language code, or request is malformed."
          },
          "403": {
            "description": "Insufficient permissions to access the specified company."
          },
          "404": {
            "description": "Company not found or not accessible with current permissions."
          }
        }
      }
    },
    "/api/v2/Public/Company/Contact": {
      "post": {
        "tags": [
          "2.Company"
        ],
        "summary": "Creates a new contact person for a company.",
        "description": "Creates a new contact person for a company. Contact persons are used for automated notifications and communication purposes.\r\n            \r\n🔒 **Permissions:** ManageCompany permission required for the company specified in the request.\r\n\r\n🔴 **Required Fields:**\r\n- `companyId`: ID of the company to add the contact to (minimum value: 2)\r\n\r\n- `contactName`: Contact person's full name (2-500 characters)\r\n\r\n- `emailAddress`: Contact person's email address (valid email format, max 500 characters)\r\n\r\n- `contactType`: Type of contact role (see Contact Types below)\r\n\r\n👤 **Contact Types:**\r\n- `InvoiceContact`: Responsible for invoice-related communications\r\n\r\n- `TechnicalContact`: Responsible for technical support and system issues\r\n\r\n- `CommercialContact`: Responsible for commercial and business matters\r\n\r\n- `ElsterContact`: Responsible for fiscal authority communications (Germany)\r\n\r\n📝 **Important Notes:**\r\n- Email addresses must be unique within the company\r\n- Contact information is used for automated notifications\r\n- Multiple contacts of the same type are allowed\r\n- The contact will be assigned a unique ID upon creation",
        "requestBody": {
          "description": "The request body containing complete contact person information including name, email, and role assignment.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreatePublicCompanyContactRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CreatePublicCompanyContactRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CreatePublicCompanyContactRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Contact created successfully. Returns the complete contact data including assigned ID.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatePublicCompanyContactResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input data, validation failed, or duplicate email address within the company."
          },
          "403": {
            "description": "Insufficient permissions to create contact for the specified company."
          },
          "404": {
            "description": "Company not found or not accessible with current permissions."
          }
        }
      }
    },
    "/api/v2/Public/Company/{companyId}/Contacts": {
      "get": {
        "tags": [
          "2.Company"
        ],
        "summary": "Retrieves all contact persons associated with a company.",
        "description": "Gets a list of all the different contacts added to the Company. Returns complete contact information including roles, verification status, and communication preferences.\r\n            \r\n🔒 **Permissions:** ReadCompany permission required for the specified company.\r\n\r\n📝 **Returned Information:**\r\n- Contact person details: Name, Email,\r\n\r\n- Role and responsibility assignments: ContactType   \r\n\r\n- Company context: CompanyId\r\n            \r\n👤 **Contact Types:**\r\n- `InvoiceContact`: Responsible for invoice-related communications\r\n\r\n- `TechnicalContact`: Responsible for technical support and system issues\r\n\r\n- `CommercialContact`: Responsible for commercial and business matters\r\n\r\n- `ElsterContact`: Responsible for fiscal authority communications (Germany)\r\n\r\n📝 **Important Notes:**\r\n- Only contacts for the specified company are returned\r\n- If the company is not found, a 404 error will be returned\r\n- Contact information includes all available metadata\r\n- Verification status is particularly relevant for German fiscal contacts",
        "parameters": [
          {
            "name": "companyId",
            "in": "path",
            "description": "The unique identifier of the company to retrieve contacts for (minimum value: 2).",
            "required": true,
            "style": "simple",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Contacts retrieved successfully. Returns all contact persons associated with the company.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetPublicCompanyContactsResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid company ID format or request is malformed."
          },
          "403": {
            "description": "Insufficient permissions to access the specified company."
          },
          "404": {
            "description": "Company not found or not accessible with current permissions."
          }
        }
      }
    },
    "/api/v2/Public/Company/{companyId}/Configuration": {
      "get": {
        "tags": [
          "2.Company"
        ],
        "summary": "Retrieves all configurations associated with a company.",
        "description": "Gets an Object with all the different configurations added to the Company. Returns all different configurations for Company, Terminal, Device Agency, Profile, eInvoice and Certificate.\r\n            \r\n🔒 **Permissions:** ReadCompany permission required for the specified company.\r\n\r\n📝 **Returned Information:**\r\n            \r\nThe returned information is the standard Result Object containing the CompanyConfiguration.\r\n\r\n📝 **Important Notes:**\r\n- Only configurations for the specified company are returned\r\n- If the company is not found, a 404 error will be returned\r\n- Configurations will contain all the fields",
        "parameters": [
          {
            "name": "companyId",
            "in": "path",
            "description": "The unique identifier of the company to retrieve configurations for (minimum value: 2).",
            "required": true,
            "style": "simple",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Configurations retrieved successfully. Returns all configurations associated with the company.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetPublicCompanyConfigurationResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid company ID format or request is malformed."
          },
          "403": {
            "description": "Insufficient permissions to access the specified company."
          },
          "404": {
            "description": "Company not found or not accessible with current permissions."
          }
        }
      },
      "post": {
        "tags": [
          "2.Company"
        ],
        "summary": "Updates all configurations associated with a company, deletes existing configurations that are not specified in the request object.",
        "description": "Updates or Deletes all specified configurations for Company, Terminal, Device Agency, Profile, eInvoice and Certificate of the given company.\r\n            \r\nUpdate behavior:\r\n- Providing a configuration object will update the existing one with the new values specified or create a new entry if it did not exist before.\r\n- Providing a specific configuration object but setting values as null will delete the properties from the configuration.\r\n- Not providing a specific configuration object by setting it null will ignore this configuration and neither create, nor update or delete anything from it.\r\n\r\n🔒 **Permissions:** ManageCompany permission required for the specified company.\r\n\r\n📝 **Important Notes:**\r\n- Only configurations for the specified company are saved\r\n- If the company is not found, a 404 error will be returned",
        "parameters": [
          {
            "name": "companyId",
            "in": "path",
            "description": "The unique identifier of the company to save configurations for (minimum value: 2).",
            "required": true,
            "style": "simple",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "sendConfiguration",
            "in": "query",
            "description": "Optional flag to trigger sending of updated configuration to all registers under the company. Default is false.",
            "style": "form",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "requestBody": {
          "description": "The request object containing all the configuration settings for the company with an identifier if the configurations shall be sent all Registers under this company.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdatePublicCompanyConfigurationRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdatePublicCompanyConfigurationRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/UpdatePublicCompanyConfigurationRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Configurations saved successfully. Returns a warning text if there were configurations that could not be stored due to settings.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatePublicCompanyConfigurationResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid company ID format or request is malformed."
          },
          "403": {
            "description": "Insufficient permissions to access the specified company."
          },
          "404": {
            "description": "Company not found or not accessible with current permissions."
          }
        }
      }
    },
    "/api/v2/Public/Location": {
      "post": {
        "tags": [
          "3.Location"
        ],
        "summary": "Creates a new location object in the company tree under the specified owner company.",
        "description": "Creates a new location entry in the system hierarchy. The location will be placed under the specified company and can contain registers and process transactions.\r\n\r\n🔒 **Permissions:** ManageCompany permission on the company identified via parentEntityId in the request body.\r\n\r\n🔴 **Required Fields:**\r\n- `parentEntityId`: ID of the parent company (minimum value: 2)\r\n\r\n- `name`: Location name (2-1000 characters)\r\n            \r\n- `address`: Street address (max 1000 characters)\r\n\r\n- `city`: City name (max 1000 characters)\r\n\r\n- `zip`: Postal code (max 50 characters)\r\n\r\n- `countryCode`: ISO-2 country code (exactly 2 characters, e.g., \"DE\", \"AT\", \"FR\")\r\n\r\n- `locationIdentification`: Unique identifier within the company (1-1000 characters, alphanumeric and special characters )\r\n\r\n🔵 **Optional Fields**\r\n\r\n- `invoiceEmailAddress`: Email for invoice notifications (valid email format, max 100 characters)\r\n\r\n- `userComment`: Custom description (max 2000 characters)\r\n\r\n- `state`: Location state - \"Productive\" (default) or \"Test\"\r\n\r\n📝 **Important Notes:**\r\n- Valid states: \"Productive\", \"Test\" \r\n- Location will be created with \"Productive\" state by default\r\n- If created under a Test company, it will automatically be set to \"Test\" state\r\n- State changes from \"Productive\" to \"Test\" are irreversible\r\n- Address fields are primarily used for billing and invoicing purposes\r\n- The location will be assigned a unique ID and creation timestamp\r\n- Location name should be unique within the parent company for better organization",
        "requestBody": {
          "description": "The request body containing all properties required for location creation. Must include parentEntityId, name, and optional address information.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreatePublicLocationRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CreatePublicLocationRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CreatePublicLocationRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Location created successfully. Returns the complete location data including assigned ID and timestamps.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicLocationResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input data, validation failed, or required fields are missing. Check the validation errors in the response."
          },
          "403": {
            "description": "Insufficient permissions to create location under the specified owner company."
          },
          "404": {
            "description": "Owner company not found or not accessible with current permissions."
          }
        }
      }
    },
    "/api/v2/Public/Location/{locationId}": {
      "put": {
        "tags": [
          "3.Location"
        ],
        "summary": "Updates existing location information and settings.",
        "description": "Updates the existing location properties. Properties that are omitted (null) in the request remain unchanged; the required fields must always be provided.\r\n\r\n🔒 **Permissions:** ManageCompany permission on the location to update.\r\n            \r\n🔴 **Required Fields:**\r\n- `parentEntityId`: ID of the parent company (minimum value: 2)\r\n\r\n- `name`: Location name (2-1000 characters)\r\n            \r\n- `address`: Street address (max 1000 characters)\r\n\r\n- `city`: City name (max 1000 characters)\r\n\r\n- `zip`: Postal code (max 50 characters)\r\n\r\n- `countryCode`: ISO-2 country code (exactly 2 characters)\r\n\r\n- `locationIdentification`: Unique identifier within the company (1-1000 characters, alphanumeric and special characters )\r\n\r\n🔵 **Optional Fields:**\r\n\r\n- `invoiceEmailAddress`: Email for invoice notifications (valid email format, max 100 characters)\r\n\r\n- `userComment`: Custom description (max 2000 characters)\r\n\r\n- `state`: Location state - \"Productive\", \"Test\", or \"Deactivated\"\r\n            \r\n📝 **Important Notes:**\r\n- All properties should be included in the request to avoid validation errors\r\n- Missing properties may be cleared or cause validation failures\r\n- State changes from \"Productive\" to \"Test\" are irreversible and cannot be undone\r\n- State changes from \"Test\" to \"Productive\" are not allowed\r\n- The location's change timestamp will be updated automatically",
        "parameters": [
          {
            "name": "locationId",
            "in": "path",
            "description": "The unique identifier of the location to update (minimum value: 2).",
            "required": true,
            "style": "simple",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "The request body containing the properties to update. Properties that are omitted (null) remain unchanged.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdatePublicLocationRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdatePublicLocationRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/UpdatePublicLocationRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Location updated successfully. Returns the complete updated location data.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicLocationResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input data, validation failed, or location ID is invalid."
          },
          "403": {
            "description": "Insufficient permissions to update the specified location."
          },
          "404": {
            "description": "Location not found or not accessible with current permissions."
          }
        }
      },
      "get": {
        "tags": [
          "3.Location"
        ],
        "summary": "Gets the location by the specified ID.",
        "description": "Retrieves a single location by its unique identifier.\r\n\r\n🔒 **Permissions:** ReadCompany permission on the location identified via the given ID.",
        "parameters": [
          {
            "name": "locationId",
            "in": "path",
            "description": "The unique identifier of the location to retrieve (minimum value: 2).",
            "required": true,
            "style": "simple",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Location retrieved successfully.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicLocationResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid location ID format or request is malformed."
          },
          "403": {
            "description": "Insufficient permissions to access the specified location."
          },
          "404": {
            "description": "Location not found or not accessible with current permissions."
          }
        }
      }
    },
    "/api/v2/Public/Location/{locationId}/Deactivate": {
      "put": {
        "tags": [
          "3.Location"
        ],
        "summary": "Deactivates a location and all its subordinate entities.",
        "description": "Deactivates a location and all its subordinate entities including registers and fiscal units. \r\nThe process executes in a specific order to ensure proper shutdown of all connected systems.\r\n\r\n🔒 **Permissions:** ManageCompany permission required for the specified location.\r\n\r\n📝 **Deactivation Process:**\r\n- Immediate deactivation: If no year specified, location is deactivated immediately\r\n\r\n- Scheduled deactivation: If year specified, deactivation occurs on December 31st at 23:59:59\r\n\r\n- Subordinate entities: All registers and fiscal units are deactivated\r\n\r\n- Fiscal units: Terminated after notice period (unless forceSubDeactivation is true)\r\n\r\n📝 **Important Notes:**\r\n- Process is irreversible once completed\r\n- All subordinate entities will be deactivated\r\n- Scheduled deactivation year must be current year or later\r\n- Fiscal Units will be terminated after notice period (unless forced)\r\n- Force sub-deactivation bypasses normal notice periods",
        "parameters": [
          {
            "name": "locationId",
            "in": "path",
            "description": "The unique identifier of the location to deactivate (minimum value: 2).",
            "required": true,
            "style": "simple",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "deactivateAfterYear",
            "in": "query",
            "description": "Optional year for scheduled deactivation (executed on December 31st at 23:59:59). Must be current year or later.",
            "style": "form",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "forceSubDeactivation",
            "in": "query",
            "description": "Optional flag to force immediate deactivation of all subordinate entities without waiting for notice periods.",
            "style": "form",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Location successfully deactivated or scheduled for deactivation. Returns operation status and details.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResultBase"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input data, validation failed, or location cannot be deactivated (e.g., invalid year)."
          },
          "403": {
            "description": "Insufficient permissions to deactivate the specified location."
          },
          "404": {
            "description": "Location not found or not accessible with current permissions."
          }
        }
      }
    },
    "/api/v2/Public/Location/Search": {
      "put": {
        "tags": [
          "3.Location"
        ],
        "summary": "Searches for locations based on given parameters in the request body.",
        "description": "Performs a filtered search across locations based on the provided search criteria. Multiple search parameters can be combined to narrow down results. Supports pagination, sorting, and various filtering options.\r\n            \r\n🔒 **Permissions:** ReadCompany permission is required for each location to appear in the search results.\r\n\r\n📝 **Search Parameters:**\r\n- `parentEntityId`: Filter by parent company (optional, minimum value: 2)\r\n\r\n- `createdAfter`: Filter by creation date (optional, ISO-8601 format)\r\n\r\n- `hasUserComment`: Filter by presence of user comments (optional, boolean)\r\n\r\n- `hasDeactivateAfterTimestamp`: Filter by deactivation date presence (optional, boolean)\r\n\r\n- `searchText`: Text search across name, comment, and other fields (optional, max 1000 characters)\r\n\r\n- `state`: Filter by location state - \"Productive\", \"Test\", or \"Deactivated\" (optional)\r\n\r\n- `countryCode`: Filter by ISO-2 country code (optional, exactly 2 characters, e.g., \"DE\", \"AT\", \"FR\")\r\n\r\n- `orderByField`: Sort field name (optional, default: \"name\")\r\n\r\n- `orderDescending`: Sort direction (optional, default: false for ascending)\r\n\r\n- `offset`: Number of items to skip for pagination (optional, minimum: 0)\r\n\r\n- `limit`: Number of items to return (optional, range: 0-250, default: 100)\r\n\r\n📝 **Important Notes:**\r\n- Maximum 250 results per request, default limit is 100 if not specified\r\n- If parentEntityId is provided, only direct children of that company are returned\r\n- State filtering supports: \"Productive\", \"Test\", \"Deactivated\"\r\n- Search is case-insensitive for text fields\r\n- Results include pagination metadata (total count, offset, limit)\r\n- Empty search criteria will return all accessible locations (up to limit)",
        "requestBody": {
          "description": "The search request object containing filter criteria, pagination settings, and sorting options for querying locations.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SearchPublicLocationsRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/SearchPublicLocationsRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/SearchPublicLocationsRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Search completed successfully. Returns matching locations with pagination information.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicLocationSearchPublicCompanyObjectsResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid search parameters, request format, or validation failed."
          },
          "403": {
            "description": "Invalid access grant or insufficient permissions to search locations."
          }
        }
      }
    },
    "/api/v2/Public/Location/{locationId}/Configuration": {
      "get": {
        "tags": [
          "3.Location"
        ],
        "summary": "Retrieves all configurations associated with a location.",
        "description": "Gets an Object with all the different configurations added to the Location. Returns all different configurations for Location, Terminal, Device Agency, Profile, eInvoice and Certificate.\r\n            \r\n🔒 **Permissions:** ReadCompany permission required for the specified location.\r\n\r\n📝 **Returned Information:**\r\n            \r\nThe returned information is the standard Result Object containing the LocationConfiguration.\r\n\r\n📝 **Important Notes:**\r\n- Only configurations for the specified location are returned\r\n- If the location is not found, a 404 error will be returned\r\n- Configurations will contain all the fields",
        "parameters": [
          {
            "name": "locationId",
            "in": "path",
            "description": "The unique identifier of the location to retrieve configurations for.",
            "required": true,
            "style": "simple",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Configurations retrieved successfully. Returns all configurations associated with the company.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetPublicLocationConfigurationResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid location ID format or request is malformed."
          },
          "403": {
            "description": "Insufficient permissions to access the specified location."
          },
          "404": {
            "description": "Location not found or not accessible with current permissions."
          }
        }
      },
      "post": {
        "tags": [
          "3.Location"
        ],
        "summary": "Updates all configurations associated with a location, deletes existing configurations that are not specified in the request object.",
        "description": "Updates or Deletes all specified configurations for Location, Terminal, Device Agency, Profile, eInvoice and Certificate of the given company.\r\n            \r\nUpdate behavior:\r\n- Providing a configuration object will update the existing one with the new values specified or create a new entry if it did not exist before.\r\n- Providing a specific configuration object but setting values as null will delete the properties from the configuration.\r\n- Not providing a specific configuration object by setting it null will ignore this configuration and neither create, nor update or delete anything from it.\r\n\r\n🔒 **Permissions:** ManageCompany permission required for the specified company.\r\n\r\n📝 **Important Notes:**\r\n- Only configurations for the specified location are saved\r\n- If the location is not found, a 404 error will be returned",
        "parameters": [
          {
            "name": "locationId",
            "in": "path",
            "description": "The unique identifier of the location to save configurations for.",
            "required": true,
            "style": "simple",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "sendConfiguration",
            "in": "query",
            "description": "Optional flag to trigger sending of updated configuration to all registers under the location. Default is false.",
            "style": "form",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "requestBody": {
          "description": "The request object containing all the configuration settings for the location with an identifier if the configurations shall be sent all Registers under this location.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdatePublicLocationConfigurationRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdatePublicLocationConfigurationRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/UpdatePublicLocationConfigurationRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Configurations saved successfully. Returns a warning text if there were configurations that could not be stored due to settings.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatePublicLocationConfigurationResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid company ID format or request is malformed."
          },
          "403": {
            "description": "Insufficient permissions to access the specified company."
          },
          "404": {
            "description": "Company not found or not accessible with current permissions."
          }
        }
      }
    },
    "/api/v2/Public/Register/{registerNumber}": {
      "get": {
        "tags": [
          "4.Register"
        ],
        "summary": "Gets the register by the specified register number.",
        "description": "Retrieves a single register by its unique register number. Returns complete register information.\r\n\r\n🔒 **Permissions:** ReadRegister permission on the company that owns the register.\r\n\r\n\r\n📝 **Important Notes:**\r\n- Register numbers are typically 11 digits long",
        "parameters": [
          {
            "name": "registerNumber",
            "in": "path",
            "description": "The unique register number to retrieve (e.g., \"12345678901\").",
            "required": true,
            "style": "simple",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Register retrieved successfully. Returns complete register data including all properties and metadata.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetPublicRegisterObjectResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid register number format or request is malformed."
          },
          "403": {
            "description": "Insufficient permissions to access the specified register."
          },
          "404": {
            "description": "Register not found or not accessible with current permissions."
          }
        }
      }
    },
    "/api/v2/Public/Register/Search": {
      "put": {
        "tags": [
          "4.Register"
        ],
        "summary": "Searches for registers based on given parameters in the request body.",
        "description": "Performs a filtered search across registers based on the provided search criteria. Multiple search parameters can be combined to narrow down results. Supports pagination, sorting, and various filtering options.\r\n            \r\n🔒 **Permissions:** ReadRegister permission is required for each register to appear in the search results.\r\n\r\n📝 **Search Parameters:**\r\n- `parentEntityId`: Filter by parent company (optional, minimum value: 2)\r\n\r\n- `createdAfter`: Filter by creation date (optional, ISO-8601 format)\r\n\r\n- `hasUserComment`: Filter by presence of user comments (optional, boolean)\r\n\r\n- `hasDeactivateAfterTimestamp`: Filter by deactivation date presence (optional, boolean)\r\n            \r\n- `state`: Filter by RegisterState (optional, Productive|Test|Deactivated)\r\n\r\n- `searchText`: Text search across register properties (optional, max 1000 characters)\r\n\r\n- `orderByField`: Sort field name (optional, default: \"registerNumber\")\r\n\r\n- `orderDescending`: Sort direction (optional, default: false for ascending)\r\n\r\n- `offset`: Number of items to skip for pagination (optional, minimum: 0)\r\n\r\n- `limit`: Number of items to return (optional, range: 0-250, default: 100)\r\n\r\n📝 **Important Notes:**\r\n- Maximum 250 results per request, default limit is 100 if not specified\r\n- If pFarentEntityId is provided, only registers of that company are returned\r\n- Search text filtering is applied across register properties\r\n- Results include pagination metadata (total count, offset, limit)\r\n- Empty search criteria will return all accessible registers (up to limit)",
        "requestBody": {
          "description": "The search request object containing filter criteria, pagination settings, and sorting options for querying registers.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SearchPublicRegistersRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/SearchPublicRegistersRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/SearchPublicRegistersRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Search completed successfully. Returns matching registers with pagination information.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicRegisterSearchPublicCompanyObjectsResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid search parameters, request format, or validation failed."
          },
          "403": {
            "description": "Invalid access grant or insufficient permissions to search registers."
          }
        }
      }
    },
    "/api/v2/Public/Register/{registerNumber}/Deactivate": {
      "put": {
        "tags": [
          "4.Register"
        ],
        "summary": "Deactivates a register or schedules deactivation for a future date.",
        "description": "Deactivates a register by changing state to \"Discharged\". This operation can be immediate or scheduled for a future date.\r\n\r\n🔒 **Permissions:** ManageRegister permission required for the company that owns the register.\r\n\r\n📝 **Important Notes:**\r\n- Register must not be in \"DATA_PENDING\" state to be deactivated\r\n- Registers with active subregisters cannot be deactivated\r\n- Registers still active with fiscal authorities cannot be deactivated\r\n- Already deactivated registers cannot be reanimated\r\n- Scheduled deactivation year must be current year or later",
        "parameters": [
          {
            "name": "registerNumber",
            "in": "path",
            "description": "The unique register number to deactivate (e.g., \"12345678901\").",
            "required": true,
            "style": "simple",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "deactivateAfterYear",
            "in": "query",
            "description": "Optional year for scheduled deactivation (executed on December 31st at 23:59:59). Must be current year or later.",
            "style": "form",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Register successfully deactivated or scheduled for deactivation. Returns operation status and details.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResultBase"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input data, validation failed, or register cannot be deactivated (e.g., invalid year, business rule violation)."
          },
          "403": {
            "description": "Insufficient permissions to deactivate the specified register."
          },
          "404": {
            "description": "Register not found or not accessible with current permissions."
          }
        }
      }
    },
    "/api/v2/Public/Register/{RegisterNumber}/UpdateSoftware/{Release}": {
      "put": {
        "tags": [
          "4.Register"
        ],
        "summary": "Assigns a specific software release version to a register for update purposes.",
        "description": "Updates the software release version assigned to a register. The operation is performed asynchronously in the background.\r\n\r\n🔒 **Permissions:** ManageRegister permission required for the company that owns the register.\r\n\r\n📝 **Update Process:**\r\n- Compatibility check: Target release must be compatible with register's platform and architecture\r\n\r\n- Background processing: Update is initiated asynchronously via messaging system\r\n\r\n- Version validation: Software version compatibility is verified\r\n\r\n- Platform restrictions: Cross-platform updates have specific limitations\r\n\r\n📝 **Important Notes:**\r\n- Register must exist and be accessible to the user\r\n- Target release must be compatible with the register's platform and architecture\r\n- Cross-platform updates have restrictions (e.g., Windows-only for major version changes)\r\n- Downgrade to version 1.x is not supported\r\n- EFR version 1.x is only available for ia32 architecture on Linux\r\n- Multiple target releases for the same parameters are not allowed\r\n- Update process runs in the background and may take time to complete\r\n\r\n⚡ **Error Codes:**\r\n- **01:** No register found to update\r\n\r\n- **02:** No assignment found to update\r\n\r\n- **03:** Multiple target releases found\r\n\r\n- **04:** No target release found\r\n\r\n- **06:** Main releases different - downgrade not possible or cross update only available for Windows",
        "parameters": [
          {
            "name": "RegisterNumber",
            "in": "path",
            "description": "The unique register number to update (e.g., \"12345678901\").",
            "required": true,
            "style": "simple",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Release",
            "in": "path",
            "description": "The software release version to assign (e.g., \"2.0.1\").",
            "required": true,
            "style": "simple",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Software update initiated successfully. Returns operation status and details.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PublicRegisterUpdateSoftwareResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid parameters, register not found, or compatibility issues."
          },
          "403": {
            "description": "Insufficient permissions to update the specified register."
          },
          "404": {
            "description": "Register not found or not accessible with current permissions."
          },
          "500": {
            "description": "Failed to initiate update due to messaging system failure."
          }
        }
      }
    },
    "/api/v2/Public/Register/{registerNumber}/Configuration": {
      "get": {
        "tags": [
          "4.Register"
        ],
        "summary": "Retrieves all configurations associated with a Register.",
        "description": "Gets an Object with all the different configurations added to the Register. Returns all different configurations for Company, Location, Terminal, Device Agency, Profile, eInvoice and Certificate.\r\n            \r\n🔒 **Permissions:** ReadCompany permission required for the specified Register.\r\n\r\n📝 **Returned Information:**\r\n            \r\nThe returned information is the standard Result Object containing the RegisterConfiguration.\r\n\r\n📝 **Important Notes:**\r\n- Only configurations for the specified register are returned\r\n- If the register is not found, a 404 error will be returned\r\n- Configurations will contain all the fields",
        "parameters": [
          {
            "name": "registerNumber",
            "in": "path",
            "description": "The unique identifier of the Register to retrieve configurations for.",
            "required": true,
            "style": "simple",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Configurations retrieved successfully. Returns all configurations associated with the Register.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetPublicRegisterConfigurationResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid registerNumber format or request is malformed."
          },
          "403": {
            "description": "Insufficient permissions to access the specified Register."
          },
          "404": {
            "description": "Register not found or not accessible with current permissions."
          }
        }
      },
      "post": {
        "tags": [
          "4.Register"
        ],
        "summary": "Updates all configurations associated with a Register, deletes existing configurations that are not specified in the request object.",
        "description": "Updates or Deletes all the different configurations added to the Register (Company, Location, Terminal, Device Agency, Profile, eInvoice and Certificate).\r\n            \r\nUpdate behavior:\r\n- Providing a configuration object will update the existing one with the new values specified or create a new entry if it did not exist before.\r\n- Providing a specific configuration object but setting values as null will delete the properties from the configuration.\r\n- Not providing a specific configuration object by setting it null will ignore this configuration and neither create, nor update or delete anything from it.\r\n\r\n🔒 **Permissions:** ManageRegister permission required for the specified Register.\r\n\r\n📝 **Important Notes:**\r\n- Only configurations for the specified location are returned\r\n- If the location is not found, a 404 error will be returned\r\n- Configurations will contain all the fields",
        "parameters": [
          {
            "name": "registerNumber",
            "in": "path",
            "description": "The unique identifier of the Register to retrieve configurations for. Contains a flag to indicate whether the configurations shall be sent to the actual register.",
            "required": true,
            "style": "simple",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "sendConfiguration",
            "in": "query",
            "description": "Optional flag to trigger sending of updated configuration to the registers. Default is false.",
            "style": "form",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "requestBody": {
          "description": "The configuration object containing all the different configurations to be set for the Register.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdatePublicRegisterConfigurationRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdatePublicRegisterConfigurationRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/UpdatePublicRegisterConfigurationRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Configurations retrieved successfully. Returns all configurations associated with the Register.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpdatePublicRegisterConfigurationResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid registerNumber format or request is malformed."
          },
          "403": {
            "description": "Insufficient permissions to access the specified Register."
          },
          "404": {
            "description": "Register not found or not accessible with current permissions."
          }
        }
      }
    },
    "/api/v2/Public/Purchase/{companyId}/Products": {
      "get": {
        "tags": [
          "5.Purchase"
        ],
        "summary": "Retrieves all available products for purchase by the specified company.",
        "description": "Returns a list of all products available for purchase by the company. Products are filtered based on company state, assignment type, and purchase mode restrictions.\r\n\r\n🔒 **Permissions:** Purchase permission on the specified company.\r\n\r\n📝 **Returned Data:**\r\n- Product information: ID, Name, DescriptionShort, DescriptionLong\r\n\r\n- Pricing details: PriceOnce, PriceReoccurring (may be hidden based on purchase mode)\r\n\r\n- Product details: WarningText, ImageLink, Supplier, AmountLimit\r\n\r\n- Localization: CountryCode, AmountSelectionType\r\n\r\n📝 **Important Notes:**\r\n- Products are filtered by state (Production/Test)\r\n- Efsta-only products are excluded from results\r\n- Purchase mode restrictions may hide prices or entire products\r\n- Results are ordered by CountryCode and Supplier\r\n- Language code defaults to \"en\" if not provided or invalid\r\n- Only active products are returned",
        "parameters": [
          {
            "name": "companyId",
            "in": "path",
            "description": "The unique identifier of the company to retrieve products for (minimum value: 1).",
            "required": true,
            "style": "simple",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "languageCode",
            "in": "query",
            "description": "The language code for product descriptions and details (e.g., \"en\", \"de\", \"fr\"). Defaults to \"en\" if not provided.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Products retrieved successfully. Returns all available products for the company with localized descriptions.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetPublicProductsResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid company ID format or language code."
          },
          "403": {
            "description": "Insufficient permissions to access company products."
          },
          "404": {
            "description": "Company not found or no products available."
          }
        }
      }
    },
    "/api/v2/Public/Purchase/{companyId}/List": {
      "get": {
        "tags": [
          "5.Purchase"
        ],
        "summary": "Retrieves a purchase overview for the specified company within the given date range.",
        "description": "Returns a comprehensive overview of all purchases made by the company within the specified date range. Results include purchase details, pricing information, and product information.\r\n\r\n🔒 **Permissions:** Purchase permission on the specified company.\r\n\r\n📝 **Important Notes:**\r\n- Results are ordered by purchase date (newest first)\r\n- Date format must be yyyyMMdd (e.g., \"20230101\" for January 1, 2023)\r\n- If fromDate is after tillDate, a validation error will be returned\r\n- Purchase mode restrictions may hide pricing information\r\n- Test orders are clearly marked in the results\r\n- Results include translated product names when available",
        "parameters": [
          {
            "name": "companyId",
            "in": "path",
            "description": "The unique identifier of the company to retrieve purchase overview for (minimum value: 1).",
            "required": true,
            "style": "simple",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "fromDate",
            "in": "query",
            "description": "The start date for the purchase overview in DateTimeOffset (e.g., \"2024-10-23T16:45:00Z\").",
            "style": "form",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "tillDate",
            "in": "query",
            "description": "The end date for the purchase overview in DateTimeOffset (e.g., \"2025-10-23T16:45:00Z\").",
            "style": "form",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Purchase overview retrieved successfully. Returns all purchases within the specified date range.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetPublicPurchaseOverviewResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid company ID, date format, or date range validation failed."
          },
          "403": {
            "description": "Insufficient permissions to access company purchase history."
          },
          "404": {
            "description": "Company not found or no purchases in the specified period."
          }
        }
      }
    },
    "/api/v2/Public/Purchase": {
      "post": {
        "tags": [
          "5.Purchase"
        ],
        "summary": "Creates a new purchase order for the specified company with the provided products and details.",
        "description": "Creates a new purchase order in the system. The purchase will be processed according to the company's payment method and billing preferences. All validation checks are performed before order creation.\r\n\r\n🔒 **Permissions:** Purchase permission required for all companies involved in the purchase (companyId, invoiceCompanyId, shippingCompanyId if provided).\r\n\r\n🔴 **Required Fields:**\r\n- `companyId`: ID of the company making the purchase (minimum value: 1)\r\n\r\n- `invoiceCompanyId`: ID of the company to invoice (minimum value: 1)\r\n\r\n- `items`: List of products to purchase with amounts and assignments\r\n\r\n- `recipientEmailAddress`: Email address for order notifications (valid email format)\r\n\r\n🔵 **Optional Fields:**\r\n- `shippingCompanyId`: ID of the company for shipping (if different from companyId)\r\n\r\n- `shippingName`: Name for shipping address (max 200 characters)\r\n\r\n- `shippingStreet`: Street address for shipping (max 200 characters)\r\n\r\n- `shippingCity`: City for shipping address (max 200 characters)\r\n\r\n- `shippingZip`: Postal code for shipping (max 20 characters)\r\n\r\n- `shippingCountryCode`: ISO-2 country code for shipping (exactly 2 characters)\r\n\r\n- `recipientEmailRealName`: Real name of the recipient (max 200 characters)\r\n\r\n- `customerReference`: Customer reference information (max 200 characters)\r\n\r\n📝 **Important Notes:**\r\n- Request must not be empty and must pass validation\r\n- All specified companies must be accessible with Purchase permission\r\n- Products must be available and valid for the company\r\n- Order processing is initiated asynchronously\r\n- Collective invoice is automatically enabled\r\n- Language is set based on user's language code or defaults to \"en-US\"",
        "requestBody": {
          "description": "The request body containing all necessary information for the purchase order including company details, products, and shipping information.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreatePublicPurchaseRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CreatePublicPurchaseRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CreatePublicPurchaseRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Purchase order created successfully. Returns operation status and details.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResultBase"
                }
              }
            }
          },
          "400": {
            "description": "Invalid purchase data, product unavailable, validation failed, or request is empty/invalid."
          },
          "403": {
            "description": "Insufficient permissions to create purchase for the specified companies."
          },
          "404": {
            "description": "Company not found or not accessible with current permissions."
          }
        }
      }
    },
    "/api/v2/Public/Export/{companyId}": {
      "post": {
        "tags": [
          "6.Export"
        ],
        "summary": "Initiates a new data export process for the specified company with the provided export parameters.",
        "description": "Starts an export process for company data. The export will be processed in the background and can be monitored using the returned ticket number.\r\n\r\n🔒 **Permissions:** ExportData permission on the specified company.\r\n\r\n🔴 **Required Fields:**\r\n- `from`: Start date for the export data range (ISO-8601 format)\r\n\r\n- `till`: End date for the export data range (ISO-8601 format)\r\n\r\n- `exportType`: Type of export to perform (see Export Types below)\r\n\r\n🔵 **Optional Fields:**\r\n- `registerNumber`: Specific register number or semicolon-separated register list to export (if not provided, all registers for the company are included)\r\n            \r\n- `externalRecipientEmail`: Email address of the External recipient of the export.\r\n            \r\n📑 **Export Types:**\r\n- `Journal_Archive_Json`: Journal archive export in JSON format\r\n- `Transactions_CSV`: Transactions export in CSV format\r\n- `AT_DEP_7_RKSV`: Austrian data collection protocol §7 RKSV\r\n- `AT_DEP_131_BAO`: Austrian data collection protocol §131 BAO\r\n- `DE_DSFinVK`: German DSFinVK export format\r\n- `DE_TSE_Export_Journal`: German TSE export (journal)\r\n- `DE_GoBD`: German GoBD export format\r\n- `FR_Fiscal`: French fiscal export format\r\n- `FR_Grand_Totals`: French grand totals export format\r\n- `PT_SAFT`: Portuguese SAF-T export format\r\n- `SI_Export`: Slovenian export format\r\n- `PL_Invoice_Register`: Polish invoice register incl. invoice corrections (XLSX workbook with AutoFilter)\r\n- `PL_KSeF_Sales_Report`: Polish fiscal and non-fiscal sales per tax rate (XLSX)\r\n\r\n📝 **Important Notes:**\r\n- Export process may take several minutes to complete\r\n- Export ticket number is returned immediately for tracking purposes\r\n- Export files are available for download for 30 days after completion\r\n- If no specific register is provided, all registers under the company are included\r\n- Export is processed asynchronously in the background\r\n- Use the ticket number to check export status and download completed files",
        "parameters": [
          {
            "name": "companyId",
            "in": "path",
            "description": "The unique identifier of the company to export data for (minimum value: 1).",
            "required": true,
            "style": "simple",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "The request body containing all parameters and settings for the export operation including date range, export type, and register selection.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/StartPublicExportRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/StartPublicExportRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/StartPublicExportRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Export initiated successfully. Returns ticket number for tracking the export progress.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/StartPublicExportResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid export parameters, company ID, or request format. Returns COMPANY_TYPE_INVALID when the company ID refers to an organisation; exports can only be created for a company or a location."
          },
          "403": {
            "description": "Insufficient permissions to export data for the specified company."
          },
          "404": {
            "description": "Company not found or no exportable data available."
          },
          "409": {
            "description": "Another export is already in progress for this company."
          }
        }
      }
    },
    "/api/v2/Public/Export/{companyId}/List": {
      "get": {
        "tags": [
          "6.Export"
        ],
        "summary": "Retrieves the list of all export operations for the specified company, including their current status and details.",
        "description": "Returns a comprehensive list of all export operations initiated for the company, including both completed and in-progress exports. Results include detailed status information and metadata for each export.\r\n            \r\n🔒 **Permissions:** ExportData permission on the specified company.\r\n            \r\n📝 **Returned Data:**\r\n- Export information: TicketNr, ExportType, Creation timestamp\r\n            \r\n- Status details: Current status, Progress information\r\n            \r\n- Date range: From date, Till date for the export\r\n            \r\n- File information: File size, Download availability\r\n            \r\n- Error details: Error messages for failed exports\r\n            \r\n📤 **Export Status Information:**\r\n- `Pending`: Export is queued and waiting to be processed\r\n            \r\n- `In Progress`: Export is currently being generated\r\n            \r\n- `Completed`: Export is ready for download\r\n            \r\n- `Failed`: Export failed due to an error\r\n            \r\n- `Canceled`: Export was canceled by user\r\n            \r\n- `Expired`: Export file has been automatically deleted\r\n            \r\n📝 **Important Notes:**\r\n- Export history is maintained for 30 days after completion\r\n- Export list is ordered by creation date (newest first)\r\n- Completed exports show file size and download expiration time\r\n- Failed exports include error details and failure reasons\r\n- Only exports with ExportType set are returned",
        "parameters": [
          {
            "name": "companyId",
            "in": "path",
            "description": "The unique identifier of the company to retrieve exports for (minimum value: 1).",
            "required": true,
            "style": "simple",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Export list retrieved successfully. Returns all export operations for the company with their current status.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetPublicExportsResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid company ID format or request is malformed."
          },
          "403": {
            "description": "Insufficient permissions to access company exports."
          },
          "404": {
            "description": "Company not found or no exports available."
          }
        }
      }
    },
    "/api/v2/Public/Export/{ticketNr}": {
      "get": {
        "tags": [
          "6.Export"
        ],
        "summary": "Downloads the completed export file using the specified ticket number.",
        "description": "Downloads the completed export file as a ZIP archive. The file contains all exported data in the requested format.\r\n            \r\n🔒 **Permissions:** ExportData permission on the company associated with the export ticket.\r\n            \r\n📝 **Download Process:**\r\n- File retrieval: Export files are retrieved from secure cloud storage\r\n            \r\n- Encryption: Files are stored encrypted\r\n            \r\n- ZIP creation: Multiple files are packaged into a single ZIP archive\r\n            \r\n- Stream delivery: File is streamed directly to the client\r\n            \r\n📝 **Important Notes:**\r\n- Export must be in \"Completed\" status to be downloadable\r\n- Export files are available for download for 30 days after completion\r\n- If multiple files exist, they are packaged into a single ZIP archive\r\n- If only one ZIP file exists, it is returned directly\r\n- File name follows the pattern: \"{ticketNr}.zip\"\r\n- Content-Type is set to \"application/zip\"",
        "parameters": [
          {
            "name": "ticketNr",
            "in": "path",
            "description": "The unique ticket number identifying the export to download (e.g., \"TKT-123456789\").",
            "required": true,
            "style": "simple",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Export file downloaded successfully. Returns the export file as a ZIP archive.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResultBase"
                }
              }
            }
          },
          "400": {
            "description": "Invalid ticket number format or request is malformed."
          },
          "403": {
            "description": "Insufficient permissions to download the export."
          },
          "404": {
            "description": "Export ticket not found or file no longer available."
          },
          "410": {
            "description": "Export file has expired and been deleted."
          }
        }
      }
    },
    "/api/v2/Public/Fiscal/DE/Reporting/List/{companyId}": {
      "get": {
        "tags": [
          "7.Fiscal"
        ],
        "summary": "Retrieves the list of all available fiscal reporting periods for the specified German company.",
        "description": "Returns a comprehensive list of all fiscal reporting periods available for the German company, including both completed and pending reporting periods. Results include detailed information about each reporting period's status and requirements.\r\n\r\n🔒 **Permissions:** ReadCompany permission on the specified company.\r\n\r\n📝 **Returned Data:**\r\n- Reporting period information: GUID, CompanyId, Period details\r\n\r\n- Status information: Current state, Processing status\r\n\r\n- Date information: Reporting period dates, Creation timestamps\r\n\r\n- Company context: Company type, Support level, Location details\r\n\r\n📝 **Important Notes:**\r\n- Only available for German companies with active fiscal registration\r\n- Results include both company and location-level reporting periods\r\n- Organization companies (CompanyType \"O\") are not supported\r\n- Results are filtered by company hierarchy and user permissions\r\n- Empty results indicate no fiscal reporting periods are available",
        "parameters": [
          {
            "name": "companyId",
            "in": "path",
            "description": "The unique identifier of the German company to retrieve fiscal reporting periods for (minimum value: 1).",
            "required": true,
            "style": "simple",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Reporting periods retrieved successfully. Returns all available fiscal reporting periods for the company.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DE_GetPublicReportingListResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid company ID format or company not German."
          },
          "403": {
            "description": "Insufficient permissions to access company fiscal data."
          },
          "404": {
            "description": "Company not found or no fiscal registration found."
          }
        }
      }
    },
    "/api/v2/Public/Fiscal/DE/Reporting/Data/{guid}": {
      "get": {
        "tags": [
          "7.Fiscal"
        ],
        "summary": "Retrieves the fiscal reporting data for the specified German reporting period.",
        "description": "Returns detailed fiscal reporting data for the specified German reporting period, including all relevant financial information required for compliance. Data is compiled from all registers and fiscal units within the company.\r\n\r\n🔒 **Permissions:** ReadCompany permission on the company associated with the reporting period.\r\n\r\n📝 **Returned Data:**\r\n- Reporting contact information: Contact details, Company association\r\n\r\n- Company data: Location name, Support level, Address details\r\n\r\n- Recording systems: System information, Deactivation status, Count\r\n\r\n- Previous reporting: Previous GUID reference for continuity\r\n\r\n- State information: Current processing state\r\n\r\n📝 **Important Notes:**\r\n- Reporting data is compiled from all registers and fiscal units within the company\r\n- Data format complies with German fiscal authority requirements (ELSTER format)\r\n- Street address is automatically parsed into components (name, number, suffix)\r\n- Recording systems count excludes deactivated systems\r\n- Previous reporting GUID is provided for data continuity\r\n- Data is only available for companies with valid company types (not Organization)\r\n- Owner company validation ensures proper hierarchy access",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "description": "The unique identifier of the reporting period to retrieve data for (e.g., \"12345678-1234-1234-1234-123456789012\").",
            "required": true,
            "style": "simple",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Reporting data retrieved successfully. Returns detailed fiscal reporting data for the specified period.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DE_GetPublicReportingDataResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid GUID format or reporting period not found."
          },
          "403": {
            "description": "Insufficient permissions to access reporting data."
          },
          "404": {
            "description": "Reporting period not found or no data available."
          },
          "409": {
            "description": "Data is currently being recalculated or updated."
          }
        }
      }
    },
    "/api/v2/Public/Fiscal/DE/Reporting/{guid}": {
      "post": {
        "tags": [
          "7.Fiscal"
        ],
        "summary": "Creates a fiscal report.",
        "description": "Creates an official fiscal report.\r\n\r\n🔒 **Permissions:** ManageCompany permission on the company associated with the reporting period.\r\n\r\n📝 **Submission Process:**\r\n- Disclaimer validation: Legal disclaimer must be accepted\r\n\r\n- State update: Reporting state is set to \"CREATING\"\r\n\r\n- Background processing: Report generation is initiated asynchronously\r\n\r\n📝 **Important Notes:**\r\n- Report submission is legally binding and cannot be reversed\r\n- Disclaimer acceptance is mandatory for report submission\r\n- Report is automatically formatted according to ELSTER specifications\r\n- Submission confirmation is provided by German tax authorities\r\n- Failed submissions may require manual intervention or correction\r\n- Report data is locked after successful submission\r\n- Digital signature is applied automatically during submission",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "description": "The unique identifier of the reporting period to create and submit the report for (e.g., \"12345678-1234-1234-1234-123456789012\").",
            "required": true,
            "style": "simple",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "acceptDisclaimer",
            "in": "query",
            "description": "Boolean flag indicating acceptance of legal disclaimer and submission terms. Must be true for submission to proceed.",
            "style": "form",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Report successfully created and submitted. Returns operation status and details.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResultBase"
                }
              }
            }
          },
          "400": {
            "description": "Invalid GUID, disclaimer not accepted, or validation failed."
          },
          "403": {
            "description": "Insufficient permissions to submit fiscal reports."
          },
          "404": {
            "description": "Reporting period not found or not ready for submission."
          },
          "409": {
            "description": "Report already submitted or submission in progress."
          },
          "422": {
            "description": "Report data validation failed."
          }
        }
      },
      "get": {
        "tags": [
          "7.Fiscal"
        ],
        "summary": "Retrieves the completed fiscal report document for the specified German reporting period.",
        "description": "Returns the official fiscal report document that was submitted to German tax authorities, including all supporting data and confirmations. The document is returned as a file download.\r\n\r\n🔒 **Permissions:** ReadCompany permission on the company associated with the reporting period.\r\n\r\n📝 **Download Process:**\r\n- Disclaimer validation: Legal disclaimer must be accepted\r\n\r\n- State verification: Report must be in \"CREATED\" or \"SENT\" state\r\n\r\n- File retrieval: Report file is retrieved from secure storage\r\n\r\n- Download tracking: Report access is logged for audit purposes\r\n\r\n📄 **Document Contents:**\r\n- Official Report: Complete fiscal report as submitted to authorities\r\n\r\n- Submission Confirmation: Official receipt and reference numbers\r\n\r\n- Data Summary: Aggregated financial information and calculations\r\n\r\n- Compliance Verification: Validation results and quality indicators\r\n\r\n- Supporting Documents: Related attachments and supplementary data\r\n\r\n📝 **Important Notes:**\r\n- Report document is only available after successful submission\r\n- Document includes official submission confirmations and reference numbers\r\n- Report format matches the version submitted to tax authorities\r\n- Access to official reports requires disclaimer acceptance\r\n- Report documents are archived and available for audit purposes\r\n- Document includes digital signature verification information\r\n- File format depends on state: XML for \"CREATED\", PDF for \"SENT\"\r\n- File name follows pattern: \"{ECI}_{Criteria}_{Time}_{Time}.{extension}\"",
        "parameters": [
          {
            "name": "guid",
            "in": "path",
            "description": "The unique identifier of the reporting period to retrieve the report for (e.g., \"12345678-1234-1234-1234-123456789012\").",
            "required": true,
            "style": "simple",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "acceptDisclaimer",
            "in": "query",
            "description": "Boolean flag indicating acceptance of legal disclaimer for accessing official report. Must be true for access to proceed.",
            "style": "form",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Fiscal report document retrieved successfully. Returns the official report document as a file download.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResultBase"
                }
              }
            }
          },
          "400": {
            "description": "Invalid GUID or disclaimer not accepted."
          },
          "403": {
            "description": "Insufficient permissions to access fiscal report."
          },
          "404": {
            "description": "Reporting period not found or report not yet available."
          },
          "409": {
            "description": "Report is still being processed or submitted."
          }
        }
      }
    },
    "/api/v2/Public/User/Active": {
      "get": {
        "tags": [
          "8.User"
        ],
        "summary": "Retrieves the currently active user profile information for the authenticated session.",
        "description": "Returns detailed information about the user associated with the current authentication method (e.g., API key). This endpoint is useful for verifying authentication and retrieving user context.\r\n\r\n🔒 **Permissions:** No specific permissions required - returns information about the authenticated user.\r\n\r\n📝 **Returned Data:**\r\n- User profile information: Real name, Email address, User ID\r\n\r\n- Language preferences: Preferred language code\r\n\r\n📝 **Important Notes:**\r\n- User information is based on the authentication method used (API key, token, etc.)\r\n- This endpoint can be used to verify API key validity and user status\r\n- Returns null if user profile cannot be found or mapped\r\n- User profile is mapped from internal user profile structure",
        "responses": {
          "200": {
            "description": "User profile retrieved successfully. Returns detailed information about the authenticated user.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetActiveUserResult"
                }
              }
            }
          },
          "404": {
            "description": "User not found or API key mapping error."
          }
        }
      }
    },
    "/api/v2/Public/User/Invite": {
      "post": {
        "tags": [
          "8.User"
        ],
        "summary": "Creates and sends an invitation for a new user to join the specified company with defined permissions.",
        "description": " Sends an invitation email to a new user, allowing them to register and gain access to the specified company with the defined role and permissions.\r\n \r\n 🔒 **Permissions:** ManageUsers on the company identified via companyId of the body data.\r\n\r\n**Parameters:**\r\n - `companyId` (integer): The ID of the company to invite a user to.\r\n - `emailAddress` (string): The email address this invitation will be sent to.\r\n - `role` (string): Defines the role that will be set for the invited user as soon as he accepts the invitation. Default:(VIEWER)\r\n - `customText` (string): A custom text that will be added to the default invitation text. It might contain information about why the user has been invited and what to do or who to contact\r\n - `suggestedRealName` (string): The suggested real name for the user that the real user can change when logging in for the first time\r\n - `inviter`: The ID of the user who is sending the invitation.\r\n \r\n 📝 **Important Notes:**\r\n - Invitation email is sent to the specified email address with registration instructions\r\n - Default role is \"VIEWER\" if no role is specified in the request\r\n - Invitation includes a secure token with expiration date\r\n - Only users with ManageUsers permission can send invitations\r\n - API endpoint throttling may apply to prevent spam\r\n - Duplicate invitations to the same email for the same company are prevented\r\n \r\n **Invitation Process:**\r\n - **Validation:** Email format, company access, and role validity are checked\r\n - **Creation:** Invitation record is created with secure token\r\n - **Email Delivery:** Invitation email is sent with registration link\r\n - **Registration:** User follows link to complete registration process\r\n - **Activation:** User account is activated and linked to the company\r\n \r\n 👨‍💼**Role Assignment:**\r\n - **ADMIN** - Full system access (8 permissions)\r\n     - ✅ ReadCompany, ManageCompany, ManageRegister, ManageUsers, ManageBill, Purchase, ExportData, ReadRegister\r\n \r\n - **EDITOR** - Management capabilities without purchasing (7 permissions)\r\n     - ✅ ReadCompany, ManageCompany, ManageRegister, ManageUsers, ManageBill, ExportData, ReadRegister\r\n     - ❌ Purchase\r\n \r\n - **DATAFISCAL** - Company and data management (4 permissions)\r\n     - ✅ ReadCompany, ManageCompany, ReadRegister, ExportData\r\n     - ❌ ManageRegister, ManageUsers, ManageBill, Purchase\r\n \r\n - **DATAVIEWER** - Read-only with export capabilities (3 permissions)\r\n     - ✅ ReadCompany, ReadRegister, ExportData\r\n     - ❌ ManageCompany, ManageRegister, ManageUsers, ManageBill, Purchase\r\n \r\n - **FISCAL** - Basic company management (3 permissions)\r\n     - ✅ ReadCompany, ManageCompany, ReadRegister\r\n     - ❌ ManageRegister, ManageUsers, ManageBill, Purchase, ExportData\r\n \r\n - **VIEWER** - Read-only access (2 permissions)\r\n     - ✅ ReadCompany, ReadRegister\r\n     - ❌ ManageCompany, ManageRegister, ManageUsers, ManageBill, Purchase, ExportData",
        "requestBody": {
          "description": "The request body containing all details for the invitation request including email, company, and role information.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateInvitationRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateInvitationRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CreateInvitationRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Invitation created and sent successfully. Returns operation status and details.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResultBase"
                }
              }
            }
          },
          "400": {
            "description": "Invalid request data, validation failed, or missing required fields."
          },
          "403": {
            "description": "Insufficient permissions to invite users to the specified company."
          }
        }
      }
    },
    "/api/v2/Public/User/DeleteAccess": {
      "delete": {
        "tags": [
          "8.User"
        ],
        "summary": "Removes user access permissions for a specific company and all its child entities.",
        "description": "Permanently removes all role assignments for the specified user from the target company and its entire hierarchy (child companies, locations, etc.). \r\nThis operation uses the company's parent-child relationship to restore appropriate permissions from parent companies if they exist.\r\n\r\n🔒 **Permissions:** ManageUsers permission required on the target company.\r\n\r\n📝 **Important Notes:**\r\n- **Hierarchical Impact:** Removes permissions from the target company AND all child entities\r\n- **Parent Permission Restoration:** If the user has roles in parent companies, those roles may be automatically restored for the affected hierarchy\r\n- **No Parent Roles:** If no parent company roles exist, the user will lose all access to the company hierarchy\r\n- **Irreversible Action:** This operation cannot be undone - user permissions must be manually re-assigned if needed\r\n\r\n⚠️ **Warning:** Use with caution as this affects the entire company hierarchy, not just the specified company.",
        "parameters": [
          {
            "name": "CompanyId",
            "in": "query",
            "description": "The unique identifier of the company from which to remove user access permissions (minimum value: 1).",
            "style": "form",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "UserId",
            "in": "query",
            "description": "The unique identifier of the user whose access should be removed (minimum value: 1).",
            "style": "form",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "User access removed successfully. Returns operation status and details.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResultBase"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input parameters or company/user not found."
          },
          "403": {
            "description": "Insufficient permissions to manage users for the specified company."
          }
        }
      }
    },
    "/api/v2/Public/User/Invited": {
      "get": {
        "tags": [
          "8.User"
        ],
        "summary": "Retrieves all users with permissions for a specific company, including their roles and detailed permission lists.",
        "description": "Returns a comprehensive list of all users who have any form of access to the specified company. Each user entry includes detailed information about their roles and permissions.\r\n\r\n🔒 **Permissions:** ReadCompany permission required on the target company.\r\n\r\n📝 **Returned Data:**\r\n- User profile information: Real name, Email address, User ID\r\n\r\n- Language preferences: Preferred language code\r\n\r\n- Permission details: Expanded list of specific permissions granted through the role\r\n\r\n- Summary information: Total count of users, Success status\r\n\r\n📝 **Important Notes:**\r\n- Complete Permission Overview: Shows both role names and expanded permission details for transparency\r\n- User Management: Essential for admin users to understand who has access to what\r\n- Security Auditing: Provides detailed permission breakdown for compliance reviews\r\n- Role-Based Access: Displays the relationship between roles and actual permissions\r\n- Only non-inherited roles are included in the results\r\n- Results are ordered by user name and role name\r\n- Empty results indicate no users have direct access to the company",
        "parameters": [
          {
            "name": "companyId",
            "in": "query",
            "description": "The unique identifier of the company to retrieve user permissions for (minimum value: 1).",
            "style": "form",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Company users retrieved successfully. Returns list of users with their permissions and roles.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetCompanyUsersResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid company ID format or company not found."
          },
          "403": {
            "description": "Insufficient permissions to view users for the specified company."
          }
        }
      }
    },
    "/api/v2/Public/Permission/{companyId}": {
      "get": {
        "tags": [
          "9.Tools"
        ],
        "summary": "Tests whether the authenticated user has the specified permission on the given company.",
        "description": "Performs a permission check to determine if the current user has the specified permission on the given company. This is useful for API clients to verify access before attempting operations.\r\n\r\n🔒 **Permissions:** No specific permissions required - tests current user's permissions.\r\n\r\n📝 **Returned Data:**\r\n- Permission result: Boolean indicating whether the user has the specified permission\r\n\r\n- Success status: Operation completion status\r\n\r\n🗝️ **Permission Types:**\r\n- `ReadCompany`: View company information and basic data\r\n\r\n- `ManageCompany`: Edit company settings and configuration\r\n\r\n- `ReadRegister`: View register information and status\r\n\r\n- `ManageRegister`: Configure and manage register\r\n\r\n- `Purchase`: Permission to place new purchases in the efsta Cloud\r\n\r\n- `ExportData`: Permission to export archive data from registers and companies\r\n\r\n- `ManageUsers`: Permission to manage users by adding new ones or remove and changing existing ones\r\n\r\n- `ManageBill`: Permission to manage efsta Bill and efsta Wallet configurations\r\n\r\n📝 **Important Notes:**\r\n- This endpoint is useful for API clients to verify access before attempting operations\r\n- Returns false if the user does not have the specified permission\r\n- Returns true if the user has the specified permission\r\n- Permission check is performed using the current authenticated user's context",
        "parameters": [
          {
            "name": "companyId",
            "in": "path",
            "description": "The unique identifier of the company to test permissions for (minimum value: 1).",
            "required": true,
            "style": "simple",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "permissionType",
            "in": "query",
            "description": "The type of permission to test. Select from the dropdown menu.",
            "style": "form",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Permission test completed successfully. Returns permission test result (true/false).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PermissionTestResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid company ID format or permission type."
          }
        }
      }
    },
    "/api/v2/Public/Company/{companyId}/Tree": {
      "get": {
        "tags": [
          "9.Tools"
        ],
        "summary": "Retrieves the complete organizational hierarchy for a company.",
        "description": "Gets the company tree structure for the specified company, including its hierarchical relationships. Using the \"get\" filter options enables narrowing down the list of entries to traverse during the buildup of the result.\r\n\r\n🔒 **Permissions:** ReadCompany permission required for the base company. Additional permissions required for subordinate entities.\r\n\r\n📝 **Filter Options:**\r\n\r\n- `includeRegisters`: Include cash registers in the hierarchy tree\r\n\r\n📝 **Returned Data:**\r\n- Root node: The base company as the root of the hierarchy tree\r\n\r\n- Child nodes: All subordinate entities based on filter settings\r\n\r\n- Hierarchy structure: Parent-child relationships between entities\r\n\r\n- Entity details: Object name, ID, type, owner, State\r\n\r\n**Hierarchy Structure:**\r\n- Organizations (top level)\r\n\r\n- Companies (business entities)\r\n\r\n- Locations (physical sites)\r\n\r\n- Registers (cash register systems)\r\n\r\n📝 **Important Notes:**\r\n- Organization, company and locations are always displayed\r\n- Results are ordered by PATH for proper hierarchical structure\r\n- Empty results indicate no accessible entities in the hierarchy",
        "parameters": [
          {
            "name": "companyId",
            "in": "path",
            "description": "The unique identifier of the base company for hierarchy retrieval (minimum value: 2).",
            "required": true,
            "style": "simple",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "includeRegisters",
            "in": "query",
            "description": "Include cash registers in the hierarchy tree (default: true).",
            "style": "form",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Company hierarchy retrieved successfully. Returns the complete organizational tree structure.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetCompanyTreeResult"
                }
              }
            }
          },
          "400": {
            "description": "Invalid company ID format or filter parameters."
          },
          "403": {
            "description": "Insufficient permissions or invalid access grant."
          },
          "404": {
            "description": "Base company not found."
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "AddPublicFeatureRequest": {
        "type": "object",
        "properties": {
          "countryCode": {
            "type": "string",
            "description": "The CountryCode for the country for which the feature should be activated.",
            "nullable": true
          },
          "featureCode": {
            "type": "string",
            "description": "The FeatureCode for the feature to be added.",
            "nullable": true
          },
          "clearingUnit": {
            "type": "integer",
            "description": "The ClearingUnit for the feature to be added. This is an integer value between 2 and 5.",
            "format": "int32"
          },
          "termsAccepted": {
            "type": "boolean",
            "description": "Flag indicating whether the user has accepted the terms and conditions for the feature to be added. This is only relevant for selected features."
          },
          "buyerName": {
            "type": "string",
            "description": "The name of the person who is ordering the feature. This is an optional field.",
            "nullable": true
          },
          "buyerFunction": {
            "type": "string",
            "description": "The function or role of the person who is ordering the feature. This is an optional field.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "The request object for adding a feature to a company or register."
      },
      "AddPublicFeatureResult": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Defines whether the request has been processed successfully or not. If ```true```, the other error properties will typically not be provided.",
            "example": true
          },
          "errorCode": {
            "type": "string",
            "description": "Specifies the type of error that happened during execution of the actual request.",
            "nullable": true,
            "example": null
          },
          "errorMessage": {
            "type": "string",
            "description": "Contains a brief description about what happened in the request handling process that resulted in the given Portal.API.Models.PublicModels.V2.Base.ResultBase.ErrorCode",
            "nullable": true,
            "example": null
          },
          "errorMessageTranslated": {
            "type": "string",
            "description": "Contains a translated version of the error message that has been defined for the Portal.API.Models.PublicModels.V2.Base.ResultBase.ErrorCode property.",
            "nullable": true,
            "example": null
          },
          "validationErrors": {
            "type": "object",
            "additionalProperties": false,
            "description": "Validation Errors for each Property.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "CertificateConfiguration": {
        "type": "object",
        "properties": {
          "certificate": {
            "type": "string",
            "description": "The certificate file content (Base64-encoded) used for authenticating with the fiscal authority.",
            "nullable": true,
            "example": "MIIBIjANBgkqhki..."
          },
          "passphrase": {
            "type": "string",
            "description": "The passphrase required to unlock the certificate.",
            "nullable": true,
            "example": "s3cur3P@ss!"
          },
          "signCertificate": {
            "type": "string",
            "description": "Poland only: The signing certificate file content (Base64-encoded) used for digitally signing fiscal documents.",
            "nullable": true,
            "example": "MIICdgIBADANBg..."
          },
          "signPassphrase": {
            "type": "string",
            "description": "Poland only: The passphrase required to unlock the signing certificate.",
            "nullable": true,
            "example": "S1gnP@ss!"
          }
        },
        "additionalProperties": false,
        "description": "Represents the certificate configuration used for signing or authenticating\r\nfiscal communications with the tax authorities."
      },
      "CompanyConfiguration": {
        "type": "object",
        "properties": {
          "nam": {
            "type": "string",
            "description": "The legal or display name of the company.",
            "nullable": true,
            "example": "efsta IT Services GmbH"
          },
          "adr": {
            "type": "string",
            "description": "The street name (without house / building number) of the company address.",
            "nullable": true,
            "example": "Main Street"
          },
          "adrNr": {
            "type": "string",
            "description": "The house or building number belonging to the street address.",
            "nullable": true,
            "example": "12a"
          },
          "zip": {
            "type": "string",
            "description": "The postal / ZIP code of the company address.",
            "nullable": true,
            "example": "10115"
          },
          "city": {
            "type": "string",
            "description": "The city the company is located in.",
            "nullable": true,
            "example": "Berlin"
          },
          "ctry": {
            "type": "string",
            "description": "The ISO-2 country code of the company location (e.g. DE for Germany, AT for Austria).",
            "nullable": true,
            "example": "DE"
          },
          "taxId": {
            "type": "string",
            "description": "The official tax identification number of the company (e.g. UID in Austria, USt-ID in Germany).\r\nThis value is immutable and cannot be changed once it has been set.",
            "nullable": true,
            "example": "DE123456789"
          },
          "label": {
            "type": "string",
            "description": "A free-text label that can be used to give the company a recognizable short name (e.g. \"Headquarters\" or \"Warehouse North\").",
            "nullable": true,
            "example": "Headquarters"
          },
          "tin": {
            "type": "string",
            "description": "Germany only: The German tax number (\"Steuernummer\") assigned by the local tax office.\r\nThis is different from the EU VAT ID and is mainly used for domestic tax filings.\r\nThe only accepted format is the 13-digit format.",
            "nullable": true,
            "example": "1112034567890"
          },
          "fR_NAF": {
            "type": "string",
            "description": "France only: The NAF / APE code identifying the main business activity of the company,\r\nas assigned by the French statistics authority INSEE.",
            "nullable": true,
            "example": "47.11D"
          },
          "fR_SRN": {
            "type": "string",
            "description": "France only: The SIREN number, a unique 9-digit identifier assigned to every French company.",
            "nullable": true,
            "example": "732 829 32"
          },
          "fR_TYPE": {
            "type": "string",
            "description": "France only: The legal form of the company (e.g. SARL, SAS, SA).",
            "nullable": true,
            "example": "SARL"
          },
          "fR_CAPITAL": {
            "type": "string",
            "description": "France only: The registered share capital of the company in Euro.",
            "nullable": true,
            "example": "10000"
          },
          "fR_RCS": {
            "type": "string",
            "description": "France only: The RCS (\"Registre du Commerce et des Sociétés\") registration including the city of the commercial court the company is registered with.",
            "nullable": true,
            "example": "RCS Paris 123456789"
          },
          "fR_METIER": {
            "type": "string",
            "description": "France only: The trade register entry for craftsmen (\"Répertoire des Métiers\"), if applicable.",
            "nullable": true,
            "example": "RM 123456789"
          },
          "vaTonPayment": {
            "type": "string",
            "description": "France only: Indicates whether VAT is calculated on payment (\"cash accounting\") instead of on invoicing.\r\nUse \"true\" to enable VAT on payment, otherwise \"false\".",
            "nullable": true,
            "example": "false"
          },
          "province": {
            "type": "string",
            "description": "Spain only: The province (\"provincia\") the company is registered in. Required for Spanish tax reporting.\r\nThis value is immutable and cannot be changed via the API.",
            "nullable": true,
            "example": "Madrid"
          },
          "org": {
            "type": "string",
            "description": "Sweden only: The Swedish organization number (\"Organisationsnummer\"), a unique identifier assigned to every Swedish legal entity.",
            "nullable": true,
            "example": "5560123456"
          }
        },
        "additionalProperties": false,
        "description": "Represents the configuration data of a company, including legal information,\r\naddress details and country-specific tax or registration values."
      },
      "CompanyUserPermissionInfo": {
        "type": "object",
        "properties": {
          "userId": {
            "type": "integer",
            "description": "The unique ID of the user.",
            "format": "int32",
            "example": 123
          },
          "realname": {
            "type": "string",
            "description": "The real name of the user profile, typically containing a human readable text describing the user (i.e. the actual name of a person or the purpose of the API key)",
            "nullable": true,
            "example": "John Doe"
          },
          "emailAddress": {
            "type": "string",
            "description": "The registered email address of the user profile, e.g. for needed communication.",
            "nullable": true,
            "example": "john.doe@partner-company.com"
          },
          "preferredLanguage": {
            "type": "string",
            "description": "The language code used for communication and translation (whenever translation is available).",
            "nullable": true,
            "example": "en"
          },
          "roleInvariantName": {
            "type": "string",
            "description": "Name of the Role",
            "nullable": true,
            "example": "EDITOR"
          },
          "permissions": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "The permissions granted to the user.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ConfigurationSendingState": {
        "type": "object",
        "properties": {
          "companyConfigurationSending": {
            "type": "boolean",
            "description": "Indicates whether the company configuration is currently being sent to the register."
          },
          "locationConfigurationSending": {
            "type": "boolean",
            "description": "Indicates whether the location configuration is currently being sent to the register."
          },
          "terminalConfigurationSending": {
            "type": "boolean",
            "description": "Indicates whether the terminal configuration is currently being sent to the register."
          },
          "profileConfigurationSending": {
            "type": "boolean",
            "description": "Indicates whether the profile configuration is currently being sent to the register."
          },
          "deviceConfigurationSending": {
            "type": "boolean",
            "description": "Indicates whether the device configuration is currently being sent to the register."
          },
          "agencyConfigurationSending": {
            "type": "boolean",
            "description": "Indicates whether the agency configuration is currently being sent to the register."
          },
          "eDocumentConfigurationSending": {
            "type": "boolean",
            "description": "Indicates whether the e-document configuration is currently being sent to the register."
          },
          "certificateConfigurationSending": {
            "type": "boolean",
            "description": "Indicates whether the certificate configuration is currently being sent to the register."
          }
        },
        "additionalProperties": false,
        "description": "Indicates which configuration sections are currently being sent to the register."
      },
      "ContactType": {
        "enum": [
          "Unknown",
          "InvoiceContact",
          "TechnicalContact",
          "CommercialContact",
          "ElsterContact"
        ],
        "type": "string"
      },
      "CreateInvitationRequest": {
        "type": "object",
        "properties": {
          "companyId": {
            "type": "integer",
            "description": "The ID of the company to invite a user to. This can be both an ID identifying an organization or a company.",
            "format": "int32",
            "example": 1545
          },
          "role": {
            "type": "string",
            "description": "Defines the role that will be set for the invited user as soon as he accepts the invitation. Allowed values are\r\n\"ADMIN\", \"DATAFISCAL\", \"DATAVIEWER\", \"EDITOR\", \"FISCAL\", \"VIEWER\"",
            "nullable": true,
            "example": "EDITOR"
          },
          "emailAddress": {
            "type": "string",
            "description": "The email address this invitation will be sent to. This does not have to be the email address the user uses for the actual\r\nefsta Portal account and the email can also be forwarded.",
            "nullable": true,
            "example": "john.doe@partner-company.com"
          },
          "customText": {
            "type": "string",
            "description": "A custom text that will be added to the default invitation text. It might contain information about why the used has been invited\r\nand what to do or who to contact.",
            "nullable": true,
            "example": "Welcome to our efsta Portal! Please contact our IT department if you need assistance with the initial setup."
          },
          "suggestedRealName": {
            "type": "string",
            "description": "The suggested real name for the user that the real user can change when logging in for the first time.",
            "nullable": true,
            "example": "John Doe"
          },
          "inviter": {
            "type": "integer",
            "description": "The ID of the user who is creating this invitation.",
            "format": "int32",
            "example": 123
          }
        },
        "additionalProperties": false,
        "description": "The request object used to invite a new user to a certain node in the company tree."
      },
      "CreatePublicCompanyContactRequest": {
        "type": "object",
        "properties": {
          "companyId": {
            "type": "integer",
            "format": "int32"
          },
          "contactName": {
            "type": "string",
            "nullable": true
          },
          "emailAddress": {
            "type": "string",
            "nullable": true
          },
          "contactType": {
            "type": "string",
            "nullable": true
          },
          "languageCode": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request model for creating a new company contact in the system."
      },
      "CreatePublicCompanyContactResult": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Defines whether the request has been processed successfully or not. If ```true```, the other error properties will typically not be provided.",
            "example": true
          },
          "errorCode": {
            "type": "string",
            "description": "Specifies the type of error that happened during execution of the actual request.",
            "nullable": true,
            "example": null
          },
          "errorMessage": {
            "type": "string",
            "description": "Contains a brief description about what happened in the request handling process that resulted in the given Portal.API.Models.PublicModels.V2.Base.ResultBase.ErrorCode",
            "nullable": true,
            "example": null
          },
          "errorMessageTranslated": {
            "type": "string",
            "description": "Contains a translated version of the error message that has been defined for the Portal.API.Models.PublicModels.V2.Base.ResultBase.ErrorCode property.",
            "nullable": true,
            "example": null
          },
          "validationErrors": {
            "type": "object",
            "additionalProperties": false,
            "description": "Validation Errors for each Property.",
            "nullable": true
          },
          "companyContact": {
            "$ref": "#/components/schemas/PublicCompanyContact"
          }
        },
        "additionalProperties": false
      },
      "CreatePublicCompanyRequest": {
        "type": "object",
        "properties": {
          "parentEntityId": {
            "type": "integer",
            "description": "Represents the unique identifier of the company that owns the object.",
            "format": "int32",
            "example": 3434
          },
          "name": {
            "type": "string",
            "description": "Represents the name of the object.",
            "nullable": true
          },
          "address": {
            "type": "string",
            "description": "The Address the object is located in (street and street number).",
            "nullable": true,
            "example": "123 Main Street"
          },
          "city": {
            "type": "string",
            "description": "The name of the city the object is located in.",
            "nullable": true,
            "example": "Berlin"
          },
          "zip": {
            "type": "string",
            "description": "The zip / postal code the object is located in.",
            "nullable": true,
            "example": "10115"
          },
          "countryCode": {
            "type": "string",
            "description": "The ISO-2 country code of the address of the object (e.g. DE, FR or AT)",
            "nullable": true,
            "example": "DE"
          },
          "invoiceEmailAddress": {
            "type": "string",
            "description": "The invoice email address relevant for all nodes that receive invoice-emails (primarily company entries)",
            "nullable": true,
            "example": "invoices@acmecorp.com"
          },
          "userComment": {
            "type": "string",
            "description": "A custom comment set by users to further decribe the current node.",
            "nullable": true,
            "example": "Main headquarters, established 1985"
          },
          "state": {
            "type": "string",
            "description": "Changes existing or creates new company objects as test company objects. THIS CANNOT BE UNDONE!\r\nValid values: \"Productive\", \"Test\"",
            "nullable": true,
            "example": "Productive"
          },
          "countryProperties": {
            "$ref": "#/components/schemas/PublicCompanyCountryProperties"
          },
          "taxId": {
            "type": "string",
            "description": "The tax ID (also known as the ECI / external company identification) that is typically the EU tax ID (USt-ID, UID, etc.) of that company.\r\nThis is legally required and will be validated whenever possible / needed by efsta.",
            "nullable": true,
            "example": "DE999999999"
          },
          "ignoreTaxId": {
            "type": "boolean",
            "description": "If set to true, the validation of the TaxId will be skipped. The TaxId will still be saved.",
            "example": false
          }
        },
        "additionalProperties": false,
        "description": "The request object used on the public controller to create a new company entry in the company tree."
      },
      "CreatePublicLocationRequest": {
        "type": "object",
        "properties": {
          "parentEntityId": {
            "type": "integer",
            "description": "Represents the unique identifier of the company that owns the object.",
            "format": "int32",
            "example": 3434
          },
          "name": {
            "type": "string",
            "description": "Represents the name of the object.",
            "nullable": true
          },
          "address": {
            "type": "string",
            "description": "The Address the object is located in (street and street number).",
            "nullable": true,
            "example": "123 Main Street"
          },
          "city": {
            "type": "string",
            "description": "The name of the city the object is located in.",
            "nullable": true,
            "example": "Berlin"
          },
          "zip": {
            "type": "string",
            "description": "The zip / postal code the object is located in.",
            "nullable": true,
            "example": "10115"
          },
          "countryCode": {
            "type": "string",
            "description": "The ISO-2 country code of the address of the object (e.g. DE, FR or AT)",
            "nullable": true,
            "example": "DE"
          },
          "invoiceEmailAddress": {
            "type": "string",
            "description": "The invoice email address relevant for all nodes that receive invoice-emails (primarily company entries)",
            "nullable": true,
            "example": "invoices@acmecorp.com"
          },
          "userComment": {
            "type": "string",
            "description": "A custom comment set by users to further decribe the current node.",
            "nullable": true,
            "example": "Main headquarters, established 1985"
          },
          "state": {
            "type": "string",
            "description": "Changes existing or creates new company objects as test company objects. THIS CANNOT BE UNDONE!\r\nValid values: \"Productive\", \"Test\"",
            "nullable": true,
            "example": "Productive"
          },
          "locationIdentification": {
            "type": "string",
            "description": "The identification of the location within the company (e.g. the location number, a unique identifier) Can contain upper and lower case characters as\r\nwell as numbers and special characters -+<>#.,=.",
            "nullable": true,
            "example": "LOC-001"
          }
        },
        "additionalProperties": false,
        "description": "The request object used on the public controller to create a new location entry in the company tree."
      },
      "CreatePublicOrganizationRequest": {
        "type": "object",
        "properties": {
          "parentEntityId": {
            "type": "integer",
            "description": "Represents the unique identifier of the company that owns the object.",
            "format": "int32",
            "example": 3434
          },
          "name": {
            "type": "string",
            "description": "Represents the name of the object.",
            "nullable": true
          },
          "invoiceEmailAddress": {
            "type": "string",
            "description": "The invoice email address relevant for all nodes that receive invoice-emails (primarily company entries)",
            "nullable": true,
            "example": "invoices@acmecorp.com"
          },
          "userComment": {
            "type": "string",
            "description": "A custom comment set by users to further decribe the current node.",
            "nullable": true,
            "example": "Main headquarters, established 1985"
          },
          "state": {
            "type": "string",
            "description": "Changes existing or creates new company objects as test company objects. THIS CANNOT BE UNDONE!\r\nValid values: \"Productive\", \"Test\"",
            "nullable": true,
            "example": "Productive"
          },
          "address": {
            "type": "string",
            "nullable": true
          },
          "city": {
            "type": "string",
            "nullable": true
          },
          "zip": {
            "type": "string",
            "nullable": true
          },
          "countryCode": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "The request object used on the public controller to create a new organization entry in the company tree."
      },
      "CreatePublicPurchaseRequest": {
        "type": "object",
        "properties": {
          "companyId": {
            "type": "integer",
            "description": "The ID of the actual company the purchase is made for (i.e. the beneficiary)",
            "format": "int32",
            "example": 1545
          },
          "customerReference": {
            "type": "string",
            "description": "A custom reference value that can be used to find and identify a specific purchase in the efsta system.",
            "nullable": true,
            "example": "P-35333-94911-U"
          },
          "invoiceCompanyId": {
            "type": "integer",
            "description": "The ID of the company that will be used for invoicing. Must be a company object entry that is allowed to receive invoices (i.e. must have Tax ID and address)",
            "format": "int32",
            "example": 1545
          },
          "shippingCompanyId": {
            "type": "integer",
            "description": "In case no manual address has been passed, the Id of the company entry to ship to can be passed for the purchase. The address of that company or location will\r\nreceive physical items (like USB TSEs or signature devices).",
            "format": "int32",
            "nullable": true,
            "example": 1546
          },
          "shippingName": {
            "type": "string",
            "description": "The legal name of the receiving address object (e.g. a person or the shop name).",
            "nullable": true,
            "example": "ACME Store Berlin"
          },
          "shippingStreet": {
            "type": "string",
            "description": "The street name of the receiving address.",
            "nullable": true,
            "example": "Friedrichstraße 101"
          },
          "shippingZip": {
            "type": "string",
            "description": "The zip / postal code of the receiving address.",
            "nullable": true,
            "example": "10117"
          },
          "shippingCity": {
            "type": "string",
            "description": "The city name of the receiving address.",
            "nullable": true,
            "example": "Berlin"
          },
          "shippingCountryCode": {
            "type": "string",
            "description": "The ISO-2 code of the country of the receiving address.",
            "nullable": true,
            "example": "DE"
          },
          "recipientEmailAddress": {
            "type": "string",
            "description": "In case an item will be sent via email (e.g. old PrimeSign online certificates) they will be sent to this email address.",
            "nullable": true,
            "example": "admin@acme-store.com"
          },
          "recipientEmailRealName": {
            "type": "string",
            "description": "In case an item will be sent via email (e.g. old PrimeSign online certificates) this name will be used as the recipient.",
            "nullable": true,
            "example": "John Doe"
          },
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PurchaseItem"
            },
            "description": "The list of items thar should be purchases. It is recommended to stick with a single type of item (e.g. a Swissbit Cloud TSE) per purchase to\r\nreduce risk of one of the different (remote) systems to fail.",
            "nullable": true,
            "example": [
              {
                "id": 42,
                "amount": 3,
                "amountAssignment": {
                  "LOC-001": 2,
                  "LOC-002": 1
                }
              }
            ]
          },
          "empty": {
            "type": "boolean",
            "description": "Gets a value indicating whether this instance is empty.",
            "readOnly": true
          },
          "valid": {
            "type": "boolean",
            "description": "Gets a value indicating whether this instance is valid.",
            "readOnly": true
          }
        },
        "additionalProperties": false,
        "description": "The request model used for placing a new purchase in the public controller"
      },
      "DE_GetPublicReportingDataResult": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Defines whether the request has been processed successfully or not. If ```true```, the other error properties will typically not be provided.",
            "example": true
          },
          "errorCode": {
            "type": "string",
            "description": "Specifies the type of error that happened during execution of the actual request.",
            "nullable": true,
            "example": null
          },
          "errorMessage": {
            "type": "string",
            "description": "Contains a brief description about what happened in the request handling process that resulted in the given Portal.API.Models.PublicModels.V2.Base.ResultBase.ErrorCode",
            "nullable": true,
            "example": null
          },
          "errorMessageTranslated": {
            "type": "string",
            "description": "Contains a translated version of the error message that has been defined for the Portal.API.Models.PublicModels.V2.Base.ResultBase.ErrorCode property.",
            "nullable": true,
            "example": null
          },
          "validationErrors": {
            "type": "object",
            "additionalProperties": false,
            "description": "Validation Errors for each Property.",
            "nullable": true
          },
          "reportingContact": {
            "$ref": "#/components/schemas/ReportingDEContact"
          },
          "wIdNr": {
            "type": "string",
            "description": "The economic identification number of the reportable company required for the reporting process from 01.01.2027 onwards.",
            "nullable": true
          },
          "useLocationContact": {
            "type": "boolean",
            "description": "Flag indicating whether to use location-specific contact information instead of the company-wide reporting contact for this fiscal report.",
            "example": false
          },
          "companyData": {
            "$ref": "#/components/schemas/DE_ReportingCompanyData"
          },
          "recordingSystems": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ReportingDE"
            },
            "description": "Collection of all recording systems, cash registers, and point-of-sale systems registered under this company for German DSFinV-K compliance reporting.",
            "nullable": true
          },
          "previousGuid": {
            "type": "string",
            "description": "Unique identifier (GUID) linking to the previously submitted reporting period, ensuring continuity and audit trail compliance as required by German tax authorities.",
            "nullable": true,
            "example": "550e8400-e29b-41d4-a716-446655440000"
          },
          "state": {
            "type": "string",
            "description": "Current processing state of the reporting data preparation (Ready, Processing, ValidationError, Completed, Submitted).",
            "nullable": true,
            "example": "Ready"
          }
        },
        "additionalProperties": false,
        "description": "Result model containing complete German fiscal reporting data including contact information, company details, recording systems, and configuration settings."
      },
      "DE_GetPublicReportingListResult": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Defines whether the request has been processed successfully or not. If ```true```, the other error properties will typically not be provided.",
            "example": true
          },
          "errorCode": {
            "type": "string",
            "description": "Specifies the type of error that happened during execution of the actual request.",
            "nullable": true,
            "example": null
          },
          "errorMessage": {
            "type": "string",
            "description": "Contains a brief description about what happened in the request handling process that resulted in the given Portal.API.Models.PublicModels.V2.Base.ResultBase.ErrorCode",
            "nullable": true,
            "example": null
          },
          "errorMessageTranslated": {
            "type": "string",
            "description": "Contains a translated version of the error message that has been defined for the Portal.API.Models.PublicModels.V2.Base.ResultBase.ErrorCode property.",
            "nullable": true,
            "example": null
          },
          "validationErrors": {
            "type": "object",
            "additionalProperties": false,
            "description": "Validation Errors for each Property.",
            "nullable": true
          },
          "reportingList": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicReportingDEState"
            },
            "description": "Collection of German fiscal reporting entries available to the requesting company, each containing state information, status, and metadata.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Result model containing a list of German fiscal reporting entries with their current states."
      },
      "DE_ReportingCompanyData": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "The unique identifier of the company/location.",
            "format": "int32",
            "example": 1545
          },
          "ownerCompanyId": {
            "type": "integer",
            "description": "The unique identifier of the company/organisation owning the company or location.",
            "format": "int32",
            "example": 1544
          },
          "locationName": {
            "type": "string",
            "description": "The name of the location or company.",
            "nullable": true,
            "example": "ACME Store Berlin"
          },
          "recordingSystemsCount": {
            "type": "integer",
            "description": "The number of recording systems (cash registers) at this location.",
            "format": "int32",
            "example": 3
          },
          "supportLevel": {
            "type": "integer",
            "description": "The support level of the location (10 = production, 9 = test, 8 = deactivated).",
            "format": "int32",
            "example": 10
          },
          "dateOfDecomissioning": {
            "type": "string",
            "description": "The date when the location will be or was decommissioned (if applicable).",
            "format": "date-time",
            "nullable": true,
            "example": "2024-12-31T23:59:59Z"
          },
          "street": {
            "type": "string",
            "description": "The street name of the location address.",
            "nullable": true,
            "example": "Hauptstraße"
          },
          "streetNumber": {
            "type": "string",
            "description": "The street number of the location address.",
            "nullable": true,
            "example": "123"
          },
          "streetNumberSuffix": {
            "type": "string",
            "description": "Additional suffix for the street number (like apartment number, building section, etc.).",
            "nullable": true,
            "example": "a"
          },
          "postalCode": {
            "type": "string",
            "description": "The postal code of the location address.",
            "nullable": true,
            "example": "10115"
          },
          "city": {
            "type": "string",
            "description": "The city name of the location address.",
            "nullable": true,
            "example": "Berlin"
          }
        },
        "additionalProperties": false,
        "description": "Company data for German fiscal reporting, containing location and operational information."
      },
      "EDocumentConfiguration": {
        "type": "object",
        "properties": {
          "contactName": {
            "type": "string",
            "description": "The full name of the contact person responsible for e-invoicing matters.",
            "nullable": true,
            "example": "Max Mustermann"
          },
          "contactTelephone": {
            "type": "string",
            "description": "The phone number of the contact person responsible for e-invoicing matters.",
            "nullable": true,
            "example": "+49 30 123456"
          },
          "contactElectronicMail": {
            "type": "string",
            "description": "The email address of the contact person responsible for e-invoicing matters.",
            "nullable": true,
            "example": "invoicing@example.com"
          },
          "paymentTerms": {
            "type": "string",
            "description": "The payment terms included on outgoing e-invoices (e.g. \"Net 30\" for 30 days payment window).",
            "nullable": true,
            "example": "Net 30"
          },
          "paymentPeriod": {
            "type": "string",
            "description": "The payment period in days that is granted to the invoice recipient.",
            "nullable": true,
            "example": "30"
          },
          "accountName": {
            "type": "string",
            "description": "The name of the bank account holder used for receiving payments.",
            "nullable": true,
            "example": "efsta IT Services GmbH"
          },
          "accountIBAN": {
            "type": "string",
            "description": "The IBAN (International Bank Account Number) used for receiving payments.",
            "nullable": true,
            "example": "AT00000000000000000000"
          },
          "accountBIC": {
            "type": "string",
            "description": "The BIC (Bank Identifier Code / SWIFT code) of the bank account used for receiving payments.",
            "nullable": true,
            "example": "ASPAKAT2LXXX"
          },
          "peppolSenderID": {
            "type": "string",
            "description": "Germany and Belgium only: The PEPPOL participant ID used for sending e-invoices via the PEPPOL network.",
            "nullable": true,
            "example": "0204:12345678"
          },
          "token": {
            "type": "string",
            "description": "Poland only: The authentication token required to connect to the Polish KSeF (National e-Invoice System).",
            "nullable": true,
            "example": "eyJhbGciOiJIUzI1NiIs..."
          },
          "kSeFOfflineCertificate": {
            "type": "string",
            "description": "Poland only: The offline certificate (Base64-encoded) used for signing e-invoices when the KSeF system is temporarily unavailable.",
            "nullable": true,
            "example": "MIIBIjANBgkqhki..."
          },
          "kSeFAuthenticationCertificate": {
            "type": "string",
            "description": "Poland only: The authentication certificate (Base64-encoded) used for authenticating with the KSeF system.",
            "nullable": true,
            "example": "MIICdgIBADANBg..."
          },
          "paymentNotePenalty": {
            "type": "string",
            "description": "France only: The late payment penalty mention printed on outgoing invoices (mention obligatoire, Art. L441-10 Code de commerce).",
            "nullable": true,
            "example": "En cas de retard de paiement, une penalite egale a 3 fois le taux d'interet legal sera appliquee."
          },
          "paymentNoteRecovery": {
            "type": "string",
            "description": "France only: The fixed recovery cost indemnity mention printed on outgoing invoices (indemnite forfaitaire pour frais de recouvrement).",
            "nullable": true,
            "example": "Tout retard de paiement entraine une indemnite forfaitaire pour frais de recouvrement de 40 EUR."
          },
          "paymentNoteDiscount": {
            "type": "string",
            "description": "France only: The early payment discount mention printed on outgoing invoices (conditions d'escompte).",
            "nullable": true,
            "example": "Aucun escompte pour paiement anticipe."
          }
        },
        "additionalProperties": false,
        "description": "Represents the e-document / e-invoicing configuration used for electronic document\r\nsubmission and payment information."
      },
      "EmailVerificationProgressStatus": {
        "enum": [
          "Created",
          "Worker",
          "Sending",
          "Sent",
          "Verified",
          "Expired",
          "VerifiedByInvitationToken",
          "InvalidEmailAddress",
          "Suspended",
          "Error"
        ],
        "type": "string"
      },
      "ExportTypes": {
        "enum": [
          "Journal_Archive_Json",
          "DE_DSFinVK",
          "DE_GoBD",
          "AT_DEP_131_BAO",
          "Transactions_CSV",
          "AT_DEP_7_RKSV",
          "SI_Export",
          "DE_TSE_Export_Journal",
          "PT_SAFT",
          "FR_Fiscal",
          "FR_Grand_Totals",
          "PL_Invoice_Register",
          "PL_KSeF_Sales_Report"
        ],
        "type": "string",
        "description": "Defines the type of export to execute. This will determine the overall download result."
      },
      "GetActiveUserResult": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Defines whether the request has been processed successfully or not. If ```true```, the other error properties will typically not be provided.",
            "example": true
          },
          "errorCode": {
            "type": "string",
            "description": "Specifies the type of error that happened during execution of the actual request.",
            "nullable": true,
            "example": null
          },
          "errorMessage": {
            "type": "string",
            "description": "Contains a brief description about what happened in the request handling process that resulted in the given Portal.API.Models.PublicModels.V2.Base.ResultBase.ErrorCode",
            "nullable": true,
            "example": null
          },
          "errorMessageTranslated": {
            "type": "string",
            "description": "Contains a translated version of the error message that has been defined for the Portal.API.Models.PublicModels.V2.Base.ResultBase.ErrorCode property.",
            "nullable": true,
            "example": null
          },
          "validationErrors": {
            "type": "object",
            "additionalProperties": false,
            "description": "Validation Errors for each Property.",
            "nullable": true
          },
          "userProfile": {
            "$ref": "#/components/schemas/PublicUserProfile"
          }
        },
        "additionalProperties": false,
        "description": "The result object describing the result and possibly error during the current operation."
      },
      "GetCompanyTreeResult": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Defines whether the request has been processed successfully or not. If ```true```, the other error properties will typically not be provided.",
            "example": true
          },
          "errorCode": {
            "type": "string",
            "description": "Specifies the type of error that happened during execution of the actual request.",
            "nullable": true,
            "example": null
          },
          "errorMessage": {
            "type": "string",
            "description": "Contains a brief description about what happened in the request handling process that resulted in the given Portal.API.Models.PublicModels.V2.Base.ResultBase.ErrorCode",
            "nullable": true,
            "example": null
          },
          "errorMessageTranslated": {
            "type": "string",
            "description": "Contains a translated version of the error message that has been defined for the Portal.API.Models.PublicModels.V2.Base.ResultBase.ErrorCode property.",
            "nullable": true,
            "example": null
          },
          "validationErrors": {
            "type": "object",
            "additionalProperties": false,
            "description": "Validation Errors for each Property.",
            "nullable": true
          },
          "rootNode": {
            "$ref": "#/components/schemas/PublicCompanyTreeItem"
          }
        },
        "additionalProperties": false,
        "description": "The result object describing the result and possibly error during the current operation."
      },
      "GetCompanyUsersResult": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Defines whether the request has been processed successfully or not. If ```true```, the other error properties will typically not be provided.",
            "example": true
          },
          "errorCode": {
            "type": "string",
            "description": "Specifies the type of error that happened during execution of the actual request.",
            "nullable": true,
            "example": null
          },
          "errorMessage": {
            "type": "string",
            "description": "Contains a brief description about what happened in the request handling process that resulted in the given Portal.API.Models.PublicModels.V2.Base.ResultBase.ErrorCode",
            "nullable": true,
            "example": null
          },
          "errorMessageTranslated": {
            "type": "string",
            "description": "Contains a translated version of the error message that has been defined for the Portal.API.Models.PublicModels.V2.Base.ResultBase.ErrorCode property.",
            "nullable": true,
            "example": null
          },
          "validationErrors": {
            "type": "object",
            "additionalProperties": false,
            "description": "Validation Errors for each Property.",
            "nullable": true
          },
          "users": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CompanyUserPermissionInfo"
            },
            "description": "A list of the Users who have access to the company",
            "nullable": true
          },
          "totalCount": {
            "type": "integer",
            "description": "the count of users who have any type of Permission for the company",
            "format": "int32",
            "example": 12
          }
        },
        "additionalProperties": false
      },
      "GetPublicCompanyConfigurationResult": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Defines whether the request has been processed successfully or not. If ```true```, the other error properties will typically not be provided.",
            "example": true
          },
          "errorCode": {
            "type": "string",
            "description": "Specifies the type of error that happened during execution of the actual request.",
            "nullable": true,
            "example": null
          },
          "errorMessage": {
            "type": "string",
            "description": "Contains a brief description about what happened in the request handling process that resulted in the given Portal.API.Models.PublicModels.V2.Base.ResultBase.ErrorCode",
            "nullable": true,
            "example": null
          },
          "errorMessageTranslated": {
            "type": "string",
            "description": "Contains a translated version of the error message that has been defined for the Portal.API.Models.PublicModels.V2.Base.ResultBase.ErrorCode property.",
            "nullable": true,
            "example": null
          },
          "validationErrors": {
            "type": "object",
            "additionalProperties": false,
            "description": "Validation Errors for each Property.",
            "nullable": true
          },
          "companyConfiguration": {
            "$ref": "#/components/schemas/PublicCompanyConfiguration"
          }
        },
        "additionalProperties": false,
        "description": "Result wrapper for getting company configuration information"
      },
      "GetPublicCompanyContactsResult": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Defines whether the request has been processed successfully or not. If ```true```, the other error properties will typically not be provided.",
            "example": true
          },
          "errorCode": {
            "type": "string",
            "description": "Specifies the type of error that happened during execution of the actual request.",
            "nullable": true,
            "example": null
          },
          "errorMessage": {
            "type": "string",
            "description": "Contains a brief description about what happened in the request handling process that resulted in the given Portal.API.Models.PublicModels.V2.Base.ResultBase.ErrorCode",
            "nullable": true,
            "example": null
          },
          "errorMessageTranslated": {
            "type": "string",
            "description": "Contains a translated version of the error message that has been defined for the Portal.API.Models.PublicModels.V2.Base.ResultBase.ErrorCode property.",
            "nullable": true,
            "example": null
          },
          "validationErrors": {
            "type": "object",
            "additionalProperties": false,
            "description": "Validation Errors for each Property.",
            "nullable": true
          },
          "contacts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicCompanyContact"
            },
            "description": "a list of Contacts",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "GetPublicCompanyNotificationsResult": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Defines whether the request has been processed successfully or not. If ```true```, the other error properties will typically not be provided.",
            "example": true
          },
          "errorCode": {
            "type": "string",
            "description": "Specifies the type of error that happened during execution of the actual request.",
            "nullable": true,
            "example": null
          },
          "errorMessage": {
            "type": "string",
            "description": "Contains a brief description about what happened in the request handling process that resulted in the given Portal.API.Models.PublicModels.V2.Base.ResultBase.ErrorCode",
            "nullable": true,
            "example": null
          },
          "errorMessageTranslated": {
            "type": "string",
            "description": "Contains a translated version of the error message that has been defined for the Portal.API.Models.PublicModels.V2.Base.ResultBase.ErrorCode property.",
            "nullable": true,
            "example": null
          },
          "validationErrors": {
            "type": "object",
            "additionalProperties": false,
            "description": "Validation Errors for each Property.",
            "nullable": true
          },
          "notifications": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicNotification"
            },
            "description": "A list of all notifications received for that company.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "The result object for company-related notifications containing a list of notifications per register"
      },
      "GetPublicExportsResult": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Defines whether the request has been processed successfully or not. If ```true```, the other error properties will typically not be provided.",
            "example": true
          },
          "errorCode": {
            "type": "string",
            "description": "Specifies the type of error that happened during execution of the actual request.",
            "nullable": true,
            "example": null
          },
          "errorMessage": {
            "type": "string",
            "description": "Contains a brief description about what happened in the request handling process that resulted in the given Portal.API.Models.PublicModels.V2.Base.ResultBase.ErrorCode",
            "nullable": true,
            "example": null
          },
          "errorMessageTranslated": {
            "type": "string",
            "description": "Contains a translated version of the error message that has been defined for the Portal.API.Models.PublicModels.V2.Base.ResultBase.ErrorCode property.",
            "nullable": true,
            "example": null
          },
          "validationErrors": {
            "type": "object",
            "additionalProperties": false,
            "description": "Validation Errors for each Property.",
            "nullable": true
          },
          "tickets": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicTicket"
            },
            "description": "The list of  tickets available for company defined via the request route.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "The result object describing the result and possibly error during the current operation."
      },
      "GetPublicLocationConfigurationResult": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Defines whether the request has been processed successfully or not. If ```true```, the other error properties will typically not be provided.",
            "example": true
          },
          "errorCode": {
            "type": "string",
            "description": "Specifies the type of error that happened during execution of the actual request.",
            "nullable": true,
            "example": null
          },
          "errorMessage": {
            "type": "string",
            "description": "Contains a brief description about what happened in the request handling process that resulted in the given Portal.API.Models.PublicModels.V2.Base.ResultBase.ErrorCode",
            "nullable": true,
            "example": null
          },
          "errorMessageTranslated": {
            "type": "string",
            "description": "Contains a translated version of the error message that has been defined for the Portal.API.Models.PublicModels.V2.Base.ResultBase.ErrorCode property.",
            "nullable": true,
            "example": null
          },
          "validationErrors": {
            "type": "object",
            "additionalProperties": false,
            "description": "Validation Errors for each Property.",
            "nullable": true
          },
          "locationConfiguration": {
            "$ref": "#/components/schemas/PublicLocationConfiguration"
          }
        },
        "additionalProperties": false,
        "description": "Result wrapper for getting location configuration information"
      },
      "GetPublicProductsResult": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Defines whether the request has been processed successfully or not. If ```true```, the other error properties will typically not be provided.",
            "example": true
          },
          "errorCode": {
            "type": "string",
            "description": "Specifies the type of error that happened during execution of the actual request.",
            "nullable": true,
            "example": null
          },
          "errorMessage": {
            "type": "string",
            "description": "Contains a brief description about what happened in the request handling process that resulted in the given Portal.API.Models.PublicModels.V2.Base.ResultBase.ErrorCode",
            "nullable": true,
            "example": null
          },
          "errorMessageTranslated": {
            "type": "string",
            "description": "Contains a translated version of the error message that has been defined for the Portal.API.Models.PublicModels.V2.Base.ResultBase.ErrorCode property.",
            "nullable": true,
            "example": null
          },
          "validationErrors": {
            "type": "object",
            "additionalProperties": false,
            "description": "Validation Errors for each Property.",
            "nullable": true
          },
          "products": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicProduct"
            },
            "description": "The list of available products",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "The result object describing the result and possibly error during the current operation."
      },
      "GetPublicPurchaseOverviewResult": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Defines whether the request has been processed successfully or not. If ```true```, the other error properties will typically not be provided.",
            "example": true
          },
          "errorCode": {
            "type": "string",
            "description": "Specifies the type of error that happened during execution of the actual request.",
            "nullable": true,
            "example": null
          },
          "errorMessage": {
            "type": "string",
            "description": "Contains a brief description about what happened in the request handling process that resulted in the given Portal.API.Models.PublicModels.V2.Base.ResultBase.ErrorCode",
            "nullable": true,
            "example": null
          },
          "errorMessageTranslated": {
            "type": "string",
            "description": "Contains a translated version of the error message that has been defined for the Portal.API.Models.PublicModels.V2.Base.ResultBase.ErrorCode property.",
            "nullable": true,
            "example": null
          },
          "validationErrors": {
            "type": "object",
            "additionalProperties": false,
            "description": "Validation Errors for each Property.",
            "nullable": true
          },
          "purchaseEntries": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicPurchaseOverview"
            },
            "description": "The the entries returned for the query. Each entry is a position of the regarding purchase, meaning that a purchase\r\nwith multiple items does have multiple rows with the same purchase head information.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "The result object describing the result and possibly error during the current operation."
      },
      "GetPublicRegisterConfigurationResult": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Defines whether the request has been processed successfully or not. If ```true```, the other error properties will typically not be provided.",
            "example": true
          },
          "errorCode": {
            "type": "string",
            "description": "Specifies the type of error that happened during execution of the actual request.",
            "nullable": true,
            "example": null
          },
          "errorMessage": {
            "type": "string",
            "description": "Contains a brief description about what happened in the request handling process that resulted in the given Portal.API.Models.PublicModels.V2.Base.ResultBase.ErrorCode",
            "nullable": true,
            "example": null
          },
          "errorMessageTranslated": {
            "type": "string",
            "description": "Contains a translated version of the error message that has been defined for the Portal.API.Models.PublicModels.V2.Base.ResultBase.ErrorCode property.",
            "nullable": true,
            "example": null
          },
          "validationErrors": {
            "type": "object",
            "additionalProperties": false,
            "description": "Validation Errors for each Property.",
            "nullable": true
          },
          "registerConfiguration": {
            "$ref": "#/components/schemas/PublicRegisterConfiguration"
          }
        },
        "additionalProperties": false,
        "description": "Result wrapper for getting register configuration information"
      },
      "GetPublicRegisterObjectResult": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Defines whether the request has been processed successfully or not. If ```true```, the other error properties will typically not be provided.",
            "example": true
          },
          "errorCode": {
            "type": "string",
            "description": "Specifies the type of error that happened during execution of the actual request.",
            "nullable": true,
            "example": null
          },
          "errorMessage": {
            "type": "string",
            "description": "Contains a brief description about what happened in the request handling process that resulted in the given Portal.API.Models.PublicModels.V2.Base.ResultBase.ErrorCode",
            "nullable": true,
            "example": null
          },
          "errorMessageTranslated": {
            "type": "string",
            "description": "Contains a translated version of the error message that has been defined for the Portal.API.Models.PublicModels.V2.Base.ResultBase.ErrorCode property.",
            "nullable": true,
            "example": null
          },
          "validationErrors": {
            "type": "object",
            "additionalProperties": false,
            "description": "Validation Errors for each Property.",
            "nullable": true
          },
          "register": {
            "$ref": "#/components/schemas/PublicRegister"
          }
        },
        "additionalProperties": false,
        "description": "Result class for retrieving public register object details."
      },
      "LocationConfiguration": {
        "type": "object",
        "properties": {
          "tl": {
            "type": "string",
            "description": "The transaction location number.",
            "nullable": true,
            "example": "001"
          },
          "adr": {
            "type": "string",
            "description": "The street address (including house/building number) of the location.",
            "nullable": true,
            "example": "Main Street 12a"
          },
          "zip": {
            "type": "string",
            "description": "The postal / ZIP code of the location address.",
            "nullable": true,
            "example": "10115"
          },
          "city": {
            "type": "string",
            "description": "The city the location is situated in.",
            "nullable": true,
            "example": "Berlin"
          },
          "ctry": {
            "type": "string",
            "description": "The ISO-2 country code of the location (e.g. DE for Germany, AT for Austria).",
            "nullable": true,
            "example": "DE"
          },
          "taxId": {
            "type": "string",
            "description": "The official tax identification number of the location (e.g. UID in Austria, USt-ID in Germany).",
            "nullable": true,
            "example": "DE123456789"
          },
          "label": {
            "type": "string",
            "description": "A free-text label that can be used to give the location a recognizable name (e.g. \"Store Berlin Mitte\" or \"Warehouse South\").",
            "nullable": true,
            "example": "Store Berlin Mitte"
          },
          "fR_SIR": {
            "type": "string",
            "description": "France only: The SIRET number, a unique 14-digit identifier assigned to each business establishment in France.\r\nIt consists of the company's SIREN number followed by a 5-digit NIC code identifying the specific location.",
            "nullable": true,
            "example": "732 829 320 0007"
          },
          "state": {
            "type": "string",
            "description": "Denmark and Norway only: The state or region code used for tax reporting purposes in the respective country.",
            "nullable": true,
            "example": "03"
          }
        },
        "additionalProperties": false,
        "description": "Represents the configuration data of a single location, including address details\r\nand country-specific registration values."
      },
      "ObjectState": {
        "enum": [
          "Deactivated",
          "Test",
          "Productive"
        ],
        "type": "string"
      },
      "PermissionTestResult": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Defines whether the request has been processed successfully or not. If ```true```, the other error properties will typically not be provided.",
            "example": true
          },
          "errorCode": {
            "type": "string",
            "description": "Specifies the type of error that happened during execution of the actual request.",
            "nullable": true,
            "example": null
          },
          "errorMessage": {
            "type": "string",
            "description": "Contains a brief description about what happened in the request handling process that resulted in the given Portal.API.Models.PublicModels.V2.Base.ResultBase.ErrorCode",
            "nullable": true,
            "example": null
          },
          "errorMessageTranslated": {
            "type": "string",
            "description": "Contains a translated version of the error message that has been defined for the Portal.API.Models.PublicModels.V2.Base.ResultBase.ErrorCode property.",
            "nullable": true,
            "example": null
          },
          "validationErrors": {
            "type": "object",
            "additionalProperties": false,
            "description": "Validation Errors for each Property.",
            "nullable": true
          },
          "hasPermission": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "ProblemDetails": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "nullable": true
          },
          "title": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "detail": {
            "type": "string",
            "nullable": true
          },
          "instance": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": { }
      },
      "ProfileConfiguration": {
        "type": "object",
        "properties": {
          "badge": {
            "type": "string",
            "description": "The unique badge value used to activate and assign new EFR installations to the correct company or organization.",
            "nullable": true,
            "example": "AB12CD34"
          },
          "rN_TT": {
            "type": "boolean",
            "description": "Whether the register number should include the terminal type as a prefix.",
            "nullable": true,
            "example": true
          },
          "country": {
            "type": "string",
            "description": "The ISO-2 country code defining which country's fiscal rules this profile operates under.",
            "nullable": true,
            "example": "AT"
          },
          "taxId": {
            "type": "string",
            "description": "The tax identification number associated with this profile (e.g. UID in Austria, USt-ID in Germany).",
            "nullable": true,
            "example": "ATU12345678"
          },
          "offline": {
            "type": "boolean",
            "description": "Whether the EFR should operate in offline mode (without a permanent connection to the fiscal authority).",
            "nullable": true,
            "example": false
          },
          "proxy": {
            "type": "string",
            "description": "The proxy server URL used for outgoing network connections (e.g. when the EFR is behind a corporate firewall).",
            "nullable": true,
            "example": "http://proxy.example.com:8080"
          },
          "attributes": {
            "type": "string",
            "description": "",
            "nullable": true
          },
          "rootPath": {
            "type": "string",
            "description": "The root directory path on the local machine where the EFR stores its data files.",
            "nullable": true
          },
          "diskQuota": {
            "type": "string",
            "description": "The maximum disk space (in MB) the EFR is allowed to use for local data storage.",
            "nullable": true,
            "example": "500"
          },
          "update_disable": {
            "type": "boolean",
            "description": "Whether automatic software updates for the EFR are disabled.",
            "nullable": true,
            "example": false
          },
          "notes": {
            "type": "string",
            "description": "Free-text notes or comments about this profile for internal reference.",
            "nullable": true,
            "example": "Main store profile"
          },
          "password": {
            "type": "string",
            "description": "The password used to protect access to the EFR's local administration interface.",
            "nullable": true,
            "example": "s3cur3P@ss!"
          },
          "httpServer_Port": {
            "type": "string",
            "description": "The port number the EFR's built-in HTTP server listens on for incoming requests from the POS system.",
            "nullable": true,
            "example": "1234"
          },
          "sC_PIN": {
            "type": "string",
            "description": "Austria only: The PIN code for the signature creation device (smart card) used for fiscal signing.",
            "nullable": true,
            "example": "123456"
          },
          "online_uponSC": {
            "type": "boolean",
            "description": "Austria only: Whether the EFR should automatically go online when a signature creation device (smart card) is detected.",
            "nullable": true,
            "example": true
          },
          "sC_disable": {
            "type": "boolean",
            "description": "Austria only: Whether the signature creation device (smart card) functionality is disabled.",
            "nullable": true,
            "example": false
          },
          "fiscal_EncryptKey": {
            "type": "string",
            "description": "Austria only: The encryption key used for securing fiscal data at rest.",
            "nullable": true,
            "example": "A1B2C3D4E5F6..."
          },
          "udpServer_Port": {
            "type": "string",
            "description": "Austria only: The port number for the EFR's UDP server used for local device discovery.",
            "nullable": true,
            "example": "5162"
          },
          "fiscal_Easing": {
            "type": "string",
            "description": "Austria only: Controls fiscal easing mode, which may relax certain signing requirements during defined grace periods.",
            "nullable": true,
            "example": "1"
          },
          "sign_require": {
            "type": "string",
            "description": "Austria, Germany, Hungary, Italy and Poland only: Defines whether a digital signature is required on fiscal documents.",
            "nullable": true,
            "example": "1"
          },
          "sign_Cfg": {
            "type": "string",
            "description": "Austria, Germany, Hungary, Italy and Poland only: The signing configuration identifier that determines which signing method and certificate to use.",
            "nullable": true,
            "example": "default"
          },
          "id_provoz": {
            "type": "string",
            "description": "Czech Republic only: The premises ID (\"identifikátor provozovny\") assigned by the Czech tax authority for EET reporting.",
            "nullable": true,
            "example": "181"
          },
          "oibOper": {
            "type": "string",
            "description": "Croatia only: The personal identification number (OIB) of the operator using the cash register.",
            "nullable": true,
            "example": "12345678901"
          },
          "financialYear": {
            "type": "string",
            "description": "Croatia, Portugal and Slovenia only: The financial year used for fiscal numbering and reporting.",
            "nullable": true,
            "example": "2026"
          },
          "fiscal_Log": {
            "type": "string",
            "description": "Croatia, Slovenia, Slovakia and ZZ only: Whether fiscal event logging is enabled for audit and troubleshooting purposes.",
            "nullable": true,
            "example": "1"
          },
          "lotteryCheckDigit": {
            "type": "string",
            "description": "Italy only: The check digit used to validate lottery codes on receipts.",
            "nullable": true,
            "example": "1"
          },
          "lotteryCodeLength": {
            "type": "string",
            "description": "Italy only: The expected length of the lottery code printed on receipts.",
            "nullable": true,
            "example": "8"
          },
          "lotteryThreshold": {
            "type": "string",
            "description": "Italy only: The minimum transaction amount (in EUR) above which a lottery code is printed on the receipt.",
            "nullable": true,
            "example": "1.00"
          },
          "printer_Log": {
            "type": "string",
            "description": "Italy and Poland only: Whether fiscal printer communication logging is enabled for audit and troubleshooting purposes.",
            "nullable": true,
            "example": "1"
          },
          "apiKey": {
            "type": "string",
            "description": "Portugal only: The API key used to authenticate with the Portuguese tax authority's web service.",
            "nullable": true,
            "example": "pk_live_abc123..."
          }
        },
        "additionalProperties": false,
        "description": "Represents the profile configuration assigned to a company, location, or register.\r\nContains operational settings such as network, security, and country-specific fiscal parameters."
      },
      "PublicCompany": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "The unique identifier of the company object.",
            "format": "int32",
            "example": 12345
          },
          "parentEntityId": {
            "type": "integer",
            "description": "The ID of the object owning the current object (e.g. the company a location is located under).",
            "format": "int32",
            "example": 1545
          },
          "name": {
            "type": "string",
            "description": "The name of the company.",
            "nullable": true,
            "example": "Acme Corporation"
          },
          "address": {
            "type": "string",
            "description": "The Address the object is located in (street and street number).",
            "nullable": true,
            "example": "123 Main Street"
          },
          "city": {
            "type": "string",
            "description": "The name of the city the object is located in.",
            "nullable": true,
            "example": "Berlin"
          },
          "zip": {
            "type": "string",
            "description": "The zip / postal code the object is located in.",
            "nullable": true,
            "example": "10115"
          },
          "countryCode": {
            "type": "string",
            "description": "The ISO-2 country code of the address of the object (e.g. DE, FR or AT)",
            "nullable": true,
            "example": "DE"
          },
          "invoiceEmailAddress": {
            "type": "string",
            "description": "The invoice email address relevant for all nodes that receive invoice-emails (primarily company entries)",
            "nullable": true,
            "example": "invoices@acmecorp.com"
          },
          "userComment": {
            "type": "string",
            "description": "A custom comment set by users to further decribe the current node.",
            "nullable": true,
            "example": "Main headquarters, established 1985"
          },
          "state": {
            "type": "string",
            "description": "The State of the Object [Productive|Deactivated|Test]",
            "nullable": true,
            "example": "Productive"
          },
          "badge": {
            "type": "string",
            "description": "Badge for company",
            "nullable": true,
            "example": "XVTGBLZVUG"
          },
          "taxId": {
            "type": "string",
            "nullable": true
          },
          "ignoreTaxId": {
            "type": "boolean",
            "description": "If set to true, the validation of the TaxId will be skipped. The TaxId will still be saved."
          }
        },
        "additionalProperties": false,
        "description": "Public data model representing company information exposed through the API."
      },
      "PublicCompanyConfiguration": {
        "type": "object",
        "properties": {
          "trm": {
            "$ref": "#/components/schemas/TerminalConfiguration"
          },
          "profile": {
            "$ref": "#/components/schemas/ProfileConfiguration"
          },
          "doc": {
            "$ref": "#/components/schemas/EDocumentConfiguration"
          },
          "cert": {
            "$ref": "#/components/schemas/CertificateConfiguration"
          },
          "cmp": {
            "$ref": "#/components/schemas/CompanyConfiguration"
          }
        },
        "additionalProperties": false,
        "description": "Public data model representing company configuration information exposed through the API.\r\nContains the company-level settings such as legal name, tax numbers, and country-specific registration details."
      },
      "PublicCompanyContact": {
        "type": "object",
        "properties": {
          "companyId": {
            "type": "integer",
            "format": "int32"
          },
          "contactName": {
            "type": "string",
            "nullable": true
          },
          "emailAddress": {
            "type": "string",
            "nullable": true
          },
          "languageCode": {
            "type": "string",
            "nullable": true
          },
          "contactType": {
            "$ref": "#/components/schemas/ContactType"
          },
          "emailAddressVerification": {
            "$ref": "#/components/schemas/EmailVerificationProgressStatus"
          }
        },
        "additionalProperties": false
      },
      "PublicCompanyCountryProperties": {
        "type": "object",
        "properties": {
          "dE_WIdNr": {
            "type": "string",
            "description": "The WIdNr (Wirtschafts-Identifikationsnummer) is a unique identifier for companies in Germany, similar to a tax ID.",
            "nullable": true,
            "example": "DE123456789-00001"
          }
        },
        "additionalProperties": false
      },
      "PublicCompanyResult": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Defines whether the request has been processed successfully or not. If ```true```, the other error properties will typically not be provided.",
            "example": true
          },
          "errorCode": {
            "type": "string",
            "description": "Specifies the type of error that happened during execution of the actual request.",
            "nullable": true,
            "example": null
          },
          "errorMessage": {
            "type": "string",
            "description": "Contains a brief description about what happened in the request handling process that resulted in the given Portal.API.Models.PublicModels.V2.Base.ResultBase.ErrorCode",
            "nullable": true,
            "example": null
          },
          "errorMessageTranslated": {
            "type": "string",
            "description": "Contains a translated version of the error message that has been defined for the Portal.API.Models.PublicModels.V2.Base.ResultBase.ErrorCode property.",
            "nullable": true,
            "example": null
          },
          "validationErrors": {
            "type": "object",
            "additionalProperties": false,
            "description": "Validation Errors for each Property.",
            "nullable": true
          },
          "company": {
            "$ref": "#/components/schemas/PublicCompany"
          },
          "companyCountryProperties": {
            "$ref": "#/components/schemas/PublicCompanyCountryProperties"
          }
        },
        "additionalProperties": false,
        "description": "Result wrapper for company operations"
      },
      "PublicCompanySearchPublicCompanyObjectsResult": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Defines whether the request has been processed successfully or not. If ```true```, the other error properties will typically not be provided.",
            "example": true
          },
          "errorCode": {
            "type": "string",
            "description": "Specifies the type of error that happened during execution of the actual request.",
            "nullable": true,
            "example": null
          },
          "errorMessage": {
            "type": "string",
            "description": "Contains a brief description about what happened in the request handling process that resulted in the given Portal.API.Models.PublicModels.V2.Base.ResultBase.ErrorCode",
            "nullable": true,
            "example": null
          },
          "errorMessageTranslated": {
            "type": "string",
            "description": "Contains a translated version of the error message that has been defined for the Portal.API.Models.PublicModels.V2.Base.ResultBase.ErrorCode property.",
            "nullable": true,
            "example": null
          },
          "validationErrors": {
            "type": "object",
            "additionalProperties": false,
            "description": "Validation Errors for each Property.",
            "nullable": true
          },
          "currentCount": {
            "type": "integer",
            "description": "The number of items in the current page.",
            "format": "int32",
            "example": 1
          },
          "totalCount": {
            "type": "integer",
            "description": "The total number of available company objects for the dedicated method and query options.",
            "format": "int32",
            "example": 1
          },
          "foundItems": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicCompany"
            },
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "The result object used when querying the company tree with certain criteria."
      },
      "PublicCompanyTreeItem": {
        "type": "object",
        "properties": {
          "objectId": {
            "type": "string",
            "description": "The ID of the object, for example the ID of the company or location or the register number of an EFR instance.",
            "nullable": true,
            "example": "1545"
          },
          "objectName": {
            "type": "string",
            "description": "The name of the object, for example the name of the company or organizational unit or the register number and (if available) TL/TT information of a register.",
            "nullable": true,
            "example": "ACME Store Berlin"
          },
          "objectType": {
            "type": "string",
            "description": "The type of the object (O = Organization, C = Company, L = Location, E = EFR / register)",
            "nullable": true,
            "example": "C"
          },
          "parentEntityId": {
            "type": "integer",
            "description": "The ID of the directly owning company of the current record.",
            "format": "int32",
            "example": 1000
          },
          "state": {
            "type": "integer",
            "description": "The State of the current record. Productive | Test | Deactivated.",
            "format": "int32",
            "nullable": true,
            "deprecated": true
          },
          "currentState": {
            "type": "string",
            "description": "The display state of the current record. Productive | Test | Deactivated.\r\nReplaces the deprecated `State` property.",
            "nullable": true,
            "example": "productive"
          },
          "children": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicCompanyTreeItem"
            },
            "description": "A list of all children that are assigned to the current node (e.g. locations of a company or registers of a location).",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "A single entry in the company tree with its ID, the name and type as well as all children of that entry."
      },
      "PublicLocation": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "The unique identifier of the company object.",
            "format": "int32",
            "example": 12345
          },
          "parentEntityId": {
            "type": "integer",
            "description": "The ID of the object owning the current object (e.g. the company a location is located under).",
            "format": "int32",
            "example": 1545
          },
          "name": {
            "type": "string",
            "description": "The name of the company.",
            "nullable": true,
            "example": "Acme Corporation"
          },
          "address": {
            "type": "string",
            "description": "The Address the object is located in (street and street number).",
            "nullable": true,
            "example": "123 Main Street"
          },
          "city": {
            "type": "string",
            "description": "The name of the city the object is located in.",
            "nullable": true,
            "example": "Berlin"
          },
          "zip": {
            "type": "string",
            "description": "The zip / postal code the object is located in.",
            "nullable": true,
            "example": "10115"
          },
          "countryCode": {
            "type": "string",
            "description": "The ISO-2 country code of the address of the object (e.g. DE, FR or AT)",
            "nullable": true,
            "example": "DE"
          },
          "invoiceEmailAddress": {
            "type": "string",
            "description": "The invoice email address relevant for all nodes that receive invoice-emails (primarily company entries)",
            "nullable": true,
            "example": "invoices@acmecorp.com"
          },
          "userComment": {
            "type": "string",
            "description": "A custom comment set by users to further decribe the current node.",
            "nullable": true,
            "example": "Main headquarters, established 1985"
          },
          "state": {
            "type": "string",
            "description": "The State of the Object [Productive|Deactivated|Test]",
            "nullable": true,
            "example": "Productive"
          },
          "locationIdentification": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Public data model representing location information exposed through the API."
      },
      "PublicLocationConfiguration": {
        "type": "object",
        "properties": {
          "trm": {
            "$ref": "#/components/schemas/TerminalConfiguration"
          },
          "profile": {
            "$ref": "#/components/schemas/ProfileConfiguration"
          },
          "doc": {
            "$ref": "#/components/schemas/EDocumentConfiguration"
          },
          "cert": {
            "$ref": "#/components/schemas/CertificateConfiguration"
          },
          "loc": {
            "$ref": "#/components/schemas/LocationConfiguration"
          }
        },
        "additionalProperties": false,
        "description": "Public data model representing location configuration information exposed through the API.\r\nContains the location-specific settings such as address, contact details, and country-specific identifiers."
      },
      "PublicLocationResult": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Defines whether the request has been processed successfully or not. If ```true```, the other error properties will typically not be provided.",
            "example": true
          },
          "errorCode": {
            "type": "string",
            "description": "Specifies the type of error that happened during execution of the actual request.",
            "nullable": true,
            "example": null
          },
          "errorMessage": {
            "type": "string",
            "description": "Contains a brief description about what happened in the request handling process that resulted in the given Portal.API.Models.PublicModels.V2.Base.ResultBase.ErrorCode",
            "nullable": true,
            "example": null
          },
          "errorMessageTranslated": {
            "type": "string",
            "description": "Contains a translated version of the error message that has been defined for the Portal.API.Models.PublicModels.V2.Base.ResultBase.ErrorCode property.",
            "nullable": true,
            "example": null
          },
          "validationErrors": {
            "type": "object",
            "additionalProperties": false,
            "description": "Validation Errors for each Property.",
            "nullable": true
          },
          "location": {
            "$ref": "#/components/schemas/PublicLocation"
          }
        },
        "additionalProperties": false,
        "description": "Result wrapper for location operations"
      },
      "PublicLocationSearchPublicCompanyObjectsResult": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Defines whether the request has been processed successfully or not. If ```true```, the other error properties will typically not be provided.",
            "example": true
          },
          "errorCode": {
            "type": "string",
            "description": "Specifies the type of error that happened during execution of the actual request.",
            "nullable": true,
            "example": null
          },
          "errorMessage": {
            "type": "string",
            "description": "Contains a brief description about what happened in the request handling process that resulted in the given Portal.API.Models.PublicModels.V2.Base.ResultBase.ErrorCode",
            "nullable": true,
            "example": null
          },
          "errorMessageTranslated": {
            "type": "string",
            "description": "Contains a translated version of the error message that has been defined for the Portal.API.Models.PublicModels.V2.Base.ResultBase.ErrorCode property.",
            "nullable": true,
            "example": null
          },
          "validationErrors": {
            "type": "object",
            "additionalProperties": false,
            "description": "Validation Errors for each Property.",
            "nullable": true
          },
          "currentCount": {
            "type": "integer",
            "description": "The number of items in the current page.",
            "format": "int32",
            "example": 1
          },
          "totalCount": {
            "type": "integer",
            "description": "The total number of available company objects for the dedicated method and query options.",
            "format": "int32",
            "example": 1
          },
          "foundItems": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicLocation"
            },
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "The result object used when querying the company tree with certain criteria."
      },
      "PublicNotification": {
        "type": "object",
        "properties": {
          "registerNumber": {
            "type": "string",
            "description": "The register number associated with this notification.",
            "nullable": true,
            "example": "00000004ZP6"
          },
          "eventCode": {
            "type": "string",
            "description": "The event code that identifies the type of notification.",
            "nullable": true,
            "example": "TSE_ACTIVATED"
          },
          "descriptionShort": {
            "type": "string",
            "description": "Information about the activation status.",
            "nullable": true,
            "example": "TSE successfully activated"
          },
          "descriptionLong": {
            "type": "string",
            "description": "Detailed description of the activation or event.",
            "nullable": true,
            "example": "The TSE has been successfully activated and is ready for use"
          },
          "initialTimestamp": {
            "type": "string",
            "description": "The timestamp when the notification was initially created.",
            "format": "date-time",
            "example": "2024-01-15T10:30:00Z"
          },
          "companyId": {
            "type": "integer",
            "description": "The ID of the company associated with this notification.",
            "format": "int32",
            "example": 1545
          },
          "companyName": {
            "type": "string",
            "description": "The name of the company associated with this notification.",
            "nullable": true,
            "example": "ACME Store Berlin"
          }
        },
        "additionalProperties": false,
        "description": "Represents a public notification from the efsta system."
      },
      "PublicOrganization": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "The unique identifier of the company object.",
            "format": "int32",
            "example": 12345
          },
          "parentEntityId": {
            "type": "integer",
            "description": "The ID of the object owning the current object (e.g. the company a location is located under).",
            "format": "int32",
            "example": 1545
          },
          "name": {
            "type": "string",
            "description": "The name of the company.",
            "nullable": true,
            "example": "Acme Corporation"
          },
          "address": {
            "type": "string",
            "description": "The Address the object is located in (street and street number).",
            "nullable": true,
            "example": "123 Main Street"
          },
          "city": {
            "type": "string",
            "description": "The name of the city the object is located in.",
            "nullable": true,
            "example": "Berlin"
          },
          "zip": {
            "type": "string",
            "description": "The zip / postal code the object is located in.",
            "nullable": true,
            "example": "10115"
          },
          "countryCode": {
            "type": "string",
            "description": "The ISO-2 country code of the address of the object (e.g. DE, FR or AT)",
            "nullable": true,
            "example": "DE"
          },
          "invoiceEmailAddress": {
            "type": "string",
            "description": "The invoice email address relevant for all nodes that receive invoice-emails (primarily company entries)",
            "nullable": true,
            "example": "invoices@acmecorp.com"
          },
          "userComment": {
            "type": "string",
            "description": "A custom comment set by users to further decribe the current node.",
            "nullable": true,
            "example": "Main headquarters, established 1985"
          },
          "state": {
            "type": "string",
            "description": "The State of the Object [Productive|Deactivated|Test]",
            "nullable": true,
            "example": "Productive"
          },
          "badge": {
            "type": "string",
            "description": "Unique badge identifier for the organization used for external references and integrations.",
            "nullable": true,
            "example": "XVTGBLZVUG"
          }
        },
        "additionalProperties": false,
        "description": "Public data model representing organization information exposed through the API."
      },
      "PublicOrganizationResult": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Defines whether the request has been processed successfully or not. If ```true```, the other error properties will typically not be provided.",
            "example": true
          },
          "errorCode": {
            "type": "string",
            "description": "Specifies the type of error that happened during execution of the actual request.",
            "nullable": true,
            "example": null
          },
          "errorMessage": {
            "type": "string",
            "description": "Contains a brief description about what happened in the request handling process that resulted in the given Portal.API.Models.PublicModels.V2.Base.ResultBase.ErrorCode",
            "nullable": true,
            "example": null
          },
          "errorMessageTranslated": {
            "type": "string",
            "description": "Contains a translated version of the error message that has been defined for the Portal.API.Models.PublicModels.V2.Base.ResultBase.ErrorCode property.",
            "nullable": true,
            "example": null
          },
          "validationErrors": {
            "type": "object",
            "additionalProperties": false,
            "description": "Validation Errors for each Property.",
            "nullable": true
          },
          "organization": {
            "$ref": "#/components/schemas/PublicOrganization"
          }
        },
        "additionalProperties": false,
        "description": "Result wrapper for organization operations containing the organization data and operation status."
      },
      "PublicOrganizationSearchPublicCompanyObjectsResult": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Defines whether the request has been processed successfully or not. If ```true```, the other error properties will typically not be provided.",
            "example": true
          },
          "errorCode": {
            "type": "string",
            "description": "Specifies the type of error that happened during execution of the actual request.",
            "nullable": true,
            "example": null
          },
          "errorMessage": {
            "type": "string",
            "description": "Contains a brief description about what happened in the request handling process that resulted in the given Portal.API.Models.PublicModels.V2.Base.ResultBase.ErrorCode",
            "nullable": true,
            "example": null
          },
          "errorMessageTranslated": {
            "type": "string",
            "description": "Contains a translated version of the error message that has been defined for the Portal.API.Models.PublicModels.V2.Base.ResultBase.ErrorCode property.",
            "nullable": true,
            "example": null
          },
          "validationErrors": {
            "type": "object",
            "additionalProperties": false,
            "description": "Validation Errors for each Property.",
            "nullable": true
          },
          "currentCount": {
            "type": "integer",
            "description": "The number of items in the current page.",
            "format": "int32",
            "example": 1
          },
          "totalCount": {
            "type": "integer",
            "description": "The total number of available company objects for the dedicated method and query options.",
            "format": "int32",
            "example": 1
          },
          "foundItems": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicOrganization"
            },
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "The result object used when querying the company tree with certain criteria."
      },
      "PublicProduct": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "The internal ID that uniquely identifies the product entry in the efsta Cloud.",
            "format": "int32",
            "example": 42
          },
          "name": {
            "type": "string",
            "description": "The name of the product.",
            "nullable": true,
            "example": "Swissbit Cloud TSE"
          },
          "descriptionShort": {
            "type": "string",
            "description": "A short description of the product.",
            "nullable": true,
            "example": "Cloud-based Technical Security Equipment"
          },
          "descriptionLong": {
            "type": "string",
            "description": "A more detailed description of the product.",
            "nullable": true,
            "example": "A cloud-based TSE solution for German fiscal requirements, providing secure transaction recording and digital signature capabilities."
          },
          "warningText": {
            "type": "string",
            "description": "A warning text used for showing warnings and information during the purchase process (e.g. about environmental requirements / protection, etc.).\r\nThese warnings need to be followed and taken care of to properly use some products (e.g. cloud TSEs in Germany)",
            "nullable": true,
            "example": "This product requires a stable internet connection and compliance with German fiscal regulations."
          },
          "countryCode": {
            "type": "string",
            "description": "The country code the product is valid for. If product is not available in a certain country it might not make sense to actually purchase them\r\nfor a company in the country as it might not function properly.",
            "nullable": true,
            "example": "DE"
          },
          "priceOnce": {
            "type": "number",
            "description": "The one time price of the product (e.g. for hardware or one time fees like activation).\r\nThe example value is a placeholder (0.00), not a real or indicative price, effective prices are\r\ncontract-specific and are only returned by the live API for the requesting company.",
            "format": "double",
            "nullable": true,
            "example": 0
          },
          "priceReoccurring": {
            "type": "number",
            "description": "The reoccurring price of the product in case it has to be charged as a subscription or similar.\r\nThe example value is a placeholder (0.00), not a real or indicative price, effective prices are\r\ncontract-specific and are only returned by the live API for the requesting company.",
            "format": "double",
            "nullable": true,
            "example": 0
          },
          "imageLink": {
            "type": "string",
            "description": "A link to the image of the product.",
            "nullable": true,
            "example": "https://cdn.efsta.com/products/swissbit-cloud-tse.jpg"
          },
          "supplier": {
            "type": "string",
            "description": "The supplier of the product (that is used to determine the correct handling of the product).",
            "nullable": true,
            "example": "SWISSBIT"
          },
          "amountLimit": {
            "type": "integer",
            "description": "The limit of the amount that can be ordered of that item (if applicable). This can be used to prevent an invalid number\r\nof items to be ordered at once (e.g. when ordering Deutsche Fiskal Cloud TSE on company-level).",
            "format": "int32",
            "nullable": true,
            "example": 50
          },
          "amountSelectionType": {
            "type": "integer",
            "description": "The type of selection allowed for the item amount. 1 = no amount assignment needed, 2 = location required (ID), 3 = TL/TT required (text), 4 = TL required (text).\r\nExample 1 - Deutsche Fiskal Cloud TSE (type 2): The AmountAssignment of the PurchaseItem with that product needs to have a valid location ID and the amount of TSEs for that location.\r\nExample 2 - efsta offline licenses per location (type 4): The AmountAssignment of the PurchaseItem with that product needs to have a valid location TL of the cash register that will use the license (e.g. 001)",
            "format": "int32",
            "example": 2
          }
        },
        "additionalProperties": false,
        "description": "A single product with all necessary details to plan and place a proper purchase request.\r\nNOTE: The values in the example below are illustrative only, this schema documentation is NOT a price list.\r\nThe example prices are deliberately 0.00. Effective prices are contract- and company-specific, are resolved by\r\nthe efsta Cloud per request, and may be omitted entirely depending on the purchase mode of the company."
      },
      "PublicPurchaseOverview": {
        "type": "object",
        "properties": {
          "purchaseId": {
            "type": "integer",
            "description": "The unique ID of the purchase as internally created.",
            "format": "int32",
            "example": 12345
          },
          "purchaseKey": {
            "type": "string",
            "description": "The generated key that is more human readable and without any gaps in between all purchases.",
            "nullable": true,
            "example": "PUR-2024-001"
          },
          "purchaseReference": {
            "type": "string",
            "description": "The manually set purchase reference that has been set during purchase process.",
            "nullable": true,
            "example": "ORDER-2024-001"
          },
          "companyId": {
            "type": "integer",
            "description": "The ID of the company the purchase has been placed for.",
            "format": "int32",
            "nullable": true,
            "example": 1545
          },
          "companyName": {
            "type": "string",
            "description": "The name of the purchase company.",
            "nullable": true,
            "example": "ACME Store Berlin"
          },
          "purchaserName": {
            "type": "string",
            "description": "The name of the purchaser or the company it has been purchased for if no name can be resolved (e.g. due to missing permissions).",
            "nullable": true,
            "example": "John Doe"
          },
          "shippingCompanyId": {
            "type": "integer",
            "description": "The company ID of the shipping location. This can be empty if the shipping information has been passed manually.",
            "format": "int32",
            "nullable": true,
            "example": 1546
          },
          "shippingName": {
            "type": "string",
            "description": "The name of the shipping company.",
            "nullable": true,
            "example": "ACME Store Berlin - Shipping"
          },
          "invoiceCompanyId": {
            "type": "integer",
            "description": "The company ID of the company that should receive the invoice for the purchase.",
            "format": "int32",
            "example": 1545
          },
          "currentInvoiceCompanyId": {
            "type": "integer",
            "description": "The current company ID of the company that should receive the invoice for the purchase. This is different from the other invoice company ID\r\nin case the invoice receiver has been changed (via efsta support / partner management).",
            "format": "int32",
            "example": 1545
          },
          "invoiceName": {
            "type": "string",
            "description": "The name of the invoice company.",
            "nullable": true,
            "example": "ACME Store Berlin"
          },
          "creationUserId": {
            "type": "integer",
            "description": "The internal ID of the user that created and places the purchase.",
            "format": "int32",
            "nullable": true,
            "example": 123
          },
          "creationUserName": {
            "type": "string",
            "description": "The name of the user that created and places the purchase.",
            "nullable": true,
            "example": "John Doe"
          },
          "purchaseDate": {
            "type": "string",
            "description": "The date and time the purchase has been created and placed on.",
            "format": "date-time",
            "nullable": true,
            "example": "2024-01-15T10:30:00"
          },
          "supplier": {
            "type": "string",
            "description": "Product detail: The supplier of the current product.",
            "nullable": true,
            "example": "SWISSBIT"
          },
          "productCode": {
            "type": "string",
            "description": "Product detail: The code of the current product",
            "nullable": true,
            "example": "SWISSBIT_CLOUD_TSE"
          },
          "productName": {
            "type": "string",
            "description": "Product detail: The name of the current product",
            "nullable": true,
            "example": "Swissbit Cloud TSE"
          },
          "quantity": {
            "type": "integer",
            "description": "Product detail: The quantity of the product for the current line.",
            "format": "int32",
            "example": 3
          },
          "priceOnce": {
            "type": "number",
            "description": "Product detail: The one-time price of the product (e.g. hardware or activation fees)\r\nThe example value is a placeholder (0.00), not a real or indicative price, effective prices are\r\ncontract-specific and are only returned by the live API for the actual purchase.",
            "format": "double",
            "nullable": true,
            "example": 0
          },
          "priceReoccurring": {
            "type": "number",
            "description": "Product detail: The price of services that are reoccurring (e.g. SAAS products / subscriptions).\r\nThe example value is a placeholder (0.00), not a real or indicative price, effective prices are\r\ncontract-specific and are only returned by the live API for the actual purchase.",
            "format": "double",
            "nullable": true,
            "example": 0
          },
          "state": {
            "type": "string",
            "description": "The state of the complete purchase.",
            "nullable": true,
            "example": "COMPLETED"
          },
          "stateInfo": {
            "type": "string",
            "description": "An additional information text for the state of the complete purchase.",
            "nullable": true,
            "example": "Purchase successfully processed"
          },
          "companyState": {
            "type": "integer",
            "description": "The current state of the company this purchase has been placed for (10 = production, 9 = test).",
            "format": "int32",
            "nullable": true,
            "example": 10
          },
          "testOrder": {
            "type": "boolean",
            "description": "Defines whether this was a test purchase or not.",
            "example": false
          },
          "purchaserInfo": {
            "type": "string",
            "description": "Additional information about the purchaser if available.",
            "nullable": true,
            "example": "Purchase made via API"
          },
          "productNameTranslated": {
            "type": "string",
            "description": "The translated name of the product if available.",
            "nullable": true,
            "example": "Swissbit Cloud TSE"
          }
        },
        "additionalProperties": false,
        "description": "Overview information for a purchase transaction in the efsta system.\r\nNOTE: The values in the example below are illustrative only, this schema documentation is NOT a price list.\r\nThe example prices are deliberately 0.00. Effective prices are contract- and company-specific and are only\r\nreturned by the live API for the actual purchase."
      },
      "PublicRegister": {
        "type": "object",
        "properties": {
          "registerNumber": {
            "type": "string",
            "description": "The register number that uniquely identifies the cash register and/or EFR in the efsta Cloud.",
            "nullable": true,
            "example": "00000004ZP6"
          },
          "parentEntityId": {
            "type": "integer",
            "description": "The ID of the company object within the company tree the register is directly assigned to (e.g. the location , company\r\nor the organization for Multi-Company EFRs)",
            "format": "int32",
            "example": 1545
          },
          "countryCode": {
            "type": "string",
            "description": "The ISO-2 country code used to identify the country-specific version of the underlying EFR. This is not\r\nnecessarily the same as the country of the company it is assigned to.",
            "nullable": true,
            "example": "DE"
          },
          "lastTL": {
            "type": "string",
            "description": "Represents the TL (terminal location) identification that was last transmitted to the cloud (typically via\r\nthe last transaction data from the cash register software). In general, this is an internal identification\r\nof the location the EFR is operated in.",
            "nullable": true,
            "example": "001"
          },
          "lastTT": {
            "type": "string",
            "description": "Represents the TT (transaction terminal) identification that was last transmitted to the cloud (typically via\r\nthe last transaction data from the cash register software). In general this is the internal identification of that\r\nspecific terminal within the current location.",
            "nullable": true,
            "example": "001"
          },
          "userComment": {
            "type": "string",
            "description": "The user-defined comment used to better identify the register or describe the history, state or other important\r\nproperties of the cash register and its data.",
            "nullable": true,
            "example": "Main cash register - Store entrance"
          },
          "firstTransaction": {
            "type": "integer",
            "description": "An integer describing the date of the first transaction of that register (if applicable). Format: YYMMDDHH",
            "format": "int32",
            "nullable": true,
            "example": 24011508
          },
          "lastTransaction": {
            "type": "integer",
            "description": "Public data model representing register information exposed through the API.",
            "format": "int32",
            "nullable": true,
            "example": 24032315
          },
          "versionNumber": {
            "type": "string",
            "description": "The version of the EFR software currently running on the register. Returns null as long as the register has\r\nnot reported a version to the cloud yet.",
            "nullable": true,
            "example": "2.5.2"
          },
          "state": {
            "$ref": "#/components/schemas/ObjectState"
          },
          "isCloudEFR": {
            "type": "boolean",
            "description": "Defines whether the current EFR instance is a Cloud EFR or a sub-client / sub-register on one.",
            "example": true
          },
          "creationTimestamp": {
            "type": "string",
            "description": "Represents the timestamp the register has been created on.",
            "format": "date-time",
            "nullable": true,
            "example": "2024-01-15T08:00:00Z"
          }
        },
        "additionalProperties": false,
        "description": "Represents a single entry from the pool of all available registers."
      },
      "PublicRegisterConfiguration": {
        "type": "object",
        "properties": {
          "trm": {
            "$ref": "#/components/schemas/TerminalConfiguration"
          },
          "profile": {
            "$ref": "#/components/schemas/ProfileConfiguration"
          },
          "doc": {
            "$ref": "#/components/schemas/EDocumentConfiguration"
          },
          "cert": {
            "$ref": "#/components/schemas/CertificateConfiguration"
          },
          "cmp": {
            "$ref": "#/components/schemas/CompanyConfiguration"
          },
          "loc": {
            "$ref": "#/components/schemas/LocationConfiguration"
          },
          "sendingState": {
            "$ref": "#/components/schemas/ConfigurationSendingState"
          }
        },
        "additionalProperties": false,
        "description": "Public data model representing register (cash register / POS) configuration information exposed through the API.\r\nCombines company-level and location-level settings together with the current sending status of the register."
      },
      "PublicRegisterSearchPublicCompanyObjectsResult": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Defines whether the request has been processed successfully or not. If ```true```, the other error properties will typically not be provided.",
            "example": true
          },
          "errorCode": {
            "type": "string",
            "description": "Specifies the type of error that happened during execution of the actual request.",
            "nullable": true,
            "example": null
          },
          "errorMessage": {
            "type": "string",
            "description": "Contains a brief description about what happened in the request handling process that resulted in the given Portal.API.Models.PublicModels.V2.Base.ResultBase.ErrorCode",
            "nullable": true,
            "example": null
          },
          "errorMessageTranslated": {
            "type": "string",
            "description": "Contains a translated version of the error message that has been defined for the Portal.API.Models.PublicModels.V2.Base.ResultBase.ErrorCode property.",
            "nullable": true,
            "example": null
          },
          "validationErrors": {
            "type": "object",
            "additionalProperties": false,
            "description": "Validation Errors for each Property.",
            "nullable": true
          },
          "currentCount": {
            "type": "integer",
            "description": "The number of items in the current page.",
            "format": "int32",
            "example": 1
          },
          "totalCount": {
            "type": "integer",
            "description": "The total number of available company objects for the dedicated method and query options.",
            "format": "int32",
            "example": 1
          },
          "foundItems": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PublicRegister"
            },
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "The result object used when querying the company tree with certain criteria."
      },
      "PublicRegisterUpdateSoftwareResult": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Defines whether the request has been processed successfully or not. If ```true```, the other error properties will typically not be provided.",
            "example": true
          },
          "errorCode": {
            "type": "string",
            "description": "Specifies the type of error that happened during execution of the actual request.",
            "nullable": true,
            "example": null
          },
          "errorMessage": {
            "type": "string",
            "description": "Contains a brief description about what happened in the request handling process that resulted in the given Portal.API.Models.PublicModels.V2.Base.ResultBase.ErrorCode",
            "nullable": true,
            "example": null
          },
          "errorMessageTranslated": {
            "type": "string",
            "description": "Contains a translated version of the error message that has been defined for the Portal.API.Models.PublicModels.V2.Base.ResultBase.ErrorCode property.",
            "nullable": true,
            "example": null
          },
          "validationErrors": {
            "type": "object",
            "additionalProperties": false,
            "description": "Validation Errors for each Property.",
            "nullable": true
          },
          "registerNumber": {
            "type": "string",
            "description": "The number of the updated register.",
            "nullable": true,
            "example": "00000006ZP6"
          }
        },
        "additionalProperties": false
      },
      "PublicReportingDEState": {
        "type": "object",
        "properties": {
          "guid": {
            "type": "string",
            "description": "The identifier of the ReportingState.",
            "nullable": true
          },
          "companyId": {
            "type": "integer",
            "description": "Gets or sets the CompanyId.",
            "format": "int32"
          },
          "creationTimestamp": {
            "type": "string",
            "description": "Gets or sets the CreationTimestamp.",
            "format": "date-time",
            "nullable": true
          },
          "isNewest": {
            "type": "boolean",
            "description": "Flag if the current report is the newest."
          },
          "state": {
            "type": "string",
            "description": "Gets or sets the State.",
            "nullable": true
          },
          "sentTimestamp": {
            "type": "string",
            "description": "Gets or sets the SentTimestamp.",
            "format": "date-time",
            "nullable": true
          },
          "sentEmail": {
            "type": "string",
            "description": "Gets or sets the SentEmail.",
            "nullable": true
          },
          "downloaded": {
            "type": "boolean",
            "description": "Flag hat shows whether the file was downloaded once."
          },
          "activeDevices": {
            "type": "integer",
            "description": "Gets or sets the number of ActiveDevices.",
            "format": "int32",
            "nullable": true
          },
          "deactivatedDevices": {
            "type": "integer",
            "description": "Gets or sets the number of DeactivatedDevices.",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "PublicTicket": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "The unique identifier of the ticket.",
            "format": "int32",
            "example": 12345
          },
          "companyId": {
            "type": "integer",
            "description": "The ID of the company this ticket belongs to.",
            "format": "int32",
            "example": 1001
          },
          "creatorUserId": {
            "type": "integer",
            "description": "The ID of the user who created this ticket.",
            "format": "int32",
            "example": 42
          },
          "receiverUserId": {
            "type": "integer",
            "description": "The ID of the user who received this ticket.",
            "format": "int32",
            "example": 43
          },
          "dataRangeFrom": {
            "type": "string",
            "description": "Start date of the data range for the export.",
            "format": "date-time",
            "example": "2024-01-01T00:00:00"
          },
          "dataRangeTo": {
            "type": "string",
            "description": "End date of the data range for the export.",
            "format": "date-time",
            "example": "2024-01-31T23:59:59"
          },
          "validFrom": {
            "type": "string",
            "description": "Timestamp from when the ticket is valid.",
            "format": "date-time",
            "example": "2024-01-15T10:30:00Z"
          },
          "validTo": {
            "type": "string",
            "description": "Timestamp until when the ticket is valid/available for download.",
            "format": "date-time",
            "nullable": true,
            "example": "2024-02-15T10:30:00Z"
          },
          "created": {
            "type": "string",
            "description": "Timestamp when the ticket was created.",
            "format": "date-time",
            "example": "2024-01-15T10:30:00Z"
          },
          "ticketNr": {
            "type": "string",
            "description": "The ticket number that uniquely identifies the export request.",
            "nullable": true,
            "example": "EXP-2024-001234"
          },
          "finished": {
            "type": "string",
            "description": "Timestamp when the export was finished (if applicable).",
            "format": "date-time",
            "nullable": true,
            "example": "2024-01-15T10:35:00Z"
          },
          "userInfo": {
            "type": "string",
            "description": "Additional user information or comments about this ticket.",
            "nullable": true,
            "example": "Monthly transaction export"
          },
          "deleted": {
            "type": "boolean",
            "description": "Indicates whether this ticket has been deleted/expired.",
            "example": false
          },
          "exportType": {
            "type": "string",
            "description": "The type of export (e.g., \"PDF\", \"CSV\", \"XML\").",
            "nullable": true,
            "example": "PDF"
          },
          "status": {
            "type": "string",
            "description": "The status of the ticket (e.g., \"Pending\", \"Success\", \"Failed\", \"Canceled\").",
            "nullable": true,
            "example": "Success"
          }
        },
        "additionalProperties": false
      },
      "PublicUserProfile": {
        "type": "object",
        "properties": {
          "userId": {
            "type": "integer",
            "description": "The unique ID of the user.",
            "format": "int32",
            "example": 123
          },
          "realname": {
            "type": "string",
            "description": "The real name of the user profile, typically containing a human readable text describing the user (i.e. the actual name of a person or the purpose of the API key)",
            "nullable": true,
            "example": "John Doe"
          },
          "emailAddress": {
            "type": "string",
            "description": "The registered email address of the user profile, e.g. for needed communication.",
            "nullable": true,
            "example": "john.doe@partner-company.com"
          },
          "preferredLanguage": {
            "type": "string",
            "description": "The language code used for communication and translation (whenever translation is available).",
            "nullable": true,
            "example": "en"
          }
        },
        "additionalProperties": false,
        "description": "A single user profile describing an existing user in the efsta cloud system."
      },
      "PurchaseItem": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "The efsta ID of the product that should be purchases. This ID can be found in the GetProducts route of the public controller where all available options for a specific\r\ncompany are listed with all details.",
            "format": "int32",
            "example": 42
          },
          "amount": {
            "type": "integer",
            "description": "The number of times this item has to be purchased for the current purchase process.",
            "format": "int32",
            "example": 3
          },
          "amountAssignment": {
            "type": "object",
            "additionalProperties": {
              "type": "integer",
              "format": "int32"
            },
            "description": "A mapping sometimes required for some items and allows the precise assignment of a certain amount of the ordered products to be assigned e.g. to a location.",
            "nullable": true,
            "example": {
              "LOC-001": 2,
              "LOC-002": 1
            }
          }
        },
        "additionalProperties": false,
        "description": "A single item used in the purchase process."
      },
      "RemovePublicFeatureRequest": {
        "type": "object",
        "properties": {
          "featureCode": {
            "type": "string",
            "description": "The FeatureCode for the feature to be removed.",
            "nullable": true
          },
          "countryCode": {
            "type": "string",
            "description": "The CountryCode for the country for which the feature should be removed.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Request model for removing a feature from a company or register."
      },
      "RemovePublicFeatureResult": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Defines whether the request has been processed successfully or not. If ```true```, the other error properties will typically not be provided.",
            "example": true
          },
          "errorCode": {
            "type": "string",
            "description": "Specifies the type of error that happened during execution of the actual request.",
            "nullable": true,
            "example": null
          },
          "errorMessage": {
            "type": "string",
            "description": "Contains a brief description about what happened in the request handling process that resulted in the given Portal.API.Models.PublicModels.V2.Base.ResultBase.ErrorCode",
            "nullable": true,
            "example": null
          },
          "errorMessageTranslated": {
            "type": "string",
            "description": "Contains a translated version of the error message that has been defined for the Portal.API.Models.PublicModels.V2.Base.ResultBase.ErrorCode property.",
            "nullable": true,
            "example": null
          },
          "validationErrors": {
            "type": "object",
            "additionalProperties": false,
            "description": "Validation Errors for each Property.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ReportingDE": {
        "type": "object",
        "properties": {
          "registerNumber": {
            "type": "string",
            "nullable": true
          },
          "supportLevel": {
            "type": "integer",
            "format": "int32"
          },
          "type": {
            "type": "integer",
            "format": "int32"
          },
          "software": {
            "type": "string",
            "nullable": true
          },
          "serial": {
            "type": "string",
            "nullable": true
          },
          "manufacturer": {
            "type": "string",
            "nullable": true
          },
          "model": {
            "type": "string",
            "nullable": true
          },
          "purchaseDate": {
            "type": "string",
            "format": "date-time"
          },
          "activationDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "deactivationDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "fiscalUnitSerial": {
            "type": "string",
            "nullable": true
          },
          "fiscalUnitType": {
            "type": "integer",
            "format": "int32"
          },
          "fiscalUnitManufacturer": {
            "type": "string",
            "nullable": true
          },
          "fiscalUnitActivationDate": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "bsiid": {
            "type": "string",
            "nullable": true
          },
          "isExternalRegister": {
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "ReportingDEContact": {
        "type": "object",
        "properties": {
          "companyId": {
            "type": "integer",
            "format": "int32"
          },
          "tin": {
            "type": "string",
            "nullable": true
          },
          "idNr": {
            "type": "string",
            "nullable": true
          },
          "salutation": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "lastName": {
            "type": "string",
            "nullable": true
          },
          "firstName": {
            "type": "string",
            "nullable": true
          },
          "dateOfBirth": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "addressType": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "contactType": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "street": {
            "type": "string",
            "nullable": true
          },
          "streetNumber": {
            "type": "string",
            "nullable": true
          },
          "postalCode": {
            "type": "string",
            "nullable": true
          },
          "city": {
            "type": "string",
            "nullable": true
          },
          "country": {
            "type": "string",
            "nullable": true
          },
          "wIdNr": {
            "type": "string",
            "nullable": true
          },
          "companyName": {
            "type": "string",
            "nullable": true
          },
          "legalForm": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "streetNumberSuffix": {
            "type": "string",
            "nullable": true
          },
          "addressSuffix": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "ResultBase": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Defines whether the request has been processed successfully or not. If ```true```, the other error properties will typically not be provided.",
            "example": true
          },
          "errorCode": {
            "type": "string",
            "description": "Specifies the type of error that happened during execution of the actual request.",
            "nullable": true,
            "example": null
          },
          "errorMessage": {
            "type": "string",
            "description": "Contains a brief description about what happened in the request handling process that resulted in the given Portal.API.Models.PublicModels.V2.Base.ResultBase.ErrorCode",
            "nullable": true,
            "example": null
          },
          "errorMessageTranslated": {
            "type": "string",
            "description": "Contains a translated version of the error message that has been defined for the Portal.API.Models.PublicModels.V2.Base.ResultBase.ErrorCode property.",
            "nullable": true,
            "example": null
          },
          "validationErrors": {
            "type": "object",
            "additionalProperties": false,
            "description": "Validation Errors for each Property.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Represents the base result object of any request response and contains a set of general error and success handling properties."
      },
      "SearchPublicCompaniesRequest": {
        "type": "object",
        "properties": {
          "parentEntityId": {
            "type": "integer",
            "description": "Optional company ID to get all entries for. If set, all direct children of that specified company will be filtered.",
            "format": "int32",
            "nullable": true,
            "example": 1545
          },
          "createdAfter": {
            "type": "string",
            "description": "Optional filter that allows filtering for companies that have been created after a certain threshold (format: ISO-8601)",
            "format": "date-time",
            "nullable": true,
            "example": "2023-01-01T00:00:00Z"
          },
          "hasUserComment": {
            "type": "boolean",
            "description": "Filter to get company objects that either have or do not have a valid comment set by the user. If not provided (or with null) the filter will entirely be ignored.",
            "nullable": true,
            "example": true
          },
          "hasDeactivateAfterTimestamp": {
            "type": "boolean",
            "description": "Filter to get company objects that either have or do not have a predefined deactivation date set. If not provided (or with null) the filter will entirely be ignored.",
            "nullable": true,
            "example": false
          },
          "searchText": {
            "type": "string",
            "description": "A search text that will be used\tto search for companies containing that text ion relevant fields (name, comment, etc.).",
            "nullable": true,
            "example": "Berlin"
          },
          "orderByField": {
            "type": "string",
            "description": "Defines field name by which to order. Can be left empty to apply default ordering by name. See company results for possible fields to order by.",
            "nullable": true,
            "example": "Name"
          },
          "orderDescending": {
            "type": "boolean",
            "description": "Defines whether the order by criteria is used for descending or ascending order by process.",
            "example": false
          },
          "state": {
            "type": "string",
            "description": "The State of the Object [Productive|Deactivated|Test]",
            "nullable": true,
            "example": "Productive"
          },
          "offset": {
            "type": "integer",
            "description": "Defines the number of items to skip when loading transactions. This can be used for paging requests.",
            "format": "int32",
            "nullable": true,
            "example": 0
          },
          "limit": {
            "type": "integer",
            "description": "Defines the number of items to load. This can be used for paging requests. Can be between 0 (disabled) and 250. If no info is passed, 100 will be used as the default behavior.",
            "format": "int32",
            "nullable": true,
            "example": 50
          },
          "countryCode": {
            "type": "string",
            "description": "Optional filter for ISO-2 country code (e.g. DE, FR, AT) of the company objects to filter.",
            "nullable": true,
            "example": "AT"
          }
        },
        "additionalProperties": false,
        "description": "A request used to search company objects in the company tree of the efsta Portal."
      },
      "SearchPublicLocationsRequest": {
        "type": "object",
        "properties": {
          "parentEntityId": {
            "type": "integer",
            "description": "Optional company ID to get all entries for. If set, all direct children of that specified company will be filtered.",
            "format": "int32",
            "nullable": true,
            "example": 1545
          },
          "createdAfter": {
            "type": "string",
            "description": "Optional filter that allows filtering for companies that have been created after a certain threshold (format: ISO-8601)",
            "format": "date-time",
            "nullable": true,
            "example": "2023-01-01T00:00:00Z"
          },
          "hasUserComment": {
            "type": "boolean",
            "description": "Filter to get company objects that either have or do not have a valid comment set by the user. If not provided (or with null) the filter will entirely be ignored.",
            "nullable": true,
            "example": true
          },
          "hasDeactivateAfterTimestamp": {
            "type": "boolean",
            "description": "Filter to get company objects that either have or do not have a predefined deactivation date set. If not provided (or with null) the filter will entirely be ignored.",
            "nullable": true,
            "example": false
          },
          "searchText": {
            "type": "string",
            "description": "A search text that will be used\tto search for companies containing that text ion relevant fields (name, comment, etc.).",
            "nullable": true,
            "example": "Berlin"
          },
          "orderByField": {
            "type": "string",
            "description": "Defines field name by which to order. Can be left empty to apply default ordering by name. See company results for possible fields to order by.",
            "nullable": true,
            "example": "Name"
          },
          "orderDescending": {
            "type": "boolean",
            "description": "Defines whether the order by criteria is used for descending or ascending order by process.",
            "example": false
          },
          "state": {
            "type": "string",
            "description": "The State of the Object [Productive|Deactivated|Test]",
            "nullable": true,
            "example": "Productive"
          },
          "offset": {
            "type": "integer",
            "description": "Defines the number of items to skip when loading transactions. This can be used for paging requests.",
            "format": "int32",
            "nullable": true,
            "example": 0
          },
          "limit": {
            "type": "integer",
            "description": "Defines the number of items to load. This can be used for paging requests. Can be between 0 (disabled) and 250. If no info is passed, 100 will be used as the default behavior.",
            "format": "int32",
            "nullable": true,
            "example": 50
          },
          "countryCode": {
            "type": "string",
            "description": "Optional filter for ISO-2 country code (e.g. DE, FR, AT) of the company objects to filter.",
            "nullable": true,
            "example": "DE"
          }
        },
        "additionalProperties": false,
        "description": "A request used to search locations objects in the company tree of the efsta Portal."
      },
      "SearchPublicOrganizationsRequest": {
        "type": "object",
        "properties": {
          "parentEntityId": {
            "type": "integer",
            "description": "Optional company ID to get all entries for. If set, all direct children of that specified company will be filtered.",
            "format": "int32",
            "nullable": true,
            "example": 1545
          },
          "createdAfter": {
            "type": "string",
            "description": "Optional filter that allows filtering for companies that have been created after a certain threshold (format: ISO-8601)",
            "format": "date-time",
            "nullable": true,
            "example": "2023-01-01T00:00:00Z"
          },
          "hasUserComment": {
            "type": "boolean",
            "description": "Filter to get company objects that either have or do not have a valid comment set by the user. If not provided (or with null) the filter will entirely be ignored.",
            "nullable": true,
            "example": true
          },
          "hasDeactivateAfterTimestamp": {
            "type": "boolean",
            "description": "Filter to get company objects that either have or do not have a predefined deactivation date set. If not provided (or with null) the filter will entirely be ignored.",
            "nullable": true,
            "example": false
          },
          "searchText": {
            "type": "string",
            "description": "A search text that will be used\tto search for companies containing that text ion relevant fields (name, comment, etc.).",
            "nullable": true,
            "example": "Berlin"
          },
          "orderByField": {
            "type": "string",
            "description": "Defines field name by which to order. Can be left empty to apply default ordering by name. See company results for possible fields to order by.",
            "nullable": true,
            "example": "Name"
          },
          "orderDescending": {
            "type": "boolean",
            "description": "Defines whether the order by criteria is used for descending or ascending order by process.",
            "example": false
          },
          "state": {
            "type": "string",
            "description": "The State of the Object [Productive|Deactivated|Test]",
            "nullable": true,
            "example": "Productive"
          },
          "offset": {
            "type": "integer",
            "description": "Defines the number of items to skip when loading transactions. This can be used for paging requests.",
            "format": "int32",
            "nullable": true,
            "example": 0
          },
          "limit": {
            "type": "integer",
            "description": "Defines the number of items to load. This can be used for paging requests. Can be between 0 (disabled) and 250. If no info is passed, 100 will be used as the default behavior.",
            "format": "int32",
            "nullable": true,
            "example": 50
          }
        },
        "additionalProperties": false,
        "description": "A request used to search organizations in the company tree of the efsta Portal."
      },
      "SearchPublicRegistersRequest": {
        "type": "object",
        "properties": {
          "parentEntityId": {
            "type": "integer",
            "description": "Optional company ID to get all entries for. If set, all direct children of that specified company will be filtered.",
            "format": "int32",
            "nullable": true,
            "example": 1545
          },
          "createdAfter": {
            "type": "string",
            "description": "Optional filter that allows filtering for companies that have been created after a certain threshold (format: ISO-8601)",
            "format": "date-time",
            "nullable": true,
            "example": "2023-01-01T00:00:00Z"
          },
          "hasUserComment": {
            "type": "boolean",
            "description": "Filter to get company objects that either have or do not have a valid comment set by the user. If not provided (or with null) the filter will entirely be ignored.",
            "nullable": true,
            "example": true
          },
          "hasDeactivateAfterTimestamp": {
            "type": "boolean",
            "description": "Filter to get company objects that either have or do not have a predefined deactivation date set. If not provided (or with null) the filter will entirely be ignored.",
            "nullable": true,
            "example": false
          },
          "searchText": {
            "type": "string",
            "description": "A search text that will be used\tto search for companies containing that text ion relevant fields (name, comment, etc.).",
            "nullable": true,
            "example": "Berlin"
          },
          "orderByField": {
            "type": "string",
            "description": "Defines field name by which to order. Can be left empty to apply default ordering by name. See company results for possible fields to order by.",
            "nullable": true,
            "example": "Name"
          },
          "orderDescending": {
            "type": "boolean",
            "description": "Defines whether the order by criteria is used for descending or ascending order by process.",
            "example": false
          },
          "state": {
            "type": "string",
            "description": "The State of the Object [Productive|Deactivated|Test]",
            "nullable": true,
            "example": "Productive"
          },
          "offset": {
            "type": "integer",
            "description": "Defines the number of items to skip when loading transactions. This can be used for paging requests.",
            "format": "int32",
            "nullable": true,
            "example": 0
          },
          "limit": {
            "type": "integer",
            "description": "Defines the number of items to load. This can be used for paging requests. Can be between 0 (disabled) and 250. If no info is passed, 100 will be used as the default behavior.",
            "format": "int32",
            "nullable": true,
            "example": 50
          },
          "countryCode": {
            "type": "string",
            "description": "Optional filter for ISO-2 country code (e.g. DE, FR, AT) of the registers to filter. (e.g. to get a list of registers of a specific country).",
            "nullable": true
          },
          "tl": {
            "type": "string",
            "description": "Optional filter for specific TL (location identification) values. If provided, the content of LastTL (the last known location identification of that register)\r\nhas to match. This is case insensitive.",
            "nullable": true
          },
          "tt": {
            "type": "string",
            "description": "Optional filter for specific Tt (terminal / cash register identification) values. If provided, the content of LastTT (the last known terminal / cash register \r\nidentification of that register) has to match. This is case insensitive.",
            "nullable": true
          },
          "firstTransactionAfter": {
            "type": "string",
            "description": "Optional filter to limit the list to registers that have made the first transaction after the given timestamp (format: ISO-8601).",
            "format": "date-time",
            "nullable": true
          },
          "firstTransactionBefore": {
            "type": "string",
            "description": "Optional filter to limit the list to registers that have made the first transaction before the given timestamp (format: ISO-8601).",
            "format": "date-time",
            "nullable": true
          },
          "lastTransactionAfter": {
            "type": "string",
            "description": "Optional filter to limit the list to registers that have made the last transaction after the given timestamp (format: ISO-8601).",
            "format": "date-time",
            "nullable": true
          },
          "lastTransactionBefore": {
            "type": "string",
            "description": "Optional filter to limit the list to registers that have made the last transaction before the given timestamp (format: ISO-8601).",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "A request object used to execute specific search operations for the register list."
      },
      "StartPublicExportRequest": {
        "type": "object",
        "properties": {
          "registerNumber": {
            "type": "string",
            "description": "Optional semicolon-separated register number list to start the export for.",
            "nullable": true,
            "example": "000000011Z3;000000011Z4"
          },
          "from": {
            "type": "string",
            "description": "timestamp used to limit the export for (starting with data from that timestamp onwards). Only full dates are supported, not any day of time.",
            "format": "date-time",
            "nullable": true,
            "example": "2024-01-01T00:00:00"
          },
          "till": {
            "type": "string",
            "description": "timestamp used to limit the export for (stopping with data until that timestamp). Only full dates are supported, not any day of time.",
            "format": "date-time",
            "nullable": true,
            "example": "2024-12-31T23:59:59"
          },
          "exportType": {
            "$ref": "#/components/schemas/ExportTypes"
          },
          "exportName": {
            "type": "string",
            "description": "An optional name for the export to identify it later.",
            "nullable": true,
            "example": "Monthly Export January"
          },
          "externalRecipient": {
            "type": "string",
            "description": "An optional semicolon-separated list of external receiver email addresses (e.g. \"a@example.com;b@example.com\").\r\nEach address must be a valid email format.",
            "nullable": true,
            "example": "recipient1@example.com;recipient2@example.com"
          },
          "emailSubject": {
            "type": "string",
            "description": "An optional subject line for the email that will be sent to the external receivers.",
            "nullable": true,
            "example": "Your export is ready"
          },
          "emailBody": {
            "type": "string",
            "description": "An optional body text for the email that will be sent to the external receivers.",
            "nullable": true,
            "example": "Please find your export attached."
          },
          "notifyCreator": {
            "type": "boolean",
            "description": "If set to true, the creator of the export will also receive an email notification when the export is finished.",
            "example": true
          },
          "isEfstaOnly": {
            "type": "boolean",
            "description": "Indicates whether the export is intended for efsta internal use only.",
            "example": false
          }
        },
        "additionalProperties": false,
        "description": "The request object used to start a public export for one or more specific registers."
      },
      "StartPublicExportResult": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Defines whether the request has been processed successfully or not. If ```true```, the other error properties will typically not be provided.",
            "example": true
          },
          "errorCode": {
            "type": "string",
            "description": "Specifies the type of error that happened during execution of the actual request.",
            "nullable": true,
            "example": null
          },
          "errorMessage": {
            "type": "string",
            "description": "Contains a brief description about what happened in the request handling process that resulted in the given Portal.API.Models.PublicModels.V2.Base.ResultBase.ErrorCode",
            "nullable": true,
            "example": null
          },
          "errorMessageTranslated": {
            "type": "string",
            "description": "Contains a translated version of the error message that has been defined for the Portal.API.Models.PublicModels.V2.Base.ResultBase.ErrorCode property.",
            "nullable": true,
            "example": null
          },
          "validationErrors": {
            "type": "object",
            "additionalProperties": false,
            "description": "Validation Errors for each Property.",
            "nullable": true
          },
          "ticketNr": {
            "type": "string",
            "description": "The ticket number representing the export created.",
            "nullable": true,
            "example": "ACCB35183AEF9544B225CF78BBF4399A"
          },
          "password": {
            "type": "string",
            "description": "The randomly generated password (30 characters) used to authenticate access to the export.\r\nThis password, combined with the ticket number, allows anonymous download of the export file.",
            "nullable": true,
            "example": "Kj8mP2qR5wL9xN3vB7zT4yC6hF1"
          }
        },
        "additionalProperties": false,
        "description": "The result object describing the result and possibly error during the current operation."
      },
      "TerminalConfiguration": {
        "type": "object",
        "properties": {
          "tt": {
            "type": "string",
            "description": "The terminal type identifier.",
            "nullable": true,
            "example": "1"
          },
          "sw": {
            "type": "string",
            "description": "The name or identifier of the software running on the terminal.",
            "nullable": true,
            "example": "MY_POS"
          },
          "hw": {
            "type": "string",
            "description": "The name or identifier of the hardware the terminal is running on.",
            "nullable": true,
            "example": "CashDesk-Pro"
          },
          "serial": {
            "type": "string",
            "description": "The serial number of the terminal device.",
            "nullable": true,
            "example": "SN-2024-00451"
          },
          "manRegisterID": {
            "type": "string",
            "description": "Sweden only: The manufacturer's unique register ID assigned to the terminal.",
            "nullable": true,
            "example": "SE-MFR-00123"
          },
          "applicationID": {
            "type": "string",
            "description": "Sweden only: The application ID registered with the Swedish Tax Agency for the POS software.",
            "nullable": true,
            "example": "APP-SE-99001"
          },
          "hwModel": {
            "type": "string",
            "description": "Germany and Sweden only: The model name of the hardware device.",
            "nullable": true,
            "example": "CashDesk-Pro X200"
          },
          "swVersion": {
            "type": "string",
            "description": "Germany, France and Sweden only: The version number of the software running on the terminal.",
            "nullable": true,
            "example": "3.12.1"
          }
        },
        "additionalProperties": false,
        "description": "Represents the terminal (cash register / POS device) configuration,\r\nincluding hardware and software details used for fiscal identification."
      },
      "UpdatePublicCompanyConfigurationRequest": {
        "type": "object",
        "properties": {
          "companyConfiguration": {
            "$ref": "#/components/schemas/PublicCompanyConfiguration"
          }
        },
        "additionalProperties": false,
        "description": "Request wrapper for setting company configuration information"
      },
      "UpdatePublicCompanyConfigurationResult": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Defines whether the request has been processed successfully or not. If ```true```, the other error properties will typically not be provided.",
            "example": true
          },
          "errorCode": {
            "type": "string",
            "description": "Specifies the type of error that happened during execution of the actual request.",
            "nullable": true,
            "example": null
          },
          "errorMessage": {
            "type": "string",
            "description": "Contains a brief description about what happened in the request handling process that resulted in the given Portal.API.Models.PublicModels.V2.Base.ResultBase.ErrorCode",
            "nullable": true,
            "example": null
          },
          "errorMessageTranslated": {
            "type": "string",
            "description": "Contains a translated version of the error message that has been defined for the Portal.API.Models.PublicModels.V2.Base.ResultBase.ErrorCode property.",
            "nullable": true,
            "example": null
          },
          "validationErrors": {
            "type": "object",
            "additionalProperties": false,
            "description": "Validation Errors for each Property.",
            "nullable": true
          },
          "warning": {
            "type": "string",
            "description": "A warning message indicating any issues that occurred during the update process. This message is intended to inform the client of potential problems with the data, even if the update was successful. If there were no issues, this property may be null or empty.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Result wrapper for updating company configuration information. Contains a warning message if the update was successful but there were issues with some data."
      },
      "UpdatePublicCompanyRequest": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Represents the name of the object.",
            "nullable": true
          },
          "address": {
            "type": "string",
            "description": "The Address the object is located in (street and street number).",
            "nullable": true,
            "example": "123 Main Street"
          },
          "city": {
            "type": "string",
            "description": "The name of the city the object is located in.",
            "nullable": true,
            "example": "Berlin"
          },
          "zip": {
            "type": "string",
            "description": "The zip / postal code the object is located in.",
            "nullable": true,
            "example": "10115"
          },
          "countryCode": {
            "type": "string",
            "description": "The ISO-2 country code of the address of the object (e.g. DE, FR or AT)",
            "nullable": true,
            "example": "DE"
          },
          "invoiceEmailAddress": {
            "type": "string",
            "description": "The invoice email address relevant for all nodes that receive invoice-emails (primarily company entries)",
            "nullable": true,
            "example": "invoices@acmecorp.com"
          },
          "userComment": {
            "type": "string",
            "description": "A custom comment set by users to further decribe the current node.",
            "nullable": true,
            "example": "Main headquarters, established 1985"
          },
          "state": {
            "type": "string",
            "description": "Changes existing or creates new company objects as test company objects. THIS CANNOT BE UNDONE!\r\nValid values: \"Productive\", \"Deactivated\", \"Test\"",
            "nullable": true,
            "example": "Productive"
          },
          "countryProperties": {
            "$ref": "#/components/schemas/PublicCompanyCountryProperties"
          },
          "taxId": {
            "type": "string",
            "description": "The tax ID (also known as the ECI / external company identification) that is typically the EU tax ID (USt-ID, UID, etc.) of that company.\r\nThis can only be changed if the company's IgnoreEci flag is set to true in the database.",
            "nullable": true,
            "example": "DE999999999"
          }
        },
        "additionalProperties": false,
        "description": "The request object used to update a company via the public controller."
      },
      "UpdatePublicLocationConfigurationRequest": {
        "type": "object",
        "properties": {
          "locationConfiguration": {
            "$ref": "#/components/schemas/PublicLocationConfiguration"
          }
        },
        "additionalProperties": false,
        "description": "Request model for updating location configuration information through the API. Contains the location configuration data to be updated for a specific location, including address, contact details, and country-specific identifiers."
      },
      "UpdatePublicLocationConfigurationResult": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Defines whether the request has been processed successfully or not. If ```true```, the other error properties will typically not be provided.",
            "example": true
          },
          "errorCode": {
            "type": "string",
            "description": "Specifies the type of error that happened during execution of the actual request.",
            "nullable": true,
            "example": null
          },
          "errorMessage": {
            "type": "string",
            "description": "Contains a brief description about what happened in the request handling process that resulted in the given Portal.API.Models.PublicModels.V2.Base.ResultBase.ErrorCode",
            "nullable": true,
            "example": null
          },
          "errorMessageTranslated": {
            "type": "string",
            "description": "Contains a translated version of the error message that has been defined for the Portal.API.Models.PublicModels.V2.Base.ResultBase.ErrorCode property.",
            "nullable": true,
            "example": null
          },
          "validationErrors": {
            "type": "object",
            "additionalProperties": false,
            "description": "Validation Errors for each Property.",
            "nullable": true
          },
          "warning": {
            "type": "string",
            "description": "Warning text if the update was successful but the data was not entirely correct",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Result wrapper for updating location configuration information. Contains a Warning field to warn the customer on successful updates whether there were issues with the data"
      },
      "UpdatePublicLocationRequest": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Represents the name of the object.",
            "nullable": true
          },
          "address": {
            "type": "string",
            "description": "The Address the object is located in (street and street number).",
            "nullable": true,
            "example": "123 Main Street"
          },
          "city": {
            "type": "string",
            "description": "The name of the city the object is located in.",
            "nullable": true,
            "example": "Berlin"
          },
          "zip": {
            "type": "string",
            "description": "The zip / postal code the object is located in.",
            "nullable": true,
            "example": "10115"
          },
          "countryCode": {
            "type": "string",
            "description": "The ISO-2 country code of the address of the object (e.g. DE, FR or AT)",
            "nullable": true,
            "example": "DE"
          },
          "invoiceEmailAddress": {
            "type": "string",
            "description": "The invoice email address relevant for all nodes that receive invoice-emails (primarily company entries)",
            "nullable": true,
            "example": "invoices@acmecorp.com"
          },
          "userComment": {
            "type": "string",
            "description": "A custom comment set by users to further decribe the current node.",
            "nullable": true,
            "example": "Main headquarters, established 1985"
          },
          "state": {
            "type": "string",
            "description": "Changes existing or creates new company objects as test company objects. THIS CANNOT BE UNDONE!\r\nValid values: \"Productive\", \"Deactivated\", \"Test\"",
            "nullable": true,
            "example": "Productive"
          },
          "locationIdentification": {
            "type": "string",
            "description": "The identification of the location within the company (e.g. the location number, a unique identifier) Can contain upper and lower case characters as\r\nwell as numbers and special characters -+<>#.,=.",
            "nullable": true,
            "example": "LOC-001"
          }
        },
        "additionalProperties": false,
        "description": "The request object used to update a location via the public controller."
      },
      "UpdatePublicOrganizationRequest": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Represents the name of the object.",
            "nullable": true
          },
          "invoiceEmailAddress": {
            "type": "string",
            "description": "The invoice email address relevant for all nodes that receive invoice-emails (primarily company entries)",
            "nullable": true,
            "example": "invoices@acmecorp.com"
          },
          "userComment": {
            "type": "string",
            "description": "A custom comment set by users to further decribe the current node.",
            "nullable": true,
            "example": "Main headquarters, established 1985"
          },
          "state": {
            "type": "string",
            "description": "Changes existing or creates new company objects as test company objects. THIS CANNOT BE UNDONE!\r\nValid values: \"Productive\", \"Deactivated\", \"Test\"",
            "nullable": true,
            "example": "Productive"
          },
          "countryProperties": {
            "$ref": "#/components/schemas/PublicCompanyCountryProperties"
          },
          "address": {
            "type": "string",
            "nullable": true
          },
          "city": {
            "type": "string",
            "nullable": true
          },
          "zip": {
            "type": "string",
            "nullable": true
          },
          "countryCode": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "The request object used to update an organization via the public controller."
      },
      "UpdatePublicRegisterConfigurationRequest": {
        "type": "object",
        "properties": {
          "registerConfiguration": {
            "$ref": "#/components/schemas/PublicRegisterConfiguration"
          }
        },
        "additionalProperties": false,
        "description": "Request model for updating register configuration information through the API."
      },
      "UpdatePublicRegisterConfigurationResult": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean",
            "description": "Defines whether the request has been processed successfully or not. If ```true```, the other error properties will typically not be provided.",
            "example": true
          },
          "errorCode": {
            "type": "string",
            "description": "Specifies the type of error that happened during execution of the actual request.",
            "nullable": true,
            "example": null
          },
          "errorMessage": {
            "type": "string",
            "description": "Contains a brief description about what happened in the request handling process that resulted in the given Portal.API.Models.PublicModels.V2.Base.ResultBase.ErrorCode",
            "nullable": true,
            "example": null
          },
          "errorMessageTranslated": {
            "type": "string",
            "description": "Contains a translated version of the error message that has been defined for the Portal.API.Models.PublicModels.V2.Base.ResultBase.ErrorCode property.",
            "nullable": true,
            "example": null
          },
          "validationErrors": {
            "type": "object",
            "additionalProperties": false,
            "description": "Validation Errors for each Property.",
            "nullable": true
          },
          "warning": {
            "type": "string",
            "description": "A warning message indicating potential issues with the new register configuration data provided, even if the update was successful. This can be used to inform users of any non-critical problems that may need attention after the update.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Result wrapper for updating register configuration information. Currently only contains a warning message if the update was successful but there are potential issues with the new data provided."
      }
    },
    "securitySchemes": {
      "api_key": {
        "type": "apiKey",
        "description": "Authorization via API key",
        "name": "api_key",
        "in": "header"
      }
    }
  },
  "security": [
    {
      "api_key": [ ]
    }
  ],
  "tags": [
    {
      "name": "1.Organization",
      "description": "Endpoints for managing organizational structures and organization of the entire company structure"
    },
    {
      "name": "2.Company",
      "description": "Endpoints for managing companies and their specific information such as tax numbers and address data"
    },
    {
      "name": "3.Location",
      "description": "Endpoints for managing locations within a company where cash registers are operated"
    },
    {
      "name": "4.Register",
      "description": "Endpoints for managing cash registers and fiscal units within locations"
    },
    {
      "name": "5.Purchase",
      "description": "Endpoints for managing orders and purchasing products and licenses"
    },
    {
      "name": "6.Export",
      "description": "Endpoints for managing export operations and retrieving exported data"
    },
    {
      "name": "7.Fiscal",
      "description": "Endpoints for managing fiscal units and tax data in the context of fiscalization"
    },
    {
      "name": "8.User",
      "description": "Endpoints for managing users and their permissions"
    },
    {
      "name": "9.Tools",
      "description": "Utility endpoints and tools for various administration tasks and utilities"
    }
  ]
}