RUAL Core v15.0.1
Our platform operates on software, commonly known as core. This software can be run either locally within the cloud environment of Enterprise Customers or within our AWS cluster.
Modified or newly introduced blocks
In this release 9 new blocks were introduced. You'll find a complete list of blocks at the bottom of this page.
Files publish atomically
RUAL Core 15.0.1 is a storage-integrity release. Every file a blueprint writes is now published atomically: the block writes into a private temporary file, flushes it to storage, and only then renames it into place. A URL served from entity storage returns either the complete file or nothing: never a half-written image, a truncated download, or bytes that only existed in a cache. This holds even for the common chat-feed case where viewers open an attachment the instant it is posted.
Every file-writing block
The guarantee covers the whole file family: file_create and file_copy, image outputs from function_resize_image, function_image_to_webp and the image-composition blocks, spreadsheet exports, function_base64_to_file, EDI and SEPA documents, and function_zip / function_unzip. A block that fails mid-way (an image that cannot be encoded, an archive entry over its size budget, an interrupted write) no longer leaves a partial file at the destination: the destination keeps whatever it held before, and the temporary is cleaned up.
Uploads become visible only when complete
When function_save_file_from_form moves an uploaded file into its public location, the data is now flushed to storage before the public name appears. Previously the name could become servable while the bytes still sat in the writing node's cache, which made the very first viewers of a freshly posted attachment wait multiple seconds, or receive an incomplete file, while storage reconciled reader and writer. Resized variants written next to their source are covered by the same rule.
Re-uploading assets is safe
Uploading an asset under a name that already exists no longer risks the existing asset. A re-upload that fails (too large, empty, malformed, or interrupted) keeps the previous file and its asset record fully intact; an empty upload no longer truncates a valid asset in place. The old record is superseded only after the replacement file is completely written, immediately before the new record is created.
Block changes in detail
file New block: Changes how a PUBLISHED public-media file may be cached, on object storage and at the edge, without re-uploading it. Give no-store for media that must never be kept anywhere but its origin : a one-time photo the moment its message becomes one-time : or public, max-age=31536000, immutable to make it cacheable again. The resized variants of the file ({name}_{w}x{h}.{ext}, as resize image writes them, named after the file's filename as well as its path) are re-tagged with it. Only files in the trees the media mirror serves; a file outside them answers NOT_MIRRORED, a file that never reached the store OBJECT_MISSING. end storage transaction function New block: Commits the storage transaction opened by start storage transaction and stores its result for a later retry of the same id. revert storage transaction function New block: Undoes every document write journaled by a storage transaction, newest first, refusing documents that changed since. start storage transaction function New block: Opens a storage transaction: every document create, update, remove and restore this flow performs until the end block is journaled so the whole group can be reverted as one. append message imapconnection New block: Files a raw message into a mailbox : typically a copy of what smtp send email just delivered, into the Sent folder, so the thread is complete in the user's mail client. delete messages imapconnection New block: Deletes messages by UID: flags them \Deleted and, by default, expunges them from the mailbox. Prefer imap move to the Trash folder when the account has one. fetch messages imapconnection New block: Downloads messages by UID and parses each into the same object mail parse produces : addresses, subject, text, html, attachments, headers. Does not mark them read unless mark seen is on. list mailboxes imapconnection New block: Lists the mailboxes (folders) on the account, with their special-use role (inbox, sent, trash, …) and, optionally, their message counts. move messages imapconnection New block: Moves messages by UID into another mailbox : the usual way to file what a flow has processed so the next poll does not see it again. open connection imapconnection New block: Opens an IMAP connection to a mailbox server. Nothing is read until another imap block runs; with verify on, the block signs in once and reports the result on success so a flow can branch before it polls. search imapconnection New block: Finds messages in a mailbox and returns their UIDs, newest first. Wire the UIDs into imap fetch to read them. Every criterion that is filled must match. set flags imapconnection New block: Marks messages read, unread, flagged, answered : or with a keyword of your own : by UID. parse message mail New block: Parses a raw RFC 822 / RFC 5322 message into addresses, subject, bodies, attachments and headers. Feed it the raw body of an inbound-mail webhook : http connection get raw body : or a stored .eml file. get batch mssgsmailconnection New block: Reads a batch back from mssgs mail: whether it was released, rejected as spam, or blocked. get message mssgsmailconnection New block: Reads a sent message back from mssgs mail: its status (queued, sent, failed, bounced), attempts and error. open connection mssgsmailconnection New block: Opens an mssgs mail connection for the send blocks. Leave both pins empty to use the mssgs mail service provider this entity binds to transactional email; name a provider to use a specific one; or pass a literal API key on api key. send email mssgsmailconnection New block: Sends one email through mssgs mail. The message is queued (status: queued) and delivered by the mail platform; read its outcome with get message. send email batch mssgsmailconnection New block: Sends ONE message to up to 1000 recipients, each receiving their own copy. mssgs mail spam-checks the message before releasing it; read the outcome with get batch. send email with template mssgsmailconnection New block: Sends one email whose subject and body come from a template stored on mssgs mail, rendered there against the template model. delete template mssgsmailconnection New block: Deletes a template from mssgs mail. get template mssgsmailconnection New block: Reads one template stored on mssgs mail for this sender domain. save template mssgsmailconnection New block: Creates or replaces a template on mssgs mail for this sender domain, addressed by its alias. list templates mssgsmailconnection New block: Lists the templates stored on mssgs mail for this sender domain. delete object s3connection New block: Removes an object. Deleting a key that is not there is not an error. get object s3connection New block: Downloads an object to a file. The object is streamed to disk, so a large file costs no extra memory. object exists s3connection New block: Checks whether an object exists and reads its size, type and metadata : without downloading it. list objects s3connection New block: Lists one page of a bucket's objects under a prefix. Feed next page token back into page token to walk a large bucket. open connection s3connection New block: Opens a connection to S3-compatible object storage (Ceph RGW, MinIO, Amazon S3). Point it at an object storage service provider so the secret key stays in the provider store and never appears in this blueprint : the key pins are the older way and leave the secret readable to anyone who can open the flow. presign get url s3connection New block: Creates a temporary URL that lets anyone read one private object, without proxying it through this server. Not available in a simulation : the URL is a real credential. presign put url s3connection New block: Creates a temporary URL that lets a browser upload one object directly to storage, without the file passing through this server. Not available in a simulation : the URL is a real credential. put object s3connection New block: Uploads a file to object storage. The file is streamed from disk, so an object of any size costs the same memory. put value s3connection New block: Uploads a value as an object : JSON, rendered text, or any payload the flow computed rather than read from disk. open connection smtpconnection New block: Opens an SMTP connection to a relay or submission host. Nothing is sent until smtp send email runs; with verify on, the block dials the host once (EHLO, STARTTLS, AUTH, QUIT) so the flow can branch on success before composing a message. send email smtpconnection New block: Builds an RFC 5322 message and hands it to the SMTP server on the connection. Use this to deliver through your own MTA (Exim, Postfix) rather than a hosted API. apple sso get auth url function Deprecated in this release, please avoid future use. apple sso refresh token function Deprecated in this release, please avoid future use. apple sso revoke token function Deprecated in this release, please avoid future use. apple sso verify code function Deprecated in this release, please avoid future use. verify 2fa function in-pin method: documentation updated world bbox osmworld added out-pin retryable (condition) • out-pin geojson: documentation updated world tile osmworld added out-pin retryable (condition) • out-pin geojson: documentation updated Blocks introduced
delete objects3connection Removes an object. Deleting a key that is not there is not an error. get object s3connection Downloads an object to a file. The object is streamed to disk, so a large file costs no extra memory. list objects s3connection Lists one page of a bucket's objects under a prefix. Feed next page token back into page token to walk a large bucket. object exists s3connection Checks whether an object exists and reads its size, type and metadata : without downloading it. open connection s3connection Opens a connection to S3-compatible object storage (Ceph RGW, MinIO, Amazon S3). Point it at an object storage service provider so the secret key stays in the provider store and never appears in this blueprint : the key pins are the older way and leave the secret readable to anyone who can open the flow. presign get url s3connection Creates a temporary URL that lets anyone read one private object, without proxying it through this server. Not available in a simulation : the URL is a real credential. presign put url s3connection Creates a temporary URL that lets a browser upload one object directly to storage, without the file passing through this server. Not available in a simulation : the URL is a real credential. put object s3connection Uploads a file to object storage. The file is streamed from disk, so an object of any size costs the same memory. put value s3connection Uploads a value as an object : JSON, rendered text, or any payload the flow computed rather than read from disk.