Vendor quick start
On the bus in about 15 minutes.
Five missions take your product from no account to a green test run on a live SOM 1.0 bus. Each one has a single goal, one block to copy, and a clear “done when”. It takes about 15 minutes of your own time, once RND has approved your access. That one-time review is the only manual step: after it, you invite your colleagues to your workspace yourself.
Mission 0 · 30 sec
See the bus answer
No account needed. Every message gets one of these answers, with the rule behind every refusal.
- 202 accepted
Valid SOM 1.0, in order for its story, from a system allowed to send it. Delivered to every subscriber.
- 200 duplicate
The same message_id again. Safe to retry: nobody receives it twice.
- 409 refused
An older snapshot after a newer one. Refused before any consumer sees it, with the rule behind it.
sequence_number.not_increasing
Mission 1 · 2 min · Via RND, once
Request access
Tell us who you are and what you’ll test. An RND engineer reviews it once; that is the only wait to get started.
- Fill in the Request access form
- Keep your REQ-… reference
- Your sign-in arrives by email once approved
Done when
You have a REQ-… reference. After approval, you have an email with your sign-in.
Mission 2 · 3 min
Get your keys
Sign in, join your workspace and create the app that will publish.
- Sign in with the temporary password, set your own and add an authenticator app
- Accept the invitation to your workspace
- Apps → New app: name it and claim the system_id it stamps
- Connect: choose the message types it may publish
- Copy the client id, secret and workspace id. The secret is shown once
export CLIENT_ID=c… # from Connect
export CLIENT_SECRET=sbs_… # shown once: put it in your secret store
export WORKSPACE=w… # shown with the credentials
export SYSTEM_ID=acme-ncs-01 # the system_id your app claimedMission 3 · 3 min
Send your first message
Get a token, dry-run a real SOM 1.0 story snapshot, then publish it.
TOKEN=$(curl -s https://api.sombus.rnd-solutions.net/v1/oauth/token \
-u "$CLIENT_ID:$CLIENT_SECRET" -d grant_type=client_credentials | jq -r .access_token)
curl -sO https://raw.githubusercontent.com/storyobjectmodel/som/7297fef9adc6d14a74bdd7550c78decaa099a1ad/examples/hurricane-run/hurricane-01.json
STORY=$SYSTEM_ID-$(date +%s)
CORRELATION_ID=$(uuidgen | tr A-Z a-z) # one per story: reuse it for every message about it
jq --arg mid "$(uuidgen | tr A-Z a-z)" --arg cid "$CORRELATION_ID" \
--arg story "$STORY" --arg ts "$(date -u +%Y-%m-%dT%H:%M:%SZ)" --arg sys "$SYSTEM_ID" \
'{som_version: "1.0.0", message_id: $mid, correlation_id: $cid, message_type: "story.context",
timestamp: $ts, originating_system: {system_id: $sys, system_type: "ncs"},
topic: "som.story.context", payload: (. + {story_id: $story})}' hurricane-01.json > msg.json
API=https://api.sombus.rnd-solutions.net/v1/tenants/$WORKSPACE
curl -s -X POST $API/validate -H "Authorization: Bearer $TOKEN" \
-H 'content-type: application/json' --data-binary @msg.json # dry run: publishes nothing
curl -s -X POST $API/messages -H "Authorization: Bearer $TOKEN" \
-H 'content-type: application/json' --data-binary @msg.json # {"accepted":true,…}Done when
The bus answers {"accepted":true} and your story is in the portal’s Story timeline.
Mission 4 · 5 min
Play your part
Receive what your product consumes, or grade what it produces, and share what passed.
- Consumer: create a consumer connection before you publish (it receives only what is published after it is ready), then read your queue with the HTTPS pull API
- Skill executor: start a test run and read each case, expected against actual
- Producer: publish a whole story and check every verdict in Activity
- Share a results statement with a publisher, or by link
curl -s -H "Authorization: Bearer $CONSUMER_TOKEN" \
"https://api.sombus.rnd-solutions.net/v1/tenants/$WORKSPACE/consumers/$CONSUMER_ID/messages?wait=20"Done when
Your part works on the bus: a queue read, a whole story accepted, or a test run green, with a results statement that says exactly what passed.
After mission 4
You’re on the bus. Now make it your product’s.
Your workspace’s Overview keeps a checklist of these steps that ticks itself as you go. From here: run a whole story, handle every answer, and read the rules your consumers must follow.
Synthetic data only
The sandbox is for test traffic. Payloads are kept for up to 30 days (the replay archive) and never written to logs.
Results, not badges of honour
A results statement says exactly which cases passed against which suite. SOM defines no conformance tiers, so neither do we.
Stuck on a mission?
Press Ask RND on any portal page. An RND engineer replies by email.