> ## Knowledge Base Index
> Fetch the complete knowledge base index at: https://support.robaws.com/sitemap.xml
> Use this file to discover available pages before exploring further.
> Pure-Markdown content can be obtained by appending a '.md' suffix to the content URLs listed in the sitemap (without the trailing slash).

# Kalkulation über die API

## Einfaches Beispiel

Wenn du ein Angebot über die API berechnen möchtest, musst du es wie folgt anlegen.
Beachte, dass du in den Feldern `quantityFormula` echte Formeln verwenden kannst.


```json
POST https://app.robaws.com/api/v2/offers
Content-Type: application/json

{
  "calculated": true, // gibt an, dass es sich um ein kalkuliertes Angebot handelt (im Gegensatz zu einem einfachen Angebot)
  "addressDistance": { // optional: Anzahl Kilometer bis zur Baustelle
    "value": "10",
    "unit": "KM"
  },
  "lineItems": [
    {
      "quantityFormula": "DISTANCE_KM", // Beispiel: Verwende die vordefinierte Variable DISTANCE_KM, um die Kilometer als Anzahl zu übernehmen
      "calculationLineItems": [
        {
          "description": "Kilometer",
          "quantityFormula": "1",
          "price": 0.5
        }
      ]
    }
  ]
}
```


Wenn alles korrekt ist, erhältst du eine `201 CREATED`-Antwort zurück. Im Response-Body findest du unter anderem:

```
"calculationStatus": "PENDING"
```


Der Status `PENDING` bedeutet, dass die Kalkulation angefragt wurde und sich noch in der Warteschlange befindet.


Du kannst dann entweder:

* regelmäßig das Angebot abrufen, bis der Status auf `DONE` steht
* oder einen Webhook verwenden, um informiert zu werden, sobald die Berechnung abgeschlossen ist. Das ist die empfohlene Methode.
---


## Webhook für calculationStatus

Registriere einen Webhook wie folgt, um benachrichtigt zu werden, sobald die Berechnung eines Angebots abgeschlossen ist.

```
POST https://app.robaws.com/api/v2/webhook-endpoints
Content-Type: application/json

{
  "url": "https://webhooks.your-app.com/robaws/offer/recalculated",
  "events": ["offer.recalculated"]
}
```

Die Nachricht, die wir per Webhook an deine Anwendung senden, sieht wie folgt aus:

[Mehr Informationen zu Webhooks](https://support.robaws.com/de/article/webhooks-1yu0buf/)


```
{
  "id": "08241443-0335-4f3d-94a2-d6da6c201545",
  "event": "offer.recalculated",
  "resource": "/offers/3409",
  "user": null,
  "timestamp": "2025-09-15T06:35:10.329Z",
  "data": {
    "id": "3409"
  }
}
```

Wenn du danach einen `GET` auf das betreffende Angebot ausführst, kannst du die Summen und Zwischensummen abrufen.
---


## Beispiel mit Positionsnummern

Wenn du mit vordefinierten Positionsnummern arbeiten möchtest, ist das ebenfalls möglich.

In diesem Fall sieht die `POST`-Anfrage wie folgt aus:

```
POST https://app.robaws.com/api/v2/offers
Content-Type: application/json

{
  "calculated": true, // gibt an, dass es sich um ein kalkuliertes Angebot handelt (im Gegensatz zu einem einfachen Angebot)
  "addressDistance": { // optional: Anzahl Kilometer bis zur Baustelle
    "value": "10",
    "unit": "KM"
  },
  "lineItems": [
    {
      "quantityFormula": "1",
      "chapter": "1.1" // hier übergibst du die Positionsnummer
    },
    {
      "quantityFormula": "1",
      "chapter": "1.2" // hier übergibst du die Positionsnummer
    }
  ],
  "actions": [
    {
      "action": "ASSIGN_POSTS" // weist Positionen aus der Bibliothek anhand von chapter zu
    },
    {
      "action": "UPDATE_PRICES", // aktualisiert die Preise anhand der neuesten Preise aus deiner Artikelbibliothek
      "strategy": "UPDATE_COST_PRICE_AND_SALES_PRICE" // oder UPDATE_COST_PRICE_KEEP_MARGIN
    }
  ]
}
```