> ## 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.

# API-Referenz Bildkonverter

> Produkt- und Kategoriebilder über die Admin Interface API hochladen, konvertieren, löschen und die zugehörigen Bild-URLs abfragen.

Die Schnittstelle unter `/images/` bietet Ihnen umfassende Funktionen zur Verwaltung von Bildern unterschiedlicher Formate in unserem Shopsystem.

Über verschiedene Endpunkte können Sie Bilder hochladen, konvertieren, löschen sowie die zugehörigen URLs abrufen.

***

## Unterstützte Methoden

Angabe aller unterstützten Methoden.

| **Befehl/Info**  | **Endpunkte** | **GET**               | **PUT**             | **POST**              | **DELETE**            |
| ---------------- | ------------- | --------------------- | ------------------- | --------------------- | --------------------- |
| **Image Upload** | images/       | <Icon icon="check" /> | <Icon icon="ban" /> | <Icon icon="check" /> | <Icon icon="check" /> |

## Unterstützte Bildformate

* `Bitmap`
* `FITS`
* `GIF`
* `Graphics Kernel System`
* `JPEG`
* `NIFF`
* `PM`
* `PNG`
* `XFIG`
* `XPM`
* `TIFF`
* `GIMP XCF`
* `webp`
* `AVIF`

## Datenfelder eines Verzeichnisses

| **Name**           | **Typ** | **Verwendung**                    |
| ------------------ | ------- | --------------------------------- |
| **name**           | String  | Der Name des Verzeichnisses       |
| **path**           | String  | Der Pfad zum Verzeichnis          |
| **subDirectories** | Array   | Ein Array von Unterverzeichnissen |

### Beispiel

```json theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{
    "name": "products",
    "path": "products",
    "subDirectories": [
        {
            "name": "thumbnail",
            "path": "products/thumbnail",
            "subDirectories": []
        },
        {
            "name": "normal",
            "path": "products/normal",
            "subDirectories": []
        },
        {
            "name": "large",
            "path": "products/large",
            "subDirectories": []
        }
    ]
}
```

## Methoden zur Verwaltung von Bildern

### GET images/url/\{typeId}

### GET images/url/\{typeId}

Dieser Endpunkt liefert die URL eines Bildes basierend auf dem angegebenen Typ (`typeId`) und optional dem gewünschten Format.

Er wird verwendet, um den Speicherort eines Bildes im System zu ermitteln – insbesondere, wenn der Pfad nach dem Hochladen nicht bekannt ist.\
Gültige Werte für `typeId` sind:

* `categories` für Kategoriebilder,
* `products` für Produktbilder,
* `appImages` für Bilder innerhalb der App-Oberfläche.

Die zurückgegebene URL zeigt auf das Zielverzeichnis für den jeweiligen Bildtyp, sodass anschließend Bilddaten korrekt abgelegt oder referenziert werden können. Leseberechtigungen sind erforderlich.

#### Beispiel

```text theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
https://www.<ihr-shop>.de/admin/api/v1/images/url/products?formatNodeId=content.imageFormat.normal
```

#### Antwort

```json theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{
    "success": true,
    "url": "//content.<ihr-shop>.de"
}
```

| **Fehler**       | **Typ**        | **Grund**                                                                                                                                          |
| ---------------- | -------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- |
| 401 Unauthorized |                | Nicht autorisiert: Sie sind nicht angemeldet oder verfügen nicht über die erforderlichen Rechte zum Lesen von Kategorie-, Produkt- oder App-Daten. |
| 400 Bad Request  | "invalidValue" |                                                                                                                                                    |
| 400 Bad Request  | "missing"      | `subshopId` oder `formatNodeId` wurden nicht übergeben.                                                                                            |

### GET images/directories/\{typeId}

### GET images/directories/\{typeId}

Dieser Endpunkt liefert die Struktur der verfügbaren Bildverzeichnisse als Baumstruktur zurück.

