{
  "openapi": "3.1.0",
  "info": {
    "title": "KASTRATI CONSULTING — Public services and calculation",
    "version": "2026-09-29.1",
    "description": "Public, read-only information and non-binding price calculations. No account, personal data, file upload, email, order or enquiry is created by these operations. Submit enquiries through the accessible website form after user review."
  },
  "servers": [
    {
      "url": "https://kastrati-c.ch"
    }
  ],
  "paths": {
    "/data/services.{language}.json": {
      "get": {
        "operationId": "getServices",
        "summary": "Read services, prices, units, dependencies and calculation rules",
        "parameters": [
          {
            "name": "language",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "de",
                "en",
                "sq"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Current service catalogue. All monetary integers are CHF rappen.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        }
      }
    },
    "/api/calculate.php": {
      "post": {
        "operationId": "calculateEstimate",
        "summary": "Calculate a non-binding estimate and prepare a review link",
        "description": "Does not send an enquiry or email. Only public service IDs and numeric quantities are accepted; no contact information. Use a current catalogue version. Existing visitor selections are preserved until the user chooses to replace them.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "version",
                  "items"
                ],
                "properties": {
                  "version": {
                    "type": "string",
                    "const": "2026-09-29.1"
                  },
                  "locale": {
                    "type": "string",
                    "enum": [
                      "de",
                      "en",
                      "sq"
                    ],
                    "default": "de"
                  },
                  "items": {
                    "type": "array",
                    "maxItems": 46,
                    "items": {
                      "oneOf": [
                        {
                          "type": "object",
                          "additionalProperties": false,
                          "required": [
                            "id"
                          ],
                          "properties": {
                            "id": {
                              "type": "string",
                              "const": "formation-sole"
                            }
                          }
                        },
                        {
                          "type": "object",
                          "additionalProperties": false,
                          "required": [
                            "id"
                          ],
                          "properties": {
                            "id": {
                              "type": "string",
                              "const": "formation-partnership"
                            }
                          }
                        },
                        {
                          "type": "object",
                          "additionalProperties": false,
                          "required": [
                            "id"
                          ],
                          "properties": {
                            "id": {
                              "type": "string",
                              "const": "formation-gmbh"
                            }
                          }
                        },
                        {
                          "type": "object",
                          "additionalProperties": false,
                          "required": [
                            "id"
                          ],
                          "properties": {
                            "id": {
                              "type": "string",
                              "const": "formation-ag"
                            }
                          }
                        },
                        {
                          "type": "object",
                          "additionalProperties": false,
                          "required": [
                            "id"
                          ],
                          "properties": {
                            "id": {
                              "type": "string",
                              "const": "bookkeeping"
                            },
                            "bookings": {
                              "type": "integer",
                              "minimum": 0,
                              "maximum": 100000,
                              "default": 420
                            },
                            "existing": {
                              "type": "boolean",
                              "default": false,
                              "description": "Existing access may qualify for an individually agreed setup discount; no automatic reduction."
                            }
                          }
                        },
                        {
                          "type": "object",
                          "additionalProperties": false,
                          "required": [
                            "id"
                          ],
                          "properties": {
                            "id": {
                              "type": "string",
                              "const": "bookkeeping-individual"
                            }
                          }
                        },
                        {
                          "type": "object",
                          "additionalProperties": false,
                          "required": [
                            "id"
                          ],
                          "properties": {
                            "id": {
                              "type": "string",
                              "const": "setup"
                            },
                            "existing": {
                              "type": "boolean",
                              "default": false,
                              "description": "Existing access may qualify for an individually agreed setup discount; no automatic reduction."
                            }
                          }
                        },
                        {
                          "type": "object",
                          "additionalProperties": false,
                          "required": [
                            "id"
                          ],
                          "properties": {
                            "id": {
                              "type": "string",
                              "const": "dropbox"
                            }
                          }
                        },
                        {
                          "type": "object",
                          "additionalProperties": false,
                          "required": [
                            "id"
                          ],
                          "properties": {
                            "id": {
                              "type": "string",
                              "const": "assets"
                            }
                          }
                        },
                        {
                          "type": "object",
                          "additionalProperties": false,
                          "required": [
                            "id"
                          ],
                          "properties": {
                            "id": {
                              "type": "string",
                              "const": "gav"
                            }
                          }
                        },
                        {
                          "type": "object",
                          "additionalProperties": false,
                          "required": [
                            "id"
                          ],
                          "properties": {
                            "id": {
                              "type": "string",
                              "const": "vat-effective"
                            }
                          }
                        },
                        {
                          "type": "object",
                          "additionalProperties": false,
                          "required": [
                            "id"
                          ],
                          "properties": {
                            "id": {
                              "type": "string",
                              "const": "ebanking"
                            }
                          }
                        },
                        {
                          "type": "object",
                          "additionalProperties": false,
                          "required": [
                            "id"
                          ],
                          "properties": {
                            "id": {
                              "type": "string",
                              "const": "payroll"
                            },
                            "qty": {
                              "type": "integer",
                              "minimum": 1,
                              "maximum": 1000,
                              "default": 1
                            }
                          }
                        },
                        {
                          "type": "object",
                          "additionalProperties": false,
                          "required": [
                            "id"
                          ],
                          "properties": {
                            "id": {
                              "type": "string",
                              "const": "employment-contract"
                            },
                            "qty": {
                              "type": "integer",
                              "minimum": 1,
                              "maximum": 1000,
                              "default": 1
                            }
                          }
                        },
                        {
                          "type": "object",
                          "additionalProperties": false,
                          "required": [
                            "id"
                          ],
                          "properties": {
                            "id": {
                              "type": "string",
                              "const": "termination"
                            },
                            "qty": {
                              "type": "integer",
                              "minimum": 1,
                              "maximum": 1000,
                              "default": 1
                            }
                          }
                        },
                        {
                          "type": "object",
                          "additionalProperties": false,
                          "required": [
                            "id"
                          ],
                          "properties": {
                            "id": {
                              "type": "string",
                              "const": "reference"
                            },
                            "qty": {
                              "type": "integer",
                              "minimum": 1,
                              "maximum": 1000,
                              "default": 1
                            }
                          }
                        },
                        {
                          "type": "object",
                          "additionalProperties": false,
                          "required": [
                            "id"
                          ],
                          "properties": {
                            "id": {
                              "type": "string",
                              "const": "employer-certificate"
                            },
                            "qty": {
                              "type": "integer",
                              "minimum": 1,
                              "maximum": 1000,
                              "default": 1
                            }
                          }
                        },
                        {
                          "type": "object",
                          "additionalProperties": false,
                          "required": [
                            "id"
                          ],
                          "properties": {
                            "id": {
                              "type": "string",
                              "const": "interim-earnings"
                            },
                            "qty": {
                              "type": "integer",
                              "minimum": 1,
                              "maximum": 1000,
                              "default": 1
                            }
                          }
                        },
                        {
                          "type": "object",
                          "additionalProperties": false,
                          "required": [
                            "id"
                          ],
                          "properties": {
                            "id": {
                              "type": "string",
                              "const": "audit-support"
                            },
                            "minutes": {
                              "type": "integer",
                              "minimum": 1,
                              "maximum": 60000,
                              "default": 60
                            }
                          }
                        },
                        {
                          "type": "object",
                          "additionalProperties": false,
                          "required": [
                            "id"
                          ],
                          "properties": {
                            "id": {
                              "type": "string",
                              "const": "business-onsite"
                            },
                            "minutes": {
                              "type": "integer",
                              "minimum": 1,
                              "maximum": 60000,
                              "default": 60
                            },
                            "travel": {
                              "type": "integer",
                              "minimum": 0,
                              "maximum": 60000,
                              "default": 0,
                              "description": "Total outward and return travel time."
                            }
                          }
                        },
                        {
                          "type": "object",
                          "additionalProperties": false,
                          "required": [
                            "id"
                          ],
                          "properties": {
                            "id": {
                              "type": "string",
                              "const": "business-consulting"
                            },
                            "minutes": {
                              "type": "integer",
                              "minimum": 1,
                              "maximum": 60000,
                              "default": 60
                            }
                          }
                        },
                        {
                          "type": "object",
                          "additionalProperties": false,
                          "required": [
                            "id"
                          ],
                          "properties": {
                            "id": {
                              "type": "string",
                              "const": "business-enquiries"
                            },
                            "minutes": {
                              "type": "integer",
                              "minimum": 1,
                              "maximum": 60000,
                              "default": 60
                            }
                          }
                        },
                        {
                          "type": "object",
                          "additionalProperties": false,
                          "required": [
                            "id"
                          ],
                          "properties": {
                            "id": {
                              "type": "string",
                              "const": "invoice"
                            },
                            "qty": {
                              "type": "integer",
                              "minimum": 1,
                              "maximum": 1000,
                              "default": 1
                            }
                          }
                        },
                        {
                          "type": "object",
                          "additionalProperties": false,
                          "required": [
                            "id"
                          ],
                          "properties": {
                            "id": {
                              "type": "string",
                              "const": "business-power"
                            },
                            "qty": {
                              "type": "integer",
                              "minimum": 1,
                              "maximum": 1000,
                              "default": 1
                            }
                          }
                        },
                        {
                          "type": "object",
                          "additionalProperties": false,
                          "required": [
                            "id"
                          ],
                          "properties": {
                            "id": {
                              "type": "string",
                              "const": "business-document"
                            },
                            "qty": {
                              "type": "integer",
                              "minimum": 1,
                              "maximum": 1000,
                              "default": 1
                            }
                          }
                        },
                        {
                          "type": "object",
                          "additionalProperties": false,
                          "required": [
                            "id"
                          ],
                          "properties": {
                            "id": {
                              "type": "string",
                              "const": "debt-enforcement"
                            },
                            "qty": {
                              "type": "integer",
                              "minimum": 1,
                              "maximum": 1000,
                              "default": 1
                            }
                          }
                        },
                        {
                          "type": "object",
                          "additionalProperties": false,
                          "required": [
                            "id"
                          ],
                          "properties": {
                            "id": {
                              "type": "string",
                              "const": "domicile"
                            }
                          }
                        },
                        {
                          "type": "object",
                          "additionalProperties": false,
                          "required": [
                            "id"
                          ],
                          "properties": {
                            "id": {
                              "type": "string",
                              "const": "mail-service"
                            }
                          }
                        },
                        {
                          "type": "object",
                          "additionalProperties": false,
                          "required": [
                            "id"
                          ],
                          "properties": {
                            "id": {
                              "type": "string",
                              "const": "business-postage"
                            },
                            "qty": {
                              "type": "integer",
                              "minimum": 1,
                              "maximum": 1000,
                              "default": 1
                            }
                          }
                        },
                        {
                          "type": "object",
                          "additionalProperties": false,
                          "required": [
                            "id"
                          ],
                          "properties": {
                            "id": {
                              "type": "string",
                              "const": "tax-return"
                            }
                          }
                        },
                        {
                          "type": "object",
                          "additionalProperties": false,
                          "required": [
                            "id"
                          ],
                          "properties": {
                            "id": {
                              "type": "string",
                              "const": "property-simple"
                            },
                            "qty": {
                              "type": "integer",
                              "minimum": 1,
                              "maximum": 1000,
                              "default": 1
                            }
                          }
                        },
                        {
                          "type": "object",
                          "additionalProperties": false,
                          "required": [
                            "id"
                          ],
                          "properties": {
                            "id": {
                              "type": "string",
                              "const": "property-detailed"
                            },
                            "qty": {
                              "type": "integer",
                              "minimum": 1,
                              "maximum": 1000,
                              "default": 1
                            }
                          }
                        },
                        {
                          "type": "object",
                          "additionalProperties": false,
                          "required": [
                            "id"
                          ],
                          "properties": {
                            "id": {
                              "type": "string",
                              "const": "securities"
                            }
                          }
                        },
                        {
                          "type": "object",
                          "additionalProperties": false,
                          "required": [
                            "id"
                          ],
                          "properties": {
                            "id": {
                              "type": "string",
                              "const": "income-statement"
                            }
                          }
                        },
                        {
                          "type": "object",
                          "additionalProperties": false,
                          "required": [
                            "id"
                          ],
                          "properties": {
                            "id": {
                              "type": "string",
                              "const": "private-onsite"
                            },
                            "minutes": {
                              "type": "integer",
                              "minimum": 1,
                              "maximum": 60000,
                              "default": 60
                            },
                            "travel": {
                              "type": "integer",
                              "minimum": 0,
                              "maximum": 60000,
                              "default": 0,
                              "description": "Total outward and return travel time."
                            }
                          }
                        },
                        {
                          "type": "object",
                          "additionalProperties": false,
                          "required": [
                            "id"
                          ],
                          "properties": {
                            "id": {
                              "type": "string",
                              "const": "private-consulting"
                            },
                            "minutes": {
                              "type": "integer",
                              "minimum": 1,
                              "maximum": 60000,
                              "default": 60
                            }
                          }
                        },
                        {
                          "type": "object",
                          "additionalProperties": false,
                          "required": [
                            "id"
                          ],
                          "properties": {
                            "id": {
                              "type": "string",
                              "const": "private-enquiries"
                            },
                            "minutes": {
                              "type": "integer",
                              "minimum": 1,
                              "maximum": 60000,
                              "default": 60
                            }
                          }
                        },
                        {
                          "type": "object",
                          "additionalProperties": false,
                          "required": [
                            "id"
                          ],
                          "properties": {
                            "id": {
                              "type": "string",
                              "const": "forms"
                            },
                            "minutes": {
                              "type": "integer",
                              "minimum": 1,
                              "maximum": 60000,
                              "default": 60
                            }
                          }
                        },
                        {
                          "type": "object",
                          "additionalProperties": false,
                          "required": [
                            "id"
                          ],
                          "properties": {
                            "id": {
                              "type": "string",
                              "const": "private-power"
                            },
                            "qty": {
                              "type": "integer",
                              "minimum": 1,
                              "maximum": 1000,
                              "default": 1
                            }
                          }
                        },
                        {
                          "type": "object",
                          "additionalProperties": false,
                          "required": [
                            "id"
                          ],
                          "properties": {
                            "id": {
                              "type": "string",
                              "const": "private-document"
                            },
                            "qty": {
                              "type": "integer",
                              "minimum": 1,
                              "maximum": 1000,
                              "default": 1
                            }
                          }
                        },
                        {
                          "type": "object",
                          "additionalProperties": false,
                          "required": [
                            "id"
                          ],
                          "properties": {
                            "id": {
                              "type": "string",
                              "const": "post-b5"
                            },
                            "qty": {
                              "type": "integer",
                              "minimum": 1,
                              "maximum": 1000,
                              "default": 1
                            }
                          }
                        },
                        {
                          "type": "object",
                          "additionalProperties": false,
                          "required": [
                            "id"
                          ],
                          "properties": {
                            "id": {
                              "type": "string",
                              "const": "accounting-other"
                            },
                            "minutes": {
                              "type": "integer",
                              "minimum": 1,
                              "maximum": 60000,
                              "default": 60
                            }
                          }
                        },
                        {
                          "type": "object",
                          "additionalProperties": false,
                          "required": [
                            "id"
                          ],
                          "properties": {
                            "id": {
                              "type": "string",
                              "const": "payroll-other"
                            },
                            "minutes": {
                              "type": "integer",
                              "minimum": 1,
                              "maximum": 60000,
                              "default": 60
                            }
                          }
                        },
                        {
                          "type": "object",
                          "additionalProperties": false,
                          "required": [
                            "id"
                          ],
                          "properties": {
                            "id": {
                              "type": "string",
                              "const": "business-other"
                            },
                            "minutes": {
                              "type": "integer",
                              "minimum": 1,
                              "maximum": 60000,
                              "default": 60
                            }
                          }
                        },
                        {
                          "type": "object",
                          "additionalProperties": false,
                          "required": [
                            "id"
                          ],
                          "properties": {
                            "id": {
                              "type": "string",
                              "const": "tax-other"
                            },
                            "minutes": {
                              "type": "integer",
                              "minimum": 1,
                              "maximum": 60000,
                              "default": 60
                            }
                          }
                        },
                        {
                          "type": "object",
                          "additionalProperties": false,
                          "required": [
                            "id"
                          ],
                          "properties": {
                            "id": {
                              "type": "string",
                              "const": "private-other"
                            },
                            "minutes": {
                              "type": "integer",
                              "minimum": 1,
                              "maximum": 60000,
                              "default": 60
                            }
                          }
                        }
                      ]
                    }
                  }
                }
              },
              "example": {
                "version": "2026-09-29.1",
                "locale": "de",
                "items": [
                  {
                    "id": "bookkeeping",
                    "bookings": 500
                  },
                  {
                    "id": "payroll",
                    "qty": 2
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Calculated CHF/rappen amounts, flags and a prepared selection URL. One-off costs are separate from recurring annual totals.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "nonBinding",
                    "enquiryCreated",
                    "emailSent",
                    "result",
                    "enquiryUrl"
                  ],
                  "properties": {
                    "nonBinding": {
                      "const": true
                    },
                    "enquiryCreated": {
                      "const": false
                    },
                    "emailSent": {
                      "const": false
                    },
                    "currency": {
                      "const": "CHF"
                    },
                    "moneyUnit": {
                      "const": "integer_rappen"
                    },
                    "result": {
                      "type": "object"
                    },
                    "totalsCHF": {
                      "type": "object"
                    },
                    "enquiryUrl": {
                      "type": "string",
                      "format": "uri"
                    }
                  }
                }
              }
            }
          },
          "413": {
            "description": "Request too large."
          },
          "415": {
            "description": "Use application/json."
          },
          "422": {
            "description": "Invalid input or stale catalogue. Reload the catalogue and correct the selection."
          }
        }
      }
    }
  }
}
