Upsert registry components
Up to 200 public components with values, each on an open-web source. Re-sending a clientId updates it.
/api/v1/admin/registry/componentsAdminAuthentication
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 - itemsobject[]requiredmin 1 itemmax 200 items
- items[].clientIdstringoptional
Your stable id for this thing (e.g. repo path or tool slug). Re-uploading the same clientId updates instead of duplicating.
min 1 charmax 120 charspattern ^[\w.:/@-]+$ - items[].labelstringrequired
The company's own name for it: 'Payroll (Gusto)', 'Platform team'
min 1 charmax 200 chars - items[].descriptionstringoptional
One or two plain sentences: what it is, what it does
max 2000 chars - items[].layerenumoptionalpeopleprocesssoftwaredatadecisions
- items[].primitivestringoptional
Primitive key from get_mapping_guide, if you know it
max 80 chars - items[].parentstringoptional
Parent component: its clientId, label, or component id
min 1 charmax 200 chars - items[].kindenumoptionaldefault "internal"internalexternal
- items[].externalKindenumoptionalcustomersupplierpartnerregulatoreconomic_factor
- items[].valuesobject[]optionaldefault []max 50 items
- items[].values[].parameterstringrequiredmin 1 charmax 80 chars
- items[].values[].valuestring | number | booleanrequired
- items[].values[].sourceobjectoptional
Defaults to the component's source
- items[].values[].source.urlstringrequired
Public web address the finding rests on
min 1 charmax 500 chars - items[].values[].source.kindenumoptionaldefault "website"websitecareersjob_postpressreviewfilingregistry
- items[].values[].source.titlestringoptionalmax 200 chars
- items[].sourceobjectrequired
- items[].source.urlstringrequired
Public web address the finding rests on
min 1 charmax 500 chars - items[].source.kindenumoptionaldefault "website"websitecareersjob_postpressreviewfilingregistry
- items[].source.titlestringoptionalmax 200 chars
- items[].confidenceenumoptionaldefault "high"
How sure the public evidence makes it: high (stated plainly) or low (implied)
highlow
Request
curl -X POST "https://systematlas.org/api/v1/admin/registry/components" \
-H "Authorization: Bearer sa_…" \
-H "content-type: application/json" \
-d '{"organization":"acmebuilders.example","items":[{"clientId":"estimating","label":"In-house estimating team","primitive":"estimating","layer":"people","confidence":"high","source":{"url":"https://acmebuilders.example/careers/estimator","kind":"job_post"},"values":[{"parameter":"estimating_method","value":"estimating software"}]}]}'Response
200 with the result in data (abbreviated here). Errors are listed in Errors and limits.
{
"data": {
"organization": {
"domain": "acmebuilders.example",
"ref": "acme-builders-3f2a9c1d"
},
"placed": {
"given": 1,
"existing": 0,
"matched": 0,
"model": 0,
"parent": 0,
"custom": 0,
"failed": 0
},
"results": [
{
"clientId": "estimating",
"label": "In-house estimating team",
"primitive": "estimating",
"placedBy": "given",
"created": true,
"values": 1
}
]
}
}Over MCP
The same call as an MCP tool: registry_upsert_components.