Je nach Wert des Parameters `typeId` werden entweder Quellverzeichnisse (`source`) oder Zielverzeichnisse (`target`) ausgegeben. Die Antwort enthält eine hierarchische Darstellung der vorhandenen Ordner und Unterordner.

#### Beispiel

```text theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
https://www.<ihr-shop>.de/admin/api/v1/images/directories/source
```

#### Antwort

```json theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{
    "items": [
        {
            "name": "myDir1",
            "path": "myDir1",
            "subDirectories": [
                {
                    "name": "myDir2",
                    "path": "myDir1/myDir2",
                    "subDirectories": []
                },
                {
                    "name": "myDir3",
                    "path": "myDir1/myDir3",
                    "subDirectories": [
                        {
                            "name": "myDir4",
                            "path": "myDir1/myDir3/myDir4",
                            "subDirectories": []
                        }
                    ]
                }
            ]
        }
    ]
}
```

#### Fehlercodes

| **Fehler**       | **Typ**        | **Grund**                                                                                                                            |
| ---------------- | -------------- | ------------------------------------------------------------------------------------------------------------------------------------ |
| 401 Unauthorized |                | Nicht autorisiert: Sie sind nicht angemeldet oder verfügen nicht über die erforderlichen Rechte zum Lesen von konvertierten Bildern. |
| 400 Bad Request  | "invalidValue" |                                                                                                                                      |

### GET images/convert/results

Dieser Endpunkt liefert eine paginierte Liste der Ergebnisse abgeschlossener Bildkonvertierungen.

Für jedes konvertierte Bild werden Informationen wie Quelldatei, Zieldatei, Zielformat, Dateigröße, Dauer der Konvertierung und der Verarbeitungsstatus zurückgegeben. So kann nachvollzogen werden, ob und wie ein Bild erfolgreich in verschiedene Formate umgewandelt wurde.

#### Query-Parameter

| **Name**      | **Typ**           | **Verwendung**                                                                      |
| ------------- | ----------------- | ----------------------------------------------------------------------------------- |
| **size**      | Number (optional) | Anzahl der Ergebnisse pro Seite. Standardwert wird verwendet, wenn nicht angegeben. |
| **pageToken** | String (optional) | Token für die nächste Seite. Wird in der Antwort als `nextPageToken` zurückgegeben. |

#### Beispiel

```text theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
https://www.<ihr-shop>.de/admin/api/v1/images/convert/results?size=200
```

#### Antwort

```json theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{
    "items": [
        {
            "duration": 0,
            "fileSize": "55 KB",
            "format": "app",
            "formatId": "content.imageFormat.app",
            "message": "success",
            "output": "app/Screenshot 2025-03-24 222742.png",
            "outputFilename": "Screenshot 2025-03-24 222742.png",
            "source": "upload/9fcd26d4c240/Screenshot 2025-03-24 222742.png",
            "sourceFilename": "Screenshot 2025-03-24 222742.png",
            "status": "success"
        },
        {
            "duration": 1,
            "fileSize": "55 KB",
            "format": "normal category",
            "formatId": "content.imageFormat.normalCategory",
            "message": "success",
            "output": "categories/normal/Screenshot 2025-03-24 222742.png",
            "outputFilename": "Screenshot 2025-03-24 222742.png",
            "source": "upload/9fcd26d4c240/Screenshot 2025-03-24 222742.png",
            "sourceFilename": "Screenshot 2025-03-24 222742.png",
            "status": "success"
        },
        {
            "duration": 1,
            "fileSize": "55 KB",
            "format": "normal product",
            "formatId": "content.imageFormat.normalProduct",
            "message": "success",
            "output": "products/normal/Screenshot 2025-03-24 222742.png",
            "outputFilename": "Screenshot 2025-03-24 222742.png",
            "source": "upload/9fcd26d4c240/Screenshot 2025-03-24 222742.png",
            "sourceFilename": "Screenshot 2025-03-24 222742.png",
            "status": "success"
        },
        {
            "duration": 1,
            "fileSize": "10 KB",
            "format": "thumbnail product",
            "formatId": "content.imageFormat.thumbnailProduct",
            "message": "success",
            "output": "products/thumbnail/Screenshot 2025-03-24 222742.png",
            "outputFilename": "Screenshot 2025-03-24 222742.png",
            "source": "upload/9fcd26d4c240/Screenshot 2025-03-24 222742.png",
            "sourceFilename": "Screenshot 2025-03-24 222742.png",
            "status": "success"
        }
    ],
    "totalCount": 4,
    "endReached": true,
    "nextPageToken": "MjAw"
}
```

