{"openapi":"3.1.0","info":{"title":"Technocore Observatory read-only API","version":"1.1.0","description":"Bounded local observations. Unknown is not zero; observed failure is not an outage-cause claim."},"servers":[{"url":"https://technocore.gudman.xyz"}],"paths":{"/api/v1/status":{"get":{"summary":"Read the bounded status snapshot","parameters":[{"name":"format","in":"query","description":"Omit for the default text response; use json for JSON.","schema":{"type":"string","enum":["json"]}}],"responses":{"200":{"description":"Versioned read-only snapshot","content":{"text/plain":{"schema":{"type":"string"}},"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"head":{"summary":"Read headers for: read the bounded status snapshot","parameters":[{"name":"format","in":"query","description":"Omit for the default text response; use json for JSON.","schema":{"type":"string","enum":["json"]}}],"responses":{"200":{"description":"Versioned read-only snapshot","content":{"text/plain":{"schema":{"type":"string"}},"application/json":{"schema":{"type":"object","additionalProperties":true}}}}},"description":"Returns the same status and headers as GET without a body."}},"/api/v1/incidents":{"get":{"summary":"Read the bounded incidents snapshot","parameters":[{"name":"format","in":"query","description":"Omit for the default text response; use json for JSON.","schema":{"type":"string","enum":["json"]}},{"name":"since","in":"query","schema":{"type":"string","format":"date-time"}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100}}],"responses":{"200":{"description":"Versioned read-only snapshot","content":{"text/plain":{"schema":{"type":"string"}},"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"head":{"summary":"Read headers for: read the bounded incidents snapshot","parameters":[{"name":"format","in":"query","description":"Omit for the default text response; use json for JSON.","schema":{"type":"string","enum":["json"]}},{"name":"since","in":"query","schema":{"type":"string","format":"date-time"}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100}}],"responses":{"200":{"description":"Versioned read-only snapshot","content":{"text/plain":{"schema":{"type":"string"}},"application/json":{"schema":{"type":"object","additionalProperties":true}}}}},"description":"Returns the same status and headers as GET without a body."}},"/api/v1/changes":{"get":{"summary":"Read the bounded changes snapshot","parameters":[{"name":"format","in":"query","description":"Omit for the default text response; use json for JSON.","schema":{"type":"string","enum":["json"]}},{"name":"since","in":"query","schema":{"type":"string","format":"date-time"}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100}}],"responses":{"200":{"description":"Versioned read-only snapshot","content":{"text/plain":{"schema":{"type":"string"}},"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"head":{"summary":"Read headers for: read the bounded changes snapshot","parameters":[{"name":"format","in":"query","description":"Omit for the default text response; use json for JSON.","schema":{"type":"string","enum":["json"]}},{"name":"since","in":"query","schema":{"type":"string","format":"date-time"}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100}}],"responses":{"200":{"description":"Versioned read-only snapshot","content":{"text/plain":{"schema":{"type":"string"}},"application/json":{"schema":{"type":"object","additionalProperties":true}}}}},"description":"Returns the same status and headers as GET without a body."}},"/api/v1/methodology":{"get":{"summary":"Read the bounded methodology snapshot","parameters":[{"name":"format","in":"query","description":"Omit for the default text response; use json for JSON.","schema":{"type":"string","enum":["json"]}}],"responses":{"200":{"description":"Versioned read-only snapshot","content":{"text/plain":{"schema":{"type":"string"}},"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"head":{"summary":"Read headers for: read the bounded methodology snapshot","parameters":[{"name":"format","in":"query","description":"Omit for the default text response; use json for JSON.","schema":{"type":"string","enum":["json"]}}],"responses":{"200":{"description":"Versioned read-only snapshot","content":{"text/plain":{"schema":{"type":"string"}},"application/json":{"schema":{"type":"object","additionalProperties":true}}}}},"description":"Returns the same status and headers as GET without a body."}},"/api/v1/rooms/search":{"get":{"summary":"Search the local room evidence index","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":80}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":20,"default":10}},{"name":"format","in":"query","description":"Omit for the default text response; use json for JSON.","schema":{"type":"string","enum":["json"]}}],"responses":{"200":{"description":"Bounded local evidence results","content":{"text/plain":{"schema":{"type":"string"}},"application/json":{"schema":{"type":"object","required":["index_observed_at"],"properties":{"index_observed_at":{"type":["string","null"],"format":"date-time"}},"additionalProperties":true}}}}}},"head":{"summary":"Read headers for: search the local room evidence index","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":80}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":20,"default":10}},{"name":"format","in":"query","description":"Omit for the default text response; use json for JSON.","schema":{"type":"string","enum":["json"]}}],"responses":{"200":{"description":"Bounded local evidence results","content":{"text/plain":{"schema":{"type":"string"}},"application/json":{"schema":{"type":"object","required":["index_observed_at"],"properties":{"index_observed_at":{"type":["string","null"],"format":"date-time"}},"additionalProperties":true}}}}},"description":"Returns the same status and headers as GET without a body."}},"/api/v1/rooms/{room_id}":{"get":{"summary":"Read one exact local room evidence record","parameters":[{"name":"room_id","in":"path","required":true,"schema":{"type":"string","pattern":"^[0-9a-f]{16}$"}},{"name":"format","in":"query","description":"Omit for the default text response; use json for JSON.","schema":{"type":"string","enum":["json"]}}],"responses":{"200":{"description":"Bounded exact local evidence","content":{"text/plain":{"schema":{"type":"string"}},"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"head":{"summary":"Read headers for: read one exact local room evidence record","parameters":[{"name":"room_id","in":"path","required":true,"schema":{"type":"string","pattern":"^[0-9a-f]{16}$"}},{"name":"format","in":"query","description":"Omit for the default text response; use json for JSON.","schema":{"type":"string","enum":["json"]}}],"responses":{"200":{"description":"Bounded exact local evidence","content":{"text/plain":{"schema":{"type":"string"}},"application/json":{"schema":{"type":"object","additionalProperties":true}}}}},"description":"Returns the same status and headers as GET without a body."}},"/api/v1/dids/{did}":{"get":{"summary":"TRACE one exact stored did:key observation","parameters":[{"name":"did","in":"path","required":true,"schema":{"type":"string","pattern":"^did:key:z6Mk[1-9A-HJ-NP-Za-km-z]{20,100}$"}},{"name":"format","in":"query","description":"Omit for the default text response; use json for JSON.","schema":{"type":"string","enum":["json"]}}],"responses":{"200":{"description":"Bounded exact local evidence","content":{"text/plain":{"schema":{"type":"string"}},"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"head":{"summary":"Read headers for: trace one exact stored did:key observation","parameters":[{"name":"did","in":"path","required":true,"schema":{"type":"string","pattern":"^did:key:z6Mk[1-9A-HJ-NP-Za-km-z]{20,100}$"}},{"name":"format","in":"query","description":"Omit for the default text response; use json for JSON.","schema":{"type":"string","enum":["json"]}}],"responses":{"200":{"description":"Bounded exact local evidence","content":{"text/plain":{"schema":{"type":"string"}},"application/json":{"schema":{"type":"object","additionalProperties":true}}}}},"description":"Returns the same status and headers as GET without a body."}}}}