---
title: "Get Capability"
method: GET
path: "/api/marketplace/capabilities/{object_id}"
tags: ["marketplace"]
---

# Get Capability

`GET /api/marketplace/capabilities/{object_id}`

## Request

- Base URL: `https://app.thinqos.com` (the document declares no server; this is the origin it was published from)
- URL: `https://app.thinqos.com/api/marketplace/capabilities/{object_id}`
- Auth: none declared

One capability's detail frame: generic facts plus typed sections.

## Path parameters

- `object_id` string, uuid, required

## Headers

- `x-impersonate-identity-id` string, nullable

## Response `200`

Successful Response

- MarketplaceCapabilityDetailOut
  - `id` string, uuid, required
  - `type_code` string, required
  - `slug` string, required
  - `name` string, required
  - `description` string, required
  - `publisher` string, nullable
  - `publisher_id` string, uuid, nullable
  - `origin` string, required
  - `source_kind` string, required
  - `visibility` string, required
  - `current_version_id` string, uuid, nullable
  - `current_version_no` integer, nullable
  - `current_upstream_version` string, nullable
  - `capabilities` string[]
  - `side_effects` string[]
  - `domain_ids` string[]
  - `domain_names` string[]
  - `rating_avg` number, nullable
  - `rating_count` integer
  - `my_stars` integer, nullable
  - `holder_count` integer
  - `import_status` string
  - `import_error` string, nullable
  - `held` boolean
  - `held_object_id` string, uuid, nullable
  - `held_object_kind` string, nullable
  - `mine` boolean
  - `ratable` boolean
  - `icon_url` string, nullable
  - `held_back` MarketplaceHeldBackOut: This holder is pinned behind current because current asks for more. TOS-3713 shipped the hold itself: a new version that declares tools or capabilities beyond what the holder approved is NOT adopted, and the holder keeps running the version they consented to rather than being widened silently. That is the right behaviour and it was completely invisible, readable only by diffing two version ids nothing exposed. Present only for the consent-widening case. A ``pinned`` update policy and an owner reading their own object also leave a non-current version in play, and neither is something to ask anyone to accept.
    - `held_version_no` integer, nullable
    - `current_version_no` integer, nullable
    - `added_tools` string[]
    - `added_capabilities` string[]
    - `kind` 'consent' | 'permission_offer'
    - `added_permissions` string[]
  - `acquire` MarketplaceAcquireOut: How the shell acquires this object, resolved per type. ``family`` is the only thing the frontend dispatches on, against its own per-family client map. The shell knows no endpoint paths by type.
    - `family` string, required
    - `coordinates` object
    - `available` boolean
    - `unavailable_reason` string, nullable
    - `releasable` boolean
    - `release_unavailable_reason` string, nullable
    - `inputs` MarketplaceAcquireInputOut[]
      - `name` string, required
      - `label` string, required
      - `kind` string
      - `required` boolean
      - `choices` array[]
        - unknown[]
          - unknown
      - `help_text` string, nullable
    - `consent` MarketplaceAcquireConsentOut: What acquiring this object grants, shown BEFORE the acquire call.
      - `summary` array[]
        - unknown[]
          - unknown
      - `scopes` string[]
      - `tools` string[]
  - `maintenance` MarketplaceMaintenanceOut: Upkeep the OWNER may perform on their own copy (TOS-3743). Distinct from acquiring: these actions do not change who holds a capability, they repair or refresh the definition the caller already owns. The three the retired Skills surface offered (refresh from source, retry a failed import, dismiss a failed import) were the initial vocabulary; TOS-4595 added ``delete`` for a definition the caller authored themselves, which has no import provenance and so matched none of the other three. Which actions are OFFERED is decided entirely from generic ``objects`` columns (``imported_from``, ``import_status``, and ownership), so a type nobody has written code for inherits them the moment its rows carry the same provenance. Only WHICH ENDPOINT performs one is per-type, and that rides the same ``family`` the acquire plan already names, dispatched in the frontend's per-family client map. There is no branch on a type code on either side of the wire.
    - `family` string, required
    - `actions` string[]
  - `edit` MarketplaceEditOut: Whether/how the caller may edit this object (TOS-3861). ``family`` mirrors ``MarketplaceAcquireOut.family`` - the frontend dispatches edit/export/rollback calls through its own per-family client map, against the type's existing endpoints. There is no generic Marketplace write route.
    - `family` string, required
    - `can_edit` boolean, required
    - `can_rollback` boolean, required
    - `export_formats` string[]
  - `listing` MarketplaceListingOut: Who a listing is and what it costs (TOS-7352).
    - `subject_kind` string, required
    - `subject_name` string, required
    - `tagline` string, nullable
    - `price_label` string, nullable
    - `billing_mode` 'owner_pays' | 'caller_pays', nullable
    - `interview_enabled` boolean
    - `connectors` MarketplaceListingConnectorOut[]
      - `name` string, required
      - `icon_url` string, nullable
  - `needed_by` MarketplaceNeededByOut[]
    - `id` string, uuid, required
    - `name` string, required
  - `type_label_singular` string, required
  - `type_label_plural` string, required
  - `type_verb_acquire` string, required
  - `type_verb_release` string, required
  - `type_icon_name` string, nullable
  - `versions` MarketplaceVersionOut[]
    - `id` string, uuid, required
    - `version_no` integer, required
    - `upstream_version` string, nullable
    - `change_type` string, required
    - `observed_at` string, date-time, required
    - `is_current` boolean
    - `setup_id` string, uuid, nullable
    - `setup_label` string, nullable
  - `ratings` MarketplaceRatingOut[]
    - `identity_id` string, uuid, required
    - `rater_name` string, nullable
    - `stars` integer, required
    - `review` string, nullable
    - `updated_at` string, date-time, required
  - `sections` MarketplaceDetailSectionOut[]
    - `id` string, required
    - `title` string, required
    - `rows` array[]
      - unknown[]
        - unknown
    - `body` string, nullable
    - `chips` string[]
    - `caution` string, nullable
  - `connect_options` MarketplaceConnectOptionOut[]
    - `profile_id` string, uuid, required
    - `label` string, required
    - `auth_kind` string, required

## Other responses

- `422`: Validation Error

---

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