> For the complete documentation index, see [llms.txt](https://v2.dataos.info/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://v2.dataos.info/references/v1/interfaces/apis/data-product-apis/api-reference/discover.md).

# Discover

Understand what a Data Product exposes: models, columns, semantic schema, lineage, and BI tool artifacts. Start here when onboarding a new consumer or building a catalog UI.

## Metadata

Retrieve Data Product metadata (model definitions, semantic schema, and lineage graph).

{% hint style="info" %}
**Fingerprint tip:** The `fingerprint` field changes whenever a new plan is applied. Cache it and compare to detect schema changes cheaply, so there's no need to diff the full response body.
{% endhint %}

<details>

<summary>GET /api/v1/metadata</summary>

**Summary:** Full product metadata

**Description:** Returns product info, all models with columns and types, the dependency graph (lineage), gateway config, and a `status` array showing freshness (`is_pending`, last run time, cron boundaries) for each model.

**cURL:**

{% code title="Full metadata" %}

```bash
curl -s https://$BASE_URL/api/v1/metadata \
  -H "Authorization: Bearer $TOKEN"
```

{% endcode %}

**Returns:** JSON object with `name`, `env`, `fingerprint`, `models[]` (name, kind, cron, columns), `graph` (nodes + edges), `gateway`, and `status[]` (one freshness entry per model).

**Key query params:** `minimal` (default `false`): when `true`, returns a slim catalog without `graph`, `missing_intervals`, `nominal_runs`, or `index`.

</details>

<details>

<summary>GET /api/v1/metadata/agreement</summary>

**Summary:** Usage agreement

**Description:** Markdown usage agreement configured for the Data Product. Returns `404` when no agreement text is configured.

**cURL:**

{% code title="Usage agreement" %}

```bash
curl -s https://$BASE_URL/api/v1/metadata/agreement \
  -H "Authorization: Bearer $TOKEN"
```

{% endcode %}

**Returns:** Markdown text of the usage agreement. **404** if none is configured.

</details>

<details>

<summary>GET /api/v1/metadata/semantic</summary>

**Summary:** Semantic schema

**Description:** Lightweight representation of the semantic layer (models, measures, dimensions, and named metrics). Use to populate a query builder or discover which metrics you can call via `/query/metric/{name}`.

**cURL:**

{% code title="Semantic schema" %}

```bash
curl -s https://$BASE_URL/api/v1/metadata/semantic \
  -H "Authorization: Bearer $TOKEN"
```

{% endcode %}

**Returns:** JSON object with `name`, `tenant`, `fingerprint`, and `models[]`; each model lists its `kind` (SEMANTIC or METRIC) and `columns[]` with `kind` (measure/dimension) and `name`.

</details>

<details>

<summary>GET /api/v1/metadata/odcs/{model_name}</summary>

**Summary:** ODCS v3.1.0 data contract

**Description:** Emits one model as an [Open Data Contract Standard (ODCS) v3.1.0](https://bitol-io.github.io/open-data-contract-standard/v3.1.0/) document, translated from the environment catalog. Response is JSON aligned with the [ODCS v3.1.0 JSON Schema](https://github.com/bitol-io/open-data-contract-standard/blob/main/schema/odcs-json-schema-v3.1.0.json).

**Path params:** `model_name`: fully qualified model name, e.g. `lenovo.sales.customer_orders_enriched`.

**cURL:**

{% code title="ODCS data contract" %}

```bash
curl -s https://$BASE_URL/api/v1/metadata/odcs/lenovo.sales.customer_orders_enriched \
  -H "Authorization: Bearer $TOKEN"
```

{% endcode %}

**Returns:** JSON document conforming to the ODCS v3.1.0 schema for the requested model.

</details>

<details>

<summary>GET /api/v1/metadata/odps/product</summary>

**Summary:** ODPS v1.0.0 data product

**Description:** Emits the whole Vulcan deployment as one [Open Data Product Standard (ODPS) v1.0.0](https://bitol-io.github.io/open-data-product-standard/v1.0.0/) document. Response is JSON aligned with the [ODPS v1.0.0 JSON Schema](https://github.com/bitol-io/open-data-product-standard/blob/main/schema/odps-json-schema-v1.0.0.json).

**cURL:**

{% code title="ODPS data product" %}

```bash
curl -s https://$BASE_URL/api/v1/metadata/odps/product \
  -H "Authorization: Bearer $TOKEN"
```

{% endcode %}

**Returns:** JSON document conforming to the ODPS v1.0.0 schema for the entire data product.

</details>

## Exports

Download BI tool integration artifacts (Power BI, Tableau) generated during prod deployment.

<details>

<summary>GET /api/v1/metadata/exports/powerbi</summary>

**Summary:** Download Power BI artifact (.zip)

**Description:** Downloads Power BI connection files as a ZIP generated at the last prod deployment. Only available in the `prod` environment.

**cURL:**

{% code title="Power BI export" %}

```bash
curl -o powerbi.zip https://$BASE_URL/api/v1/metadata/exports/powerbi \
  -H "Authorization: Bearer $TOKEN"
```

{% endcode %}

**Returns:** Binary `application/zip` file. **404** if not in prod or artifact not yet generated.

</details>

<details>

<summary>GET /api/v1/metadata/exports/tableau</summary>

**Summary:** Download Tableau artifact (.zip)

**Description:** Same as the Power BI export but for Tableau connection files.

**cURL:**

{% code title="Tableau export" %}

```bash
curl -o tableau.zip https://$BASE_URL/api/v1/metadata/exports/tableau \
  -H "Authorization: Bearer $TOKEN"
```

{% endcode %}

**Returns:** Binary `application/zip` file. **404** if not in prod or artifact not yet generated.

</details>

<details>

<summary>POST /api/v1/metadata/exports/tableau/publish</summary>

**Summary:** Publish Tableau data source

**Description:** Publishes the product's semantic models to Tableau Cloud or Tableau Server as a single data source, using the Tableau artifact from the last prod deployment. The target project is created if missing; an existing data source with the same name is overwritten.

**cURL:**

{% code title="Publish to Tableau" %}

```bash
curl -s -X POST https://$BASE_URL/api/v1/metadata/exports/tableau/publish \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "server_address": "https://10ax.online.tableau.com",
    "site_id": "mysite",
    "token_name": "vulcan-publisher",
    "personal_access_token": "<personal-access-token>"
  }'
```

{% endcode %}

**Returns:** Confirmation of the publish. Credentials in the request body authenticate this call only; they are never stored, logged, or cached. Available only in `prod`.

</details>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://v2.dataos.info/references/v1/interfaces/apis/data-product-apis/api-reference/discover.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
