System Atlas

Upsert an industry schema

Primitives, parameters and connection types by key, into a new version that is published unless publish is false.

POST/api/v1/admin/registry/schemasAdmin

Authentication

Authorization: Bearer sa_… from a System Atlas admin. Any other key gets 403. Counts against the upload rate limit.

Parameters

Body

  • industrystringrequired

    Taxonomy node the schema (baseline) belongs to

    min 1 charmax 80 charspattern ^[a-z0-9_]+$
  • primitivesobject[]optionaldefault []
    max 200 items
  • primitives[].keystringrequired
    min 1 charmax 80 charspattern ^[a-z0-9_]+$
  • primitives[].labelstringrequired
    min 1 charmax 120 chars
  • primitives[].layerenumrequired
    peopleprocesssoftwaredatadecisions
  • primitives[].parentstringoptional

    Parent primitive key (a part of the business)

    min 1 charmax 80 charspattern ^[a-z0-9_]+$
  • primitives[].descriptionstringoptional
    max 2000 chars
  • primitives[].sortOrdernumberoptional
    ≥ 0≤ 10000
  • primitives[].parametersobject[]optionaldefault []
    max 50 items
  • primitives[].parameters[].keystringrequired
    min 1 charmax 80 charspattern ^[a-z0-9_]+$
  • primitives[].parameters[].labelstringrequired
    min 1 charmax 120 chars
  • primitives[].parameters[].typeenumoptionaldefault "text"
    textnumbermoneypercentbooleanenumdate
  • primitives[].parameters[].unitstringoptional
    max 40 chars
  • primitives[].parameters[].optionsstring[]optional
    max 50 items
  • primitives[].parameters[].descriptionstringoptional
    max 2000 chars
  • connectionTypesobject[]optionaldefault []
    max 100 items
  • connectionTypes[].keystringrequired
    min 1 charmax 80 charspattern ^[a-z0-9_]+$
  • connectionTypes[].labelstringrequired
    min 1 charmax 120 chars
  • connectionTypes[].flowTypeenumrequired
    moneyinformationmaterialworkenergycontrol
  • connectionTypes[].fromLayerenumoptional
    peopleprocesssoftwaredatadecisions
  • connectionTypes[].toLayerenumoptional
    peopleprocesssoftwaredatadecisions
  • connectionTypes[].descriptionstringoptional
    max 2000 chars
  • notesstringoptional

    What changed in this version

    max 4000 chars
  • publishbooleanoptionaldefault true

    Publish the version so new organizations map against it

Request

curl -X POST "https://systematlas.org/api/v1/admin/registry/schemas" \
  -H "Authorization: Bearer sa_…" \
  -H "content-type: application/json" \
  -d '{"industry":"construction","primitives":[{"key":"winning_work","label":"Winning work","layer":"process"},{"key":"estimating","label":"Estimating","layer":"process","parent":"winning_work","parameters":[{"key":"estimating_method","label":"Estimating method","type":"enum","options":["spreadsheet","estimating software","outsourced"]}]}],"connectionTypes":[{"key":"quote_handoff","label":"Quote hand-off","flowType":"information"}]}'

Response

200 with the result in data (abbreviated here). Errors are listed in Errors and limits.

Response
{
  "data": {
    "industry": {
      "key": "construction",
      "name": "Construction"
    },
    "version": 4,
    "status": "published",
    "changed": true,
    "results": [
      {
        "kind": "primitive",
        "key": "winning_work",
        "status": "unchanged"
      },
      {
        "kind": "primitive",
        "key": "estimating",
        "status": "updated"
      },
      {
        "kind": "parameter",
        "key": "estimating.estimating_method",
        "status": "created"
      },
      {
        "kind": "connectionType",
        "key": "quote_handoff",
        "status": "unchanged"
      }
    ]
  }
}

Over MCP

The same call as an MCP tool: registry_upsert_schema.