> For the complete documentation index, see [llms.txt](https://docs.opendatadiscovery.org/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.opendatadiscovery.org/developer-guides/api-reference/integrations.md).

# Integrations

The Integration Wizard's UI is the in-app consumer of two endpoints exposed by `IntegrationController.java`; you can call them directly to script integration-snippet generation. For the wizard purpose, the `META-INF/wizard/*.yaml` manifest registry, static-parameter substitution (today only `platform_url`), and the wizard-vs-`collector_config.yaml` boundary, see the [Integration Wizard](/integrations/integrations/integration-wizard.md) page.

| Method | Path                                 | Operation ID             | Purpose                                                                                                                                                                                                                                                                                                                                                 |
| ------ | ------------------------------------ | ------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `GET`  | `/api/integrations`                  | `getIntegrationPreviews` | Lists every integration registered on this platform (`IntegrationPreviewList` of `{id, name, description, installed}`). The `installed` flag is always `false` on every response — see the caveat below.                                                                                                                                                |
| `GET`  | `/api/integrations/{integration_id}` | `getIntegration`         | Returns the full `Integration` overview: the preview plus the ordered list of content blocks (each with title, content, and code snippets). Snippet arguments carry `parameter`, `name`, `type` (`INTEGER` / `STRING` / `BOOLEAN` / `FLOAT`), `isStatic`, and — when static — `staticValue` resolved server-side (see the `platform_url` caveat below). |

{% hint style="warning" %}
**An unknown `{integration_id}` returns HTTP 204 No Content, not 404.** The OpenAPI specification declares only a `200` response for `getIntegration`, so a generated client typically expects either a body or a `404`. When the id is not in the registry the platform returns an empty `204` instead. Treat an empty `204` from this endpoint as "no such integration" and do not assume a missing integration surfaces as `404`.
{% endhint %}

{% hint style="warning" %}
**The `installed` field is always `false` and never reflects real install state.** Although the specification marks `installed` as a required boolean, the platform hardcodes it to `false` on both the list and the overview responses — no code path ever sets it `true`, and the UI's "Integrated" badge consequently never renders. Do not build client logic that branches on this value; it carries no meaning today.
{% endhint %}

{% hint style="info" %}
**On a stock platform build `GET /api/integrations` returns `{ "items": [] }`.** The manifests that populate the registry are loaded from `META-INF/wizard/*.yaml` on the classpath, and the platform ships none — they arrive only through external classpath overlays. An empty list means no manifests were supplied, not that the endpoint failed. The registry mechanism is described on the [Integration Wizard feature page](/integrations/integrations/integration-wizard.md).
{% endhint %}

Two further behaviours are documented in depth on the [Integration Wizard feature page](/integrations/integrations/integration-wizard.md) and apply equally when you call these endpoints directly: the `staticValue` of `platform_url` falls back to the placeholder `http://your.odd.platform` when `odd.platform-base-url` is unset, and neither endpoint carries a per-resource permission (any authenticated user — or any caller under `auth.type=DISABLED` — can read the full registry, including the rendered `platform_url`).

## See also

* [API Reference hub](/developer-guides/api-reference.md) — the full per-feature index.
* [Integration Wizard](/integrations/integrations/integration-wizard.md) — feature description, manifest registry, static-parameter substitution.
