http-request/MODULE.de.md
flemming-it b325736dfd refactor: rename to chain:platform WIT + provider chain
Tracks the platform's fai->chain rename: capability provider chain,
WIT ABI chain:platform (binding paths/accessors), SDK pin bumped.

Signed-off-by: flemming-it <sf@flemming.it>
2026-06-15 22:54:52 +02:00

3 KiB

http.request

Generischer HTTP-Client für Flow-Steps. GET / POST / PUT / PATCH / DELETE / HEAD / OPTIONS mit beliebigen Headern und einem UTF-8-Body. Die audit-freundliche Alternative zu Flows, die ihren eigenen HTTP-Client mitbringen.

Capability

  • http.request@0.1.0

Eingaben

Name Typ Beschreibung
method text HTTP-Verb in Großbuchstaben (GET, POST, PUT, PATCH, DELETE, HEAD, OPTIONS).
url text Vollständige URL inklusive Scheme.
headers text Optional. JSON-Objekt-String mit zusätzlichen Headern. Leer = keine.
body text Optional. UTF-8-Request-Body. Leer = kein Body.

Beispiel-headers:

{"Accept":"application/json","X-Tenant":"acme","Content-Length":42}

String-, Zahl- und Boolean-Werte werden akzeptiert (Zahlen und Booleans werden zu Strings koerziert). Verschachtelte Arrays/Objekte werden beim Parsen mit einem klaren Fehler abgelehnt.

Ausgaben

Name Typ Beschreibung
status text Dezimal-Statuscode als Text (z.B. "200", "404").
headers text Antwort-Header als JSON-Objekt (Schlüssel kleingeschrieben).
body text Antwort-Body als UTF-8. Ersatzzeichen bei nicht-UTF-8-Daten.

Status als Text, damit der Audit-Log-Eintrag ohne JSON- Reparsing operator-lesbar bleibt.

Berechtigungen

permissions:
  - "net: *"

Der Wildcard macht explizit, dass dieses Modul absichtlich beliebige HTTP-Endpunkte aufrufen kann. Operator:innen beschränken den Spielraum über das Policy-Ceiling (~/.chain/config.yaml#security.max_permissions.net) — eine Installation gegen eine Policy ohne Wildcards schlägt zur Install-Zeit fehl.

Warum ein generisches Primitiv statt API-spezifischer Module

Gleiche Antwort wie bei llm.chat: ein einzelnes explizites Egress-Modul bedeutet, dass Operator:innen net: * genau einmal auditieren statt versteckt in jedem Flow-YAML. Die Permission-Posture bleibt sichtbar.

Grenzen in v0.1.0

  • Nur UTF-8-Body. Binäre Up-/Downloads kommen über ein separates http.request-bytes (v0.2.0).
  • Keine pro-Request-Timeout-/Retry-Inputs (waki-Defaults gelten).
  • Kein Cookie-Jar / Session-Keeping.

Beispiel-Flow

name: post-to-webhook
inputs:
  payload: text
steps:
  - id: notify
    use: http.request@^0
    with:
      method: "POST"
      url: "https://example.org/webhook"
      headers: '{"Content-Type":"application/json"}'
      body: $inputs.payload
outputs:
  status: $notify.status
  echo: $notify.body

Build

cargo build --release --target wasm32-wasip2
# Ausgabe: target/wasm32-wasip2/release/http_request.wasm