Build on the Robo Ecosystem

SDKs, REST API, webhooks, and a Package Manager to ship apps, workflows, drivers, and integrations across OS, ERP, and AI.

Quickstart

Three steps to your first call and a running package.

Step 1
Create an Org & Token

In the admin portal, create a Personal Access Token (scoped to your organization). Keep it secret.

# Example header
Authorization: Bearer <TOKEN>
Step 2
Make Your First Call

Unified Access Format supports .json, .xml, .csv, .xls. Append a suffix to the endpoint.

curl -s \
  -H "Authorization: Bearer $TOKEN" \
  https://robo-meister.com/api/v1/workflows.json
Step 3
Install SDK / Start a Package

Use the JS SDK or the Package Manager to scaffold apps, workflows, and drivers.

# JS (browser)
<script src="/js-api/public/RoboConnector.js"></script>

# Package skeleton
rappkg init my-first-app
curl -X POST https://robo-meister.com/api/v1/events.json \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "event_type":"task_completed",
    "scope_type":"organization",
    "scope_id":"ORG_ID",
    "data": {"task_id":"abcd-1234","result":"success"}
  }'
async function listWorkflows(token){
  const res = await fetch('https://robo-meister.com/api/v1/workflows.json',{
    headers:{ Authorization: `Bearer ${token}` }
  })
  if(!res.ok) throw new Error('HTTP '+res.status)
  return res.json()
}
// Symfony HttpClient example
use Symfony\Component\HttpClient\HttpClient;
$http = HttpClient::create();
$response = $http->request('GET', 'https://robo-meister.com/api/v1/workflows.json', [
  'headers' => [ 'Authorization' => 'Bearer '.$token ]
]);
$data = $response->toArray();

Authentication

Bearer tokens are org-scoped. Use Personal Access Tokens for scripts or OAuth for user-consent flows.

Option A
Personal Access Token
  • Generated in the admin portal
  • Scopes: read/write per module
  • Rotate and revoke anytime
Authorization: Bearer <TOKEN>
Option B
OAuth 2.0
  • Authorization Code / Client Credentials
  • Tenant-aware consent screens
  • Refresh tokens for long-lived apps
POST /oauth/token
client_id=...&client_secret=...
grant_type=client_credentials

REST API Basics

Base URL and example endpoints with Unified Access Format.

Base URL
https://robo-meister.com/api/v1
List workflows
GET /workflows.json
GET /workflows.csv
Create event
POST /events.json
{ "event_type":"task_completed", ... }
Filtering & Pagination
GET /clients.json?status=active&page=2&limit=50
GET /products.json?category=hardware&sort=-createdAt
Errors
{
  "status": "error",
  "error": {
    "code": "invalid_scope",
    "message": "Token lacks 'finance:read'"
  }
}

Webhooks & Events

Subscribe to domain events or the low-level events_channel for real-time updates.

Register a Webhook
POST /webhooks.json
{
  "url": "https://robo-meister.com/webhook/robo",
  "events": ["invoice.created","shipment.updated"],
  "secret": "<HMAC_SECRET>"
}
Signature header
X-Robo-Signature: t=1733826000,v1=hex(HMAC_SHA256(body, secret))
Pub/Sub Topics
events_channel:user:<id>:task_completed
events_channel:organization:<id>:inventory_update
Payload
{
  "timestamp":"2025-08-01T10:00:00Z",
  "event_type":"task_completed",
  "context": {"user_id":"1234","project_id":"9876"},
  "data": {"task_id":"abcd-1234","result":"success"}
}

Package Manager

Distribute logic as .rappkg archives: apps, workflows, drivers, integrations.

Structure
my-first-app.rappkg
├── meta.json
├── app.json
├── workflows/
│   └── onboarding.json
├── drivers/
│   └── printer.json
└── integrations/
    └── acme_api.json
Install
# via ERP UI: Marketplace → Install
# via API
POST /packages/install.json { "package_url": "https://.../my-first-app.rappkg" }
meta.json
{
  "name": "my-first-app",
  "version": "1.0.0",
  "type": "app",  // app | workflow | driver | integration
  "targets": ["erp","os","ai"],
  "scopes": ["crm:read","bpm:write"],
  "entry": "app.json",
  "author": {"name":"Your Name","url":"https://example.com"}
}
app.json
{
  "title": "Starter App",
  "tiles": [{"route":"/apps/starter","label":"Starter"}],
  "workflows": ["workflows/onboarding.json"],
  "drivers": ["drivers/printer.json"]
}

Template System (Embeds)

Embed flows, documents, and functions via declarative tags or a meta initializer.

HTML Init
<meta name="robo-connector" data-init data-client="ACME" data-project="site" />
<script src="/js-api/public/RoboConnector.js"></script>
Custom Element
<robo-connector robo-connector-init></robo-connector>
Tags
<flow data-template="consult with chat">consult with chat</flow>
<document data-display data-document="price">Loading...</document>
<function data-provider="Inner" data-after-function="get_project">student_cart</function>

Placeholders, arrays, and nested objects are resolved contextually.

Context Engine

Hierarchical keys, queues, and events. Think of it as the mesh for state & orchestration.

Key Patterns
Context:User:<user_id>:Project:<project_id>:client
Data:Queue:<queue_id>:In:<type>:payload
Data:Queue:<queue_id>:Result:status

TTL for ephemeral data; persistent for long-lived configuration.

Typical Flow
# Producer → Queue → Worker → Result
PUSH Data:Queue:plan-42:In:orders
SUB  Data:Queue:plan-42:Result:status

AI Module & Robo Assistant consume queues, update context, and emit events.

Ready to build?

Start with API access or scaffold your first package.

Changelog →