{"schemaVersion":"1","contentVersion":"2026-10-18.1","slug":"controls-builtin-activities","title":"Built-in activity field reference","summary":"Every declared field in the built-in database, file-storage, app-login, and app-registration activity forms.","category":"Control reference","minutes":11,"prerequisites":["Open the named screen in Rumata. Available controls may depend on your account, permissions, and resource state."],"sections":[{"id":"database","title":"SqlExecutionEngine","blocks":[{"type":"paragraph","text":"Run a saved query, or deliberately accept [SQL](/guides/controls-database#editor) through workflow input. Running can change database records."},{"type":"table","headers":["Control","What it does"],"rows":[["query Id (queryId)","Choose the saved database instruction this step should execute."],["db Connection Id (dbConnectionId)","Identify the database connection when you need to choose one explicitly."],["schema Name (schemaName)","Choose the named area of the database containing your tables."],["decode JWT (decodeJWT)","Check the caller’s signed app token so database work can use their identity."],["session Variables (sessionVariables)","Provide named values that your database permission rules expect for this run."],["return First Item Only (returnFirstItemOnly)","Return one record instead of a list. Use this only when the query is guaranteed to return one record."],["strict Output Shape (strictOutputShape)","Report a mismatch between a single record and a list instead of automatically adjusting a one-record result."],["factory Id (factoryId)","Identify the factory whose database or app sign-in key this step should use."]]}]},{"id":"file-storage-operations","title":"file-storage-operations","blocks":[{"type":"paragraph","text":"Read and write project files from a workflow. Required fields depend on the selected operation."},{"type":"table","headers":["Control","What it does"],"rows":[["operation (operation)","Choose the file action: list names (list), read content (get), inspect metadata (head), write (put), delete, copy, move, check existence (exists), create a temporary download link (presign), or create an upload link (presign-upload)."],["project Storage Id (projectStorageId)","Choose the existing storage bucket for this operation. The caller or workflow must have access to it."],["path (path)","Enter the stored file’s key, including any folder prefix."],["prefix (prefix)","Limit the file listing to keys starting with this text."],["continuation Token (continuationToken)","Use the continuation value returned by the previous listing to request its next page."],["source Path (sourcePath)","Identify the existing file to copy or move."],["destination Path (destinationPath)","Choose the destination key for the copied or moved file."],["content (content)","Supply the file contents to write."],["content Type (contentType)","Describe the file format, such as text/plain or application/json. Upload-link creation requires it."],["size Bytes (sizeBytes)","For an upload link, supply the exact file size in bytes. The activity rejects uploads over 500 MB."],["content Encoding (contentEncoding)","Choose how supplied content is read: ordinary text, base64-encoded bytes, or structured JSON."],["output Encoding (outputEncoding)","Choose how downloaded content is returned: text, base64, or JSON."],["overwrite (overwrite)","Allow an existing destination file to be replaced. Leave off when replacement is not intended."],["expiry Seconds (expirySeconds)","Choose how long the temporary link should work. The maximum is 900 seconds, or 15 minutes."]]}]},{"id":"user-login","title":"user-login","blocks":[{"type":"paragraph","text":"Configure sign-in for users of your own app. This is separate from signing into Rumata. The returned token proves app identity; fetch profile data separately."},{"type":"table","headers":["Control","What it does"],"rows":[["schema Name (schemaName)","Choose the named area of the database containing your tables."],["db Connection Id (dbConnectionId)","Identify the database connection when you need to choose one explicitly."],["table Name (tableName)","Name the table that stores your app’s users."],["identifier Field (identifierField)","Name the user field used to identify the account, such as email. The incoming request must use the same field name."],["password Field (passwordField)","Name the database column holding the protected password value. Incoming requests still use the field named password."],["is Verified Field (isVerifiedField)","Identify a verification-status column. The current login implementation does not enforce it; registration writes true when configured. This is not an email-verification feature."],["requires Approval Field (requiresApprovalField)","Identify the column recording whether an account still needs approval. Login is blocked while its value is true."],["jwt Payload Fields (jwtPayloadFields)","Choose actual user-table fields to include in the signed token returned to your app. Include only information that should be carried in that token."],["factory Id (factoryId)","Identify the factory whose database or app sign-in key this step should use."]]}]},{"id":"user-register","title":"user-register","blocks":[{"type":"paragraph","text":"Configure sign-in for users of your own app. This is separate from signing into Rumata. The returned token proves app identity; fetch profile data separately."},{"type":"table","headers":["Control","What it does"],"rows":[["schema Name (schemaName)","Choose the named area of the database containing your tables."],["db Connection Id (dbConnectionId)","Identify the database connection when you need to choose one explicitly."],["table Name (tableName)","Name the table that stores your app’s users."],["identifier Field (identifierField)","Name the user field used to identify the account, such as email. The incoming request must use the same field name."],["password Field (passwordField)","Name the database column holding the protected password value. Incoming requests still use the field named password."],["jwt Payload Fields (jwtPayloadFields)","Choose actual user-table fields to include in the signed token returned to your app. Include only information that should be carried in that token."],["is Verified Field (isVerifiedField)","Identify a verification-status column. The current login implementation does not enforce it; registration writes true when configured. This is not an email-verification feature."],["requires Approval Field (requiresApprovalField)","Identify the column recording whether an account still needs approval. Login is blocked while its value is true."],["is Verified Default (isVerifiedDefault)","This setting is currently not applied. It does not make verification mandatory."],["requires Approval Default (requiresApprovalDefault)","Choose whether newly registered accounts should require approval when an approval column is configured."],["additional Fields (additionalFields)","Choose additional incoming fields to copy into the user record. Map different input and database names when needed."],["factory Id (factoryId)","Identify the factory whose database or app sign-in key this step should use."]]}]}],"technical":[],"related":["controls-workflow-nodes","controls-activities","controls-secrets","controls-access"],"sources":["src/sql/system_init/seed-development-data.sql","src/sql/system_init/seed-system-activities.sql"],"updated":"2026-09-06","audience":"general","media":[],"video":null,"url":"https://docs.rumata.dev/guides/controls-builtin-activities"}