This skill should be used when the user asks about "getting started workato sdk", "first connector", "connector quickstart", "share connector", "version control connector", "workato walkthrough", "connector examples", or is new to building Workato custom connectors.
From workato-connector-sdknpx claudepluginhub grailautomation/claude-plugins --plugin workato-connector-sdkThis skill uses the workspace's default tool permissions.
references/guides__examples.mdreferences/guides__walkthrough.mdreferences/limits.mdreferences/quickstart.mdreferences/quickstart__FAQ.mdreferences/quickstart__debugging.mdreferences/quickstart__sharing.mdreferences/quickstart__version-control.mdGuide for getting started with Workato custom connector development.
Workato custom connectors allow you to connect to any API not covered by built-in connectors. This guide covers:
Start with the simplest possible connector:
{
title: 'My First Connector',
connection: {
fields: [
{ name: 'api_key', label: 'API Key', control_type: 'password' }
],
authorization: {
type: 'api_key',
apply: lambda do |connection|
headers('Authorization' => "Bearer #{connection['api_key']}")
end
},
base_uri: lambda do |connection|
'https://api.example.com'
end,
test: lambda do |connection|
get('/me')
end
},
actions: {
test_action: {
title: 'Test action',
input_fields: lambda do
[{ name: 'message', label: 'Message' }]
end,
execute: lambda do |connection, input|
{ echo: input['message'] }
end,
output_fields: lambda do
[{ name: 'echo', label: 'Echo' }]
end
}
}
}
Handles authentication:
connection: {
fields: [
# Credential inputs shown to users
],
authorization: {
# How to apply credentials to requests
},
base_uri: lambda do |connection|
# Base URL for all API calls
end,
test: lambda do |connection|
# Lightweight call to verify credentials work
end
}
Operations users can perform:
actions: {
action_name: {
title: 'Human readable title',
input_fields: lambda do
# Fields users fill in
end,
execute: lambda do |connection, input|
# API call logic
end,
output_fields: lambda do
# Fields available as datapills
end
}
}
Events that start recipes:
triggers: {
trigger_name: {
title: 'New something',
poll: lambda do |connection, input, closure|
# Check for new records
end,
dedup: lambda do |record|
# Unique identifier for deduplication
end,
output_fields: lambda do
# Fields available as datapills
end
}
}
# Install SDK gem
gem install workato-connector-sdk
# Create project
workato new my_connector
cd my_connector
# Test connection
workato exec connection.authorization --settings=settings.yaml
# Test action
workato exec actions.test_action --input='{"message": "hello"}'
# GET request
get('/api/records')
# GET with params
get('/api/records').params(status: 'active', limit: 10)
# POST with payload
post('/api/records').payload(name: 'Test', email: 'test@example.com')
# PUT/PATCH
put("/api/records/#{id}").payload(input)
patch("/api/records/#{id}").payload(input)
# DELETE
delete("/api/records/#{id}")
execute: lambda do |connection, input|
response = get('/api/records')
# Response is automatically parsed JSON
{
total: response['total'],
records: response['items']
}
end
execute: lambda do |connection, input|
post('/api/records')
.payload(input)
.after_error_response(/4\d{2}/) do |code, body, headers, message|
error("API Error: #{body['message']}")
end
end
execute: lambda do |connection, input|
workato.log("Input received: #{input.inspect}")
response = get('/api/records')
workato.log("API response: #{response.inspect}")
response
end
| Problem | Likely Cause | Solution |
|---|---|---|
| Connection fails | Wrong credentials | Verify API key/secret |
| Empty response | Wrong endpoint | Check API docs for URL |
| Missing fields | Schema mismatch | Update output_fields |
| Action errors | Bad input | Add input validation |
Share connectors via Workato Community Library:
Use Git to track connector changes:
# Initialize repo
git init
# Track connector file
git add connector.rb
git commit -m "Initial connector"
# Create branch for new feature
git checkout -b add-search-action
Be aware of Workato platform limits:
| Limit | Value |
|---|---|
| Max connector size | 1 MB |
| Action timeout | 120 seconds |
| Trigger poll interval | 5 minutes minimum |
| Webhook payload | 10 MB |
After your first connector:
For detailed documentation:
references/quickstart.md - Quickstart overviewreferences/guides__walkthrough.md - Step-by-step walkthroughreferences/guides__examples.md - Example connectorsreferences/quickstart__debugging.md - Debugging guidereferences/quickstart__FAQ.md - Frequently asked questionsreferences/quickstart__sharing.md - Sharing connectorsreferences/quickstart__version-control.md - Version control practicesreferences/limits.md - Platform limits and quotas