Upsert registry flows
Up to 200 public flows between an organization's components.
POST
/api/v1/admin/registry/flowsAdminAuthentication
Authorization: Bearer sa_… from a System Atlas admin. Any other key gets 403. Counts against the upload rate limit.
Parameters
Body
- organizationstringrequired
The organization's domain or website, as given to registry_upsert_organization
min 3 charsmax 300 chars - flowsobject[]requiredmin 1 itemmax 200 items
- flows[].fromstringrequired
Component id, clientId or label
min 1 charmax 200 chars - flows[].tostringrequiredmin 1 charmax 200 chars
- flows[].flowTypeenumrequiredmoneyinformationmaterialworkenergycontrol
- flows[].labelstringoptionalmax 200 chars
- flows[].directionenumoptionaldefault "one_way"one_waytwo_way
- flows[].confidenceenumoptionaldefault "high"
How sure the public evidence makes it: high (stated plainly) or low (implied)
highlow - flows[].sourceobjectoptional
- flows[].source.urlstringrequired
Public web address the finding rests on
min 1 charmax 500 chars - flows[].source.kindenumoptionaldefault "website"websitecareersjob_postpressreviewfilingregistry
- flows[].source.titlestringoptionalmax 200 chars
Request
curl -X POST "https://systematlas.org/api/v1/admin/registry/flows" \
-H "Authorization: Bearer sa_…" \
-H "content-type: application/json" \
-d '{"organization":"acmebuilders.example","flows":[{"from":"estimating","to":"project-management","flowType":"information","label":"approved budget"}]}'Response
200 with the result in data (abbreviated here). Errors are listed in Errors and limits.
Response
{
"data": {
"organization": {
"domain": "acmebuilders.example"
},
"results": [
{
"from": "estimating",
"to": "project-management",
"edgeId": "4b1e…",
"created": true
}
]
}
}Over MCP
The same call as an MCP tool: registry_upsert_flows.