Documentation Index
Fetch the complete documentation index at: https://mintlify.com/pixlcore/xyops/llms.txt
Use this file to discover all available pages before exploring further.
Overview
Storage Buckets provide durable, shareable storage for jobs and workflows. A bucket can hold structured JSON data and any number of files. Jobs can fetch from and store to buckets at well-defined points in their lifecycle so outputs from one job are available as inputs to another, even when the jobs are not directly connected in a chain.Key Features
- Purpose: Persistent data/files exchange between jobs and workflows
- Content types: JSON data object and file collection (zero or more files)
- Access: Manage via UI and API with privilege-based controls
- Job integration: Fetch at job start; store on job completion based on action conditions
- Direct links: Files in buckets are downloadable by URL
When to Use Buckets
Cross-Job Handoff
Cross-Job Handoff
Pass artifacts from build to deploy, or output from data prep to analysis:
Workflow State Sharing
Workflow State Sharing
Share state and files between workflow nodes, even ones without direct connections:
- Upstream nodes store outputs to a shared bucket on
success - Downstream nodes fetch from the same bucket at
start - Useful for fan-out/fan-in designs and optional branches
Checkpointing
Checkpointing
Persist intermediate results for retries or manual inspection:
- Store partial results during long-running jobs
- Resume from checkpoint on failure
- Inspect intermediate state for debugging
Shared State
Shared State
Managing Buckets in the UI
Users with appropriate privileges can create, edit, and delete buckets:Edit JSON Data
Buckets have a JSON “Data” pane for arbitrary user-defined data:
- Click “Edit Data” to modify the JSON object
- Data is shallow-merged when updated via API or actions
- Namespace your keys to avoid collisions
Upload Files
Drag-and-drop or select multiple files:
- Filenames are normalized (lowercased; non-alphanumerics become underscores)
- Existing files with same normalized name are replaced
- Uploads respect configured limits
Upload Settings
Configured viaclient.bucket_upload_settings:
Using Buckets in Jobs
Buckets integrate with jobs through two action types: Fetch Bucket and Store Bucket.Fetch at Job Start
Use Fetch Bucket with thestart condition to pull bucket content into the job’s input context before launch:
- Data: Shallow-merged into the job’s
input.data - Files: Selected files added to job’s input file list and staged into temp directory
Avoid key collisions by namespacing your bucket data keys deliberately.
Store on Completion
Use Store Bucket with completion conditions (e.g.,success, error, complete) to persist job outputs:
- Data: Job output data written to bucket when
bucket_syncincludesdata - Files: Job output files filtered by
bucket_globand stored whenbucket_syncincludesfiles
Action Parameters
bucket_id
bucket_id
Target Bucket ID (required)
bucket_sync
bucket_sync
Controls what is fetched/stored:
"data"- Only JSON data"files"- Only files"data_and_files"- Both (default)
bucket_glob
bucket_glob
Optional glob pattern to filter files (default:
*)Examples:*.csv- CSV files onlyreport_*.{pdf,txt}- Reports in PDF or TXT format**/*.log- All log files in any subdirectory
Workflows and Buckets
Buckets enable data sharing in complex workflow patterns:This pattern is useful for fan-out/fan-in designs, optional branches, and long-lived shared state between periodic jobs.
Downloading Files by URL
Every bucket file includes a stable path for direct download:Programmatic Access
Access buckets programmatically during job execution:Create Bucket & API Key
- Create a storage bucket and save the Bucket ID
- Create an API Key with
edit_bucketsprivilege - Save the API key secret when prompted
Create Secret Vault
Add your API Key and Bucket ID as variables:Assign the secret vault to your Event, Category, or Plugin.
Write Bucket Data
Use the
write_bucket_data API during job execution:write_bucket_data performs a shallow merge write with locking to prevent corruption.API Benefits Over Actions
- Complete control over when data is read/written
- Not limited to job start and completion
- Can update bucket multiple times during job execution
- Rugged design handles concurrent access from multiple jobs
Storage Architecture
Buckets use a multi-record storage structure:- Metadata: Stored in
global/bucketslist - Data: Stored at
buckets/<id>/data - Files: Stored at
buckets/<id>/files
This separation allows efficient updates without loading entire bucket contents.
Best Practices
Namespacing
Namespacing
Use distinct keys in bucket JSON to avoid shallow-merge collisions:
Size Discipline
Size Discipline
Prefer buckets for modest artifacts:
- Keep JSON data small (< 1 MB)
- Large datasets better handled via external storage
- Reference external data by URL in bucket JSON
Cleanup
Cleanup
Consider lifecycle practices:
- Replace/rotate files to keep buckets tidy
- Delete unused buckets periodically
- Stay within configured limits
Error Handling
Error Handling
Handle bucket operations gracefully:
- Check API responses for errors
- Validate bucket exists before fetching
- Use try-catch around JSON parsing
API Reference
Key bucket API endpoints:get_buckets- List all bucketsget_bucket- Get single bucket (includes data and file list)create_bucket- Create new bucketupdate_bucket- Update bucket metadata, data, or fileswrite_bucket_data- Shallow-merge write bucket data (with locking)upload_bucket_files- Upload files to bucketdelete_bucket_file- Remove file from bucketdelete_bucket- Permanently delete bucket
Required Privileges
- create_buckets: Create new buckets
- edit_buckets: Edit bucket metadata, JSON data, and files
- delete_buckets: Delete buckets and all contained data/files
Listing and fetching typically requires only a valid session or API Key.