---
title: "Preview operations for a catalog API without importing"
method: GET
path: "/catalog/{api_id}/operations"
tags: ["catalog", "catalog"]
---

# Preview operations for a catalog API without importing

`GET /catalog/{api_id}/operations`

Server-side spec fetch + parse for the directory API preview.

Why this exists: the Detail Sheet wants to show the operation table for a
directory API without committing to a full import. Doing it server-side is
the only sane option — fetching the raw GitHub spec from the browser hits
CORS, plus we already have urllib + yaml plumbing here.

Returns the same `{data, total}` envelope as `GET /apis/{id}/operations`
so the UI can reuse the same renderer for both workspace and directory
APIs. Capped at `_PREVIEW_MAX_OPERATIONS` for huge specs (stripe-style).

## Path parameters

- `api_id` string, required — Catalog api_id to preview operations for

## Query parameters

- `offset` integer — Number of operations to skip (pagination).
- `limit` integer — Maximum operations to return after applying `offset`. The hard ceiling is 200; combined with `offset` it powers cheap load-more pagination from the Detail Sheet.
- `tag` string, nullable — Case-insensitive substring filter on `op.tags[]`. Filtering happens *before* counting, so `total` reflects the post-filter operation count and `truncated` is computed against the filtered list.

## Response `200`

Successful Response

- unknown

## Other responses

- `422` — Validation Error

## Changes

- **2026-05-29** `2f5d07712937` — 1 info
  - endpoint added
- **2026-04-13** `76e8f6063728` — 1 breaking
  - api path removed without deprecation

[Change history](https://skmtc.dev/jentic/apis/jentic-control-plane-api/changes/catalog/:api_id/operations/get.md)

---

[API](https://skmtc.dev/jentic/apis/jentic-control-plane-api.md) · [All operations](https://skmtc.dev/jentic/apis/jentic-control-plane-api/llms.txt) · [OpenAPI document](https://skmtc.dev/jentic/apis/jentic-control-plane-api/revisions/0d76c7617aae?raw)
