File Structure
Connectors are organized into a main connector file and (optionally) partial files for each resource:- Use kebab-case for file names
- Reference partials in the main file using
$ref: provider.resource - Add references in alphabetical order (not required, but recommended for readability)
Main Connector File
The main connector file defines metadata, authentication, and references to action partials.Info Section
When to use each field
When to use each field
title: User-facing name. Use the official provider name (e.g., “BambooHR” not “Bamboo HR”)key: Machine-readable identifier. Must be lowercase with underscores. Cannot be changed after deployment without breaking existing integrationsversion: Increment when making changes. Use semantic versioning: major.minor.patchassets.icon: Usehttps://stackone-logos.com/api/{key}/filled/pngfor consistent stylingdescription: Keep concise. Used by AI agents for context when discovering connectors
Base URL
ThebaseUrl defines the root URL for all API requests. It supports credential interpolation for providers with dynamic domains.
When to use dynamic baseUrl
When to use dynamic baseUrl
Use credential interpolation when the provider requires:
- Customer-specific subdomains: Many B2B SaaS products use
{company}.provider.comURLs - Region selection: Some providers have separate endpoints per region (US, EU, APAC)
- Environment switching: Sandbox vs production endpoints
configFields in your authentication config. These are fields your customer fills in when connecting their account.Authentication
Authentication is defined once in the main connector file. All actions inherit it.Setup vs Config Fields
Choosing between setupFields and configFields
Choosing between setupFields and configFields
Use
setupFields for:- OAuth client credentials (Client ID, Client Secret)
- Scopes that you control
- API keys that belong to your app, not the end user
- Values you configure once in the StackOne dashboard
configFields for:- Customer’s own API tokens or keys
- Customer-specific identifiers (subdomain, account ID, workspace ID)
- Any value that differs per customer connection
- Values the customer enters in the Hub when linking their account
secret: true: Masks the field value and encrypts storage (use for tokens, keys, passwords)required: true: Field must be filled before connection can completeplaceholder: Shows example format without exposing real valuestooltip: Additional help text shown on hover
Example: API Key Authentication
Other Authentication Types
The Falcon engine supports several authorization types:Actions
Actions define the operations your connector can perform. Each action consists of metadata, inputs, steps, and result configuration.Action Structure
How these fields affect your action
How these fields affect your action
actionId: Keep it descriptive and follow the pattern{verb}_{resource}(e.g.,list_users,get_employee,create_candidate). Cannot be changed after deployment.categories: Determines where the action appears in the Actions Explorer. An action can belong to multiple categories.actionType: Choosingcustomis fastest since no schema mapping is needed. Use unified types (list,get, etc.) when you want cross-provider compatibility.schema: Must match a StackOne schema name (e.g.,users,employees,candidates). Only required whenactionTypeis unified.label+description: These appear in the Actions Explorer and are sent to AI agents. Write them for humans, not machines.context: Adding the provider’s API doc URL helps the Builder Agent and AI tools understand edge cases.
Action Types
Add a
schema field to map provider data to StackOne’s standardized schemas (e.g., schema: employees). Without schema, the action returns provider data as-is. See Field Configs for mapping details.
Inputs
Inputs define the parameters your action accepts. Each input specifies aname, type, location (in), and whether it’s required:
string, number, boolean, datetime_string, object
Input locations: path, query, body, headers
For full input property documentation including nested objects, see the YAML Reference — Inputs.
Step Functions
Step functions are the building blocks of actions. Each step performs one operation.Choosing the right step function
Choosing the right step function
Common patterns:
- GET single resource:
request→result - LIST with pagination:
paginated_request→result - Unified action:
request→map_fields→typecast→result - Multi-source data:
request(x2) →group_data→result - Per-item enrichment:
request→ iteratorrequest→group_data→result - Static + dynamic merge:
static_values+request→merge_collections→result
request - HTTP Requests
Make a single HTTP request to the provider API. Use args to pass headers, query parameters, and body fields. Use response.dataKey to extract nested data from the response.
paginated_request - Cursor Pagination
Automatically fetches all pages using cursor-based pagination. StackOne handles cursor tracking, page assembly, and continuation logic.
response.dataKey, checks response.nextKey for a continuation cursor, and repeats until no cursor is returned. All pages are combined automatically.
map_fields - Transform Data
Transform provider response data into your output schema. Takes a dataSource (typically a previous step’s output), evaluates an expression per field against each record, and converts to the specified type.
typecast - Type Conversion
Apply type conversions to data. Used for unified actions.
group_data - Combine Results
Merge data from multiple steps into a single dataset.
static_values - Return Static Data
Return predefined values without making an API request. Useful for enum lookups or constant data.
merge_collections - Merge Arrays
Merge multiple data collections into a single array.
upload_file / download_file - File Operations
Handle file uploads (multipart form) and downloads (with encoding options).
soap_request - SOAP API
Make SOAP (XML) requests. Used for enterprise providers like Workday.
code_execution_lambda - AWS Lambda Invocation
Invoke an AWS Lambda function and use its response as the step output. Use for custom transformations or provider-specific logic that doesn’t fit other step functions. The args array is assembled into the JSON payload sent to the Lambda.
Iterator Steps (Foreach)
Iterator steps execute one or more step functions for each item in a collection. Use them when you need to make per-item API calls — for example, fetching detailed data for each record returned by a list endpoint.Structure
An iterator step is defined by adding theiterator property to a step. The iterator value is a JSONPath expression that resolves to an array.
How It Works
- The
iteratorexpression is evaluated to produce an array - For each item in the array, the step function(s) execute
- Inside the step, you can access:
$.iterator.item— the current array element$.iterator.index— the current iteration index (0-based)$.iterator.current— the output of the previous step function in the same iteration (when usingstepFunctions)
- All iteration outputs are collected into an array at
$.steps.{stepId}.output.data
Single Step Function
The most common pattern — make one API call per item:Multiple Step Functions
UsestepFunctions (plural) to execute a sequence of functions per iteration. Each function can access the output of the previous one via $.iterator.current:
Conditional Iterator
Like regular steps, iterator steps support thecondition and ignoreError properties:
Iterator Context Reference
Expression Syntax
The Falcon engine supports three expression formats for dynamic values. For the complete expression language reference including all built-in functions, operators, and detailed examples, see the Expression Language page.JSONPath (Preferred)
Direct data access. Use for any direct reference.String Interpolation (${...})
Use for embedding values within strings.
JEXL Expressions ('{{...}}')
Use for conditional logic and transformations. Must be in single quotes.
present(), missing(), includes(), join(), capitalize(), truncate(), regexMatch(), now() — see full reference.
Conditional Arguments
Include arguments only when conditions are met:Result
Define the action’s response output. Read operations:Field Configs (Unified Actions)
For unified actions (those with aschema field), fieldConfigs map provider response fields to StackOne’s standardized schema:
Rate Limiting
Configure request throttling:Validation
Validate connector files using the CLI:Complete Example
Next Steps
Expression Language
Full reference for JSONPath, JEXL, and string interpolation
YAML Reference
Complete property reference with impact analysis
Browse Examples
See real connector implementations
StackOne Agent
Generate connectors with AI assistance