#### Fehlercodes

| **Fehler**       | **Typ** | **Grund**                                                                                                                            |
| ---------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------ |
| 401 Unauthorized |         | Nicht autorisiert: Sie sind nicht angemeldet oder verfügen nicht über die erforderlichen Rechte zum Lesen von konvertierten Bildern. |

### GET images/convert/status

Dieser Endpunkt liefert den aktuellen Status eines laufenden oder den letzten bekannten Status eines abgeschlossenen Bildkonvertierungsprozesses.

Dabei werden Informationen wie Fortschritt, Anzahl erfolgreicher oder fehlgeschlagener Konvertierungen, sowie Timer-Daten (Startzeit, Endzeit, Dauer) zurückgegeben. Der Endpunkt ermöglicht die Überwachung und Auswertung von Bildkonvertierungsprozessen im System.

#### Beispiel

```text theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
https://www.<ihr-shop>.de/admin/api/v1/images/convert/status
```

#### Antwort

```json theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{
    "canceled": true,
    "counter": {
        "error": 0,
        "skipped": 0,
        "success": 0,
        "warning": 0
    },
    "formatCounter": {
        "error": 0,
        "skipped": 0,
        "success": 0,
        "warning": 0
    },
    "progress": {
        "finished": 0,
        "percentage": 0,
        "total": 0
    },
    "progressFormat": {
        "finished": 0,
        "percentage": 0,
        "total": 0
    },
    "running": false,
    "status": "ready",
    "timer": {
        "duration": 0,
        "end": 0,
        "start": 0
    },
    "usedFormats": []
}
```

#### Fehlercodes

| **Fehler**              | **Typ**         | **Grund**                                                                                                                            |
| ----------------------- | --------------- | ------------------------------------------------------------------------------------------------------------------------------------ |
| 401 Unauthorized        |                 | Nicht autorisiert: Sie sind nicht angemeldet oder verfügen nicht über die erforderlichen Rechte zum Lesen von konvertierten Bildern. |
| 503 Service Unavailable | "internalError" | Der Konvertierungsprozess kann nicht geprüft werden.                                                                                 |

### GET images/report/products

Dieser Endpunkt liefert einen Bericht über die Nutzung von Produktbildern im Shopsystem.

Dabei werden sowohl fehlende Bilder (`missingImages`) als auch ungenutzte Bilder (`unusedImages`) aufgelistet. Der Bericht hilft dabei, Bilddateien zu identifizieren, die keinem aktiven Produkt mehr zugeordnet sind oder die im System fehlen, und unterstützt so bei der Optimierung der Bilddatenverwaltung.

#### Beispiel

```text theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
https://www.<ihr-shop>.de/admin/api/v1/images/report/products
```

#### Antwort

```json theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{
    "createdAt": "2025-04-25T15:55:39.000Z",
    "id": 1,
    "missingImages": [],
    "unusedImages": [
        {
            "filename": "th.jpg",
            "format": ""
        },
        {
            "filename": "Screenshot 2025-03-24 222742.png",
            "format": ""
        },
        {
            "filename": "th.jpg",
            "format": ""
        },
        {
            "filename": "Screenshot 2025-03-24 222742.png",
            "format": ""
        }
    ]
}
```

#### Fehlercodes

| **Fehler**       | **Typ** | **Grund**                                                                                                                   |
| ---------------- | ------- | --------------------------------------------------------------------------------------------------------------------------- |
| 401 Unauthorized |         | Nicht autorisiert: Sie sind nicht angemeldet oder verfügen nicht über die erforderlichen Rechte zum Lesen von Produktdaten. |

