Skip to main content
The metagraph is Atlas’s living model of a system. Entities are the nodes (subsystems, components, interfaces, signals, and resources). Relationships are the directed edges connecting them. Together they form the structured representation Atlas reasons over. See Populating the System Metagraph for a workflow guide.

Endpoints

MethodPathDescription
GET/systems/{system_id}/metagraphGet the full metagraph for a system
GET/systems/{system_id}/entitiesList entities
GET/systems/{system_id}/entities/{entity_id}Get an entity
GET/systems/{system_id}/relationshipsList relationships
GET/systems/{system_id}/relationships/{relationship_id}Get a relationship
POST/systems/metagraphs/{system_id}/batch-saveBatch create/update/delete entities and relationships
PUT/systems/{system_id}/entities/{entity_id}/memoriesSet entity memories
GET/systems/{system_id}/entities/{entity_id}/memories/historyGet entity memory history
POST/systems/{system_id}/entities/{entity_id}/memories/restoreRestore entity memory version

Get full metagraph

GET /systems/{system_id}/metagraph Returns all entities and relationships for a system in a single response. Example request:
curl "https://spacex.atlas.arenaphysica.com/api/v1/systems/$SYSTEM_ID/metagraph" \
  -H "Authorization: Bearer $ATLAS_TOKEN"
Response fields:
FieldTypeDescription
system_idUUIDSystem identifier
system_namestringSystem display name
descriptionstringSystem description
entitiesarrayAll entity objects
relationshipsarrayAll relationship objects
Example response:
{
  "system_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "system_name": "Power Distribution Unit",
  "description": "24V DC power distribution system",
  "entities": [
    {
      "uuid": "b2c3d4e5-f6a7-8901-bcde-f12345678901",
      "entity_type": "COMPONENT",
      "name": "Battery Management IC",
      "description": "Monitors cell voltages and controls charge/discharge FETs"
    }
  ],
  "relationships": [
    {
      "uuid": "c3d4e5f6-a7b8-9012-cdef-123456789012",
      "relationship_type": "PROVIDES",
      "name": "BMS provides power rail",
      "source_entity_id": "b2c3d4e5-f6a7-8901-bcde-f12345678901",
      "target_entity_id": "d4e5f6a7-b8c9-0123-defa-234567890123"
    }
  ]
}

List entities

GET /systems/{system_id}/entities Query parameters:
ParameterRequiredTypeDescription
entity_typeNostringFilter by entity type (e.g. COMPONENT, SUBSYSTEM)
include_pendingNobooleanInclude pending entities. Defaults to false
external_idNostringFilter by external reference ID
Example request:
curl "https://spacex.atlas.arenaphysica.com/api/v1/systems/$SYSTEM_ID/entities" \
  -H "Authorization: Bearer $ATLAS_TOKEN"
Returns an array of entity objects.

Get an entity

GET /systems/{system_id}/entities/{entity_id} Example request:
curl "https://spacex.atlas.arenaphysica.com/api/v1/systems/$SYSTEM_ID/entities/$ENTITY_ID" \
  -H "Authorization: Bearer $ATLAS_TOKEN"
Returns a single entity object.

Entity object

FieldTypeNullableDescription
uuidUUIDNoEntity identifier
system_idUUIDNoParent system
entity_typestringNoEntity type enum value
namestringNoDisplay name
descriptionstringYesDescription
external_idstringYesExternal reference
attributesarrayNoList of attribute objects
artifactsarrayNoList of artifact references
memoriesstringNoEntity memory content (empty string if none)
memories_updated_atstringYesISO 8601 timestamp of last memory update
memories_contributorsarrayNoEmails of users who have written memories
is_deletedbooleanNoSoft-delete flag
is_pendingbooleanNoWhether entity is pending approval
created_bystringNoCreator email
created_atstringNoISO 8601 creation timestamp
updated_atstringNoISO 8601 last-update timestamp
Entity types:
ValueDescription
SYSTEMTop-level product or platform
SUBSYSTEMFunctional or organizational grouping
COMPONENTAtomic functional element
INTERFACEShared connection point or protocol
RESOURCEFinite consumable (power, bandwidth, etc.)
SIGNALInformation flow (measurements, commands, state)

