> ## Documentation Index
> Fetch the complete documentation index at: https://docs.extole.com/llms.txt
> Use this file to discover all available pages before exploring further.

# List the components that use or could use a component

> Lists the components that use the specified component, and the components that could use it. Each row is one `COMPONENT_REFERENCE` or `COMPONENT_REFERENCE_LIST` setting on a component in the client, in one variant. `SELECTED` means the setting already points at the specified component. `SELECTABLE` means the setting does not point at it but would accept it: the component carries the setting's declared component type, sits inside the setting's boundary, and is not excluded by one of its selectable filters. This is the reverse of `GET /v1/components/{component_id}/settings/component-reference/{setting_name}/selectable-components`, so a caller does not call that endpoint on every setting that might accept the component. Matching runs entirely on the server. The result is computed per request and never persisted.

The search covers every non-archived campaign of the client at its latest version, so the row count is driven by how those references declare their boundary: campaign-scoped references match only within their own campaign, while an account-scoped reference can match a component anywhere in the client.



## OpenAPI

````yaml /api-reference/management.json get /v1/components/{component_id}/selectable-by-references
openapi: 3.0.1
info:
  description: >-
    Configuration endpoints for the Extole platform: campaigns, components,
    audiences, persons, rewards, reporting, integrations setup, and
    administrative tooling.


    ## Updating a resource


    `PUT` merges. A field you omit from the body is left at its stored value, so
    you do not need to read a resource and send it back whole in order to change
    one field. This is a deliberate departure from the HTTP convention that
    `PUT` replaces, and it holds across this API.


    Two qualifications, both visible on each operation's own request schema:


    - Some operations mark fields `required` in their request schema. Those must
    be sent on every request, whether or not you are changing them.

    - A field that holds a list or a map is replaced, not merged, when you
    supply it. Sending one entry of a collection stores that entry and drops the
    rest, so to change one member of a collection you must send the collection's
    other members alongside it.
  title: Management API
  version: '1.0'
servers:
  - description: Production
    url: https://api.extole.io
security:
  - HEADER: []
  - QUERY: []
  - COOKIE: []
tags:
  - name: Audiences
  - name: Authentication
  - name: Batch Jobs
  - name: Batch Jobs (Legacy)
  - name: Blocks
  - name: Campaigns
  - name: Components
  - name: Components Operations
  - name: Domains
  - name: Email
  - name: Erasure
  - name: Event Streams
  - name: Optout
  - name: Profiles
  - name: Promotion Links
  - name: Report Schedules
  - name: Report Types
  - name: Reports
  - name: Reward Suppliers
  - name: SFTP Servers
  - name: Security Keys
  - name: Settings
  - name: User Notifications
  - name: User Subscriptions
  - name: Users
  - name: Webhooks