### POST images/upload

Dieser Endpunkt ermöglicht das Hochladen eines Bildes in das Shopsystem.

Das Bild wird als Base64-kodierter String im Request-Body übertragen. Zusätzlich kann angegeben werden, in welche Formate das Bild konvertiert werden soll. Nach dem erfolgreichen Upload wird der Pfad zur gespeicherten Bilddatei zurückgegeben.

#### Beispiel

```text theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
https://www.<ihr-shop>.de/admin/api/v1/images/upload
```

#### Request Body

```json theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{
    "fileName": [
        "Screenshot 2025-03-24 222742.png"
    ],
    "formats": [
        "content.imageFormat.normalProduct",
        "content.imageFormat.thumbnailProduct"
    ],
    "imageData": [
        "iVBORw0KGgoAAAANSUhEUgAAAU8AAAJcCAYAAAB5ZyZaAAAAAXNSR0IArs4c6QAAAA..."
    ]
}
```

#### Antwort

```json theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{
    "path": "upload/c14cb01ea580",
    "size": 1,
    "success": true
}
```

#### Fehlercodes

| **Fehler**              | **Typ**             | **Grund**                                                                                                                                                                                 |
| ----------------------- | ------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 401 Unauthorized        |                     | Nicht autorisiert: Sie sind nicht angemeldet oder verfügen nicht über die erforderlichen Rechte zum Veröffentlichen von konvertierten Bildern.                                            |
| 400 Bad Request         |                     | Request body konnte nicht geladen werden.                                                                                                                                                 |
| 400 Bad Request         | "missing"           | `formats` wurden nicht übergeben.                                                                                                                                                         |
| 400 Bad Request         | "invalidValue"      | Ein Bildformat ist ungültig. `imageData` ist ungültig.                                                                                                                                    |
| 400 Bad Request         | "invalidFormat"     | Das Feld `formats` ist kein Array von Strings.<br />Das Feld `fileName` ist kein String und kein Array von Strings.<br />Das Feld `imageData` ist kein String und kein Array von Strings. |
| 400 Bad Request         | "invalidFileFormat" | Das Bild hat ein ungültiges Format.                                                                                                                                                       |
| 400 Bad Request         | "unknownDataField"  | Request body enthält etwas außer `fileName`, `imageData` und `formats`.                                                                                                                   |
| 503 Service Unavailable | "internalError"     | Das Hochladen des Bildes ist fehlgeschlagen.                                                                                                                                              |

### POST images/upload/convert

Dieser Endpunkt ermöglicht das Hochladen eines Bildes mit anschließender sofortiger Konvertierung in ein oder mehrere definierte Zielformate.

Das Bild wird als Base64-kodierter String im Request-Body übermittelt. Im Unterschied zum normalen Upload wird hier die Konvertierung automatisch angestoßen, sodass direkt optimierte oder formatangepasste Varianten erstellt werden können. Nach Abschluss wird eine Übersicht der erzeugten Bilddateien zurückgegeben.

#### Beispiel

```text theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
https://www.<ihr-shop>.de/admin/api/v1/images/upload/convert
```

#### Request Body

```json theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{
    "fileName": "myPicture.png",
    "formats": [
        "content.imageFormat.normalCategory",
        "content.imageFormat.normalProduct"
    ],
    "imageData": "iVBORw0KGgoAAAANSUhEUgAAAU8AAAJcCAYAAAB5ZyZaAAAAAXNS..."
}
```

#### Antwort

```json theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{
    "items": [
        {
            "duration": 0,
            "fileSize": "55 KB",
            "format": "normal category",
            "formatId": "content.imageFormat.normalCategory",
            "message": "success",
            "output": "categories/normal/myPicture.png",
            "outputFilename": "myPicture.png",
            "source": "upload/169357275289/myPicture.png",
            "sourceFilename": "myPicture.png",
            "status": "success"
        },
        {
            "duration": 0,
            "fileSize": "55 KB",
            "format": "normal product",
            "formatId": "content.imageFormat.normalProduct",
            "message": "success",
            "output": "products/normal/myPicture.png",
            "outputFilename": "myPicture.png",
            "source": "upload/169357275289/myPicture.png",
            "sourceFilename": "myPicture.png",
            "status": "success"
        }
    ]
}
```

