Skip to main content
api.httpCall() is the egress boundary for outbound HTTP. storage.* owns durable files, folders, ACLs, retention, upload sessions, text statistics, and lifecycle. Together they let a Component move large payloads without turning them into JSON or holding the complete object in the low-code isolate.

HTTP response → Storage

Import reports, statements, archives, or media from an authenticated upstream API.

Storage → HTTP request

Deliver an existing governed object to a scanning, signing, conversion, or partner API.

JSON request

Resolve credentials from Secrets and keep them out of logs, inputs, and source code.
Never log the request headers or the resolved secret. An HTTP success code confirms the remote response, not the business effect; keep and reconcile the remote operation identifier when the provider exposes one.

Import an HTTP response into Storage

Create the destination folder first, then make it the parent of the streamed target. The runtime writes the response through managed Storage streaming and finalizes the entry automatically.
When a response is stored, response.data is undefined. The durable result is response.storage.entry, available only after successful finalization. computeStats: 'sync' keeps the call open until text statistics are ready; choose async when latency matters and trigger dependent work from STORAGE_SYNCHRONIZED.

Send Storage as the HTTP body

source streams bytes from an existing Explorer Storage file. The caller must be allowed to read the entry through its effective ACL, including every restricted ancestor folder.

Convert one Storage object into another

Use source and target together when an external service transforms the payload. The source stays unchanged and the complete response becomes a new governed entry.

Replace an existing Storage entry

Replacement is explicit. Passing only storageEntryId is intentionally insufficient.
The target entry must be replaceable by the execution principal. The runtime finalizes the managed write before returning it as the new version.

Multipart with one Storage file

Put formData on the request object. With one Storage-backed binary part, leave its value empty and provide source in options.

Multipart with multiple Storage files

For several binary parts, put storageEntryId directly on each part.

Small generated objects

When the complete content comfortably fits a runtime call, storage.putObject() is simpler than a session.
Use upload sessions for large, resumable, or incrementally generated objects. See Storage for direct, chunked, and incremental session semantics.

Contract rules

  • requestType and responseType describe HTTP encoding. storage is not a valid value; use source and target.
  • HTTP Storage targets use one managed direct stream and are finalized automatically. For explicit part manifests and repair, use storage.createUploadSession(), uploadPart(), and finalizeUploadSession().
  • A failed Storage write is aborted by the runtime and is not returned as a finalized entry.
  • Upload and download URLs are temporary capabilities. Do not log or persist them.
  • Storage streaming is not available together with proxy mode or legacy fileId mode.
  • Use storage.getFileStats() and storage.getFileData({ batchNumber }) for bounded text processing after import.
Legacy api.*File* helpers are compatibility APIs. All new examples and implementations should use storage.*, Storage source, or Storage target.
See the generated api.httpCall reference, the Storage method reference, and SDK storage and batching.
Last modified on September 5, 2026