---
title: "Grant Dataset Access"
method: POST
path: "/v2/polaris/datasets/{dataset_id}/grant"
tags: ["Polaris"]
---

# Grant Dataset Access

`POST /v2/polaris/datasets/{dataset_id}/grant`

## Request

- Base URL: `https://api.carbonarc.co` (the document declares no server; this is the origin it was published from)
- URL: `https://api.carbonarc.co/v2/polaris/datasets/{dataset_id}/grant`
- Auth: none declared

Grant a principal read access to every table under a dataset SKU.

Idempotent. The catalog is taken from the request — it scopes table
resolution and the catalog-role name.

## Path parameters

- `dataset_id` string, required

## Request body

- GrantDatasetRequest
  - `principal_name` string, required
  - `catalog` string, required: Catalog the SKU belongs to (e.g. 'sample', 'bulk'). Scopes table resolution and the catalog-role name; no longer inferred from rows.
  - `lag` string, nullable: Lag of the dataset to grant access to. Omit (or null) for the no-lag variant — graph stores no-lag rows with lag=null.
  - `cut` string, nullable: Cut of the dataset to grant access to. Omit (or null) for the no-cut variant — graph stores no-cut rows with cut=null.

## Response `200`

Successful Response

- GrantDatasetResponse
  - `dataset_id` string, required
  - `principal_name` string, required
  - `principal_role` string, required
  - `catalog_role` string, required
  - `catalog` string, required
  - `tables_granted` integer, required
  - `tables_skipped` integer, required
  - `skipped_catalogs` string[], required

## Other responses

- `404`: sku_not_found: no tables are mapped to this SKU in the requested catalog. Terminal — CAMS abandons the DLQ row rather than re-driving it, so the slug must stay in the detail.
- `422`: Validation Error

---

[API](https://skmtc.dev/carbonarc/apis/carbon-arc-api-documentation.md) · [All operations](https://skmtc.dev/carbonarc/apis/carbon-arc-api-documentation/llms.txt) · [OpenAPI document](https://skmtc.dev/carbonarc/apis/carbon-arc-api-documentation/revisions/7362ca3a398d?raw)