paths:
  /v1/components/{component_id}/selectable-by-references:
    get:
      tags:
        - Components
      summary: List the components that use or could use a component
      description: >-
        Lists the components that use the specified component, and the
        components that could use it. Each row is one `COMPONENT_REFERENCE` or
        `COMPONENT_REFERENCE_LIST` setting on a component in the client, in one
        variant. `SELECTED` means the setting already points at the specified
        component. `SELECTABLE` means the setting does not point at it but would
        accept it: the component carries the setting's declared component type,
        sits inside the setting's boundary, and is not excluded by one of its
        selectable filters. This is the reverse of `GET
        /v1/components/{component_id}/settings/component-reference/{setting_name}/selectable-components`,
        so a caller does not call that endpoint on every setting that might
        accept the component. Matching runs entirely on the server. The result
        is computed per request and never persisted.


        The search covers every non-archived campaign of the client at its
        latest version, so the row count is driven by how those references
        declare their boundary: campaign-scoped references match only within
        their own campaign, while an account-scoped reference can match a
        component anywhere in the client.
      parameters:
        - in: path
          name: component_id
          required: true
          schema:
            type: string
        - description: >-
            Lists only the references with this selection: SELECTED for the
            references that already point at the component, SELECTABLE for the
            references the component could be selected by. Lists both when
            omitted.
          in: query
          name: selection
          schema:
            enum:
              - SELECTABLE
              - SELECTED
            type: string
        - description: >-
            A comma-separated list of component types. Lists only the references
            held by a component whose parent, grandparent or any further
            ancestor in its campaign has at least one of these types. The types
            of the component that holds the reference are not checked. A type
            also matches its subtypes.
          in: query
          name: having_any_ancestor_types
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/ComponentSelectableByReferenceResponse'
                type: array
          description: >-
            The selectable-by references, each marked `SELECTED` or
            `SELECTABLE`.
        '400':
          content:
            application/json:
              examples:
                binding_error:
                  $ref: '#/components/examples/binding_error'
                campaign_build_failed:
                  $ref: '#/components/examples/campaign_build_failed'
                component_not_found:
                  $ref: '#/components/examples/component_not_found'
                component_operation_parameter_invalid:
                  $ref: '#/components/examples/component_operation_parameter_invalid'
                component_operation_path_malformed:
                  $ref: '#/components/examples/component_operation_path_malformed'
                component_operation_path_missing:
                  $ref: '#/components/examples/component_operation_path_missing'
                component_operation_schema_invalid:
                  $ref: '#/components/examples/component_operation_schema_invalid'
                component_operation_schema_too_large:
                  $ref: '#/components/examples/component_operation_schema_too_large'
                component_owner_not_supported:
                  $ref: '#/components/examples/component_owner_not_supported'
                component_state_not_supported:
                  $ref: '#/components/examples/component_state_not_supported'
                controller_state_misconfiguration:
                  $ref: '#/components/examples/controller_state_misconfiguration'
                expression_invalid_syntax:
                  $ref: '#/components/examples/expression_invalid_syntax'
                invalid_incoming_url:
                  $ref: '#/components/examples/invalid_incoming_url'
                invalid_json:
                  $ref: '#/components/examples/invalid_json'
                invalid_parameter:
                  $ref: '#/components/examples/invalid_parameter'
                invalid_setting_filter:
                  $ref: '#/components/examples/invalid_setting_filter'
                invalid_uri_in_json:
                  $ref: '#/components/examples/invalid_uri_in_json'
                missing_request_body:
                  $ref: '#/components/examples/missing_request_body'
                rebuild_campaigns_build_failed:
                  $ref: '#/components/examples/rebuild_campaigns_build_failed'
                unknown_source_clients:
                  $ref: '#/components/examples/unknown_source_clients'
              schema:
                $ref: '#/components/schemas/RestExceptionResponse'
          description: >-
            `component_not_found` when the specified component does not exist or
            is not accessible to the client.
        '401':
          content:
            application/json:
              examples:
                method_unauthorized:
                  $ref: '#/components/examples/method_unauthorized'
              schema:
                $ref: '#/components/schemas/RestExceptionResponse'
          description: Unauthorized
        '402':
          content:
            application/json:
              examples:
                payment_required:
                  $ref: '#/components/examples/payment_required'
              schema:
                $ref: '#/components/schemas/RestExceptionResponse'
          description: Payment Required
        '403':
          content:
            application/json:
              examples:
                access_denied:
                  $ref: '#/components/examples/access_denied'
                method_unauthorized:
                  $ref: '#/components/examples/method_unauthorized'
                missing_access_token:
                  $ref: '#/components/examples/missing_access_token'
              schema:
                $ref: '#/components/schemas/RestExceptionResponse'
          description: Forbidden
        '415':
          content:
            application/json:
              examples:
                unsupported_media_type:
                  $ref: '#/components/examples/unsupported_media_type'
              schema:
                $ref: '#/components/schemas/RestExceptionResponse'
          description: Unsupported Media Type
        '429':
          content:
            application/json:
              examples:
                too_many_requests:
                  $ref: '#/components/examples/too_many_requests'
              schema:
                $ref: '#/components/schemas/RestExceptionResponse'
          description: Too Many Requests
