{"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://machinerealms.com/schemas/network-entity.schema.json","title":"Machine Realms Network Entity","type":"object","required":["version","entity_id","entity_type","name","status","operator_relation","authority","capabilities","protocols"],"properties":{"version":{"const":"1"},"entity_id":{"type":"string","pattern":"^[a-z0-9][a-z0-9:._-]{2,191}$"},"entity_type":{"enum":["agent","realm","service","tool","organization"]},"name":{"type":"string","minLength":1,"maxLength":200},"status":{"enum":["active","experimental","planned","unknown","inactive"]},"canonical_url":{"type":["string","null"],"format":"uri"},"operator_relation":{"enum":["first_party","same_operator","external","unknown"]},"realm_id":{"type":["string","null"]},"risk_class":{"enum":["low","moderate","high","restricted","unknown"]},"capabilities":{"type":"array","items":{"type":"string"},"uniqueItems":true},"protocols":{"type":"array","items":{"type":"object","required":["name","status"],"properties":{"name":{"type":"string"},"status":{"enum":["active","planned","unknown","not_applicable"]},"endpoint":{"type":["string","null"]},"version":{"type":["string","null"]},"claim_state":{"enum":["asserted"]},"claimed_status":{"enum":["active","planned","unknown","not_applicable"]}},"additionalProperties":false}},"authority":{"type":"object","required":["identity_implies_authority","capability_implies_authority","economic_authority_inherited"],"properties":{"identity_implies_authority":{"const":false},"capability_implies_authority":{"const":false},"economic_authority_inherited":{"const":false},"autonomous_economic_commitment":{"const":false}},"additionalProperties":false},"evidence":{"type":"array","items":{"type":"object","required":["claim","state","source"],"properties":{"claim":{"type":"string"},"state":{"enum":["asserted","observed","corroborated","unknown"]},"source":{"type":"string"},"observed_at":{"type":["string","null"],"format":"date-time"}},"additionalProperties":false}},"notes":{"type":["string","null"]}},"additionalProperties":false}