Input/Output Handling

Understand how Generic artifacts handle input props and output values.

Input Handling

Reading Props

Your container receives props as a JSON file mounted at /workspace/vars.json:

{
  "database_host": "postgres.example.com",
  "database_name": "mydb",
  "migration_version": "v1.2.3",
  "enable_logging": true,
  "retry_count": 3
}

Reading in Different Languages

Python:

import json

def read_vars():
    with open('/workspace/vars.json', 'r') as f:
        return json.load(f)

vars = read_vars()
database_host = vars['database_host']

Node.js:

Bash:

Output Handling

Writing Outputs

Your container must write results to /workspace/outputs.json:

Writing in Different Languages

Python:

Node.js:

Bash:

Output Contract

Bluebricks processes the outputs.json file after your container exits. Follow these requirements:

Requirement
Details

File name

outputs.json (exact name)

Location

/workspace/outputs.json

Size limit

≤ 1 MiB. Larger files are rejected or truncated

Structure

Single flat JSON object (top-level must be an object, not an array)

Nesting

Nested objects/arrays are allowed as values

Value types

string, number, boolean, object, array

Processing

Parsed immediately after container exit and registered as deployment outputs

Example valid output:

After a successful run, outputs can be referenced by other packages using Data.<package_id>.<output_key> (e.g., Data.my_package.some_value).

Required Outputs

job_id

Bluebricks automatically adds job_id if not present in your outputs:

If you don't include it:

Bluebricks adds it automatically:

Data Types

Supported Input Types

Type
Example
Description

string

"hello"

Text values

number

42

Numeric values

bool

true

Boolean values

list

["a", "b"]

Array of values

map

{"key": "value"}

Object/dictionary

Supported Output Types

Type
Example
Description

string

"success"

Text results

number

150

Numeric results

bool

true

Boolean results

list

["item1", "item2"]

Array results

map

{"status": "ok"}

Object results

Error Handling

Success Case

Failure Case

Best Practices

Input Validation

Output Validation

Error Reporting

Testing Input/Output

Local Testing

See also

Last updated

Was this helpful?