---
title: "Get a file's content types and attributes"
method: GET
path: "/api/v3/files/{file_id}/facets"
tags: ["Facets"]
---

# Get a file's content types and attributes

`GET /api/v3/files/{file_id}/facets`

See what content types a file is classified under and what attribute values
have been set on it.

A file can be classified under **multiple content types** (e.g., both
`legal:contract:nda` and `compliance:audit-report`). Each classification
comes with its own set of **attribute values**, the metadata fields defined
in your content-type schema.

**Response structure:**

Each content type entry includes:
- `path`: the content type (e.g., `legal:contract:nda`)
- `label`: human-readable name
- `labels`: breadcrumb from root to leaf (`["Legal", "Contract", "NDA"]`)

Each attribute value includes:
- `name` / `label`: identifier and display name
- `value`: the current value (shape depends on type)
- `type`: the attribute type (`text`, `number`, `date`, `boolean`, `select`, `multi-select`)
- `choices`: available options for `select` / `multi-select`
- `required`: whether the attribute is required by the schema

The response includes `can_edit`, which indicates whether you have permission
to modify this file's classifications and attribute values.

**To modify:** use `POST /api/v3/files/{file_id}/facets` to classify,
set attribute values, or remove classifications.

**To set up content types first:** see `GET /api/v3/content-types/templates`
(browse starter templates) and `POST /api/v3/content-types` (adopt or create).

## Path parameters

- `file_id` integer, required

## Response `200`

- DocumentAttributesListResponse
  - `content_types` ContentTypeAttributesResponse[], required
    - `path` string, required — Canonical colon-separated content type path.
    - `code` string, required — Leaf node code (last segment of the path).
    - `label` string, required — Leaf label for the content type path.
    - `labels` string[]
    - `attributes` AttributeSchema[], required
      - `name` string, required — Attribute identifier in snake_case.
      - `label` string — Human-readable attribute label.
      - `value` union, required — Current attribute value. Shape depends on type: string, number, boolean, date string, or array of strings for multi-select. Null when unset.
        - string
        - integer
        - number
        - boolean
        - string[]
      - `type` string, required — Public attribute type, e.g. text, number, date, boolean, select, multi-select.
      - `required` boolean, required — Whether the attribute is required by the schema.
      - `description` string — Optional descriptive text from the schema.
      - `choices` string[] — Allowed values for select and multi-select attributes.
  - `can_edit` boolean, required
  - `unlinked` AttributeSchema[]
    - `name` string, required — Attribute identifier in snake_case.
    - `label` string — Human-readable attribute label.
    - `value` union, required — Current attribute value. Shape depends on type: string, number, boolean, date string, or array of strings for multi-select. Null when unset.
      - string
      - integer
      - number
      - boolean
      - string[]
    - `type` string, required — Public attribute type, e.g. text, number, date, boolean, select, multi-select.
    - `required` boolean, required — Whether the attribute is required by the schema.
    - `description` string — Optional descriptive text from the schema.
    - `choices` string[] — Allowed values for select and multi-select attributes.

## Other responses

- `401` — Authentication credentials were not provided or are invalid
- `404` — File not found or not accessible

---

[API](https://skmtc.dev/lighton/apis/lighton-api.md) · [All operations](https://skmtc.dev/lighton/apis/lighton-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/lighton/lighton-api/revisions/86c57e94ef15/schema)
