---
title: "getSchemaCapability"
method: GET
path: "/v1/entity/schemas/capabilities/{composite_id}"
tags: ["Schemas"]
---

# getSchemaCapability

`GET /v1/entity/schemas/capabilities/{composite_id}`

Get a schema capability from given capability ID

## Path parameters

- `composite_id` string, required

## Response `200`

Success

- EntityCapabilityWithCompositeID — a readonly computed ID for the entity capability including schema slug and the capability ID
  - `id` string — ID for the entity capability
  - `name` string, required — Unique name for the capability
  - `title` string — Human readable title of the capability
  - `attributes` Attribute[] — unresolved $ref
  - `overridable_attribute` boolean — Allow conditional variants of the entity to override the values managed by this capability. Only meaningful on schemas that declare `conditions` and on capabilities that render an attribute group (`EntityAttributes:Group` ui hook), e.g. pricing tiers. Attributes carried by the capability opt in individually via their own `overridable_attribute` flag.
  - `_purpose` ClassificationId[]
  - `_manifest` string[], nullable — Manifest ID used to create/update the schema capabilility
  - `app_id` string — ID of the app if the capability is provided by an app
  - `adjust_installment` AdjustInstallmentCapabilityConfig — Configuration for adjusting a contract installment through a Journey.
    - `journey_id` string, required — ID of the Flow Journey to open when adjusting the installment.
  - `ui_config` object
    - `is_filterable` boolean — Whether the capability is filterable
  - `ui_hooks` object[]
    - `hook` string, required — name of the hook to use
    - `render_condition` string
    - `order` integer — render order (ascending)
    - `title` string
    - `group_expanded` boolean — Sets the group expand/collapse default state
    - `import` string — package to be imported
    - `component` string — the component to be dynamically loaded
    - `route` string — route for specified capability
    - `icon` string — Preview icon name(As in Base elements) for the capability
    - `disabled` boolean — Whether capability should be disabled
    - `header` boolean — Specific to Activity pilot
    - `requiredPermission` object — Require a permission to display UI hook
      - `action` string, required
      - `resource` string
    - `default_visible` boolean — Whether this widget is switched on by default for entity types that have the capability. Only meaningful on the `EntityDetailsV2:Widget` hook. Defaults to true when omitted. An admin's explicit choice in the entity builder is stored in the schema's `ui_config.widget_visibility` and wins over this.
    - `default_width` 'one_third_width' | 'half_width' | 'two_third_width' | 'full_width' — How wide this widget is by default in the entity-details widget grid. Only meaningful on the `EntityDetailsV2:Widget` and `EntityDetailsV2:Header` hooks. Defaults to `full_width` when omitted — deliberately unlike the attribute layout default of `half_width`, because a full-width widget can never leave a hole in a row. An admin's explicit choice in the entity builder is stored in the schema's `ui_config.widget_widths` and wins over this.
    - `pricing_tier_setting` string — The pricing-tier settings key an organisation must have enabled to use this widget. Omit for widgets available to everyone. Resolved against `GET /v2/pricing-tiers/me` as `override_settings[key].enabled ?? settings[key].enabled`. Note this is commercial packaging enforced in the UI, not a security control — the key must also be added to the pricing tier settings list in epilot-admin-portal, or it can never be switched on for a tier.
  - `feature_flag` string — This capability should only be active when the feature flag is enabled
  - `settings_flag` SettingFlag[] — This capability should only be active when all the settings have the correct value
    - `name` string — The name of the organization setting to check
    - `enabled` boolean — Whether the setting should be enabled or not
  - `schemas` object[] — Schema-specific configuration for the capability
    - `schema` string, required — Entity schema slug
  - `composite_id` string
  - `schema` string — Schema slug the capability belongs to

## Other responses

- `404` — The requested resource was not found

## Changes

- **2026-08-29** `46c13e283526` — 36 warning, 36 info
  - removed the optional property `allOf[#/components/schemas/EntityCapability]/attributes/items/anyOf[#/components/schemas/AddressAttribute]/allOf[#/components/schemas/BaseAttribute]/variant_overridable` from the response with the `200` status
  - removed the optional property `allOf[#/components/schemas/EntityCapability]/attributes/items/anyOf[#/components/schemas/AddressRelationAttribute]/allOf[#/components/schemas/BaseAttribute]/variant_overridable` from the response with the `200` status
  - removed the optional property `allOf[#/components/schemas/EntityCapability]/attributes/items/anyOf[#/components/schemas/AutomationAttribute]/allOf[#/components/schemas/BaseAttribute]/variant_overridable` from the response with the `200` status
  - removed the optional property `allOf[#/components/schemas/EntityCapability]/attributes/items/anyOf[#/components/schemas/BooleanAttribute]/allOf[#/components/schemas/BaseAttribute]/variant_overridable` from the response with the `200` status
  - …68 more
- **2026-08-26** `af9aa63d4420` — 1 info
  - added the optional property `allOf[#/components/schemas/EntityCapability]/ui_hooks/items/default_width` to the response with the `200` status
- …earlier changes not shown

[Full history](https://skmtc.dev/epilot/apis/entity-api/changes/v1/entity/schemas/capabilities/:composite_id/get.md)

---

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