#### Fehlercodes

| **Fehler**              | **Typ**              | **Grund**                                                                                                                                                                                             |
| ----------------------- | -------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 401 Unauthorized        |                      | Nicht autorisiert: Sie sind nicht angemeldet oder verfügen nicht über die erforderlichen Rechte zum Veröffentlichen von konvertierten Bildern. Der Bildtyp wird in den Berechtigungen berücksichtigt. |
| 400 Bad Request         |                      | Request body konnte nicht geladen werden.                                                                                                                                                             |
| 400 Bad Request         | "missing"            | `formats` wurden nicht übergeben.                                                                                                                                                                     |
| 400 Bad Request         | "invalidValue"       | Ein Bildformat ist ungültig. `imageData` ist ungültig. Es wurden mehrere Bilder übergeben.                                                                                                            |
| 400 Bad Request         | "invalidFormat"      | Das Feld `formats` ist kein Array von Strings.<br />Das Feld `fileName` ist kein String und kein Array von Strings.<br />Das Feld `imageData` ist kein String und kein Array von Strings.             |
| 400 Bad Request         | "invalidFileFormat"  | Das Bild hat ein ungültiges Format.                                                                                                                                                                   |
| 400 Bad Request         | "unknownDataField"   | Request body enthält etwas außer `fileName`, `imageData` und `formats`.                                                                                                                               |
| 503 Service Unavailable | "internalError"      | Das Konvertieren vom Bild ist fehlgeschlagen.                                                                                                                                                         |
| 503 Service Unavailable | "serviceUnavailable" | Der Konvertierungsprozess konnte nicht gestartet werden.                                                                                                                                              |

### POST images/report

Dieser Endpunkt startet die Überprüfung der im System vorhandenen Bilder auf fehlende oder ungenutzte Dateien.

Die Ausführung erfolgt asynchron: Nach dem erfolgreichen Start der Überprüfung wird kein direktes Ergebnis zurückgegeben.

Der vollständige Bericht kann anschließend über `GET /images/report/` abgerufen werden. Der Endpunkt stellt sicher, dass Bilddaten regelmäßig auf Konsistenz geprüft werden können.

#### Beispiel

```text theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
https://www.<ihr-shop>.de/admin/api/v1/images/report
```

#### Request Body

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

#### Antwort

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

#### Fehlercodes

| **Fehler**              | **Typ**              | **Grund**                                                                                                                    |
| ----------------------- | -------------------- | ---------------------------------------------------------------------------------------------------------------------------- |
| 401 Unauthorized        |                      | Nicht autorisiert: Sie sind nicht angemeldet oder verfügen nicht über die erforderlichen Rechte zum Erstellen von Produkten. |
| 503 Service Unavailable | "serviceUnavailable" | Der Überprüfung konnte nicht gestartet werden.                                                                               |

### POST images/convert/start

Dieser Endpunkt startet den Konvertierungsprozess für im System gespeicherte Bilder.

Dabei werden die Bilder in die jeweils definierten Zielformate umgewandelt (z. B. verschiedene Größen oder Dateiformate). Die Ausführung erfolgt asynchron, aber es wird nach dem Starten vom Prozess eine direkte Rückmeldung zu den konvertierten Bildern geliefert. Der Fortschritt und der Status der Konvertierung können später über den Endpunkt `GET /images/convert/status` abgefragt werden.

#### Beispiel

```text theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
https://www.<ihr-shop>.de/admin/api/v1/images/convert/start
```

#### Request Body

```json theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{
    "action": "manual",
    "source": "directory",
    "formatList": [
        "content.imageFormat.app",
        "content.imageFormat.normalCategory",
        "content.imageFormat.normalProduct",
        "content.imageFormat.thumbnailProduct"
    ],
    "directory": "upload/e6122e69f1d0"
}
```

