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

# List Detection Sources

> List the catalog of threat detection sources ChainPatrol can run, including the scopes each source supports and the JSON Schema its config object must satisfy. Sources that do not apply to the organization's industry are omitted.

## Overview

List the catalog of threat detection sources ChainPatrol can run for your
organization. Each entry includes the scopes the source supports, whether it is
pull-based or push-based, its brand scope, the asset types it monitors, and the
JSON Schema its `config` object must satisfy.

Sources that do not apply to your organization's industry are omitted.

Use this endpoint to discover valid `source` keys and their config shapes before
calling [Create Detection Config](/docs/external-api/detection-configs-create) or
[Update Detection Config](/docs/external-api/detection-configs-update).


## OpenAPI

````yaml GET /detection/sources
openapi: 3.0.3
info:
  title: ChainPatrol External API - OpenAPI 3.0
  description: ChainPatrol External API documentation
  version: 2.0.0
servers:
  - url: https://app.chainpatrol.io/api/v2
security: []
tags:
  - name: asset
  - name: report
externalDocs:
  url: https://chainpatrol.com/docs
paths:
  /detection/sources:
    get:
      tags:
        - detection
      summary: List available threat detection sources
      description: >-
        List the catalog of threat detection sources ChainPatrol can run,
        including the scopes each source supports and the JSON Schema its config
        object must satisfy. Sources that do not apply to the organization's
        industry are omitted.
      operationId: detectionSourcesList
      parameters:
        - in: query
          name: slug
          schema:
            type: string
            minLength: 1
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
                properties:
                  sources:
                    type: array
                    items:
                      type: object
                      properties:
                        key:
                          type: string
                          description: >-
                            Detection source key (e.g. google_search,
                            certstream, dns_twist)
                        label:
                          type: string
                          description: Human-readable source name
                        description:
                          type: string
                          description: What this source detects
                        scopes:
                          type: array
                          items:
                            type: string
                            enum:
                              - organization
                              - global
                          description: >-
                            Scopes this source supports. A source without
                            `organization` cannot be configured per-org and runs
                            globally for all organizations.
                        isPullBased:
                          type: boolean
                          description: >-
                            Whether the source runs on a schedule (pull-based).
                            Push-based sources such as webhooks ignore `cron`
                            and cannot be run on demand.
                        brandScope:
                          type: string
                          enum:
                            - organization_only
                            - all_brands
                          description: >-
                            Which brands this source fans out to.
                            `organization_only` sources only use brands of type
                            `ORGANIZATION`; `all_brands` sources use every brand
                            in the organization.
                        industries:
                          type: array
                          items:
                            type: string
                          description: >-
                            Industries this source applies to. Empty means it
                            applies to every industry.
                        protectedAssetTypes:
                          type: array
                          items:
                            type: string
                          description: >-
                            Asset types this source monitors. Empty when the
                            source does not key off protected assets.
                        configSchema:
                          type: object
                          nullable: true
                          additionalProperties: {}
                          description: >-
                            JSON Schema for this source's `config` object, for
                            use with `/detection/configs/update`. `null` when
                            the source takes no configuration.
                      required:
                        - key
                        - label
                        - description
                        - scopes
                        - isPullBased
                        - brandScope
                        - industries
                        - protectedAssetTypes
                        - configSchema
                    description: Available detection sources
                required:
                  - sources
                description: Successful operation
        '400':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error.BAD_REQUEST'
        '401':
          description: Authorization not provided
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error.UNAUTHORIZED'
        '403':
          description: Insufficient access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error.FORBIDDEN'
        '404':
          description: Not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error.NOT_FOUND'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error.INTERNAL_SERVER_ERROR'
      security:
        - ApiKey: []
components:
  schemas:
    error.BAD_REQUEST:
      type: object
      properties:
        message:
          type: string
          description: The error message
          example: Invalid input data
        code:
          type: string
          description: The error code
          example: BAD_REQUEST
        issues:
          type: array
          items:
            type: object
            properties:
              message:
                type: string
            required:
              - message
          description: An array of issues that were responsible for the error
          example: []
      required:
        - message
        - code
      title: Invalid input data error (400)
      description: The error information
      example:
        code: BAD_REQUEST
        message: Invalid input data
        issues: []
    error.UNAUTHORIZED:
      type: object
      properties:
        message:
          type: string
          description: The error message
          example: Authorization not provided
        code:
          type: string
          description: The error code
          example: UNAUTHORIZED
        issues:
          type: array
          items:
            type: object
            properties:
              message:
                type: string
            required:
              - message
          description: An array of issues that were responsible for the error
          example: []
      required:
        - message
        - code
      title: Authorization not provided error (401)
      description: The error information
      example:
        code: UNAUTHORIZED
        message: Authorization not provided
        issues: []
    error.FORBIDDEN:
      type: object
      properties:
        message:
          type: string
          description: The error message
          example: Insufficient access
        code:
          type: string
          description: The error code
          example: FORBIDDEN
        issues:
          type: array
          items:
            type: object
            properties:
              message:
                type: string
            required:
              - message
          description: An array of issues that were responsible for the error
          example: []
      required:
        - message
        - code
      title: Insufficient access error (403)
      description: The error information
      example:
        code: FORBIDDEN
        message: Insufficient access
        issues: []
    error.NOT_FOUND:
      type: object
      properties:
        message:
          type: string
          description: The error message
          example: Not found
        code:
          type: string
          description: The error code
          example: NOT_FOUND
        issues:
          type: array
          items:
            type: object
            properties:
              message:
                type: string
            required:
              - message
          description: An array of issues that were responsible for the error
          example: []
      required:
        - message
        - code
      title: Not found error (404)
      description: The error information
      example:
        code: NOT_FOUND
        message: Not found
        issues: []
    error.INTERNAL_SERVER_ERROR:
      type: object
      properties:
        message:
          type: string
          description: The error message
          example: Internal server error
        code:
          type: string
          description: The error code
          example: INTERNAL_SERVER_ERROR
        issues:
          type: array
          items:
            type: object
            properties:
              message:
                type: string
            required:
              - message
          description: An array of issues that were responsible for the error
          example: []
      required:
        - message
        - code
      title: Internal server error error (500)
      description: The error information
      example:
        code: INTERNAL_SERVER_ERROR
        message: Internal server error
        issues: []
  securitySchemes:
    ApiKey:
      type: apiKey
      in: header
      name: X-API-KEY
      description: >-
        Your API key. This is required by most endpoints to access our API
        programatically. Reach out to us at
        [support@chainpatrol.io](mailto:support@chainpatrol.io?subject=Re:%20API%20Key%20for%20SDK&body=Company:%20%0AName:%20%0APurpose:%20)
        to get an API key for your use.

````