{"version":1,"pages":[{"id":"OSItFHfrWOjSafhEVlzu","title":"Overview","pathname":"/","siteSpaceId":"sitesp_iljal","description":"ODD is an open-source, community-driven data discovery platform — ML-first, end-to-end microservices lineage, flexible data quality integration, and catalogs ML experiment metadata and lineage.","breadcrumbs":[{"label":"Introduction"}]},{"id":"PIw1WTcciWAVyiIUbPgI","title":"Main Concepts","pathname":"/introduction/main-concepts","siteSpaceId":"sitesp_iljal","description":"Core vocabulary and mental model for the Open Data Discovery project — what the pieces are, how they fit together, and where to dive deeper.","breadcrumbs":[{"label":"Introduction"}]},{"id":"yw67x1R28CrnYvB28j7I","title":"Architecture","pathname":"/introduction/architecture","siteSpaceId":"sitesp_iljal","description":"The structural mental model of an Open Data Discovery deployment — five-stage data flow, the components that run where, and the architectural concerns that cross every component.","breadcrumbs":[{"label":"Introduction"}]},{"id":"933itBE571SZmk23zytq","title":"Overview","pathname":"/features/features","siteSpaceId":"sitesp_iljal","description":"One-page index of ODD Platform's most important features — a quick-scan surface that points each feature at its canonical home, API surface, and operator-configuration keys.","breadcrumbs":[{"label":"Features"}]},{"id":"KpJJ6sVIvWG8PcBnuum3","title":"Data Discovery","pathname":"/features/data-discovery","siteSpaceId":"sitesp_iljal","description":"Top-level UI section for the catalog's two entry paths — query-oriented Search and hierarchy-oriented Directory — surfaced together on the Catalog Overview page.","breadcrumbs":[{"label":"Features"}]},{"id":"W1JroSNWH6XFA7fJXsqy","title":"Catalog Overview page","pathname":"/features/data-discovery/catalog-overview","siteSpaceId":"sitesp_iljal","description":"The catalog's home page — a unified surface combining Search, Directory cards, Top tags, Domains, the per-class Entities report, Recommended quick-jumps, and (when auth on) Owner association.","breadcrumbs":[{"label":"Features"},{"label":"Data Discovery"}]},{"id":"B35HXlt3BcVGyKF3uvGc","title":"Directory","pathname":"/features/data-discovery/directory","siteSpaceId":"sitesp_iljal","description":"Directory — the browsable catalog. Walk down data source types → data sources → entity types → entities without typing a query.","breadcrumbs":[{"label":"Features"},{"label":"Data Discovery"}]},{"id":"IsLCx1H78GV2bszvoqj1","title":"Search and Filtering","pathname":"/features/data-discovery/search","siteSpaceId":"sitesp_iljal","description":"Search and Filtering — the catalog's query-oriented entry point. Free-text search across entity names plus seven faceted filters.","breadcrumbs":[{"label":"Features"},{"label":"Data Discovery"}]},{"id":"WOcWyM9nV1MQpIiIBuXD","title":"Data entity detail page","pathname":"/features/data-discovery/entity-detail-page","siteSpaceId":"sitesp_iljal","description":"The data entity detail page — composition of the Overview tab, class-driven panel matrix, badges, sidebar list truncation, and per-panel permission map. Where every catalog discovery lands.","breadcrumbs":[{"label":"Features"},{"label":"Data Discovery"}]},{"id":"UzByZOytJr9jhn4SjpzP","title":"Entity description","pathname":"/features/data-discovery/entity-description","siteSpaceId":"sitesp_iljal","description":"Operator-authored Markdown description on each data entity — the platform's primary free-text annotation, persisted verbatim and rendered through the same component as terms and columns.","breadcrumbs":[{"label":"Features"},{"label":"Data Discovery"}]},{"id":"p8MWTUXH3nn0AsnL1Uf5","title":"Custom metadata","pathname":"/features/data-discovery/custom-metadata","siteSpaceId":"sitesp_iljal","description":"Operator-curated metadata on data entities — a paired surface combining a deployment-wide field catalogue with per-entity value assignments. Surfaced on the entity's Overview tab.","breadcrumbs":[{"label":"Features"},{"label":"Data Discovery"}]},{"id":"3pQcCy3IAkbnGc5wFT2T","title":"Per-column annotation","pathname":"/features/data-discovery/per-column-annotation","siteSpaceId":"sitesp_iljal","description":"Per-column annotation on a dataset's Structure tab — description, tags, glossary terms, enum values, and business name editors on each column row, plus the write-path and UI caveats.","breadcrumbs":[{"label":"Features"},{"label":"Data Discovery"}]},{"id":"MT0KMRBdJH3i6FwINz0k","title":"Manual Object Tagging","pathname":"/features/data-discovery/tagging","siteSpaceId":"sitesp_iljal","description":"Manual Object Tagging — apply tags to data entities and columns; the read-side counterpart to Management → Tags.","breadcrumbs":[{"label":"Features"},{"label":"Data Discovery"}]},{"id":"RGQ9MUeHGzFg4Aq3EDpz","title":"Data Entity Groups & Domains","pathname":"/features/data-discovery/groups-domains","siteSpaceId":"sitesp_iljal","description":"Data Entity Groups + the Domain framing — logical containers for related entities, how the Domain flag surfaces them on the Catalog Overview, and the relationship to ML experiments.","breadcrumbs":[{"label":"Features"},{"label":"Data Discovery"}]},{"id":"yUYIyhOo8cPkEWTj2lzb","title":"Business names","pathname":"/features/data-discovery/business-names","siteSpaceId":"sitesp_iljal","description":"Business names for data entities and dataset fields — operator-assigned alternative names that surface alongside the original technical names everywhere the entity is rendered.","breadcrumbs":[{"label":"Features"},{"label":"Data Discovery"}]},{"id":"OJP7bWKjNqRO39FFKcsb","title":"Data Entity Statuses","pathname":"/features/data-discovery/statuses","siteSpaceId":"sitesp_iljal","description":"Data Entity Statuses — UNASSIGNED / DRAFT / STABLE / DEPRECATED / DELETED lifecycle on every catalogued entity, plus the soft-delete TTL configured by the platform's housekeeping job.","breadcrumbs":[{"label":"Features"},{"label":"Data Discovery"}]},{"id":"Mu0YSwRMTZs53hoxRDWy","title":"Data Entity Attachments","pathname":"/features/data-discovery/attachments","siteSpaceId":"sitesp_iljal","description":"Files (images, PDFs, CSVs, TXT) and remote-URL links attached to data entities for additional context. Storage backend is operator-configurable; the LOCAL default is ephemeral.","breadcrumbs":[{"label":"Features"},{"label":"Data Discovery"}]},{"id":"sVDeczGO4brKJQwo1dRp","title":"Vector Store metadata","pathname":"/features/data-discovery/vector-stores","siteSpaceId":"sitesp_iljal","description":"Vector Store cataloguing — datasets containing vector-typed columns recognised as a first-class dataset type, with per-column metadata reflecting the vector data type.","breadcrumbs":[{"label":"Features"},{"label":"Data Discovery"}]},{"id":"NxxsEIgzdAUGKophwh3i","title":"Dataset schema diff","pathname":"/features/data-discovery/schema-diff","siteSpaceId":"sitesp_iljal","description":"Dataset schema diff — visual side-by-side comparison of dataset schema revisions, with per-revision history and automatic alert raising for backwards-incompatible schema changes.","breadcrumbs":[{"label":"Features"},{"label":"Data Discovery"}]},{"id":"Zvz0LnlFn6IFYQNYfGdy","title":"Metadata stale","pathname":"/features/data-discovery/metadata-stale","siteSpaceId":"sitesp_iljal","description":"Per-entity orange icon shown when an entity has not been re-ingested for longer than `odd.data-entity-stale-period` (default 7 days) — signals possible collector or source-side issues.","breadcrumbs":[{"label":"Features"},{"label":"Data Discovery"}]},{"id":"mTnCClDcnk63x0SXZrFB","title":"Data Modelling","pathname":"/features/data-modelling","siteSpaceId":"sitesp_iljal","description":"Top-level UI section for data-modelling artefacts — Query Examples and Relationships / ERDs.","breadcrumbs":[{"label":"Features"}]},{"id":"RaZuhvQsGnqdTJwJD7b8","title":"Query Examples","pathname":"/features/data-modelling/query-examples","siteSpaceId":"sitesp_iljal","description":"Operator-curated SQL / KQL / Spark snippets attached to data entities and terms — the canonical \"how to use this dataset\" surface.","breadcrumbs":[{"label":"Features"},{"label":"Data Modelling"}]},{"id":"a6BAI8zLgVIrMGgUpOTc","title":"Relationships","pathname":"/features/data-modelling/relationships","siteSpaceId":"sitesp_iljal","description":"Entity-to-entity relationships in the catalog — ERD edges from foreign keys and graph edges between graph-store nodes.","breadcrumbs":[{"label":"Features"},{"label":"Data Modelling"}]},{"id":"AgXpI6MV2bodT0LhRYva","title":"Master Data Management","pathname":"/features/master-data-management","siteSpaceId":"sitesp_iljal","description":"Master Data Management aspect of Data Governance — operator-curated reference data managed inside the platform.","breadcrumbs":[{"label":"Features"}]},{"id":"li3ogE32l8OuYRbvqxtL","title":"Lookup Tables","pathname":"/features/master-data-management/lookup-tables","siteSpaceId":"sitesp_iljal","description":"Operator-curated reference tables managed inside the ODD Platform — schema, data, RBAC, and API surface.","breadcrumbs":[{"label":"Features"},{"label":"Master Data Management"}]},{"id":"jVZEylKrdzmI2HSaXO71","title":"Data Quality","pathname":"/features/data-quality","siteSpaceId":"sitesp_iljal","description":"Catalog-side data-quality signals — test results from Great Expectations / dbt / odd-collector-profiler / custom frameworks, the cross-catalog Quality Dashboard, and dataset SLA statuses.","breadcrumbs":[{"label":"Features"}]},{"id":"bcTDr2bu5Ru2qpPcWyvs","title":"Test Results Import","pathname":"/features/data-quality/test-results-import","siteSpaceId":"sitesp_iljal","description":"How DQ test results land in ODD — push-client integrations with Great Expectations and dbt, statistical profiles via odd-collector-profiler, and the custom-framework ingestion endpoint.","breadcrumbs":[{"label":"Features"},{"label":"Data Quality"}]},{"id":"zMyXdawdIGYja0z6vCvx","title":"Quality Dashboard","pathname":"/features/data-quality/dashboard","siteSpaceId":"sitesp_iljal","description":"The catalog-wide Data Quality Dashboard at /data-quality — three breakdown rings, six anomaly-class metrics, and the per-side filter sets for tables and tests.","breadcrumbs":[{"label":"Features"},{"label":"Data Quality"}]},{"id":"EM2DSd83x93vyllTuQCT","title":"Dataset Quality Statuses (SLA)","pathname":"/features/data-quality/sla-statuses","siteSpaceId":"sitesp_iljal","description":"Operator-set Minor / Major / Critical severities on dataset test results, the dataset-level aggregate SLA colour, and the /sla (PNG) and /sla_report (JSON) endpoints for BI import.","breadcrumbs":[{"label":"Features"},{"label":"Data Quality"}]},{"id":"Ia3QB9HI5h2e1F64qz3M","title":"Test Run History","pathname":"/features/data-quality/test-run-history","siteSpaceId":"sitesp_iljal","description":"Per-test history of every individual run — every status, every duration, every status-reason diagnostic. The drill-in counterpart to the Quality Dashboard's tests-by-latest-status summary.","breadcrumbs":[{"label":"Features"},{"label":"Data Quality"}]},{"id":"W6LWaY0ZCa7k6yE00fil","title":"Data Lineage","pathname":"/features/data-lineage","siteSpaceId":"sitesp_iljal","description":"Top-level UI section for upstream / downstream lineage across the ODD entity model — both data-object lineage and microservices-tracing lineage.","breadcrumbs":[{"label":"Features"}]},{"id":"jq5LEIKgU1XcfgTLpibD","title":"Data Objects Lineage","pathname":"/features/data-lineage/data-objects","siteSpaceId":"sitesp_iljal","description":"Per-entity upstream / downstream lineage across the full ODD entity model, plus the dedicated group-lineage endpoint for Data Entity Groups and ML experiments.","breadcrumbs":[{"label":"Features"},{"label":"Data Lineage"}]},{"id":"ePXhUaPFsF6aPOTfXJz1","title":"Microservices Lineage","pathname":"/features/data-lineage/microservices","siteSpaceId":"sitesp_iljal","description":"Microservice call lineage — OpenTelemetry traces ingested through odd-tracing-gateway and rendered alongside data-object lineage.","breadcrumbs":[{"label":"Features"},{"label":"Data Lineage"}]},{"id":"HOU0e0BcKtBoKtNCJrIf","title":"Data Glossary","pathname":"/features/data-glossary","siteSpaceId":"sitesp_iljal","description":"Top-level UI section for the in-app Business Glossary — term entities, term-to-term linking, term-to-data-entity descriptive associations, ownership, and RBAC.","breadcrumbs":[{"label":"Features"}]},{"id":"NvBUy2zCAZ7HHHVB5hG9","title":"Business Glossary","pathname":"/features/data-glossary/business-glossary","siteSpaceId":"sitesp_iljal","description":"Full reference for the in-app Business Glossary — term entities, the Dictionary tab UI, namespace scoping, ownership and RBAC, term-to-term linking, and term-to-data-entity descriptive associations.","breadcrumbs":[{"label":"Features"},{"label":"Data Glossary"}]},{"id":"wx1LNfbXNQUtPTEyu1xm","title":"Active platform features","pathname":"/features/active-platform-features","siteSpaceId":"sitesp_iljal","description":"Platform behaviours where ODD is itself an actor — alerts, notifications, activity, discussions, AI assistance, metrics ingestion. Six opt-in subsystems, each independently configured.","breadcrumbs":[{"label":"Features"}]},{"id":"2JqPv23ZjP5FeXu5ytGv","title":"Alerting","pathname":"/features/active-platform-features/alerting","siteSpaceId":"sitesp_iljal","description":"Per-entity alerts for failed jobs, failed DQ tests, backwards-incompatible schema changes, and injected distribution anomalies — tracked through an OPEN → RESOLVED lifecycle with per-entity halt.","breadcrumbs":[{"label":"Features"},{"label":"Active platform features"}]},{"id":"B9PbTtGtm0G5RwCm9QFX","title":"Notifications","pathname":"/features/active-platform-features/notifications","siteSpaceId":"sitesp_iljal","description":"How alerts move in and out of ODD Platform — outbound through Slack incoming webhook, generic webhook, or SMTP email; inbound from Prometheus AlertManager as Distribution Anomaly alerts.","breadcrumbs":[{"label":"Features"},{"label":"Active platform features"}]},{"id":"U837fboEe9lBIteSMYDk","title":"Activity Feed","pathname":"/features/active-platform-features/activity-feed","siteSpaceId":"sitesp_iljal","description":"ODD Platform records every metadata change as a typed event on a global Activity feed and on per-entity Activity tabs — the catalog's audit trail and change-driven discovery surface.","breadcrumbs":[{"label":"Features"},{"label":"Active platform features"}]},{"id":"b9V4fCsfWSzTvCkx6ba0","title":"Data Collaboration","pathname":"/features/active-platform-features/data-collaboration","siteSpaceId":"sitesp_iljal","description":"In-app discussion threads anchored to specific data entities, with replies tracked back from a Slack workspace via OAuth + the Slack Events API. Per-entity scope; opt-in.","breadcrumbs":[{"label":"Features"},{"label":"Active platform features"}]},{"id":"p39dopqPJc89FYgusOad","title":"GenAI assistant","pathname":"/features/active-platform-features/genai","siteSpaceId":"sitesp_iljal","description":"GenAI assistant — proxy natural-language questions to an external AI service. API-only today; configuration, contract, and operator caveats.","breadcrumbs":[{"label":"Features"},{"label":"Active platform features"}]},{"id":"1uEPC5ZjbMeXD4weasdU","title":"Metrics Ingestion","pathname":"/features/active-platform-features/metrics-ingestion","siteSpaceId":"sitesp_iljal","description":"Push time-series metrics via `/ingestion/metrics` and surface them on each entity's Metrics tab — covers payload shape, two storage backends (PostgreSQL + Prometheus), and operator caveats.","breadcrumbs":[{"label":"Features"},{"label":"Active platform features"}]},{"id":"6r8xexh5C4zyGJWqf4gL","title":"Management","pathname":"/features/management","siteSpaceId":"sitesp_iljal","description":"The operator-facing surface for everything configured inside the platform UI — nine tabs covering data sources, integrations, collectors, ownership, RBAC, taxonomy, and namespacing.","breadcrumbs":[{"label":"Features"}]},{"id":"saEjOL3fj7xdaxgoGYSt","title":"Namespaces","pathname":"/features/management/namespaces","siteSpaceId":"sitesp_iljal","description":"Logical scoping unit across terms, tags, data sources, collectors, and entity groups — covers the CRUD lifecycle, the four-sister-service auto-create side-door, and the audit-silence caveat.","breadcrumbs":[{"label":"Features"},{"label":"Management"}]},{"id":"4elxDxqB0wwkaKmwFGLn","title":"Multilingual UI","pathname":"/features/multilingual-ui","siteSpaceId":"sitesp_iljal","description":"Seven locale translations for the ODD Platform UI shell — loaded at SPA bootstrap, switched via the toolbar, persisted per browser in localStorage. Operator-authored content stays verbatim.","breadcrumbs":[{"label":"Features"}]},{"id":"IK4rxpxXI78MFi4uZ9ad","title":"Overview","pathname":"/use-cases/use-cases","siteSpaceId":"sitesp_iljal","description":"Cross-role use-case index — data compliance for data scientists, safe deprecation for data engineers, DQ visibility for QA, BI preparation for viz engineers, pre-sales for consultants.","breadcrumbs":[{"label":"Use cases"}]},{"id":"PaEZy9duSzON6tbAipta","title":"Data compliance for Data Scientists","pathname":"/use-cases/use-cases/dc-data-compliance","siteSpaceId":"sitesp_iljal","description":"Data scientist walkthrough — using ODD Platform's catalogue search, tags, labels, and metadata to identify confidential data and develop GDPR-compliant ML models.","breadcrumbs":[{"label":"Use cases"},{"label":"Overview"}]},{"id":"YUS2IjLJdrAN2fSj7MAv","title":"Deprecation for Data Engineer \\ Analyst","pathname":"/use-cases/use-cases/de-deprecation","siteSpaceId":"sitesp_iljal","description":"Data engineer and analyst walkthrough — using ODD lineage and ownership to deprecate data objects safely, informing stakeholders, and mitigating downstream pipeline failure risk.","breadcrumbs":[{"label":"Use cases"},{"label":"Overview"}]},{"id":"UVnXPv0TMyAaiInmc4Ob","title":"Visibility for Data Quality Engineer","pathname":"/use-cases/use-cases/dq-visibility","siteSpaceId":"sitesp_iljal","description":"Data quality engineer walkthrough — ingesting Great Expectations, dbt tests, DataProfiler statistics, and custom DQ framework results into ODD Platform for cross-team visibility.","breadcrumbs":[{"label":"Use cases"},{"label":"Overview"}]},{"id":"8iqKcYR4gCjfAlpehwJC","title":"Data preparation for Visualization Engineer","pathname":"/use-cases/use-cases/viz-preparation","siteSpaceId":"sitesp_iljal","description":"Visualization engineer walkthrough — consulting ODD tags and metadata to predict BI-tool performance, set dashboard security levels, and prepare data for chart development.","breadcrumbs":[{"label":"Use cases"},{"label":"Overview"}]},{"id":"7tKHvg9slP3ULHoKXICO","title":"Service Provider and Pre-Sales","pathname":"/use-cases/use-cases/service-presales","siteSpaceId":"sitesp_iljal","description":"Service-provider and pre-sales consultant walkthrough — using the Platform API to gather a client's architectural landscape and toolset for better discovery-phase scope planning.","breadcrumbs":[{"label":"Use cases"},{"label":"Overview"}]},{"id":"u91bwzmDeZksGrrFg50r","title":"Overview","pathname":"/integrations/integrations","siteSpaceId":"sitesp_iljal","description":"Hub for every way metadata reaches the ODD Platform — pull adapters (collector-hosted), push adapters (in-process plugins, standalone gateways, direct SDK use).","breadcrumbs":[{"label":"Integrations"}]},{"id":"d3apWVIFTEmsNX7JgwJv","title":"odd-collector (generic)","pathname":"/integrations/integrations/odd-collector","siteSpaceId":"sitesp_iljal","description":"Generic ODD Collector — 41 pull adapters for databases, data warehouses, BI tools, streams, and MLOps platforms.","breadcrumbs":[{"label":"Integrations"},{"label":"Overview"}]},{"id":"ncxASJ5GK32LKAhlGxxq","title":"odd-collector-aws","pathname":"/integrations/integrations/odd-collector-aws","siteSpaceId":"sitesp_iljal","description":"AWS-services pull collector — 11 adapters for Glue, S3, Athena, Kinesis, SageMaker, and more.","breadcrumbs":[{"label":"Integrations"},{"label":"Overview"}]},{"id":"YxOXrFrPtCZLt6H5ld2Z","title":"odd-collector-azure","pathname":"/integrations/integrations/odd-collector-azure","siteSpaceId":"sitesp_iljal","description":"Azure-services pull collector — adapters for PowerBI, Azure SQL, Blob Storage, and Data Factory.","breadcrumbs":[{"label":"Integrations"},{"label":"Overview"}]},{"id":"x4SwziY1kIPc7sGUD3Mw","title":"odd-collector-gcp","pathname":"/integrations/integrations/odd-collector-gcp","siteSpaceId":"sitesp_iljal","description":"GCP-services pull collector — adapters for BigQuery, BigTable, Google Cloud Storage, and GCS Delta Lake tables.","breadcrumbs":[{"label":"Integrations"},{"label":"Overview"}]},{"id":"GRdaX3NjR3rvdClJD8TY","title":"odd-collector-profiler","pathname":"/integrations/integrations/odd-collector-profiler","siteSpaceId":"sitesp_iljal","description":"Statistical data-profiling collector — runs DataProfiler against datasets and pushes per-dataset statistics to the platform.","breadcrumbs":[{"label":"Integrations"},{"label":"Overview"}]},{"id":"Ku1Q8FjCCE1zLEqXQsdB","title":"odd-airflow-2","pathname":"/integrations/integrations/odd-airflow-2","siteSpaceId":"sitesp_iljal","description":"Airflow plugin that captures DAG, task, and task-run metadata via Airflow Listeners and pushes it to the ODD Platform.","breadcrumbs":[{"label":"Integrations"},{"label":"Overview"}]},{"id":"imPDx8sxlti6MNKdynvG","title":"odd-dbt","pathname":"/integrations/integrations/odd-dbt","siteSpaceId":"sitesp_iljal","description":"CLI push adapter that ingests dbt test results and model lineage into the ODD Platform.","breadcrumbs":[{"label":"Integrations"},{"label":"Overview"}]},{"id":"WMNmUIzbN0lnqCC3yzzX","title":"odd-spark-adapter","pathname":"/integrations/integrations/odd-spark-adapter","siteSpaceId":"sitesp_iljal","description":"Spark Listener that captures Spark job lineage and pushes it to the ODD Platform.","breadcrumbs":[{"label":"Integrations"},{"label":"Overview"}]},{"id":"9PgEPqSQ4aMzyHxyoF5U","title":"odd-great-expectations","pathname":"/integrations/integrations/odd-great-expectations","siteSpaceId":"sitesp_iljal","description":"Great Expectations checkpoint ValidationAction that pushes expectation results to the ODD Platform.","breadcrumbs":[{"label":"Integrations"},{"label":"Overview"}]},{"id":"zYppTFELq7rdM7uEofP0","title":"odd-cli","pathname":"/integrations/integrations/odd-cli","siteSpaceId":"sitesp_iljal","description":"Operator-side CLI for pushing local file metadata, running dbt ingestion, and managing platform tokens.","breadcrumbs":[{"label":"Integrations"},{"label":"Overview"}]},{"id":"IJz9FAXUHqq3sGF0LUbS","title":"odd-tracing-gateway","pathname":"/integrations/integrations/odd-tracing-gateway","siteSpaceId":"sitesp_iljal","description":"Optional standalone push-adapter service that ingests OpenTelemetry traces from operator microservices and exposes the inferred services as ODD entities for the Platform to pull.","breadcrumbs":[{"label":"Integrations"},{"label":"Overview"}]},{"id":"gkV8mKzMzkYKx99Oyjeq","title":"Ingestion filters","pathname":"/integrations/integrations/ingestion-filters","siteSpaceId":"sitesp_iljal","description":"Ingestion filters — collector-side regex include / exclude rules that scope what schemas, tables, files, datasets, or pipelines a plugin ingests. Configured per-plugin in `collector_config.yaml`.","breadcrumbs":[{"label":"Integrations"},{"label":"Overview"}]},{"id":"2PEwjY4GcdoNV42x29Fp","title":"Integration Wizard","pathname":"/integrations/integrations/integration-wizard","siteSpaceId":"sitesp_iljal","description":"The Integration Wizard — the in-app UI under Management → Integrations that generates collector_config.yaml snippets for the integrations the platform recognises.","breadcrumbs":[{"label":"Integrations"},{"label":"Overview"}]},{"id":"3hYbYjtMRgdStpNcIlde","title":"Deployment Options","pathname":"/configuration-and-deployment/deployment","siteSpaceId":"sitesp_iljal","description":"Pick a deployment path for ODD Platform and Collector — Docker Compose, Helm, AWS EKS, or from source — with step-by-step setup and pointers to the config deep-dives.","breadcrumbs":[{"label":"Configuration and Deployment"}]},{"id":"MKlqV1pTI3oDvZWH422t","title":"Try locally","pathname":"/configuration-and-deployment/trylocally","siteSpaceId":"sitesp_iljal","description":"Run ODD locally with docker-compose — a demo sandbox with the platform, sample database, lightweight pull collector, and metadata enricher. For production paths see Deployment Options.","breadcrumbs":[{"label":"Configuration and Deployment"}]},{"id":"DvzrPRAtzsVvNsECp0Y7","title":"Deploy to Amazon Elastic Kubernetes Service (EKS)","pathname":"/configuration-and-deployment/quick_launch_on_amazon_elastic_kubernetes_service","siteSpaceId":"sitesp_iljal","description":"Quick Launch of Open Data Discovery platform and collector on Amazon Elastic Kubernetes Service (EKS)","breadcrumbs":[{"label":"Configuration and Deployment"}]},{"id":"YH2ILihhfTPfYTyBhtw2","title":"Configure ODD Platform","pathname":"/configuration-and-deployment/odd-platform","siteSpaceId":"sitesp_iljal","description":"This section defines how to configure ODD Platform in order to leverage all of its functionality and features.","breadcrumbs":[{"label":"Configuration and Deployment"}]},{"id":"OOEoDUi54JgUySVhgq8S","title":"Health and monitoring","pathname":"/configuration-and-deployment/health-and-monitoring","siteSpaceId":"sitesp_iljal","description":"Wire liveness/readiness probes to ODD Platform's /actuator/health and scrape metrics from /actuator/prometheus — what the health verdict does and does not cover.","breadcrumbs":[{"label":"Configuration and Deployment"}]},{"id":"811LXa6yeuob4Qzqh7gH","title":"Collector secrets backend","pathname":"/configuration-and-deployment/collectors-secrets-backend","siteSpaceId":"sitesp_iljal","description":"Load collector secrets (Platform token, DB passwords, cloud credentials) from an external backend — AWS SSM today, pluggable for additional providers — instead of plaintext YAML.","breadcrumbs":[{"label":"Configuration and Deployment"}]},{"id":"nITfwoCGTgriSTRzutqD","title":"Enable security","pathname":"/configuration-and-deployment/enable-security","siteSpaceId":"sitesp_iljal","description":"ODD's two independent authentication surfaces — the UI/API surface (auth.type) and the ingestion endpoint (auth.ingestion.filter.enabled). Enabling one does not protect the other.","breadcrumbs":[{"label":"Configuration and Deployment"}]},{"id":"VyWoGylXJwxZE0OtuhGX","title":"Authentication","pathname":"/configuration-and-deployment/enable-security/authentication","siteSpaceId":"sitesp_iljal","description":"ODD Platform's four supported authentication mechanisms for the UI/API surface — Disabled, Login form, OAuth2/OIDC, and LDAP — plus the S2S API-key surface for programmatic clients.","breadcrumbs":[{"label":"Configuration and Deployment"},{"label":"Enable security"}]},{"id":"np5KDhNpTdMy7GVj4GID","title":"Disabled authentication","pathname":"/configuration-and-deployment/enable-security/authentication/disabled-authentication","siteSpaceId":"sitesp_iljal","description":"Disable platform authentication entirely — the default configuration for local deployments and demo sandboxes where no security is required.","breadcrumbs":[{"label":"Configuration and Deployment"},{"label":"Enable security"},{"label":"Authentication"}]},{"id":"a45VbdSVwPl83lC26nlX","title":"Login form","pathname":"/configuration-and-deployment/enable-security/authentication/login-form","siteSpaceId":"sitesp_iljal","description":"Simplest auth mode — username/password credentials via auth.login-form-credentials. All login-form users receive ADMIN privileges; not suitable for production deployments.","breadcrumbs":[{"label":"Configuration and Deployment"},{"label":"Enable security"},{"label":"Authentication"}]},{"id":"3jEERsO0CgiifMP2F0nb","title":"OAUTH2/OIDC","pathname":"/configuration-and-deployment/enable-security/authentication/oauth2-oidc","siteSpaceId":"sitesp_iljal","description":"Configure ODD Platform to authenticate users via OAuth2/OIDC against AWS Cognito, GitHub, Google, Azure AD, Okta, Keycloak, or any custom OIDC-compliant identity provider.","breadcrumbs":[{"label":"Configuration and Deployment"},{"label":"Enable security"},{"label":"Authentication"}]},{"id":"0EEFUPYfPM0hjHps4k3Q","title":"LDAP","pathname":"/configuration-and-deployment/enable-security/authentication/ldap","siteSpaceId":"sitesp_iljal","description":"Configure ODD Platform to authenticate users against an existing LDAP server, including group-to-role mapping and the cross-mode user-name collision caveat for multi-mode deployments.","breadcrumbs":[{"label":"Configuration and Deployment"},{"label":"Enable security"},{"label":"Authentication"}]},{"id":"oQl70gVAE8ssqaAdrHkV","title":"Server-to-server (S2S)","pathname":"/configuration-and-deployment/enable-security/authentication/s2s","siteSpaceId":"sitesp_iljal","description":"Configure server-to-server (S2S / M2M) API-key authentication for programmatic clients — CI/CD jobs, automation scripts, and non-human callers — alongside the configured interactive auth mode.","breadcrumbs":[{"label":"Configuration and Deployment"},{"label":"Enable security"},{"label":"Authentication"}]},{"id":"EZBaGGHcbsQzEBxKvwl4","title":"Authorization","pathname":"/configuration-and-deployment/enable-security/authorization","siteSpaceId":"sitesp_iljal","description":"ODD's RBAC model — permissions, policies, roles, owners, and user-owner association — centred on the user-identity / owner-identity bridge that resolves who-can-do-what.","breadcrumbs":[{"label":"Configuration and Deployment"},{"label":"Enable security"}]},{"id":"XKABSupuTUtsXzYlLkV9","title":"Policies","pathname":"/configuration-and-deployment/enable-security/authorization/policies","siteSpaceId":"sitesp_iljal","description":"Policies are JSON-defined permission grants attached to owners through roles. Reference for policy structure, JSON Schema validation, resources, conditions, and the permissions a statement can grant.","breadcrumbs":[{"label":"Configuration and Deployment"},{"label":"Enable security"},{"label":"Authorization"}]},{"id":"JW9xd9jz2SVGcz2YibAL","title":"Permissions","pathname":"/configuration-and-deployment/enable-security/authorization/permissions","siteSpaceId":"sitesp_iljal","description":"The five permission classes in ODD Platform — data entity, term, query example, lookup table, and management — with the full enumeration of permission keys and the surfaces each one gates.","breadcrumbs":[{"label":"Configuration and Deployment"},{"label":"Enable security"},{"label":"Authorization"}]},{"id":"mKlPBTLQdjlxsA3a2BXK","title":"Roles","pathname":"/configuration-and-deployment/enable-security/authorization/roles","siteSpaceId":"sitesp_iljal","description":"Roles bundle permissions. User roles (auth-chain-derived) versus Owner roles (operator-curated), and the precedence rule that resolves which wins for a given signed-in user.","breadcrumbs":[{"label":"Configuration and Deployment"},{"label":"Enable security"},{"label":"Authorization"}]},{"id":"00Bp0FcBuAoxkw4hORFf","title":"Owners","pathname":"/configuration-and-deployment/enable-security/authorization/owners","siteSpaceId":"sitesp_iljal","description":"Owners are catalog-side data-steward identities, distinct from authenticated users. Reference for the Owner CRUD model, Owner roles, and the operator caveats around lifecycle and audit.","breadcrumbs":[{"label":"Configuration and Deployment"},{"label":"Enable security"},{"label":"Authorization"}]},{"id":"VF8Q34md7FNeYkGMVN0Y","title":"User-owner association","pathname":"/configuration-and-deployment/enable-security/authorization/user-owner-association","siteSpaceId":"sitesp_iljal","description":"Link a signed-in user to an Owner entity for owner-scoped permissions — three write-paths — self-request, self-request with auto-approve, and admin direct-bind.","breadcrumbs":[{"label":"Configuration and Deployment"},{"label":"Enable security"},{"label":"Authorization"}]},{"id":"55X5JQPhP30oRJ3enCMm","title":"Admin promotion across providers","pathname":"/configuration-and-deployment/enable-security/admin-promotion","siteSpaceId":"sitesp_iljal","description":"Single reference for ADMIN-promotion divergence across the four auth modes and the six OAuth2 provider sub-shapes — the matrix, the per-provider knobs that look the same but behave differently.","breadcrumbs":[{"label":"Configuration and Deployment"},{"label":"Enable security"}]},{"id":"uN2y3uZks10rLSDr8CsC","title":"Audit trail scope","pathname":"/configuration-and-deployment/enable-security/audit-trail-scope","siteSpaceId":"sitesp_iljal","description":"ODD's bifurcated audit posture — what the platform records (activity feed + owner-association log), what it does not, and the compensating controls for SOX / HIPAA / GDPR / SOC2 reviews.","breadcrumbs":[{"label":"Configuration and Deployment"},{"label":"Enable security"}]},{"id":"ZAkOcejDn2u67p6zsBif","title":"Architectural Decision Log","pathname":"/developer-guides/architecture-decision-log","siteSpaceId":"sitesp_iljal","description":"Architecture Decision Records for ODD Platform — the significant decisions the codebase embodies, reconstructed from the source with the code evidence to verify each one.","breadcrumbs":[{"label":"Developer Guides"}]},{"id":"DuEBj3G1XnVMjUKUILil","title":"ADR-0001: Contract-first HTTP layer","pathname":"/developer-guides/architecture-decision-log/adr-0001-openapi-generated-controller-interfaces","siteSpaceId":"sitesp_iljal","description":"ODD Platform's REST controllers are thin delegates over OpenAPI-generated interfaces — the HTTP contract lives in the spec, and routes change by regenerating it, not by editing controllers.","breadcrumbs":[{"label":"Developer Guides"},{"label":"Architectural Decision Log"}]},{"id":"1UhjAAqfhyvmbW66jBGU","title":"ADR-0002: Centralised path-matcher authorization","pathname":"/developer-guides/architecture-decision-log/adr-0002-centralised-path-matcher-authorization","siteSpaceId":"sitesp_iljal","description":"ODD Platform centralises endpoint authorization in one path-matcher rule table — controllers carry no @PreAuthorize, so the entire access matrix lives in one auditable place.","breadcrumbs":[{"label":"Developer Guides"},{"label":"Architectural Decision Log"}]},{"id":"9CNPbP4whJSaKISe4e1Z","title":"ADR-0004: GenAI ships disabled by default","pathname":"/developer-guides/architecture-decision-log/adr-0004-genai-disabled-by-default","siteSpaceId":"sitesp_iljal","description":"ODD Platform ships GenAI off by default — a runtime guard rejects requests until an operator sets genai.enabled and supplies the url and timeout, which have no working defaults.","breadcrumbs":[{"label":"Developer Guides"},{"label":"Architectural Decision Log"}]},{"id":"TsFph8FLbWC9OOKyONCA","title":"ADR-0007: Uniform reactive controller pipeline","pathname":"/developer-guides/architecture-decision-log/adr-0007-uniform-reactive-controller-pipeline","siteSpaceId":"sitesp_iljal","description":"ODD Platform's reactive controllers share one shape — methods return Mono<ResponseEntity<T>> via ResponseEntity::ok, and error translation is centralised in a single advice class.","breadcrumbs":[{"label":"Developer Guides"},{"label":"Architectural Decision Log"}]},{"id":"LHMaIaKTIuCWRo7wFTyU","title":"ADR-0008: OpenAPI tags scope the generated API interfaces","pathname":"/developer-guides/architecture-decision-log/adr-0008-openapi-tag-per-resource-scoping","siteSpaceId":"sitesp_iljal","description":"Every ODD Platform OpenAPI operation carries exactly one tag, and the generator emits one Java interface per tag — so a tag is the unit that shapes the generated *Api interfaces.","breadcrumbs":[{"label":"Developer Guides"},{"label":"Architectural Decision Log"}]},{"id":"vXAtSPtJN9HVz0grcTdh","title":"ADR-0012: Attachment storage backend is selected at boot","pathname":"/developer-guides/architecture-decision-log/adr-0012-attachment-storage-backend-boot-selection","siteSpaceId":"sitesp_iljal","description":"ODD Platform picks its attachment storage backend at boot from attachment.storage — LOCAL is the implicit default, REMOTE is S3/MinIO, and switching backends needs a restart.","breadcrumbs":[{"label":"Developer Guides"},{"label":"Architectural Decision Log"}]},{"id":"6ZGerHQ0Ami3NHRjHd8t","title":"ADR-0018: Outbound-integration config is fail-fast at boot","pathname":"/developer-guides/architecture-decision-log/adr-0018-fail-fast-outbound-config-at-boot","siteSpaceId":"sitesp_iljal","description":"ODD Platform validates an outbound integration's config when its bean is built — a missing value fails startup, not the first message; an unconfigured channel is simply off.","breadcrumbs":[{"label":"Developer Guides"},{"label":"Architectural Decision Log"}]},{"id":"AmXQrypfslmllq7dP1oD","title":"ADR-0019: Data Collaboration ships disabled by default","pathname":"/developer-guides/architecture-decision-log/adr-0019-data-collaboration-disabled-by-default","siteSpaceId":"sitesp_iljal","description":"ODD Platform ships Data Collaboration off by default — a conditional gates the whole controller on datacollaboration.enabled, so every route returns 404 until an operator opts in.","breadcrumbs":[{"label":"Developer Guides"},{"label":"Architectural Decision Log"}]},{"id":"5oVYeraahLFDAnpIGrNh","title":"ADR-0020: Outbound Slack delivery is decoupled via a Postgres queue","pathname":"/developer-guides/architecture-decision-log/adr-0020-decoupled-outbound-slack-delivery","siteSpaceId":"sitesp_iljal","description":"ODD Platform accepts a Slack message with 202, persists it, and delivers it from a background worker that holds a Postgres advisory lock — so delivery needs no message broker, only Postgres.","breadcrumbs":[{"label":"Developer Guides"},{"label":"Architectural Decision Log"}]},{"id":"HK1fj0NMwbsVIg17C1aD","title":"ADR-0040: Notifications ship disabled by default behind one condition","pathname":"/developer-guides/architecture-decision-log/adr-0040-notifications-disabled-by-default","siteSpaceId":"sitesp_iljal","description":"ODD Platform ships notifications off by default — one Condition reads notifications.enabled and a single meta-annotation gates every component, so the whole subsystem turns on from one switch.","breadcrumbs":[{"label":"Developer Guides"},{"label":"Architectural Decision Log"}]},{"id":"edzGurxL3jeBWyDcBhYX","title":"ADR-0041: Notification channels activate by the presence of their keys","pathname":"/developer-guides/architecture-decision-log/adr-0041-notification-per-channel-presence-activation","siteSpaceId":"sitesp_iljal","description":"Each notification channel — Slack, webhook, email — turns on by the presence of its own config key; an unset key means no bean and no delivery, with no separate per-channel enable flag.","breadcrumbs":[{"label":"Developer Guides"},{"label":"Architectural Decision Log"}]},{"id":"6lFKgWbcdaRHPqDEOvse","title":"ADR-0042: Notification fan-out is fail-soft per channel","pathname":"/developer-guides/architecture-decision-log/adr-0042-notification-fail-soft-fan-out","siteSpaceId":"sitesp_iljal","description":"When ODD Platform fans an alert out to its notification channels, a failure in one channel is logged and the rest still receive it — one broken channel never blocks the others.","breadcrumbs":[{"label":"Developer Guides"},{"label":"Architectural Decision Log"}]},{"id":"5pmMsn2KRASKo0aypkEV","title":"ADR-0043: The notification WAL consumer is a leader-elected singleton","pathname":"/developer-guides/architecture-decision-log/adr-0043-notification-wal-single-leader","siteSpaceId":"sitesp_iljal","description":"ODD Platform consumes the Postgres WAL for notifications from one thread on one replica, elected by a Postgres advisory lock — so a multi-replica deployment emits each alert once, with no broker.","breadcrumbs":[{"label":"Developer Guides"},{"label":"Architectural Decision Log"}]},{"id":"2w4vWLB0s9qoAsXaL1Qb","title":"ADR-0044: Postgres replication artefacts are lazy-created, never dropped","pathname":"/developer-guides/architecture-decision-log/adr-0044-postgres-artefact-lazy-create-no-drop","siteSpaceId":"sitesp_iljal","description":"ODD Platform creates its notification replication slot and publication on first run if absent, but never drops them — cleanup is the operator's responsibility, by design.","breadcrumbs":[{"label":"Developer Guides"},{"label":"Architectural Decision Log"}]},{"id":"IqHorcHxOxHVbnmKCz8Y","title":"ADR-0021: Activity streams use cursor pagination","pathname":"/developer-guides/architecture-decision-log/adr-0021-activity-stream-cursor-pagination","siteSpaceId":"sitesp_iljal","description":"ODD Platform paginates its append-only activity streams by a (lastEventId, lastEventDateTime) cursor rather than offset/limit — list endpoints keep offset paging; the shape follows the data.","breadcrumbs":[{"label":"Developer Guides"},{"label":"Architectural Decision Log"}]},{"id":"rPg2LOfUe9WH0Ia1oNnq","title":"ADR-0022: Activity view-modes are a single enum parameter","pathname":"/developer-guides/architecture-decision-log/adr-0022-activity-view-modes-single-parameter","siteSpaceId":"sitesp_iljal","description":"The activity feed selects its view (all / my objects / upstream / downstream) with one ActivityType enum parameter dispatched server-side, rather than a separate endpoint per view.","breadcrumbs":[{"label":"Developer Guides"},{"label":"Architectural Decision Log"}]},{"id":"H3UrLgk5R4Y8Du2m9Qp8","title":"ADR-0028: High-volume tables are range-partitioned ahead of need","pathname":"/developer-guides/architecture-decision-log/adr-0028-range-partition-lifecycle","siteSpaceId":"sitesp_iljal","description":"ODD Platform creates range partitions ahead of need — one job runs at boot (Postgres advisory lock) and nightly (ShedLock), making double-width partitions per high-volume table.","breadcrumbs":[{"label":"Developer Guides"},{"label":"Architectural Decision Log"}]},{"id":"DWGPvOCP4vNPo9jcbSdi","title":"ADR-0045: Housekeeping is a separate subsystem from partition management","pathname":"/developer-guides/architecture-decision-log/adr-0045-housekeeping-partition-separation","siteSpaceId":"sitesp_iljal","description":"ODD Platform separates TTL row-cleanup (housekeeping) from partition creation; the one bridging task, dropping empty partitions, lives in housekeeping but calls the partition service.","breadcrumbs":[{"label":"Developer Guides"},{"label":"Architectural Decision Log"}]},{"id":"vKcp8kDbs5dnztwEDFPL","title":"ADR-0046: Housekeeping ships enabled by default (opt-out)","pathname":"/developer-guides/architecture-decision-log/adr-0046-housekeeping-opt-out-by-default","siteSpaceId":"sitesp_iljal","description":"ODD Platform ships data housekeeping on by default — it deletes aged rows out of the box, so bounded DB growth is the default posture and an operator must opt out to keep data indefinitely.","breadcrumbs":[{"label":"Developer Guides"},{"label":"Architectural Decision Log"}]},{"id":"IoMptiJTXEOJ5ef6hhjC","title":"ADR-0073: ODDRN is the universal identity for every entity","pathname":"/developer-guides/architecture-decision-log/adr-0073-oddrn-universal-identity","siteSpaceId":"sitesp_iljal","description":"Every entity carries a stable ODDRN string — the same ODDRN always means the same entity across ingests and producers, which is what makes idempotent ingestion and cross-system lineage possible.","breadcrumbs":[{"label":"Developer Guides"},{"label":"Architectural Decision Log"}]},{"id":"cwt5Lc1KM5iS60jbB69w","title":"ADR-0071: PostgreSQL is the only required runtime dependency","pathname":"/developer-guides/architecture-decision-log/adr-0071-postgres-only-runtime-dependency","siteSpaceId":"sitesp_iljal","description":"ODD Platform needs no broker, ZooKeeper, or Redis — queuing, leader election, notifications, lineage, and full-text search are all built on PostgreSQL, the only required runtime dependency.","breadcrumbs":[{"label":"Developer Guides"},{"label":"Architectural Decision Log"}]},{"id":"Cam9Vne6OvuiCa1h3J8k","title":"ADR-0070: Ingestion is one wire contract shared by pull and push producers","pathname":"/developer-guides/architecture-decision-log/adr-0070-pull-push-ingestion-contract","siteSpaceId":"sitesp_iljal","description":"Pull collectors poll on a schedule, push adapters emit on the source's cadence; both speak one ODD Specification contract, and the platform processes every payload identically.","breadcrumbs":[{"label":"Developer Guides"},{"label":"Architectural Decision Log"}]},{"id":"tt4YVlDMRcQtpwCPkbOn","title":"ADR-0072: The platform is a contract-first, reactive, two-language stack","pathname":"/developer-guides/architecture-decision-log/adr-0072-contract-first-reactive-stack","siteSpaceId":"sitesp_iljal","description":"ODD Platform is a reactive Spring WebFlux + R2DBC backend and a React/TypeScript SPA, with one OpenAPI contract generating both the server interfaces and the browser client.","breadcrumbs":[{"label":"Developer Guides"},{"label":"Architectural Decision Log"}]},{"id":"WxUrNAOdz7sKbf6ksBv7","title":"ADR-0003: The catalog is read-collaborative — only mutations are permission-gated","pathname":"/developer-guides/architecture-decision-log/adr-0003-read-collaborative-authorization","siteSpaceId":"sitesp_iljal","description":"Once authenticated, any ODD user can read the whole catalog — entities, lineage, search, activity. Only mutations are permission-gated; reads are authenticated-only by design.","breadcrumbs":[{"label":"Developer Guides"},{"label":"Architectural Decision Log"}]},{"id":"UkuplSpa3lLA6kNzYPTJ","title":"ADR-0058: Deletion is soft — DELETED is a status, not a row removal","pathname":"/developer-guides/architecture-decision-log/adr-0058-soft-delete-deletion-model","siteSpaceId":"sitesp_iljal","description":"Deleting a data entity sets its status to DELETED, not removing the row; list and search hide it, the detail view still shows it, and housekeeping physically purges it after a TTL.","breadcrumbs":[{"label":"Developer Guides"},{"label":"Architectural Decision Log"}]},{"id":"JTpSsMa9iDJW6SNtNZZY","title":"ADR-0074: Authentication is a pluggable mode selected by auth.type, defaulting to DISABLED","pathname":"/developer-guides/architecture-decision-log/adr-0074-pluggable-auth-modes","siteSpaceId":"sitesp_iljal","description":"Auth is one of four modes set by auth.type (DISABLED, LOGIN_FORM, OAUTH2, LDAP). It ships DISABLED, which is fully open — enable a real mode for any networked deployment.","breadcrumbs":[{"label":"Developer Guides"},{"label":"Architectural Decision Log"}]},{"id":"ZCYmBGVxoc5LXXuseMxi","title":"ADR-0075: Heavyweight features ship off by default; operational-hygiene jobs ship on","pathname":"/developer-guides/architecture-decision-log/adr-0075-feature-gating-posture","siteSpaceId":"sitesp_iljal","description":"Outbound features (GenAI, Data Collaboration, Notifications) ship disabled and need explicit wiring; housekeeping and other hygiene jobs ship enabled, keeping the database bounded.","breadcrumbs":[{"label":"Developer Guides"},{"label":"Architectural Decision Log"}]},{"id":"NuYyFI9bgC5zr2Lb3ddr","title":"ADR-0076: In-context concept help is an information icon in a hover tooltip","pathname":"/developer-guides/architecture-decision-log/adr-0076-inline-info-tooltip-affordance","siteSpaceId":"sitesp_iljal","description":"Inline help for an ambiguous label is a small information (i) icon wrapped in a hover tooltip carrying a short explanation - the platform's one established affordance, reused rather than reinvented.","breadcrumbs":[{"label":"Developer Guides"},{"label":"Architectural Decision Log"}]},{"id":"5uxflZ7DUmNkWJUU7Zeq","title":"ADR-0078: Editing a consequential field uses a change-preview confirmation that reduces into the store","pathname":"/developer-guides/architecture-decision-log/adr-0078-confirm-and-store-reduce-field-edits","siteSpaceId":"sitesp_iljal","description":"A field that drives downstream display or semantics (status, DQ severity) is edited via a change-preview confirmation that reduces the result into the store - never an optimistic instant save.","breadcrumbs":[{"label":"Developer Guides"},{"label":"Architectural Decision Log"}]},{"id":"3x2jEHddnkKJnsNbIHej","title":"API Reference","pathname":"/developer-guides/api-reference","siteSpaceId":"sitesp_iljal","description":"Canonical reference for the ODD Platform HTTP API — hub page with per-feature sub-pages plus the OpenAPI specifications and Swagger UI walkthrough that span the whole API.","breadcrumbs":[{"label":"Developer Guides"}]},{"id":"RaIaMYjXovxUwG3Os0Ga","title":"Alerts","pathname":"/developer-guides/api-reference/alerts","siteSpaceId":"sitesp_iljal","description":"Alert HTTP endpoints — global tab listings, per-entity listings, status mutation, halt-notification configuration, and the inbound AlertManager webhook.","breadcrumbs":[{"label":"Developer Guides"},{"label":"API Reference"}]},{"id":"oj7WZKaqI345pQ6bgvoa","title":"Data Collaboration","pathname":"/developer-guides/api-reference/data-collaboration","siteSpaceId":"sitesp_iljal","description":"Data Collaboration HTTP endpoints — outbound to the provider, per-entity threads & history, and the inbound Slack Events webhook. Gated by `@ConditionalOnDataCollaboration`.","breadcrumbs":[{"label":"Developer Guides"},{"label":"API Reference"}]},{"id":"TbpaUGx8ZMVEEvEZ9SWI","title":"Directory","pathname":"/developer-guides/api-reference/directory","siteSpaceId":"sitesp_iljal","description":"Directory HTTP endpoints — four `GET` calls under `/api/directory` backing the four-level drill-down (data source types → data sources → entity types → entities).","breadcrumbs":[{"label":"Developer Guides"},{"label":"API Reference"}]},{"id":"KyqkjA7C5YLkkv1t79WL","title":"GenAI","pathname":"/developer-guides/api-reference/genai","siteSpaceId":"sitesp_iljal","description":"GenAI HTTP endpoint — proxy natural-language questions to an external AI service through the platform's `POST /api/genai/ask`.","breadcrumbs":[{"label":"Developer Guides"},{"label":"API Reference"}]},{"id":"gygttk7VcQgRGNk5i2WD","title":"Glossary","pathname":"/developer-guides/api-reference/glossary","siteSpaceId":"sitesp_iljal","description":"Business Glossary HTTP endpoints — term CRUD + lookup, term-side and resource-side linkage, faceted search, ownership and tags.","breadcrumbs":[{"label":"Developer Guides"},{"label":"API Reference"}]},{"id":"tt4GsqPFhqzGoX4vLos5","title":"Integrations","pathname":"/developer-guides/api-reference/integrations","siteSpaceId":"sitesp_iljal","description":"Integration Wizard HTTP endpoints — list registered integrations and fetch their content blocks plus code snippets.","breadcrumbs":[{"label":"Developer Guides"},{"label":"API Reference"}]},{"id":"P1EyTb4aaNFHhGmjHcKj","title":"Lineage","pathname":"/developer-guides/api-reference/lineage","siteSpaceId":"sitesp_iljal","description":"Lineage HTTP endpoints — per-entity upstream / downstream graphs and group lineage, with `lineage_depth` and `expanded_entity_ids` query parameters.","breadcrumbs":[{"label":"Developer Guides"},{"label":"API Reference"}]},{"id":"702rZHPPUmhzjZloGIRa","title":"Query Examples","pathname":"/developer-guides/api-reference/query-examples","siteSpaceId":"sitesp_iljal","description":"Query Examples HTTP endpoints — CRUD, faceted search, and per-entity / per-term lookup and linking. 16 endpoints across three groups.","breadcrumbs":[{"label":"Developer Guides"},{"label":"API Reference"}]},{"id":"OHbwJcVUHm74TfBz0Dn3","title":"Reference Data","pathname":"/developer-guides/api-reference/reference-data","siteSpaceId":"sitesp_iljal","description":"Lookup Tables HTTP endpoints — Table CRUD, Column CRUD, Row CRUD, and faceted search. 16 endpoints under `/api/referencedata/`.","breadcrumbs":[{"label":"Developer Guides"},{"label":"API Reference"}]},{"id":"KY4kBbWRpwcxG8rFrkiM","title":"Relationships","pathname":"/developer-guides/api-reference/relationships","siteSpaceId":"sitesp_iljal","description":"Relationships HTTP endpoints — paginated list with type filter (ERD / GRAPH / ALL) plus per-type detail endpoints.","breadcrumbs":[{"label":"Developer Guides"},{"label":"API Reference"}]},{"id":"IivNgZG70HpnArcN0pQI","title":"How to contribute","pathname":"/developer-guides/how-to-contribute","siteSpaceId":"sitesp_iljal","description":"Developer guide for contribution to the OpenDataDiscovery","breadcrumbs":[{"label":"Developer Guides"}]},{"id":"gGW3CzCrPIncIpsNawzD","title":"GitHub organization overview","pathname":"/developer-guides/github-organization-overview","siteSpaceId":"sitesp_iljal","description":"Overview of all repositories inside of ODD GitHub organization","breadcrumbs":[{"label":"Developer Guides"}]},{"id":"tDHpM93jI3KmOlmVxhS0","title":"Build and run","pathname":"/developer-guides/build-and-run","siteSpaceId":"sitesp_iljal","description":"Build-and-run entry point for ODD developers — Platform backend + frontend, the ODD Collectors family, and the SDK path for authoring brand-new collectors / adapters.","breadcrumbs":[{"label":"Developer Guides"}]},{"id":"nf56saRu1eazdmxGBXCi","title":"Build and run ODD Platform","pathname":"/developer-guides/build-and-run/build-and-run-odd-platform","siteSpaceId":"sitesp_iljal","description":"Developer guide on how to build and run ODD Platform backend and frontend","breadcrumbs":[{"label":"Developer Guides"},{"label":"Build and run"}]},{"id":"1v6Cc2qQtbW9OpahkoPM","title":"Build and run ODD Collectors","pathname":"/developer-guides/build-and-run/build-and-run-odd-collectors","siteSpaceId":"sitesp_iljal","description":"Developer guide on how to build and run ODD Collectors","breadcrumbs":[{"label":"Developer Guides"},{"label":"Build and run"}]},{"id":"aVKwsQGP5Miunb0Pzvu9","title":"Build a custom collector","pathname":"/developer-guides/build-and-run/custom-collectors","siteSpaceId":"sitesp_iljal","description":"Build a custom ODD collector or adapter against the odd-collector-sdk.","breadcrumbs":[{"label":"Developer Guides"},{"label":"Build and run"}]}]}