{"openapi":"3.0.3","info":{"title":"DataShield Ontology","version":"0.22.175","description":"Public dataset registry + crawler management. Includes public read APIs, admin APIs (token), agent APIs (API key), and an MCP server."},"servers":[{"url":"https://library.myorg.ai"}],"paths":{"/api/public/datasets":{"get":{"summary":"Search datasets","description":"Full-text search over the dataset registry.","parameters":[{"name":"q","in":"query","schema":{"type":"string"}},{"name":"provider","in":"query","schema":{"type":"string"}},{"name":"tag","in":"query","schema":{"type":"string"}},{"name":"limit","in":"query","schema":{"type":"integer","default":50}},{"name":"offset","in":"query","schema":{"type":"integer","default":0}},{"name":"track","in":"query","schema":{"type":"string","enum":["0","1"]},"description":"If 1, increments search_hit_count for returned datasets."}],"responses":{"200":{"description":"Results","content":{"application/json":{"schema":{"type":"object","properties":{"datasets":{"type":"array","items":{"$ref":"#/components/schemas/DatasetListItem"}},"count":{"type":"integer","description":"Number of datasets in this page"},"totalCount":{"type":"integer","description":"Total matching datasets across all pages"},"hasMore":{"type":"boolean","description":"True if more pages exist beyond current offset + count"}}}}}}}}},"/api/public/datasets/{id}":{"get":{"summary":"Get dataset details","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Dataset","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DatasetDetail"}}}},"404":{"description":"Not found"}}}},"/api/events":{"post":{"summary":"Ingest a dataset event (agent-friendly)","security":[{"apiKey":[]},{"adminToken":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"datasetId":{"type":"string"},"eventType":{"type":"string"},"actor":{"type":"string"},"source":{"type":"string"},"metadata":{"type":"object"},"occurredAt":{"type":"string","format":"date-time"}},"required":["datasetId","eventType"]}}}},"responses":{"200":{"description":"OK"},"401":{"description":"Missing API key"},"403":{"description":"Invalid key"}}}},"/api/help/pages":{"get":{"summary":"List help pages","responses":{"200":{"description":"Help page index"}}}},"/api/help/pages/{slug}":{"get":{"summary":"Get help page","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Help page"},"404":{"description":"Not found"}}}},"/api/health":{"get":{"summary":"Health report (doctor)","responses":{"200":{"description":"OK"}}}},"/api/admin/config/test-db":{"post":{"summary":"Test DB connectivity and snapshot settings","security":[{"adminToken":[]}],"responses":{"200":{"description":"OK"},"401":{"description":"Unauthorized"}}}},"/api/admin/config/effective":{"get":{"summary":"Get effective config (bootstrap)","security":[{"adminToken":[]}],"responses":{"200":{"description":"Config"},"401":{"description":"Unauthorized"}}}},"/api/admin/config/save-file":{"post":{"summary":"Write local config file (server-side)","security":[{"adminToken":[]}],"responses":{"200":{"description":"OK"},"401":{"description":"Unauthorized"}}}},"/api/admin/db/reset":{"post":{"summary":"Reset registry schema (dangerous)","security":[{"adminToken":[]}],"responses":{"200":{"description":"OK"},"401":{"description":"Unauthorized"}}}},"/api/admin/logs/purge":{"post":{"summary":"Purge job logs","security":[{"adminToken":[]}],"responses":{"200":{"description":"OK"},"401":{"description":"Unauthorized"}}}},"/api/admin/api-keys":{"get":{"summary":"List API keys","security":[{"adminToken":[]}],"responses":{"200":{"description":"Keys"}}},"post":{"summary":"Create API key","security":[{"adminToken":[]}],"responses":{"200":{"description":"Created"}}},"delete":{"summary":"Revoke API key","security":[{"adminToken":[]}],"responses":{"200":{"description":"Revoked"}}}}},"components":{"securitySchemes":{"apiKey":{"type":"apiKey","in":"header","name":"x-api-key"},"adminToken":{"type":"apiKey","in":"header","name":"x-admin-token"}},"schemas":{"DatasetListItem":{"type":"object","properties":{"id":{"type":"string"},"provider":{"type":"string"},"title":{"type":"string","nullable":true},"description":{"type":"string","nullable":true},"publisher_name":{"type":"string","nullable":true},"landing_url":{"type":"string"},"tags":{"type":"array","items":{"type":"string"}},"discovered_at":{"type":"string"},"last_checked_at":{"type":"string","nullable":true},"last_changed_at":{"type":"string","nullable":true}},"required":["id","provider","landing_url","tags","discovered_at"]},"DatasetDetail":{"type":"object","properties":{"dataset":{"type":"object"},"resources":{"type":"array","items":{"type":"object"}},"fields":{"type":"array","items":{"type":"object"}},"analyticsProfiles":{"type":"array","items":{"type":"object"}}},"required":["dataset","resources"]}}}}