#### Antwort

```json theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{
    "canceled": true,
    "counter": {
        "error": 0,
        "skipped": 0,
        "success": 0,
        "warning": 0
    },
    "formatCounter": {
        "error": 0,
        "skipped": 0,
        "success": 4,
        "warning": 0
    },
    "progress": {
        "finished": 1,
        "percentage": 100,
        "total": 1
    },
    "progressFormat": {
        "finished": 4,
        "percentage": 100,
        "total": 4
    },
    "running": false,
    "status": "finished",
    "timer": {
        "duration": 1745857938,
        "end": 1745857938,
        "start": 0
    },
    "usedFormats": [
        "content.imageFormat.app",
        "content.imageFormat.normalCategory",
        "content.imageFormat.normalProduct",
        "content.imageFormat.thumbnailProduct"
    ]
}
```

#### Fehlercodes

| **Fehler**              | **Typ**              | **Grund**                                                                                                                                                                                                                                                                                            |
| ----------------------- | -------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 401 Unauthorized        |                      | Nicht autorisiert: Sie sind nicht angemeldet oder verfügen nicht über die erforderlichen Rechte zum Veröffentlichen von konvertierten Bildern.                                                                                                                                                       |
| 400 Bad Request         |                      | Request body konnte nicht geladen werden.<br />Das Format wurde nicht gefunden.<br />Das Format hat ein ungültiges Quellverzeichnis oder es wurde ein ungültiges Quellverzeichnis angegeben.<br />Es existieren keine Formate.<br />Das Feld `source` enthält etwas außer `format` oder `directory`. |
| 503 Service Unavailable | "serviceUnavailable" | Der Konvertierungsprozess konnte nicht gestartet werden.                                                                                                                                                                                                                                             |
| 503 Service Unavailable | "internalError"      | Der Konvertierungsstatus kann nicht abgerufen werden.                                                                                                                                                                                                                                                |

### POST images/convert/cancel

Dieser Endpunkt bricht einen aktuell laufenden Konvertierungsprozess für Bilder ab.

Der Abbruch erfolgt nicht asynchron, es wird eine direkte Rückmeldung zu den konvertierten Bildern gleich geliefert.

Nach der Ausführung kann der Status des Konvertierungsprozesses über den Endpunkt `GET /images/convert/status` wieder abgefragt werden. Der Abbruchvorgang erfordert entsprechende Berechtigungen.

#### Beispiel

```text theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
https://www.<ihr-shop>.de/admin/api/v1/images/convert/cancel
```

#### Request Body

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

#### Antwort

```json theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{
    "cancelStatus": "triggered",
    "canceled": true,
    "counter": {
        "error": 0,
        "skipped": 0,
        "success": 0,
        "warning": 0
    },
    "formatCounter": {
        "error": 0,
        "skipped": 0,
        "success": 2,
        "warning": 0
    },
    "progress": {
        "finished": 1,
        "percentage": 100,
        "total": 1
    },
    "progressFormat": {
        "finished": 2,
        "percentage": 100,
        "total": 2
    },
    "running": false,
    "status": "finished",
    "timer": {
        "duration": 1745858133,
        "end": 1745858133,
        "start": 0
    },
    "usedFormats": [
        "content.imageFormat.normalProduct",
        "content.imageFormat.thumbnailProduct"
    ]
}
```

#### Fehlercodes

| **Fehler**              | **Typ**         | **Grund**                                                                                                                                      |
| ----------------------- | --------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- |
| 401 Unauthorized        |                 | Nicht autorisiert: Sie sind nicht angemeldet oder verfügen nicht über die erforderlichen Rechte zum Veröffentlichen von konvertierten Bildern. |
| 503 Service Unavailable | "internalError" | Der Konvertierungsprozess kann nicht geprüft werden.                                                                                           |

### POST images/directories/\{typeId}

### POST images/directories/\{typeId}

Ein Verzeichnis wird erstellt.

