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

# Instrumentos

> Listar instrumentos de bonos

<Note>
  Lista instrumentos de bonos con soporte de paginación y filtrado opcional por subclase de activo.
</Note>

## Parámetros de consulta

<ParamField query="sub_asset_class" type="string">
  Filtra por subclase de activo (ej., "HARD\_DOLLAR").
</ParamField>

<Info>
  Valores válidos para <code>sub\_asset\_class</code>:

  * <code>DOLLAR\_LINKED</code>
  * <code>HARD\_DOLLAR</code>
  * <code>CER</code>
  * <code>BOPREAL</code>
  * <code>FIXED\_RATE</code>
  * <code>SUB\_SOBERANO</code>
  * <code>ON</code>
  * <code>TAMAR</code>
  * <code>BADLAR</code>
  * <code>ON\_FIXED\_RATE</code>
  * <code>ON\_CER</code>
  * <code>ON\_BADLAR</code>
  * <code>ON\_TAMAR</code>
  * <code>ON\_DOLLAR\_LINKED</code>
  * <code>SUB\_SOBERANO\_FIXED\_RATE</code>
  * <code>SUB\_SOBERANO\_CER</code>
  * <code>SUB\_SOBERANO\_BADLAR</code>
  * <code>SUB\_SOBERANO\_TAMAR</code>
</Info>

<ParamField query="limit" type="integer">
  Límite de elementos por página (predeterminado 50).
</ParamField>

<ParamField query="cursor" type="string">
  Cursor de paginación para obtener la siguiente página.
</ParamField>

## Ejemplo de Solicitud

<RequestExample>
  ```bash cURL theme={null}
  curl -X GET "https://api.doctacapital.com.ar/api/v1/bonds/instruments?limit=50" \
    -H "Authorization: Bearer YOUR_ACCESS_TOKEN"
  ```
</RequestExample>

## Respuesta Exitosa

<ResponseField name="data" type="array">
  Lista de instrumentos de bonos.
</ResponseField>

<ResponseField name="data[].ticker" type="string">
  Ticker del bono (ej., "S30N6").
</ResponseField>

<ResponseField name="data[].asset_class" type="string">
  Clase de activo del bono (ej., "BOND").
</ResponseField>

<ResponseField name="data[].sub_asset_class" type="string">
  Subclase de activo del bono (ej., "FIXED\_RATE").
</ResponseField>

<ResponseField name="pagination" type="object">
  Información de paginación.
</ResponseField>

<ResponseField name="pagination.limit" type="integer">
  Límite de elementos por página.
</ResponseField>

<ResponseField name="pagination.has_next" type="boolean">
  Indica si hay más páginas disponibles.
</ResponseField>

<ResponseField name="pagination.next_cursor" type="string | null">
  Cursor para obtener la siguiente página. Es null si no hay más páginas.
</ResponseField>

<ResponseField name="pagination.total_items" type="integer">
  Número total de elementos disponibles.
</ResponseField>

<ResponseField name="filters" type="object">
  Filtros aplicados en la solicitud.
</ResponseField>

<ResponseField name="filters.sub_asset_class" type="string">
  Subclase de activo utilizada como filtro.
</ResponseField>

<ResponseField name="metadata" type="object">
  Metadatos de la respuesta.
</ResponseField>

<ResponseField name="metadata.total_records" type="integer">
  Número total de registros disponibles.
</ResponseField>

## Ejemplo de Respuesta Exitosa

<ResponseExample>
  ```json Success theme={null}
  {
    "data": [
      {
        "ticker": "S30N6",
        "asset_class": "BOND",
        "sub_asset_class": "FIXED_RATE"
      },
      {
        "ticker": "S16E6",
        "asset_class": "BOND",
        "sub_asset_class": "FIXED_RATE"
      },
      {
        "ticker": "S30O6",
        "asset_class": "BOND",
        "sub_asset_class": "FIXED_RATE"
      }
    ],
    "pagination": {
      "limit": 50,
      "has_next": false,
      "next_cursor": null,
      "total_items": 20
    },
    "filters": {
      "sub_asset_class": "FIXED_RATE"
    },
    "metadata": {
      "total_records": 20
    }
  }
  ```
</ResponseExample>


## OpenAPI

````yaml GET /api/v1/bonds/instruments
openapi: 3.1.0
info:
  title: API de Bonos de Docta
  description: >-
    API centrada en bonos de Argentina: instrumentos, detalle, cashflows y
    curvas/yields.
  license:
    name: MIT
  version: 1.0.0
servers:
  - url: https://api.doctacapital.com.ar
security: []
paths:
  /api/v1/bonds/instruments:
    get:
      tags:
        - Bonds
      description: Listar instrumentos de bonos
      parameters:
        - name: sub_asset_class
          in: query
          required: false
          schema:
            type: string
            enum:
              - DOLLAR_LINKED
              - HARD_DOLLAR
              - CER
              - BOPREAL
              - FIXED_RATE
              - SUB_SOBERANO
              - 'ON'
              - TAMAR
              - BADLAR
              - ON_FIXED_RATE
              - ON_CER
              - ON_BADLAR
              - ON_TAMAR
              - ON_DOLLAR_LINKED
              - SUB_SOBERANO_FIXED_RATE
              - SUB_SOBERANO_CER
              - SUB_SOBERANO_BADLAR
              - SUB_SOBERANO_TAMAR
        - name: limit
          in: query
          required: false
          schema:
            type: integer
            default: 50
        - name: cursor
          in: query
          required: false
          schema:
            type: string
            nullable: true
      responses:
        '200':
          description: Listado de instrumentos de bonos
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InstrumentListResponse'
        '400':
          description: Solicitud incorrecta - parámetros inválidos
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: No autorizado - token de acceso inválido o faltante
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                type: /errors/authentication-required
                title: Authorization header missing
                status: 401
                detail: Authorization header missing
                correlation_id: d6e20e07-0580-4e2d-9480-00a68c1ae493
        '500':
          description: Error interno del servidor
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                type: /errors/internal-server-error
                title: Internal server error
                status: 500
                detail: Internal server error
                correlation_id: 6cd1fd05-63e9-4863-832f-d873e58e9d67
      security:
        - bearerAuth: []
components:
  schemas:
    InstrumentListResponse:
      type: object
      properties:
        data:
          type: array
          items: 6b466d0f-6438-44f4-9e01-0cf4af2e0386
        pagination: d7c805a9-44e7-4488-8fbb-23be74dde196
        filters: 02b87bdd-4cda-4a36-8bcc-d73b9b6d3ea1
        metadata: 5f93b01c-2b5e-4128-81bc-b3129224229f
      required:
        - data
        - pagination
        - filters
        - metadata
    Error:
      required:
        - type
        - title
        - status
        - detail
        - correlation_id
      type: object
      properties:
        type:
          description: El identificador del tipo de error
          type: string
          example: /errors/authentication-required
        title:
          description: Una breve descripción del error
          type: string
          example: Invalid client credentials
        status:
          description: El código de estado HTTP
          type: integer
          example: 401
        detail:
          description: Una descripción detallada del error
          type: string
          example: Invalid client credentials
        correlation_id:
          description: Un identificador único para rastrear esta solicitud de error
          type: string
          format: uuid
          example: 2eb07802-94de-468a-b70f-75a49f3e9516
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer

````