---
title: "Search workspace details"
method: GET
path: "/v1/workspaces/{workspaceId}/details"
tags: ["Details"]
---

# Search workspace details

`GET /v1/workspaces/{workspaceId}/details`

## Request

- Base URL: `https://external-api.pirros.com`
- URL: `https://external-api.pirros.com/v1/workspaces/{workspaceId}/details`
- Auth: OAuth 2
  - Client credentials
  - Token URL: `https://auth.pirros.com/oauth/token`

Search details in a workspace. Customer filters (detail_type, tag, revit_version, q) narrow the result and AND-combine with the credential authorization filters. `revit_version` matches the detail’s available-version set via the `availableRevitVersions` facet and is normalized to a 4-digit year. Cursor-paginated; the cursor is opaque and resets to the first page when the query filters change. (Date filtering on details — created_after/created_before — is deferred past v1: the Algolia details index has no numeric createdAt to range-filter.) An unrecognized revit_version (no standalone 4-digit year) matches nothing and returns an empty result — it is not rejected. Authorization-filter attribute support is path-dependent: a detail resource filter on project_id is honored on the GET-by-id path but rejected with 400 (UNSUPPORTED_ALGOLIA_ATTRIBUTE) on this search path, and created_at is unsupported on both.

## Path parameters

- `workspaceId` string, uuid, required

## Query parameters

- `q` string
- `detail_type` string
- `tag` string
- `revit_version` string
- `cursor` string
- `limit` string

## Response `200`

Detail search results

- ExternalDetailListResponse: Cursor-paginated detail search results
  - `response` object, required
    - `data` ExternalDetailDto[], required
      - `id` string, uuid, required
      - `project_id` string, uuid, required
      - `view_name` string, nullable, required
      - `title_on_sheet` string, nullable, required
      - `detail_type` string, required
      - `detail_number` string, nullable, required
      - `sheet_name` string, nullable, required
      - `sheet_number` string, nullable, required
      - `scale` string, nullable, required
      - `pdf_url` string, required
      - `revit_version` string, nullable, required
      - `has_2d_elements` boolean, required
      - `is_downloadable` boolean, required
      - `notes` string, nullable, required
      - `created_at` string, date-time, required
      - `updated_at` string, date-time, required
    - `next_cursor` string, nullable, required
    - `expanded` object, required
  - `meta` object, required
    - `request_id` string, uuid, required

## Other responses

- `400`: Invalid request (bad path param, query param, or cursor)
- `401`: Unauthorized (invalid or missing token)
- `403`: Forbidden (no resource filter grants access to this list)
- `429`: Rate limit exceeded (1000 requests per hour per client)
- `503`: External API temporarily disabled by operator kill switch (service_unavailable)

---

[API](https://skmtc.dev/pirros/apis/pirros-external-api.md) - [All operations](https://skmtc.dev/pirros/apis/pirros-external-api/llms.txt) - [OpenAPI document](https://skmtc.dev/pirros/apis/pirros-external-api/revisions/01c66b8d9fd1?raw)
