---
title: "Retrieve a product's frozen operation set"
method: GET
path: "/v1/products/{productId}/operation-set"
tags: ["Products"]
---

# Retrieve a product's frozen operation set

`GET /v1/products/{productId}/operation-set`

## Request

- Base URL: `https://hyperscale0.ai`
- URL: `https://hyperscale0.ai/v1/products/{productId}/operation-set`
- Auth: one of:
  - HTTP bearer
  - HTTP bearer

Returns the latest product build's tenant-visible public actions, setup operations, reads, and persisted digests. Read input and output schemas and setup output schemas come from the frozen Build. Input schemas may omit some constraints; the server still checks every input in full. Frozen setup ids absent from the current catalog appear in unresolvedSetupOperationIds and are omitted from setupOperations. The response never includes the internal execution steps.

## Path parameters

- `productId` string, required: Hyperscale product ID

## Headers

- `X-Hyperscale-Environment` 'sandbox' | 'live'

## Response `200`

Success

- ProductOperationSetRetrieveOutput
  - `status` 'frozen', required
  - `productBuildId` string, required: Hyperscale product build ID
  - `buildDigest` string, required: SHA-256 digest of the resolved product build closure
  - `tenantId` string, required: Organization tenant ID
  - `productId` string, required: Hyperscale product ID
  - `environment` 'sandbox' | 'live', required
  - `operations` object[], required
    - `operationId` string, required: Invocation identity, preserved independently of the display title.
    - `operationName` string, required
    - `kind` 'read' | 'setup' | 'action', required
    - `readKind` 'list' | 'retrieve' | 'none', required
    - `resourceKind` string, nullable, required
    - `idField` string, nullable, required: Compiler-resolved record identity; null for responses without record identity.
    - `inputSchema` object, required
    - `outputSchema` object, required
    - `recordSchema` object, nullable, required
    - `displayTitle` string, required
    - `actionExposure` object, nullable, required
      - `name` string, required
      - `target` string, required
    - `scopes` string[], required: Permission scopes required by the operation in the response's tenant, Product and environment.
  - `tenantSurfaceVersion` 3, required
  - `tenantOperationSetDigest` string, required: SHA-256 of the canonical frozen public action set
  - `publicActions` ProductPublicAction[], required (unresolved $ref)
  - `tenantReadOperationSetDigest` string, required: SHA-256 of the canonical frozen public action set
  - `tenantSetupOperationSetDigest` string, required: SHA-256 of the canonical frozen public action set
  - `readOperationIds` string[], required
  - `readOperations` object[], required
    - `operationId` string, required: Frozen setup operation id
    - `operationName` string, required
    - `outputSchema` object, required
    - `inputSchema` object, required: Input schema frozen with the Product Build. Server admission is authoritative.
  - `setupOperationIds` string[], required: Setup operation ids frozen with the Product Build.
  - `setupOperations` object[], required: Setup descriptors captured with the Product Build.
    - `operationId` string, required: Frozen setup operation id
    - `operationName` string, required
    - `outputSchema` object, required
    - `inputSchema` object, required: Input schema frozen with the Product Build. Server admission is authoritative.
  - `unresolvedSetupOperationIds` string[], required: Frozen setup operation ids absent from the current operation catalog. Their persisted membership remains valid, but no current name or input schema can be published.

## Other responses

- `default`: ErrorResponse. See x-error-codes and x-errors for codes, HTTP statuses and retry guidance.

---

[API](https://skmtc.dev/hyperscale0/apis/hyperscale-product-api.md) · [All operations](https://skmtc.dev/hyperscale0/apis/hyperscale-product-api/llms.txt) · [OpenAPI document](https://skmtc.dev/hyperscale0/apis/hyperscale-product-api/revisions/e9e8faa044d5?raw)