Bei `typeId` = `source` handelt es sich um Quellverzeichnisse, bei `typeId` = `target` handelt es sich um Zielverzeichnisse.

#### Beispiel

```text theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
https://www.<ihr-shop>.de/admin/api/v1/images/directories/target
```

#### Request Body

```json theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{
    "path": "myDir",
    "name": "test"
}
```

#### Antwort

```json theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{
    "items": [
        {
            "name": "myDir",
            "path": "myDir",
            "subDirectories": [
                {
                    "name": "test",
                    "path": "myDir/test",
                    "subDirectories": []
                }
            ]
        }
    ]
}
```

#### Fehlercodes

| **Fehler**              | **Typ**         | **Grund**                                                                                                                                |   |
| ----------------------- | --------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | - |
| 401 Unauthorized        |                 | Nicht autorisiert: Sie sind nicht angemeldet oder verfügen nicht über die erforderlichen Rechte zum Erstellen von konvertierten Bildern. |   |
| 400 Bad Request         |                 | Request body konnte nicht geladen werden.                                                                                                |   |
| 400 Bad Request         | "invalidValue"  | `name` oder `path` ist ungültig.                                                                                                         |   |
| 400 Bad Request         | "missing"       | `name` wurde nicht übergeben.                                                                                                            |   |
| 503 Service Unavailable | "internalError" | Das Erstellen vom Verzeichnis ist fehlgeschlagen.                                                                                        |   |

### DELETE images/directories/\{typeId}

### DELETE images/directories/\{typeId}

Dieser Endpunkt löscht ein Verzeichnis innerhalb des angegebenen Bereichs (`source` oder `target`) für Bilddateien.

Über den Request-Body können der Pfad zum übergeordneten Verzeichnis sowie der Name des zu löschenden Ordners definiert werden. Nach erfolgreicher Löschung wird die aktualisierte Verzeichnisstruktur ohne das gelöschte Verzeichnis als Baumstruktur zurückgegeben.

#### Beispiel

```text theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
https://www.<ihr-shop>.de/admin/api/v1/images/directories/target
```

#### Request Body

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

#### Antwort

```json theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{
    "items": [
        {
            "name": "myDir",
            "path": "myDir",
            "subDirectories": []
        }
    ]
}
```

#### Fehlercodes

| **Fehler**              | **Typ**         | **Grund**                                                                                                                              |   |
| ----------------------- | --------------- | -------------------------------------------------------------------------------------------------------------------------------------- | - |
| 401 Unauthorized        |                 | Nicht autorisiert: Sie sind nicht angemeldet oder verfügen nicht über die erforderlichen Rechte zum Löschen von konvertierten Bildern. |   |
| 400 Bad Request         |                 | Request body konnte nicht geladen werden.                                                                                              |   |
| 400 Bad Request         | "invalidValue"  | path fehlt oder ist leer.                                                                                                              |   |
| 404 Not Found           |                 | Das Verzeichnis wurde nicht gefunden.                                                                                                  |   |
| 503 Service Unavailable | "internalError" | Das Löschen vom Verzeichnis ist fehlgeschlagen.                                                                                        |   |

### DELETE images/upload/\{typeId}

### DELETE images/upload/\{typeId}

Dieser Endpunkt löscht eines oder mehrere Bilder innerhalb eines angegebenen Bereichs (`categories`, `products` oder `appImages`).

Der Name der zu löschenden Datei(en) wird über das Feld `fileName` im Request-Body angegeben, entweder als String oder als Array von Strings. Optional kann über das Feld `formats` angegeben werden, welche Bildformate berücksichtigt werden sollen; andernfalls werden alle Formate gelöscht. Der Endpunkt prüft sorgfältig die Gültigkeit der angegebenen Parameter und verarbeitet sowohl Einzel- als auch Mehrfachlöschungen.

#### Beispiel

```text theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
https://www.<ihr-shop>.de/admin/api/v1/images/upload/appImages
```

#### Request Body

```json theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{
    "formats": [
        "content.imageFormat.app"
    ],
    "fileName": "th_1740130633.jpg"
}
```

#### Antwort

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

