# Templates

Sie können uns Ihre Assembly Instructionsdirekt mit jeder Anfrage senden oder sie in einem Template speichern und in Ihren Anfragen über die`template_id` darauf verweisen.

## Builtin Templates

Transloadit bietet außerdem von uns gepflegte und versionierte Templates. Diese Builtin Templates sind stabile, sofort einsatzbereite Ausgangspunkte für gängige Transformationen.

Unter [Builtin Templates](/docs/topics/builtin-templates.md) finden Sie verfügbare Builtins und erfahren, wie Sie diese über die API auflisten.

Wenn Sie Instructions direkt senden, können Sie schnell Prototypen erstellen. Das Speichern in einem Template bietet jedoch einige Vorteile:

1. Sie müssen nicht bei jeder Anfrage zum Encoding vertrauliche Daten und Implementierungsdetails übertragen. Das ist besonders relevant, wenn Sie Browser integrieren.
2. In Kombination mit `"allow_steps_override": false` könnenInstructions **nicht manipuliert werden**.
3. In Kombination mit Assembly Notifications können SieAssembly Replays aktivieren.
4. Wenn Sie Transloadit in eine App integriert haben, können Sie **die Encoding-Einstellungen ohne Deployment ändern**, ohne darauf zu warten, dass ein App Store eine neue Version veröffentlicht.

## So erstellen Sie ein Template

1. [Erstellen Sie ein Template in Ihrem Konto](/c/templates/new/).
2. Geben Sie dem Template einen Namen, damit Sie es später leicht wiedererkennen.
3. Geben Sie das JSON der Assembly Instructions für das Template an. Sie können Beispiele aus einer Liste auswählen, unseren AssistentenInstructions generieren lassen, ein vorhandenes Template duplizieren oder von Grund auf neu beginnen.
4. Klicken Sie auf „Speichern“.

Nach dem Speichern wird eine Seite mit dem erstellten Template angezeigt. Oben auf der Seite sehen Sie die Template-ID, z. B. `4b62ee4dbb38455d96fe13d972ec3211`. Anschließend können Sie diese ID kopieren und im Integrationscode als `template_id` einfügen. Alternativ finden Sie weiter unten imTemplate Editor bereits Beispiele mit dieser ID.

###### Hinweis

Der Template Editor bietet außerdem einen Testbereich, in dem Sie Ihre Templates direkt im Browser zusammen mit einem Upload-Formular testen können, ohne Ihre Integration zu aktualisieren (Sie müssen nicht einmal auf „Speichern“ klicken).

## Templates zur Laufzeit überschreiben

Man könnte annehmen, dass sich beide Optionen gegenseitig ausschließen. Sie können jedoch sowohl`template_id` als auch `steps` in den Parametern angeben und so das Verhalten eines Template zur Laufzeit ändern. Tatsächlich wird jede andere Eigenschaft in `params` – mit Ausnahme von`allow_steps_override` – rekursiv über das per `template_id` geladene Template gelegt.

Sehen wir uns beispielsweise das folgende Template an. Es verarbeitet einen Upload, codiert ein Video für eine optimale Wiedergabe auf iPads und speichert das Ergebnis auf S3:

![](/_next/static/media/copy.04p1cju9qekk_.svg?dpl=dpl_6ZskK4ZaqZ1GYVxrmc4Qz2KncJJA)

```json
{
  "steps": {
    ":original": {
      "robot": "/upload/handle"
    },
    "encoded": {
      "use": ":original",
      "robot": "/video/encode",
      "preset": "ipad-high"
    },
    "exported": {
      "use": "encoded",
      "robot": "/s3/store",
      "credentials": "YOUR_S3_CREDENTIALS",
      "bucket": "main-bucket"
    }
  }
}

```

Wenn Sie eine Assembly erstellen, können wir das Verhalten des Template zur Laufzeit anpassen, beispielsweise durch Hinzufügen einer `steps`-Eigenschaft:

![](/_next/static/media/copy.04p1cju9qekk_.svg?dpl=dpl_6ZskK4ZaqZ1GYVxrmc4Qz2KncJJA)

```json
{
  "template_id": "4b62ee4dbb38455d96fe13d972ec3211",
  "steps": {
    "exported": {
      "bucket": "another-bucket"
    }
  }
}

```

Transloadit führt dies anschließend zusammen und erstellt daraus die folgendenAssembly Instructions:

![](/_next/static/media/copy.04p1cju9qekk_.svg?dpl=dpl_6ZskK4ZaqZ1GYVxrmc4Qz2KncJJA)

```json
{
  "steps": {
    "encoded": {
      "use": ":original",
      "robot": "/video/encode",
      "preset": "ipad-high"
    },
    "exported": {
      "use": "encoded",
      "robot": "/s3/store",
      "credentials": "YOUR_S3_CREDENTIALS",
      "bucket": "another-bucket"
    }
  }
}

```

Wie Sie sehen, wurde der Wert von `bucket` von `"main-bucket"` in `"another-bucket"` geändert. In vertrauenswürdigen Umgebungen kann das praktisch und leistungsstark sein.

In anderen Umgebungen empfiehlt es sich möglicherweise, das Überschreiben vonSteps zu unterbinden, damit ein Browser das Verhalten nicht ändern kann. Setzen Sie dazu `allow_steps_override` im gespeicherten Template wie folgt auf`false`:

![](/_next/static/media/copy.04p1cju9qekk_.svg?dpl=dpl_6ZskK4ZaqZ1GYVxrmc4Qz2KncJJA)

```jsonc
{
  "allow_steps_override": false,
  "steps": {
    // …
  },
}

```

Nun wird immer nur `main-bucket` verwendet – unabhängig davon, ob zusätzliche `steps` angegeben wurden.

## Template-Optionen

Neben `steps` und `allow_steps_override` gibt es weitere Optionen, mit denen Sie das Verhalten einerAssembly steuern können.

Da sich die meisten davon auch ohne Templates festlegen lassen, sind sie in der[API-Dokumentation zum Erstellen einer neuen Assembly](/docs/api/assemblies-post.md) beschrieben. Wenn Sie Transloadit jedoch in nicht vertrauenswürdige Umgebungen wie Browser integrieren, könnten Unbefugte diese Optionen leicht ändern. Wenn Sie die Parameter eines Template in nicht vertrauenswürdigen Umgebungen dynamisch ändern möchten, sollten Sie daher[Signature Authentication](/docs/api/authentication.md) verwenden.