List relationships

GET /systems/{system_id}/relationships Query parameters:
ParameterRequiredTypeDescription
relationship_typeNostringFilter by relationship type (e.g. CONTAINS, PROVIDES)
include_pendingNobooleanInclude pending relationships. Defaults to false
Example request:
curl "https://spacex.atlas.arenaphysica.com/api/v1/systems/$SYSTEM_ID/relationships" \
  -H "Authorization: Bearer $ATLAS_TOKEN"
Returns an array of relationship objects.

Get a relationship

GET /systems/{system_id}/relationships/{relationship_id} Example request:
curl "https://spacex.atlas.arenaphysica.com/api/v1/systems/$SYSTEM_ID/relationships/$REL_ID" \
  -H "Authorization: Bearer $ATLAS_TOKEN"
Returns a single relationship object.

Relationship object

FieldTypeNullableDescription
uuidUUIDNoRelationship identifier
system_idUUIDNoParent system
relationship_typestringNoRelationship type enum value
namestringNoEdge label
source_entity_idUUIDNoOrigin entity
target_entity_idUUIDNoDestination entity
descriptionstringYesDescription
external_idstringYesExternal reference
attributesarrayNoAttribute objects
artifactsarrayNoArtifact references
memoriesstringNoMemory content (empty string if none)
memories_updated_atstringYesISO 8601 memory update timestamp
memories_contributorsarrayNoContributor emails
is_deletedbooleanNoSoft-delete flag
is_pendingbooleanNoPending approval flag
created_bystringNoCreator email
created_atstringNoISO 8601 creation timestamp
updated_atstringNoISO 8601 last-update timestamp
Relationship types:
ValueDescription
CONTAINSHierarchical parent-to-child
DEPENDS_ONOperational dependency
CONNECTSPhysical or logical connection
PROVIDESSupplies a resource or signal
CONSUMESReceives a resource or signal
INFLUENCESCross-domain impact

Batch save

POST /systems/metagraphs/{system_id}/batch-save Create, update, or delete multiple entities and relationships in a single request. This is the recommended way to mutate the metagraph because it correctly increments the version number. Request body:
FieldRequiredTypeDescription
createsNoarrayEntity create objects (see below)
updatesNoarrayEntity update objects (must include id)
deletesNoarrayEntity UUIDs to delete
relationship_createsNoarrayRelationship create objects (see below)
relationship_updatesNoarrayRelationship update objects (must include id)
relationship_deletesNoarrayRelationship UUIDs to delete
base_versionNointegerIf provided, the save is rejected when the current version has advanced past this value (optimistic concurrency)
Entity create fields:
FieldRequiredTypeDescription
local_idYesstringTemporary client-side ID. Use this to reference newly created entities in relationship_creates within the same request
typeYesstringEntity type (SYSTEM, SUBSYSTEM, COMPONENT, INTERFACE, RESOURCE, SIGNAL)
nameYesstringDisplay name
parent_idsNoarray of stringIDs of parent entities
descriptionNostringHuman-readable description
propertiesNoobjectKey-value string pairs
Entity update fields:
FieldRequiredTypeDescription
idYesstringUUID of the entity to update
nameNostringUpdated display name
typeNostringUpdated entity type
parent_idsNoarray of stringUpdated parent IDs
descriptionNostringUpdated description
propertiesNoobjectUpdated key-value pairs (set a value to null to remove it)
Relationship create fields:
FieldRequiredTypeDescription
edge_typeYesstringRelationship type (CONTAINS, DEPENDS_ON, CONNECTS, PROVIDES, CONSUMES, INFLUENCES)
source_idYesstringOrigin entity UUID or local_id from creates
target_idYesstringDestination entity UUID or local_id from creates
nameNostringShort label for the edge
propertiesNoobjectKey-value string pairs
Relationship update fields:
FieldRequiredTypeDescription
idYesstringUUID of the relationship to update
relationship_typeNostringUpdated relationship type
nameNostringUpdated edge label
descriptionNostringUpdated description
propertiesNoobjectUpdated key-value pairs (set a value to null to remove it)
CONTAINS relationships cannot be created via relationship_creates. Instead, set parent_ids on the child entity in creates — Atlas will generate the CONTAINS edge automatically.
Example request:
curl -X POST "https://spacex.atlas.arenaphysica.com/api/v1/systems/metagraphs/$SYSTEM_ID/batch-save" \
  -H "Authorization: Bearer $ATLAS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "creates": [
      {"local_id": "pwr-mgmt", "type": "SUBSYSTEM", "name": "Power Management"},
      {"local_id": "vreg", "type": "COMPONENT", "name": "Voltage Regulator", "parent_ids": ["pwr-mgmt"]},
      {"local_id": "rail", "type": "RESOURCE", "name": "12V Rail"}
    ],
    "relationship_creates": [
      {
        "edge_type": "PROVIDES",
        "source_id": "vreg",
        "target_id": "rail",
        "name": "Voltage Regulator provides 12V Rail"
      }
    ]
  }'