#### Fehlercodes

| **Fehler**              | **Typ**            | **Grund**                                                                                                                                              |   |
| ----------------------- | ------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------ | - |
| 401 Unauthorized        |                    | Nicht autorisiert: Sie sind nicht angemeldet oder verfügen nicht über die erforderlichen Rechte zum Schreiben von Kategorie-, Produkt- oder App-Daten. |   |
| 400 Bad Request         |                    | Request body konnte nicht geladen werden.                                                                                                              |   |
| 400 Bad Request         | "missing"          | `subshopId` oder `fileName` wurden nicht übergeben.                                                                                                    |   |
| 400 Bad Request         | "invalidValue"     | `subshopId` ist ungültig. Ein Bildformat ist ungültig.                                                                                                 |   |
| 400 Bad Request         | "invalidFormat"    | Das Feld `formats` ist kein Array von Strings.<br />Das Feld `fileName` ist kein String und kein Array von Strings.                                    |   |
| 400 Bad Request         | "unknownDataField" | Request body enthält etwas außer `fileName` und `formats`.                                                                                             |   |
| 503 Service Unavailable | "internalError"    | Das Löschen von Bildern ist fehlgeschlagen.                                                                                                            |   |

### DELETE images/upload/\{typeId}/\{filename}

### DELETE images/upload/\{typeId}/\{filename}

Dieser Endpunkt löscht ein bestimmtes Bild innerhalb eines angegebenen Bereichs (`categories`, `products` oder `appImages`).

Der zu löschende Dateiname wird direkt als Pfadparameter (`filename`) übergeben. Zusätzlich können im Request-Body weitere Dateinamen (`fileName`) angegeben werden, entweder als einzelner String oder als Array von Strings.

Über das optionale Feld `formats` kann festgelegt werden, welche Bildformate gelöscht werden sollen; andernfalls werden alle Formate berücksichtigt. Der Endpunkt unterstützt sowohl die Löschung eines einzelnen Bildes als auch die kombinierte Löschung mehrerer Bilder.

#### Beispiel

```text theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
https://www.<ihr-shop>.de/admin/api/v1/images/upload/appImages/th_1740129668.jpg
```

#### Request Body

```json theme={"theme":{"light":"github-light","dark":"github-dark"},"languages":{"custom":["/languages/websale.json"]}}
{
    "formats": [
        "content.imageFormat.app"
    ]
}
```

#### Antwort

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

#### Fehlercodes

| **Fehler**              | **Typ**            | **Grund**                                                                                                                                              |   |
| ----------------------- | ------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------ | - |
| 401 Unauthorized        |                    | Nicht autorisiert: Sie sind nicht angemeldet oder verfügen nicht über die erforderlichen Rechte zum Schreiben von Kategorie-, Produkt- oder App-Daten. |   |
| 400 Bad Request         |                    | Request body konnte nicht geladen werden.                                                                                                              |   |
| 400 Bad Request         | "missing"          | `subshopId` oder `fileName` wurden nicht übergeben.                                                                                                    |   |
| 400 Bad Request         | "invalidValue"     | `subshopId` ist ungültig. Ein Bildformat ist ungültig.                                                                                                 |   |
| 400 Bad Request         | "invalidFormat"    | Das Feld `formats` ist kein Array von Strings.<br />Das Feld `fileName` ist kein String und kein Array von Strings.                                    |   |
| 400 Bad Request         | "unknownDataField" | Request body enthält etwas außer `fileName` und `formats`.                                                                                             |   |
| 503 Service Unavailable | "internalError"    | Das Löschen von Bildern ist fehlgeschlagen.                                                                                                            |   |

## Support

Bei technischen Fragen und Hilfestellungen ist unser Support-Team für Sie erreichbar: [Zum Kundenportal](https://websale.atlassian.net/servicedesk/customer/portal/6)

Bitte senden Sie uns eine möglichst detaillierte Beschreibung sowie Screenshots, Requests/Antworten, damit wir Ihre Anfrage zeitnah und zielführend beantworten können.
