> ## Documentation Index
> Fetch the complete documentation index at: https://dokumentation.websale.de/llms.txt
> Use this file to discover all available pages before exploring further.

# REST PageSpeed-Tool

> JavaScript- und CSS-Pakete über REST neu bauen lassen und den Build-Prozess überwachen, mit Paketstatus und detaillierten Syntaxfehlern.

Das PageSpeed-Tool gruppiert JavaScript- und CSS-Dateien, minimiert sie und exportiert sie in den Shop. Über diese Schnittstelle lösen Sie den Build aus und verfolgen seinen Verlauf, beispielsweise als letzten Schritt eines Deployments.

Beide Aufrufe brauchen ein Token, siehe [REST-Authentifizierung](https://dokumentation.websale.de/v8s/schnittstellen/rest-osb-dienste/rest-authentifizierung.md). Content-Type ist `application/json`.

## Build starten

```
POST https://www.websale.de/api/pagespeedtool/build
```

| Eigenschaft | Typ | Beschreibung |
| - | - | - |
| `type` | string | Welche Gruppen generiert werden sollen. Pflichtfeld. Mögliche Werte: `js` oder `css`. |

```json theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{
    "type": "js"
}
```

Mit curl, hier für die CSS-Gruppen:

```bash theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
curl \
 -X POST \
 -H "Content-Type: application/json" \
 -H "X-Authorization: Bearer eyJhbGciOiJIUzI1Ni...jBhOWMyMmRmNzFkOT==" \
 -d '{
    "type": "css"
}' \
"https://www.websale.de/api/pagespeedtool/build"
```

Bei Erfolg antwortet der Server mit HTTP-Code 200 und leerem Inhalt.

| Status-Code | Bedeutung | Beschreibung |
| - | - | - |
| 400 | Bad Request | Ungültiger Content-Type oder falsches Format beziehungsweise falscher Inhalt des Request-Body |
| 401 | Unauthorized | Keine Berechtigung für die ShopID oder Token abgelaufen |
| 409 | Conflict | Es läuft bereits ein Build-Prozess |

Weil JavaScript und CSS getrennt gebaut werden, brauchen Sie zwei Aufrufe. Starten Sie sie nacheinander, sonst läuft der zweite in einen 409.

## Status abfragen

```
GET https://www.websale.de/api/pagespeedtool/status
```

Ein Request-Body ist nicht nötig.

```bash theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
curl \
 -X GET \
 -H "Content-Type: application/json" \
 -H "X-Authorization: Bearer eyJhbGciOiJIUzI1Ni...jBhOWMyMmRmNzFkOT==" \
"https://www.websale.de/api/pagespeedtool/status"
```

| Feld | Typ | Beschreibung |
| - | - | - |
| `status` | String | `running`, `error` oder `finished` |
| `progress` | Integer | Fortschritt in Prozent |
| `packages` | Integer | Anzahl der Pakete, die verarbeitet werden |
| `finished` | Integer | Anzahl der bereits verarbeiteten Pakete |
| `package` | Array | Detailinformationen zu allen Paketen |
| `package[].id` | String | ID des Pakets |
| `package[].status` | String | `ok`, `bundle-error`, `minify-error` oder `error` |
| `package[].changed` | Bool | Ob sich das Paket seit der letzten Generierung inhaltlich geändert hat |
| `package[].error` | Array oder Object | Bei `bundle-error` die Liste der nicht gefundenen Ressourcen, bei `minify-error` ein Objekt mit Details zum Syntaxfehler |
| `package[].error.resource` | String | Ressource, in der der Syntaxfehler gefunden wurde |
| `package[].error.line` | String | Zeile des Syntaxfehlers |
| `package[].error.pos` | String | Position des Syntaxfehlers |
| `package[].error.msg` | String | Beschreibung des Syntaxfehlers |

Die Paketstatus im Einzelnen:

| Status | Bedeutung |
| - | - |
| `ok` | Paket wurde erfolgreich gebaut |
| `bundle-error` | Es konnten nicht alle Ressourcen geladen werden |
| `minify-error` | Syntaxfehler innerhalb einer Ressource |
| `error` | Das Ergebnis konnte nicht gespeichert werden |

```json theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{
  "status": "finished",
  "progress": 100,
  "packages": 4,
  "finished": 4,
  "package": [
    {
      "id": "package1",
      "status": "ok",
      "changed": true,
      "type": "js"
    }
  ]
}
```

| Status-Code | Bedeutung | Beschreibung |
| - | - | - |
| 401 | Unauthorized | Keine Berechtigung für die ShopID oder Token abgelaufen |
| 404 | Not Found | Es läuft aktuell kein Build-Prozess |

Die Statusabfrage liefert nur so lange eine gültige Antwort, bis der Build abgeschlossen ist und die Meldung `finished` oder `error` einmal abgerufen wurde. Danach antwortet sie mit 404. Holen Sie das Ergebnis also ab und werten Sie es sofort aus, ein zweiter Abruf liefert es nicht erneut.

## Verwandte Themen

* Wegweiser: [REST-Schnittstelle für OSB-Dienste](https://dokumentation.websale.de/v8s/schnittstellen/rest-osb-dienste.md)
* Wegweiser: [Ladezeit und Verschlüsselung](https://dokumentation.websale.de/v8s/seo/ladezeit-und-verschluesselung.md)
* Wegweiser: [JavaScript und jQuery](https://dokumentation.websale.de/v8s/templates/javascript-und-jquery.md)


## Related topics

- [REST-Schnittstelle für OSB-Dienste](https://dokumentation.websale.de/v8s/schnittstellen/rest-osb-dienste.md)
- [JavaScript und jQuery](https://dokumentation.websale.de/v8s/templates/javascript-und-jquery.md)
- [CSS](https://dokumentation.websale.de/v8s/templates/css.md)
- [Materialien Tracking-Schnittstelle](https://dokumentation.websale.de/v8s/materialien/materialien-tracking-schnittstelle.md)
- [WEBSALE JavaScript-Bibliothek](https://dokumentation.websale.de/v8s/materialien/websale-javascript-bibliothek.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.