Response fields:
FieldTypeDescription
versionintegerNew metagraph version number after save
entities_createdintegerNumber of entities created
entities_updatedintegerNumber of entities updated
entities_deletedintegerNumber of entities deleted
relationships_createdintegerNumber of relationships created
relationships_updatedintegerNumber of relationships updated
relationships_deletedintegerNumber of relationships deleted
Example response:
{
  "version": 7,
  "entities_created": 2,
  "entities_updated": 0,
  "entities_deleted": 0,
  "relationships_created": 1,
  "relationships_updated": 0,
  "relationships_deleted": 0
}

Set entity memories

PUT /systems/{system_id}/entities/{entity_id}/memories Replaces memory content for an entity. Writes are versioned automatically. Request body:
FieldRequiredTypeDescription
contentYesstringMemory content (markdown supported)
Example request:
curl -X PUT "https://spacex.atlas.arenaphysica.com/api/v1/systems/$SYSTEM_ID/entities/$ENTITY_ID/memories" \
  -H "Authorization: Bearer $ATLAS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "content": "Cell voltages drift above 85°C. BMS compensation firmware required above thermal threshold."
  }'
Response fields:
FieldTypeNullableDescription
contentstringNoCurrent memory content
updated_atstringYesISO 8601 timestamp of the last update
contributorsarray of stringNoEmails of users who have written to this memory
Example response:
{
  "content": "Cell voltages drift above 85°C. BMS compensation firmware required above thermal threshold.",
  "updated_at": "2026-04-13T11:00:00.000000",
  "contributors": ["engineer@example.com"]
}

Get entity memory history

GET /systems/{system_id}/entities/{entity_id}/memories/history Returns all previous versions of an entity’s memory document. Example request:
curl "https://spacex.atlas.arenaphysica.com/api/v1/systems/$SYSTEM_ID/entities/$ENTITY_ID/memories/history" \
  -H "Authorization: Bearer $ATLAS_TOKEN"
Response fields (array):
FieldTypeNullableDescription
versionintegerNoVersion number (1-indexed)
contentstringNoMemory content at this version
updated_atstringNoISO 8601 timestamp
restored_from_versionintegerYesVersion this was restored from, if applicable
Example response:
[
  {
    "version": 2,
    "content": "Cell voltages drift above 85°C. BMS compensation firmware required above thermal threshold.",
    "updated_at": "2026-04-13T11:00:00.000000",
    "restored_from_version": null
  },
  {
    "version": 1,
    "content": "Cell voltages drift above 85°C.",
    "updated_at": "2026-04-12T09:00:00.000000",
    "restored_from_version": null
  }
]

Restore entity memory version

POST /systems/{system_id}/entities/{entity_id}/memories/restore Rolls back an entity’s memory to a previous version. Creates a new version entry rather than overwriting history. Request body:
FieldRequiredTypeDescription
versionYesintegerVersion number to restore (must be ≥ 1)
Example request:
curl -X POST "https://spacex.atlas.arenaphysica.com/api/v1/systems/$SYSTEM_ID/entities/$ENTITY_ID/memories/restore" \
  -H "Authorization: Bearer $ATLAS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"version": 1}'
Returns the restored memory object with the same fields as Set entity memories.