{
  "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://portal-api.efsta.net",
      "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. This is a full update operation - all properties should be included in the request as missing properties may cause validation errors or unexpected behavior.\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 all properties to update. All properties will be updated, so include all current values.",
          "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/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. This is a full update operation - all properties should be included in the request as missing properties may cause validation errors or unexpected behavior.\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 - All company fields should be provided as the update replaces the entire entity\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 all properties to update. All properties will be updated, so include all current values.",
          "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/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. This is a full update operation - all properties should be included in the request as missing properties may cause validation errors or unexpected behavior.\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 all properties to update. All properties will be updated, so include all current values.",
          "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/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/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\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."
          },
          "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": {
      "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
      },
      "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 fiskaly 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."
      },
      "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"
        ],
        "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
      },
      "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."
      },
      "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."
      },
      "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."
      },
      "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
      },
      "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."
      },
      "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."
      },
      "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": "fiskaly 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).",
            "format": "double",
            "nullable": true,
            "example": 29.99
          },
          "priceReoccurring": {
            "type": "number",
            "description": "The reoccurring price of the product in case it has to be charged as a subscription or similar.",
            "format": "double",
            "nullable": true,
            "example": 9.99
          },
          "imageLink": {
            "type": "string",
            "description": "A link to the image of the product.",
            "nullable": true,
            "example": "https://cdn.efsta.com/products/fiskaly-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": "fiskaly"
          },
          "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."
      },
      "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": "fiskaly"
          },
          "productCode": {
            "type": "string",
            "description": "Product detail: The code of the current product",
            "nullable": true,
            "example": "FISK-TSE-CLOUD-001"
          },
          "productName": {
            "type": "string",
            "description": "Product detail: The name of the current product",
            "nullable": true,
            "example": "fiskaly 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)",
            "format": "double",
            "nullable": true,
            "example": 29.99
          },
          "priceReoccurring": {
            "type": "number",
            "description": "Product detail: The price of services that are reoccurring (e.g. SAAS products / subscriptions).",
            "format": "double",
            "nullable": true,
            "example": 9.99
          },
          "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": "fiskaly Cloud TSE"
          }
        },
        "additionalProperties": false,
        "description": "Overview information for a purchase transaction in the efsta system."
      },
      "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": "Software Version of the Register",
            "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."
      },
      "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."
      },
      "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": {
        "required": [
          "exportType",
          "from",
          "till"
        ],
        "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",
            "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",
            "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."
      },
      "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."
      },
      "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."
      }
    },
    "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"
    }
  ]
}