components:
  schemas:
    ComponentSelectableByReferenceResponse:
      properties:
        campaign_id:
          description: The campaign the selectable-by reference belongs to.
          type: string
        campaign_name:
          description: >-
            The name of that campaign, so a list can be grouped without a second
            request.
          type: string
        component_description:
          description: >-
            The description of the component that declares the reference, absent
            when it has none.
          type: string
        component_display_name:
          description: >-
            The display name of the component that declares the reference, from
            its built campaign. Absent when the component has no display name.
          type: string
        component_id:
          description: The component that declares the selectable-by reference setting.
          type: string
        component_name:
          description: The name of that component.
          type: string
        component_types:
          description: The component types of the component that declares the reference.
          items:
            type: string
          type: array
        parent_component_display_name:
          description: >-
            The display name of that component's parent, from its built
            campaign. Absent when the parent has no display name, when the
            parent is the campaign root, or when the component has no parent.
          type: string
        parent_component_name:
          description: >-
            The name of that component's parent. Absent when the parent is the
            campaign root or the component has no parent.
          type: string
        selection:
          description: >-
            `SELECTED` when the reference already points at the component in
            this variant, `SELECTABLE` when it does not but would accept it. A
            `SELECTED` row is reported whether or not the reference would still
            accept the component today, so a reference whose boundary or filters
            have since moved away from it is still listed.
          enum:
            - SELECTABLE
            - SELECTED
          type: string
        setting_display_name:
          description: The display name of the reference setting, absent when it has none.
          type: string
        setting_name:
          description: >-
            The name of the selectable-by reference setting, or of the socket
            parameter that declares it.
          type: string
        setting_type:
          description: Whether the selectable-by reference holds one component or many.
          enum:
            - ADMIN_ICON
            - AUDIENCE_ID
            - AUDIENCE_ID_LIST
            - BOOLEAN
            - BROWSER_SIDE_JAVASCRIPT
            - CLIENT_DOMAIN_ID_LIST
            - CLIENT_KEY
            - CLIENT_KEY_FLOW
            - COLOR
            - COMPONENT_ID
            - COMPONENT_REFERENCE
            - COMPONENT_REFERENCE_LIST
            - COMPONENT_SETTING_LOOKUP
            - CSS
            - DATE_TIME
            - DELAY
            - DELAY_LIST
            - ENUM
            - ENUM_LIST
            - EXTOLE_CLIENT_KEY
            - FONT
            - GLOB_COMPONENT_PATH
            - HTML
            - IMAGE
            - INTEGER
            - INTEGER_LIST
            - JSON
            - MULTI_SOCKET
            - PARTNER_ENUM
            - PARTNER_ENUM_LIST
            - PERSON_KEY_NAME
            - REWARD_SUPPLIER_ID
            - REWARD_SUPPLIER_ID_LIST
            - SFTP_DIRECTORY
            - SOCKET
            - STRING
            - STRING_LIST
            - STRING_MAP
            - TRIGGER_CONFIGURATION
            - URL
            - WEBHOOK_ID
          type: string
        socket_name:
          description: >-
            The socket whose parameter declares the selectable-by reference,
            absent when the reference is a setting on the component itself. Two
            sockets on one component can declare parameters of the same name, so
            this is part of the reference's identity.
          type: string
        variant:
          description: The setting value variant this row is about.
          type: string
      required:
        - campaign_id
        - campaign_name
        - component_description
        - component_display_name
        - component_id
        - component_name
        - component_types
        - parent_component_display_name
        - parent_component_name
        - selection
        - setting_display_name
        - setting_name
        - setting_type
        - socket_name
        - variant
      type: object
    RestExceptionResponse:
      description: Represents the API error response
      properties:
        code:
          description: Specific error code for this error type, documented per endpoint
          type: string
        http_status_code:
          description: >-
            HTTP status code that was returned with this error, useful if client
            get response code
          format: int32
          type: integer
        message:
          description: User readable English description of the error
          type: string
        parameters:
          additionalProperties:
            description: >-
              Attributes related to the error, varies be error code, documented
              per endpoint
            type: object
          description: >-
            Attributes related to the error, varies be error code, documented
            per endpoint
          type: object
        unique_id:
          description: >-
            Unique id associated with this error, useful for discussions with
            Extole
          type: string
      required:
        - code
        - http_status_code
        - message
        - parameters
        - unique_id
      type: object
  examples:
    binding_error:
      summary: binding_error
      value:
        code: binding_error
        http_status_code: 400
        message: Argument is not of the expected type
        parameters: {}
        unique_id: 00000000-0000-0000-0000-000000000000
    campaign_build_failed:
      summary: campaign_build_failed
      value:
        code: campaign_build_failed
        http_status_code: 400
        message: Campaign build failed
        parameters: {}
        unique_id: 00000000-0000-0000-0000-000000000000
    component_not_found:
      summary: component_not_found
      value:
        code: component_not_found
        http_status_code: 400
        message: Component not found
        parameters: {}
        unique_id: 00000000-0000-0000-0000-000000000000
    component_operation_parameter_invalid:
      summary: component_operation_parameter_invalid
      value:
        code: component_operation_parameter_invalid
        http_status_code: 400
        message: Component operation parameter is invalid
        parameters: {}
        unique_id: 00000000-0000-0000-0000-000000000000
    component_operation_path_malformed:
      summary: component_operation_path_malformed
      value:
        code: component_operation_path_malformed
        http_status_code: 400
        message: Component operation path is malformed
        parameters: {}
        unique_id: 00000000-0000-0000-0000-000000000000
    component_operation_path_missing:
      summary: component_operation_path_missing
      value:
        code: component_operation_path_missing
        http_status_code: 400
        message: Component operation path is missing
        parameters: {}
        unique_id: 00000000-0000-0000-0000-000000000000
    component_operation_schema_invalid:
      summary: component_operation_schema_invalid
      value:
        code: component_operation_schema_invalid
        http_status_code: 400
        message: >-
          Component operation schema is not a valid JSON Schema draft 2020-12
          document
        parameters: {}
        unique_id: 00000000-0000-0000-0000-000000000000
    component_operation_schema_too_large:
      summary: component_operation_schema_too_large
      value:
        code: component_operation_schema_too_large
        http_status_code: 400
        message: Component operation schema serialized length is out of range
        parameters: {}
        unique_id: 00000000-0000-0000-0000-000000000000
    component_owner_not_supported:
      summary: component_owner_not_supported
      value:
        code: component_owner_not_supported
        http_status_code: 400
        message: Component owner not supported
        parameters: {}
        unique_id: 00000000-0000-0000-0000-000000000000
    component_state_not_supported:
      summary: component_state_not_supported
      value:
        code: component_state_not_supported
        http_status_code: 400
        message: Component state not supported
        parameters: {}
        unique_id: 00000000-0000-0000-0000-000000000000
    controller_state_misconfiguration:
      summary: controller_state_misconfiguration
      value:
        code: controller_state_misconfiguration
        http_status_code: 400
        message: A controller has not properly configured state
        parameters: {}
        unique_id: 00000000-0000-0000-0000-000000000000
    expression_invalid_syntax:
      summary: expression_invalid_syntax
      value:
        code: expression_invalid_syntax
        http_status_code: 400
        message: Campaign build failed due expression invalid syntax
        parameters: {}
        unique_id: 00000000-0000-0000-0000-000000000000
    invalid_incoming_url:
      summary: invalid_incoming_url
      value:
        code: invalid_incoming_url
        http_status_code: 400
        message: Incoming URL is an invalid URI
        parameters: {}
        unique_id: 00000000-0000-0000-0000-000000000000
    invalid_json:
      summary: invalid_json
      value:
        code: invalid_json
        http_status_code: 400
        message: JSON is invalid
        parameters: {}
        unique_id: 00000000-0000-0000-0000-000000000000
    invalid_parameter:
      summary: invalid_parameter
      value:
        code: invalid_parameter
        http_status_code: 400
        message: Parameter is invalid.
        parameters: {}
        unique_id: 00000000-0000-0000-0000-000000000000
    invalid_setting_filter:
      summary: invalid_setting_filter
      value:
        code: invalid_setting_filter
        http_status_code: 400
        message: >-
          Invalid setting filter, expected format: name:value; backslash escapes
          the next character (e.g. \, \: \\)
        parameters: {}
        unique_id: 00000000-0000-0000-0000-000000000000
    invalid_uri_in_json:
      summary: invalid_uri_in_json
      value:
        code: invalid_uri_in_json
        http_status_code: 400
        message: Invalid URI in JSON
        parameters: {}
        unique_id: 00000000-0000-0000-0000-000000000000
    missing_request_body:
      summary: missing_request_body
      value:
        code: missing_request_body
        http_status_code: 400
        message: Missing request body
        parameters: {}
        unique_id: 00000000-0000-0000-0000-000000000000
    rebuild_campaigns_build_failed:
      summary: rebuild_campaigns_build_failed
      value:
        code: rebuild_campaigns_build_failed
        http_status_code: 400
        message: Rebuild campaigns build failed
        parameters: {}
        unique_id: 00000000-0000-0000-0000-000000000000
    unknown_source_clients:
      summary: unknown_source_clients
      value:
        code: unknown_source_clients
        http_status_code: 400
        message: Some source client ids are unknown
        parameters: {}
        unique_id: 00000000-0000-0000-0000-000000000000
    method_unauthorized:
      summary: method_unauthorized
      value:
        code: method_unauthorized
        http_status_code: 401
        message: Unauthorized access to this endpoint
        parameters: {}
        unique_id: 00000000-0000-0000-0000-000000000000
    payment_required:
      summary: payment_required
      value:
        code: payment_required
        http_status_code: 402
        message: The access_token provided is associated with an unpaid account.
        parameters: {}
        unique_id: 00000000-0000-0000-0000-000000000000
    access_denied:
      summary: access_denied
      value:
        code: access_denied
        http_status_code: 403
        message: >-
          The access_token provided is not permitted to access the specified
          resource.
        parameters: {}
        unique_id: 00000000-0000-0000-0000-000000000000
    missing_access_token:
      summary: missing_access_token
      value:
        code: missing_access_token
        http_status_code: 403
        message: No access_token was provided with this request.
        parameters: {}
        unique_id: 00000000-0000-0000-0000-000000000000
    unsupported_media_type:
      summary: unsupported_media_type
      value:
        code: unsupported_media_type
        http_status_code: 415
        message: Request had an unsupported or no media type
        parameters: {}
        unique_id: 00000000-0000-0000-0000-000000000000
    too_many_requests:
      summary: too_many_requests
      value:
        code: too_many_requests
        http_status_code: 429
        message: >-
          The server is unable to process your request at the moment, please
          retry later.
        parameters: {}
        unique_id: 00000000-0000-0000-0000-000000000000
  securitySchemes:
    HEADER:
      in: header
      name: Authorization
      type: apiKey
      x-bearer-format: bearer
    QUERY:
      in: query
      name: access_token
      type: apiKey
    COOKIE:
      in: cookie
      name: extole_token
      type: apiKey

````

## Related topics

- [How to Set Up Triggered By](/guides/flow-campaigns/how-to-set-up-triggered-by.md)
- [List components](/api-reference/components/list-components.md)
- [List component settings](/api-reference/components/list-component-settings.md)
- [List selected components for a component reference list](/api-reference/components/list-selected-components-for-a-component-reference-list.md)
- [List selectable components for a component reference list](/api-reference/components/list-selectable-components-for-a-component-reference-list.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.